diff --git a/src/account.ts b/src/account.ts index f5d4e2858b4..0d4b9d9452e 100644 --- a/src/account.ts +++ b/src/account.ts @@ -1,5 +1,5 @@ -import { bypassLogin } from "./battle-scene"; -import * as Utils from "./utils"; +import { bypassLogin } from './battle-scene'; +import * as Utils from './utils'; export interface UserInfo { username: string; @@ -46,4 +46,4 @@ export function updateUserInfo(): Promise<[boolean, integer]> { resolve([ false, 500 ]); }); }); -} \ No newline at end of file +} diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 0f75447a500..9a8a8365af6 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -9,19 +9,19 @@ import { PokeballType } from './data/pokeball'; import { initCommonAnims, initMoveAnim, loadCommonAnimAssets, loadMoveAnimAssets, populateAnims } from './data/battle-anims'; import { Phase } from './phase'; import { initGameSpeed } from './system/game-speed'; -import { Biome } from "./data/enums/biome"; +import { Biome } from './data/enums/biome'; import { Arena, ArenaBase } from './field/arena'; import { GameData, PlayerGender } from './system/game-data'; import StarterSelectUiHandler from './ui/starter-select-ui-handler'; import { TextStyle, addTextObject } from './ui/text'; -import { Moves } from "./data/enums/moves"; -import { allMoves } from "./data/move"; +import { Moves } from './data/enums/moves'; +import { allMoves } from './data/move'; import { initMoves } from './data/move'; import { ModifierPoolType, getDefaultModifierTypeForTier, getEnemyModifierTypesForWave, getLuckString, getLuckTextTint, getModifierPoolForType, getPartyLuckValue } from './modifier/modifier-type'; import AbilityBar from './ui/ability-bar'; import { BlockItemTheftAbAttr, DoubleBattleChanceAbAttr, IncrementMovePriorityAbAttr, applyAbAttrs, initAbilities } from './data/ability'; -import { Abilities } from "./data/enums/abilities"; -import { allAbilities } from "./data/ability"; +import { Abilities } from './data/enums/abilities'; +import { allAbilities } from './data/ability'; import Battle, { BattleType, FixedBattleConfig, fixedBattles } from './battle'; import { GameMode, GameModes, gameModes } from './game-mode'; import FieldSpritePipeline from './pipelines/field-sprite'; @@ -60,10 +60,10 @@ import CandyBar from './ui/candy-bar'; import { Variant, variantData } from './data/variant'; import { Localizable } from './plugins/i18n'; import * as Overrides from './overrides'; -import {InputsController} from "./inputs-controller"; -import {UiInputs} from "./ui-inputs"; +import {InputsController} from './inputs-controller'; +import {UiInputs} from './ui-inputs'; -export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1"; +export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === '1'; const DEBUG_RNG = false; @@ -83,26 +83,26 @@ export interface PokeballCounts { export type AnySound = Phaser.Sound.WebAudioSound | Phaser.Sound.HTML5AudioSound | Phaser.Sound.NoAudioSound; export default class BattleScene extends SceneBase { - public rexUI: UIPlugin; - public inputController: InputsController; - public uiInputs: UiInputs; + public rexUI: UIPlugin; + public inputController: InputsController; + public uiInputs: UiInputs; - public sessionPlayTime: integer = null; - public lastSavePlayTime: integer = null; - public masterVolume: number = 0.5; - public bgmVolume: number = 1; - public seVolume: number = 1; - public gameSpeed: integer = 1; - public damageNumbersMode: integer = 0; - public showLevelUpStats: boolean = true; - public enableTutorials: boolean = import.meta.env.VITE_BYPASS_TUTORIAL === "1"; - public enableRetries: boolean = false; - public uiTheme: UiTheme = UiTheme.DEFAULT; - public windowType: integer = 0; - public experimentalSprites: boolean = false; - public moveAnimations: boolean = true; - public expGainsSpeed: integer = 0; - /** + public sessionPlayTime: integer = null; + public lastSavePlayTime: integer = null; + public masterVolume: number = 0.5; + public bgmVolume: number = 1; + public seVolume: number = 1; + public gameSpeed: integer = 1; + public damageNumbersMode: integer = 0; + public showLevelUpStats: boolean = true; + public enableTutorials: boolean = import.meta.env.VITE_BYPASS_TUTORIAL === '1'; + public enableRetries: boolean = false; + public uiTheme: UiTheme = UiTheme.DEFAULT; + public windowType: integer = 0; + public experimentalSprites: boolean = false; + public moveAnimations: boolean = true; + public expGainsSpeed: integer = 0; + /** * Defines the experience gain display mode. * * @remarks @@ -114,429 +114,429 @@ export default class BattleScene extends SceneBase { * Modes `1` and `2` are still compatible with stats display, level up, new move, etc. * @default 0 - Uses the default normal experience gain display. */ - public expParty: integer = 0; - public hpBarSpeed: integer = 0; - public fusionPaletteSwaps: boolean = true; - public enableTouchControls: boolean = false; - public enableVibration: boolean = false; - public abSwapped: boolean = false; + public expParty: integer = 0; + public hpBarSpeed: integer = 0; + public fusionPaletteSwaps: boolean = true; + public enableTouchControls: boolean = false; + public enableVibration: boolean = false; + public abSwapped: boolean = false; - public disableMenu: boolean = false; + public disableMenu: boolean = false; - public gameData: GameData; - public sessionSlotId: integer; + public gameData: GameData; + public sessionSlotId: integer; - private phaseQueue: Phase[]; - private phaseQueuePrepend: Phase[]; - private phaseQueuePrependSpliceIndex: integer; - private nextCommandPhaseQueue: Phase[]; - private currentPhase: Phase; - private standbyPhase: Phase; - public field: Phaser.GameObjects.Container; - public fieldUI: Phaser.GameObjects.Container; - public charSprite: CharSprite; - public pbTray: PokeballTray; - public pbTrayEnemy: PokeballTray; - public abilityBar: AbilityBar; - public partyExpBar: PartyExpBar; - public candyBar: CandyBar; - public arenaBg: Phaser.GameObjects.Sprite; - public arenaBgTransition: Phaser.GameObjects.Sprite; - public arenaPlayer: ArenaBase; - public arenaPlayerTransition: ArenaBase; - public arenaEnemy: ArenaBase; - public arenaNextEnemy: ArenaBase; - public arena: Arena; - public gameMode: GameMode; - public score: integer; - public lockModifierTiers: boolean; - public trainer: Phaser.GameObjects.Sprite; - public lastEnemyTrainer: Trainer; - public currentBattle: Battle; - public pokeballCounts: PokeballCounts; - public money: integer; - public pokemonInfoContainer: PokemonInfoContainer; - private party: PlayerPokemon[]; - private waveCountText: Phaser.GameObjects.Text; - private moneyText: Phaser.GameObjects.Text; - private scoreText: Phaser.GameObjects.Text; - private luckLabelText: Phaser.GameObjects.Text; - private luckText: Phaser.GameObjects.Text; - private modifierBar: ModifierBar; - private enemyModifierBar: ModifierBar; - private fieldOverlay: Phaser.GameObjects.Rectangle; - private modifiers: PersistentModifier[]; - private enemyModifiers: PersistentModifier[]; - public uiContainer: Phaser.GameObjects.Container; - public ui: UI; + private phaseQueue: Phase[]; + private phaseQueuePrepend: Phase[]; + private phaseQueuePrependSpliceIndex: integer; + private nextCommandPhaseQueue: Phase[]; + private currentPhase: Phase; + private standbyPhase: Phase; + public field: Phaser.GameObjects.Container; + public fieldUI: Phaser.GameObjects.Container; + public charSprite: CharSprite; + public pbTray: PokeballTray; + public pbTrayEnemy: PokeballTray; + public abilityBar: AbilityBar; + public partyExpBar: PartyExpBar; + public candyBar: CandyBar; + public arenaBg: Phaser.GameObjects.Sprite; + public arenaBgTransition: Phaser.GameObjects.Sprite; + public arenaPlayer: ArenaBase; + public arenaPlayerTransition: ArenaBase; + public arenaEnemy: ArenaBase; + public arenaNextEnemy: ArenaBase; + public arena: Arena; + public gameMode: GameMode; + public score: integer; + public lockModifierTiers: boolean; + public trainer: Phaser.GameObjects.Sprite; + public lastEnemyTrainer: Trainer; + public currentBattle: Battle; + public pokeballCounts: PokeballCounts; + public money: integer; + public pokemonInfoContainer: PokemonInfoContainer; + private party: PlayerPokemon[]; + private waveCountText: Phaser.GameObjects.Text; + private moneyText: Phaser.GameObjects.Text; + private scoreText: Phaser.GameObjects.Text; + private luckLabelText: Phaser.GameObjects.Text; + private luckText: Phaser.GameObjects.Text; + private modifierBar: ModifierBar; + private enemyModifierBar: ModifierBar; + private fieldOverlay: Phaser.GameObjects.Rectangle; + private modifiers: PersistentModifier[]; + private enemyModifiers: PersistentModifier[]; + public uiContainer: Phaser.GameObjects.Container; + public ui: UI; - public seed: string; - public waveSeed: string; - public waveCycleOffset: integer; - public offsetGym: boolean; + public seed: string; + public waveSeed: string; + public waveCycleOffset: integer; + public offsetGym: boolean; - public damageNumberHandler: DamageNumberHandler - private spriteSparkleHandler: PokemonSpriteSparkleHandler; + public damageNumberHandler: DamageNumberHandler; + private spriteSparkleHandler: PokemonSpriteSparkleHandler; - public fieldSpritePipeline: FieldSpritePipeline; - public spritePipeline: SpritePipeline; + public fieldSpritePipeline: FieldSpritePipeline; + public spritePipeline: SpritePipeline; - private bgm: AnySound; - private bgmResumeTimer: Phaser.Time.TimerEvent; - private bgmCache: Set = new Set(); - private playTimeTimer: Phaser.Time.TimerEvent; + private bgm: AnySound; + private bgmResumeTimer: Phaser.Time.TimerEvent; + private bgmCache: Set = new Set(); + private playTimeTimer: Phaser.Time.TimerEvent; - public rngCounter: integer = 0; - public rngSeedOverride: string = ''; - public rngOffset: integer = 0; + public rngCounter: integer = 0; + public rngSeedOverride: string = ''; + public rngOffset: integer = 0; - constructor() { - super('battle'); + constructor() { + super('battle'); - initSpecies(); - initMoves(); - initAbilities(); + initSpecies(); + initMoves(); + initAbilities(); - this.phaseQueue = []; - this.phaseQueuePrepend = []; - this.phaseQueuePrependSpliceIndex = -1; - this.nextCommandPhaseQueue = []; - this.updateGameInfo(); - } - - loadPokemonAtlas(key: string, atlasPath: string, experimental?: boolean) { - if (experimental === undefined) - experimental = this.experimentalSprites; - let variant = atlasPath.includes('variant/') || /_[0-3]$/.test(atlasPath); - if (experimental) - experimental = this.hasExpSprite(key); - if (variant) - atlasPath = atlasPath.replace('variant/', ''); - this.load.atlas(key, `images/pokemon/${variant ? 'variant/' : ''}${experimental ? 'exp/' : ''}${atlasPath}.png`, `images/pokemon/${variant ? 'variant/' : ''}${experimental ? 'exp/' : ''}${atlasPath}.json`); - } - - async preload() { - if (DEBUG_RNG) { - const scene = this; - const originalRealInRange = Phaser.Math.RND.realInRange; - Phaser.Math.RND.realInRange = function (min: number, max: number): number { - const ret = originalRealInRange.apply(this, [ min, max ]); - const args = [ 'RNG', ++scene.rngCounter, ret / (max - min), `min: ${min} / max: ${max}` ]; - args.push(`seed: ${scene.rngSeedOverride || scene.waveSeed || scene.seed}`); - if (scene.rngOffset) - args.push(`offset: ${scene.rngOffset}`); - console.log(...args); - return ret; - }; - } - - populateAnims(); - - await this.initVariantData(); - } - - create() { - initGameSpeed.apply(this); - this.inputController = new InputsController(this); - this.uiInputs = new UiInputs(this, this.inputController); - - this.gameData = new GameData(this); - - addUiThemeOverrides(this); - - this.load.setBaseURL(); - - this.spritePipeline = new SpritePipeline(this.game); - (this.renderer as Phaser.Renderer.WebGL.WebGLRenderer).pipelines.add('Sprite', this.spritePipeline); - - this.fieldSpritePipeline = new FieldSpritePipeline(this.game); - (this.renderer as Phaser.Renderer.WebGL.WebGLRenderer).pipelines.add('FieldSprite', this.fieldSpritePipeline); - - this.time.delayedCall(20, () => this.launchBattle()); - } - - update() { - this.inputController.update(); - this.ui?.update(); - } - - launchBattle() { - this.arenaBg = this.add.sprite(0, 0, 'plains_bg'); - this.arenaBgTransition = this.add.sprite(0, 0, 'plains_bg'); - - [ this.arenaBgTransition, this.arenaBg ].forEach(a => { - a.setPipeline(this.fieldSpritePipeline); - a.setScale(6); - a.setOrigin(0); - a.setSize(320, 240); - }); - - const field = this.add.container(0, 0); - field.setScale(6); - - this.field = field; - - const fieldUI = this.add.container(0, this.game.canvas.height); - fieldUI.setDepth(1); - fieldUI.setScale(6); - - this.fieldUI = fieldUI; - - const transition = this.make.rexTransitionImagePack({ - x: 0, - y: 0, - scale: 6, - key: 'loading_bg', - origin: { x: 0, y: 0 } - }, true); + this.phaseQueue = []; + this.phaseQueuePrepend = []; + this.phaseQueuePrependSpliceIndex = -1; + this.nextCommandPhaseQueue = []; + this.updateGameInfo(); + } + + loadPokemonAtlas(key: string, atlasPath: string, experimental?: boolean) { + if (experimental === undefined) + experimental = this.experimentalSprites; + const variant = atlasPath.includes('variant/') || /_[0-3]$/.test(atlasPath); + if (experimental) + experimental = this.hasExpSprite(key); + if (variant) + atlasPath = atlasPath.replace('variant/', ''); + this.load.atlas(key, `images/pokemon/${variant ? 'variant/' : ''}${experimental ? 'exp/' : ''}${atlasPath}.png`, `images/pokemon/${variant ? 'variant/' : ''}${experimental ? 'exp/' : ''}${atlasPath}.json`); + } + + async preload() { + if (DEBUG_RNG) { + const scene = this; + const originalRealInRange = Phaser.Math.RND.realInRange; + Phaser.Math.RND.realInRange = function (min: number, max: number): number { + const ret = originalRealInRange.apply(this, [ min, max ]); + const args = [ 'RNG', ++scene.rngCounter, ret / (max - min), `min: ${min} / max: ${max}` ]; + args.push(`seed: ${scene.rngSeedOverride || scene.waveSeed || scene.seed}`); + if (scene.rngOffset) + args.push(`offset: ${scene.rngOffset}`); + console.log(...args); + return ret; + }; + } + + populateAnims(); + + await this.initVariantData(); + } + + create() { + initGameSpeed.apply(this); + this.inputController = new InputsController(this); + this.uiInputs = new UiInputs(this, this.inputController); + + this.gameData = new GameData(this); + + addUiThemeOverrides(this); + + this.load.setBaseURL(); + + this.spritePipeline = new SpritePipeline(this.game); + (this.renderer as Phaser.Renderer.WebGL.WebGLRenderer).pipelines.add('Sprite', this.spritePipeline); + + this.fieldSpritePipeline = new FieldSpritePipeline(this.game); + (this.renderer as Phaser.Renderer.WebGL.WebGLRenderer).pipelines.add('FieldSprite', this.fieldSpritePipeline); + + this.time.delayedCall(20, () => this.launchBattle()); + } + + update() { + this.inputController.update(); + this.ui?.update(); + } + + launchBattle() { + this.arenaBg = this.add.sprite(0, 0, 'plains_bg'); + this.arenaBgTransition = this.add.sprite(0, 0, 'plains_bg'); + + [ this.arenaBgTransition, this.arenaBg ].forEach(a => { + a.setPipeline(this.fieldSpritePipeline); + a.setScale(6); + a.setOrigin(0); + a.setSize(320, 240); + }); + + const field = this.add.container(0, 0); + field.setScale(6); + + this.field = field; + + const fieldUI = this.add.container(0, this.game.canvas.height); + fieldUI.setDepth(1); + fieldUI.setScale(6); + + this.fieldUI = fieldUI; + + const transition = this.make.rexTransitionImagePack({ + x: 0, + y: 0, + scale: 6, + key: 'loading_bg', + origin: { x: 0, y: 0 } + }, true); - transition.transit({ - mode: 'blinds', - ease: 'Cubic.easeInOut', - duration: 1250, - oncomplete: () => transition.destroy() - }); + transition.transit({ + mode: 'blinds', + ease: 'Cubic.easeInOut', + duration: 1250, + oncomplete: () => transition.destroy() + }); - this.add.existing(transition); + this.add.existing(transition); - const uiContainer = this.add.container(0, 0); - uiContainer.setDepth(2); - uiContainer.setScale(6); + const uiContainer = this.add.container(0, 0); + uiContainer.setDepth(2); + uiContainer.setScale(6); - this.uiContainer = uiContainer; + this.uiContainer = uiContainer; - const overlayWidth = this.game.canvas.width / 6; - const overlayHeight = (this.game.canvas.height / 6) - 48; - this.fieldOverlay = this.add.rectangle(0, overlayHeight * -1 - 48, overlayWidth, overlayHeight, 0x424242); - this.fieldOverlay.setOrigin(0, 0); - this.fieldOverlay.setAlpha(0); - this.fieldUI.add(this.fieldOverlay); + const overlayWidth = this.game.canvas.width / 6; + const overlayHeight = (this.game.canvas.height / 6) - 48; + this.fieldOverlay = this.add.rectangle(0, overlayHeight * -1 - 48, overlayWidth, overlayHeight, 0x424242); + this.fieldOverlay.setOrigin(0, 0); + this.fieldOverlay.setAlpha(0); + this.fieldUI.add(this.fieldOverlay); - this.modifiers = []; - this.enemyModifiers = []; + this.modifiers = []; + this.enemyModifiers = []; - this.modifierBar = new ModifierBar(this); - this.add.existing(this.modifierBar); - uiContainer.add(this.modifierBar); + this.modifierBar = new ModifierBar(this); + this.add.existing(this.modifierBar); + uiContainer.add(this.modifierBar); - this.enemyModifierBar = new ModifierBar(this, true); - this.add.existing(this.enemyModifierBar); - uiContainer.add(this.enemyModifierBar); + this.enemyModifierBar = new ModifierBar(this, true); + this.add.existing(this.enemyModifierBar); + uiContainer.add(this.enemyModifierBar); - this.charSprite = new CharSprite(this); - this.charSprite.setup(); + this.charSprite = new CharSprite(this); + this.charSprite.setup(); - this.fieldUI.add(this.charSprite); + this.fieldUI.add(this.charSprite); - this.pbTray = new PokeballTray(this, true); - this.pbTray.setup(); + this.pbTray = new PokeballTray(this, true); + this.pbTray.setup(); - this.pbTrayEnemy = new PokeballTray(this, false); - this.pbTrayEnemy.setup(); + this.pbTrayEnemy = new PokeballTray(this, false); + this.pbTrayEnemy.setup(); - this.fieldUI.add(this.pbTray); - this.fieldUI.add(this.pbTrayEnemy); + this.fieldUI.add(this.pbTray); + this.fieldUI.add(this.pbTrayEnemy); - this.abilityBar = new AbilityBar(this); - this.abilityBar.setup(); - this.fieldUI.add(this.abilityBar); + this.abilityBar = new AbilityBar(this); + this.abilityBar.setup(); + this.fieldUI.add(this.abilityBar); - this.partyExpBar = new PartyExpBar(this); - this.partyExpBar.setup(); - this.fieldUI.add(this.partyExpBar); + this.partyExpBar = new PartyExpBar(this); + this.partyExpBar.setup(); + this.fieldUI.add(this.partyExpBar); - this.candyBar = new CandyBar(this); - this.candyBar.setup(); - this.fieldUI.add(this.candyBar); + this.candyBar = new CandyBar(this); + this.candyBar.setup(); + this.fieldUI.add(this.candyBar); - this.waveCountText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, startingWave.toString(), TextStyle.BATTLE_INFO); - this.waveCountText.setOrigin(1, 0); - this.fieldUI.add(this.waveCountText); + this.waveCountText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, startingWave.toString(), TextStyle.BATTLE_INFO); + this.waveCountText.setOrigin(1, 0); + this.fieldUI.add(this.waveCountText); - this.moneyText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, '', TextStyle.MONEY); - this.moneyText.setOrigin(1, 0); - this.fieldUI.add(this.moneyText); + this.moneyText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, '', TextStyle.MONEY); + this.moneyText.setOrigin(1, 0); + this.fieldUI.add(this.moneyText); - this.scoreText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, '', TextStyle.PARTY, { fontSize: '54px' }); - this.scoreText.setOrigin(1, 0); - this.fieldUI.add(this.scoreText); + this.scoreText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, '', TextStyle.PARTY, { fontSize: '54px' }); + this.scoreText.setOrigin(1, 0); + this.fieldUI.add(this.scoreText); - this.luckText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, '', TextStyle.PARTY, { fontSize: '54px' }); - this.luckText.setOrigin(1, 0); - this.luckText.setVisible(false); - this.fieldUI.add(this.luckText); + this.luckText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, '', TextStyle.PARTY, { fontSize: '54px' }); + this.luckText.setOrigin(1, 0); + this.luckText.setVisible(false); + this.fieldUI.add(this.luckText); - this.luckLabelText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, 'Luck:', TextStyle.PARTY, { fontSize: '54px' }); - this.luckLabelText.setOrigin(1, 0); - this.luckLabelText.setVisible(false); - this.fieldUI.add(this.luckLabelText); + this.luckLabelText = addTextObject(this, (this.game.canvas.width / 6) - 2, 0, 'Luck:', TextStyle.PARTY, { fontSize: '54px' }); + this.luckLabelText.setOrigin(1, 0); + this.luckLabelText.setVisible(false); + this.fieldUI.add(this.luckLabelText); - this.updateUIPositions(); + this.updateUIPositions(); - this.damageNumberHandler = new DamageNumberHandler(); + this.damageNumberHandler = new DamageNumberHandler(); - this.spriteSparkleHandler = new PokemonSpriteSparkleHandler(); - this.spriteSparkleHandler.setup(this); + this.spriteSparkleHandler = new PokemonSpriteSparkleHandler(); + this.spriteSparkleHandler.setup(this); - this.pokemonInfoContainer = new PokemonInfoContainer(this, (this.game.canvas.width / 6) + 52, -(this.game.canvas.height / 6) + 66); - this.pokemonInfoContainer.setup(); + this.pokemonInfoContainer = new PokemonInfoContainer(this, (this.game.canvas.width / 6) + 52, -(this.game.canvas.height / 6) + 66); + this.pokemonInfoContainer.setup(); - this.fieldUI.add(this.pokemonInfoContainer); + this.fieldUI.add(this.pokemonInfoContainer); - this.party = []; + this.party = []; - let loadPokemonAssets = []; + const loadPokemonAssets = []; - this.arenaPlayer = new ArenaBase(this, true); - this.arenaPlayerTransition = new ArenaBase(this, true); - this.arenaEnemy = new ArenaBase(this, false); - this.arenaNextEnemy = new ArenaBase(this, false); + this.arenaPlayer = new ArenaBase(this, true); + this.arenaPlayerTransition = new ArenaBase(this, true); + this.arenaEnemy = new ArenaBase(this, false); + this.arenaNextEnemy = new ArenaBase(this, false); - this.arenaBgTransition.setVisible(false); - this.arenaPlayerTransition.setVisible(false); - this.arenaNextEnemy.setVisible(false); + this.arenaBgTransition.setVisible(false); + this.arenaPlayerTransition.setVisible(false); + this.arenaNextEnemy.setVisible(false); - [ this.arenaPlayer, this.arenaPlayerTransition, this.arenaEnemy, this.arenaNextEnemy ].forEach(a => { - if (a instanceof Phaser.GameObjects.Sprite) - a.setOrigin(0, 0); - field.add(a); - }); + [ this.arenaPlayer, this.arenaPlayerTransition, this.arenaEnemy, this.arenaNextEnemy ].forEach(a => { + if (a instanceof Phaser.GameObjects.Sprite) + a.setOrigin(0, 0); + field.add(a); + }); - const trainer = this.addFieldSprite(0, 0, `trainer_${this.gameData.gender === PlayerGender.FEMALE ? 'f' : 'm'}_back`); - trainer.setOrigin(0.5, 1); + const trainer = this.addFieldSprite(0, 0, `trainer_${this.gameData.gender === PlayerGender.FEMALE ? 'f' : 'm'}_back`); + trainer.setOrigin(0.5, 1); - field.add(trainer); + field.add(trainer); - this.trainer = trainer; + this.trainer = trainer; - this.anims.create({ - key: 'prompt', - frames: this.anims.generateFrameNumbers('prompt', { start: 1, end: 4 }), - frameRate: 6, - repeat: -1, - showOnStart: true - }); + this.anims.create({ + key: 'prompt', + frames: this.anims.generateFrameNumbers('prompt', { start: 1, end: 4 }), + frameRate: 6, + repeat: -1, + showOnStart: true + }); - this.anims.create({ - key: 'tera_sparkle', - frames: this.anims.generateFrameNumbers('tera_sparkle', { start: 0, end: 12 }), - frameRate: 18, - repeat: 0, - showOnStart: true, - hideOnComplete: true - }); + this.anims.create({ + key: 'tera_sparkle', + frames: this.anims.generateFrameNumbers('tera_sparkle', { start: 0, end: 12 }), + frameRate: 18, + repeat: 0, + showOnStart: true, + hideOnComplete: true + }); - this.reset(false, false, true); + this.reset(false, false, true); - const ui = new UI(this); - this.uiContainer.add(ui); + const ui = new UI(this); + this.uiContainer.add(ui); - this.ui = ui; + this.ui = ui; - ui.setup(); + ui.setup(); - const defaultMoves = [ Moves.TACKLE, Moves.TAIL_WHIP, Moves.FOCUS_ENERGY, Moves.STRUGGLE ]; + const defaultMoves = [ Moves.TACKLE, Moves.TAIL_WHIP, Moves.FOCUS_ENERGY, Moves.STRUGGLE ]; - Promise.all([ - Promise.all(loadPokemonAssets), - initCommonAnims(this).then(() => loadCommonAnimAssets(this, true)), - Promise.all([ Moves.TACKLE, Moves.TAIL_WHIP, Moves.FOCUS_ENERGY, Moves.STRUGGLE ].map(m => initMoveAnim(this, m))).then(() => loadMoveAnimAssets(this, defaultMoves, true)), - this.initStarterColors() - ]).then(() => { - this.pushPhase(new LoginPhase(this)); - this.pushPhase(new TitlePhase(this)); + Promise.all([ + Promise.all(loadPokemonAssets), + initCommonAnims(this).then(() => loadCommonAnimAssets(this, true)), + Promise.all([ Moves.TACKLE, Moves.TAIL_WHIP, Moves.FOCUS_ENERGY, Moves.STRUGGLE ].map(m => initMoveAnim(this, m))).then(() => loadMoveAnimAssets(this, defaultMoves, true)), + this.initStarterColors() + ]).then(() => { + this.pushPhase(new LoginPhase(this)); + this.pushPhase(new TitlePhase(this)); - this.shiftPhase(); - }); - } + this.shiftPhase(); + }); + } - initSession(): void { - if (this.sessionPlayTime === null) - this.sessionPlayTime = 0; - if (this.lastSavePlayTime === null) - this.lastSavePlayTime = 0; + initSession(): void { + if (this.sessionPlayTime === null) + this.sessionPlayTime = 0; + if (this.lastSavePlayTime === null) + this.lastSavePlayTime = 0; - if (this.playTimeTimer) - this.playTimeTimer.destroy(); + if (this.playTimeTimer) + this.playTimeTimer.destroy(); - this.playTimeTimer = this.time.addEvent({ - delay: Utils.fixedInt(1000), - repeat: -1, + this.playTimeTimer = this.time.addEvent({ + delay: Utils.fixedInt(1000), + repeat: -1, callback: () => { - if (this.gameData) - this.gameData.gameStats.playTime++; - if (this.sessionPlayTime !== null) - this.sessionPlayTime++; - if (this.lastSavePlayTime !== null) - this.lastSavePlayTime++; - } - }); + if (this.gameData) + this.gameData.gameStats.playTime++; + if (this.sessionPlayTime !== null) + this.sessionPlayTime++; + if (this.lastSavePlayTime !== null) + this.lastSavePlayTime++; + } + }); - this.updateWaveCountText(); - this.updateMoneyText(); - this.updateScoreText(); - } + this.updateWaveCountText(); + this.updateMoneyText(); + this.updateScoreText(); + } - async initExpSprites(): Promise { - if (expSpriteKeys.length) - return; - this.cachedFetch('./exp-sprites.json').then(res => res.json()).then(keys => { - if (Array.isArray(keys)) - expSpriteKeys.push(...keys); - Promise.resolve(); - }); - } + async initExpSprites(): Promise { + if (expSpriteKeys.length) + return; + this.cachedFetch('./exp-sprites.json').then(res => res.json()).then(keys => { + if (Array.isArray(keys)) + expSpriteKeys.push(...keys); + Promise.resolve(); + }); + } - async initVariantData(): Promise { - Object.keys(variantData).forEach(key => delete variantData[key]); - await this.cachedFetch('./images/pokemon/variant/_masterlist.json').then(res => res.json()) - .then(v => { - Object.keys(v).forEach(k => variantData[k] = v[k]); - if (this.experimentalSprites) { - const expVariantData = variantData['exp']; - const traverseVariantData = (keys: string[]) => { - let variantTree = variantData; - let expTree = expVariantData; - keys.map((k: string, i: integer) => { - if (i < keys.length - 1) { - variantTree = variantTree[k]; - expTree = expTree[k]; - } else if (variantTree.hasOwnProperty(k) && expTree.hasOwnProperty(k)) { - if ([ 'back', 'female' ].includes(k)) - traverseVariantData(keys.concat(k)); - else - variantTree[k] = expTree[k]; - } - }); - }; - Object.keys(expVariantData).forEach(ek => traverseVariantData([ ek ])); - } - Promise.resolve(); - }); - } + async initVariantData(): Promise { + Object.keys(variantData).forEach(key => delete variantData[key]); + await this.cachedFetch('./images/pokemon/variant/_masterlist.json').then(res => res.json()) + .then(v => { + Object.keys(v).forEach(k => variantData[k] = v[k]); + if (this.experimentalSprites) { + const expVariantData = variantData['exp']; + const traverseVariantData = (keys: string[]) => { + let variantTree = variantData; + let expTree = expVariantData; + keys.map((k: string, i: integer) => { + if (i < keys.length - 1) { + variantTree = variantTree[k]; + expTree = expTree[k]; + } else if (variantTree.hasOwnProperty(k) && expTree.hasOwnProperty(k)) { + if ([ 'back', 'female' ].includes(k)) + traverseVariantData(keys.concat(k)); + else + variantTree[k] = expTree[k]; + } + }); + }; + Object.keys(expVariantData).forEach(ek => traverseVariantData([ ek ])); + } + Promise.resolve(); + }); + } - cachedFetch(url: string, init?: RequestInit): Promise { - const manifest = this.game['manifest']; - if (manifest) { - const timestamp = manifest[`/${url.replace('./', '')}`]; - if (timestamp) - url += `?t=${timestamp}`; - } - return fetch(url, init); - } + cachedFetch(url: string, init?: RequestInit): Promise { + const manifest = this.game['manifest']; + if (manifest) { + const timestamp = manifest[`/${url.replace('./', '')}`]; + if (timestamp) + url += `?t=${timestamp}`; + } + return fetch(url, init); + } - initStarterColors(): Promise { - return new Promise(resolve => { - if (starterColors) - return resolve(); + initStarterColors(): Promise { + return new Promise(resolve => { + if (starterColors) + return resolve(); - this.cachedFetch('./starter-colors.json').then(res => res.json()).then(sc => { - starterColors = {}; - Object.keys(sc).forEach(key => { - starterColors[key] = sc[key]; - }); + this.cachedFetch('./starter-colors.json').then(res => res.json()).then(sc => { + starterColors = {}; + Object.keys(sc).forEach(key => { + starterColors[key] = sc[key]; + }); - /*const loadPokemonAssets: Promise[] = []; + /*const loadPokemonAssets: Promise[] = []; for (let s of Object.keys(speciesStarters)) { const species = getPokemonSpecies(parseInt(s)); @@ -558,1448 +558,1448 @@ export default class BattleScene extends SceneBase { resolve(); });*/ - resolve(); - }); - }); - } + resolve(); + }); + }); + } - hasExpSprite(key: string): boolean { - const keyMatch = /^pkmn__?(back__)?(shiny__)?(female__)?(\d+)(\-.*?)?(?:_[1-3])?$/g.exec(key); - let k = keyMatch[4]; - if (keyMatch[2]) - k += 's'; - if (keyMatch[1]) - k += 'b'; - if (keyMatch[3]) - k += 'f'; - if (keyMatch[5]) - k += keyMatch[5]; - if (!expSpriteKeys.includes(k)) - return false; - return true; - } + hasExpSprite(key: string): boolean { + const keyMatch = /^pkmn__?(back__)?(shiny__)?(female__)?(\d+)(\-.*?)?(?:_[1-3])?$/g.exec(key); + let k = keyMatch[4]; + if (keyMatch[2]) + k += 's'; + if (keyMatch[1]) + k += 'b'; + if (keyMatch[3]) + k += 'f'; + if (keyMatch[5]) + k += keyMatch[5]; + if (!expSpriteKeys.includes(k)) + return false; + return true; + } - getParty(): PlayerPokemon[] { - return this.party; - } + getParty(): PlayerPokemon[] { + return this.party; + } - getPlayerPokemon(): PlayerPokemon { - return this.getPlayerField().find(p => p.isActive()); - } + getPlayerPokemon(): PlayerPokemon { + return this.getPlayerField().find(p => p.isActive()); + } - getPlayerField(): PlayerPokemon[] { - const party = this.getParty(); - return party.slice(0, Math.min(party.length, this.currentBattle?.double ? 2 : 1)); - } + getPlayerField(): PlayerPokemon[] { + const party = this.getParty(); + return party.slice(0, Math.min(party.length, this.currentBattle?.double ? 2 : 1)); + } - getEnemyParty(): EnemyPokemon[] { - return this.currentBattle?.enemyParty || []; - } + getEnemyParty(): EnemyPokemon[] { + return this.currentBattle?.enemyParty || []; + } - getEnemyPokemon(): EnemyPokemon { - return this.getEnemyField().find(p => p.isActive()); - } + getEnemyPokemon(): EnemyPokemon { + return this.getEnemyField().find(p => p.isActive()); + } - getEnemyField(): EnemyPokemon[] { - const party = this.getEnemyParty(); - return party.slice(0, Math.min(party.length, this.currentBattle?.double ? 2 : 1)); - } + getEnemyField(): EnemyPokemon[] { + const party = this.getEnemyParty(); + return party.slice(0, Math.min(party.length, this.currentBattle?.double ? 2 : 1)); + } - getField(activeOnly: boolean = false): Pokemon[] { - const ret = new Array(4).fill(null); - const playerField = this.getPlayerField(); - const enemyField = this.getEnemyField(); - ret.splice(0, playerField.length, ...playerField); - ret.splice(2, enemyField.length, ...enemyField); - return activeOnly - ? ret.filter(p => p?.isActive()) - : ret; - } + getField(activeOnly: boolean = false): Pokemon[] { + const ret = new Array(4).fill(null); + const playerField = this.getPlayerField(); + const enemyField = this.getEnemyField(); + ret.splice(0, playerField.length, ...playerField); + ret.splice(2, enemyField.length, ...enemyField); + return activeOnly + ? ret.filter(p => p?.isActive()) + : ret; + } - getPokemonById(pokemonId: integer): Pokemon { - const findInParty = (party: Pokemon[]) => party.find(p => p.id === pokemonId); - return findInParty(this.getParty()) || findInParty(this.getEnemyParty()); - } + getPokemonById(pokemonId: integer): Pokemon { + const findInParty = (party: Pokemon[]) => party.find(p => p.id === pokemonId); + return findInParty(this.getParty()) || findInParty(this.getEnemyParty()); + } - addPlayerPokemon(species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData, postProcess?: (playerPokemon: PlayerPokemon) => void): PlayerPokemon { - const pokemon = new PlayerPokemon(this, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); - if (postProcess) - postProcess(pokemon); - pokemon.init(); - return pokemon; - } + addPlayerPokemon(species: PokemonSpecies, level: integer, abilityIndex: integer, formIndex: integer, gender?: Gender, shiny?: boolean, variant?: Variant, ivs?: integer[], nature?: Nature, dataSource?: Pokemon | PokemonData, postProcess?: (playerPokemon: PlayerPokemon) => void): PlayerPokemon { + const pokemon = new PlayerPokemon(this, species, level, abilityIndex, formIndex, gender, shiny, variant, ivs, nature, dataSource); + if (postProcess) + postProcess(pokemon); + pokemon.init(); + return pokemon; + } - addEnemyPokemon(species: PokemonSpecies, level: integer, trainerSlot: TrainerSlot, boss: boolean = false, dataSource?: PokemonData, postProcess?: (enemyPokemon: EnemyPokemon) => void): EnemyPokemon { - if (Overrides.OPP_SPECIES_OVERRIDE) - species = getPokemonSpecies(Overrides.OPP_SPECIES_OVERRIDE); - const pokemon = new EnemyPokemon(this, species, level, trainerSlot, boss, dataSource); - overrideModifiers(this, false); - overrideHeldItems(this, pokemon, false); - if (boss && !dataSource) { - const secondaryIvs = Utils.getIvsFromId(Utils.randSeedInt(4294967295)); + addEnemyPokemon(species: PokemonSpecies, level: integer, trainerSlot: TrainerSlot, boss: boolean = false, dataSource?: PokemonData, postProcess?: (enemyPokemon: EnemyPokemon) => void): EnemyPokemon { + if (Overrides.OPP_SPECIES_OVERRIDE) + species = getPokemonSpecies(Overrides.OPP_SPECIES_OVERRIDE); + const pokemon = new EnemyPokemon(this, species, level, trainerSlot, boss, dataSource); + overrideModifiers(this, false); + overrideHeldItems(this, pokemon, false); + if (boss && !dataSource) { + const secondaryIvs = Utils.getIvsFromId(Utils.randSeedInt(4294967295)); - for (let s = 0; s < pokemon.ivs.length; s++) - pokemon.ivs[s] = Math.round(Phaser.Math.Linear(Math.min(pokemon.ivs[s], secondaryIvs[s]), Math.max(pokemon.ivs[s], secondaryIvs[s]), 0.75)); - } - if (postProcess) - postProcess(pokemon); - pokemon.init(); - return pokemon; - } + for (let s = 0; s < pokemon.ivs.length; s++) + pokemon.ivs[s] = Math.round(Phaser.Math.Linear(Math.min(pokemon.ivs[s], secondaryIvs[s]), Math.max(pokemon.ivs[s], secondaryIvs[s]), 0.75)); + } + if (postProcess) + postProcess(pokemon); + pokemon.init(); + return pokemon; + } - addPokemonIcon(pokemon: Pokemon, x: number, y: number, originX: number = 0.5, originY: number = 0.5, ignoreOverride: boolean = false): Phaser.GameObjects.Container { - const container = this.add.container(x, y); + addPokemonIcon(pokemon: Pokemon, x: number, y: number, originX: number = 0.5, originY: number = 0.5, ignoreOverride: boolean = false): Phaser.GameObjects.Container { + const container = this.add.container(x, y); - const icon = this.add.sprite(0, 0, pokemon.getIconAtlasKey(ignoreOverride)); + const icon = this.add.sprite(0, 0, pokemon.getIconAtlasKey(ignoreOverride)); icon.setFrame(pokemon.getIconId(true)); - // Temporary fix to show pokemon's default icon if variant icon doesn't exist - if (icon.frame.name != pokemon.getIconId(true)) { - console.log(`${pokemon.name}'s variant icon does not exist. Replacing with default.`) - const temp = pokemon.shiny; - pokemon.shiny = false; - icon.setTexture(pokemon.getIconAtlasKey(ignoreOverride)); - icon.setFrame(pokemon.getIconId(true)); - pokemon.shiny = temp; - } - icon.setOrigin(0.5, 0); + // Temporary fix to show pokemon's default icon if variant icon doesn't exist + if (icon.frame.name != pokemon.getIconId(true)) { + console.log(`${pokemon.name}'s variant icon does not exist. Replacing with default.`); + const temp = pokemon.shiny; + pokemon.shiny = false; + icon.setTexture(pokemon.getIconAtlasKey(ignoreOverride)); + icon.setFrame(pokemon.getIconId(true)); + pokemon.shiny = temp; + } + icon.setOrigin(0.5, 0); - container.add(icon); + container.add(icon); - if (pokemon.isFusion()) { - const fusionIcon = this.add.sprite(0, 0, pokemon.getFusionIconAtlasKey(ignoreOverride)); - fusionIcon.setOrigin(0.5, 0) - fusionIcon.setFrame(pokemon.getFusionIconId(true)); + if (pokemon.isFusion()) { + const fusionIcon = this.add.sprite(0, 0, pokemon.getFusionIconAtlasKey(ignoreOverride)); + fusionIcon.setOrigin(0.5, 0); + fusionIcon.setFrame(pokemon.getFusionIconId(true)); - const originalWidth = icon.width; - const originalHeight = icon.height; - const originalFrame = icon.frame; + const originalWidth = icon.width; + const originalHeight = icon.height; + const originalFrame = icon.frame; - const iconHeight = (icon.frame.cutHeight <= fusionIcon.frame.cutHeight ? Math.ceil : Math.floor)((icon.frame.cutHeight + fusionIcon.frame.cutHeight) / 4); + const iconHeight = (icon.frame.cutHeight <= fusionIcon.frame.cutHeight ? Math.ceil : Math.floor)((icon.frame.cutHeight + fusionIcon.frame.cutHeight) / 4); - // Inefficient, but for some reason didn't work with only the unique properties as part of the name - const iconFrameId = `${icon.frame.name}f${fusionIcon.frame.name}`; + // Inefficient, but for some reason didn't work with only the unique properties as part of the name + const iconFrameId = `${icon.frame.name}f${fusionIcon.frame.name}`; - if (!icon.frame.texture.has(iconFrameId)) - icon.frame.texture.add(iconFrameId, icon.frame.sourceIndex, icon.frame.cutX, icon.frame.cutY, icon.frame.cutWidth, iconHeight); + if (!icon.frame.texture.has(iconFrameId)) + icon.frame.texture.add(iconFrameId, icon.frame.sourceIndex, icon.frame.cutX, icon.frame.cutY, icon.frame.cutWidth, iconHeight); - icon.setFrame(iconFrameId); + icon.setFrame(iconFrameId); - fusionIcon.y = icon.frame.cutHeight; + fusionIcon.y = icon.frame.cutHeight; - const originalFusionFrame = fusionIcon.frame; + const originalFusionFrame = fusionIcon.frame; - const fusionIconY = fusionIcon.frame.cutY + icon.frame.cutHeight; - const fusionIconHeight = fusionIcon.frame.cutHeight - icon.frame.cutHeight; + const fusionIconY = fusionIcon.frame.cutY + icon.frame.cutHeight; + const fusionIconHeight = fusionIcon.frame.cutHeight - icon.frame.cutHeight; - // Inefficient, but for some reason didn't work with only the unique properties as part of the name - const fusionIconFrameId = `${fusionIcon.frame.name}f${icon.frame.name}`; + // Inefficient, but for some reason didn't work with only the unique properties as part of the name + const fusionIconFrameId = `${fusionIcon.frame.name}f${icon.frame.name}`; - if (!fusionIcon.frame.texture.has(fusionIconFrameId)) - fusionIcon.frame.texture.add(fusionIconFrameId, fusionIcon.frame.sourceIndex, fusionIcon.frame.cutX, fusionIconY, fusionIcon.frame.cutWidth, fusionIconHeight); - fusionIcon.setFrame(fusionIconFrameId); + if (!fusionIcon.frame.texture.has(fusionIconFrameId)) + fusionIcon.frame.texture.add(fusionIconFrameId, fusionIcon.frame.sourceIndex, fusionIcon.frame.cutX, fusionIconY, fusionIcon.frame.cutWidth, fusionIconHeight); + fusionIcon.setFrame(fusionIconFrameId); - const frameY = (originalFrame.y + originalFusionFrame.y) / 2; - icon.frame.y = fusionIcon.frame.y = frameY; + const frameY = (originalFrame.y + originalFusionFrame.y) / 2; + icon.frame.y = fusionIcon.frame.y = frameY; - container.add(fusionIcon); + container.add(fusionIcon); - if (originX !== 0.5) - container.x -= originalWidth * (originX - 0.5); - if (originY !== 0) - container.y -= (originalHeight) * originY; - } else { - if (originX !== 0.5) - container.x -= icon.width * (originX - 0.5); - if (originY !== 0) - container.y -= icon.height * originY; - } + if (originX !== 0.5) + container.x -= originalWidth * (originX - 0.5); + if (originY !== 0) + container.y -= (originalHeight) * originY; + } else { + if (originX !== 0.5) + container.x -= icon.width * (originX - 0.5); + if (originY !== 0) + container.y -= icon.height * originY; + } - return container; - } + return container; + } - setSeed(seed: string): void { - this.seed = seed; - this.rngCounter = 0; - this.waveCycleOffset = this.getGeneratedWaveCycleOffset(); - this.offsetGym = this.gameMode.isClassic && this.getGeneratedOffsetGym(); - } + setSeed(seed: string): void { + this.seed = seed; + this.rngCounter = 0; + this.waveCycleOffset = this.getGeneratedWaveCycleOffset(); + this.offsetGym = this.gameMode.isClassic && this.getGeneratedOffsetGym(); + } - randBattleSeedInt(range: integer, min: integer = 0): integer { - return this.currentBattle.randSeedInt(this, range, min); - } + randBattleSeedInt(range: integer, min: integer = 0): integer { + return this.currentBattle.randSeedInt(this, range, min); + } - reset(clearScene: boolean = false, clearData: boolean = false, reloadI18n: boolean = false): void { - if (clearData) - this.gameData = new GameData(this); + reset(clearScene: boolean = false, clearData: boolean = false, reloadI18n: boolean = false): void { + if (clearData) + this.gameData = new GameData(this); - this.gameMode = gameModes[GameModes.CLASSIC]; + this.gameMode = gameModes[GameModes.CLASSIC]; - this.setSeed(Overrides.SEED_OVERRIDE || Utils.randomString(24)); - console.log('Seed:', this.seed); + this.setSeed(Overrides.SEED_OVERRIDE || Utils.randomString(24)); + console.log('Seed:', this.seed); - this.disableMenu = false; + this.disableMenu = false; - this.score = 0; - this.money = 0; + this.score = 0; + this.money = 0; - this.lockModifierTiers = false; + this.lockModifierTiers = false; - this.pokeballCounts = Object.fromEntries(Utils.getEnumValues(PokeballType).filter(p => p <= PokeballType.MASTER_BALL).map(t => [ t, 0 ])); - this.pokeballCounts[PokeballType.POKEBALL] += 5; - if (Overrides.POKEBALL_OVERRIDE.active) { - this.pokeballCounts = Overrides.POKEBALL_OVERRIDE.pokeballs; - } + this.pokeballCounts = Object.fromEntries(Utils.getEnumValues(PokeballType).filter(p => p <= PokeballType.MASTER_BALL).map(t => [ t, 0 ])); + this.pokeballCounts[PokeballType.POKEBALL] += 5; + if (Overrides.POKEBALL_OVERRIDE.active) { + this.pokeballCounts = Overrides.POKEBALL_OVERRIDE.pokeballs; + } - this.modifiers = []; - this.enemyModifiers = []; - this.modifierBar.removeAll(true); - this.enemyModifierBar.removeAll(true); + this.modifiers = []; + this.enemyModifiers = []; + this.modifierBar.removeAll(true); + this.enemyModifierBar.removeAll(true); - for (let p of this.getParty()) - p.destroy(); - this.party = []; - for (let p of this.getEnemyParty()) - p.destroy(); + for (const p of this.getParty()) + p.destroy(); + this.party = []; + for (const p of this.getEnemyParty()) + p.destroy(); - this.currentBattle = null; + this.currentBattle = null; - this.waveCountText.setText(startingWave.toString()); - this.waveCountText.setVisible(false); + this.waveCountText.setText(startingWave.toString()); + this.waveCountText.setVisible(false); - this.updateMoneyText(); - this.moneyText.setVisible(false); + this.updateMoneyText(); + this.moneyText.setVisible(false); - this.updateScoreText(); - this.scoreText.setVisible(false); + this.updateScoreText(); + this.scoreText.setVisible(false); - [ this.luckLabelText, this.luckText ].map(t => t.setVisible(false)); + [ this.luckLabelText, this.luckText ].map(t => t.setVisible(false)); - this.newArena(Overrides.STARTING_BIOME_OVERRIDE || Biome.TOWN); + this.newArena(Overrides.STARTING_BIOME_OVERRIDE || Biome.TOWN); - this.field.setVisible(true); + this.field.setVisible(true); - this.arenaBgTransition.setPosition(0, 0); - this.arenaPlayer.setPosition(300, 0); - this.arenaPlayerTransition.setPosition(0, 0); - [ this.arenaEnemy, this.arenaNextEnemy ].forEach(a => a.setPosition(-280, 0)); - this.arenaNextEnemy.setVisible(false); + this.arenaBgTransition.setPosition(0, 0); + this.arenaPlayer.setPosition(300, 0); + this.arenaPlayerTransition.setPosition(0, 0); + [ this.arenaEnemy, this.arenaNextEnemy ].forEach(a => a.setPosition(-280, 0)); + this.arenaNextEnemy.setVisible(false); - this.arena.init(); + this.arena.init(); - this.trainer.setTexture(`trainer_${this.gameData.gender === PlayerGender.FEMALE ? 'f' : 'm'}_back`); - this.trainer.setPosition(406, 186); - this.trainer.setVisible(true); + this.trainer.setTexture(`trainer_${this.gameData.gender === PlayerGender.FEMALE ? 'f' : 'm'}_back`); + this.trainer.setPosition(406, 186); + this.trainer.setVisible(true); - this.updateGameInfo(); + this.updateGameInfo(); - if (reloadI18n) { - const localizable: Localizable[] = [ - ...allSpecies, - ...allMoves, - ...allAbilities, - ...Utils.getEnumValues(ModifierPoolType).map(mpt => getModifierPoolForType(mpt)).map(mp => Object.values(mp).flat().map(mt => mt.modifierType).filter(mt => 'localize' in mt).map(lpb => lpb as unknown as Localizable)).flat() - ]; - for (let item of localizable) - item.localize(); - } + if (reloadI18n) { + const localizable: Localizable[] = [ + ...allSpecies, + ...allMoves, + ...allAbilities, + ...Utils.getEnumValues(ModifierPoolType).map(mpt => getModifierPoolForType(mpt)).map(mp => Object.values(mp).flat().map(mt => mt.modifierType).filter(mt => 'localize' in mt).map(lpb => lpb as unknown as Localizable)).flat() + ]; + for (const item of localizable) + item.localize(); + } - if (clearScene) { - // Reload variant data in case sprite set has changed - this.initVariantData(); + if (clearScene) { + // Reload variant data in case sprite set has changed + this.initVariantData(); - this.fadeOutBgm(250, false); - this.tweens.add({ - targets: [ this.uiContainer ], - alpha: 0, - duration: 250, - ease: 'Sine.easeInOut', - onComplete: () => { - this.clearPhaseQueue(); + this.fadeOutBgm(250, false); + this.tweens.add({ + targets: [ this.uiContainer ], + alpha: 0, + duration: 250, + ease: 'Sine.easeInOut', + onComplete: () => { + this.clearPhaseQueue(); - this.children.removeAll(true); - this.game.domContainer.innerHTML = ''; - this.launchBattle(); - } - }); - } - } + this.children.removeAll(true); + this.game.domContainer.innerHTML = ''; + this.launchBattle(); + } + }); + } + } - newBattle(waveIndex?: integer, battleType?: BattleType, trainerData?: TrainerData, double?: boolean): Battle { - let newWaveIndex = waveIndex || ((this.currentBattle?.waveIndex || (startingWave - 1)) + 1); - let newDouble: boolean; - let newBattleType: BattleType; - let newTrainer: Trainer; + newBattle(waveIndex?: integer, battleType?: BattleType, trainerData?: TrainerData, double?: boolean): Battle { + const newWaveIndex = waveIndex || ((this.currentBattle?.waveIndex || (startingWave - 1)) + 1); + let newDouble: boolean; + let newBattleType: BattleType; + let newTrainer: Trainer; - let battleConfig: FixedBattleConfig = null; + let battleConfig: FixedBattleConfig = null; - this.resetSeed(newWaveIndex); + this.resetSeed(newWaveIndex); - const playerField = this.getPlayerField(); + const playerField = this.getPlayerField(); - if (this.gameMode.hasFixedBattles && fixedBattles.hasOwnProperty(newWaveIndex) && trainerData === undefined) { - battleConfig = fixedBattles[newWaveIndex]; - newDouble = battleConfig.double; - newBattleType = battleConfig.battleType; - this.executeWithSeedOffset(() => newTrainer = battleConfig.getTrainer(this), (battleConfig.seedOffsetWaveIndex || newWaveIndex) << 8); - if (newTrainer) - this.field.add(newTrainer); - } else { - if (!this.gameMode.hasTrainers) - newBattleType = BattleType.WILD; - else if (battleType === undefined) - newBattleType = this.gameMode.isWaveTrainer(newWaveIndex, this.arena) ? BattleType.TRAINER : BattleType.WILD; - else - newBattleType = battleType; + if (this.gameMode.hasFixedBattles && fixedBattles.hasOwnProperty(newWaveIndex) && trainerData === undefined) { + battleConfig = fixedBattles[newWaveIndex]; + newDouble = battleConfig.double; + newBattleType = battleConfig.battleType; + this.executeWithSeedOffset(() => newTrainer = battleConfig.getTrainer(this), (battleConfig.seedOffsetWaveIndex || newWaveIndex) << 8); + if (newTrainer) + this.field.add(newTrainer); + } else { + if (!this.gameMode.hasTrainers) + newBattleType = BattleType.WILD; + else if (battleType === undefined) + newBattleType = this.gameMode.isWaveTrainer(newWaveIndex, this.arena) ? BattleType.TRAINER : BattleType.WILD; + else + newBattleType = battleType; - if (newBattleType === BattleType.TRAINER) { - const trainerType = this.arena.randomTrainerType(newWaveIndex); - let doubleTrainer = false; - if (trainerConfigs[trainerType].doubleOnly) - doubleTrainer = true; - else if (trainerConfigs[trainerType].hasDouble) { - const doubleChance = new Utils.IntegerHolder(newWaveIndex % 10 === 0 ? 32 : 8); - this.applyModifiers(DoubleBattleChanceBoosterModifier, true, doubleChance); - playerField.forEach(p => applyAbAttrs(DoubleBattleChanceAbAttr, p, null, doubleChance)); - doubleTrainer = !Utils.randSeedInt(doubleChance.value); - } - newTrainer = trainerData !== undefined ? trainerData.toTrainer(this) : new Trainer(this, trainerType, doubleTrainer ? TrainerVariant.DOUBLE : Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT); - this.field.add(newTrainer); - } - } + if (newBattleType === BattleType.TRAINER) { + const trainerType = this.arena.randomTrainerType(newWaveIndex); + let doubleTrainer = false; + if (trainerConfigs[trainerType].doubleOnly) + doubleTrainer = true; + else if (trainerConfigs[trainerType].hasDouble) { + const doubleChance = new Utils.IntegerHolder(newWaveIndex % 10 === 0 ? 32 : 8); + this.applyModifiers(DoubleBattleChanceBoosterModifier, true, doubleChance); + playerField.forEach(p => applyAbAttrs(DoubleBattleChanceAbAttr, p, null, doubleChance)); + doubleTrainer = !Utils.randSeedInt(doubleChance.value); + } + newTrainer = trainerData !== undefined ? trainerData.toTrainer(this) : new Trainer(this, trainerType, doubleTrainer ? TrainerVariant.DOUBLE : Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT); + this.field.add(newTrainer); + } + } - if (double === undefined && newWaveIndex > 1) { - if (newBattleType === BattleType.WILD && !this.gameMode.isWaveFinal(newWaveIndex)) { - const doubleChance = new Utils.IntegerHolder(newWaveIndex % 10 === 0 ? 32 : 8); - this.applyModifiers(DoubleBattleChanceBoosterModifier, true, doubleChance); - playerField.forEach(p => applyAbAttrs(DoubleBattleChanceAbAttr, p, null, doubleChance)); - newDouble = !Utils.randSeedInt(doubleChance.value); - } else if (newBattleType === BattleType.TRAINER) - newDouble = newTrainer.variant === TrainerVariant.DOUBLE; - } else if (!battleConfig) - newDouble = !!double; + if (double === undefined && newWaveIndex > 1) { + if (newBattleType === BattleType.WILD && !this.gameMode.isWaveFinal(newWaveIndex)) { + const doubleChance = new Utils.IntegerHolder(newWaveIndex % 10 === 0 ? 32 : 8); + this.applyModifiers(DoubleBattleChanceBoosterModifier, true, doubleChance); + playerField.forEach(p => applyAbAttrs(DoubleBattleChanceAbAttr, p, null, doubleChance)); + newDouble = !Utils.randSeedInt(doubleChance.value); + } else if (newBattleType === BattleType.TRAINER) + newDouble = newTrainer.variant === TrainerVariant.DOUBLE; + } else if (!battleConfig) + newDouble = !!double; - if (Overrides.DOUBLE_BATTLE_OVERRIDE) - newDouble = true; + if (Overrides.DOUBLE_BATTLE_OVERRIDE) + newDouble = true; - const lastBattle = this.currentBattle; + const lastBattle = this.currentBattle; - if (lastBattle?.double && !newDouble) - this.tryRemovePhase(p => p instanceof SwitchPhase); + if (lastBattle?.double && !newDouble) + this.tryRemovePhase(p => p instanceof SwitchPhase); - const maxExpLevel = this.getMaxExpLevel(); + const maxExpLevel = this.getMaxExpLevel(); - this.lastEnemyTrainer = lastBattle?.trainer ?? null; + this.lastEnemyTrainer = lastBattle?.trainer ?? null; - this.executeWithSeedOffset(() => { - this.currentBattle = new Battle(this.gameMode, newWaveIndex, newBattleType, newTrainer, newDouble); - }, newWaveIndex << 3, this.waveSeed); - this.currentBattle.incrementTurn(this); + this.executeWithSeedOffset(() => { + this.currentBattle = new Battle(this.gameMode, newWaveIndex, newBattleType, newTrainer, newDouble); + }, newWaveIndex << 3, this.waveSeed); + this.currentBattle.incrementTurn(this); - //this.pushPhase(new TrainerMessageTestPhase(this, TrainerType.RIVAL, TrainerType.RIVAL_2, TrainerType.RIVAL_3, TrainerType.RIVAL_4, TrainerType.RIVAL_5, TrainerType.RIVAL_6)); + //this.pushPhase(new TrainerMessageTestPhase(this, TrainerType.RIVAL, TrainerType.RIVAL_2, TrainerType.RIVAL_3, TrainerType.RIVAL_4, TrainerType.RIVAL_5, TrainerType.RIVAL_6)); - if (!waveIndex && lastBattle) { - let isNewBiome = !(lastBattle.waveIndex % 10) || ((this.gameMode.hasShortBiomes || this.gameMode.isDaily) && (lastBattle.waveIndex % 50) === 49); - if (!isNewBiome && this.gameMode.hasShortBiomes && (lastBattle.waveIndex % 10) < 9) { - let w = lastBattle.waveIndex - ((lastBattle.waveIndex % 10) - 1); - let biomeWaves = 1; - while (w < lastBattle.waveIndex) { - let wasNewBiome = false; - this.executeWithSeedOffset(() => { - wasNewBiome = !Utils.randSeedInt(6 - biomeWaves); - }, w << 4); - if (wasNewBiome) - biomeWaves = 1; - else - biomeWaves++; - w++; - } + if (!waveIndex && lastBattle) { + let isNewBiome = !(lastBattle.waveIndex % 10) || ((this.gameMode.hasShortBiomes || this.gameMode.isDaily) && (lastBattle.waveIndex % 50) === 49); + if (!isNewBiome && this.gameMode.hasShortBiomes && (lastBattle.waveIndex % 10) < 9) { + let w = lastBattle.waveIndex - ((lastBattle.waveIndex % 10) - 1); + let biomeWaves = 1; + while (w < lastBattle.waveIndex) { + let wasNewBiome = false; + this.executeWithSeedOffset(() => { + wasNewBiome = !Utils.randSeedInt(6 - biomeWaves); + }, w << 4); + if (wasNewBiome) + biomeWaves = 1; + else + biomeWaves++; + w++; + } - this.executeWithSeedOffset(() => { - isNewBiome = !Utils.randSeedInt(6 - biomeWaves); - }, lastBattle.waveIndex << 4); - } - const resetArenaState = isNewBiome || this.currentBattle.battleType === BattleType.TRAINER || this.currentBattle.battleSpec === BattleSpec.FINAL_BOSS; - this.getEnemyParty().forEach(enemyPokemon => enemyPokemon.destroy()); - this.trySpreadPokerus(); - if (!isNewBiome && (newWaveIndex % 10) == 5) - this.arena.updatePoolsForTimeOfDay(); - if (resetArenaState) { - this.arena.removeAllTags(); - playerField.forEach((_, p) => this.unshiftPhase(new ReturnPhase(this, p))); - this.unshiftPhase(new ShowTrainerPhase(this)); - } - for (let pokemon of this.getParty()) { - if (pokemon) { - if (resetArenaState) - pokemon.resetBattleData(); - this.triggerPokemonFormChange(pokemon, SpeciesFormChangeTimeOfDayTrigger); - } - } - if (!this.gameMode.hasRandomBiomes && !isNewBiome) - this.pushPhase(new NextEncounterPhase(this)); - else { - this.pushPhase(new SelectBiomePhase(this)); - this.pushPhase(new NewBiomeEncounterPhase(this)); + this.executeWithSeedOffset(() => { + isNewBiome = !Utils.randSeedInt(6 - biomeWaves); + }, lastBattle.waveIndex << 4); + } + const resetArenaState = isNewBiome || this.currentBattle.battleType === BattleType.TRAINER || this.currentBattle.battleSpec === BattleSpec.FINAL_BOSS; + this.getEnemyParty().forEach(enemyPokemon => enemyPokemon.destroy()); + this.trySpreadPokerus(); + if (!isNewBiome && (newWaveIndex % 10) == 5) + this.arena.updatePoolsForTimeOfDay(); + if (resetArenaState) { + this.arena.removeAllTags(); + playerField.forEach((_, p) => this.unshiftPhase(new ReturnPhase(this, p))); + this.unshiftPhase(new ShowTrainerPhase(this)); + } + for (const pokemon of this.getParty()) { + if (pokemon) { + if (resetArenaState) + pokemon.resetBattleData(); + this.triggerPokemonFormChange(pokemon, SpeciesFormChangeTimeOfDayTrigger); + } + } + if (!this.gameMode.hasRandomBiomes && !isNewBiome) + this.pushPhase(new NextEncounterPhase(this)); + else { + this.pushPhase(new SelectBiomePhase(this)); + this.pushPhase(new NewBiomeEncounterPhase(this)); - const newMaxExpLevel = this.getMaxExpLevel(); - if (newMaxExpLevel > maxExpLevel) - this.pushPhase(new LevelCapPhase(this)); - } - } + const newMaxExpLevel = this.getMaxExpLevel(); + if (newMaxExpLevel > maxExpLevel) + this.pushPhase(new LevelCapPhase(this)); + } + } - return this.currentBattle; - } + return this.currentBattle; + } - newArena(biome: Biome): Arena { - this.arena = new Arena(this, biome, Biome[biome].toLowerCase()); + newArena(biome: Biome): Arena { + this.arena = new Arena(this, biome, Biome[biome].toLowerCase()); - this.arenaBg.pipelineData = { terrainColorRatio: this.arena.getBgTerrainColorRatioForBiome() }; + this.arenaBg.pipelineData = { terrainColorRatio: this.arena.getBgTerrainColorRatioForBiome() }; - return this.arena; - } + return this.arena; + } - updateFieldScale(): Promise { - return new Promise(resolve => { - const fieldScale = Math.floor(Math.pow(1 / this.getField(true) - .map(p => p.getSpriteScale()) - .reduce((highestScale: number, scale: number) => highestScale = Math.max(scale, highestScale), 0), 0.7) * 40 - ) / 40; - this.setFieldScale(fieldScale).then(() => resolve()); - }); - } + updateFieldScale(): Promise { + return new Promise(resolve => { + const fieldScale = Math.floor(Math.pow(1 / this.getField(true) + .map(p => p.getSpriteScale()) + .reduce((highestScale: number, scale: number) => highestScale = Math.max(scale, highestScale), 0), 0.7) * 40 + ) / 40; + this.setFieldScale(fieldScale).then(() => resolve()); + }); + } - setFieldScale(scale: number, instant: boolean = false): Promise { - return new Promise(resolve => { - scale *= 6; - if (this.field.scale === scale) - return resolve(); + setFieldScale(scale: number, instant: boolean = false): Promise { + return new Promise(resolve => { + scale *= 6; + if (this.field.scale === scale) + return resolve(); - const defaultWidth = this.arenaBg.width * 6; - const defaultHeight = 132 * 6; - const scaledWidth = this.arenaBg.width * scale; - const scaledHeight = 132 * scale; + const defaultWidth = this.arenaBg.width * 6; + const defaultHeight = 132 * 6; + const scaledWidth = this.arenaBg.width * scale; + const scaledHeight = 132 * scale; - this.tweens.add({ - targets: this.field, - scale: scale, - x: (defaultWidth - scaledWidth) / 2, - y: defaultHeight - scaledHeight, - duration: !instant ? Utils.fixedInt(Math.abs(this.field.scale - scale) * 200) : 0, - ease: 'Sine.easeInOut', - onComplete: () => resolve() - }); - }); - } + this.tweens.add({ + targets: this.field, + scale: scale, + x: (defaultWidth - scaledWidth) / 2, + y: defaultHeight - scaledHeight, + duration: !instant ? Utils.fixedInt(Math.abs(this.field.scale - scale) * 200) : 0, + ease: 'Sine.easeInOut', + onComplete: () => resolve() + }); + }); + } - getSpeciesFormIndex(species: PokemonSpecies, gender?: Gender, nature?: Nature, ignoreArena?: boolean): integer { - if (!species.forms?.length) - return 0; + getSpeciesFormIndex(species: PokemonSpecies, gender?: Gender, nature?: Nature, ignoreArena?: boolean): integer { + if (!species.forms?.length) + return 0; - switch (species.speciesId) { - case Species.UNOWN: - case Species.SHELLOS: - case Species.GASTRODON: - case Species.BASCULIN: - case Species.DEERLING: - case Species.SAWSBUCK: - case Species.FROAKIE: - case Species.FROGADIER: - case Species.SCATTERBUG: - case Species.SPEWPA: - case Species.VIVILLON: - case Species.FLABEBE: - case Species.FLOETTE: - case Species.FLORGES: - case Species.FURFROU: - case Species.ORICORIO: - case Species.MAGEARNA: - case Species.ZARUDE: - case Species.SQUAWKABILLY: - case Species.TATSUGIRI: - case Species.PALDEA_TAUROS: - return Utils.randSeedInt(species.forms.length); - case Species.GRENINJA: - return Utils.randSeedInt(2); - case Species.ZYGARDE: - return Utils.randSeedInt(3); - case Species.MINIOR: - return Utils.randSeedInt(6); - case Species.ALCREMIE: - return Utils.randSeedInt(9); - case Species.MEOWSTIC: - case Species.INDEEDEE: - case Species.BASCULEGION: - case Species.OINKOLOGNE: - return gender === Gender.FEMALE ? 1 : 0; - case Species.TOXTRICITY: - const lowkeyNatures = [ Nature.LONELY, Nature.BOLD, Nature.RELAXED, Nature.TIMID, Nature.SERIOUS, Nature.MODEST, Nature.MILD, Nature.QUIET, Nature.BASHFUL, Nature.CALM, Nature.GENTLE, Nature.CAREFUL ]; - if (nature !== undefined && lowkeyNatures.indexOf(nature) > -1) - return 1; - return 0; - } + switch (species.speciesId) { + case Species.UNOWN: + case Species.SHELLOS: + case Species.GASTRODON: + case Species.BASCULIN: + case Species.DEERLING: + case Species.SAWSBUCK: + case Species.FROAKIE: + case Species.FROGADIER: + case Species.SCATTERBUG: + case Species.SPEWPA: + case Species.VIVILLON: + case Species.FLABEBE: + case Species.FLOETTE: + case Species.FLORGES: + case Species.FURFROU: + case Species.ORICORIO: + case Species.MAGEARNA: + case Species.ZARUDE: + case Species.SQUAWKABILLY: + case Species.TATSUGIRI: + case Species.PALDEA_TAUROS: + return Utils.randSeedInt(species.forms.length); + case Species.GRENINJA: + return Utils.randSeedInt(2); + case Species.ZYGARDE: + return Utils.randSeedInt(3); + case Species.MINIOR: + return Utils.randSeedInt(6); + case Species.ALCREMIE: + return Utils.randSeedInt(9); + case Species.MEOWSTIC: + case Species.INDEEDEE: + case Species.BASCULEGION: + case Species.OINKOLOGNE: + return gender === Gender.FEMALE ? 1 : 0; + case Species.TOXTRICITY: + const lowkeyNatures = [ Nature.LONELY, Nature.BOLD, Nature.RELAXED, Nature.TIMID, Nature.SERIOUS, Nature.MODEST, Nature.MILD, Nature.QUIET, Nature.BASHFUL, Nature.CALM, Nature.GENTLE, Nature.CAREFUL ]; + if (nature !== undefined && lowkeyNatures.indexOf(nature) > -1) + return 1; + return 0; + } - if (ignoreArena) { - switch (species.speciesId) { - case Species.BURMY: - case Species.WORMADAM: - case Species.ROTOM: - case Species.LYCANROC: - return Utils.randSeedInt(species.forms.length); - } - return 0; - } + if (ignoreArena) { + switch (species.speciesId) { + case Species.BURMY: + case Species.WORMADAM: + case Species.ROTOM: + case Species.LYCANROC: + return Utils.randSeedInt(species.forms.length); + } + return 0; + } - return this.arena.getSpeciesFormIndex(species); - } + return this.arena.getSpeciesFormIndex(species); + } - private getGeneratedOffsetGym(): boolean { - let ret = false; - this.executeWithSeedOffset(() => { - ret = !Utils.randSeedInt(2); - }, 0, this.seed.toString()); - return ret; - } + private getGeneratedOffsetGym(): boolean { + let ret = false; + this.executeWithSeedOffset(() => { + ret = !Utils.randSeedInt(2); + }, 0, this.seed.toString()); + return ret; + } - private getGeneratedWaveCycleOffset(): integer { - let ret = 0; - this.executeWithSeedOffset(() => { - ret = Utils.randSeedInt(8) * 5; - }, 0, this.seed.toString()); - return ret; - } + private getGeneratedWaveCycleOffset(): integer { + let ret = 0; + this.executeWithSeedOffset(() => { + ret = Utils.randSeedInt(8) * 5; + }, 0, this.seed.toString()); + return ret; + } - getEncounterBossSegments(waveIndex: integer, level: integer, species?: PokemonSpecies, forceBoss: boolean = false): integer { - if (this.gameMode.isDaily && this.gameMode.isWaveFinal(waveIndex)) - return 5; + getEncounterBossSegments(waveIndex: integer, level: integer, species?: PokemonSpecies, forceBoss: boolean = false): integer { + if (this.gameMode.isDaily && this.gameMode.isWaveFinal(waveIndex)) + return 5; - let isBoss: boolean; - if (forceBoss || (species && (species.subLegendary || species.legendary || species.mythical))) - isBoss = true; - else { - this.executeWithSeedOffset(() => { - isBoss = waveIndex % 10 === 0 || (this.gameMode.hasRandomBosses && Utils.randSeedInt(100) < Math.min(Math.max(Math.ceil((waveIndex - 250) / 50), 0) * 2, 30)); - }, waveIndex << 2); - } - if (!isBoss) - return 0; + let isBoss: boolean; + if (forceBoss || (species && (species.subLegendary || species.legendary || species.mythical))) + isBoss = true; + else { + this.executeWithSeedOffset(() => { + isBoss = waveIndex % 10 === 0 || (this.gameMode.hasRandomBosses && Utils.randSeedInt(100) < Math.min(Math.max(Math.ceil((waveIndex - 250) / 50), 0) * 2, 30)); + }, waveIndex << 2); + } + if (!isBoss) + return 0; - let ret: integer = 2; + let ret: integer = 2; - if (level >= 100) - ret++; - if (species) { - if (species.baseTotal >= 670) - ret++; - } - ret += Math.floor(waveIndex / 250); + if (level >= 100) + ret++; + if (species) { + if (species.baseTotal >= 670) + ret++; + } + ret += Math.floor(waveIndex / 250); - return ret; - } + return ret; + } - trySpreadPokerus(): void { - const party = this.getParty(); - const infectedIndexes: integer[] = []; - const spread = (index: number, spreadTo: number) => { - const partyMember = party[index + spreadTo]; - if (!partyMember.pokerus && !Utils.randSeedInt(10)) { - partyMember.pokerus = true; - infectedIndexes.push(index + spreadTo); - } - }; - party.forEach((pokemon, p) => { - if (!pokemon.pokerus || infectedIndexes.indexOf(p) > -1) - return; + trySpreadPokerus(): void { + const party = this.getParty(); + const infectedIndexes: integer[] = []; + const spread = (index: number, spreadTo: number) => { + const partyMember = party[index + spreadTo]; + if (!partyMember.pokerus && !Utils.randSeedInt(10)) { + partyMember.pokerus = true; + infectedIndexes.push(index + spreadTo); + } + }; + party.forEach((pokemon, p) => { + if (!pokemon.pokerus || infectedIndexes.indexOf(p) > -1) + return; - this.executeWithSeedOffset(() => { - if (p) - spread(p, -1); - if (p < party.length - 1) - spread(p, 1); - }, this.currentBattle.waveIndex + (p << 8)); - }); - } + this.executeWithSeedOffset(() => { + if (p) + spread(p, -1); + if (p < party.length - 1) + spread(p, 1); + }, this.currentBattle.waveIndex + (p << 8)); + }); + } - resetSeed(waveIndex?: integer): void { - const wave = waveIndex || this.currentBattle?.waveIndex || 0; - this.waveSeed = Utils.shiftCharCodes(this.seed, wave); - Phaser.Math.RND.sow([ this.waveSeed ]); - console.log('Wave Seed:', this.waveSeed, wave); - this.rngCounter = 0; - } + resetSeed(waveIndex?: integer): void { + const wave = waveIndex || this.currentBattle?.waveIndex || 0; + this.waveSeed = Utils.shiftCharCodes(this.seed, wave); + Phaser.Math.RND.sow([ this.waveSeed ]); + console.log('Wave Seed:', this.waveSeed, wave); + this.rngCounter = 0; + } - executeWithSeedOffset(func: Function, offset: integer, seedOverride?: string): void { - if (!func) - return; - const tempRngCounter = this.rngCounter; - const tempRngOffset = this.rngOffset; - const tempRngSeedOverride = this.rngSeedOverride; - const state = Phaser.Math.RND.state(); - Phaser.Math.RND.sow([ Utils.shiftCharCodes(seedOverride || this.seed, offset) ]); - this.rngCounter = 0; - this.rngOffset = offset; - this.rngSeedOverride = seedOverride || ''; - func(); - Phaser.Math.RND.state(state); - this.rngCounter = tempRngCounter; - this.rngOffset = tempRngOffset; - this.rngSeedOverride = tempRngSeedOverride; - } + executeWithSeedOffset(func: Function, offset: integer, seedOverride?: string): void { + if (!func) + return; + const tempRngCounter = this.rngCounter; + const tempRngOffset = this.rngOffset; + const tempRngSeedOverride = this.rngSeedOverride; + const state = Phaser.Math.RND.state(); + Phaser.Math.RND.sow([ Utils.shiftCharCodes(seedOverride || this.seed, offset) ]); + this.rngCounter = 0; + this.rngOffset = offset; + this.rngSeedOverride = seedOverride || ''; + func(); + Phaser.Math.RND.state(state); + this.rngCounter = tempRngCounter; + this.rngOffset = tempRngOffset; + this.rngSeedOverride = tempRngSeedOverride; + } - addFieldSprite(x: number, y: number, texture: string | Phaser.Textures.Texture, frame?: string | number, terrainColorRatio: number = 0): Phaser.GameObjects.Sprite { - const ret = this.add.sprite(x, y, texture, frame); - ret.setPipeline(this.fieldSpritePipeline); - if (terrainColorRatio) - ret.pipelineData['terrainColorRatio'] = terrainColorRatio; + addFieldSprite(x: number, y: number, texture: string | Phaser.Textures.Texture, frame?: string | number, terrainColorRatio: number = 0): Phaser.GameObjects.Sprite { + const ret = this.add.sprite(x, y, texture, frame); + ret.setPipeline(this.fieldSpritePipeline); + if (terrainColorRatio) + ret.pipelineData['terrainColorRatio'] = terrainColorRatio; - return ret; - } + return ret; + } - addPokemonSprite(pokemon: Pokemon, x: number, y: number, texture: string | Phaser.Textures.Texture, frame?: string | number, hasShadow: boolean = false, ignoreOverride: boolean = false): Phaser.GameObjects.Sprite { - const ret = this.addFieldSprite(x, y, texture, frame); - this.initPokemonSprite(ret, pokemon, hasShadow, ignoreOverride); - return ret; - } + addPokemonSprite(pokemon: Pokemon, x: number, y: number, texture: string | Phaser.Textures.Texture, frame?: string | number, hasShadow: boolean = false, ignoreOverride: boolean = false): Phaser.GameObjects.Sprite { + const ret = this.addFieldSprite(x, y, texture, frame); + this.initPokemonSprite(ret, pokemon, hasShadow, ignoreOverride); + return ret; + } - initPokemonSprite(sprite: Phaser.GameObjects.Sprite, pokemon?: Pokemon, hasShadow: boolean = false, ignoreOverride: boolean = false): Phaser.GameObjects.Sprite { - sprite.setPipeline(this.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: hasShadow, ignoreOverride: ignoreOverride, teraColor: pokemon ? getTypeRgb(pokemon.getTeraType()) : undefined }); - this.spriteSparkleHandler.add(sprite); - return sprite; - } + initPokemonSprite(sprite: Phaser.GameObjects.Sprite, pokemon?: Pokemon, hasShadow: boolean = false, ignoreOverride: boolean = false): Phaser.GameObjects.Sprite { + sprite.setPipeline(this.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: hasShadow, ignoreOverride: ignoreOverride, teraColor: pokemon ? getTypeRgb(pokemon.getTeraType()) : undefined }); + this.spriteSparkleHandler.add(sprite); + return sprite; + } - showFieldOverlay(duration: integer): Promise { - return new Promise(resolve => { - this.tweens.add({ - targets: this.fieldOverlay, - alpha: 0.5, - ease: 'Sine.easeOut', - duration: duration, - onComplete: () => resolve() - }); - }); - } + showFieldOverlay(duration: integer): Promise { + return new Promise(resolve => { + this.tweens.add({ + targets: this.fieldOverlay, + alpha: 0.5, + ease: 'Sine.easeOut', + duration: duration, + onComplete: () => resolve() + }); + }); + } - hideFieldOverlay(duration: integer): Promise { - return new Promise(resolve => { - this.tweens.add({ - targets: this.fieldOverlay, - alpha: 0, - duration: duration, - ease: 'Cubic.easeIn', - onComplete: () => resolve() - }); - }); - } + hideFieldOverlay(duration: integer): Promise { + return new Promise(resolve => { + this.tweens.add({ + targets: this.fieldOverlay, + alpha: 0, + duration: duration, + ease: 'Cubic.easeIn', + onComplete: () => resolve() + }); + }); + } - updateWaveCountText(): void { - const isBoss = !(this.currentBattle.waveIndex % 10); - this.waveCountText.setText(this.currentBattle.waveIndex.toString()); - this.waveCountText.setColor(!isBoss ? '#404040' : '#f89890'); - this.waveCountText.setShadowColor(!isBoss ? '#ded6b5' : '#984038'); - this.waveCountText.setVisible(true); - } + updateWaveCountText(): void { + const isBoss = !(this.currentBattle.waveIndex % 10); + this.waveCountText.setText(this.currentBattle.waveIndex.toString()); + this.waveCountText.setColor(!isBoss ? '#404040' : '#f89890'); + this.waveCountText.setShadowColor(!isBoss ? '#ded6b5' : '#984038'); + this.waveCountText.setVisible(true); + } - updateMoneyText(): void { - this.moneyText.setText(`₽${this.money.toLocaleString('en-US')}`); - this.moneyText.setVisible(true); - } + updateMoneyText(): void { + this.moneyText.setText(`₽${this.money.toLocaleString('en-US')}`); + this.moneyText.setVisible(true); + } - updateScoreText(): void { - this.scoreText.setText(`Score: ${this.score.toString()}`); - this.scoreText.setVisible(this.gameMode.isDaily); - } + updateScoreText(): void { + this.scoreText.setText(`Score: ${this.score.toString()}`); + this.scoreText.setVisible(this.gameMode.isDaily); + } - updateAndShowLuckText(duration: integer): void { - const labels = [ this.luckLabelText, this.luckText ]; - labels.map(t => { - t.setAlpha(0); - t.setVisible(true); - }) - const luckValue = getPartyLuckValue(this.getParty()); - this.luckText.setText(getLuckString(luckValue)); - if (luckValue < 14) - this.luckText.setTint(getLuckTextTint(luckValue)); - else - this.luckText.setTint(0x83a55a, 0xee384a, 0x5271cd, 0x7b487b); - this.luckLabelText.setX((this.game.canvas.width / 6) - 2 - (this.luckText.displayWidth + 2)); - this.tweens.add({ - targets: labels, - duration: duration, - alpha: 1 - }); - } + updateAndShowLuckText(duration: integer): void { + const labels = [ this.luckLabelText, this.luckText ]; + labels.map(t => { + t.setAlpha(0); + t.setVisible(true); + }); + const luckValue = getPartyLuckValue(this.getParty()); + this.luckText.setText(getLuckString(luckValue)); + if (luckValue < 14) + this.luckText.setTint(getLuckTextTint(luckValue)); + else + this.luckText.setTint(0x83a55a, 0xee384a, 0x5271cd, 0x7b487b); + this.luckLabelText.setX((this.game.canvas.width / 6) - 2 - (this.luckText.displayWidth + 2)); + this.tweens.add({ + targets: labels, + duration: duration, + alpha: 1 + }); + } - hideLuckText(duration: integer): void { - const labels = [ this.luckLabelText, this.luckText ]; - this.tweens.add({ - targets: labels, - duration: duration, - alpha: 0, - onComplete: () => { - labels.map(l => l.setVisible(false)); - } - }); - } + hideLuckText(duration: integer): void { + const labels = [ this.luckLabelText, this.luckText ]; + this.tweens.add({ + targets: labels, + duration: duration, + alpha: 0, + onComplete: () => { + labels.map(l => l.setVisible(false)); + } + }); + } - updateUIPositions(): void { - const enemyModifierCount = this.enemyModifiers.filter(m => m.isIconVisible(this)).length; - this.waveCountText.setY(-(this.game.canvas.height / 6) + (enemyModifierCount ? enemyModifierCount <= 12 ? 15 : 24 : 0)); - this.moneyText.setY(this.waveCountText.y + 10); - this.scoreText.setY(this.moneyText.y + 10); - [ this.luckLabelText, this.luckText ].map(l => l.setY((this.scoreText.visible ? this.scoreText : this.moneyText).y + 10)); - const offsetY = (this.scoreText.visible ? this.scoreText : this.moneyText).y + 15; - this.partyExpBar.setY(offsetY); - this.candyBar.setY(offsetY + 15); - this.ui?.achvBar.setY(this.game.canvas.height / 6 + offsetY); - } + updateUIPositions(): void { + const enemyModifierCount = this.enemyModifiers.filter(m => m.isIconVisible(this)).length; + this.waveCountText.setY(-(this.game.canvas.height / 6) + (enemyModifierCount ? enemyModifierCount <= 12 ? 15 : 24 : 0)); + this.moneyText.setY(this.waveCountText.y + 10); + this.scoreText.setY(this.moneyText.y + 10); + [ this.luckLabelText, this.luckText ].map(l => l.setY((this.scoreText.visible ? this.scoreText : this.moneyText).y + 10)); + const offsetY = (this.scoreText.visible ? this.scoreText : this.moneyText).y + 15; + this.partyExpBar.setY(offsetY); + this.candyBar.setY(offsetY + 15); + this.ui?.achvBar.setY(this.game.canvas.height / 6 + offsetY); + } - addFaintedEnemyScore(enemy: EnemyPokemon): void { - let scoreIncrease = enemy.getSpeciesForm().getBaseExp() * (enemy.level / this.getMaxExpLevel()) * ((enemy.ivs.reduce((iv: integer, total: integer) => total += iv, 0) / 93) * 0.2 + 0.8); - this.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === enemy.id, false).map(m => scoreIncrease *= (m as PokemonHeldItemModifier).getScoreMultiplier()); - if (enemy.isBoss()) - scoreIncrease *= Math.sqrt(enemy.bossSegments); - this.currentBattle.battleScore += Math.ceil(scoreIncrease); - } + addFaintedEnemyScore(enemy: EnemyPokemon): void { + let scoreIncrease = enemy.getSpeciesForm().getBaseExp() * (enemy.level / this.getMaxExpLevel()) * ((enemy.ivs.reduce((iv: integer, total: integer) => total += iv, 0) / 93) * 0.2 + 0.8); + this.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === enemy.id, false).map(m => scoreIncrease *= (m as PokemonHeldItemModifier).getScoreMultiplier()); + if (enemy.isBoss()) + scoreIncrease *= Math.sqrt(enemy.bossSegments); + this.currentBattle.battleScore += Math.ceil(scoreIncrease); + } - getMaxExpLevel(ignoreLevelCap?: boolean): integer { - if (ignoreLevelCap) - return Number.MAX_SAFE_INTEGER; - const waveIndex = Math.ceil((this.currentBattle?.waveIndex || 1) / 10) * 10; - const difficultyWaveIndex = this.gameMode.getWaveForDifficulty(waveIndex); - const baseLevel = (1 + difficultyWaveIndex / 2 + Math.pow(difficultyWaveIndex / 25, 2)) * 1.2; - return Math.ceil(baseLevel / 2) * 2 + 2; - } + getMaxExpLevel(ignoreLevelCap?: boolean): integer { + if (ignoreLevelCap) + return Number.MAX_SAFE_INTEGER; + const waveIndex = Math.ceil((this.currentBattle?.waveIndex || 1) / 10) * 10; + const difficultyWaveIndex = this.gameMode.getWaveForDifficulty(waveIndex); + const baseLevel = (1 + difficultyWaveIndex / 2 + Math.pow(difficultyWaveIndex / 25, 2)) * 1.2; + return Math.ceil(baseLevel / 2) * 2 + 2; + } - randomSpecies(waveIndex: integer, level: integer, fromArenaPool?: boolean, speciesFilter?: PokemonSpeciesFilter, filterAllEvolutions?: boolean): PokemonSpecies { - if (fromArenaPool) - return this.arena.randomSpecies(waveIndex, level); - const filteredSpecies = speciesFilter ? [...new Set(allSpecies.filter(s => s.isCatchable()).filter(speciesFilter).map(s => { - if (!filterAllEvolutions) { - while (pokemonPrevolutions.hasOwnProperty(s.speciesId)) - s = getPokemonSpecies(pokemonPrevolutions[s.speciesId]); - } - return s; - }))] : allSpecies.filter(s => s.isCatchable()); - return filteredSpecies[Utils.randSeedInt(filteredSpecies.length)]; - } + randomSpecies(waveIndex: integer, level: integer, fromArenaPool?: boolean, speciesFilter?: PokemonSpeciesFilter, filterAllEvolutions?: boolean): PokemonSpecies { + if (fromArenaPool) + return this.arena.randomSpecies(waveIndex, level); + const filteredSpecies = speciesFilter ? [...new Set(allSpecies.filter(s => s.isCatchable()).filter(speciesFilter).map(s => { + if (!filterAllEvolutions) { + while (pokemonPrevolutions.hasOwnProperty(s.speciesId)) + s = getPokemonSpecies(pokemonPrevolutions[s.speciesId]); + } + return s; + }))] : allSpecies.filter(s => s.isCatchable()); + return filteredSpecies[Utils.randSeedInt(filteredSpecies.length)]; + } - generateRandomBiome(waveIndex: integer): Biome { - const relWave = waveIndex % 250; - const biomes = Utils.getEnumValues(Biome).slice(1, Utils.getEnumValues(Biome).filter(b => b >= 40).length * -1); - const maxDepth = biomeDepths[Biome.END][0] - 2; - const depthWeights = new Array(maxDepth + 1).fill(null) - .map((_, i: integer) => ((1 - Math.min(Math.abs((i / (maxDepth - 1)) - (relWave / 250)) + 0.25, 1)) / 0.75) * 250); - const biomeThresholds: integer[] = []; - let totalWeight = 0; - for (let biome of biomes) { - totalWeight += Math.ceil(depthWeights[biomeDepths[biome][0] - 1] / biomeDepths[biome][1]); - biomeThresholds.push(totalWeight); - } + generateRandomBiome(waveIndex: integer): Biome { + const relWave = waveIndex % 250; + const biomes = Utils.getEnumValues(Biome).slice(1, Utils.getEnumValues(Biome).filter(b => b >= 40).length * -1); + const maxDepth = biomeDepths[Biome.END][0] - 2; + const depthWeights = new Array(maxDepth + 1).fill(null) + .map((_, i: integer) => ((1 - Math.min(Math.abs((i / (maxDepth - 1)) - (relWave / 250)) + 0.25, 1)) / 0.75) * 250); + const biomeThresholds: integer[] = []; + let totalWeight = 0; + for (const biome of biomes) { + totalWeight += Math.ceil(depthWeights[biomeDepths[biome][0] - 1] / biomeDepths[biome][1]); + biomeThresholds.push(totalWeight); + } - const randInt = Utils.randSeedInt(totalWeight); + const randInt = Utils.randSeedInt(totalWeight); - for (let biome of biomes) { - if (randInt < biomeThresholds[biome]) - return biome; - } + for (const biome of biomes) { + if (randInt < biomeThresholds[biome]) + return biome; + } - return biomes[Utils.randSeedInt(biomes.length)]; - } + return biomes[Utils.randSeedInt(biomes.length)]; + } - isBgmPlaying(): boolean { - return this.bgm && this.bgm.isPlaying; - } + isBgmPlaying(): boolean { + return this.bgm && this.bgm.isPlaying; + } - playBgm(bgmName?: string, fadeOut?: boolean): void { - if (bgmName === undefined) - bgmName = this.currentBattle?.getBgmOverride(this) || this.arena?.bgm; - if (this.bgm && bgmName === this.bgm.key) { - if (!this.bgm.isPlaying) { - this.bgm.play({ - volume: this.masterVolume * this.bgmVolume - }); - } - return; - } - if (fadeOut && !this.bgm) - fadeOut = false; - this.bgmCache.add(bgmName); - this.loadBgm(bgmName); - let loopPoint = 0; - loopPoint = bgmName === this.arena.bgm - ? this.arena.getBgmLoopPoint() - : this.getBgmLoopPoint(bgmName); - let loaded = false; - const playNewBgm = () => { - if (bgmName === null && this.bgm && !this.bgm.pendingRemove) { - this.bgm.play({ - volume: this.masterVolume * this.bgmVolume - }); - return; - } - if (this.bgm && !this.bgm.pendingRemove && this.bgm.isPlaying) - this.bgm.stop(); - this.bgm = this.sound.add(bgmName, { loop: true }); - this.bgm.play({ - volume: this.masterVolume * this.bgmVolume - }); - if (loopPoint) - this.bgm.on('looped', () => this.bgm.play({ seek: loopPoint })); - }; - this.load.once(Phaser.Loader.Events.COMPLETE, () => { - loaded = true; - if (!fadeOut || !this.bgm.isPlaying) - playNewBgm(); - }); - if (fadeOut) { - const onBgmFaded = () => { - if (loaded && (!this.bgm.isPlaying || this.bgm.pendingRemove)) - playNewBgm(); - }; - this.time.delayedCall(this.fadeOutBgm(500, true) ? 750 : 250, onBgmFaded); - } - if (!this.load.isLoading()) - this.load.start(); - } + playBgm(bgmName?: string, fadeOut?: boolean): void { + if (bgmName === undefined) + bgmName = this.currentBattle?.getBgmOverride(this) || this.arena?.bgm; + if (this.bgm && bgmName === this.bgm.key) { + if (!this.bgm.isPlaying) { + this.bgm.play({ + volume: this.masterVolume * this.bgmVolume + }); + } + return; + } + if (fadeOut && !this.bgm) + fadeOut = false; + this.bgmCache.add(bgmName); + this.loadBgm(bgmName); + let loopPoint = 0; + loopPoint = bgmName === this.arena.bgm + ? this.arena.getBgmLoopPoint() + : this.getBgmLoopPoint(bgmName); + let loaded = false; + const playNewBgm = () => { + if (bgmName === null && this.bgm && !this.bgm.pendingRemove) { + this.bgm.play({ + volume: this.masterVolume * this.bgmVolume + }); + return; + } + if (this.bgm && !this.bgm.pendingRemove && this.bgm.isPlaying) + this.bgm.stop(); + this.bgm = this.sound.add(bgmName, { loop: true }); + this.bgm.play({ + volume: this.masterVolume * this.bgmVolume + }); + if (loopPoint) + this.bgm.on('looped', () => this.bgm.play({ seek: loopPoint })); + }; + this.load.once(Phaser.Loader.Events.COMPLETE, () => { + loaded = true; + if (!fadeOut || !this.bgm.isPlaying) + playNewBgm(); + }); + if (fadeOut) { + const onBgmFaded = () => { + if (loaded && (!this.bgm.isPlaying || this.bgm.pendingRemove)) + playNewBgm(); + }; + this.time.delayedCall(this.fadeOutBgm(500, true) ? 750 : 250, onBgmFaded); + } + if (!this.load.isLoading()) + this.load.start(); + } - pauseBgm(): boolean { - if (this.bgm && !this.bgm.pendingRemove && this.bgm.isPlaying) { - this.bgm.pause(); - return true; - } - return false; - } + pauseBgm(): boolean { + if (this.bgm && !this.bgm.pendingRemove && this.bgm.isPlaying) { + this.bgm.pause(); + return true; + } + return false; + } - resumeBgm(): boolean { - if (this.bgm && !this.bgm.pendingRemove && this.bgm.isPaused) { - this.bgm.resume(); - return true; - } - return false; - } + resumeBgm(): boolean { + if (this.bgm && !this.bgm.pendingRemove && this.bgm.isPaused) { + this.bgm.resume(); + return true; + } + return false; + } - updateSoundVolume(): void { - if (this.sound) { - for (let sound of this.sound.getAllPlaying()) - (sound as AnySound).setVolume(this.masterVolume * (this.bgmCache.has(sound.key) ? this.bgmVolume : this.seVolume)); - } - } + updateSoundVolume(): void { + if (this.sound) { + for (const sound of this.sound.getAllPlaying()) + (sound as AnySound).setVolume(this.masterVolume * (this.bgmCache.has(sound.key) ? this.bgmVolume : this.seVolume)); + } + } - fadeOutBgm(duration: integer = 500, destroy: boolean = true): boolean { - if (!this.bgm) - return false; + fadeOutBgm(duration: integer = 500, destroy: boolean = true): boolean { + if (!this.bgm) + return false; const bgm = this.sound.getAllPlaying().find(bgm => bgm.key === this.bgm.key); - if (bgm) { - SoundFade.fadeOut(this, this.bgm, duration, destroy); - return true; - } + if (bgm) { + SoundFade.fadeOut(this, this.bgm, duration, destroy); + return true; + } - return false; - } + return false; + } - playSound(sound: string | AnySound, config?: object): AnySound { - if (config) { - if (config.hasOwnProperty('volume')) - config['volume'] *= this.masterVolume * this.seVolume; - else - config['volume'] = this.masterVolume * this.seVolume; - } else - config = { volume: this.masterVolume * this.seVolume }; - // PRSFX sounds are mixed too loud - if ((typeof sound === 'string' ? sound : sound.key).startsWith('PRSFX- ')) - config['volume'] *= 0.5; - if (typeof sound === 'string') { - this.sound.play(sound, config); - return this.sound.get(sound) as AnySound; - } else { - sound.play(config); - return sound; - } - } + playSound(sound: string | AnySound, config?: object): AnySound { + if (config) { + if (config.hasOwnProperty('volume')) + config['volume'] *= this.masterVolume * this.seVolume; + else + config['volume'] = this.masterVolume * this.seVolume; + } else + config = { volume: this.masterVolume * this.seVolume }; + // PRSFX sounds are mixed too loud + if ((typeof sound === 'string' ? sound : sound.key).startsWith('PRSFX- ')) + config['volume'] *= 0.5; + if (typeof sound === 'string') { + this.sound.play(sound, config); + return this.sound.get(sound) as AnySound; + } else { + sound.play(config); + return sound; + } + } - playSoundWithoutBgm(soundName: string, pauseDuration?: integer): AnySound { - this.bgmCache.add(soundName); - const resumeBgm = this.pauseBgm(); - this.playSound(soundName); - const sound = this.sound.get(soundName) as AnySound; - if (this.bgmResumeTimer) - this.bgmResumeTimer.destroy(); - if (resumeBgm) { - this.bgmResumeTimer = this.time.delayedCall((pauseDuration || Utils.fixedInt(sound.totalDuration * 1000)), () => { - this.resumeBgm(); - this.bgmResumeTimer = null; - }); - } - return sound; - } + playSoundWithoutBgm(soundName: string, pauseDuration?: integer): AnySound { + this.bgmCache.add(soundName); + const resumeBgm = this.pauseBgm(); + this.playSound(soundName); + const sound = this.sound.get(soundName) as AnySound; + if (this.bgmResumeTimer) + this.bgmResumeTimer.destroy(); + if (resumeBgm) { + this.bgmResumeTimer = this.time.delayedCall((pauseDuration || Utils.fixedInt(sound.totalDuration * 1000)), () => { + this.resumeBgm(); + this.bgmResumeTimer = null; + }); + } + return sound; + } - getBgmLoopPoint(bgmName: string): number { - switch (bgmName) { - case 'battle_kanto_champion': - return 13.950; - case 'battle_johto_champion': - return 23.498; - case 'battle_hoenn_champion': - return 11.328; - case 'battle_sinnoh_champion': - return 12.235; - case 'battle_champion_alder': - return 27.653; - case 'battle_champion_iris': - return 10.145; - case 'battle_elite': - return 17.730; - case 'battle_final_encounter': - return 19.159; - case 'battle_final': - return 16.453; - case 'battle_kanto_gym': - return 13.857; - case 'battle_johto_gym': - return 12.911; - case 'battle_hoenn_gym': - return 12.379; - case 'battle_sinnoh_gym': - return 13.122; - case 'battle_unova_gym': - return 19.145; - case 'battle_legendary_regis': //B2W2 Legendary Titan Battle - return 49.500; - case 'battle_legendary_unova': //BW Unova Legendary Battle - return 13.855; - case 'battle_legendary_kyurem': //BW Kyurem Battle - return 18.314; - case 'battle_legendary_res_zek': //BW Reshiram & Zekrom Battle - return 18.329; - case 'battle_rival': - return 13.689; - case 'battle_rival_2': - return 17.714; - case 'battle_rival_3': - return 17.586; - case 'battle_trainer': - return 13.686; - case 'battle_wild': - return 12.703; - case 'battle_wild_strong': - return 13.940; - case 'end_summit': - return 30.025; - } + getBgmLoopPoint(bgmName: string): number { + switch (bgmName) { + case 'battle_kanto_champion': + return 13.950; + case 'battle_johto_champion': + return 23.498; + case 'battle_hoenn_champion': + return 11.328; + case 'battle_sinnoh_champion': + return 12.235; + case 'battle_champion_alder': + return 27.653; + case 'battle_champion_iris': + return 10.145; + case 'battle_elite': + return 17.730; + case 'battle_final_encounter': + return 19.159; + case 'battle_final': + return 16.453; + case 'battle_kanto_gym': + return 13.857; + case 'battle_johto_gym': + return 12.911; + case 'battle_hoenn_gym': + return 12.379; + case 'battle_sinnoh_gym': + return 13.122; + case 'battle_unova_gym': + return 19.145; + case 'battle_legendary_regis': //B2W2 Legendary Titan Battle + return 49.500; + case 'battle_legendary_unova': //BW Unova Legendary Battle + return 13.855; + case 'battle_legendary_kyurem': //BW Kyurem Battle + return 18.314; + case 'battle_legendary_res_zek': //BW Reshiram & Zekrom Battle + return 18.329; + case 'battle_rival': + return 13.689; + case 'battle_rival_2': + return 17.714; + case 'battle_rival_3': + return 17.586; + case 'battle_trainer': + return 13.686; + case 'battle_wild': + return 12.703; + case 'battle_wild_strong': + return 13.940; + case 'end_summit': + return 30.025; + } - return 0; - } + return 0; + } - toggleInvert(invert: boolean): void { - if (invert) - this.cameras.main.setPostPipeline(InvertPostFX); - else - this.cameras.main.removePostPipeline('InvertPostFX'); - } + toggleInvert(invert: boolean): void { + if (invert) + this.cameras.main.setPostPipeline(InvertPostFX); + else + this.cameras.main.removePostPipeline('InvertPostFX'); + } - /* Phase Functions */ - getCurrentPhase(): Phase { - return this.currentPhase; - } + /* Phase Functions */ + getCurrentPhase(): Phase { + return this.currentPhase; + } - getStandbyPhase(): Phase { - return this.standbyPhase; - } + getStandbyPhase(): Phase { + return this.standbyPhase; + } - pushPhase(phase: Phase, defer: boolean = false): void { - (!defer ? this.phaseQueue : this.nextCommandPhaseQueue).push(phase); - } + pushPhase(phase: Phase, defer: boolean = false): void { + (!defer ? this.phaseQueue : this.nextCommandPhaseQueue).push(phase); + } - unshiftPhase(phase: Phase): void { - if (this.phaseQueuePrependSpliceIndex === -1) - this.phaseQueuePrepend.push(phase); - else - this.phaseQueuePrepend.splice(this.phaseQueuePrependSpliceIndex, 0, phase); - } + unshiftPhase(phase: Phase): void { + if (this.phaseQueuePrependSpliceIndex === -1) + this.phaseQueuePrepend.push(phase); + else + this.phaseQueuePrepend.splice(this.phaseQueuePrependSpliceIndex, 0, phase); + } - clearPhaseQueue(): void { - this.phaseQueue.splice(0, this.phaseQueue.length); - } + clearPhaseQueue(): void { + this.phaseQueue.splice(0, this.phaseQueue.length); + } - setPhaseQueueSplice(): void { - this.phaseQueuePrependSpliceIndex = this.phaseQueuePrepend.length; - } + setPhaseQueueSplice(): void { + this.phaseQueuePrependSpliceIndex = this.phaseQueuePrepend.length; + } - clearPhaseQueueSplice(): void { - this.phaseQueuePrependSpliceIndex = -1; - } + clearPhaseQueueSplice(): void { + this.phaseQueuePrependSpliceIndex = -1; + } - shiftPhase(): void { - if (this.standbyPhase) { - this.currentPhase = this.standbyPhase; - this.standbyPhase = null; - return; - } + shiftPhase(): void { + if (this.standbyPhase) { + this.currentPhase = this.standbyPhase; + this.standbyPhase = null; + return; + } - if (this.phaseQueuePrependSpliceIndex > -1) - this.clearPhaseQueueSplice(); - if (this.phaseQueuePrepend.length) { - while (this.phaseQueuePrepend.length) - this.phaseQueue.unshift(this.phaseQueuePrepend.pop()); - } - if (!this.phaseQueue.length) - this.populatePhaseQueue(); - this.currentPhase = this.phaseQueue.shift(); - this.currentPhase.start(); - } + if (this.phaseQueuePrependSpliceIndex > -1) + this.clearPhaseQueueSplice(); + if (this.phaseQueuePrepend.length) { + while (this.phaseQueuePrepend.length) + this.phaseQueue.unshift(this.phaseQueuePrepend.pop()); + } + if (!this.phaseQueue.length) + this.populatePhaseQueue(); + this.currentPhase = this.phaseQueue.shift(); + this.currentPhase.start(); + } - overridePhase(phase: Phase): boolean { - if (this.standbyPhase) - return false; + overridePhase(phase: Phase): boolean { + if (this.standbyPhase) + return false; - this.standbyPhase = this.currentPhase; - this.currentPhase = phase; - phase.start(); + this.standbyPhase = this.currentPhase; + this.currentPhase = phase; + phase.start(); - return true; - } + return true; + } - findPhase(phaseFilter: (phase: Phase) => boolean): Phase { - return this.phaseQueue.find(phaseFilter); - } + findPhase(phaseFilter: (phase: Phase) => boolean): Phase { + return this.phaseQueue.find(phaseFilter); + } - tryReplacePhase(phaseFilter: (phase: Phase) => boolean, phase: Phase): boolean { - const phaseIndex = this.phaseQueue.findIndex(phaseFilter); - if (phaseIndex > -1) { - this.phaseQueue[phaseIndex] = phase; - return true; - } - return false; - } + tryReplacePhase(phaseFilter: (phase: Phase) => boolean, phase: Phase): boolean { + const phaseIndex = this.phaseQueue.findIndex(phaseFilter); + if (phaseIndex > -1) { + this.phaseQueue[phaseIndex] = phase; + return true; + } + return false; + } - tryRemovePhase(phaseFilter: (phase: Phase) => boolean): boolean { - const phaseIndex = this.phaseQueue.findIndex(phaseFilter); - if (phaseIndex > -1) { - this.phaseQueue.splice(phaseIndex, 1); - return true; - } - return false; - } + tryRemovePhase(phaseFilter: (phase: Phase) => boolean): boolean { + const phaseIndex = this.phaseQueue.findIndex(phaseFilter); + if (phaseIndex > -1) { + this.phaseQueue.splice(phaseIndex, 1); + return true; + } + return false; + } - pushMovePhase(movePhase: MovePhase, priorityOverride?: integer): void { - const movePriority = new Utils.IntegerHolder(priorityOverride !== undefined ? priorityOverride : movePhase.move.getMove().priority); - applyAbAttrs(IncrementMovePriorityAbAttr, movePhase.pokemon, null, movePhase.move.getMove(), movePriority); - const lowerPriorityPhase = this.phaseQueue.find(p => p instanceof MovePhase && p.move.getMove().priority < movePriority.value); - if (lowerPriorityPhase) - this.phaseQueue.splice(this.phaseQueue.indexOf(lowerPriorityPhase), 0, movePhase); - else - this.pushPhase(movePhase); - } + pushMovePhase(movePhase: MovePhase, priorityOverride?: integer): void { + const movePriority = new Utils.IntegerHolder(priorityOverride !== undefined ? priorityOverride : movePhase.move.getMove().priority); + applyAbAttrs(IncrementMovePriorityAbAttr, movePhase.pokemon, null, movePhase.move.getMove(), movePriority); + const lowerPriorityPhase = this.phaseQueue.find(p => p instanceof MovePhase && p.move.getMove().priority < movePriority.value); + if (lowerPriorityPhase) + this.phaseQueue.splice(this.phaseQueue.indexOf(lowerPriorityPhase), 0, movePhase); + else + this.pushPhase(movePhase); + } - queueMessage(message: string, callbackDelay?: integer, prompt?: boolean, promptDelay?: integer, defer?: boolean) { - const phase = new MessagePhase(this, message, callbackDelay, prompt, promptDelay); - if (!defer) - this.unshiftPhase(phase); - else - this.pushPhase(phase); - } + queueMessage(message: string, callbackDelay?: integer, prompt?: boolean, promptDelay?: integer, defer?: boolean) { + const phase = new MessagePhase(this, message, callbackDelay, prompt, promptDelay); + if (!defer) + this.unshiftPhase(phase); + else + this.pushPhase(phase); + } - populatePhaseQueue(): void { - if (this.nextCommandPhaseQueue.length) { - this.phaseQueue.push(...this.nextCommandPhaseQueue); - this.nextCommandPhaseQueue.splice(0, this.nextCommandPhaseQueue.length); - } - this.phaseQueue.push(new TurnInitPhase(this)); - } + populatePhaseQueue(): void { + if (this.nextCommandPhaseQueue.length) { + this.phaseQueue.push(...this.nextCommandPhaseQueue); + this.nextCommandPhaseQueue.splice(0, this.nextCommandPhaseQueue.length); + } + this.phaseQueue.push(new TurnInitPhase(this)); + } - addMoney(amount: integer): void { - this.money = Math.min(this.money + amount, Number.MAX_SAFE_INTEGER); - this.updateMoneyText(); - this.validateAchvs(MoneyAchv); - } + addMoney(amount: integer): void { + this.money = Math.min(this.money + amount, Number.MAX_SAFE_INTEGER); + this.updateMoneyText(); + this.validateAchvs(MoneyAchv); + } - getWaveMoneyAmount(moneyMultiplier: number): integer { - const waveIndex = this.currentBattle.waveIndex; - const waveSetIndex = Math.ceil(waveIndex / 10) - 1; - const moneyValue = Math.pow((waveSetIndex + 1 + (0.75 + (((waveIndex - 1) % 10) + 1) / 10)) * 100, 1 + 0.005 * waveSetIndex) * moneyMultiplier; - return Math.floor(moneyValue / 10) * 10; - } + getWaveMoneyAmount(moneyMultiplier: number): integer { + const waveIndex = this.currentBattle.waveIndex; + const waveSetIndex = Math.ceil(waveIndex / 10) - 1; + const moneyValue = Math.pow((waveSetIndex + 1 + (0.75 + (((waveIndex - 1) % 10) + 1) / 10)) * 100, 1 + 0.005 * waveSetIndex) * moneyMultiplier; + return Math.floor(moneyValue / 10) * 10; + } - addModifier(modifier: Modifier, ignoreUpdate?: boolean, playSound?: boolean, virtual?: boolean, instant?: boolean): Promise { - return new Promise(resolve => { - let success = false; - const soundName = modifier.type.soundName; - this.validateAchvs(ModifierAchv, modifier); - const modifiersToRemove: PersistentModifier[] = []; - const modifierPromises: Promise[] = []; - if (modifier instanceof PersistentModifier) { - if (modifier instanceof TerastallizeModifier) - modifiersToRemove.push(...(this.findModifiers(m => m instanceof TerastallizeModifier && m.pokemonId === modifier.pokemonId))); - if ((modifier as PersistentModifier).add(this.modifiers, !!virtual, this)) { - if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier) - success = modifier.apply([ this.getPokemonById(modifier.pokemonId), true ]); - if (playSound && !this.sound.get(soundName)) - this.playSound(soundName); - } else if (!virtual) { - const defaultModifierType = getDefaultModifierTypeForTier(modifier.type.tier); - this.queueMessage(`The stack for this item is full.\n You will receive ${defaultModifierType.name} instead.`, null, true); - return this.addModifier(defaultModifierType.newModifier(), ignoreUpdate, playSound, false, instant).then(success => resolve(success)); - } + addModifier(modifier: Modifier, ignoreUpdate?: boolean, playSound?: boolean, virtual?: boolean, instant?: boolean): Promise { + return new Promise(resolve => { + let success = false; + const soundName = modifier.type.soundName; + this.validateAchvs(ModifierAchv, modifier); + const modifiersToRemove: PersistentModifier[] = []; + const modifierPromises: Promise[] = []; + if (modifier instanceof PersistentModifier) { + if (modifier instanceof TerastallizeModifier) + modifiersToRemove.push(...(this.findModifiers(m => m instanceof TerastallizeModifier && m.pokemonId === modifier.pokemonId))); + if ((modifier as PersistentModifier).add(this.modifiers, !!virtual, this)) { + if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier) + success = modifier.apply([ this.getPokemonById(modifier.pokemonId), true ]); + if (playSound && !this.sound.get(soundName)) + this.playSound(soundName); + } else if (!virtual) { + const defaultModifierType = getDefaultModifierTypeForTier(modifier.type.tier); + this.queueMessage(`The stack for this item is full.\n You will receive ${defaultModifierType.name} instead.`, null, true); + return this.addModifier(defaultModifierType.newModifier(), ignoreUpdate, playSound, false, instant).then(success => resolve(success)); + } - for (let rm of modifiersToRemove) - this.removeModifier(rm); + for (const rm of modifiersToRemove) + this.removeModifier(rm); - if (!ignoreUpdate && !virtual) - return this.updateModifiers(true, instant).then(() => resolve(success)); - } else if (modifier instanceof ConsumableModifier) { - if (playSound && !this.sound.get(soundName)) - this.playSound(soundName); + if (!ignoreUpdate && !virtual) + return this.updateModifiers(true, instant).then(() => resolve(success)); + } else if (modifier instanceof ConsumableModifier) { + if (playSound && !this.sound.get(soundName)) + this.playSound(soundName); - if (modifier instanceof ConsumablePokemonModifier) { - for (let p in this.party) { - const pokemon = this.party[p]; + if (modifier instanceof ConsumablePokemonModifier) { + for (const p in this.party) { + const pokemon = this.party[p]; - const args: any[] = [ pokemon ]; - if (modifier instanceof PokemonHpRestoreModifier) { - if (!(modifier as PokemonHpRestoreModifier).fainted) { - const hpRestoreMultiplier = new Utils.IntegerHolder(1); - this.applyModifiers(HealingBoosterModifier, true, hpRestoreMultiplier); - args.push(hpRestoreMultiplier.value); - } else - args.push(1); - } else if (modifier instanceof FusePokemonModifier) - args.push(this.getPokemonById(modifier.fusePokemonId) as PlayerPokemon); + const args: any[] = [ pokemon ]; + if (modifier instanceof PokemonHpRestoreModifier) { + if (!(modifier as PokemonHpRestoreModifier).fainted) { + const hpRestoreMultiplier = new Utils.IntegerHolder(1); + this.applyModifiers(HealingBoosterModifier, true, hpRestoreMultiplier); + args.push(hpRestoreMultiplier.value); + } else + args.push(1); + } else if (modifier instanceof FusePokemonModifier) + args.push(this.getPokemonById(modifier.fusePokemonId) as PlayerPokemon); - if (modifier.shouldApply(args)) { - const result = modifier.apply(args); - if (result instanceof Promise) - modifierPromises.push(result.then(s => success ||= s)); - else - success ||= result; - } - } + if (modifier.shouldApply(args)) { + const result = modifier.apply(args); + if (result instanceof Promise) + modifierPromises.push(result.then(s => success ||= s)); + else + success ||= result; + } + } - return Promise.allSettled([this.party.map(p => p.updateInfo(instant)), ...modifierPromises]).then(() => resolve(success)); - } else { - const args = [ this ]; - if (modifier.shouldApply(args)) { - const result = modifier.apply(args); - if (result instanceof Promise) { - return result.then(success => resolve(success)); - } else - success ||= result; - } - } - } + return Promise.allSettled([this.party.map(p => p.updateInfo(instant)), ...modifierPromises]).then(() => resolve(success)); + } else { + const args = [ this ]; + if (modifier.shouldApply(args)) { + const result = modifier.apply(args); + if (result instanceof Promise) { + return result.then(success => resolve(success)); + } else + success ||= result; + } + } + } - resolve(success); - }); - } + resolve(success); + }); + } - addEnemyModifier(modifier: PersistentModifier, ignoreUpdate?: boolean, instant?: boolean): Promise { - return new Promise(resolve => { - const modifiersToRemove: PersistentModifier[] = []; - if (modifier instanceof TerastallizeModifier) - modifiersToRemove.push(...(this.findModifiers(m => m instanceof TerastallizeModifier && m.pokemonId === modifier.pokemonId, false))); - if ((modifier as PersistentModifier).add(this.enemyModifiers, false, this)) { - if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier) - modifier.apply([ this.getPokemonById(modifier.pokemonId), true ]); - for (let rm of modifiersToRemove) - this.removeModifier(rm, true); - } - if (!ignoreUpdate) - this.updateModifiers(false, instant).then(() => resolve()); - else - resolve(); - }); - } + addEnemyModifier(modifier: PersistentModifier, ignoreUpdate?: boolean, instant?: boolean): Promise { + return new Promise(resolve => { + const modifiersToRemove: PersistentModifier[] = []; + if (modifier instanceof TerastallizeModifier) + modifiersToRemove.push(...(this.findModifiers(m => m instanceof TerastallizeModifier && m.pokemonId === modifier.pokemonId, false))); + if ((modifier as PersistentModifier).add(this.enemyModifiers, false, this)) { + if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier) + modifier.apply([ this.getPokemonById(modifier.pokemonId), true ]); + for (const rm of modifiersToRemove) + this.removeModifier(rm, true); + } + if (!ignoreUpdate) + this.updateModifiers(false, instant).then(() => resolve()); + else + resolve(); + }); + } - tryTransferHeldItemModifier(itemModifier: PokemonHeldItemModifier, target: Pokemon, transferStack: boolean, playSound: boolean, instant?: boolean, ignoreUpdate?: boolean): Promise { - return new Promise(resolve => { - const source = itemModifier.pokemonId ? itemModifier.getPokemon(target.scene) : null; - const cancelled = new Utils.BooleanHolder(false); - Utils.executeIf(source && source.isPlayer() !== target.isPlayer(), () => applyAbAttrs(BlockItemTheftAbAttr, source, cancelled)).then(() => { - if (cancelled.value) - return resolve(false); - const newItemModifier = itemModifier.clone() as PokemonHeldItemModifier; - newItemModifier.pokemonId = target.id; - const matchingModifier = target.scene.findModifier(m => m instanceof PokemonHeldItemModifier + tryTransferHeldItemModifier(itemModifier: PokemonHeldItemModifier, target: Pokemon, transferStack: boolean, playSound: boolean, instant?: boolean, ignoreUpdate?: boolean): Promise { + return new Promise(resolve => { + const source = itemModifier.pokemonId ? itemModifier.getPokemon(target.scene) : null; + const cancelled = new Utils.BooleanHolder(false); + Utils.executeIf(source && source.isPlayer() !== target.isPlayer(), () => applyAbAttrs(BlockItemTheftAbAttr, source, cancelled)).then(() => { + if (cancelled.value) + return resolve(false); + const newItemModifier = itemModifier.clone() as PokemonHeldItemModifier; + newItemModifier.pokemonId = target.id; + const matchingModifier = target.scene.findModifier(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).matchType(itemModifier) && m.pokemonId === target.id, target.isPlayer()) as PokemonHeldItemModifier; - let removeOld = true; - if (matchingModifier) { - const maxStackCount = matchingModifier.getMaxStackCount(target.scene); - if (matchingModifier.stackCount >= maxStackCount) - return resolve(false); - const countTaken = transferStack ? Math.min(itemModifier.stackCount, maxStackCount - matchingModifier.stackCount) : 1; - itemModifier.stackCount -= countTaken; - newItemModifier.stackCount = matchingModifier.stackCount + countTaken; - removeOld = !itemModifier.stackCount; - } else if (!transferStack) { - newItemModifier.stackCount = 1; - removeOld = !(--itemModifier.stackCount); - } - if (!removeOld || !source || this.removeModifier(itemModifier, !source.isPlayer())) { - const addModifier = () => { - if (!matchingModifier || this.removeModifier(matchingModifier, !target.isPlayer())) { - if (target.isPlayer()) - this.addModifier(newItemModifier, ignoreUpdate, playSound, false, instant).then(() => resolve(true)); - else - this.addEnemyModifier(newItemModifier, ignoreUpdate, instant).then(() => resolve(true)); - } else - resolve(false); - }; - if (source && source.isPlayer() !== target.isPlayer() && !ignoreUpdate) - this.updateModifiers(source.isPlayer(), instant).then(() => addModifier()); - else - addModifier(); - return; - } - resolve(false); - }); - }); - } + let removeOld = true; + if (matchingModifier) { + const maxStackCount = matchingModifier.getMaxStackCount(target.scene); + if (matchingModifier.stackCount >= maxStackCount) + return resolve(false); + const countTaken = transferStack ? Math.min(itemModifier.stackCount, maxStackCount - matchingModifier.stackCount) : 1; + itemModifier.stackCount -= countTaken; + newItemModifier.stackCount = matchingModifier.stackCount + countTaken; + removeOld = !itemModifier.stackCount; + } else if (!transferStack) { + newItemModifier.stackCount = 1; + removeOld = !(--itemModifier.stackCount); + } + if (!removeOld || !source || this.removeModifier(itemModifier, !source.isPlayer())) { + const addModifier = () => { + if (!matchingModifier || this.removeModifier(matchingModifier, !target.isPlayer())) { + if (target.isPlayer()) + this.addModifier(newItemModifier, ignoreUpdate, playSound, false, instant).then(() => resolve(true)); + else + this.addEnemyModifier(newItemModifier, ignoreUpdate, instant).then(() => resolve(true)); + } else + resolve(false); + }; + if (source && source.isPlayer() !== target.isPlayer() && !ignoreUpdate) + this.updateModifiers(source.isPlayer(), instant).then(() => addModifier()); + else + addModifier(); + return; + } + resolve(false); + }); + }); + } - removePartyMemberModifiers(partyMemberIndex: integer): Promise { - return new Promise(resolve => { - const pokemonId = this.getParty()[partyMemberIndex].id; - const modifiersToRemove = this.modifiers.filter(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === pokemonId); - for (let m of modifiersToRemove) - this.modifiers.splice(this.modifiers.indexOf(m), 1); - this.updateModifiers().then(() => resolve()); - }); - } + removePartyMemberModifiers(partyMemberIndex: integer): Promise { + return new Promise(resolve => { + const pokemonId = this.getParty()[partyMemberIndex].id; + const modifiersToRemove = this.modifiers.filter(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === pokemonId); + for (const m of modifiersToRemove) + this.modifiers.splice(this.modifiers.indexOf(m), 1); + this.updateModifiers().then(() => resolve()); + }); + } - generateEnemyModifiers(): Promise { - return new Promise(resolve => { - if (this.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) - return resolve(); - const difficultyWaveIndex = this.gameMode.getWaveForDifficulty(this.currentBattle.waveIndex); - const isFinalBoss = this.gameMode.isWaveFinal(this.currentBattle.waveIndex); - let chances = Math.ceil(difficultyWaveIndex / 10); - if (isFinalBoss) - chances = Math.ceil(chances * 2.5); + generateEnemyModifiers(): Promise { + return new Promise(resolve => { + if (this.currentBattle.battleSpec === BattleSpec.FINAL_BOSS) + return resolve(); + const difficultyWaveIndex = this.gameMode.getWaveForDifficulty(this.currentBattle.waveIndex); + const isFinalBoss = this.gameMode.isWaveFinal(this.currentBattle.waveIndex); + let chances = Math.ceil(difficultyWaveIndex / 10); + if (isFinalBoss) + chances = Math.ceil(chances * 2.5); - const party = this.getEnemyParty(); + const party = this.getEnemyParty(); - if (this.currentBattle.trainer) { - const modifiers = this.currentBattle.trainer.genModifiers(party); - for (let modifier of modifiers) - this.addEnemyModifier(modifier, true, true); - } + if (this.currentBattle.trainer) { + const modifiers = this.currentBattle.trainer.genModifiers(party); + for (const modifier of modifiers) + this.addEnemyModifier(modifier, true, true); + } - party.forEach((enemyPokemon: EnemyPokemon, i: integer) => { - const isBoss = enemyPokemon.isBoss() || (this.currentBattle.battleType === BattleType.TRAINER && this.currentBattle.trainer.config.isBoss); - let upgradeChance = 32; - if (isBoss) - upgradeChance /= 2; - if (isFinalBoss) - upgradeChance /= 8; - const modifierChance = this.gameMode.getEnemyModifierChance(isBoss); - let pokemonModifierChance = modifierChance; - if (this.currentBattle.battleType === BattleType.TRAINER) - pokemonModifierChance = Math.ceil(pokemonModifierChance * this.currentBattle.trainer.getPartyMemberModifierChanceMultiplier(i)); - let count = 0; - for (let c = 0; c < chances; c++) { - if (!Utils.randSeedInt(modifierChance)) - count++; - } - if (isBoss) - count = Math.max(count, Math.floor(chances / 2)); - getEnemyModifierTypesForWave(difficultyWaveIndex, count, [ enemyPokemon ], this.currentBattle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD, upgradeChance) - .map(mt => mt.newModifier(enemyPokemon).add(this.enemyModifiers, false, this)); - }); + party.forEach((enemyPokemon: EnemyPokemon, i: integer) => { + const isBoss = enemyPokemon.isBoss() || (this.currentBattle.battleType === BattleType.TRAINER && this.currentBattle.trainer.config.isBoss); + let upgradeChance = 32; + if (isBoss) + upgradeChance /= 2; + if (isFinalBoss) + upgradeChance /= 8; + const modifierChance = this.gameMode.getEnemyModifierChance(isBoss); + let pokemonModifierChance = modifierChance; + if (this.currentBattle.battleType === BattleType.TRAINER) + pokemonModifierChance = Math.ceil(pokemonModifierChance * this.currentBattle.trainer.getPartyMemberModifierChanceMultiplier(i)); + let count = 0; + for (let c = 0; c < chances; c++) { + if (!Utils.randSeedInt(modifierChance)) + count++; + } + if (isBoss) + count = Math.max(count, Math.floor(chances / 2)); + getEnemyModifierTypesForWave(difficultyWaveIndex, count, [ enemyPokemon ], this.currentBattle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD, upgradeChance) + .map(mt => mt.newModifier(enemyPokemon).add(this.enemyModifiers, false, this)); + }); - this.updateModifiers(false).then(() => resolve()); - }); - } + this.updateModifiers(false).then(() => resolve()); + }); + } - /** + /** * Removes all modifiers from enemy of PersistentModifier type */ - clearEnemyModifiers(): void { - const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PersistentModifier); - for (let m of modifiersToRemove) - this.enemyModifiers.splice(this.enemyModifiers.indexOf(m), 1); - this.updateModifiers(false).then(() => this.updateUIPositions()); - } + clearEnemyModifiers(): void { + const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PersistentModifier); + for (const m of modifiersToRemove) + this.enemyModifiers.splice(this.enemyModifiers.indexOf(m), 1); + this.updateModifiers(false).then(() => this.updateUIPositions()); + } - /** + /** * Removes all modifiers from enemy of PokemonHeldItemModifier type */ - clearEnemyHeldItemModifiers(): void { - const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PokemonHeldItemModifier); - for (let m of modifiersToRemove) - this.enemyModifiers.splice(this.enemyModifiers.indexOf(m), 1); - this.updateModifiers(false).then(() => this.updateUIPositions()); - } + clearEnemyHeldItemModifiers(): void { + const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PokemonHeldItemModifier); + for (const m of modifiersToRemove) + this.enemyModifiers.splice(this.enemyModifiers.indexOf(m), 1); + this.updateModifiers(false).then(() => this.updateUIPositions()); + } - setModifiersVisible(visible: boolean) { - [ this.modifierBar, this.enemyModifierBar ].map(m => m.setVisible(visible)); - } + setModifiersVisible(visible: boolean) { + [ this.modifierBar, this.enemyModifierBar ].map(m => m.setVisible(visible)); + } - updateModifiers(player?: boolean, instant?: boolean): Promise { - if (player === undefined) - player = true; - return new Promise(resolve => { - const modifiers = player ? this.modifiers : this.enemyModifiers as PersistentModifier[]; - for (let m = 0; m < modifiers.length; m++) { - const modifier = modifiers[m]; - if (modifier instanceof PokemonHeldItemModifier && !this.getPokemonById((modifier as PokemonHeldItemModifier).pokemonId)) - modifiers.splice(m--, 1); - } - for (let modifier of modifiers) { - if (modifier instanceof PersistentModifier) - (modifier as PersistentModifier).virtualStackCount = 0; - } + updateModifiers(player?: boolean, instant?: boolean): Promise { + if (player === undefined) + player = true; + return new Promise(resolve => { + const modifiers = player ? this.modifiers : this.enemyModifiers as PersistentModifier[]; + for (let m = 0; m < modifiers.length; m++) { + const modifier = modifiers[m]; + if (modifier instanceof PokemonHeldItemModifier && !this.getPokemonById((modifier as PokemonHeldItemModifier).pokemonId)) + modifiers.splice(m--, 1); + } + for (const modifier of modifiers) { + if (modifier instanceof PersistentModifier) + (modifier as PersistentModifier).virtualStackCount = 0; + } - const modifiersClone = modifiers.slice(0); - for (let modifier of modifiersClone) { - if (!modifier.getStackCount()) - modifiers.splice(modifiers.indexOf(modifier), 1); - } + const modifiersClone = modifiers.slice(0); + for (const modifier of modifiersClone) { + if (!modifier.getStackCount()) + modifiers.splice(modifiers.indexOf(modifier), 1); + } - this.updatePartyForModifiers(player ? this.getParty() : this.getEnemyParty(), instant).then(() => { - (player ? this.modifierBar : this.enemyModifierBar).updateModifiers(modifiers); - if (!player) - this.updateUIPositions(); - resolve(); - }); - }); - } + this.updatePartyForModifiers(player ? this.getParty() : this.getEnemyParty(), instant).then(() => { + (player ? this.modifierBar : this.enemyModifierBar).updateModifiers(modifiers); + if (!player) + this.updateUIPositions(); + resolve(); + }); + }); + } - updatePartyForModifiers(party: Pokemon[], instant?: boolean): Promise { - return new Promise(resolve => { - Promise.allSettled(party.map(p => { - if (p.scene) - p.calculateStats(); - return p.updateInfo(instant); - })).then(() => resolve()); - }); - } + updatePartyForModifiers(party: Pokemon[], instant?: boolean): Promise { + return new Promise(resolve => { + Promise.allSettled(party.map(p => { + if (p.scene) + p.calculateStats(); + return p.updateInfo(instant); + })).then(() => resolve()); + }); + } - removeModifier(modifier: PersistentModifier, enemy?: boolean): boolean { - const modifiers = !enemy ? this.modifiers : this.enemyModifiers; - const modifierIndex = modifiers.indexOf(modifier); - if (modifierIndex > -1) { - modifiers.splice(modifierIndex, 1); - if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier) - modifier.apply([ this.getPokemonById(modifier.pokemonId), false ]); - return true; - } + removeModifier(modifier: PersistentModifier, enemy?: boolean): boolean { + const modifiers = !enemy ? this.modifiers : this.enemyModifiers; + const modifierIndex = modifiers.indexOf(modifier); + if (modifierIndex > -1) { + modifiers.splice(modifierIndex, 1); + if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier) + modifier.apply([ this.getPokemonById(modifier.pokemonId), false ]); + return true; + } - return false; - } + return false; + } - getModifiers(modifierType: { new(...args: any[]): Modifier }, player: boolean = true): PersistentModifier[] { - return (player ? this.modifiers : this.enemyModifiers).filter(m => m instanceof modifierType); - } + getModifiers(modifierType: { new(...args: any[]): Modifier }, player: boolean = true): PersistentModifier[] { + return (player ? this.modifiers : this.enemyModifiers).filter(m => m instanceof modifierType); + } - findModifiers(modifierFilter: ModifierPredicate, player: boolean = true): PersistentModifier[] { - return (player ? this.modifiers : this.enemyModifiers).filter(m => (modifierFilter as ModifierPredicate)(m)); - } + findModifiers(modifierFilter: ModifierPredicate, player: boolean = true): PersistentModifier[] { + return (player ? this.modifiers : this.enemyModifiers).filter(m => (modifierFilter as ModifierPredicate)(m)); + } - findModifier(modifierFilter: ModifierPredicate, player: boolean = true): PersistentModifier { - return (player ? this.modifiers : this.enemyModifiers).find(m => (modifierFilter as ModifierPredicate)(m)); - } + findModifier(modifierFilter: ModifierPredicate, player: boolean = true): PersistentModifier { + return (player ? this.modifiers : this.enemyModifiers).find(m => (modifierFilter as ModifierPredicate)(m)); + } - applyShuffledModifiers(scene: BattleScene, modifierType: { new(...args: any[]): Modifier }, player: boolean = true, ...args: any[]): PersistentModifier[] { - let modifiers = (player ? this.modifiers : this.enemyModifiers).filter(m => m instanceof modifierType && m.shouldApply(args)); - scene.executeWithSeedOffset(() => { - const shuffleModifiers = mods => { - if (mods.length < 1) - return mods; - const rand = Math.floor(Utils.randSeedInt(mods.length)); - return [mods[rand], ...shuffleModifiers(mods.filter((_, i) => i !== rand))]; - }; - modifiers = shuffleModifiers(modifiers); - }, scene.currentBattle.turn << 4, scene.waveSeed); - return this.applyModifiersInternal(modifiers, player, args); - } + applyShuffledModifiers(scene: BattleScene, modifierType: { new(...args: any[]): Modifier }, player: boolean = true, ...args: any[]): PersistentModifier[] { + let modifiers = (player ? this.modifiers : this.enemyModifiers).filter(m => m instanceof modifierType && m.shouldApply(args)); + scene.executeWithSeedOffset(() => { + const shuffleModifiers = mods => { + if (mods.length < 1) + return mods; + const rand = Math.floor(Utils.randSeedInt(mods.length)); + return [mods[rand], ...shuffleModifiers(mods.filter((_, i) => i !== rand))]; + }; + modifiers = shuffleModifiers(modifiers); + }, scene.currentBattle.turn << 4, scene.waveSeed); + return this.applyModifiersInternal(modifiers, player, args); + } - applyModifiers(modifierType: { new(...args: any[]): Modifier }, player: boolean = true, ...args: any[]): PersistentModifier[] { - const modifiers = (player ? this.modifiers : this.enemyModifiers).filter(m => m instanceof modifierType && m.shouldApply(args)); - return this.applyModifiersInternal(modifiers, player, args); - } + applyModifiers(modifierType: { new(...args: any[]): Modifier }, player: boolean = true, ...args: any[]): PersistentModifier[] { + const modifiers = (player ? this.modifiers : this.enemyModifiers).filter(m => m instanceof modifierType && m.shouldApply(args)); + return this.applyModifiersInternal(modifiers, player, args); + } - applyModifiersInternal(modifiers: PersistentModifier[], player: boolean, args: any[]): PersistentModifier[] { - const appliedModifiers: PersistentModifier[] = []; - for (let modifier of modifiers) { - if (modifier.apply(args)) { - console.log('Applied', modifier.type.name, !player ? '(enemy)' : ''); - appliedModifiers.push(modifier); - } - } + applyModifiersInternal(modifiers: PersistentModifier[], player: boolean, args: any[]): PersistentModifier[] { + const appliedModifiers: PersistentModifier[] = []; + for (const modifier of modifiers) { + if (modifier.apply(args)) { + console.log('Applied', modifier.type.name, !player ? '(enemy)' : ''); + appliedModifiers.push(modifier); + } + } - return appliedModifiers; - } + return appliedModifiers; + } - applyModifier(modifierType: { new(...args: any[]): Modifier }, player: boolean = true, ...args: any[]): PersistentModifier { - const modifiers = (player ? this.modifiers : this.enemyModifiers).filter(m => m instanceof modifierType && m.shouldApply(args)); - for (let modifier of modifiers) { - if (modifier.apply(args)) { - console.log('Applied', modifier.type.name, !player ? '(enemy)' : ''); - return modifier; - } - } + applyModifier(modifierType: { new(...args: any[]): Modifier }, player: boolean = true, ...args: any[]): PersistentModifier { + const modifiers = (player ? this.modifiers : this.enemyModifiers).filter(m => m instanceof modifierType && m.shouldApply(args)); + for (const modifier of modifiers) { + if (modifier.apply(args)) { + console.log('Applied', modifier.type.name, !player ? '(enemy)' : ''); + return modifier; + } + } - return null; - } + return null; + } - triggerPokemonFormChange(pokemon: Pokemon, formChangeTriggerType: { new(...args: any[]): SpeciesFormChangeTrigger }, delayed: boolean = false, modal: boolean = false): boolean { - if (pokemonFormChanges.hasOwnProperty(pokemon.species.speciesId)) { - const matchingFormChange = pokemonFormChanges[pokemon.species.speciesId].find(fc => fc.findTrigger(formChangeTriggerType) && fc.canChange(pokemon)); - if (matchingFormChange) { - let phase: Phase; - if (pokemon instanceof PlayerPokemon && !matchingFormChange.quiet) - phase = new FormChangePhase(this, pokemon, matchingFormChange, modal); - else - phase = new QuietFormChangePhase(this, pokemon, matchingFormChange); - if (pokemon instanceof PlayerPokemon && !matchingFormChange.quiet && modal) - this.overridePhase(phase); - else if (delayed) - this.pushPhase(phase); - else - this.unshiftPhase(phase); - return true; - } - } + triggerPokemonFormChange(pokemon: Pokemon, formChangeTriggerType: { new(...args: any[]): SpeciesFormChangeTrigger }, delayed: boolean = false, modal: boolean = false): boolean { + if (pokemonFormChanges.hasOwnProperty(pokemon.species.speciesId)) { + const matchingFormChange = pokemonFormChanges[pokemon.species.speciesId].find(fc => fc.findTrigger(formChangeTriggerType) && fc.canChange(pokemon)); + if (matchingFormChange) { + let phase: Phase; + if (pokemon instanceof PlayerPokemon && !matchingFormChange.quiet) + phase = new FormChangePhase(this, pokemon, matchingFormChange, modal); + else + phase = new QuietFormChangePhase(this, pokemon, matchingFormChange); + if (pokemon instanceof PlayerPokemon && !matchingFormChange.quiet && modal) + this.overridePhase(phase); + else if (delayed) + this.pushPhase(phase); + else + this.unshiftPhase(phase); + return true; + } + } - return false; - } + return false; + } - validateAchvs(achvType: { new(...args: any[]): Achv }, ...args: any[]): void { - const filteredAchvs = Object.values(achvs).filter(a => a instanceof achvType); - for (let achv of filteredAchvs) - this.validateAchv(achv, args); - } + validateAchvs(achvType: { new(...args: any[]): Achv }, ...args: any[]): void { + const filteredAchvs = Object.values(achvs).filter(a => a instanceof achvType); + for (const achv of filteredAchvs) + this.validateAchv(achv, args); + } - validateAchv(achv: Achv, args?: any[]): boolean { - if (!this.gameData.achvUnlocks.hasOwnProperty(achv.id) && achv.validate(this, args)) { - this.gameData.achvUnlocks[achv.id] = new Date().getTime(); - this.ui.achvBar.showAchv(achv); - if (vouchers.hasOwnProperty(achv.id)) - this.validateVoucher(vouchers[achv.id]); - return true; - } + validateAchv(achv: Achv, args?: any[]): boolean { + if (!this.gameData.achvUnlocks.hasOwnProperty(achv.id) && achv.validate(this, args)) { + this.gameData.achvUnlocks[achv.id] = new Date().getTime(); + this.ui.achvBar.showAchv(achv); + if (vouchers.hasOwnProperty(achv.id)) + this.validateVoucher(vouchers[achv.id]); + return true; + } - return false; - } + return false; + } - validateVoucher(voucher: Voucher, args?: any[]): boolean { - if (!this.gameData.voucherUnlocks.hasOwnProperty(voucher.id) && voucher.validate(this, args)) { - this.gameData.voucherUnlocks[voucher.id] = new Date().getTime(); - this.ui.achvBar.showAchv(voucher); - this.gameData.voucherCounts[voucher.voucherType]++; - return true; - } + validateVoucher(voucher: Voucher, args?: any[]): boolean { + if (!this.gameData.voucherUnlocks.hasOwnProperty(voucher.id) && voucher.validate(this, args)) { + this.gameData.voucherUnlocks[voucher.id] = new Date().getTime(); + this.ui.achvBar.showAchv(voucher); + this.gameData.voucherCounts[voucher.voucherType]++; + return true; + } - return false; - } + return false; + } - updateGameInfo(): void { - const gameInfo = { - playTime: this.sessionPlayTime ? this.sessionPlayTime : 0, - gameMode: this.currentBattle ? this.gameMode.getName() : 'Title', - biome: this.currentBattle ? getBiomeName(this.arena.biomeType) : '', - wave: this.currentBattle?.waveIndex || 0, - party: this.party ? this.party.map(p => { - return { name: p.name, level: p.level }; - }) : [] - }; - (window as any).gameInfo = gameInfo; - } -} \ No newline at end of file + updateGameInfo(): void { + const gameInfo = { + playTime: this.sessionPlayTime ? this.sessionPlayTime : 0, + gameMode: this.currentBattle ? this.gameMode.getName() : 'Title', + biome: this.currentBattle ? getBiomeName(this.arena.biomeType) : '', + wave: this.currentBattle?.waveIndex || 0, + party: this.party ? this.party.map(p => { + return { name: p.name, level: p.level }; + }) : [] + }; + (window as any).gameInfo = gameInfo; + } +} diff --git a/src/battle.ts b/src/battle.ts index 601cbeb9cb6..b66159cf9cc 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -1,17 +1,17 @@ -import BattleScene from "./battle-scene"; -import { EnemyPokemon, PlayerPokemon, QueuedMove } from "./field/pokemon"; -import { Command } from "./ui/command-ui-handler"; -import * as Utils from "./utils"; -import Trainer, { TrainerVariant } from "./field/trainer"; -import { Species } from "./data/enums/species"; -import { Moves } from "./data/enums/moves"; -import { TrainerType } from "./data/enums/trainer-type"; -import { GameMode } from "./game-mode"; -import { BattleSpec } from "./enums/battle-spec"; -import { PlayerGender } from "./system/game-data"; -import { MoneyMultiplierModifier, PokemonHeldItemModifier } from "./modifier/modifier"; -import { MoneyAchv } from "./system/achv"; -import { PokeballType } from "./data/pokeball"; +import BattleScene from './battle-scene'; +import { EnemyPokemon, PlayerPokemon, QueuedMove } from './field/pokemon'; +import { Command } from './ui/command-ui-handler'; +import * as Utils from './utils'; +import Trainer, { TrainerVariant } from './field/trainer'; +import { Species } from './data/enums/species'; +import { Moves } from './data/enums/moves'; +import { TrainerType } from './data/enums/trainer-type'; +import { GameMode } from './game-mode'; +import { BattleSpec } from './enums/battle-spec'; +import { PlayerGender } from './system/game-data'; +import { MoneyMultiplierModifier, PokemonHeldItemModifier } from './modifier/modifier'; +import { MoneyAchv } from './system/achv'; +import { PokeballType } from './data/pokeball'; export enum BattleType { WILD, @@ -34,270 +34,270 @@ export interface TurnCommand { targets?: BattlerIndex[]; skip?: boolean; args?: any[]; -}; +} interface TurnCommands { [key: integer]: TurnCommand } export default class Battle { - protected gameMode: GameMode; - public waveIndex: integer; - public battleType: BattleType; - public battleSpec: BattleSpec; - public trainer: Trainer; - public enemyLevels: integer[]; - public enemyParty: EnemyPokemon[]; - public seenEnemyPartyMemberIds: Set; - public double: boolean; - public started: boolean; - public enemySwitchCounter: integer; - public turn: integer; - public turnCommands: TurnCommands; - public playerParticipantIds: Set; - public battleScore: integer; - public postBattleLoot: PokemonHeldItemModifier[]; - public escapeAttempts: integer; - public lastMove: Moves; - public battleSeed: string; - private battleSeedState: string; - public moneyScattered: number; - public lastUsedPokeball: PokeballType; + protected gameMode: GameMode; + public waveIndex: integer; + public battleType: BattleType; + public battleSpec: BattleSpec; + public trainer: Trainer; + public enemyLevels: integer[]; + public enemyParty: EnemyPokemon[]; + public seenEnemyPartyMemberIds: Set; + public double: boolean; + public started: boolean; + public enemySwitchCounter: integer; + public turn: integer; + public turnCommands: TurnCommands; + public playerParticipantIds: Set; + public battleScore: integer; + public postBattleLoot: PokemonHeldItemModifier[]; + public escapeAttempts: integer; + public lastMove: Moves; + public battleSeed: string; + private battleSeedState: string; + public moneyScattered: number; + public lastUsedPokeball: PokeballType; - private rngCounter: integer = 0; + private rngCounter: integer = 0; - constructor(gameMode: GameMode, waveIndex: integer, battleType: BattleType, trainer: Trainer, double: boolean) { - this.gameMode = gameMode; - this.waveIndex = waveIndex; - this.battleType = battleType; - this.trainer = trainer; - this.initBattleSpec(); - this.enemyLevels = battleType !== BattleType.TRAINER - ? new Array(double ? 2 : 1).fill(null).map(() => this.getLevelForWave()) - : trainer.getPartyLevels(this.waveIndex); - this.enemyParty = []; - this.seenEnemyPartyMemberIds = new Set(); - this.double = double; - this.enemySwitchCounter = 0; - this.turn = 0; - this.playerParticipantIds = new Set(); - this.battleScore = 0; - this.postBattleLoot = []; - this.escapeAttempts = 0; - this.started = false; - this.battleSeed = Utils.randomString(16, true); - this.battleSeedState = null; - this.moneyScattered = 0; - this.lastUsedPokeball = null; + constructor(gameMode: GameMode, waveIndex: integer, battleType: BattleType, trainer: Trainer, double: boolean) { + this.gameMode = gameMode; + this.waveIndex = waveIndex; + this.battleType = battleType; + this.trainer = trainer; + this.initBattleSpec(); + this.enemyLevels = battleType !== BattleType.TRAINER + ? new Array(double ? 2 : 1).fill(null).map(() => this.getLevelForWave()) + : trainer.getPartyLevels(this.waveIndex); + this.enemyParty = []; + this.seenEnemyPartyMemberIds = new Set(); + this.double = double; + this.enemySwitchCounter = 0; + this.turn = 0; + this.playerParticipantIds = new Set(); + this.battleScore = 0; + this.postBattleLoot = []; + this.escapeAttempts = 0; + this.started = false; + this.battleSeed = Utils.randomString(16, true); + this.battleSeedState = null; + this.moneyScattered = 0; + this.lastUsedPokeball = null; + } + + private initBattleSpec(): void { + let spec = BattleSpec.DEFAULT; + if (this.gameMode.isClassic) { + if (this.waveIndex === 200) + spec = BattleSpec.FINAL_BOSS; + } + this.battleSpec = spec; + } + + private getLevelForWave(): integer { + const levelWaveIndex = this.gameMode.getWaveForDifficulty(this.waveIndex); + const baseLevel = 1 + levelWaveIndex / 2 + Math.pow(levelWaveIndex / 25, 2); + const bossMultiplier = 1.2; + + if (!(this.waveIndex % 10)) { + const ret = Math.floor(baseLevel * bossMultiplier); + if (this.battleSpec === BattleSpec.FINAL_BOSS || !(this.waveIndex % 250)) + return Math.ceil(ret / 25) * 25; + let levelOffset = 0; + if (!this.gameMode.isWaveFinal(this.waveIndex)) + levelOffset = Math.round(Phaser.Math.RND.realInRange(-1, 1) * Math.floor(levelWaveIndex / 10)); + return ret + levelOffset; } - private initBattleSpec(): void { - let spec = BattleSpec.DEFAULT; - if (this.gameMode.isClassic) { - if (this.waveIndex === 200) - spec = BattleSpec.FINAL_BOSS; - } - this.battleSpec = spec; - } - - private getLevelForWave(): integer { - let levelWaveIndex = this.gameMode.getWaveForDifficulty(this.waveIndex); - let baseLevel = 1 + levelWaveIndex / 2 + Math.pow(levelWaveIndex / 25, 2); - const bossMultiplier = 1.2; - - if (!(this.waveIndex % 10)) { - const ret = Math.floor(baseLevel * bossMultiplier); - if (this.battleSpec === BattleSpec.FINAL_BOSS || !(this.waveIndex % 250)) - return Math.ceil(ret / 25) * 25; - let levelOffset = 0; - if (!this.gameMode.isWaveFinal(this.waveIndex)) - levelOffset = Math.round(Phaser.Math.RND.realInRange(-1, 1) * Math.floor(levelWaveIndex / 10)); - return ret + levelOffset; - } - - let levelOffset = 0; + let levelOffset = 0; - const deviation = 10 / levelWaveIndex; - levelOffset = Math.abs(this.randSeedGaussForLevel(deviation)); + const deviation = 10 / levelWaveIndex; + levelOffset = Math.abs(this.randSeedGaussForLevel(deviation)); - return Math.max(Math.round(baseLevel + levelOffset), 1); - } + return Math.max(Math.round(baseLevel + levelOffset), 1); + } - randSeedGaussForLevel(value: number): number { - let rand = 0; - for (let i = value; i > 0; i--) - rand += Phaser.Math.RND.realInRange(0, 1); - return rand / value; - } + randSeedGaussForLevel(value: number): number { + let rand = 0; + for (let i = value; i > 0; i--) + rand += Phaser.Math.RND.realInRange(0, 1); + return rand / value; + } - getBattlerCount(): integer { - return this.double ? 2 : 1; - } + getBattlerCount(): integer { + return this.double ? 2 : 1; + } - incrementTurn(scene: BattleScene): void { - this.turn++; - this.turnCommands = Object.fromEntries(Utils.getEnumValues(BattlerIndex).map(bt => [ bt, null ])); - this.battleSeedState = null; - } + incrementTurn(scene: BattleScene): void { + this.turn++; + this.turnCommands = Object.fromEntries(Utils.getEnumValues(BattlerIndex).map(bt => [ bt, null ])); + this.battleSeedState = null; + } - addParticipant(playerPokemon: PlayerPokemon): void { - this.playerParticipantIds.add(playerPokemon.id); - } + addParticipant(playerPokemon: PlayerPokemon): void { + this.playerParticipantIds.add(playerPokemon.id); + } - removeFaintedParticipant(playerPokemon: PlayerPokemon): void { - this.playerParticipantIds.delete(playerPokemon.id); - } + removeFaintedParticipant(playerPokemon: PlayerPokemon): void { + this.playerParticipantIds.delete(playerPokemon.id); + } - addPostBattleLoot(enemyPokemon: EnemyPokemon): void { - this.postBattleLoot.push(...enemyPokemon.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === enemyPokemon.id && m.getTransferrable(false), false).map(i => { - const ret = i as PokemonHeldItemModifier; - ret.pokemonId = null; - return ret; - })); - } + addPostBattleLoot(enemyPokemon: EnemyPokemon): void { + this.postBattleLoot.push(...enemyPokemon.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && m.pokemonId === enemyPokemon.id && m.getTransferrable(false), false).map(i => { + const ret = i as PokemonHeldItemModifier; + ret.pokemonId = null; + return ret; + })); + } - pickUpScatteredMoney(scene: BattleScene): void { - const moneyAmount = new Utils.IntegerHolder(scene.currentBattle.moneyScattered); - scene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); + pickUpScatteredMoney(scene: BattleScene): void { + const moneyAmount = new Utils.IntegerHolder(scene.currentBattle.moneyScattered); + scene.applyModifiers(MoneyMultiplierModifier, true, moneyAmount); - scene.addMoney(moneyAmount.value); + scene.addMoney(moneyAmount.value); - scene.queueMessage(`You picked up ₽${moneyAmount.value.toLocaleString('en-US')}!`, null, true); + scene.queueMessage(`You picked up ₽${moneyAmount.value.toLocaleString('en-US')}!`, null, true); - scene.currentBattle.moneyScattered = 0; + scene.currentBattle.moneyScattered = 0; + } + + addBattleScore(scene: BattleScene): void { + let partyMemberTurnMultiplier = scene.getEnemyParty().length / 2 + 0.5; + if (this.double) + partyMemberTurnMultiplier /= 1.5; + for (const p of scene.getEnemyParty()) { + if (p.isBoss()) + partyMemberTurnMultiplier *= (p.bossSegments / 1.5) / scene.getEnemyParty().length; + } + const turnMultiplier = Phaser.Tweens.Builders.GetEaseFunction('Sine.easeIn')(1 - Math.min(this.turn - 2, 10 * partyMemberTurnMultiplier) / (10 * partyMemberTurnMultiplier)); + const finalBattleScore = Math.ceil(this.battleScore * turnMultiplier); + scene.score += finalBattleScore; + console.log(`Battle Score: ${finalBattleScore} (${this.turn - 1} Turns x${Math.floor(turnMultiplier * 100) / 100})`); + console.log(`Total Score: ${scene.score}`); + scene.updateScoreText(); + } + + getBgmOverride(scene: BattleScene): string { + const battlers = this.enemyParty.slice(0, this.getBattlerCount()); + if (this.battleType === BattleType.TRAINER) { + if (!this.started && this.trainer.config.encounterBgm && this.trainer.getEncounterMessages()?.length) + return `encounter_${this.trainer.getEncounterBgm()}`; + return this.trainer.getBattleBgm(); + } else if (this.gameMode.isClassic && this.waveIndex > 195 && this.battleSpec !== BattleSpec.FINAL_BOSS) + return 'end_summit'; + for (const pokemon of battlers) { + if (this.battleSpec === BattleSpec.FINAL_BOSS) { + if (pokemon.formIndex) + return 'battle_final'; + return 'battle_final_encounter'; + } + if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) { + if (pokemon.species.speciesId === Species.REGIROCK || pokemon.species.speciesId === Species.REGICE || pokemon.species.speciesId === Species.REGISTEEL || pokemon.species.speciesId === Species.REGIGIGAS || pokemon.species.speciesId === Species.REGIELEKI || pokemon.species.speciesId === Species.REGIDRAGO) + return 'battle_legendary_regis'; + if (pokemon.species.speciesId === Species.COBALION || pokemon.species.speciesId === Species.TERRAKION || pokemon.species.speciesId === Species.VIRIZION || pokemon.species.speciesId === Species.TORNADUS || pokemon.species.speciesId === Species.THUNDURUS || pokemon.species.speciesId === Species.LANDORUS || pokemon.species.speciesId === Species.KELDEO || pokemon.species.speciesId === Species.MELOETTA || pokemon.species.speciesId === Species.GENESECT) + return 'battle_legendary_unova'; + if (pokemon.species.speciesId === Species.RESHIRAM || pokemon.species.speciesId === Species.ZEKROM) + return 'battle_legendary_res_zek'; + if (pokemon.species.speciesId === Species.KYUREM) + return 'battle_legendary_kyurem'; + if (pokemon.species.legendary) + return 'battle_legendary_res_zek'; + return 'battle_legendary_unova'; + } } - addBattleScore(scene: BattleScene): void { - let partyMemberTurnMultiplier = scene.getEnemyParty().length / 2 + 0.5; - if (this.double) - partyMemberTurnMultiplier /= 1.5; - for (let p of scene.getEnemyParty()) { - if (p.isBoss()) - partyMemberTurnMultiplier *= (p.bossSegments / 1.5) / scene.getEnemyParty().length; - } - const turnMultiplier = Phaser.Tweens.Builders.GetEaseFunction('Sine.easeIn')(1 - Math.min(this.turn - 2, 10 * partyMemberTurnMultiplier) / (10 * partyMemberTurnMultiplier)); - const finalBattleScore = Math.ceil(this.battleScore * turnMultiplier); - scene.score += finalBattleScore; - console.log(`Battle Score: ${finalBattleScore} (${this.turn - 1} Turns x${Math.floor(turnMultiplier * 100) / 100})`); - console.log(`Total Score: ${scene.score}`); - scene.updateScoreText(); - } - - getBgmOverride(scene: BattleScene): string { - const battlers = this.enemyParty.slice(0, this.getBattlerCount()); - if (this.battleType === BattleType.TRAINER) { - if (!this.started && this.trainer.config.encounterBgm && this.trainer.getEncounterMessages()?.length) - return `encounter_${this.trainer.getEncounterBgm()}`; - return this.trainer.getBattleBgm(); - } else if (this.gameMode.isClassic && this.waveIndex > 195 && this.battleSpec !== BattleSpec.FINAL_BOSS) - return 'end_summit'; - for (let pokemon of battlers) { - if (this.battleSpec === BattleSpec.FINAL_BOSS) { - if (pokemon.formIndex) - return 'battle_final'; - return 'battle_final_encounter'; - } - if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) { - if (pokemon.species.speciesId === Species.REGIROCK || pokemon.species.speciesId === Species.REGICE || pokemon.species.speciesId === Species.REGISTEEL || pokemon.species.speciesId === Species.REGIGIGAS || pokemon.species.speciesId === Species.REGIELEKI || pokemon.species.speciesId === Species.REGIDRAGO) - return 'battle_legendary_regis'; - if (pokemon.species.speciesId === Species.COBALION || pokemon.species.speciesId === Species.TERRAKION || pokemon.species.speciesId === Species.VIRIZION || pokemon.species.speciesId === Species.TORNADUS || pokemon.species.speciesId === Species.THUNDURUS || pokemon.species.speciesId === Species.LANDORUS || pokemon.species.speciesId === Species.KELDEO || pokemon.species.speciesId === Species.MELOETTA || pokemon.species.speciesId === Species.GENESECT) - return 'battle_legendary_unova'; - if (pokemon.species.speciesId === Species.RESHIRAM || pokemon.species.speciesId === Species.ZEKROM) - return 'battle_legendary_res_zek'; - if (pokemon.species.speciesId === Species.KYUREM) - return 'battle_legendary_kyurem'; - if (pokemon.species.legendary) - return 'battle_legendary_res_zek'; - return 'battle_legendary_unova'; - } - } - - if (scene.gameMode.isClassic && this.waveIndex <= 4) - return 'battle_wild'; - - return null; - } - - randSeedInt(scene: BattleScene, range: integer, min: integer = 0): integer { - if (range <= 1) - return min; - let ret: integer; - const tempRngCounter = scene.rngCounter; - const tempSeedOverride = scene.rngSeedOverride; - const state = Phaser.Math.RND.state(); - if (this.battleSeedState) - Phaser.Math.RND.state(this.battleSeedState); - else { - Phaser.Math.RND.sow([ Utils.shiftCharCodes(this.battleSeed, this.turn << 6) ]); - console.log('Battle Seed:', this.battleSeed); - } - scene.rngCounter = this.rngCounter++; - scene.rngSeedOverride = this.battleSeed; - ret = Utils.randSeedInt(range, min); - this.battleSeedState = Phaser.Math.RND.state(); - Phaser.Math.RND.state(state); - scene.rngCounter = tempRngCounter; - scene.rngSeedOverride = tempSeedOverride; - return ret; + if (scene.gameMode.isClassic && this.waveIndex <= 4) + return 'battle_wild'; + + return null; + } + + randSeedInt(scene: BattleScene, range: integer, min: integer = 0): integer { + if (range <= 1) + return min; + let ret: integer; + const tempRngCounter = scene.rngCounter; + const tempSeedOverride = scene.rngSeedOverride; + const state = Phaser.Math.RND.state(); + if (this.battleSeedState) + Phaser.Math.RND.state(this.battleSeedState); + else { + Phaser.Math.RND.sow([ Utils.shiftCharCodes(this.battleSeed, this.turn << 6) ]); + console.log('Battle Seed:', this.battleSeed); } + scene.rngCounter = this.rngCounter++; + scene.rngSeedOverride = this.battleSeed; + ret = Utils.randSeedInt(range, min); + this.battleSeedState = Phaser.Math.RND.state(); + Phaser.Math.RND.state(state); + scene.rngCounter = tempRngCounter; + scene.rngSeedOverride = tempSeedOverride; + return ret; + } } export class FixedBattle extends Battle { - constructor(scene: BattleScene, waveIndex: integer, config: FixedBattleConfig) { - super(scene.gameMode, waveIndex, config.battleType, config.battleType === BattleType.TRAINER ? config.getTrainer(scene) : null, config.double); - if (config.getEnemyParty) - this.enemyParty = config.getEnemyParty(scene); - } + constructor(scene: BattleScene, waveIndex: integer, config: FixedBattleConfig) { + super(scene.gameMode, waveIndex, config.battleType, config.battleType === BattleType.TRAINER ? config.getTrainer(scene) : null, config.double); + if (config.getEnemyParty) + this.enemyParty = config.getEnemyParty(scene); + } } type GetTrainerFunc = (scene: BattleScene) => Trainer; type GetEnemyPartyFunc = (scene: BattleScene) => EnemyPokemon[]; export class FixedBattleConfig { - public battleType: BattleType; - public double: boolean; - public getTrainer: GetTrainerFunc; - public getEnemyParty: GetEnemyPartyFunc; - public seedOffsetWaveIndex: integer; + public battleType: BattleType; + public double: boolean; + public getTrainer: GetTrainerFunc; + public getEnemyParty: GetEnemyPartyFunc; + public seedOffsetWaveIndex: integer; - setBattleType(battleType: BattleType): FixedBattleConfig { - this.battleType = battleType; - return this; - } + setBattleType(battleType: BattleType): FixedBattleConfig { + this.battleType = battleType; + return this; + } - setDouble(double: boolean): FixedBattleConfig { - this.double = double; - return this; - } + setDouble(double: boolean): FixedBattleConfig { + this.double = double; + return this; + } - setGetTrainerFunc(getTrainerFunc: GetTrainerFunc): FixedBattleConfig { - this.getTrainer = getTrainerFunc; - return this; - } + setGetTrainerFunc(getTrainerFunc: GetTrainerFunc): FixedBattleConfig { + this.getTrainer = getTrainerFunc; + return this; + } - setGetEnemyPartyFunc(getEnemyPartyFunc: GetEnemyPartyFunc): FixedBattleConfig { - this.getEnemyParty = getEnemyPartyFunc; - return this; - } + setGetEnemyPartyFunc(getEnemyPartyFunc: GetEnemyPartyFunc): FixedBattleConfig { + this.getEnemyParty = getEnemyPartyFunc; + return this; + } - setSeedOffsetWave(seedOffsetWaveIndex: integer): FixedBattleConfig { - this.seedOffsetWaveIndex = seedOffsetWaveIndex; - return this; - } + setSeedOffsetWave(seedOffsetWaveIndex: integer): FixedBattleConfig { + this.seedOffsetWaveIndex = seedOffsetWaveIndex; + return this; + } } function getRandomTrainerFunc(trainerPool: (TrainerType | TrainerType[])[]): GetTrainerFunc { - return (scene: BattleScene) => { - const rand = Utils.randSeedInt(trainerPool.length); - const trainerTypes: TrainerType[] = []; - for (let trainerPoolEntry of trainerPool) { - const trainerType = Array.isArray(trainerPoolEntry) - ? Utils.randSeedItem(trainerPoolEntry) - : trainerPoolEntry; - trainerTypes.push(trainerType); - } - return new Trainer(scene, trainerTypes[rand], TrainerVariant.DEFAULT); - }; + return (scene: BattleScene) => { + const rand = Utils.randSeedInt(trainerPool.length); + const trainerTypes: TrainerType[] = []; + for (const trainerPoolEntry of trainerPool) { + const trainerType = Array.isArray(trainerPoolEntry) + ? Utils.randSeedItem(trainerPoolEntry) + : trainerPoolEntry; + trainerTypes.push(trainerType); + } + return new Trainer(scene, trainerTypes[rand], TrainerVariant.DEFAULT); + }; } interface FixedBattleConfigs { @@ -305,28 +305,28 @@ interface FixedBattleConfigs { } export const fixedBattles: FixedBattleConfigs = { - [5]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.YOUNGSTER, Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), - [8]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), - [25]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_2, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), - [55]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_3, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), - [95]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_4, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), - [145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_5, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), - [182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, [ TrainerType.HALA, TrainerType.MOLAYNE ], TrainerType.RIKA, TrainerType.CRISPIN ])), - [184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) - .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.POPPY, TrainerType.AMARYS ])), - [186]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) - .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, TrainerType.LARRY_ELITE, TrainerType.LACEY ])), - [188]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) - .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.HASSEL, TrainerType.DRAYTON ])), - [190]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) - .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, TrainerType.HAU, [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN, TrainerType.LEON ])), - [195]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_6, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) -}; \ No newline at end of file + [5]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.YOUNGSTER, Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), + [8]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), + [25]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_2, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), + [55]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_3, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), + [95]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_4, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), + [145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_5, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), + [182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, [ TrainerType.HALA, TrainerType.MOLAYNE ], TrainerType.RIKA, TrainerType.CRISPIN ])), + [184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) + .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BRUNO, TrainerType.KOGA, TrainerType.PHOEBE, TrainerType.BERTHA, TrainerType.MARSHAL, TrainerType.SIEBOLD, TrainerType.OLIVIA, TrainerType.POPPY, TrainerType.AMARYS ])), + [186]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) + .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.AGATHA, TrainerType.BRUNO, TrainerType.GLACIA, TrainerType.FLINT, TrainerType.GRIMSLEY, TrainerType.WIKSTROM, TrainerType.ACEROLA, TrainerType.LARRY_ELITE, TrainerType.LACEY ])), + [188]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) + .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LANCE, TrainerType.KAREN, TrainerType.DRAKE, TrainerType.LUCIAN, TrainerType.CAITLIN, TrainerType.DRASNA, TrainerType.KAHILI, TrainerType.HASSEL, TrainerType.DRAYTON ])), + [190]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) + .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.BLUE, [ TrainerType.RED, TrainerType.LANCE_CHAMPION ], [ TrainerType.STEVEN, TrainerType.WALLACE ], TrainerType.CYNTHIA, [ TrainerType.ALDER, TrainerType.IRIS ], TrainerType.DIANTHA, TrainerType.HAU, [ TrainerType.GEETA, TrainerType.NEMONA ], TrainerType.KIERAN, TrainerType.LEON ])), + [195]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_6, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)) +}; diff --git a/src/configs/pad_dualshock.ts b/src/configs/pad_dualshock.ts index 4f66ff8c00a..a4e229776aa 100644 --- a/src/configs/pad_dualshock.ts +++ b/src/configs/pad_dualshock.ts @@ -2,28 +2,28 @@ * Dualshock mapping */ const pad_dualshock = { - padID: 'Dualshock', - padType: 'Sony', - gamepadMapping: { - RC_S: 0, - RC_E: 1, - RC_W: 2, - RC_N: 3, - START: 9, // Options - SELECT: 8, // Share - LB: 4, - RB: 5, - LT: 6, - RT: 7, - LS: 10, - RS: 11, - LC_N: 12, - LC_S: 13, - LC_W: 14, - LC_E: 15, - MENU: 16, - TOUCH: 17 - }, + padID: 'Dualshock', + padType: 'Sony', + gamepadMapping: { + RC_S: 0, + RC_E: 1, + RC_W: 2, + RC_N: 3, + START: 9, // Options + SELECT: 8, // Share + LB: 4, + RB: 5, + LT: 6, + RT: 7, + LS: 10, + RS: 11, + LC_N: 12, + LC_S: 13, + LC_W: 14, + LC_E: 15, + MENU: 16, + TOUCH: 17 + }, }; export default pad_dualshock; diff --git a/src/configs/pad_generic.ts b/src/configs/pad_generic.ts index 19b5d3df16e..9b986c7143d 100644 --- a/src/configs/pad_generic.ts +++ b/src/configs/pad_generic.ts @@ -2,26 +2,26 @@ * Generic pad mapping */ const pad_generic = { - padID: 'Generic', - padType: 'generic', - gamepadMapping: { - RC_S: 0, - RC_E: 1, - RC_W: 2, - RC_N: 3, - START: 9, - SELECT: 8, - LB: 4, - RB: 5, - LT: 6, - RT: 7, - LS: 10, - RS: 11, - LC_N: 12, - LC_S: 13, - LC_W: 14, - LC_E: 15 - }, + padID: 'Generic', + padType: 'generic', + gamepadMapping: { + RC_S: 0, + RC_E: 1, + RC_W: 2, + RC_N: 3, + START: 9, + SELECT: 8, + LB: 4, + RB: 5, + LT: 6, + RT: 7, + LS: 10, + RS: 11, + LC_N: 12, + LC_S: 13, + LC_W: 14, + LC_E: 15 + }, }; export default pad_generic; diff --git a/src/configs/pad_unlicensedSNES.ts b/src/configs/pad_unlicensedSNES.ts index ba8ee538d30..798504afbb7 100644 --- a/src/configs/pad_unlicensedSNES.ts +++ b/src/configs/pad_unlicensedSNES.ts @@ -2,22 +2,22 @@ * 081f-e401 - UnlicensedSNES */ const pad_unlicensedSNES = { - padID: '081f-e401', - padType: 'snes', - gamepadMapping : { - RC_S: 2, - RC_E: 1, - RC_W: 3, - RC_N: 0, - START: 9, - SELECT: 8, - LB: 4, - RB: 5, - LC_N: 12, - LC_S: 13, - LC_W: 14, - LC_E: 15 - } + padID: '081f-e401', + padType: 'snes', + gamepadMapping : { + RC_S: 2, + RC_E: 1, + RC_W: 3, + RC_N: 0, + START: 9, + SELECT: 8, + LB: 4, + RB: 5, + LC_N: 12, + LC_S: 13, + LC_W: 14, + LC_E: 15 + } }; export default pad_unlicensedSNES; diff --git a/src/configs/pad_xbox360.ts b/src/configs/pad_xbox360.ts index e44ebb54b64..ce9ae6ff345 100644 --- a/src/configs/pad_xbox360.ts +++ b/src/configs/pad_xbox360.ts @@ -2,27 +2,27 @@ * Generic pad mapping */ const pad_xbox360 = { - padID: 'Xbox 360 controller (XInput STANDARD GAMEPAD)', - padType: 'xbox', - gamepadMapping: { - RC_S: 0, - RC_E: 1, - RC_W: 2, - RC_N: 3, - START: 9, - SELECT: 8, - LB: 4, - RB: 5, - LT: 6, - RT: 7, - LS: 10, - RS: 11, - LC_N: 12, - LC_S: 13, - LC_W: 14, - LC_E: 15, - MENU: 16 - }, + padID: 'Xbox 360 controller (XInput STANDARD GAMEPAD)', + padType: 'xbox', + gamepadMapping: { + RC_S: 0, + RC_E: 1, + RC_W: 2, + RC_N: 3, + START: 9, + SELECT: 8, + LB: 4, + RB: 5, + LT: 6, + RT: 7, + LS: 10, + RS: 11, + LC_N: 12, + LC_S: 13, + LC_W: 14, + LC_E: 15, + MENU: 16 + }, }; export default pad_xbox360; diff --git a/src/data/ability.ts b/src/data/ability.ts index c236aa85805..c3c51c0d4cf 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -1,28 +1,28 @@ -import Pokemon, { HitResult, PokemonMove } from "../field/pokemon"; -import { Type } from "./type"; -import * as Utils from "../utils"; -import { BattleStat, getBattleStatName } from "./battle-stat"; -import { PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../phases"; -import { getPokemonMessage, getPokemonPrefix } from "../messages"; -import { Weather, WeatherType } from "./weather"; -import { BattlerTag } from "./battler-tags"; -import { BattlerTagType } from "./enums/battler-tag-type"; -import { StatusEffect, getStatusEffectDescriptor, getStatusEffectHealText } from "./status-effect"; -import { Gender } from "./gender"; -import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, FlinchAttr, OneHitKOAttr, HitHealAttr, StrengthSapHealAttr, allMoves, StatusMove, VariablePowerAttr, applyMoveAttrs, IncrementMovePriorityAttr } from "./move"; -import { ArenaTagSide, ArenaTrapTag } from "./arena-tag"; -import { ArenaTagType } from "./enums/arena-tag-type"; -import { Stat } from "./pokemon-stat"; -import { PokemonHeldItemModifier } from "../modifier/modifier"; -import { Moves } from "./enums/moves"; -import { TerrainType } from "./terrain"; -import { SpeciesFormChangeManualTrigger } from "./pokemon-forms"; -import { Abilities } from "./enums/abilities"; -import i18next, { Localizable } from "#app/plugins/i18n.js"; -import { Command } from "../ui/command-ui-handler"; -import Battle from "#app/battle.js"; -import { ability } from "#app/locales/en/ability.js"; -import { PokeballType, getPokeballName } from "./pokeball"; +import Pokemon, { HitResult, PokemonMove } from '../field/pokemon'; +import { Type } from './type'; +import * as Utils from '../utils'; +import { BattleStat, getBattleStatName } from './battle-stat'; +import { PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from '../phases'; +import { getPokemonMessage, getPokemonPrefix } from '../messages'; +import { Weather, WeatherType } from './weather'; +import { BattlerTag } from './battler-tags'; +import { BattlerTagType } from './enums/battler-tag-type'; +import { StatusEffect, getStatusEffectDescriptor, getStatusEffectHealText } from './status-effect'; +import { Gender } from './gender'; +import Move, { AttackMove, MoveCategory, MoveFlags, MoveTarget, RecoilAttr, StatusMoveTypeImmunityAttr, FlinchAttr, OneHitKOAttr, HitHealAttr, StrengthSapHealAttr, allMoves, StatusMove, VariablePowerAttr, applyMoveAttrs, IncrementMovePriorityAttr } from './move'; +import { ArenaTagSide, ArenaTrapTag } from './arena-tag'; +import { ArenaTagType } from './enums/arena-tag-type'; +import { Stat } from './pokemon-stat'; +import { PokemonHeldItemModifier } from '../modifier/modifier'; +import { Moves } from './enums/moves'; +import { TerrainType } from './terrain'; +import { SpeciesFormChangeManualTrigger } from './pokemon-forms'; +import { Abilities } from './enums/abilities'; +import i18next, { Localizable } from '#app/plugins/i18n.js'; +import { Command } from '../ui/command-ui-handler'; +import Battle from '#app/battle.js'; +import { ability } from '#app/locales/en/ability.js'; +import { PokeballType, getPokeballName } from './pokeball'; export class Ability implements Localizable { public id: Abilities; @@ -206,11 +206,11 @@ export class PostBattleInitStatChangeAbAttr extends PostBattleInitAbAttr { if (this.selfTarget) statChangePhases.push(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.levels)); else { - for (let opponent of pokemon.getOpponents()) + for (const opponent of pokemon.getOpponents()) statChangePhases.push(new StatChangePhase(pokemon.scene, opponent.getBattlerIndex(), false, this.stats, this.levels)); } - for (let statChangePhase of statChangePhases) { + for (const statChangePhase of statChangePhases) { if (!this.selfTarget && !statChangePhase.getPokemon().summonData) pokemon.scene.pushPhase(statChangePhase); // TODO: This causes the ability bar to be shown at the wrong time else @@ -256,7 +256,7 @@ export class PreDefendFullHpEndureAbAttr extends PreDefendAbAttr { return pokemon.addTag(BattlerTagType.STURDY, 1); } - return false + return false; } } @@ -490,18 +490,18 @@ export class PostDefendFormChangeAbAttr extends PostDefendAbAttr { export class FieldPriorityMoveImmunityAbAttr extends PreDefendAbAttr { applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean { - const attackPriority = new Utils.IntegerHolder(move.getMove().priority); - applyMoveAttrs(IncrementMovePriorityAttr,attacker,null,move.getMove(),attackPriority); - applyAbAttrs(IncrementMovePriorityAbAttr, attacker, null, move.getMove(), attackPriority); + const attackPriority = new Utils.IntegerHolder(move.getMove().priority); + applyMoveAttrs(IncrementMovePriorityAttr,attacker,null,move.getMove(),attackPriority); + applyAbAttrs(IncrementMovePriorityAbAttr, attacker, null, move.getMove(), attackPriority); - if(move.getMove().moveTarget===MoveTarget.USER) { - return false; - } + if(move.getMove().moveTarget===MoveTarget.USER) { + return false; + } - if(attackPriority.value > 0 && !move.getMove().isMultiTarget()) { - cancelled.value = true; - return true; - } + if(attackPriority.value > 0 && !move.getMove().isMultiTarget()) { + cancelled.value = true; + return true; + } return false; } @@ -547,7 +547,7 @@ export class MoveImmunityStatChangeAbAttr extends MoveImmunityAbAttr { } applyPreDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, cancelled: Utils.BooleanHolder, args: any[]): boolean { - const ret = super.applyPreDefend(pokemon, passive, attacker, move, cancelled, args) + const ret = super.applyPreDefend(pokemon, passive, attacker, move, cancelled, args); if (ret) { pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ this.stat ], this.levels)); } @@ -559,7 +559,7 @@ export class MoveImmunityStatChangeAbAttr extends MoveImmunityAbAttr { export class ReverseDrainAbAttr extends PostDefendAbAttr { applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { if (!!move.getMove().getAttrs(HitHealAttr).length || !!move.getMove().getAttrs(StrengthSapHealAttr).length ) { - pokemon.scene.queueMessage(getPokemonMessage(attacker, ` sucked up the liquid ooze!`)); + pokemon.scene.queueMessage(getPokemonMessage(attacker, ' sucked up the liquid ooze!')); return true; } return false; @@ -586,8 +586,8 @@ export class PostDefendStatChangeAbAttr extends PostDefendAbAttr { applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { if (this.condition(pokemon, attacker, move.getMove())) { if (this.allOthers) { - let otherPokemon = pokemon.getAlly() ? pokemon.getOpponents().concat([ pokemon.getAlly() ]) : pokemon.getOpponents(); - for (let other of otherPokemon) { + const otherPokemon = pokemon.getAlly() ? pokemon.getOpponents().concat([ pokemon.getAlly() ]) : pokemon.getOpponents(); + for (const other of otherPokemon) { other.scene.unshiftPhase(new StatChangePhase(other.scene, (other).getBattlerIndex(), false, [ this.stat ], this.levels)); } return true; @@ -618,8 +618,8 @@ export class PostDefendHpGatedStatChangeAbAttr extends PostDefendAbAttr { } applyPostDefend(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { - const hpGateFlat: integer = Math.ceil(pokemon.getMaxHp() * this.hpGate) - const lastAttackReceived = pokemon.turnData.attacksReceived[pokemon.turnData.attacksReceived.length - 1] + const hpGateFlat: integer = Math.ceil(pokemon.getMaxHp() * this.hpGate); + const lastAttackReceived = pokemon.turnData.attacksReceived[pokemon.turnData.attacksReceived.length - 1]; if (this.condition(pokemon, attacker, move.getMove()) && (pokemon.hp <= hpGateFlat && (pokemon.hp + lastAttackReceived.damage) > hpGateFlat)) { pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, (this.selfTarget ? pokemon : attacker).getBattlerIndex(), true, this.stats, this.levels)); return true; @@ -842,7 +842,7 @@ export class PostDefendAbilitySwapAbAttr extends PostDefendAbAttr { } getTriggerMessage(pokemon: Pokemon, abilityName: string, ...args: any[]): string { - return getPokemonMessage(pokemon, ` swapped\nabilities with its target!`); + return getPokemonMessage(pokemon, ' swapped\nabilities with its target!'); } } @@ -1026,10 +1026,10 @@ export class DamageBoostAbAttr extends PreAttackAbAttr { if (this.condition(pokemon, defender, move.getMove())) { const power = args[0] as Utils.NumberHolder; power.value = Math.floor(power.value * this.damageMultiplier); - return true; - } + return true; + } - return false; + return false; } } @@ -1118,7 +1118,7 @@ export class BattleStatMultiplierAbAttr extends AbAttr { } applyBattleStat(pokemon: Pokemon, passive: boolean, battleStat: BattleStat, statValue: Utils.NumberHolder, args: any[]): boolean | Promise { - const move = (args[0] as Move); + const move = (args[0] as Move); if (battleStat === this.battleStat && (!this.condition || this.condition(pokemon, null, move))) { statValue.value *= this.multiplier; return true; @@ -1378,10 +1378,10 @@ export class PostIntimidateStatChangeAbAttr extends AbAttr { private overwrites: boolean; constructor(stats: BattleStat[], levels: integer, overwrites?: boolean) { - super(true) - this.stats = stats - this.levels = levels - this.overwrites = !!overwrites + super(true); + this.stats = stats; + this.levels = levels; + this.overwrites = !!overwrites; } apply(pokemon: Pokemon, passive: boolean, cancelled: Utils.BooleanHolder, args: any[]): boolean { @@ -1469,8 +1469,8 @@ export class PostSummonStatChangeAbAttr extends PostSummonAbAttr { pokemon.scene.pushPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, this.stats, this.levels)); return true; } - for (let opponent of pokemon.getOpponents()) { - const cancelled = new Utils.BooleanHolder(false) + for (const opponent of pokemon.getOpponents()) { + const cancelled = new Utils.BooleanHolder(false); if (this.intimidate) { applyAbAttrs(IntimidateImmunityAbAttr, opponent, cancelled); applyAbAttrs(PostIntimidateStatChangeAbAttr, opponent, cancelled); @@ -1526,7 +1526,7 @@ export class PostSummonClearAllyStatsAbAttr extends PostSummonAbAttr { for (let s = 0; s < target.summonData.battleStats.length; s++) target.summonData.battleStats[s] = 0; - target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere removed!`)); + target.scene.queueMessage(getPokemonMessage(target, '\'s stat changes\nwere removed!')); return true; } @@ -1544,7 +1544,7 @@ export class DownloadAbAttr extends PostSummonAbAttr { this.enemyDef = 0; this.enemySpDef = 0; - for (let opponent of pokemon.getOpponents()) { + for (const opponent of pokemon.getOpponents()) { this.enemyDef += opponent.stats[BattleStat.DEF]; this.enemySpDef += opponent.stats[BattleStat.SPDEF]; } @@ -1950,36 +1950,36 @@ function getWeatherCondition(...weatherTypes: WeatherType[]): AbAttrCondition { function getAnticipationCondition(): AbAttrCondition { return (pokemon: Pokemon) => { - for (let opponent of pokemon.getOpponents()) { - for (let move of opponent.moveset) { - // move is super effective - if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type, opponent) >= 2) { - return true; - } - // move is a OHKO - if (move.getMove().findAttr(attr => attr instanceof OneHitKOAttr)) { - return true; - } - // edge case for hidden power, type is computed - if (move.getMove().id === Moves.HIDDEN_POWER) { - const iv_val = Math.floor(((opponent.ivs[Stat.HP] & 1) + for (const opponent of pokemon.getOpponents()) { + for (const move of opponent.moveset) { + // move is super effective + if (move.getMove() instanceof AttackMove && pokemon.getAttackTypeEffectiveness(move.getMove().type, opponent) >= 2) { + return true; + } + // move is a OHKO + if (move.getMove().findAttr(attr => attr instanceof OneHitKOAttr)) { + return true; + } + // edge case for hidden power, type is computed + if (move.getMove().id === Moves.HIDDEN_POWER) { + const iv_val = Math.floor(((opponent.ivs[Stat.HP] & 1) +(opponent.ivs[Stat.ATK] & 1) * 2 +(opponent.ivs[Stat.DEF] & 1) * 4 +(opponent.ivs[Stat.SPD] & 1) * 8 +(opponent.ivs[Stat.SPATK] & 1) * 16 +(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]; + 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]; - if (pokemon.getAttackTypeEffectiveness(type, opponent) >= 2) { - return true; - } + if (pokemon.getAttackTypeEffectiveness(type, opponent) >= 2) { + return true; } } + } } return false; }; @@ -1995,7 +1995,7 @@ function getAnticipationCondition(): AbAttrCondition { function getOncePerBattleCondition(ability: Abilities): AbAttrCondition { return (pokemon: Pokemon) => { return !pokemon.battleData?.abilitiesApplied.includes(ability); - } + }; } export class ForewarnAbAttr extends PostSummonAbAttr { @@ -2005,10 +2005,10 @@ export class ForewarnAbAttr extends PostSummonAbAttr { applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean { let maxPowerSeen = 0; - let maxMove = ""; + let maxMove = ''; let movePower = 0; - for (let opponent of pokemon.getOpponents()) { - for (let move of opponent.moveset) { + for (const opponent of pokemon.getOpponents()) { + for (const move of opponent.moveset) { if (move.getMove() instanceof StatusMove) { movePower = 1; } else if (move.getMove().findAttr(attr => attr instanceof OneHitKOAttr)) { @@ -2027,7 +2027,7 @@ export class ForewarnAbAttr extends PostSummonAbAttr { } } } - pokemon.scene.queueMessage(getPokemonMessage(pokemon, " was forewarned about " + maxMove + "!")); + pokemon.scene.queueMessage(getPokemonMessage(pokemon, ' was forewarned about ' + maxMove + '!')); return true; } } @@ -2038,8 +2038,8 @@ export class FriskAbAttr extends PostSummonAbAttr { } applyPostSummon(pokemon: Pokemon, passive: boolean, args: any[]): boolean { - for (let opponent of pokemon.getOpponents()) { - pokemon.scene.queueMessage(getPokemonMessage(pokemon, " frisked " + opponent.name + "\'s " + opponent.getAbility().name + "!")); + for (const opponent of pokemon.getOpponents()) { + pokemon.scene.queueMessage(getPokemonMessage(pokemon, ' frisked ' + opponent.name + '\'s ' + opponent.getAbility().name + '!')); } return true; } @@ -2212,17 +2212,17 @@ export class MoodyAbAttr extends PostTurnAbAttr { } applyPostTurn(pokemon: Pokemon, passive: boolean, args: any[]): boolean { - let selectableStats = [BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD]; - let increaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] < 6); + const selectableStats = [BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD]; + const increaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] < 6); let decreaseStatArray = selectableStats.filter(s => pokemon.summonData.battleStats[s] > -6); if (increaseStatArray.length > 0) { - let increaseStat = increaseStatArray[Utils.randInt(increaseStatArray.length)]; + const increaseStat = increaseStatArray[Utils.randInt(increaseStatArray.length)]; decreaseStatArray = decreaseStatArray.filter(s => s !== increaseStat); pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [increaseStat], 2)); } if (decreaseStatArray.length > 0) { - let decreaseStat = selectableStats[Utils.randInt(selectableStats.length)]; + const decreaseStat = selectableStats[Utils.randInt(selectableStats.length)]; pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [decreaseStat], -1)); } return true; @@ -2297,7 +2297,7 @@ export class PostTurnHurtIfSleepingAbAttr extends PostTurnAbAttr { */ applyPostTurn(pokemon: Pokemon, passive: boolean, args: any[]): boolean | Promise { let hadEffect: boolean = false; - for(let opp of pokemon.getOpponents()) { + for(const opp of pokemon.getOpponents()) { if(opp.status !== undefined && opp.status.effect === StatusEffect.SLEEP) { opp.damageAndUpdate(Math.floor(Math.max(1, opp.getMaxHp() / 8)), HitResult.OTHER); pokemon.scene.queueMessage(i18next.t('abilityTriggers:badDreams', {pokemonName: `${getPokemonPrefix(opp)}${opp.name}`})); @@ -2326,7 +2326,7 @@ export class FetchBallAbAttr extends PostTurnAbAttr { * @returns true if player has used a pokeball and this pokemon is owned by the player */ applyPostTurn(pokemon: Pokemon, passive: boolean, args: any[]): boolean { - let lastUsed = pokemon.scene.currentBattle.lastUsedPokeball; + const lastUsed = pokemon.scene.currentBattle.lastUsedPokeball; if(lastUsed != null && pokemon.isPlayer) { pokemon.scene.pokeballCounts[lastUsed]++; pokemon.scene.currentBattle.lastUsedPokeball = null; @@ -2526,7 +2526,7 @@ export class PostFaintContactDamageAbAttr extends PostFaintAbAttr { applyPostFaint(pokemon: Pokemon, passive: boolean, attacker: Pokemon, move: PokemonMove, hitResult: HitResult, args: any[]): boolean { if (move.getMove().checkFlag(MoveFlags.MAKES_CONTACT, attacker, pokemon)) { const cancelled = new Utils.BooleanHolder(false); - pokemon.scene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled)) + pokemon.scene.getField(true).map(p=>applyAbAttrs(FieldPreventExplosiveMovesAbAttr, p, cancelled)); if (cancelled) { return false; } @@ -3217,7 +3217,7 @@ export function initAbilities() { .ignorable(), new Ability(Abilities.AIR_LOCK, 3) .attr(SuppressWeatherEffectAbAttr, true) - .attr(PostSummonUnnamedMessageAbAttr, "The effects of the weather disappeared."), + .attr(PostSummonUnnamedMessageAbAttr, 'The effects of the weather disappeared.'), new Ability(Abilities.TANGLED_FEET, 4) .conditionalAttr(pokemon => !!pokemon.getTag(BattlerTagType.CONFUSED), BattleStatMultiplierAbAttr, BattleStat.EVA, 2) .ignorable(), @@ -3288,7 +3288,7 @@ export function initAbilities() { .attr(MovePowerBoostAbAttr, (user, target, move) => { const power = new Utils.NumberHolder(move.power); applyMoveAttrs(VariablePowerAttr, user, target, move, power); - return power.value <= 60 + return power.value <= 60; }, 1.5), new Ability(Abilities.LEAF_GUARD, 4) .attr(StatusEffectImmunityAbAttr) @@ -3409,7 +3409,7 @@ export function initAbilities() { new Ability(Abilities.POISON_TOUCH, 5) .attr(PostAttackContactApplyStatusEffectAbAttr, 30, StatusEffect.POISON), new Ability(Abilities.REGENERATOR, 5) - .attr(PreSwitchOutHealAbAttr), + .attr(PreSwitchOutHealAbAttr), new Ability(Abilities.BIG_PECKS, 5) .attr(ProtectStatAbAttr, BattleStat.DEF) .ignorable(), diff --git a/src/data/api.ts b/src/data/api.ts index fcfe956710a..4c15d7f2c3d 100644 --- a/src/data/api.ts +++ b/src/data/api.ts @@ -6,7 +6,7 @@ import PokemonSpecies, { PokemonForm, SpeciesFormKey, allSpecies } from './pokem import { GrowthRate } from './exp'; import { Type } from './type'; import { allAbilities } from './ability'; -import { Abilities } from "./enums/abilities"; +import { Abilities } from './enums/abilities'; import { Species } from './enums/species'; import { pokemonFormLevelMoves } from './pokemon-level-moves'; import { tmSpecies } from './tms'; @@ -93,16 +93,16 @@ export async function printPokemon() { const useExistingTmList = true; - let enumStr = `export enum Species {\n`; - let pokemonSpeciesStr = `\tallSpecies.push(\n`; + let enumStr = 'export enum Species {\n'; + let pokemonSpeciesStr = '\tallSpecies.push(\n'; const speciesLevelMoves: SpeciesLevelMoves = {}; const speciesFormLevelMoves: SpeciesFormLevelMoves = {}; const moveTmSpecies: TmSpecies = {}; let pokemonArr: NamedAPIResource[] = []; - let offset = 0; - let pokemonResponse = await api.pokemon.listPokemons(offset, 2000) + const offset = 0; + const pokemonResponse = await api.pokemon.listPokemons(offset, 2000); pokemonArr = pokemonResponse.results; @@ -111,7 +111,7 @@ export async function printPokemon() { const pokemonSpeciesList: PokemonSpecies[] = []; - for (let p of pokemonArr) { + for (const p of pokemonArr) { const pokemon = await api.pokemon.getPokemonByName(p.name); let region: string = ''; @@ -133,7 +133,7 @@ export async function printPokemon() { if (ignoredForms.filter(f => formName.indexOf(f) > -1).length) continue; - let shortFormName = formName.indexOf('-') > -1 + const shortFormName = formName.indexOf('-') > -1 ? formName.slice(0, formName.indexOf('-')) : formName; @@ -143,7 +143,7 @@ export async function printPokemon() { const formBaseStats: integer[] = []; let formBaseTotal = 0; // Assume correct stat order in API result - for (let stat of pokemon.stats) { + for (const stat of pokemon.stats) { formBaseStats.push(stat.base_stat); formBaseTotal += stat.base_stat; } @@ -168,7 +168,7 @@ export async function printPokemon() { speciesFormLevelMoves[speciesKey] = []; speciesFormLevelMoves[speciesKey][pokemonForm.formIndex] = []; - for (let version of versions) { + for (const version of versions) { if (pokemon.moves.find(m => m.version_group_details.find(v => v.version_group.name === version && v.move_learn_method.name === 'level-up'))) { moveVer = version; break; @@ -186,7 +186,7 @@ export async function printPokemon() { const learnMethod = verData.move_learn_method.name; if (isMoveVer && learnMethod === 'level-up') - speciesFormLevelMoves[speciesKey][pokemonForm.formIndex].push([ verData.level_learned_at, moveId ]); + speciesFormLevelMoves[speciesKey][pokemonForm.formIndex].push([ verData.level_learned_at, moveId ]); if ([ 'machine', 'tutor' ].indexOf(learnMethod) > -1 || (useExistingTmList && tmSpecies.hasOwnProperty(moveId as Moves) && learnMethod === 'level-up')) { if (!moveTmSpecies.hasOwnProperty(moveId)) @@ -235,7 +235,7 @@ export async function printPokemon() { const baseStats: integer[] = []; let baseTotal = 0; // Assume correct stat order in API result - for (let stat of pokemon.stats) { + for (const stat of pokemon.stats) { baseStats.push(stat.base_stat); baseTotal += stat.base_stat; } @@ -262,7 +262,7 @@ export async function printPokemon() { speciesLevelMoves[speciesKey] = []; - for (let version of versions) { + for (const version of versions) { if (pokemon.moves.find(m => m.version_group_details.find(v => v.version_group.name === version && v.move_learn_method.name === 'level-up'))) { moveVer = version; break; @@ -281,24 +281,24 @@ export async function printPokemon() { const moveId = Math.max(Utils.getEnumKeys(Moves).indexOf(moveName), 0); switch (verData.move_learn_method.name) { - case 'level-up': - speciesLevelMoves[speciesKey].push([ verData.level_learned_at, moveId ]); - break; - case 'machine': - case 'tutor': - if (moveId > 0) { - if (!moveTmSpecies.hasOwnProperty(moveId)) - moveTmSpecies[moveId] = []; - if (moveTmSpecies[moveId].indexOf(speciesKey) === -1) - moveTmSpecies[moveId].push(speciesKey); - speciesTmMoves.push(moveId); - } - break; + case 'level-up': + speciesLevelMoves[speciesKey].push([ verData.level_learned_at, moveId ]); + break; + case 'machine': + case 'tutor': + if (moveId > 0) { + if (!moveTmSpecies.hasOwnProperty(moveId)) + moveTmSpecies[moveId] = []; + if (moveTmSpecies[moveId].indexOf(speciesKey) === -1) + moveTmSpecies[moveId].push(speciesKey); + speciesTmMoves.push(moveId); + } + break; } }); } - for (let f of pokemon.forms) { + for (const f of pokemon.forms) { const form = await api.pokemon.getPokemonFormByName(f.name); const formIndex = pokemonSpecies.forms.length; @@ -321,7 +321,7 @@ export async function printPokemon() { pokemonForm.generation = pokemonSpecies.generation; if (!pokemonForm.formIndex && speciesTmMoves.length) { - for (let moveId of speciesTmMoves) { + for (const moveId of speciesTmMoves) { const speciesIndex = moveTmSpecies[moveId].findIndex(s => s === speciesKey); moveTmSpecies[moveId][speciesIndex] = [ speciesKey, @@ -336,25 +336,25 @@ export async function printPokemon() { console.log(pokemonSpecies.name, pokemonSpecies); } - for (let pokemonSpecies of pokemonSpeciesList) { + for (const pokemonSpecies of pokemonSpeciesList) { const speciesKey = (pokemonSpecies as any).key as string; enumStr += ` ${speciesKey}${pokemonSpecies.speciesId >= 2000 ? ` = ${pokemonSpecies.speciesId}` : ''},\n`; pokemonSpeciesStr += ` new PokemonSpecies(Species.${speciesKey}, "${pokemonSpecies.name}", ${pokemonSpecies.generation}, ${pokemonSpecies.subLegendary}, ${pokemonSpecies.legendary}, ${pokemonSpecies.mythical}, "${pokemonSpecies.species}", Type.${Type[pokemonSpecies.type1]}, ${pokemonSpecies.type2 ? `Type.${Type[pokemonSpecies.type2]}` : 'null'}, ${pokemonSpecies.height}, ${pokemonSpecies.weight}, Abilities.${Abilities[pokemonSpecies.ability1]}, Abilities.${Abilities[pokemonSpecies.ability2]}, Abilities.${Abilities[pokemonSpecies.abilityHidden]}, ${pokemonSpecies.baseTotal}, ${pokemonSpecies.baseStats[0]}, ${pokemonSpecies.baseStats[1]}, ${pokemonSpecies.baseStats[2]}, ${pokemonSpecies.baseStats[3]}, ${pokemonSpecies.baseStats[4]}, ${pokemonSpecies.baseStats[5]}, ${pokemonSpecies.catchRate}, ${pokemonSpecies.baseFriendship}, ${pokemonSpecies.baseExp}, GrowthRate.${GrowthRate[pokemonSpecies.growthRate]}, ${pokemonSpecies.malePercent}, ${pokemonSpecies.genderDiffs}`; if (pokemonSpecies.forms.length > 1) { pokemonSpeciesStr += `, ${pokemonSpecies.canChangeForm},`; - for (let form of pokemonSpecies.forms) + for (const form of pokemonSpecies.forms) pokemonSpeciesStr += `\n new PokemonForm("${form.formName}", "${form.formName}", Type.${Type[form.type1]}, ${form.type2 ? `Type.${Type[form.type2]}` : 'null'}, ${form.height}, ${form.weight}, Abilities.${Abilities[form.ability1]}, Abilities.${Abilities[form.ability2]}, Abilities.${Abilities[form.abilityHidden]}, ${form.baseTotal}, ${form.baseStats[0]}, ${form.baseStats[1]}, ${form.baseStats[2]}, ${form.baseStats[3]}, ${form.baseStats[4]}, ${form.baseStats[5]}, ${form.catchRate}, ${form.baseFriendship}, ${form.baseExp}${form.genderDiffs ? ', true' : ''}),`; pokemonSpeciesStr += '\n '; } - pokemonSpeciesStr += `),\n`; + pokemonSpeciesStr += '),\n'; } - let speciesLevelMovesStr = `export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {\n`; - let speciesFormLevelMovesStr = `export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = {\n`; - let tmSpeciesStr = `export const tmSpecies: TmSpecies = {\n`; + let speciesLevelMovesStr = 'export const pokemonSpeciesLevelMoves: PokemonSpeciesLevelMoves = {\n'; + let speciesFormLevelMovesStr = 'export const pokemonFormLevelMoves: PokemonSpeciesFormLevelMoves = {\n'; + let tmSpeciesStr = 'export const tmSpecies: TmSpecies = {\n'; - for (let species of Object.keys(speciesLevelMoves)) { + for (const species of Object.keys(speciesLevelMoves)) { speciesLevelMovesStr += ` [Species.${species}]: [\n`; const orderedLevelMoves = speciesLevelMoves[species].sort((a: LevelMove, b: LevelMove) => { @@ -363,16 +363,16 @@ export async function printPokemon() { return a[1] < b[1] ? -1 : 1; }); - for (let lm of orderedLevelMoves) + for (const lm of orderedLevelMoves) speciesLevelMovesStr += ` [ ${lm[0]}, Moves.${Moves[lm[1]]} ],\n`; - speciesLevelMovesStr += ` ],\n`; + speciesLevelMovesStr += ' ],\n'; } - for (let species of Object.keys(speciesFormLevelMoves)) { + for (const species of Object.keys(speciesFormLevelMoves)) { speciesFormLevelMovesStr += ` [Species.${species}]: {\n`; - for (let f of Object.keys(speciesFormLevelMoves[species])) { + for (const f of Object.keys(speciesFormLevelMoves[species])) { speciesFormLevelMovesStr += ` ${f}: [\n`; const orderedLevelMoves = speciesFormLevelMoves[species][f].sort((a: LevelMove, b: LevelMove) => { @@ -381,18 +381,18 @@ export async function printPokemon() { return a[1] < b[1] ? -1 : 1; }); - for (let lm of orderedLevelMoves) + for (const lm of orderedLevelMoves) speciesFormLevelMovesStr += ` [ ${lm[0]}, Moves.${Moves[lm[1]]} ],\n`; - speciesFormLevelMovesStr += ` ],\n`; + speciesFormLevelMovesStr += ' ],\n'; } - speciesFormLevelMovesStr += ` },\n`; + speciesFormLevelMovesStr += ' },\n'; } - for (let moveId of Object.keys(moveTmSpecies)) { + for (const moveId of Object.keys(moveTmSpecies)) { tmSpeciesStr += ` [Moves.${Moves[parseInt(moveId)]}]: [\n`; - for (let species of moveTmSpecies[moveId]) { + for (const species of moveTmSpecies[moveId]) { if (typeof species === 'string') tmSpeciesStr += ` Species.${species},\n`; else { @@ -402,20 +402,20 @@ export async function printPokemon() { tmSpeciesStr += ` Species.${species[0]},\n`; else { tmSpeciesStr += ` [\n Species.${species[0]},\n`; - for (let form of forms) + for (const form of forms) tmSpeciesStr += ` '${form}',\n`; - tmSpeciesStr += ` ],\n`; + tmSpeciesStr += ' ],\n'; } } } - tmSpeciesStr += ` ],\n`; + tmSpeciesStr += ' ],\n'; } - enumStr += `\n};`; - pokemonSpeciesStr += ` );`; - speciesLevelMovesStr += `\n};`; - speciesFormLevelMovesStr += `\n};`; - tmSpeciesStr += `\n};`; + enumStr += '\n};'; + pokemonSpeciesStr += ' );'; + speciesLevelMovesStr += '\n};'; + speciesFormLevelMovesStr += '\n};'; + tmSpeciesStr += '\n};'; console.log(enumStr); console.log(pokemonSpeciesStr); @@ -423,7 +423,7 @@ export async function printPokemon() { console.log(speciesFormLevelMovesStr); console.log(tmSpeciesStr); - console.log(moveTmSpecies) + console.log(moveTmSpecies); } export async function printAbilities() { @@ -433,17 +433,17 @@ export async function printAbilities() { const api = new MainClient(); - let enumStr = `export enum Abilities {\n NONE,`; + let enumStr = 'export enum Abilities {\n NONE,'; let abilityStr = ' allAbilities.push('; abilityContent = abilityContent.slice(abilityContent.indexOf(abilityStr)); let abilities: NamedAPIResource[] = []; - let offset = 0; - let abilitiesResponse = await api.pokemon.listAbilities(offset, 2000); + const offset = 0; + const abilitiesResponse = await api.pokemon.listAbilities(offset, 2000); abilities = abilitiesResponse.results; - for (let a of abilities) { + for (const a of abilities) { const ability = await api.pokemon.getAbilityByName(a.name); const abilityEnumName = ability.name.toUpperCase().replace(/\_/g, '').replace(/\-/g, '_'); enumStr += `\n ${abilityEnumName},`; @@ -465,7 +465,7 @@ export async function printAbilities() { let flavorText: string; if (!matchingLine || replaceText) { - for (let version of versions) { + for (const version of versions) { if ((flavorText = ability.flavor_text_entries.find(fte => fte.language.name === 'en' && fte.version_group.name === version)?.flavor_text) || '') { if (flavorText.indexOf('forgotten') > -1) continue; @@ -483,8 +483,8 @@ export async function printAbilities() { abilityStr += ','; } - enumStr += `\n};`; - abilityStr += `\n);`; + enumStr += '\n};'; + abilityStr += '\n);'; console.log(enumStr); console.log(abilityStr); @@ -497,19 +497,19 @@ export async function printMoves() { const api = new MainClient(); - let enumStr = `export enum Moves {\n NONE,`; + let enumStr = 'export enum Moves {\n NONE,'; let moveStr = ' allMoves.push('; moveContent = moveContent.slice(moveContent.indexOf(moveStr)); let moves: NamedAPIResource[] = []; - let offset = 0; - let movesResponse = await api.move.listMoves(offset, 2000); + const offset = 0; + const movesResponse = await api.move.listMoves(offset, 2000); moves = movesResponse.results; console.log(moves); - for (let m of moves) { + for (const m of moves) { const move = await api.move.getMoveByName(m.name); const moveEnumName = move.name.toUpperCase().replace(/\_/g, '').replace(/\-/g, '_'); enumStr += `\n ${moveEnumName},`; @@ -531,7 +531,7 @@ export async function printMoves() { let flavorText: string; if (!matchingLine || replaceText) { - for (let version of versions) { + for (const version of versions) { if ((flavorText = move.flavor_text_entries.find(fte => fte.language.name === 'en' && fte.version_group.name === version)?.flavor_text) || '') { if (flavorText.indexOf('forgotten') > -1) continue; @@ -546,7 +546,7 @@ export async function printMoves() { if (matchingLine && matchingLine.length > 1) { const newLineIndex = matchingLine.indexOf('\n'); if (newLineIndex > -1) { - console.log(matchingLine.slice(newLineIndex).replace(/(?:\r)?\n[ \t]+.target\(.*?\)/g, ''), newLineIndex) + console.log(matchingLine.slice(newLineIndex).replace(/(?:\r)?\n[ \t]+.target\(.*?\)/g, ''), newLineIndex); moveStr += matchingLine.slice(newLineIndex).replace(/(?:\r)?\n[ \t]+.target\(.*?\)/g, ''); } } @@ -555,8 +555,8 @@ export async function printMoves() { moveStr += ','; } - enumStr += `\n};`; - moveStr += `\n);`; + enumStr += '\n};'; + moveStr += '\n);'; console.log(enumStr); console.log(moveStr); @@ -569,17 +569,17 @@ export async function printTmSpecies() { const moveIds = Object.keys(tmSpecies).map(k => parseInt(k) as Moves); - for (let moveId of moveIds) { + for (const moveId of moveIds) { const move = await api.move.getMoveById(moveId); moveTmSpecies[moveId] = []; - for (let species of move.learned_by_pokemon) { + for (const species of move.learned_by_pokemon) { const dexIdMatch = /\/(\d+)\//.exec(species.url); if (!dexIdMatch) continue; - let dexId = parseInt(dexIdMatch[1]); + const dexId = parseInt(dexIdMatch[1]); let matchingSpecies: PokemonSpecies; let formKey = ''; @@ -629,11 +629,11 @@ export async function printTmSpecies() { } } - let tmSpeciesStr = `export const tmSpecies: TmSpecies = {\n`; + let tmSpeciesStr = 'export const tmSpecies: TmSpecies = {\n'; - for (let moveId of Object.keys(moveTmSpecies)) { + for (const moveId of Object.keys(moveTmSpecies)) { tmSpeciesStr += ` [Moves.${Moves[parseInt(moveId)]}]: [\n`; - for (let species of moveTmSpecies[moveId]) { + for (const species of moveTmSpecies[moveId]) { if (typeof species === 'string') tmSpeciesStr += ` Species.${species},\n`; else { @@ -643,16 +643,16 @@ export async function printTmSpecies() { tmSpeciesStr += ` Species.${species[0]},\n`; else { tmSpeciesStr += ` [\n Species.${species[0]},\n`; - for (let form of forms) + for (const form of forms) tmSpeciesStr += ` '${form}',\n`; - tmSpeciesStr += ` ],\n`; + tmSpeciesStr += ' ],\n'; } } } - tmSpeciesStr += ` ],\n`; + tmSpeciesStr += ' ],\n'; } - tmSpeciesStr += `\n};`; + tmSpeciesStr += '\n};'; console.log(tmSpeciesStr); -} \ No newline at end of file +} diff --git a/src/data/arena-tag.ts b/src/data/arena-tag.ts index 63ed157b597..d8874e6717f 100644 --- a/src/data/arena-tag.ts +++ b/src/data/arena-tag.ts @@ -1,16 +1,16 @@ -import { Arena } from "../field/arena"; -import { Type } from "./type"; -import * as Utils from "../utils"; -import { MoveCategory, allMoves } from "./move"; -import { getPokemonMessage } from "../messages"; -import Pokemon, { HitResult, PokemonMove } from "../field/pokemon"; -import { MoveEffectPhase, PokemonHealPhase, StatChangePhase} from "../phases"; -import { StatusEffect } from "./status-effect"; -import { BattlerIndex } from "../battle"; -import { Moves } from "./enums/moves"; -import { ArenaTagType } from "./enums/arena-tag-type"; -import { BlockNonDirectDamageAbAttr, ProtectStatAbAttr, applyAbAttrs } from "./ability"; -import { BattleStat } from "./battle-stat"; +import { Arena } from '../field/arena'; +import { Type } from './type'; +import * as Utils from '../utils'; +import { MoveCategory, allMoves } from './move'; +import { getPokemonMessage } from '../messages'; +import Pokemon, { HitResult, PokemonMove } from '../field/pokemon'; +import { MoveEffectPhase, PokemonHealPhase, StatChangePhase} from '../phases'; +import { StatusEffect } from './status-effect'; +import { BattlerIndex } from '../battle'; +import { Moves } from './enums/moves'; +import { ArenaTagType } from './enums/arena-tag-type'; +import { BlockNonDirectDamageAbAttr, ProtectStatAbAttr, applyAbAttrs } from './ability'; +import { BattleStat } from './battle-stat'; export enum ArenaTagSide { BOTH, @@ -65,7 +65,7 @@ export class MistTag extends ArenaTag { super.onAdd(arena); const source = arena.scene.getPokemonById(this.sourceId); - arena.scene.queueMessage(getPokemonMessage(source, `'s team became\nshrouded in mist!`)); + arena.scene.queueMessage(getPokemonMessage(source, '\'s team became\nshrouded in mist!')); } apply(arena: Arena, args: any[]): boolean { @@ -372,24 +372,24 @@ class StealthRockTag extends ArenaTrapTag { let damageHpRatio: number; switch (effectiveness) { - case 0: - damageHpRatio = 0; - break; - case 0.25: - damageHpRatio = 0.03125; - break; - case 0.5: - damageHpRatio = 0.0625; - break; - case 1: - damageHpRatio = 0.125; - break; - case 2: - damageHpRatio = 0.25; - break; - case 4: - damageHpRatio = 0.5; - break; + case 0: + damageHpRatio = 0; + break; + case 0.25: + damageHpRatio = 0.03125; + break; + case 0.5: + damageHpRatio = 0.0625; + break; + case 1: + damageHpRatio = 0.125; + break; + case 2: + damageHpRatio = 0.25; + break; + case 4: + damageHpRatio = 0.5; + break; } return damageHpRatio; @@ -498,36 +498,36 @@ class TailwindTag extends ArenaTag { export function getArenaTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves, sourceId: integer, targetIndex?: BattlerIndex, side: ArenaTagSide = ArenaTagSide.BOTH): ArenaTag { switch (tagType) { - case ArenaTagType.MIST: - return new MistTag(turnCount, sourceId, side); - case ArenaTagType.MUD_SPORT: - return new MudSportTag(turnCount, sourceId); - case ArenaTagType.WATER_SPORT: - return new WaterSportTag(turnCount, sourceId); - case ArenaTagType.SPIKES: - return new SpikesTag(sourceId, side); - case ArenaTagType.TOXIC_SPIKES: - return new ToxicSpikesTag(sourceId, side); - case ArenaTagType.FUTURE_SIGHT: - case ArenaTagType.DOOM_DESIRE: - return new DelayedAttackTag(tagType, sourceMove, sourceId, targetIndex); - case ArenaTagType.WISH: - return new WishTag(turnCount, sourceId, side); - case ArenaTagType.STEALTH_ROCK: - return new StealthRockTag(sourceId, side); - case ArenaTagType.STICKY_WEB: - return new StickyWebTag(sourceId, side); - case ArenaTagType.TRICK_ROOM: - return new TrickRoomTag(turnCount, sourceId); - case ArenaTagType.GRAVITY: - return new GravityTag(turnCount); - case ArenaTagType.REFLECT: - return new ReflectTag(turnCount, sourceId, side); - case ArenaTagType.LIGHT_SCREEN: - return new LightScreenTag(turnCount, sourceId, side); - case ArenaTagType.AURORA_VEIL: - return new AuroraVeilTag(turnCount, sourceId, side); - case ArenaTagType.TAILWIND: - return new TailwindTag(turnCount, sourceId, side); + case ArenaTagType.MIST: + return new MistTag(turnCount, sourceId, side); + case ArenaTagType.MUD_SPORT: + return new MudSportTag(turnCount, sourceId); + case ArenaTagType.WATER_SPORT: + return new WaterSportTag(turnCount, sourceId); + case ArenaTagType.SPIKES: + return new SpikesTag(sourceId, side); + case ArenaTagType.TOXIC_SPIKES: + return new ToxicSpikesTag(sourceId, side); + case ArenaTagType.FUTURE_SIGHT: + case ArenaTagType.DOOM_DESIRE: + return new DelayedAttackTag(tagType, sourceMove, sourceId, targetIndex); + case ArenaTagType.WISH: + return new WishTag(turnCount, sourceId, side); + case ArenaTagType.STEALTH_ROCK: + return new StealthRockTag(sourceId, side); + case ArenaTagType.STICKY_WEB: + return new StickyWebTag(sourceId, side); + case ArenaTagType.TRICK_ROOM: + return new TrickRoomTag(turnCount, sourceId); + case ArenaTagType.GRAVITY: + return new GravityTag(turnCount); + case ArenaTagType.REFLECT: + return new ReflectTag(turnCount, sourceId, side); + case ArenaTagType.LIGHT_SCREEN: + return new LightScreenTag(turnCount, sourceId, side); + case ArenaTagType.AURORA_VEIL: + return new AuroraVeilTag(turnCount, sourceId, side); + case ArenaTagType.TAILWIND: + return new TailwindTag(turnCount, sourceId, side); } } diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index a5d3993f59f..131a73c05e3 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -1,12 +1,12 @@ //import { battleAnimRawData } from "./battle-anim-raw-data"; -import BattleScene from "../battle-scene"; -import { AttackMove, ChargeAttr, DelayedAttackAttr, MoveFlags, SelfStatusMove, allMoves } from "./move"; -import Pokemon from "../field/pokemon"; -import * as Utils from "../utils"; -import { BattlerIndex } from "../battle"; -import stringify, { Element } from "json-stable-stringify"; -import { Moves } from "./enums/moves"; -import { getTypeRgb } from "./type"; +import BattleScene from '../battle-scene'; +import { AttackMove, ChargeAttr, DelayedAttackAttr, MoveFlags, SelfStatusMove, allMoves } from './move'; +import Pokemon from '../field/pokemon'; +import * as Utils from '../utils'; +import { BattlerIndex } from '../battle'; +import stringify, { Element } from 'json-stable-stringify'; +import { Moves } from './enums/moves'; +import { getTypeRgb } from './type'; //import fs from 'vite-plugin-fs/browser'; export enum AnimFrameTarget { @@ -104,188 +104,188 @@ export enum CommonAnim { } export class AnimConfig { - public id: integer; - public graphic: string; - public frames: AnimFrame[][]; - public frameTimedEvents: Map; - public position: integer; - public hue: integer; + public id: integer; + public graphic: string; + public frames: AnimFrame[][]; + public frameTimedEvents: Map; + public position: integer; + public hue: integer; - constructor(source?: any) { - this.frameTimedEvents = new Map; + constructor(source?: any) { + this.frameTimedEvents = new Map; - if (source) { - this.id = source.id; - this.graphic = source.graphic; - const frames: any[][] = source.frames; - frames.map(animFrames => { - for (let f = 0; f < animFrames.length; f++) - animFrames[f] = new ImportedAnimFrame(animFrames[f]); - }); - this.frames = frames; + if (source) { + this.id = source.id; + this.graphic = source.graphic; + const frames: any[][] = source.frames; + frames.map(animFrames => { + for (let f = 0; f < animFrames.length; f++) + animFrames[f] = new ImportedAnimFrame(animFrames[f]); + }); + this.frames = frames; - const frameTimedEvents = source.frameTimedEvents; - for (let fte of Object.keys(frameTimedEvents)) { - const timedEvents: AnimTimedEvent[] = []; - for (let te of frameTimedEvents[fte]) { - let timedEvent: AnimTimedEvent; - switch (te.eventType) { - case 'AnimTimedSoundEvent': - timedEvent = new AnimTimedSoundEvent(te.frameIndex, te.resourceName, te); - break; - case 'AnimTimedAddBgEvent': - timedEvent = new AnimTimedAddBgEvent(te.frameIndex, te.resourceName, te); - break; - case 'AnimTimedUpdateBgEvent': - timedEvent = new AnimTimedUpdateBgEvent(te.frameIndex, te.resourceName, te); - break; - } - timedEvents.push(timedEvent); - } - this.frameTimedEvents.set(parseInt(fte), timedEvents); - } - - this.position = source.position; - this.hue = source.hue; - } else - this.frames = []; - } - - getSoundResourceNames(): string[] { - const sounds = new Set(); - - for (let ftes of this.frameTimedEvents.values()) { - for (let fte of ftes) { - if (fte instanceof AnimTimedSoundEvent && fte.resourceName) - sounds.add(fte.resourceName); - } + const frameTimedEvents = source.frameTimedEvents; + for (const fte of Object.keys(frameTimedEvents)) { + const timedEvents: AnimTimedEvent[] = []; + for (const te of frameTimedEvents[fte]) { + let timedEvent: AnimTimedEvent; + switch (te.eventType) { + case 'AnimTimedSoundEvent': + timedEvent = new AnimTimedSoundEvent(te.frameIndex, te.resourceName, te); + break; + case 'AnimTimedAddBgEvent': + timedEvent = new AnimTimedAddBgEvent(te.frameIndex, te.resourceName, te); + break; + case 'AnimTimedUpdateBgEvent': + timedEvent = new AnimTimedUpdateBgEvent(te.frameIndex, te.resourceName, te); + break; + } + timedEvents.push(timedEvent); } + this.frameTimedEvents.set(parseInt(fte), timedEvents); + } - return Array.from(sounds.values()); + this.position = source.position; + this.hue = source.hue; + } else + this.frames = []; + } + + getSoundResourceNames(): string[] { + const sounds = new Set(); + + for (const ftes of this.frameTimedEvents.values()) { + for (const fte of ftes) { + if (fte instanceof AnimTimedSoundEvent && fte.resourceName) + sounds.add(fte.resourceName); + } } - getBackgroundResourceNames(): string[] { - const backgrounds = new Set(); + return Array.from(sounds.values()); + } - for (let ftes of this.frameTimedEvents.values()) { - for (let fte of ftes) { - if (fte instanceof AnimTimedAddBgEvent && fte.resourceName) - backgrounds.add(fte.resourceName); - } - } + getBackgroundResourceNames(): string[] { + const backgrounds = new Set(); - return Array.from(backgrounds.values()); + for (const ftes of this.frameTimedEvents.values()) { + for (const fte of ftes) { + if (fte instanceof AnimTimedAddBgEvent && fte.resourceName) + backgrounds.add(fte.resourceName); + } } + + return Array.from(backgrounds.values()); + } } class AnimFrame { - public x: number; - public y: number; - public zoomX: number; - public zoomY: number; - public angle: number; - public mirror: boolean; - public visible: boolean; - public blendType: AnimBlendType; - public target: AnimFrameTarget; - public graphicFrame: integer; - public opacity: integer; - public color: integer[]; - public tone: integer[]; - public flash: integer[]; - public locked: boolean; - public priority: integer; - public focus: AnimFocus; + public x: number; + public y: number; + public zoomX: number; + public zoomY: number; + public angle: number; + public mirror: boolean; + public visible: boolean; + public blendType: AnimBlendType; + public target: AnimFrameTarget; + public graphicFrame: integer; + public opacity: integer; + public color: integer[]; + public tone: integer[]; + public flash: integer[]; + public locked: boolean; + public priority: integer; + public focus: AnimFocus; - constructor(x: number, y: number, zoomX: number, zoomY: number, angle: number, mirror: boolean, visible: boolean, blendType: AnimBlendType, pattern: integer, - opacity: integer, colorR: integer, colorG: integer, colorB: integer, colorA: integer, toneR: integer, toneG: integer, toneB: integer, toneA: integer, - flashR: integer, flashG: integer, flashB: integer, flashA: integer, locked: boolean, priority: integer, focus: AnimFocus, init?: boolean) { - this.x = !init ? ((x || 0) - 128) * 0.5 : x; - this.y = !init ? ((y || 0) - 224) * 0.5 : y; - if (zoomX) - this.zoomX = zoomX; - else if (init) - this.zoomX = 0; - if (zoomY) - this.zoomY = zoomY; - else if (init) - this.zoomY = 0; - if (angle) - this.angle = angle; - else if (init) - this.angle = 0; - if (mirror) - this.mirror = mirror; - else if (init) - this.mirror = false; - if (visible) - this.visible = visible; - else if (init) - this.visible = false; - if (blendType) - this.blendType = blendType; - else if (init) - this.blendType = AnimBlendType.NORMAL; - if (!init) { - let target = AnimFrameTarget.GRAPHIC; - switch (pattern) { - case -2: - target = AnimFrameTarget.TARGET; - break; - case -1: - target = AnimFrameTarget.USER; - break; - } - this.target = target; - this.graphicFrame = pattern >= 0 ? pattern : 0; - } - if (opacity) - this.opacity = opacity; - else if (init) - this.opacity = 0; - if (colorR || colorG || colorB || colorA) - this.color = [ colorR || 0, colorG || 0, colorB || 0, colorA || 0 ]; - else if (init) - this.color = [ 0, 0, 0, 0 ]; - if (toneR || toneG || toneB || toneA) - this.tone = [ toneR || 0, toneG || 0, toneB || 0, toneA || 0 ]; - else if (init) - this.tone = [ 0, 0, 0, 0 ]; - if (flashR || flashG || flashB || flashA) - this.flash = [ flashR || 0, flashG || 0, flashB || 0, flashA || 0 ]; - else if (init) - this.flash = [ 0, 0, 0, 0 ]; - if (locked) - this.locked = locked; - else if (init) - this.locked = false; - if (priority) - this.priority = priority; - else if (init) - this.priority = 0; - this.focus = focus || AnimFocus.TARGET; + constructor(x: number, y: number, zoomX: number, zoomY: number, angle: number, mirror: boolean, visible: boolean, blendType: AnimBlendType, pattern: integer, + opacity: integer, colorR: integer, colorG: integer, colorB: integer, colorA: integer, toneR: integer, toneG: integer, toneB: integer, toneA: integer, + flashR: integer, flashG: integer, flashB: integer, flashA: integer, locked: boolean, priority: integer, focus: AnimFocus, init?: boolean) { + this.x = !init ? ((x || 0) - 128) * 0.5 : x; + this.y = !init ? ((y || 0) - 224) * 0.5 : y; + if (zoomX) + this.zoomX = zoomX; + else if (init) + this.zoomX = 0; + if (zoomY) + this.zoomY = zoomY; + else if (init) + this.zoomY = 0; + if (angle) + this.angle = angle; + else if (init) + this.angle = 0; + if (mirror) + this.mirror = mirror; + else if (init) + this.mirror = false; + if (visible) + this.visible = visible; + else if (init) + this.visible = false; + if (blendType) + this.blendType = blendType; + else if (init) + this.blendType = AnimBlendType.NORMAL; + if (!init) { + let target = AnimFrameTarget.GRAPHIC; + switch (pattern) { + case -2: + target = AnimFrameTarget.TARGET; + break; + case -1: + target = AnimFrameTarget.USER; + break; + } + this.target = target; + this.graphicFrame = pattern >= 0 ? pattern : 0; } + if (opacity) + this.opacity = opacity; + else if (init) + this.opacity = 0; + if (colorR || colorG || colorB || colorA) + this.color = [ colorR || 0, colorG || 0, colorB || 0, colorA || 0 ]; + else if (init) + this.color = [ 0, 0, 0, 0 ]; + if (toneR || toneG || toneB || toneA) + this.tone = [ toneR || 0, toneG || 0, toneB || 0, toneA || 0 ]; + else if (init) + this.tone = [ 0, 0, 0, 0 ]; + if (flashR || flashG || flashB || flashA) + this.flash = [ flashR || 0, flashG || 0, flashB || 0, flashA || 0 ]; + else if (init) + this.flash = [ 0, 0, 0, 0 ]; + if (locked) + this.locked = locked; + else if (init) + this.locked = false; + if (priority) + this.priority = priority; + else if (init) + this.priority = 0; + this.focus = focus || AnimFocus.TARGET; + } } class ImportedAnimFrame extends AnimFrame { - constructor(source: any) { - const color: integer[] = source.color || [ 0, 0, 0, 0 ]; - const tone: integer[] = source.tone || [ 0, 0, 0, 0 ]; - const flash: integer[] = source.flash || [ 0, 0, 0, 0 ]; - super(source.x, source.y, source.zoomX, source.zoomY, source.angle, source.mirror, source.visible, source.blendType, source.graphicFrame, source.opacity, color[0], color[1], color[2], color[3], tone[0], tone[1], tone[2], tone[3], flash[0], flash[1], flash[2], flash[3], source.locked, source.priority, source.focus, true); - this.target = source.target; - this.graphicFrame = source.graphicFrame; - } + constructor(source: any) { + const color: integer[] = source.color || [ 0, 0, 0, 0 ]; + const tone: integer[] = source.tone || [ 0, 0, 0, 0 ]; + const flash: integer[] = source.flash || [ 0, 0, 0, 0 ]; + super(source.x, source.y, source.zoomX, source.zoomY, source.angle, source.mirror, source.visible, source.blendType, source.graphicFrame, source.opacity, color[0], color[1], color[2], color[3], tone[0], tone[1], tone[2], tone[3], flash[0], flash[1], flash[2], flash[3], source.locked, source.priority, source.focus, true); + this.target = source.target; + this.graphicFrame = source.graphicFrame; + } } abstract class AnimTimedEvent { - public frameIndex: integer; - public resourceName: string; + public frameIndex: integer; + public resourceName: string; - constructor(frameIndex: integer, resourceName: string) { - this.frameIndex = frameIndex; - this.resourceName = resourceName; - } + constructor(frameIndex: integer, resourceName: string) { + this.frameIndex = frameIndex; + this.resourceName = resourceName; + } abstract execute(scene: BattleScene, battleAnim: BattleAnim): integer; @@ -293,131 +293,131 @@ abstract class AnimTimedEvent { } class AnimTimedSoundEvent extends AnimTimedEvent { - public volume: number = 100; - public pitch: number = 100; + public volume: number = 100; + public pitch: number = 100; - constructor(frameIndex: integer, resourceName: string, source?: any) { - super(frameIndex, resourceName); + constructor(frameIndex: integer, resourceName: string, source?: any) { + super(frameIndex, resourceName); - if (source) { - this.volume = source.volume; - this.pitch = source.pitch; - } + if (source) { + this.volume = source.volume; + this.pitch = source.pitch; } + } - execute(scene: BattleScene, battleAnim: BattleAnim): integer { - const soundConfig = { rate: (this.pitch * 0.01), volume: (this.volume * 0.01) }; - if (this.resourceName) { - try { - scene.playSound(this.resourceName, soundConfig); - } catch (err) { - console.error(err); - } - return Math.ceil((scene.sound.get(this.resourceName).totalDuration * 1000) / 33.33); - } else - return Math.ceil((battleAnim.user.cry(soundConfig).totalDuration * 1000) / 33.33); - } + execute(scene: BattleScene, battleAnim: BattleAnim): integer { + const soundConfig = { rate: (this.pitch * 0.01), volume: (this.volume * 0.01) }; + if (this.resourceName) { + try { + scene.playSound(this.resourceName, soundConfig); + } catch (err) { + console.error(err); + } + return Math.ceil((scene.sound.get(this.resourceName).totalDuration * 1000) / 33.33); + } else + return Math.ceil((battleAnim.user.cry(soundConfig).totalDuration * 1000) / 33.33); + } - getEventType(): string { - return 'AnimTimedSoundEvent'; - } + getEventType(): string { + return 'AnimTimedSoundEvent'; + } } abstract class AnimTimedBgEvent extends AnimTimedEvent { - public bgX: number = 0; - public bgY: number = 0; - public opacity: integer = 0; - /*public colorRed: integer = 0; + public bgX: number = 0; + public bgY: number = 0; + public opacity: integer = 0; + /*public colorRed: integer = 0; public colorGreen: integer = 0; public colorBlue: integer = 0; public colorAlpha: integer = 0;*/ - public duration: integer = 0; - /*public flashScope: integer = 0; + public duration: integer = 0; + /*public flashScope: integer = 0; public flashRed: integer = 0; public flashGreen: integer = 0; public flashBlue: integer = 0; public flashAlpha: integer = 0; public flashDuration: integer = 0;*/ - constructor(frameIndex: integer, resourceName: string, source: any) { - super(frameIndex, resourceName); + constructor(frameIndex: integer, resourceName: string, source: any) { + super(frameIndex, resourceName); - if (source) { - this.bgX = source.bgX; - this.bgY = source.bgY; - this.opacity = source.opacity; - /*this.colorRed = source.colorRed; + if (source) { + this.bgX = source.bgX; + this.bgY = source.bgY; + this.opacity = source.opacity; + /*this.colorRed = source.colorRed; this.colorGreen = source.colorGreen; this.colorBlue = source.colorBlue; this.colorAlpha = source.colorAlpha;*/ - this.duration = source.duration; - /*this.flashScope = source.flashScope; + this.duration = source.duration; + /*this.flashScope = source.flashScope; this.flashRed = source.flashRed; this.flashGreen = source.flashGreen; this.flashBlue = source.flashBlue; this.flashAlpha = source.flashAlpha; this.flashDuration = source.flashDuration;*/ - } } + } } class AnimTimedUpdateBgEvent extends AnimTimedBgEvent { - constructor(frameIndex: integer, resourceName: string, source?: any) { - super(frameIndex, resourceName, source); - } + constructor(frameIndex: integer, resourceName: string, source?: any) { + super(frameIndex, resourceName, source); + } - execute(scene: BattleScene, moveAnim: MoveAnim): integer { - const tweenProps = {}; - if (this.bgX !== undefined) - tweenProps['x'] = (this.bgX * 0.5) - 320; - if (this.bgY !== undefined) - tweenProps['y'] = (this.bgY * 0.5) - 284; - if (this.opacity !== undefined) - tweenProps['alpha'] = (this.opacity || 0) / 255; - if (Object.keys(tweenProps).length) { - scene.tweens.add(Object.assign({ - targets: moveAnim.bgSprite, - duration: Utils.getFrameMs(this.duration * 3) - }, tweenProps)); - } - return this.duration * 2; + execute(scene: BattleScene, moveAnim: MoveAnim): integer { + const tweenProps = {}; + if (this.bgX !== undefined) + tweenProps['x'] = (this.bgX * 0.5) - 320; + if (this.bgY !== undefined) + tweenProps['y'] = (this.bgY * 0.5) - 284; + if (this.opacity !== undefined) + tweenProps['alpha'] = (this.opacity || 0) / 255; + if (Object.keys(tweenProps).length) { + scene.tweens.add(Object.assign({ + targets: moveAnim.bgSprite, + duration: Utils.getFrameMs(this.duration * 3) + }, tweenProps)); } + return this.duration * 2; + } - getEventType(): string { - return 'AnimTimedUpdateBgEvent'; - } + getEventType(): string { + return 'AnimTimedUpdateBgEvent'; + } } class AnimTimedAddBgEvent extends AnimTimedBgEvent { - constructor(frameIndex: integer, resourceName: string, source?: any) { - super(frameIndex, resourceName, source); - } + constructor(frameIndex: integer, resourceName: string, source?: any) { + super(frameIndex, resourceName, source); + } - execute(scene: BattleScene, moveAnim: MoveAnim): integer { - if (moveAnim.bgSprite) - moveAnim.bgSprite.destroy(); - moveAnim.bgSprite = this.resourceName - ? scene.add.tileSprite(this.bgX - 320, this.bgY - 284, 896, 576, this.resourceName) - : scene.add.rectangle(this.bgX - 320, this.bgY - 284, 896, 576, 0); - moveAnim.bgSprite.setOrigin(0, 0); - moveAnim.bgSprite.setScale(1.25); - moveAnim.bgSprite.setAlpha(this.opacity / 255); - scene.field.add(moveAnim.bgSprite); - const fieldPokemon = scene.getEnemyPokemon() || scene.getPlayerPokemon(); - if (fieldPokemon?.isOnField()) - scene.field.moveBelow(moveAnim.bgSprite as Phaser.GameObjects.GameObject, fieldPokemon); + execute(scene: BattleScene, moveAnim: MoveAnim): integer { + if (moveAnim.bgSprite) + moveAnim.bgSprite.destroy(); + moveAnim.bgSprite = this.resourceName + ? scene.add.tileSprite(this.bgX - 320, this.bgY - 284, 896, 576, this.resourceName) + : scene.add.rectangle(this.bgX - 320, this.bgY - 284, 896, 576, 0); + moveAnim.bgSprite.setOrigin(0, 0); + moveAnim.bgSprite.setScale(1.25); + moveAnim.bgSprite.setAlpha(this.opacity / 255); + scene.field.add(moveAnim.bgSprite); + const fieldPokemon = scene.getEnemyPokemon() || scene.getPlayerPokemon(); + if (fieldPokemon?.isOnField()) + scene.field.moveBelow(moveAnim.bgSprite as Phaser.GameObjects.GameObject, fieldPokemon); - scene.tweens.add({ - targets: moveAnim.bgSprite, - duration: Utils.getFrameMs(this.duration * 3) - }); + scene.tweens.add({ + targets: moveAnim.bgSprite, + duration: Utils.getFrameMs(this.duration * 3) + }); - return this.duration * 2; - } + return this.duration * 2; + } - getEventType(): string { - return 'AnimTimedAddBgEvent'; - } + getEventType(): string { + return 'AnimTimedAddBgEvent'; + } } export const moveAnims = new Map(); @@ -425,164 +425,164 @@ export const chargeAnims = new Map(); export function initCommonAnims(scene: BattleScene): Promise { - return new Promise(resolve => { - const commonAnimNames = Utils.getEnumKeys(CommonAnim); - const commonAnimIds = Utils.getEnumValues(CommonAnim); - const commonAnimFetches = []; - for (let ca = 0; ca < commonAnimIds.length; ca++) { - const commonAnimId = commonAnimIds[ca]; - commonAnimFetches.push(scene.cachedFetch(`./battle-anims/common-${commonAnimNames[ca].toLowerCase().replace(/\_/g, '-')}.json`) - .then(response => response.json()) - .then(cas => commonAnims.set(commonAnimId, new AnimConfig(cas)))); - } - Promise.allSettled(commonAnimFetches).then(() => resolve()); - }); + return new Promise(resolve => { + const commonAnimNames = Utils.getEnumKeys(CommonAnim); + const commonAnimIds = Utils.getEnumValues(CommonAnim); + const commonAnimFetches = []; + for (let ca = 0; ca < commonAnimIds.length; ca++) { + const commonAnimId = commonAnimIds[ca]; + commonAnimFetches.push(scene.cachedFetch(`./battle-anims/common-${commonAnimNames[ca].toLowerCase().replace(/\_/g, '-')}.json`) + .then(response => response.json()) + .then(cas => commonAnims.set(commonAnimId, new AnimConfig(cas)))); + } + Promise.allSettled(commonAnimFetches).then(() => resolve()); + }); } export function initMoveAnim(scene: BattleScene, move: Moves): Promise { - return new Promise(resolve => { - if (moveAnims.has(move)) { - if (moveAnims.get(move) !== null) - resolve(); - else { - let loadedCheckTimer = setInterval(() => { - if (moveAnims.get(move) !== null) { - const chargeAttr = allMoves[move].getAttrs(ChargeAttr).find(() => true) as ChargeAttr || allMoves[move].getAttrs(DelayedAttackAttr).find(() => true) as DelayedAttackAttr; - if (chargeAttr && chargeAnims.get(chargeAttr.chargeAnim) === null) - return; - clearInterval(loadedCheckTimer); - resolve(); - } - }, 50); + return new Promise(resolve => { + if (moveAnims.has(move)) { + if (moveAnims.get(move) !== null) + resolve(); + else { + const loadedCheckTimer = setInterval(() => { + if (moveAnims.get(move) !== null) { + const chargeAttr = allMoves[move].getAttrs(ChargeAttr).find(() => true) as ChargeAttr || allMoves[move].getAttrs(DelayedAttackAttr).find(() => true) as DelayedAttackAttr; + if (chargeAttr && chargeAnims.get(chargeAttr.chargeAnim) === null) + return; + clearInterval(loadedCheckTimer); + resolve(); + } + }, 50); + } + } else { + moveAnims.set(move, null); + const defaultMoveAnim = allMoves[move] instanceof AttackMove ? Moves.TACKLE : allMoves[move] instanceof SelfStatusMove ? Moves.FOCUS_ENERGY : Moves.TAIL_WHIP; + const moveName = Moves[move].toLowerCase().replace(/\_/g, '-'); + const fetchAnimAndResolve = (move: Moves) => { + scene.cachedFetch(`./battle-anims/${moveName}.json`) + .then(response => { + if (!response.ok) { + console.error(`Could not load animation file for move '${moveName}'`, response.status, response.statusText); + populateMoveAnim(move, moveAnims.get(defaultMoveAnim)); + return resolve(); } - } else { - moveAnims.set(move, null); - const defaultMoveAnim = allMoves[move] instanceof AttackMove ? Moves.TACKLE : allMoves[move] instanceof SelfStatusMove ? Moves.FOCUS_ENERGY : Moves.TAIL_WHIP; - const moveName = Moves[move].toLowerCase().replace(/\_/g, '-'); - const fetchAnimAndResolve = (move: Moves) => { - scene.cachedFetch(`./battle-anims/${moveName}.json`) - .then(response => { - if (!response.ok) { - console.error(`Could not load animation file for move '${moveName}'`, response.status, response.statusText); - populateMoveAnim(move, moveAnims.get(defaultMoveAnim)); - return resolve(); - } - return response.json(); - }) - .then(ba => { - if (Array.isArray(ba)) { - populateMoveAnim(move, ba[0]); - populateMoveAnim(move, ba[1]); - } else - populateMoveAnim(move, ba); - const chargeAttr = allMoves[move].getAttrs(ChargeAttr).find(() => true) as ChargeAttr || allMoves[move].getAttrs(DelayedAttackAttr).find(() => true) as DelayedAttackAttr; - if (chargeAttr) - initMoveChargeAnim(scene, chargeAttr.chargeAnim).then(() => resolve()); - else - resolve(); - }); - }; - fetchAnimAndResolve(move); - } - }); + return response.json(); + }) + .then(ba => { + if (Array.isArray(ba)) { + populateMoveAnim(move, ba[0]); + populateMoveAnim(move, ba[1]); + } else + populateMoveAnim(move, ba); + const chargeAttr = allMoves[move].getAttrs(ChargeAttr).find(() => true) as ChargeAttr || allMoves[move].getAttrs(DelayedAttackAttr).find(() => true) as DelayedAttackAttr; + if (chargeAttr) + initMoveChargeAnim(scene, chargeAttr.chargeAnim).then(() => resolve()); + else + resolve(); + }); + }; + fetchAnimAndResolve(move); + } + }); } export function initMoveChargeAnim(scene: BattleScene, chargeAnim: ChargeAnim): Promise { - return new Promise(resolve => { - if (chargeAnims.has(chargeAnim)) { - if (chargeAnims.get(chargeAnim) !== null) - resolve(); - else { - let loadedCheckTimer = setInterval(() => { - if (chargeAnims.get(chargeAnim) !== null) { - clearInterval(loadedCheckTimer); - resolve(); - } - }, 50); - } - } else { - chargeAnims.set(chargeAnim, null); - scene.cachedFetch(`./battle-anims/${ChargeAnim[chargeAnim].toLowerCase().replace(/\_/g, '-')}.json`) - .then(response => response.json()) - .then(ca => { - if (Array.isArray(ca)) { - populateMoveChargeAnim(chargeAnim, ca[0]); - populateMoveChargeAnim(chargeAnim, ca[1]); - } else - populateMoveChargeAnim(chargeAnim, ca); - resolve(); - }); - } - }); + return new Promise(resolve => { + if (chargeAnims.has(chargeAnim)) { + if (chargeAnims.get(chargeAnim) !== null) + resolve(); + else { + const loadedCheckTimer = setInterval(() => { + if (chargeAnims.get(chargeAnim) !== null) { + clearInterval(loadedCheckTimer); + resolve(); + } + }, 50); + } + } else { + chargeAnims.set(chargeAnim, null); + scene.cachedFetch(`./battle-anims/${ChargeAnim[chargeAnim].toLowerCase().replace(/\_/g, '-')}.json`) + .then(response => response.json()) + .then(ca => { + if (Array.isArray(ca)) { + populateMoveChargeAnim(chargeAnim, ca[0]); + populateMoveChargeAnim(chargeAnim, ca[1]); + } else + populateMoveChargeAnim(chargeAnim, ca); + resolve(); + }); + } + }); } function populateMoveAnim(move: Moves, animSource: any): void { - const moveAnim = new AnimConfig(animSource); - if (moveAnims.get(move) === null) { - moveAnims.set(move, moveAnim); - return; - } - moveAnims.set(move, [ moveAnims.get(move) as AnimConfig, moveAnim ]); + const moveAnim = new AnimConfig(animSource); + if (moveAnims.get(move) === null) { + moveAnims.set(move, moveAnim); + return; + } + moveAnims.set(move, [ moveAnims.get(move) as AnimConfig, moveAnim ]); } function populateMoveChargeAnim(chargeAnim: ChargeAnim, animSource: any) { - const moveChargeAnim = new AnimConfig(animSource); - if (chargeAnims.get(chargeAnim) === null) { - chargeAnims.set(chargeAnim, moveChargeAnim); - return; - } - chargeAnims.set(chargeAnim, [ chargeAnims.get(chargeAnim) as AnimConfig, moveChargeAnim ]); + const moveChargeAnim = new AnimConfig(animSource); + if (chargeAnims.get(chargeAnim) === null) { + chargeAnims.set(chargeAnim, moveChargeAnim); + return; + } + chargeAnims.set(chargeAnim, [ chargeAnims.get(chargeAnim) as AnimConfig, moveChargeAnim ]); } export function loadCommonAnimAssets(scene: BattleScene, startLoad?: boolean): Promise { - return new Promise(resolve => { - loadAnimAssets(scene, Array.from(commonAnims.values()), startLoad).then(() => resolve()); - }); + return new Promise(resolve => { + loadAnimAssets(scene, Array.from(commonAnims.values()), startLoad).then(() => resolve()); + }); } export function loadMoveAnimAssets(scene: BattleScene, moveIds: Moves[], startLoad?: boolean): Promise { - return new Promise(resolve => { - const moveAnimations = moveIds.map(m => moveAnims.get(m) as AnimConfig).flat(); - for (let moveId of moveIds) { - const chargeAttr = allMoves[moveId].getAttrs(ChargeAttr).find(() => true) as ChargeAttr || allMoves[moveId].getAttrs(DelayedAttackAttr).find(() => true) as DelayedAttackAttr; - if (chargeAttr) { - const moveChargeAnims = chargeAnims.get(chargeAttr.chargeAnim); - moveAnimations.push(moveChargeAnims instanceof AnimConfig ? moveChargeAnims : moveChargeAnims[0]); - if (Array.isArray(moveChargeAnims)) - moveAnimations.push(moveChargeAnims[1]); - } - } - loadAnimAssets(scene, moveAnimations, startLoad).then(() => resolve()); - }); + return new Promise(resolve => { + const moveAnimations = moveIds.map(m => moveAnims.get(m) as AnimConfig).flat(); + for (const moveId of moveIds) { + const chargeAttr = allMoves[moveId].getAttrs(ChargeAttr).find(() => true) as ChargeAttr || allMoves[moveId].getAttrs(DelayedAttackAttr).find(() => true) as DelayedAttackAttr; + if (chargeAttr) { + const moveChargeAnims = chargeAnims.get(chargeAttr.chargeAnim); + moveAnimations.push(moveChargeAnims instanceof AnimConfig ? moveChargeAnims : moveChargeAnims[0]); + if (Array.isArray(moveChargeAnims)) + moveAnimations.push(moveChargeAnims[1]); + } + } + loadAnimAssets(scene, moveAnimations, startLoad).then(() => resolve()); + }); } function loadAnimAssets(scene: BattleScene, anims: AnimConfig[], startLoad?: boolean): Promise { - return new Promise(resolve => { - const backgrounds = new Set(); - const sounds = new Set(); - for (let a of anims) { - if (!a.frames?.length) - continue; - const animSounds = a.getSoundResourceNames(); - for (let ms of animSounds) - sounds.add(ms); - const animBackgrounds = a.getBackgroundResourceNames(); - for (let abg of animBackgrounds) - backgrounds.add(abg); - if (a.graphic) - scene.loadSpritesheet(a.graphic, 'battle_anims', 96); - } - for (let bg of backgrounds) - scene.loadImage(bg, 'battle_anims'); - for (let s of sounds) - scene.loadSe(s, 'battle_anims', s); - if (startLoad) { - scene.load.once(Phaser.Loader.Events.COMPLETE, () => resolve()); - if (!scene.load.isLoading()) - scene.load.start(); - } else - resolve(); - }); + return new Promise(resolve => { + const backgrounds = new Set(); + const sounds = new Set(); + for (const a of anims) { + if (!a.frames?.length) + continue; + const animSounds = a.getSoundResourceNames(); + for (const ms of animSounds) + sounds.add(ms); + const animBackgrounds = a.getBackgroundResourceNames(); + for (const abg of animBackgrounds) + backgrounds.add(abg); + if (a.graphic) + scene.loadSpritesheet(a.graphic, 'battle_anims', 96); + } + for (const bg of backgrounds) + scene.loadImage(bg, 'battle_anims'); + for (const s of sounds) + scene.loadSe(s, 'battle_anims', s); + if (startLoad) { + scene.load.once(Phaser.Loader.Events.COMPLETE, () => resolve()); + if (!scene.load.isLoading()) + scene.load.start(); + } else + resolve(); + }); } interface GraphicFrameData { @@ -599,32 +599,32 @@ const targetFocusX = 234; const targetFocusY = 84 - 32; function transformPoint(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, px: number, py: number): [ x: number, y: number ] { - const yIntersect = yAxisIntersect(x1, y1, x2, y2, px, py); - return repositionY(x3, y3, x4, y4, yIntersect[0], yIntersect[1]); + const yIntersect = yAxisIntersect(x1, y1, x2, y2, px, py); + return repositionY(x3, y3, x4, y4, yIntersect[0], yIntersect[1]); } function yAxisIntersect(x1: number, y1: number, x2: number, y2: number, px: number, py: number): [ x: number, y: number ] { - const dx = x2 - x1; - const dy = y2 - y1; - const x = dx === 0 ? 0 : (px - x1) / dx; - const y = dy === 0 ? 0 : (py - y1) / dy; - return [ x, y ]; + const dx = x2 - x1; + const dy = y2 - y1; + const x = dx === 0 ? 0 : (px - x1) / dx; + const y = dy === 0 ? 0 : (py - y1) / dy; + return [ x, y ]; } function repositionY(x1: number, y1: number, x2: number, y2: number, tx: number, ty: number): [ x: number, y: number ] { - const dx = x2 - x1; - const dy = y2 - y1; - const x = x1 + (tx * dx); - const y = y1 + (ty * dy); - return [ x, y ]; + const dx = x2 - x1; + const dy = y2 - y1; + const x = x1 + (tx * dx); + const y = y1 + (ty * dy); + return [ x, y ]; } function isReversed(src1: number, src2: number, dst1: number, dst2: number) { - if (src1 === src2) - return false; - if (src1 < src2) - return dst1 > dst2; - return dst1 < dst2; + if (src1 === src2) + return false; + if (src1 < src2) + return dst1 > dst2; + return dst1 < dst2; } interface SpriteCache { @@ -632,556 +632,556 @@ interface SpriteCache { } export abstract class BattleAnim { - public user: Pokemon; - public target: Pokemon; - public sprites: Phaser.GameObjects.Sprite[]; - public bgSprite: Phaser.GameObjects.TileSprite | Phaser.GameObjects.Rectangle; + public user: Pokemon; + public target: Pokemon; + public sprites: Phaser.GameObjects.Sprite[]; + public bgSprite: Phaser.GameObjects.TileSprite | Phaser.GameObjects.Rectangle; - private srcLine: number[]; - private dstLine: number[]; + private srcLine: number[]; + private dstLine: number[]; - constructor(user: Pokemon, target: Pokemon) { - this.user = user; - this.target = target; - this.sprites = []; - } + constructor(user: Pokemon, target: Pokemon) { + this.user = user; + this.target = target; + this.sprites = []; + } abstract getAnim(): AnimConfig; abstract isOppAnim(): boolean; protected isHideUser(): boolean { - return false; + return false; } protected isHideTarget(): boolean { - return false; + return false; } private getGraphicFrameData(scene: BattleScene, frames: AnimFrame[]): Map> { - const ret: Map> = new Map([ - [AnimFrameTarget.GRAPHIC, new Map() ], - [AnimFrameTarget.USER, new Map() ], - [AnimFrameTarget.TARGET, new Map() ] - ]); + const ret: Map> = new Map([ + [AnimFrameTarget.GRAPHIC, new Map() ], + [AnimFrameTarget.USER, new Map() ], + [AnimFrameTarget.TARGET, new Map() ] + ]); - const isOppAnim = this.isOppAnim(); - const user = !isOppAnim ? this.user : this.target; - const target = !isOppAnim ? this.target : this.user; + const isOppAnim = this.isOppAnim(); + const user = !isOppAnim ? this.user : this.target; + const target = !isOppAnim ? this.target : this.user; - const userInitialX = user.x; - const userInitialY = user.y; - const userHalfHeight = user.getSprite().displayHeight / 2; - const targetInitialX = target.x; - const targetInitialY = target.y; - const targetHalfHeight = target.getSprite().displayHeight / 2; + const userInitialX = user.x; + const userInitialY = user.y; + const userHalfHeight = user.getSprite().displayHeight / 2; + const targetInitialX = target.x; + const targetInitialY = target.y; + const targetHalfHeight = target.getSprite().displayHeight / 2; - let g = 0; - let u = 0; - let t = 0; + let g = 0; + let u = 0; + let t = 0; - for (let frame of frames) { - let x = frame.x + 106; - let y = frame.y + 116; - let scaleX = (frame.zoomX / 100) * (!frame.mirror ? 1 : -1); - let scaleY = (frame.zoomY / 100); - switch (frame.focus) { - case AnimFocus.TARGET: - x += targetInitialX - targetFocusX; - y += (targetInitialY - targetHalfHeight) - targetFocusY; - break; - case AnimFocus.USER: - x += userInitialX - userFocusX; - y += (userInitialY - userHalfHeight) - userFocusY; - break; - case AnimFocus.USER_TARGET: - const point = transformPoint(this.srcLine[0], this.srcLine[1], this.srcLine[2], this.srcLine[3], - this.dstLine[0], this.dstLine[1] - userHalfHeight, this.dstLine[2], this.dstLine[3] - targetHalfHeight, x, y); - x = point[0]; - y = point[1]; - if (frame.target === AnimFrameTarget.GRAPHIC && isReversed(this.srcLine[0], this.srcLine[2], this.dstLine[0], this.dstLine[2])) - scaleX = scaleX * -1; - break; - } - const angle = -frame.angle; - const key = frame.target === AnimFrameTarget.GRAPHIC ? g++ : frame.target === AnimFrameTarget.USER ? u++ : t++; - ret.get(frame.target).set(key, { x: x, y: y, scaleX: scaleX, scaleY: scaleY, angle: angle }); + for (const frame of frames) { + let x = frame.x + 106; + let y = frame.y + 116; + let scaleX = (frame.zoomX / 100) * (!frame.mirror ? 1 : -1); + const scaleY = (frame.zoomY / 100); + switch (frame.focus) { + case AnimFocus.TARGET: + x += targetInitialX - targetFocusX; + y += (targetInitialY - targetHalfHeight) - targetFocusY; + break; + case AnimFocus.USER: + x += userInitialX - userFocusX; + y += (userInitialY - userHalfHeight) - userFocusY; + break; + case AnimFocus.USER_TARGET: + const point = transformPoint(this.srcLine[0], this.srcLine[1], this.srcLine[2], this.srcLine[3], + this.dstLine[0], this.dstLine[1] - userHalfHeight, this.dstLine[2], this.dstLine[3] - targetHalfHeight, x, y); + x = point[0]; + y = point[1]; + if (frame.target === AnimFrameTarget.GRAPHIC && isReversed(this.srcLine[0], this.srcLine[2], this.dstLine[0], this.dstLine[2])) + scaleX = scaleX * -1; + break; } + const angle = -frame.angle; + const key = frame.target === AnimFrameTarget.GRAPHIC ? g++ : frame.target === AnimFrameTarget.USER ? u++ : t++; + ret.get(frame.target).set(key, { x: x, y: y, scaleX: scaleX, scaleY: scaleY, angle: angle }); + } - return ret; + return ret; } play(scene: BattleScene, callback?: Function) { - const isOppAnim = this.isOppAnim(); - const user = !isOppAnim ? this.user : this.target; - const target = !isOppAnim ? this.target : this.user; + const isOppAnim = this.isOppAnim(); + const user = !isOppAnim ? this.user : this.target; + const target = !isOppAnim ? this.target : this.user; - if (!target.isOnField()) { - if (callback) - callback(); - return; + if (!target.isOnField()) { + if (callback) + callback(); + return; + } + + const userSprite = user.getSprite(); + const targetSprite = target.getSprite(); + + const spriteCache: SpriteCache = { + [AnimFrameTarget.GRAPHIC]: [], + [AnimFrameTarget.USER]: [], + [AnimFrameTarget.TARGET]: [] + }; + const spritePriorities: integer[] = []; + + const cleanUpAndComplete = () => { + userSprite.setPosition(0, 0); + userSprite.setScale(1); + userSprite.setAlpha(1); + userSprite.pipelineData['tone'] = [ 0.0, 0.0, 0.0, 0.0 ]; + userSprite.setAngle(0); + targetSprite.setPosition(0, 0); + targetSprite.setScale(1); + targetSprite.setAlpha(1); + targetSprite.pipelineData['tone'] = [ 0.0, 0.0, 0.0, 0.0 ]; + targetSprite.setAngle(0); + if (!this.isHideUser()) + userSprite.setVisible(true); + if (!this.isHideTarget() && (targetSprite !== userSprite || !this.isHideUser())) + targetSprite.setVisible(true); + for (const ms of Object.values(spriteCache).flat()) { + if (ms) + ms.destroy(); } + if (this.bgSprite) + this.bgSprite.destroy(); + if (callback) + callback(); + }; - const userSprite = user.getSprite(); - const targetSprite = target.getSprite(); + if (!scene.moveAnimations) + return cleanUpAndComplete(); - const spriteCache: SpriteCache = { - [AnimFrameTarget.GRAPHIC]: [], - [AnimFrameTarget.USER]: [], - [AnimFrameTarget.TARGET]: [] - }; - const spritePriorities: integer[] = []; + const anim = this.getAnim(); - const cleanUpAndComplete = () => { - userSprite.setPosition(0, 0); - userSprite.setScale(1); - userSprite.setAlpha(1); - userSprite.pipelineData['tone'] = [ 0.0, 0.0, 0.0, 0.0 ]; - userSprite.setAngle(0); - targetSprite.setPosition(0, 0); - targetSprite.setScale(1); - targetSprite.setAlpha(1); - targetSprite.pipelineData['tone'] = [ 0.0, 0.0, 0.0, 0.0 ]; - targetSprite.setAngle(0); - if (!this.isHideUser()) - userSprite.setVisible(true); - if (!this.isHideTarget() && (targetSprite !== userSprite || !this.isHideUser())) - targetSprite.setVisible(true); - for (let ms of Object.values(spriteCache).flat()) { - if (ms) - ms.destroy(); - } - if (this.bgSprite) - this.bgSprite.destroy(); - if (callback) - callback(); - }; + const userInitialX = user.x; + const userInitialY = user.y; + const targetInitialX = target.x; + const targetInitialY = target.y; - if (!scene.moveAnimations) - return cleanUpAndComplete(); - - const anim = this.getAnim(); - - const userInitialX = user.x; - const userInitialY = user.y; - const targetInitialX = target.x; - const targetInitialY = target.y; - - this.srcLine = [ userFocusX, userFocusY, targetFocusX, targetFocusY ]; - this.dstLine = [ userInitialX, userInitialY, targetInitialX, targetInitialY ]; + this.srcLine = [ userFocusX, userFocusY, targetFocusX, targetFocusY ]; + this.dstLine = [ userInitialX, userInitialY, targetInitialX, targetInitialY ]; - let r = anim.frames.length; - let f = 0; + let r = anim.frames.length; + let f = 0; - scene.tweens.addCounter({ - duration: Utils.getFrameMs(3), - repeat: anim.frames.length, - onRepeat: () => { - if (!f) { - userSprite.setVisible(false); - targetSprite.setVisible(false); - } + scene.tweens.addCounter({ + duration: Utils.getFrameMs(3), + repeat: anim.frames.length, + onRepeat: () => { + if (!f) { + userSprite.setVisible(false); + targetSprite.setVisible(false); + } - const spriteFrames = anim.frames[f]; - const frameData = this.getGraphicFrameData(scene, anim.frames[f]); - let u = 0; - let t = 0; - let g = 0; - for (let frame of spriteFrames) { - if (frame.target !== AnimFrameTarget.GRAPHIC) { - const isUser = frame.target === AnimFrameTarget.USER; - if (isUser && target === user) - continue; - const sprites = spriteCache[isUser ? AnimFrameTarget.USER : AnimFrameTarget.TARGET]; - const spriteSource = isUser ? userSprite : targetSprite; - if ((isUser ? u : t) === sprites.length) { - let sprite: Phaser.GameObjects.Sprite; - sprite = scene.addPokemonSprite(isUser ? user : target, 0, 0, spriteSource.texture, spriteSource.frame.name, true); - [ 'spriteColors', 'fusionSpriteColors' ].map(k => sprite.pipelineData[k] = (isUser ? user : target).getSprite().pipelineData[k]); - sprite.setPipelineData('spriteKey', (isUser ? user : target).getBattleSpriteKey()); - sprite.setPipelineData('shiny', (isUser ? user : target).shiny); - sprite.setPipelineData('variant', (isUser ? user : target).variant); - sprite.setPipelineData('ignoreFieldPos', true); - spriteSource.on('animationupdate', (_anim, frame) => sprite.setFrame(frame.textureFrame)); - scene.field.add(sprite); - sprites.push(sprite); - } + const spriteFrames = anim.frames[f]; + const frameData = this.getGraphicFrameData(scene, anim.frames[f]); + let u = 0; + let t = 0; + let g = 0; + for (const frame of spriteFrames) { + if (frame.target !== AnimFrameTarget.GRAPHIC) { + const isUser = frame.target === AnimFrameTarget.USER; + if (isUser && target === user) + continue; + const sprites = spriteCache[isUser ? AnimFrameTarget.USER : AnimFrameTarget.TARGET]; + const spriteSource = isUser ? userSprite : targetSprite; + if ((isUser ? u : t) === sprites.length) { + let sprite: Phaser.GameObjects.Sprite; + sprite = scene.addPokemonSprite(isUser ? user : target, 0, 0, spriteSource.texture, spriteSource.frame.name, true); + [ 'spriteColors', 'fusionSpriteColors' ].map(k => sprite.pipelineData[k] = (isUser ? user : target).getSprite().pipelineData[k]); + sprite.setPipelineData('spriteKey', (isUser ? user : target).getBattleSpriteKey()); + sprite.setPipelineData('shiny', (isUser ? user : target).shiny); + sprite.setPipelineData('variant', (isUser ? user : target).variant); + sprite.setPipelineData('ignoreFieldPos', true); + spriteSource.on('animationupdate', (_anim, frame) => sprite.setFrame(frame.textureFrame)); + scene.field.add(sprite); + sprites.push(sprite); + } - const spriteIndex = isUser ? u++ : t++; - const pokemonSprite = sprites[spriteIndex]; - const graphicFrameData = frameData.get(frame.target).get(spriteIndex); - pokemonSprite.setPosition(graphicFrameData.x, graphicFrameData.y - ((spriteSource.height / 2) * (spriteSource.parentContainer.scale - 1))); + const spriteIndex = isUser ? u++ : t++; + const pokemonSprite = sprites[spriteIndex]; + const graphicFrameData = frameData.get(frame.target).get(spriteIndex); + pokemonSprite.setPosition(graphicFrameData.x, graphicFrameData.y - ((spriteSource.height / 2) * (spriteSource.parentContainer.scale - 1))); - pokemonSprite.setAngle(graphicFrameData.angle); - pokemonSprite.setScale(graphicFrameData.scaleX * spriteSource.parentContainer.scale, graphicFrameData.scaleY * spriteSource.parentContainer.scale); + pokemonSprite.setAngle(graphicFrameData.angle); + pokemonSprite.setScale(graphicFrameData.scaleX * spriteSource.parentContainer.scale, graphicFrameData.scaleY * spriteSource.parentContainer.scale); - pokemonSprite.setData('locked', frame.locked); + pokemonSprite.setData('locked', frame.locked); - pokemonSprite.setAlpha(frame.opacity / 255); - pokemonSprite.pipelineData['tone'] = frame.tone; - pokemonSprite.setVisible(frame.visible && (isUser ? user.visible : target.visible)); - pokemonSprite.setBlendMode(frame.blendType === AnimBlendType.NORMAL ? Phaser.BlendModes.NORMAL : frame.blendType === AnimBlendType.ADD ? Phaser.BlendModes.ADD : Phaser.BlendModes.DIFFERENCE); - } else { - const sprites = spriteCache[AnimFrameTarget.GRAPHIC]; - if (g === sprites.length) { - let newSprite: Phaser.GameObjects.Sprite = scene.addFieldSprite(0, 0, anim.graphic, 1); - sprites.push(newSprite); - scene.field.add(newSprite); - spritePriorities.push(1); - } + pokemonSprite.setAlpha(frame.opacity / 255); + pokemonSprite.pipelineData['tone'] = frame.tone; + pokemonSprite.setVisible(frame.visible && (isUser ? user.visible : target.visible)); + pokemonSprite.setBlendMode(frame.blendType === AnimBlendType.NORMAL ? Phaser.BlendModes.NORMAL : frame.blendType === AnimBlendType.ADD ? Phaser.BlendModes.ADD : Phaser.BlendModes.DIFFERENCE); + } else { + const sprites = spriteCache[AnimFrameTarget.GRAPHIC]; + if (g === sprites.length) { + const newSprite: Phaser.GameObjects.Sprite = scene.addFieldSprite(0, 0, anim.graphic, 1); + sprites.push(newSprite); + scene.field.add(newSprite); + spritePriorities.push(1); + } - const graphicIndex = g++; - const moveSprite = sprites[graphicIndex]; - if (spritePriorities[graphicIndex] !== frame.priority) { - spritePriorities[graphicIndex] = frame.priority; - const setSpritePriority = (priority: integer) => { - switch (priority) { - case 0: - scene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, scene.getEnemyPokemon() || scene.getPlayerPokemon()); - break; - case 1: - scene.field.moveTo(moveSprite, scene.field.getAll().length - 1); - break; - case 2: - switch (frame.focus) { - case AnimFocus.USER: - if (this.bgSprite) - scene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.bgSprite); - else - scene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, this.user); - break; - case AnimFocus.TARGET: - scene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, this.target); - break; - default: - setSpritePriority(1); - break; - } - break; - case 3: - switch (frame.focus) { - case AnimFocus.USER: - scene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.user); - break; - case AnimFocus.TARGET: - scene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.target); - break; - default: - setSpritePriority(1); - break; - } - break; - default: - setSpritePriority(1); - } - }; - setSpritePriority(frame.priority); - } - moveSprite.setFrame(frame.graphicFrame); - //console.log(AnimFocus[frame.focus]); - - const graphicFrameData = frameData.get(frame.target).get(graphicIndex); - moveSprite.setPosition(graphicFrameData.x, graphicFrameData.y); - moveSprite.setAngle(graphicFrameData.angle); - moveSprite.setScale(graphicFrameData.scaleX, graphicFrameData.scaleY); - - moveSprite.setAlpha(frame.opacity / 255); - moveSprite.setVisible(frame.visible); - moveSprite.setBlendMode(frame.blendType === AnimBlendType.NORMAL ? Phaser.BlendModes.NORMAL : frame.blendType === AnimBlendType.ADD ? Phaser.BlendModes.ADD : Phaser.BlendModes.DIFFERENCE); + const graphicIndex = g++; + const moveSprite = sprites[graphicIndex]; + if (spritePriorities[graphicIndex] !== frame.priority) { + spritePriorities[graphicIndex] = frame.priority; + const setSpritePriority = (priority: integer) => { + switch (priority) { + case 0: + scene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, scene.getEnemyPokemon() || scene.getPlayerPokemon()); + break; + case 1: + scene.field.moveTo(moveSprite, scene.field.getAll().length - 1); + break; + case 2: + switch (frame.focus) { + case AnimFocus.USER: + if (this.bgSprite) + scene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.bgSprite); + else + scene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, this.user); + break; + case AnimFocus.TARGET: + scene.field.moveBelow(moveSprite as Phaser.GameObjects.GameObject, this.target); + break; + default: + setSpritePriority(1); + break; } - } - if (anim.frameTimedEvents.has(f)) { - for (let event of anim.frameTimedEvents.get(f)) - r = Math.max((anim.frames.length - f) + event.execute(scene, this), r); - } - const targets = Utils.getEnumValues(AnimFrameTarget); - for (let i of targets) { - const count = i === AnimFrameTarget.GRAPHIC ? g : i === AnimFrameTarget.USER ? u : t; - if (count < spriteCache[i].length) { - const spritesToRemove = spriteCache[i].slice(count, spriteCache[i].length); - for (let rs of spritesToRemove) { - if (!rs.getData('locked') as boolean) { - const spriteCacheIndex = spriteCache[i].indexOf(rs); - spriteCache[i].splice(spriteCacheIndex, 1); - if (i === AnimFrameTarget.GRAPHIC) - spritePriorities.splice(spriteCacheIndex, 1); - rs.destroy(); - } - } + break; + case 3: + switch (frame.focus) { + case AnimFocus.USER: + scene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.user); + break; + case AnimFocus.TARGET: + scene.field.moveAbove(moveSprite as Phaser.GameObjects.GameObject, this.target); + break; + default: + setSpritePriority(1); + break; } - } - f++; - r--; - }, - onComplete: () => { - for (let ms of Object.values(spriteCache).flat()) { - if (ms && !ms.getData('locked')) - ms.destroy(); - } - if (r) { - scene.tweens.addCounter({ - duration: Utils.getFrameMs(r), - onComplete: () => cleanUpAndComplete() - }); - } else - cleanUpAndComplete(); + break; + default: + setSpritePriority(1); + } + }; + setSpritePriority(frame.priority); + } + moveSprite.setFrame(frame.graphicFrame); + //console.log(AnimFocus[frame.focus]); + + const graphicFrameData = frameData.get(frame.target).get(graphicIndex); + moveSprite.setPosition(graphicFrameData.x, graphicFrameData.y); + moveSprite.setAngle(graphicFrameData.angle); + moveSprite.setScale(graphicFrameData.scaleX, graphicFrameData.scaleY); + + moveSprite.setAlpha(frame.opacity / 255); + moveSprite.setVisible(frame.visible); + moveSprite.setBlendMode(frame.blendType === AnimBlendType.NORMAL ? Phaser.BlendModes.NORMAL : frame.blendType === AnimBlendType.ADD ? Phaser.BlendModes.ADD : Phaser.BlendModes.DIFFERENCE); } - }); + } + if (anim.frameTimedEvents.has(f)) { + for (const event of anim.frameTimedEvents.get(f)) + r = Math.max((anim.frames.length - f) + event.execute(scene, this), r); + } + const targets = Utils.getEnumValues(AnimFrameTarget); + for (const i of targets) { + const count = i === AnimFrameTarget.GRAPHIC ? g : i === AnimFrameTarget.USER ? u : t; + if (count < spriteCache[i].length) { + const spritesToRemove = spriteCache[i].slice(count, spriteCache[i].length); + for (const rs of spritesToRemove) { + if (!rs.getData('locked') as boolean) { + const spriteCacheIndex = spriteCache[i].indexOf(rs); + spriteCache[i].splice(spriteCacheIndex, 1); + if (i === AnimFrameTarget.GRAPHIC) + spritePriorities.splice(spriteCacheIndex, 1); + rs.destroy(); + } + } + } + } + f++; + r--; + }, + onComplete: () => { + for (const ms of Object.values(spriteCache).flat()) { + if (ms && !ms.getData('locked')) + ms.destroy(); + } + if (r) { + scene.tweens.addCounter({ + duration: Utils.getFrameMs(r), + onComplete: () => cleanUpAndComplete() + }); + } else + cleanUpAndComplete(); + } + }); } } export class CommonBattleAnim extends BattleAnim { - public commonAnim: CommonAnim; + public commonAnim: CommonAnim; - constructor(commonAnim: CommonAnim, user: Pokemon, target?: Pokemon) { - super(user, target || user); + constructor(commonAnim: CommonAnim, user: Pokemon, target?: Pokemon) { + super(user, target || user); - this.commonAnim = commonAnim; - } + this.commonAnim = commonAnim; + } - getAnim(): AnimConfig { - return commonAnims.get(this.commonAnim); - } + getAnim(): AnimConfig { + return commonAnims.get(this.commonAnim); + } - isOppAnim(): boolean { - return false; - } + isOppAnim(): boolean { + return false; + } } export class MoveAnim extends BattleAnim { - public move: Moves; + public move: Moves; - constructor(move: Moves, user: Pokemon, target: BattlerIndex) { - super(user, user.scene.getField()[target]); + constructor(move: Moves, user: Pokemon, target: BattlerIndex) { + super(user, user.scene.getField()[target]); - this.move = move; - } + this.move = move; + } - getAnim(): AnimConfig { - return moveAnims.get(this.move) instanceof AnimConfig - ? moveAnims.get(this.move) as AnimConfig - : moveAnims.get(this.move)[this.user.isPlayer() ? 0 : 1] as AnimConfig; - } + getAnim(): AnimConfig { + return moveAnims.get(this.move) instanceof AnimConfig + ? moveAnims.get(this.move) as AnimConfig + : moveAnims.get(this.move)[this.user.isPlayer() ? 0 : 1] as AnimConfig; + } - isOppAnim(): boolean { - return !this.user.isPlayer() && Array.isArray(moveAnims.get(this.move)); - } + isOppAnim(): boolean { + return !this.user.isPlayer() && Array.isArray(moveAnims.get(this.move)); + } - protected isHideUser(): boolean { - return allMoves[this.move].hasFlag(MoveFlags.HIDE_USER); - } + protected isHideUser(): boolean { + return allMoves[this.move].hasFlag(MoveFlags.HIDE_USER); + } - protected isHideTarget(): boolean { - return allMoves[this.move].hasFlag(MoveFlags.HIDE_TARGET); - } + protected isHideTarget(): boolean { + return allMoves[this.move].hasFlag(MoveFlags.HIDE_TARGET); + } } export class MoveChargeAnim extends MoveAnim { - private chargeAnim: ChargeAnim; + private chargeAnim: ChargeAnim; - constructor(chargeAnim: ChargeAnim, move: Moves, user: Pokemon) { - super(move, user, 0); + constructor(chargeAnim: ChargeAnim, move: Moves, user: Pokemon) { + super(move, user, 0); - this.chargeAnim = chargeAnim; - } + this.chargeAnim = chargeAnim; + } - isOppAnim(): boolean { - return !this.user.isPlayer() && Array.isArray(chargeAnims.get(this.chargeAnim)); - } + isOppAnim(): boolean { + return !this.user.isPlayer() && Array.isArray(chargeAnims.get(this.chargeAnim)); + } - getAnim(): AnimConfig { - return chargeAnims.get(this.chargeAnim) instanceof AnimConfig - ? chargeAnims.get(this.chargeAnim) as AnimConfig - : chargeAnims.get(this.chargeAnim)[this.user.isPlayer() ? 0 : 1] as AnimConfig; - } + getAnim(): AnimConfig { + return chargeAnims.get(this.chargeAnim) instanceof AnimConfig + ? chargeAnims.get(this.chargeAnim) as AnimConfig + : chargeAnims.get(this.chargeAnim)[this.user.isPlayer() ? 0 : 1] as AnimConfig; + } } export async function populateAnims() { - const commonAnimNames = Utils.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 chargeAnimMatchNames = chargeAnimNames.map(k => k.replace(/\_/g, ' ')); - const chargeAnimIds = Utils.getEnumValues(ChargeAnim) as ChargeAnim[]; - const commonNamePattern = /name: (?:Common:)?(Opp )?(.*)/; - const moveNameToId = {}; - for (let move of Utils.getEnumValues(Moves).slice(1)) { - const moveName = Moves[move].toUpperCase().replace(/\_/g, ''); - moveNameToId[moveName] = move; - } + const commonAnimNames = Utils.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 chargeAnimMatchNames = chargeAnimNames.map(k => k.replace(/\_/g, ' ')); + const chargeAnimIds = Utils.getEnumValues(ChargeAnim) as ChargeAnim[]; + const commonNamePattern = /name: (?:Common:)?(Opp )?(.*)/; + const moveNameToId = {}; + for (const move of Utils.getEnumValues(Moves).slice(1)) { + const moveName = Moves[move].toUpperCase().replace(/\_/g, ''); + moveNameToId[moveName] = move; + } - const seNames = [];//(await fs.readdir('./public/audio/se/battle_anims/')).map(se => se.toString()); + const seNames = [];//(await fs.readdir('./public/audio/se/battle_anims/')).map(se => se.toString()); - const animsData = [];//battleAnimRawData.split('!ruby/array:PBAnimation').slice(1); - for (let a = 0; a < animsData.length; a++) { - const fields = animsData[a].split('@').slice(1); + const animsData = [];//battleAnimRawData.split('!ruby/array:PBAnimation').slice(1); + for (let a = 0; a < animsData.length; a++) { + const fields = animsData[a].split('@').slice(1); - const nameField = fields.find(f => f.startsWith('name: ')); + const nameField = fields.find(f => f.startsWith('name: ')); - let isOppMove: boolean; - let commonAnimId: CommonAnim; - let chargeAnimId: ChargeAnim; - if (!nameField.startsWith('name: Move:') && !(isOppMove = nameField.startsWith('name: OppMove:'))) { - const nameMatch = commonNamePattern.exec(nameField); - const name = nameMatch[2].toLowerCase(); - if (commonAnimMatchNames.indexOf(name) > -1) - commonAnimId = commonAnimIds[commonAnimMatchNames.indexOf(name)]; - else if (chargeAnimMatchNames.indexOf(name) > -1) { - isOppMove = nameField.startsWith('name: Opp '); - chargeAnimId = chargeAnimIds[chargeAnimMatchNames.indexOf(name)]; - } + let isOppMove: boolean; + let commonAnimId: CommonAnim; + let chargeAnimId: ChargeAnim; + if (!nameField.startsWith('name: Move:') && !(isOppMove = nameField.startsWith('name: OppMove:'))) { + const nameMatch = commonNamePattern.exec(nameField); + const name = nameMatch[2].toLowerCase(); + if (commonAnimMatchNames.indexOf(name) > -1) + commonAnimId = commonAnimIds[commonAnimMatchNames.indexOf(name)]; + else if (chargeAnimMatchNames.indexOf(name) > -1) { + isOppMove = nameField.startsWith('name: Opp '); + chargeAnimId = chargeAnimIds[chargeAnimMatchNames.indexOf(name)]; + } + } + const nameIndex = nameField.indexOf(':', 5) + 1; + const animName = nameField.slice(nameIndex, nameField.indexOf('\n', nameIndex)); + if (!moveNameToId.hasOwnProperty(animName) && !commonAnimId && !chargeAnimId) + continue; + const anim = commonAnimId || chargeAnimId ? new AnimConfig() : new AnimConfig(); + if (anim instanceof AnimConfig) + (anim as AnimConfig).id = moveNameToId[animName]; + if (commonAnimId) + commonAnims.set(commonAnimId, anim); + else if (chargeAnimId) + chargeAnims.set(chargeAnimId, !isOppMove ? anim : [ chargeAnims.get(chargeAnimId) as AnimConfig, anim ]); + else + moveAnims.set(moveNameToId[animName], !isOppMove ? anim as AnimConfig : [ moveAnims.get(moveNameToId[animName]) as AnimConfig, anim as AnimConfig ]); + for (let f = 0; f < fields.length; f++) { + const field = fields[f]; + const fieldName = field.slice(0, field.indexOf(':')); + const fieldData = field.slice(fieldName.length + 1, field.lastIndexOf('\n')).trim(); + switch (fieldName) { + case 'array': + const framesData = fieldData.split(' - - - ').slice(1); + for (let fd = 0; fd < framesData.length; fd++) { + anim.frames.push([]); + const frameData = framesData[fd]; + const focusFramesData = frameData.split(' - - '); + for (let tf = 0; tf < focusFramesData.length; tf++) { + const values = focusFramesData[tf].replace(/ \- /g, '').split('\n'); + const targetFrame = new AnimFrame(parseFloat(values[0]), parseFloat(values[1]), parseFloat(values[2]), parseFloat(values[11]), parseFloat(values[3]), + parseInt(values[4]) === 1, parseInt(values[6]) === 1, parseInt(values[5]), parseInt(values[7]), parseInt(values[8]), parseInt(values[12]), parseInt(values[13]), + parseInt(values[14]), parseInt(values[15]), parseInt(values[16]), parseInt(values[17]), parseInt(values[18]), parseInt(values[19]), + parseInt(values[21]), parseInt(values[22]), parseInt(values[23]), parseInt(values[24]), parseInt(values[20]) === 1, parseInt(values[25]), parseInt(values[26]) as AnimFocus); + anim.frames[fd].push(targetFrame); + } } - const nameIndex = nameField.indexOf(':', 5) + 1; - const animName = nameField.slice(nameIndex, nameField.indexOf('\n', nameIndex)); - if (!moveNameToId.hasOwnProperty(animName) && !commonAnimId && !chargeAnimId) + break; + case 'graphic': + const graphic = fieldData !== '\'\'' ? fieldData : ''; + anim.graphic = graphic.indexOf('.') > -1 + ? graphic.slice(0, fieldData.indexOf('.')) + : graphic; + break; + case 'timing': + const timingEntries = fieldData.split('- !ruby/object:PBAnimTiming ').slice(1); + for (let t = 0; t < timingEntries.length; t++) { + const timingData = timingEntries[t].replace(/\n/g, ' ').replace(/[ ]{2,}/g, ' ').replace(/[a-z]+: ! '', /ig, '').replace(/name: (.*?),/, 'name: "$1",') + .replace(/flashColor: !ruby\/object:Color { alpha: ([\d\.]+), blue: ([\d\.]+), green: ([\d\.]+), red: ([\d\.]+)}/, 'flashRed: $4, flashGreen: $3, flashBlue: $2, flashAlpha: $1'); + const frameIndex = parseInt(/frame: (\d+)/.exec(timingData)[1]); + let resourceName = /name: "(.*?)"/.exec(timingData)[1].replace('\'\'', ''); + const timingType = parseInt(/timingType: (\d)/.exec(timingData)[1]); + let timedEvent: AnimTimedEvent; + switch (timingType) { + case 0: + if (resourceName && resourceName.indexOf('.') === -1) { + let ext: string; + [ 'wav', 'mp3', 'm4a' ].every(e => { + if (seNames.indexOf(`${resourceName}.${e}`) > -1) { + ext = e; + return false; + } + return true; + }); + if (!ext) + ext = '.wav'; + resourceName += `.${ext}`; + } + timedEvent = new AnimTimedSoundEvent(frameIndex, resourceName); + break; + case 1: + timedEvent = new AnimTimedAddBgEvent(frameIndex, resourceName.slice(0, resourceName.indexOf('.'))); + break; + case 2: + timedEvent = new AnimTimedUpdateBgEvent(frameIndex, resourceName.slice(0, resourceName.indexOf('.'))); + break; + } + if (!timedEvent) continue; - let anim = commonAnimId || chargeAnimId ? new AnimConfig() : new AnimConfig(); - if (anim instanceof AnimConfig) - (anim as AnimConfig).id = moveNameToId[animName]; - if (commonAnimId) - commonAnims.set(commonAnimId, anim); - else if (chargeAnimId) - chargeAnims.set(chargeAnimId, !isOppMove ? anim : [ chargeAnims.get(chargeAnimId) as AnimConfig, anim ]); - else - moveAnims.set(moveNameToId[animName], !isOppMove ? anim as AnimConfig : [ moveAnims.get(moveNameToId[animName]) as AnimConfig, anim as AnimConfig ]); - for (let f = 0; f < fields.length; f++) { - const field = fields[f]; - const fieldName = field.slice(0, field.indexOf(':')); - const fieldData = field.slice(fieldName.length + 1, field.lastIndexOf('\n')).trim(); - switch (fieldName) { - case 'array': - const framesData = fieldData.split(' - - - ').slice(1); - for (let fd = 0; fd < framesData.length; fd++) { - anim.frames.push([]); - const frameData = framesData[fd]; - const focusFramesData = frameData.split(' - - '); - for (let tf = 0; tf < focusFramesData.length; tf++) { - const values = focusFramesData[tf].replace(/ \- /g, '').split('\n'); - const targetFrame = new AnimFrame(parseFloat(values[0]), parseFloat(values[1]), parseFloat(values[2]), parseFloat(values[11]), parseFloat(values[3]), - parseInt(values[4]) === 1, parseInt(values[6]) === 1, parseInt(values[5]), parseInt(values[7]), parseInt(values[8]), parseInt(values[12]), parseInt(values[13]), - parseInt(values[14]), parseInt(values[15]), parseInt(values[16]), parseInt(values[17]), parseInt(values[18]), parseInt(values[19]), - parseInt(values[21]), parseInt(values[22]), parseInt(values[23]), parseInt(values[24]), parseInt(values[20]) === 1, parseInt(values[25]), parseInt(values[26]) as AnimFocus); - anim.frames[fd].push(targetFrame); - } - } - break; - case 'graphic': - const graphic = fieldData !== "''" ? fieldData : ''; - anim.graphic = graphic.indexOf('.') > -1 - ? graphic.slice(0, fieldData.indexOf('.')) - : graphic; - break; - case 'timing': - const timingEntries = fieldData.split('- !ruby/object:PBAnimTiming ').slice(1); - for (let t = 0; t < timingEntries.length; t++) { - const timingData = timingEntries[t].replace(/\n/g, ' ').replace(/[ ]{2,}/g, ' ').replace(/[a-z]+: ! '', /ig, '').replace(/name: (.*?),/, 'name: "$1",') - .replace(/flashColor: !ruby\/object:Color { alpha: ([\d\.]+), blue: ([\d\.]+), green: ([\d\.]+), red: ([\d\.]+)}/, 'flashRed: $4, flashGreen: $3, flashBlue: $2, flashAlpha: $1'); - const frameIndex = parseInt(/frame: (\d+)/.exec(timingData)[1]); - let resourceName = /name: "(.*?)"/.exec(timingData)[1].replace("''", ''); - const timingType = parseInt(/timingType: (\d)/.exec(timingData)[1]); - let timedEvent: AnimTimedEvent; - switch (timingType) { - case 0: - if (resourceName && resourceName.indexOf('.') === -1) { - let ext: string; - [ 'wav', 'mp3', 'm4a' ].every(e => { - if (seNames.indexOf(`${resourceName}.${e}`) > -1) { - ext = e; - return false; - } - return true; - }); - if (!ext) - ext = '.wav'; - resourceName += `.${ext}`; - } - timedEvent = new AnimTimedSoundEvent(frameIndex, resourceName); - break; - case 1: - timedEvent = new AnimTimedAddBgEvent(frameIndex, resourceName.slice(0, resourceName.indexOf('.'))); - break; - case 2: - timedEvent = new AnimTimedUpdateBgEvent(frameIndex, resourceName.slice(0, resourceName.indexOf('.'))); - break; - } - if (!timedEvent) - continue; - const propPattern = /([a-z]+): (.*?)(?:,|\})/ig; - let propMatch: RegExpExecArray; - while ((propMatch = propPattern.exec(timingData))) { - const prop = propMatch[1]; - let value: any = propMatch[2]; - switch (prop) { - case 'bgX': - case 'bgY': - value = parseFloat(value); - break; - case 'volume': - case 'pitch': - case 'opacity': - case 'colorRed': - case 'colorGreen': - case 'colorBlue': - case 'colorAlpha': - case 'duration': - case 'flashScope': - case 'flashRed': - case 'flashGreen': - case 'flashBlue': - case 'flashAlpha': - case 'flashDuration': - value = parseInt(value); - break; - } - if (timedEvent.hasOwnProperty(prop)) - timedEvent[prop] = value; - } - if (!anim.frameTimedEvents.has(frameIndex)) - anim.frameTimedEvents.set(frameIndex, []); - anim.frameTimedEvents.get(frameIndex).push(timedEvent); - } - break; - case 'position': - anim.position = parseInt(fieldData); - break; - case 'hue': - anim.hue = parseInt(fieldData); - break; + const propPattern = /([a-z]+): (.*?)(?:,|\})/ig; + let propMatch: RegExpExecArray; + while ((propMatch = propPattern.exec(timingData))) { + const prop = propMatch[1]; + let value: any = propMatch[2]; + switch (prop) { + case 'bgX': + case 'bgY': + value = parseFloat(value); + break; + case 'volume': + case 'pitch': + case 'opacity': + case 'colorRed': + case 'colorGreen': + case 'colorBlue': + case 'colorAlpha': + case 'duration': + case 'flashScope': + case 'flashRed': + case 'flashGreen': + case 'flashBlue': + case 'flashAlpha': + case 'flashDuration': + value = parseInt(value); + break; } + if (timedEvent.hasOwnProperty(prop)) + timedEvent[prop] = value; + } + if (!anim.frameTimedEvents.has(frameIndex)) + anim.frameTimedEvents.set(frameIndex, []); + anim.frameTimedEvents.get(frameIndex).push(timedEvent); } + break; + case 'position': + anim.position = parseInt(fieldData); + break; + case 'hue': + anim.hue = parseInt(fieldData); + break; + } + } + } + + const animReplacer = (k, v) => { + if (k === 'id' && !v) + return undefined; + if (v instanceof Map) + return Object.fromEntries(v); + if (v instanceof AnimTimedEvent) + v['eventType'] = v.getEventType(); + return v; + }; + + const animConfigProps = [ 'id', 'graphic', 'frames', 'frameTimedEvents', 'position', 'hue' ]; + const animFrameProps = [ 'x', 'y', 'zoomX', 'zoomY', 'angle', 'mirror', 'visible', 'blendType', 'target', 'graphicFrame', 'opacity', 'color', 'tone', 'flash', 'locked', 'priority', 'focus' ]; + const propSets = [ animConfigProps, animFrameProps ]; + + const animComparator = (a: Element, b: Element) => { + let props: string[]; + const p = 0; + for (let p = 0; p < propSets.length; p++) { + props = propSets[p]; + const ai = props.indexOf(a.key); + if (ai === -1) + continue; + const bi = props.indexOf(b.key); + + return ai < bi ? -1 : ai > bi ? 1 : 0; } - const animReplacer = (k, v) => { - if (k === 'id' && !v) - return undefined; - if (v instanceof Map) - return Object.fromEntries(v); - if (v instanceof AnimTimedEvent) - v['eventType'] = v.getEventType(); - return v; - }; + return 0; + }; - const animConfigProps = [ 'id', 'graphic', 'frames', 'frameTimedEvents', 'position', 'hue' ]; - const animFrameProps = [ 'x', 'y', 'zoomX', 'zoomY', 'angle', 'mirror', 'visible', 'blendType', 'target', 'graphicFrame', 'opacity', 'color', 'tone', 'flash', 'locked', 'priority', 'focus' ]; - const propSets = [ animConfigProps, animFrameProps ]; - - const animComparator = (a: Element, b: Element) => { - let props: string[]; - let p = 0; - for (let p = 0; p < propSets.length; p++) { - props = propSets[p]; - let ai = props.indexOf(a.key); - if (ai === -1) - continue; - let bi = props.indexOf(b.key); - - return ai < bi ? -1 : ai > bi ? 1 : 0; - } - - return 0; - }; - - /*for (let ma of moveAnims.keys()) { + /*for (let ma of moveAnims.keys()) { const data = moveAnims.get(ma); (async () => { await fs.writeFile(`../public/battle-anims/${Moves[ma].toLowerCase().replace(/\_/g, '-')}.json`, stringify(data, { replacer: animReplacer, cmp: animComparator, space: ' ' })); @@ -1201,4 +1201,4 @@ export async function populateAnims() { await fs.writeFile(`../public/battle-anims/common-${commonAnimNames[commonAnimIds.indexOf(cma)].replace(/\_/g, '-')}.json`, stringify(data, { replacer: animReplacer, cmp: animComparator, space: ' ' })); })(); }*/ -} \ No newline at end of file +} diff --git a/src/data/battle-stat.ts b/src/data/battle-stat.ts index e0cb6fb53f0..3d04446c9ca 100644 --- a/src/data/battle-stat.ts +++ b/src/data/battle-stat.ts @@ -11,53 +11,53 @@ export enum BattleStat { export function getBattleStatName(stat: BattleStat) { switch (stat) { - case BattleStat.ATK: - return 'Attack'; - case BattleStat.DEF: - return 'Defense'; - case BattleStat.SPATK: - return 'Sp. Atk'; - case BattleStat.SPDEF: - return 'Sp. Def'; - case BattleStat.SPD: - return 'Speed'; - case BattleStat.ACC: - return 'Accuracy'; - case BattleStat.EVA: - return 'Evasiveness'; - default: - return '???'; + case BattleStat.ATK: + return 'Attack'; + case BattleStat.DEF: + return 'Defense'; + case BattleStat.SPATK: + return 'Sp. Atk'; + case BattleStat.SPDEF: + return 'Sp. Def'; + case BattleStat.SPD: + return 'Speed'; + case BattleStat.ACC: + return 'Accuracy'; + case BattleStat.EVA: + return 'Evasiveness'; + default: + return '???'; } } export function getBattleStatLevelChangeDescription(levels: integer, up: boolean) { if (up) { switch (levels) { - case 1: - return 'rose'; - case 2: - return 'sharply rose'; - case 3: - case 4: - case 5: - case 6: - return 'rose drastically'; - default: - return 'won\'t go any higher'; + case 1: + return 'rose'; + case 2: + return 'sharply rose'; + case 3: + case 4: + case 5: + case 6: + return 'rose drastically'; + default: + return 'won\'t go any higher'; } } else { switch (levels) { - case 1: - return 'fell'; - case 2: - return 'harshly fell'; - case 3: - case 4: - case 5: - case 6: - return 'severely fell'; - default: - return 'won\'t go any lower'; + case 1: + return 'fell'; + case 2: + return 'harshly fell'; + case 3: + case 4: + case 5: + case 6: + return 'severely fell'; + default: + return 'won\'t go any lower'; } } -} \ No newline at end of file +} diff --git a/src/data/battler-tags.ts b/src/data/battler-tags.ts index 849128517d2..9107ee02564 100644 --- a/src/data/battler-tags.ts +++ b/src/data/battler-tags.ts @@ -1,20 +1,20 @@ -import { CommonAnim, CommonBattleAnim } from "./battle-anims"; -import { CommonAnimPhase, MoveEffectPhase, MovePhase, PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from "../phases"; -import { getPokemonMessage, getPokemonPrefix } from "../messages"; -import Pokemon, { MoveResult, HitResult } from "../field/pokemon"; -import { Stat, getStatName } from "./pokemon-stat"; -import { StatusEffect } from "./status-effect"; -import * as Utils from "../utils"; -import { Moves } from "./enums/moves"; -import { ChargeAttr, MoveFlags, allMoves } from "./move"; -import { Type } from "./type"; -import { BlockNonDirectDamageAbAttr, FlinchEffectAbAttr, ReverseDrainAbAttr, applyAbAttrs } from "./ability"; -import { Abilities } from "./enums/abilities"; -import { BattlerTagType } from "./enums/battler-tag-type"; -import { TerrainType } from "./terrain"; -import { WeatherType } from "./weather"; -import { BattleStat } from "./battle-stat"; -import { allAbilities } from "./ability"; +import { CommonAnim, CommonBattleAnim } from './battle-anims'; +import { CommonAnimPhase, MoveEffectPhase, MovePhase, PokemonHealPhase, ShowAbilityPhase, StatChangePhase } from '../phases'; +import { getPokemonMessage, getPokemonPrefix } from '../messages'; +import Pokemon, { MoveResult, HitResult } from '../field/pokemon'; +import { Stat, getStatName } from './pokemon-stat'; +import { StatusEffect } from './status-effect'; +import * as Utils from '../utils'; +import { Moves } from './enums/moves'; +import { ChargeAttr, MoveFlags, allMoves } from './move'; +import { Type } from './type'; +import { BlockNonDirectDamageAbAttr, FlinchEffectAbAttr, ReverseDrainAbAttr, applyAbAttrs } from './ability'; +import { Abilities } from './enums/abilities'; +import { BattlerTagType } from './enums/battler-tag-type'; +import { TerrainType } from './terrain'; +import { WeatherType } from './weather'; +import { BattleStat } from './battle-stat'; +import { allAbilities } from './ability'; export enum BattlerTagLapseType { FAINT, @@ -97,7 +97,7 @@ export class RechargingTag extends BattlerTag { onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.getMoveQueue().push({ move: Moves.NONE, targets: [] }) + pokemon.getMoveQueue().push({ move: Moves.NONE, targets: [] }); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { @@ -179,24 +179,24 @@ export class FlinchedTag extends BattlerTag { export class InterruptedTag extends BattlerTag { constructor(sourceMove: Moves){ - super(BattlerTagType.INTERRUPTED, BattlerTagLapseType.PRE_MOVE, 0, sourceMove) + super(BattlerTagType.INTERRUPTED, BattlerTagLapseType.PRE_MOVE, 0, sourceMove); } canAdd(pokemon: Pokemon): boolean { - return !!pokemon.getTag(BattlerTagType.FLYING) + return !!pokemon.getTag(BattlerTagType.FLYING); } onAdd(pokemon: Pokemon): void { super.onAdd(pokemon); - pokemon.getMoveQueue().shift() - pokemon.pushMoveHistory({move: Moves.NONE, result: MoveResult.OTHER}) + pokemon.getMoveQueue().shift(); + pokemon.pushMoveHistory({move: Moves.NONE, result: MoveResult.OTHER}); } lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { super.lapse(pokemon, lapseType); (pokemon.scene.getCurrentPhase() as MovePhase).cancel(); - return true + return true; } } @@ -450,14 +450,14 @@ export class EncoreTag extends BattlerTag { return false; switch (repeatableMove.move) { - case Moves.MIMIC: - case Moves.MIRROR_MOVE: - case Moves.TRANSFORM: - case Moves.STRUGGLE: - case Moves.SKETCH: - case Moves.SLEEP_TALK: - case Moves.ENCORE: - return false; + case Moves.MIMIC: + case Moves.MIRROR_MOVE: + case Moves.TRANSFORM: + case Moves.STRUGGLE: + case Moves.SKETCH: + case Moves.SLEEP_TALK: + case Moves.ENCORE: + return false; } if (allMoves[repeatableMove.move].getAttrs(ChargeAttr).length && repeatableMove.result === MoveResult.OTHER) @@ -526,7 +526,7 @@ export class IngrainTag extends TrappedTag { if (ret) pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(), Math.floor(pokemon.getMaxHp() / 16), - getPokemonMessage(pokemon, ` absorbed\nnutrients with its roots!`), true)); + getPokemonMessage(pokemon, ' absorbed\nnutrients with its roots!'), true)); return ret; } @@ -579,7 +579,7 @@ export class MinimizeTag extends BattlerTag { lapse(pokemon: Pokemon, lapseType: BattlerTagLapseType): boolean { //If a pokemon dynamaxes they lose minimized status if(pokemon.isMax()){ - return false + return false; } return lapseType !== BattlerTagLapseType.CUSTOM || super.lapse(pokemon, lapseType); } @@ -651,7 +651,7 @@ export abstract class DamagingTrapTag extends TrappedTag { applyAbAttrs(BlockNonDirectDamageAbAttr, pokemon, cancelled); if (!cancelled.value) - pokemon.damageAndUpdate(Math.ceil(pokemon.getMaxHp() / 8)) + pokemon.damageAndUpdate(Math.ceil(pokemon.getMaxHp() / 8)); } return ret; @@ -726,7 +726,7 @@ export class MagmaStormTag extends DamagingTrapTag { } getTrapMessage(pokemon: Pokemon): string { - return getPokemonMessage(pokemon, ` became trapped\nby swirling magma!`); + return getPokemonMessage(pokemon, ' became trapped\nby swirling magma!'); } } @@ -736,7 +736,7 @@ export class SnapTrapTag extends DamagingTrapTag { } getTrapMessage(pokemon: Pokemon): string { - return getPokemonMessage(pokemon, ` got trapped\nby a snap trap!`); + return getPokemonMessage(pokemon, ' got trapped\nby a snap trap!'); } } @@ -1049,12 +1049,12 @@ export class HighestStatBoostTag extends AbilityBattlerTag { this.stat = highestStat; switch (this.stat) { - case Stat.SPD: - this.multiplier = 1.5; - break; - default: - this.multiplier = 1.3; - break; + case Stat.SPD: + this.multiplier = 1.5; + break; + default: + this.multiplier = 1.3; + break; } pokemon.scene.queueMessage(getPokemonMessage(pokemon, `'s ${getStatName(highestStat)}\nwas heightened!`), null, false, null, true); @@ -1296,118 +1296,118 @@ export class CursedTag extends BattlerTag { export function getBattlerTag(tagType: BattlerTagType, turnCount: integer, sourceMove: Moves, sourceId: integer): BattlerTag { switch (tagType) { - case BattlerTagType.RECHARGING: - return new RechargingTag(sourceMove); - case BattlerTagType.FLINCHED: - return new FlinchedTag(sourceMove); - case BattlerTagType.INTERRUPTED: - return new InterruptedTag(sourceMove); - case BattlerTagType.CONFUSED: - return new ConfusedTag(turnCount, sourceMove); - case BattlerTagType.INFATUATED: - return new InfatuatedTag(sourceMove, sourceId); - case BattlerTagType.SEEDED: - return new SeedTag(sourceId); - case BattlerTagType.NIGHTMARE: - return new NightmareTag(); - case BattlerTagType.FRENZY: - return new FrenzyTag(sourceMove, sourceId); - case BattlerTagType.CHARGING: - return new ChargingTag(sourceMove, sourceId); - case BattlerTagType.ENCORE: - return new EncoreTag(sourceId); - case BattlerTagType.HELPING_HAND: - return new HelpingHandTag(sourceId); - case BattlerTagType.INGRAIN: - return new IngrainTag(sourceId); - case BattlerTagType.AQUA_RING: - return new AquaRingTag(); - case BattlerTagType.DROWSY: - return new DrowsyTag(); - case BattlerTagType.TRAPPED: - return new TrappedTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); - case BattlerTagType.BIND: - return new BindTag(turnCount, sourceId); - case BattlerTagType.WRAP: - return new WrapTag(turnCount, sourceId); - case BattlerTagType.FIRE_SPIN: - return new FireSpinTag(turnCount, sourceId); - case BattlerTagType.WHIRLPOOL: - return new WhirlpoolTag(turnCount, sourceId); - case BattlerTagType.CLAMP: - return new ClampTag(turnCount, sourceId); - case BattlerTagType.SAND_TOMB: - return new SandTombTag(turnCount, sourceId); - case BattlerTagType.MAGMA_STORM: - return new MagmaStormTag(turnCount, sourceId); - case BattlerTagType.SNAP_TRAP: - return new SnapTrapTag(turnCount, sourceId); - case BattlerTagType.THUNDER_CAGE: - return new ThunderCageTag(turnCount, sourceId); - case BattlerTagType.INFESTATION: - return new InfestationTag(turnCount, sourceId); - case BattlerTagType.PROTECTED: - return new ProtectedTag(sourceMove); - case BattlerTagType.SPIKY_SHIELD: - return new ContactDamageProtectedTag(sourceMove, 8); - case BattlerTagType.KINGS_SHIELD: - return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.ATK, -1); - case BattlerTagType.OBSTRUCT: - return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.DEF, -2); - case BattlerTagType.SILK_TRAP: - return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.SPD, -1); - case BattlerTagType.BANEFUL_BUNKER: - return new ContactPoisonProtectedTag(sourceMove); - case BattlerTagType.BURNING_BULWARK: - return new ContactBurnProtectedTag(sourceMove); - case BattlerTagType.ENDURING: - return new EnduringTag(sourceMove); - case BattlerTagType.STURDY: - return new SturdyTag(sourceMove); - case BattlerTagType.PERISH_SONG: - return new PerishSongTag(turnCount); - case BattlerTagType.TRUANT: - return new TruantTag(); - case BattlerTagType.SLOW_START: - return new SlowStartTag(); - case BattlerTagType.PROTOSYNTHESIS: - return new WeatherHighestStatBoostTag(tagType, Abilities.PROTOSYNTHESIS, WeatherType.SUNNY, WeatherType.HARSH_SUN); - case BattlerTagType.QUARK_DRIVE: - return new TerrainHighestStatBoostTag(tagType, Abilities.QUARK_DRIVE, TerrainType.ELECTRIC); - case BattlerTagType.FLYING: - case BattlerTagType.UNDERGROUND: - case BattlerTagType.UNDERWATER: - case BattlerTagType.HIDDEN: - return new HideSpriteTag(tagType, turnCount, sourceMove); - case BattlerTagType.FIRE_BOOST: - return new TypeBoostTag(tagType, sourceMove, Type.FIRE, 1.5, false); - case BattlerTagType.CRIT_BOOST: - return new CritBoostTag(tagType, sourceMove); - case BattlerTagType.ALWAYS_CRIT: - return new AlwaysCritTag(sourceMove); - case BattlerTagType.NO_CRIT: - return new BattlerTag(tagType, BattlerTagLapseType.AFTER_MOVE, turnCount, sourceMove); - case BattlerTagType.IGNORE_ACCURACY: - return new IgnoreAccuracyTag(sourceMove); - case BattlerTagType.BYPASS_SLEEP: - return new BattlerTag(BattlerTagType.BYPASS_SLEEP, BattlerTagLapseType.TURN_END, turnCount, sourceMove); - case BattlerTagType.IGNORE_FLYING: - return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount, sourceMove); - case BattlerTagType.GROUNDED: - return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount - 1, sourceMove); - case BattlerTagType.SALT_CURED: - return new SaltCuredTag(sourceId); - case BattlerTagType.CURSED: - return new CursedTag(sourceId); - case BattlerTagType.CHARGED: - return new TypeBoostTag(tagType, sourceMove, Type.ELECTRIC, 2, true); - case BattlerTagType.MAGNET_RISEN: - return new MagnetRisenTag(tagType, sourceMove); - case BattlerTagType.MINIMIZED: - return new MinimizeTag(); - case BattlerTagType.NONE: - default: - return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); + case BattlerTagType.RECHARGING: + return new RechargingTag(sourceMove); + case BattlerTagType.FLINCHED: + return new FlinchedTag(sourceMove); + case BattlerTagType.INTERRUPTED: + return new InterruptedTag(sourceMove); + case BattlerTagType.CONFUSED: + return new ConfusedTag(turnCount, sourceMove); + case BattlerTagType.INFATUATED: + return new InfatuatedTag(sourceMove, sourceId); + case BattlerTagType.SEEDED: + return new SeedTag(sourceId); + case BattlerTagType.NIGHTMARE: + return new NightmareTag(); + case BattlerTagType.FRENZY: + return new FrenzyTag(sourceMove, sourceId); + case BattlerTagType.CHARGING: + return new ChargingTag(sourceMove, sourceId); + case BattlerTagType.ENCORE: + return new EncoreTag(sourceId); + case BattlerTagType.HELPING_HAND: + return new HelpingHandTag(sourceId); + case BattlerTagType.INGRAIN: + return new IngrainTag(sourceId); + case BattlerTagType.AQUA_RING: + return new AquaRingTag(); + case BattlerTagType.DROWSY: + return new DrowsyTag(); + case BattlerTagType.TRAPPED: + return new TrappedTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); + case BattlerTagType.BIND: + return new BindTag(turnCount, sourceId); + case BattlerTagType.WRAP: + return new WrapTag(turnCount, sourceId); + case BattlerTagType.FIRE_SPIN: + return new FireSpinTag(turnCount, sourceId); + case BattlerTagType.WHIRLPOOL: + return new WhirlpoolTag(turnCount, sourceId); + case BattlerTagType.CLAMP: + return new ClampTag(turnCount, sourceId); + case BattlerTagType.SAND_TOMB: + return new SandTombTag(turnCount, sourceId); + case BattlerTagType.MAGMA_STORM: + return new MagmaStormTag(turnCount, sourceId); + case BattlerTagType.SNAP_TRAP: + return new SnapTrapTag(turnCount, sourceId); + case BattlerTagType.THUNDER_CAGE: + return new ThunderCageTag(turnCount, sourceId); + case BattlerTagType.INFESTATION: + return new InfestationTag(turnCount, sourceId); + case BattlerTagType.PROTECTED: + return new ProtectedTag(sourceMove); + case BattlerTagType.SPIKY_SHIELD: + return new ContactDamageProtectedTag(sourceMove, 8); + case BattlerTagType.KINGS_SHIELD: + return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.ATK, -1); + case BattlerTagType.OBSTRUCT: + return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.DEF, -2); + case BattlerTagType.SILK_TRAP: + return new ContactStatChangeProtectedTag(sourceMove, tagType, BattleStat.SPD, -1); + case BattlerTagType.BANEFUL_BUNKER: + return new ContactPoisonProtectedTag(sourceMove); + case BattlerTagType.BURNING_BULWARK: + return new ContactBurnProtectedTag(sourceMove); + case BattlerTagType.ENDURING: + return new EnduringTag(sourceMove); + case BattlerTagType.STURDY: + return new SturdyTag(sourceMove); + case BattlerTagType.PERISH_SONG: + return new PerishSongTag(turnCount); + case BattlerTagType.TRUANT: + return new TruantTag(); + case BattlerTagType.SLOW_START: + return new SlowStartTag(); + case BattlerTagType.PROTOSYNTHESIS: + return new WeatherHighestStatBoostTag(tagType, Abilities.PROTOSYNTHESIS, WeatherType.SUNNY, WeatherType.HARSH_SUN); + case BattlerTagType.QUARK_DRIVE: + return new TerrainHighestStatBoostTag(tagType, Abilities.QUARK_DRIVE, TerrainType.ELECTRIC); + case BattlerTagType.FLYING: + case BattlerTagType.UNDERGROUND: + case BattlerTagType.UNDERWATER: + case BattlerTagType.HIDDEN: + return new HideSpriteTag(tagType, turnCount, sourceMove); + case BattlerTagType.FIRE_BOOST: + return new TypeBoostTag(tagType, sourceMove, Type.FIRE, 1.5, false); + case BattlerTagType.CRIT_BOOST: + return new CritBoostTag(tagType, sourceMove); + case BattlerTagType.ALWAYS_CRIT: + return new AlwaysCritTag(sourceMove); + case BattlerTagType.NO_CRIT: + return new BattlerTag(tagType, BattlerTagLapseType.AFTER_MOVE, turnCount, sourceMove); + case BattlerTagType.IGNORE_ACCURACY: + return new IgnoreAccuracyTag(sourceMove); + case BattlerTagType.BYPASS_SLEEP: + return new BattlerTag(BattlerTagType.BYPASS_SLEEP, BattlerTagLapseType.TURN_END, turnCount, sourceMove); + case BattlerTagType.IGNORE_FLYING: + return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount, sourceMove); + case BattlerTagType.GROUNDED: + return new BattlerTag(tagType, BattlerTagLapseType.TURN_END, turnCount - 1, sourceMove); + case BattlerTagType.SALT_CURED: + return new SaltCuredTag(sourceId); + case BattlerTagType.CURSED: + return new CursedTag(sourceId); + case BattlerTagType.CHARGED: + return new TypeBoostTag(tagType, sourceMove, Type.ELECTRIC, 2, true); + case BattlerTagType.MAGNET_RISEN: + return new MagnetRisenTag(tagType, sourceMove); + case BattlerTagType.MINIMIZED: + return new MinimizeTag(); + case BattlerTagType.NONE: + default: + return new BattlerTag(tagType, BattlerTagLapseType.CUSTOM, turnCount, sourceMove, sourceId); } } diff --git a/src/data/berry.ts b/src/data/berry.ts index e13d4532b3e..698557f8518 100644 --- a/src/data/berry.ts +++ b/src/data/berry.ts @@ -1,12 +1,12 @@ -import { PokemonHealPhase, StatChangePhase } from "../phases"; -import { getPokemonMessage } from "../messages"; -import Pokemon, { HitResult } from "../field/pokemon"; -import { getBattleStatName } from "./battle-stat"; -import { BattleStat } from "./battle-stat"; -import { BattlerTagType } from "./enums/battler-tag-type"; -import { getStatusEffectHealText } from "./status-effect"; -import * as Utils from "../utils"; -import { DoubleBerryEffectAbAttr, ReduceBerryUseThresholdAbAttr, applyAbAttrs } from "./ability"; +import { PokemonHealPhase, StatChangePhase } from '../phases'; +import { getPokemonMessage } from '../messages'; +import Pokemon, { HitResult } from '../field/pokemon'; +import { getBattleStatName } from './battle-stat'; +import { BattleStat } from './battle-stat'; +import { BattlerTagType } from './enums/battler-tag-type'; +import { getStatusEffectHealText } from './status-effect'; +import * as Utils from '../utils'; +import { DoubleBerryEffectAbAttr, ReduceBerryUseThresholdAbAttr, applyAbAttrs } from './ability'; import i18next from '../plugins/i18n'; export enum BerryType { @@ -35,41 +35,41 @@ export type BerryPredicate = (pokemon: Pokemon) => boolean; export function getBerryPredicate(berryType: BerryType): BerryPredicate { switch (berryType) { - case BerryType.SITRUS: - return (pokemon: Pokemon) => pokemon.getHpRatio() < 0.5; - case BerryType.LUM: - return (pokemon: Pokemon) => !!pokemon.status || !!pokemon.getTag(BattlerTagType.CONFUSED); - case BerryType.ENIGMA: - return (pokemon: Pokemon) => !!pokemon.turnData.attacksReceived.filter(a => a.result === HitResult.SUPER_EFFECTIVE).length; - case BerryType.LIECHI: - case BerryType.GANLON: - case BerryType.PETAYA: - case BerryType.APICOT: - case BerryType.SALAC: - return (pokemon: Pokemon) => { - const threshold = new Utils.NumberHolder(0.25); - const battleStat = (berryType - BerryType.LIECHI) as BattleStat; - applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold); - return pokemon.getHpRatio() < threshold.value && pokemon.summonData.battleStats[battleStat] < 6; - }; - case BerryType.LANSAT: - return (pokemon: Pokemon) => { - const threshold = new Utils.NumberHolder(0.25); - applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold); - return pokemon.getHpRatio() < 0.25 && !pokemon.getTag(BattlerTagType.CRIT_BOOST); - }; - case BerryType.STARF: - return (pokemon: Pokemon) => { - const threshold = new Utils.NumberHolder(0.25); - applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold); - return pokemon.getHpRatio() < 0.25; - }; - case BerryType.LEPPA: - return (pokemon: Pokemon) => { - const threshold = new Utils.NumberHolder(0.25); - applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold); - return !!pokemon.getMoveset().find(m => !m.getPpRatio()); - }; + case BerryType.SITRUS: + return (pokemon: Pokemon) => pokemon.getHpRatio() < 0.5; + case BerryType.LUM: + return (pokemon: Pokemon) => !!pokemon.status || !!pokemon.getTag(BattlerTagType.CONFUSED); + case BerryType.ENIGMA: + return (pokemon: Pokemon) => !!pokemon.turnData.attacksReceived.filter(a => a.result === HitResult.SUPER_EFFECTIVE).length; + case BerryType.LIECHI: + case BerryType.GANLON: + case BerryType.PETAYA: + case BerryType.APICOT: + case BerryType.SALAC: + return (pokemon: Pokemon) => { + const threshold = new Utils.NumberHolder(0.25); + const battleStat = (berryType - BerryType.LIECHI) as BattleStat; + applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold); + return pokemon.getHpRatio() < threshold.value && pokemon.summonData.battleStats[battleStat] < 6; + }; + case BerryType.LANSAT: + return (pokemon: Pokemon) => { + const threshold = new Utils.NumberHolder(0.25); + applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold); + return pokemon.getHpRatio() < 0.25 && !pokemon.getTag(BattlerTagType.CRIT_BOOST); + }; + case BerryType.STARF: + return (pokemon: Pokemon) => { + const threshold = new Utils.NumberHolder(0.25); + applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold); + return pokemon.getHpRatio() < 0.25; + }; + case BerryType.LEPPA: + return (pokemon: Pokemon) => { + const threshold = new Utils.NumberHolder(0.25); + applyAbAttrs(ReduceBerryUseThresholdAbAttr, pokemon, null, threshold); + return !!pokemon.getMoveset().find(m => !m.getPpRatio()); + }; } } @@ -77,64 +77,64 @@ export type BerryEffectFunc = (pokemon: Pokemon) => void; export function getBerryEffectFunc(berryType: BerryType): BerryEffectFunc { switch (berryType) { - case BerryType.SITRUS: - case BerryType.ENIGMA: - return (pokemon: Pokemon) => { - if (pokemon.battleData) - pokemon.battleData.berriesEaten.push(berryType); - const hpHealed = new Utils.NumberHolder(Math.floor(pokemon.getMaxHp() / 4)); - applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, hpHealed); - pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(), - hpHealed.value, getPokemonMessage(pokemon, `'s ${getBerryName(berryType)}\nrestored its HP!`), true)); - }; - case BerryType.LUM: - return (pokemon: Pokemon) => { - if (pokemon.battleData) - pokemon.battleData.berriesEaten.push(berryType); - if (pokemon.status) { - pokemon.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(pokemon.status.effect))); - pokemon.resetStatus(); - pokemon.updateInfo(); - } - if (pokemon.getTag(BattlerTagType.CONFUSED)) - pokemon.lapseTag(BattlerTagType.CONFUSED); - }; - case BerryType.LIECHI: - case BerryType.GANLON: - case BerryType.PETAYA: - case BerryType.APICOT: - case BerryType.SALAC: - return (pokemon: Pokemon) => { - if (pokemon.battleData) - pokemon.battleData.berriesEaten.push(berryType); - const battleStat = (berryType - BerryType.LIECHI) as BattleStat; - const statLevels = new Utils.NumberHolder(1); - applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels); - pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ battleStat ], statLevels.value)); - }; - case BerryType.LANSAT: - return (pokemon: Pokemon) => { - if (pokemon.battleData) - pokemon.battleData.berriesEaten.push(berryType); - pokemon.addTag(BattlerTagType.CRIT_BOOST); - }; - case BerryType.STARF: - return (pokemon: Pokemon) => { - if (pokemon.battleData) - pokemon.battleData.berriesEaten.push(berryType); - const statLevels = new Utils.NumberHolder(2); - applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels); - pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ BattleStat.RAND ], statLevels.value)); - }; - case BerryType.LEPPA: - return (pokemon: Pokemon) => { - if (pokemon.battleData) - pokemon.battleData.berriesEaten.push(berryType); - const ppRestoreMove = pokemon.getMoveset().find(m => !m.getPpRatio()) ? pokemon.getMoveset().find(m => !m.getPpRatio()) : pokemon.getMoveset().find(m => m.getPpRatio() < 1); - if(ppRestoreMove !== undefined){ - ppRestoreMove.ppUsed = Math.max(ppRestoreMove.ppUsed - 10, 0); - pokemon.scene.queueMessage(getPokemonMessage(pokemon, ` restored PP to its move ${ppRestoreMove.getName()}\nusing its ${getBerryName(berryType)}!`)); - } - }; + case BerryType.SITRUS: + case BerryType.ENIGMA: + return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); + const hpHealed = new Utils.NumberHolder(Math.floor(pokemon.getMaxHp() / 4)); + applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, hpHealed); + pokemon.scene.unshiftPhase(new PokemonHealPhase(pokemon.scene, pokemon.getBattlerIndex(), + hpHealed.value, getPokemonMessage(pokemon, `'s ${getBerryName(berryType)}\nrestored its HP!`), true)); + }; + case BerryType.LUM: + return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); + if (pokemon.status) { + pokemon.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectHealText(pokemon.status.effect))); + pokemon.resetStatus(); + pokemon.updateInfo(); + } + if (pokemon.getTag(BattlerTagType.CONFUSED)) + pokemon.lapseTag(BattlerTagType.CONFUSED); + }; + case BerryType.LIECHI: + case BerryType.GANLON: + case BerryType.PETAYA: + case BerryType.APICOT: + case BerryType.SALAC: + return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); + const battleStat = (berryType - BerryType.LIECHI) as BattleStat; + const statLevels = new Utils.NumberHolder(1); + applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels); + pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ battleStat ], statLevels.value)); + }; + case BerryType.LANSAT: + return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); + pokemon.addTag(BattlerTagType.CRIT_BOOST); + }; + case BerryType.STARF: + return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); + const statLevels = new Utils.NumberHolder(2); + applyAbAttrs(DoubleBerryEffectAbAttr, pokemon, null, statLevels); + pokemon.scene.unshiftPhase(new StatChangePhase(pokemon.scene, pokemon.getBattlerIndex(), true, [ BattleStat.RAND ], statLevels.value)); + }; + case BerryType.LEPPA: + return (pokemon: Pokemon) => { + if (pokemon.battleData) + pokemon.battleData.berriesEaten.push(berryType); + const ppRestoreMove = pokemon.getMoveset().find(m => !m.getPpRatio()) ? pokemon.getMoveset().find(m => !m.getPpRatio()) : pokemon.getMoveset().find(m => m.getPpRatio() < 1); + if(ppRestoreMove !== undefined){ + ppRestoreMove.ppUsed = Math.max(ppRestoreMove.ppUsed - 10, 0); + pokemon.scene.queueMessage(getPokemonMessage(pokemon, ` restored PP to its move ${ppRestoreMove.getName()}\nusing its ${getBerryName(berryType)}!`)); + } + }; } -} \ No newline at end of file +} diff --git a/src/data/biomes.ts b/src/data/biomes.ts index c4fb750542d..2eab9e3ce45 100644 --- a/src/data/biomes.ts +++ b/src/data/biomes.ts @@ -1,28 +1,28 @@ -import { Species } from "./enums/species"; +import { Species } from './enums/species'; import { Type } from './type'; import * as Utils from '../utils'; import beautify from 'json-beautify'; -import { TrainerType } from "./enums/trainer-type"; -import { TimeOfDay } from "./enums/time-of-day"; -import { Biome } from "./enums/biome"; -import { SpeciesFormEvolution } from "./pokemon-evolutions"; +import { TrainerType } from './enums/trainer-type'; +import { TimeOfDay } from './enums/time-of-day'; +import { Biome } from './enums/biome'; +import { SpeciesFormEvolution } from './pokemon-evolutions'; export function getBiomeName(biome: Biome | -1) { if (biome === -1) return 'Somewhere you can\'t remember'; switch (biome) { - case Biome.GRASS: - return 'Grassy Field'; - case Biome.RUINS: - return 'Ancient Ruins'; - case Biome.ABYSS: - return 'The Abyss'; - case Biome.SPACE: - return 'Stratosphere'; - case Biome.END: - return 'Final Destination'; - default: - return Utils.toReadableString(Biome[biome]); + case Biome.GRASS: + return 'Grassy Field'; + case Biome.RUINS: + return 'Ancient Ruins'; + case Biome.ABYSS: + return 'The Abyss'; + case Biome.SPACE: + return 'Stratosphere'; + case Biome.END: + return 'Final Destination'; + default: + return Utils.toReadableString(Biome[biome]); } } @@ -83,7 +83,7 @@ export enum BiomePoolTier { BOSS_RARE, BOSS_SUPER_RARE, BOSS_ULTRA_RARE -}; +} export const uncatchableSpecies: Species[] = []; @@ -2014,873 +2014,873 @@ export const biomeTrainerPools: BiomeTrainerPools = { { const pokemonBiomes = [ [ Species.BULBASAUR, Type.GRASS, Type.POISON, [ - [ Biome.GRASS, BiomePoolTier.RARE ] - ] + [ Biome.GRASS, BiomePoolTier.RARE ] + ] ], [ Species.IVYSAUR, Type.GRASS, Type.POISON, [ - [ Biome.GRASS, BiomePoolTier.RARE ] - ] + [ Biome.GRASS, BiomePoolTier.RARE ] + ] ], [ Species.VENUSAUR, Type.GRASS, Type.POISON, [ - [ Biome.GRASS, BiomePoolTier.RARE ], - [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.GRASS, BiomePoolTier.RARE ], + [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.CHARMANDER, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.CHARMELEON, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.CHARIZARD, Type.FIRE, Type.FLYING, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SQUIRTLE, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ] + ] ], [ Species.WARTORTLE, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ] + ] ], [ Species.BLASTOISE, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ], + [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.CATERPIE, Type.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.METAPOD, Type.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.BUTTERFREE, Type.BUG, Type.FLYING, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.WEEDLE, Type.BUG, Type.POISON, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.KAKUNA, Type.BUG, Type.POISON, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.BEEDRILL, Type.BUG, Type.POISON, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.PIDGEY, Type.NORMAL, Type.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ], + [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] + ] ], [ Species.PIDGEOTTO, Type.NORMAL, Type.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] + ] ], [ Species.PIDGEOT, Type.NORMAL, Type.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + ] ], [ Species.RATTATA, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ], + [ Biome.METROPOLIS, BiomePoolTier.COMMON ], + [ Biome.SLUM, BiomePoolTier.COMMON ] + ] ], [ Species.RATICATE, Type.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.COMMON ] - ] + [ Biome.METROPOLIS, BiomePoolTier.COMMON ], + [ Biome.SLUM, BiomePoolTier.COMMON ] + ] ], [ Species.SPEAROW, Type.NORMAL, Type.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ], + [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] + ] ], [ Species.FEAROW, Type.NORMAL, Type.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + ] ], [ Species.EKANS, Type.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 ] ] - ] + [ 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, [ - [ 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 ] ] - ] + [ 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, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + ] ], [ Species.RAICHU, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + ] ], [ Species.SANDSHREW, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.COMMON ] - ] + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], + [ Biome.DESERT, BiomePoolTier.COMMON ] + ] ], [ Species.SANDSLASH, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.COMMON ], - [ Biome.DESERT, BiomePoolTier.BOSS ] - ] + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], + [ Biome.DESERT, BiomePoolTier.COMMON ], + [ Biome.DESERT, BiomePoolTier.BOSS ] + ] ], [ Species.NIDORAN_F, Type.POISON, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] + ] ], [ Species.NIDORINA, Type.POISON, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] + ] ], [ Species.NIDOQUEEN, Type.POISON, Type.GROUND, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS, TimeOfDay.DAY ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.BOSS, TimeOfDay.DAY ] + ] ], [ Species.NIDORAN_M, Type.POISON, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] + ] ], [ Species.NIDORINO, Type.POISON, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, TimeOfDay.DAY ] + ] ], [ Species.NIDOKING, Type.POISON, Type.GROUND, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS, TimeOfDay.DAY ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.BOSS, TimeOfDay.DAY ] + ] ], [ Species.CLEFAIRY, Type.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.SPACE, BiomePoolTier.COMMON ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.SPACE, BiomePoolTier.COMMON ] + ] ], [ Species.CLEFABLE, Type.FAIRY, -1, [ - [ Biome.SPACE, BiomePoolTier.BOSS ] - ] + [ Biome.SPACE, BiomePoolTier.BOSS ] + ] ], [ Species.VULPIX, Type.FIRE, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], + [ Biome.VOLCANO, BiomePoolTier.COMMON ] + ] ], [ Species.NINETALES, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.JIGGLYPUFF, Type.NORMAL, Type.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.WIGGLYTUFF, Type.NORMAL, Type.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.ZUBAT, Type.POISON, Type.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.GOLBAT, Type.POISON, Type.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.ODDISH, Type.GRASS, Type.POISON, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.GLOOM, Type.GRASS, Type.POISON, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.VILEPLUME, Type.GRASS, Type.POISON, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.PARAS, Type.BUG, Type.GRASS, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.PARASECT, Type.BUG, Type.GRASS, [ - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.CAVE, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.VENONAT, Type.BUG, Type.POISON, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] - ] + [ 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, [ - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] + ] ], [ Species.DIGLETT, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ] - ] + [ Biome.BADLANDS, BiomePoolTier.COMMON ] + ] ], [ Species.DUGTRIO, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.BADLANDS, BiomePoolTier.BOSS ] - ] + [ Biome.BADLANDS, BiomePoolTier.COMMON ], + [ Biome.BADLANDS, BiomePoolTier.BOSS ] + ] ], [ Species.MEOWTH, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.PERSIAN, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.PSYDUCK, Type.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ] - ] + [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], + [ Biome.LAKE, BiomePoolTier.COMMON ] + ] ], [ Species.GOLDUCK, Type.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] - ] + [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], + [ Biome.LAKE, BiomePoolTier.COMMON ], + [ Biome.LAKE, BiomePoolTier.BOSS ] + ] ], [ Species.MANKEY, Type.FIGHTING, -1, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.DOJO, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.DOJO, BiomePoolTier.COMMON ] + ] ], [ Species.PRIMEAPE, Type.FIGHTING, -1, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.DOJO, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.DOJO, BiomePoolTier.COMMON ] + ] ], [ Species.GROWLITHE, Type.FIRE, -1, [ - [ Biome.GRASS, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ] - ] + [ Biome.GRASS, BiomePoolTier.RARE ], + [ Biome.VOLCANO, BiomePoolTier.COMMON ] + ] ], [ Species.ARCANINE, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.POLIWAG, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.COMMON ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON ], + [ Biome.SWAMP, BiomePoolTier.COMMON ] + ] ], [ Species.POLIWHIRL, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.COMMON ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON ], + [ Biome.SWAMP, BiomePoolTier.COMMON ] + ] ], [ Species.POLIWRATH, Type.WATER, Type.FIGHTING, [ - [ Biome.SWAMP, BiomePoolTier.BOSS ] - ] + [ Biome.SWAMP, BiomePoolTier.BOSS ] + ] ], [ Species.ABRA, Type.PSYCHIC, -1, [ - [ Biome.TOWN, BiomePoolTier.RARE ], - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.UNCOMMON ] - ] + [ Biome.TOWN, BiomePoolTier.RARE ], + [ Biome.PLAINS, BiomePoolTier.RARE ], + [ Biome.RUINS, BiomePoolTier.UNCOMMON ] + ] ], [ Species.KADABRA, Type.PSYCHIC, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.UNCOMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.RARE ], + [ Biome.RUINS, BiomePoolTier.UNCOMMON ] + ] ], [ Species.ALAKAZAM, Type.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.BOSS ] - ] + [ Biome.RUINS, BiomePoolTier.BOSS ] + ] ], [ Species.MACHOP, Type.FIGHTING, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + ] ], [ Species.MACHOKE, Type.FIGHTING, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + ] ], [ Species.MACHAMP, Type.FIGHTING, -1, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] + ] ], [ Species.BELLSPROUT, Type.GRASS, Type.POISON, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.WEEPINBELL, Type.GRASS, Type.POISON, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.VICTREEBEL, Type.GRASS, Type.POISON, [ - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.TENTACOOL, Type.WATER, Type.POISON, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SEA, BiomePoolTier.COMMON ], + [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + ] ], [ Species.TENTACRUEL, Type.WATER, Type.POISON, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.SEA, BiomePoolTier.BOSS ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SEA, BiomePoolTier.COMMON ], + [ Biome.SEA, BiomePoolTier.BOSS ], + [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + ] ], [ Species.GEODUDE, Type.ROCK, Type.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.BADLANDS, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.GRAVELER, Type.ROCK, Type.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.BADLANDS, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.GOLEM, Type.ROCK, Type.GROUND, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS ] - ] + [ Biome.BADLANDS, BiomePoolTier.BOSS ] + ] ], [ Species.PONYTA, Type.FIRE, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.VOLCANO, BiomePoolTier.COMMON ] + ] ], [ Species.RAPIDASH, Type.FIRE, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.VOLCANO, BiomePoolTier.COMMON ], + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.SLOWPOKE, Type.WATER, Type.PSYCHIC, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.LAKE, BiomePoolTier.UNCOMMON ] - ] + [ 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, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] - ] + [ 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, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ] + ] ], [ Species.MAGNETON, Type.ELECTRIC, Type.STEEL, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ] + ] ], [ Species.FARFETCHD, Type.NORMAL, Type.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], + [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.DODUO, Type.NORMAL, Type.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.DODRIO, Type.NORMAL, Type.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SEEL, Type.WATER, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.DEWGONG, Type.WATER, Type.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.GRIMER, Type.POISON, -1, [ - [ Biome.SLUM, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] - ] + [ Biome.SLUM, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ] + ] ], [ Species.MUK, Type.POISON, -1, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ], - [ Biome.SLUM, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.BOSS ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ], + [ Biome.SLUM, BiomePoolTier.COMMON ], + [ Biome.SLUM, BiomePoolTier.BOSS ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.BOSS ] + ] ], [ Species.SHELLDER, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] - ] + [ 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, [ - [ Biome.BEACH, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.BEACH, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.GASTLY, Type.GHOST, Type.POISON, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], + [ Biome.TEMPLE, BiomePoolTier.COMMON ] + ] ], [ Species.HAUNTER, Type.GHOST, Type.POISON, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], + [ Biome.TEMPLE, BiomePoolTier.COMMON ] + ] ], [ Species.GENGAR, Type.GHOST, Type.POISON, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.ONIX, Type.ROCK, Type.GROUND, [ - [ Biome.BADLANDS, BiomePoolTier.RARE ], - [ Biome.CAVE, BiomePoolTier.RARE ], - [ Biome.CAVE, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] - ] + [ Biome.BADLANDS, BiomePoolTier.RARE ], + [ Biome.CAVE, BiomePoolTier.RARE ], + [ Biome.CAVE, BiomePoolTier.BOSS ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] + ] ], [ Species.DROWZEE, Type.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.COMMON ] - ] + [ Biome.RUINS, BiomePoolTier.COMMON ] + ] ], [ Species.HYPNO, Type.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ] - ] + [ Biome.RUINS, BiomePoolTier.COMMON ], + [ Biome.RUINS, BiomePoolTier.BOSS ] + ] ], [ Species.KRABBY, Type.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ] + ] ], [ Species.KINGLER, Type.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ], + [ Biome.BEACH, BiomePoolTier.BOSS ] + ] ], [ Species.VOLTORB, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ] + ] ], [ Species.ELECTRODE, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.BOSS ] + ] ], [ Species.EXEGGCUTE, Type.GRASS, Type.PSYCHIC, [ - [ Biome.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.EXEGGUTOR, Type.GRASS, Type.PSYCHIC, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.CUBONE, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.BADLANDS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.MAROWAK, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], - [ Biome.BADLANDS, BiomePoolTier.BOSS, TimeOfDay.NIGHT ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY, TimeOfDay.DUSK ] ] - ] + [ Biome.BADLANDS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], + [ Biome.BADLANDS, BiomePoolTier.BOSS, TimeOfDay.NIGHT ], + [ Biome.GRAVEYARD, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY, TimeOfDay.DUSK ] ] + ] ], [ Species.HITMONLEE, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] - ] + [ Biome.DOJO, BiomePoolTier.RARE ], + [ Biome.DOJO, BiomePoolTier.BOSS ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] + ] ], [ Species.HITMONCHAN, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] - ] + [ Biome.DOJO, BiomePoolTier.RARE ], + [ Biome.DOJO, BiomePoolTier.BOSS ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] + ] ], [ Species.LICKITUNG, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.KOFFING, Type.POISON, -1, [ - [ Biome.SLUM, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SLUM, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.WEEZING, Type.POISON, -1, [ - [ Biome.SLUM, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SLUM, BiomePoolTier.COMMON ], + [ Biome.SLUM, BiomePoolTier.BOSS ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.RHYHORN, Type.GROUND, Type.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 ] - ] + [ 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, [ - [ 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 ] - ] + [ 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, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], - [ Biome.MEADOW, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], + [ Biome.MEADOW, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.TANGELA, Type.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.KANGASKHAN, Type.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.HORSEA, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SEADRA, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON ] + ] ], [ Species.GOLDEEN, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.SEA, BiomePoolTier.UNCOMMON ] - ] + [ Biome.LAKE, BiomePoolTier.COMMON ], + [ Biome.SEA, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SEAKING, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ], - [ Biome.SEA, BiomePoolTier.UNCOMMON ] - ] + [ Biome.LAKE, BiomePoolTier.COMMON ], + [ Biome.LAKE, BiomePoolTier.BOSS ], + [ Biome.SEA, BiomePoolTier.UNCOMMON ] + ] ], [ Species.STARYU, Type.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.STARMIE, Type.WATER, Type.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 ] ] - ] + [ 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, [ - [ Biome.RUINS, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.RUINS, BiomePoolTier.RARE ], + [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SCYTHER, Type.BUG, Type.FLYING, [ - [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ], - [ Biome.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.JUNGLE, BiomePoolTier.RARE ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ], + [ Biome.FOREST, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.JUNGLE, BiomePoolTier.RARE ] + ] ], [ Species.JYNX, Type.ICE, Type.PSYCHIC, [ - [ Biome.ICE_CAVE, BiomePoolTier.RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.RARE ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.ELECTABUZZ, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] + ] ], [ Species.MAGMAR, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ] - ] + [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ] + ] ], [ Species.PINSIR, Type.BUG, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.RARE ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.TAUROS, Type.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE ], - [ Biome.MEADOW, BiomePoolTier.BOSS ] - ] + [ Biome.MEADOW, BiomePoolTier.RARE ], + [ Biome.MEADOW, BiomePoolTier.BOSS ] + ] ], [ Species.MAGIKARP, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ] - ] + [ Biome.SEA, BiomePoolTier.COMMON ], + [ Biome.LAKE, BiomePoolTier.COMMON ] + ] ], [ Species.GYARADOS, Type.WATER, Type.FLYING, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] - ] + [ Biome.SEA, BiomePoolTier.COMMON ], + [ Biome.LAKE, BiomePoolTier.COMMON ], + [ Biome.LAKE, BiomePoolTier.BOSS ] + ] ], [ Species.LAPRAS, Type.WATER, Type.ICE, [ - [ Biome.SEA, BiomePoolTier.RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEA, BiomePoolTier.RARE ], + [ Biome.ICE_CAVE, BiomePoolTier.RARE ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.DITTO, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.ULTRA_RARE ], - [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], - [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.SUPER_RARE ], - [ Biome.LABORATORY, BiomePoolTier.RARE ] - ] + [ Biome.TOWN, BiomePoolTier.ULTRA_RARE ], + [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], + [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.SUPER_RARE ], + [ Biome.LABORATORY, BiomePoolTier.RARE ] + ] ], [ Species.EEVEE, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.SUPER_RARE ], - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], - [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ], - [ Biome.MEADOW, BiomePoolTier.RARE ] - ] + [ Biome.TOWN, BiomePoolTier.SUPER_RARE ], + [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], + [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ], + [ Biome.MEADOW, BiomePoolTier.RARE ] + ] ], [ Species.VAPOREON, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.SUPER_RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.LAKE, BiomePoolTier.SUPER_RARE ], + [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.JOLTEON, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.SUPER_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.SUPER_RARE ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.FLAREON, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.PORYGON, Type.NORMAL, -1, [ - [ Biome.FACTORY, BiomePoolTier.RARE ], - [ Biome.SPACE, BiomePoolTier.SUPER_RARE ], - [ Biome.LABORATORY, BiomePoolTier.RARE ] - ] + [ Biome.FACTORY, BiomePoolTier.RARE ], + [ Biome.SPACE, BiomePoolTier.SUPER_RARE ], + [ Biome.LABORATORY, BiomePoolTier.RARE ] + ] ], [ Species.OMANYTE, Type.ROCK, Type.WATER, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.OMASTAR, Type.ROCK, Type.WATER, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.KABUTO, Type.ROCK, Type.WATER, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.KABUTOPS, Type.ROCK, Type.WATER, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.AERODACTYL, Type.ROCK, Type.FLYING, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SNORLAX, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], + [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.ARTICUNO, Type.ICE, Type.FLYING, [ - [ Biome.ICE_CAVE, BiomePoolTier.ULTRA_RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.ULTRA_RARE ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.ZAPDOS, Type.ELECTRIC, Type.FLYING, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.MOLTRES, Type.FIRE, Type.FLYING, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.DRATINI, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.RARE ] + ] ], [ Species.DRAGONAIR, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.RARE ] + ] ], [ Species.DRAGONITE, Type.DRAGON, Type.FLYING, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] - ] + [ Biome.WASTELAND, BiomePoolTier.RARE ], + [ Biome.WASTELAND, BiomePoolTier.BOSS ] + ] ], [ Species.MEWTWO, Type.PSYCHIC, -1, [ - [ Biome.LABORATORY, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.LABORATORY, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.MEW, Type.PSYCHIC, -1, [ ] ], [ Species.CHIKORITA, Type.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.RARE ] + ] ], [ Species.BAYLEEF, Type.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.RARE ] + ] ], [ Species.MEGANIUM, Type.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.RARE ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.CYNDAQUIL, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.QUILAVA, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.TYPHLOSION, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.TOTODILE, Type.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.RARE ] + ] ], [ Species.CROCONAW, Type.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.RARE ] + ] ], [ Species.FERALIGATR, Type.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.RARE ], + [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SENTRET, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.FURRET, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.HOOTHOOT, Type.NORMAL, Type.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ] + ] ], [ Species.NOCTOWL, Type.NORMAL, Type.FLYING, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] + ] ], [ Species.LEDYBA, Type.BUG, Type.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.DAWN ], - [ Biome.MEADOW, BiomePoolTier.COMMON, TimeOfDay.DAWN ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.DAWN ], + [ Biome.MEADOW, BiomePoolTier.COMMON, TimeOfDay.DAWN ] + ] ], [ Species.LEDIAN, Type.BUG, Type.FLYING, [ - [ Biome.MEADOW, BiomePoolTier.COMMON, TimeOfDay.DAWN ], - [ Biome.MEADOW, BiomePoolTier.BOSS, TimeOfDay.DAWN ] - ] + [ Biome.MEADOW, BiomePoolTier.COMMON, TimeOfDay.DAWN ], + [ Biome.MEADOW, BiomePoolTier.BOSS, TimeOfDay.DAWN ] + ] ], [ Species.SPINARAK, Type.BUG, Type.POISON, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ Biome.JUNGLE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] + ] ], [ Species.ARIADOS, Type.BUG, Type.POISON, [ - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ Biome.JUNGLE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] + ] ], [ Species.CROBAT, Type.POISON, Type.FLYING, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.CHINCHOU, Type.WATER, Type.ELECTRIC, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.SEABED, BiomePoolTier.COMMON ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.SEABED, BiomePoolTier.COMMON ] + ] ], [ Species.LANTURN, Type.WATER, Type.ELECTRIC, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.SEABED, BiomePoolTier.COMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.SEABED, BiomePoolTier.COMMON ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.PICHU, Type.ELECTRIC, -1, [ ] ], @@ -2891,308 +2891,308 @@ export const biomeTrainerPools: BiomeTrainerPools = { [ Species.TOGEPI, Type.FAIRY, -1, [ ] ], [ Species.TOGETIC, Type.FAIRY, Type.FLYING, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.NATU, Type.PSYCHIC, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.RUINS, BiomePoolTier.COMMON ], + [ Biome.TEMPLE, BiomePoolTier.COMMON ] + ] ], [ Species.XATU, Type.PSYCHIC, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.RUINS, BiomePoolTier.COMMON ], + [ Biome.RUINS, BiomePoolTier.BOSS ], + [ Biome.TEMPLE, BiomePoolTier.COMMON ] + ] ], [ Species.MAREEP, Type.ELECTRIC, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.POWER_PLANT, BiomePoolTier.RARE ] + ] ], [ Species.FLAAFFY, Type.ELECTRIC, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.POWER_PLANT, BiomePoolTier.RARE ] + ] ], [ Species.AMPHAROS, Type.ELECTRIC, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.BELLOSSOM, Type.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.MARILL, Type.WATER, Type.FAIRY, [ - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.AZUMARILL, Type.WATER, Type.FAIRY, [ - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - ] + [ 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, [ - [ Biome.GRASS, BiomePoolTier.SUPER_RARE ], - [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.GRASS, BiomePoolTier.SUPER_RARE ], + [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.POLITOED, Type.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.SUPER_RARE ], + [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.HOPPIP, Type.GRASS, Type.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SKIPLOOM, Type.GRASS, Type.FLYING, [ - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.JUMPLUFF, Type.GRASS, Type.FLYING, [ - [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.AIPOM, Type.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.COMMON ] - ] + [ Biome.JUNGLE, BiomePoolTier.COMMON ] + ] ], [ Species.SUNKERN, Type.GRASS, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SUNFLORA, Type.GRASS, -1, [ - [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.YANMA, Type.BUG, Type.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ] + ] ], [ Species.WOOPER, Type.WATER, Type.GROUND, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.LAKE, BiomePoolTier.UNCOMMON ], + [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.QUAGSIRE, Type.WATER, Type.GROUND, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ 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, [ - [ Biome.RUINS, BiomePoolTier.SUPER_RARE, TimeOfDay.DAY ], - [ Biome.RUINS, BiomePoolTier.BOSS_RARE, TimeOfDay.DAY ] - ] + [ Biome.RUINS, BiomePoolTier.SUPER_RARE, TimeOfDay.DAY ], + [ Biome.RUINS, BiomePoolTier.BOSS_RARE, TimeOfDay.DAY ] + ] ], [ Species.UMBREON, Type.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.SUPER_RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.ABYSS, BiomePoolTier.SUPER_RARE ], + [ Biome.ABYSS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.MURKROW, Type.DARK, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE, TimeOfDay.NIGHT ], - [ Biome.ABYSS, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.RARE, TimeOfDay.NIGHT ], + [ Biome.ABYSS, BiomePoolTier.COMMON ] + ] ], [ Species.SLOWKING, Type.WATER, Type.PSYCHIC, [ - [ Biome.LAKE, BiomePoolTier.SUPER_RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.LAKE, BiomePoolTier.SUPER_RARE ], + [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.MISDREAVUS, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.RARE ] + ] ], [ Species.UNOWN, Type.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.COMMON ] - ] + [ Biome.RUINS, BiomePoolTier.COMMON ] + ] ], [ Species.WOBBUFFET, Type.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.RUINS, BiomePoolTier.RARE ], + [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.GIRAFARIG, Type.NORMAL, Type.PSYCHIC, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.RARE ] + ] ], [ Species.PINECO, Type.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.FORRETRESS, Type.BUG, Type.STEEL, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.DUNSPARCE, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.GLIGAR, Type.GROUND, Type.FLYING, [ - [ Biome.BADLANDS, BiomePoolTier.RARE ] - ] + [ Biome.BADLANDS, BiomePoolTier.RARE ] + ] ], [ Species.STEELIX, Type.STEEL, Type.GROUND, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.BADLANDS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SNUBBULL, Type.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.GRANBULL, Type.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.QWILFISH, Type.WATER, Type.POISON, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.SCIZOR, Type.BUG, Type.STEEL, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SHUCKLE, Type.BUG, Type.ROCK, [ - [ Biome.CAVE, BiomePoolTier.SUPER_RARE ], - [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.CAVE, BiomePoolTier.SUPER_RARE ], + [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.HERACROSS, Type.BUG, Type.FIGHTING, [ - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ], + [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SNEASEL, Type.DARK, Type.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ 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, [ - [ 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 ] ] - ] + [ 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, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON ], + [ Biome.CAVE, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.BOSS ], + [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.SNOWY_FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SLUGMA, Type.FIRE, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.VOLCANO, BiomePoolTier.COMMON ] + ] ], [ Species.MAGCARGO, Type.FIRE, Type.ROCK, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.VOLCANO, BiomePoolTier.COMMON ], + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.SWINUB, Type.ICE, Type.GROUND, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], + [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] + ] ], [ Species.PILOSWINE, Type.ICE, Type.GROUND, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], + [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] + ] ], [ Species.CORSOLA, Type.WATER, Type.ROCK, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.REMORAID, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] - ] + [ Biome.SEABED, BiomePoolTier.COMMON ] + ] ], [ Species.OCTILLERY, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.DELIBIRD, Type.ICE, Type.FLYING, [ - [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], + [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] + ] ], [ Species.MANTINE, Type.WATER, Type.FLYING, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.SKARMORY, Type.STEEL, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + ] ], [ Species.HOUNDOUR, Type.DARK, Type.FIRE, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.ABYSS, BiomePoolTier.COMMON ] - ] + [ Biome.METROPOLIS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.ABYSS, BiomePoolTier.COMMON ] + ] ], [ Species.HOUNDOOM, Type.DARK, Type.FIRE, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.METROPOLIS, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.ABYSS, BiomePoolTier.COMMON ], + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.KINGDRA, Type.WATER, Type.DRAGON, [ - [ Biome.SEA, BiomePoolTier.SUPER_RARE ], - [ Biome.SEA, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEA, BiomePoolTier.SUPER_RARE ], + [ Biome.SEA, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.PHANPY, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.BADLANDS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.DONPHAN, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.BADLANDS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.PORYGON2, Type.NORMAL, -1, [ - [ Biome.FACTORY, BiomePoolTier.RARE ], - [ Biome.SPACE, BiomePoolTier.SUPER_RARE ], - [ Biome.LABORATORY, BiomePoolTier.RARE ] - ] + [ Biome.FACTORY, BiomePoolTier.RARE ], + [ Biome.SPACE, BiomePoolTier.SUPER_RARE ], + [ Biome.LABORATORY, BiomePoolTier.RARE ] + ] ], [ Species.STANTLER, Type.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 ] ] - ] + [ 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, [ - [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.METROPOLIS, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.TYROGUE, Type.FIGHTING, -1, [ ] ], [ Species.HITMONTOP, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.SUPER_RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS_RARE ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.DOJO, BiomePoolTier.SUPER_RARE ], + [ Biome.DOJO, BiomePoolTier.BOSS_RARE ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.SMOOCHUM, Type.ICE, Type.PSYCHIC, [ ] ], @@ -3201,950 +3201,950 @@ export const biomeTrainerPools: BiomeTrainerPools = { [ Species.MAGBY, Type.FIRE, -1, [ ] ], [ Species.MILTANK, Type.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE ], - [ Biome.MEADOW, BiomePoolTier.BOSS ] - ] + [ Biome.MEADOW, BiomePoolTier.RARE ], + [ Biome.MEADOW, BiomePoolTier.BOSS ] + ] ], [ Species.BLISSEY, Type.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.RAIKOU, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.ENTEI, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.SUICUNE, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.ULTRA_RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.LAKE, BiomePoolTier.ULTRA_RARE ], + [ Biome.LAKE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.LARVITAR, Type.ROCK, Type.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.PUPITAR, Type.ROCK, Type.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.TYRANITAR, Type.ROCK, Type.DARK, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.LUGIA, Type.PSYCHIC, Type.FLYING, [ - [ Biome.SEA, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.SEA, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.HO_OH, Type.FIRE, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.CELEBI, Type.PSYCHIC, Type.GRASS, [ ] ], [ Species.TREECKO, Type.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ] + ] ], [ Species.GROVYLE, Type.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ] + ] ], [ Species.SCEPTILE, Type.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ], + [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.TORCHIC, Type.FIRE, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.RARE ] + ] ], [ Species.COMBUSKEN, Type.FIRE, Type.FIGHTING, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.RARE ] + ] ], [ Species.BLAZIKEN, Type.FIRE, Type.FIGHTING, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.MUDKIP, Type.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.RARE ] + ] ], [ Species.MARSHTOMP, Type.WATER, Type.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.RARE ] + ] ], [ Species.SWAMPERT, Type.WATER, Type.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.RARE ], + [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.POOCHYENA, Type.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 ] ] - ] + [ 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, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ 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, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.COMMON ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ], + [ Biome.PLAINS, BiomePoolTier.COMMON ], + [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + ] ], [ Species.LINOONE, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.BOSS ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON ], + [ Biome.PLAINS, BiomePoolTier.BOSS ], + [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + ] ], [ Species.WURMPLE, Type.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ] + ] ], [ Species.SILCOON, Type.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.DAY ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.DAY ] + ] ], [ Species.BEAUTIFLY, Type.BUG, Type.FLYING, [ - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.DAY ], - [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.DAY ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.DAY ], + [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.DAY ] + ] ], [ Species.CASCOON, Type.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] + ] ], [ Species.DUSTOX, Type.BUG, Type.POISON, [ - [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.FOREST, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] + ] ], [ Species.LOTAD, Type.WATER, Type.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 ] ] - ] + [ 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, [ - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.LUDICOLO, Type.WATER, Type.GRASS, [ - [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SEEDOT, Type.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.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, [ - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.SHIFTRY, Type.GRASS, Type.DARK, [ - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.TAILLOW, Type.NORMAL, Type.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SWELLOW, Type.NORMAL, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.WINGULL, Type.WATER, Type.FLYING, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.PELIPPER, Type.WATER, Type.FLYING, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.RALTS, Type.PSYCHIC, Type.FAIRY, [ - [ Biome.TOWN, BiomePoolTier.SUPER_RARE ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.TOWN, BiomePoolTier.SUPER_RARE ], + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.KIRLIA, Type.PSYCHIC, Type.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.GARDEVOIR, Type.PSYCHIC, Type.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.BOSS ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.MEADOW, BiomePoolTier.BOSS ], + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SURSKIT, Type.BUG, Type.WATER, [ - [ Biome.TOWN, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.TOWN, BiomePoolTier.RARE ], + [ Biome.LAKE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.MASQUERAIN, Type.BUG, Type.FLYING, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] - ] + [ Biome.LAKE, BiomePoolTier.UNCOMMON ], + [ Biome.LAKE, BiomePoolTier.BOSS ] + ] ], [ Species.SHROOMISH, Type.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 ] ] - ] + [ 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, [ - [ 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 ] ] - ] + [ 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, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ] + ] ], [ Species.VIGOROTH, Type.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ] + ] ], [ Species.SLAKING, Type.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.NINCADA, Type.BUG, Type.GROUND, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON ], + [ Biome.TALL_GRASS, BiomePoolTier.COMMON ] + ] ], [ Species.NINJASK, Type.BUG, Type.FLYING, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + ] ], [ Species.SHEDINJA, Type.BUG, Type.GHOST, [ - [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.WHISMUR, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON ], + [ Biome.CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.LOUDRED, Type.NORMAL, -1, [ - [ Biome.CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.EXPLOUD, Type.NORMAL, -1, [ - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.MAKUHITA, Type.FIGHTING, -1, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.DOJO, BiomePoolTier.COMMON ] - ] + [ Biome.CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.DOJO, BiomePoolTier.COMMON ] + ] ], [ Species.HARIYAMA, Type.FIGHTING, -1, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.DOJO, BiomePoolTier.COMMON ], + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ Species.AZURILL, Type.NORMAL, Type.FAIRY, [ ] ], [ Species.NOSEPASS, Type.ROCK, -1, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SKITTY, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.DELCATTY, Type.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SABLEYE, Type.DARK, Type.GHOST, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ], + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.MAWILE, Type.STEEL, Type.FAIRY, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.ARON, Type.STEEL, Type.ROCK, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.LAIRON, Type.STEEL, Type.ROCK, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.AGGRON, Type.STEEL, Type.ROCK, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] - ] + [ 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, [ - [ Biome.DOJO, BiomePoolTier.COMMON ] - ] + [ Biome.DOJO, BiomePoolTier.COMMON ] + ] ], [ Species.MEDICHAM, Type.FIGHTING, Type.PSYCHIC, [ - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.COMMON ], + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ Species.ELECTRIKE, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + ] ], [ Species.MANECTRIC, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + ] ], [ Species.PLUSLE, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] + ] ], [ Species.MINUN, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] + ] ], [ Species.VOLBEAT, Type.BUG, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE, TimeOfDay.NIGHT ] - ] + [ Biome.MEADOW, BiomePoolTier.RARE, TimeOfDay.NIGHT ] + ] ], [ Species.ILLUMISE, Type.BUG, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE, TimeOfDay.NIGHT ] - ] + [ Biome.MEADOW, BiomePoolTier.RARE, TimeOfDay.NIGHT ] + ] ], [ Species.ROSELIA, Type.GRASS, Type.POISON, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.GULPIN, Type.POISON, -1, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ] - ] + [ Biome.SWAMP, BiomePoolTier.COMMON ] + ] ], [ Species.SWALOT, Type.POISON, -1, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ] - ] + [ Biome.SWAMP, BiomePoolTier.COMMON ], + [ Biome.SWAMP, BiomePoolTier.BOSS ] + ] ], [ Species.CARVANHA, Type.WATER, Type.DARK, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.SHARPEDO, Type.WATER, Type.DARK, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.WAILMER, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON ], + [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + ] ], [ Species.WAILORD, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON ], + [ Biome.SEABED, BiomePoolTier.UNCOMMON ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.NUMEL, Type.FIRE, Type.GROUND, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ] - ] + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], + [ Biome.VOLCANO, BiomePoolTier.COMMON ] + ] ], [ Species.CAMERUPT, Type.FIRE, Type.GROUND, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.COMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], + [ Biome.VOLCANO, BiomePoolTier.COMMON ], + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.TORKOAL, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.SPOINK, Type.PSYCHIC, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.RARE ], + [ Biome.RUINS, BiomePoolTier.COMMON ] + ] ], [ Species.GRUMPIG, Type.PSYCHIC, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ], - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.RARE ], + [ Biome.RUINS, BiomePoolTier.COMMON ], + [ Biome.RUINS, BiomePoolTier.BOSS ] + ] ], [ Species.SPINDA, Type.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.RARE ] + ] ], [ Species.TRAPINCH, Type.GROUND, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.VIBRAVA, Type.GROUND, Type.DRAGON, [ - [ Biome.DESERT, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ] - ] + [ Biome.DESERT, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.WASTELAND, BiomePoolTier.COMMON ] + ] ], [ Species.FLYGON, Type.GROUND, Type.DRAGON, [ - [ Biome.DESERT, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ], - ] + [ Biome.DESERT, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.WASTELAND, BiomePoolTier.COMMON ], + [ Biome.WASTELAND, BiomePoolTier.BOSS ], + ] ], [ Species.CACNEA, Type.GRASS, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.CACTURNE, Type.GRASS, Type.DARK, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.SWABLU, Type.NORMAL, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] + ] ], [ Species.ALTARIA, Type.DRAGON, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] - ] + [ 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, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.RARE ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + ] ], [ Species.SEVIPER, Type.POISON, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS ] + ] ], [ Species.LUNATONE, Type.ROCK, Type.PSYCHIC, [ - [ Biome.SPACE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.SPACE, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] - ] + [ Biome.SPACE, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.SPACE, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] + ] ], [ Species.SOLROCK, Type.ROCK, Type.PSYCHIC, [ - [ Biome.SPACE, BiomePoolTier.COMMON, TimeOfDay.DAY ], - [ Biome.SPACE, BiomePoolTier.BOSS, TimeOfDay.DAY ] - ] + [ Biome.SPACE, BiomePoolTier.COMMON, TimeOfDay.DAY ], + [ Biome.SPACE, BiomePoolTier.BOSS, TimeOfDay.DAY ] + ] ], [ Species.BARBOACH, Type.WATER, Type.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SWAMP, BiomePoolTier.UNCOMMON ] + ] ], [ Species.WHISCASH, Type.WATER, Type.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ] - ] + [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], + [ Biome.SWAMP, BiomePoolTier.BOSS ] + ] ], [ Species.CORPHISH, Type.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ] + ] ], [ Species.CRAWDAUNT, Type.WATER, Type.DARK, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ], + [ Biome.BEACH, BiomePoolTier.BOSS ] + ] ], [ Species.BALTOY, Type.GROUND, Type.PSYCHIC, [ - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.SPACE, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], - ] + [ Biome.RUINS, BiomePoolTier.COMMON ], + [ Biome.SPACE, BiomePoolTier.UNCOMMON ], + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], + ] ], [ Species.CLAYDOL, Type.GROUND, Type.PSYCHIC, [ - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ], - [ Biome.SPACE, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], - ] + [ Biome.RUINS, BiomePoolTier.COMMON ], + [ Biome.RUINS, BiomePoolTier.BOSS ], + [ Biome.SPACE, BiomePoolTier.UNCOMMON ], + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], + ] ], [ Species.LILEEP, Type.ROCK, Type.GRASS, [ - [ Biome.DESERT, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.DESERT, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.CRADILY, Type.ROCK, Type.GRASS, [ - [ Biome.DESERT, BiomePoolTier.SUPER_RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.DESERT, BiomePoolTier.SUPER_RARE ], + [ Biome.DESERT, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.ANORITH, Type.ROCK, Type.BUG, [ - [ Biome.DESERT, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.DESERT, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.ARMALDO, Type.ROCK, Type.BUG, [ - [ Biome.DESERT, BiomePoolTier.SUPER_RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.DESERT, BiomePoolTier.SUPER_RARE ], + [ Biome.DESERT, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.FEEBAS, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.ULTRA_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.ULTRA_RARE ] + ] ], [ Species.MILOTIC, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.CASTFORM, Type.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.ULTRA_RARE ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.METROPOLIS, BiomePoolTier.ULTRA_RARE ], + [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.KECLEON, Type.NORMAL, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.RARE ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + ] ], [ Species.SHUPPET, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] + ] ], [ Species.BANETTE, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.DUSKULL, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], + [ Biome.TEMPLE, BiomePoolTier.COMMON ] + ] ], [ Species.DUSCLOPS, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], + [ Biome.TEMPLE, BiomePoolTier.COMMON ] + ] ], [ Species.TROPIUS, Type.GRASS, Type.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 ] ] - ] + [ 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, [ - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.BOSS ] - ] + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], + [ Biome.TEMPLE, BiomePoolTier.BOSS ] + ] ], [ Species.ABSOL, Type.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.ABYSS, BiomePoolTier.RARE ], + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.WYNAUT, Type.PSYCHIC, -1, [ ] ], [ Species.SNORUNT, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.GLALIE, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.SPHEAL, Type.ICE, Type.WATER, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SEALEO, Type.ICE, Type.WATER, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.WALREIN, Type.ICE, Type.WATER, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.CLAMPERL, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] - ] + [ Biome.SEABED, BiomePoolTier.COMMON ] + ] ], [ Species.HUNTAIL, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.GOREBYSS, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.RELICANTH, Type.WATER, Type.ROCK, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.LUVDISC, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.UNCOMMON ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.BAGON, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SHELGON, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SALAMENCE, Type.DRAGON, Type.FLYING, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.BELDUM, Type.STEEL, Type.PSYCHIC, [ - [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], - [ Biome.SPACE, BiomePoolTier.RARE ] - ] + [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], + [ Biome.SPACE, BiomePoolTier.RARE ] + ] ], [ Species.METANG, Type.STEEL, Type.PSYCHIC, [ - [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], - [ Biome.SPACE, BiomePoolTier.RARE ] - ] + [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], + [ Biome.SPACE, BiomePoolTier.RARE ] + ] ], [ Species.METAGROSS, Type.STEEL, Type.PSYCHIC, [ - [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], - [ Biome.SPACE, BiomePoolTier.RARE ], - [ Biome.SPACE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.FACTORY, BiomePoolTier.SUPER_RARE ], + [ Biome.SPACE, BiomePoolTier.RARE ], + [ Biome.SPACE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.REGIROCK, Type.ROCK, -1, [ - [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], + [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.REGICE, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.ULTRA_RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.ULTRA_RARE ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.REGISTEEL, Type.STEEL, -1, [ - [ Biome.RUINS, BiomePoolTier.ULTRA_RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.RUINS, BiomePoolTier.ULTRA_RARE ], + [ Biome.RUINS, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.LATIAS, Type.DRAGON, Type.PSYCHIC, [ - [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], + [ Biome.PLAINS, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.LATIOS, Type.DRAGON, Type.PSYCHIC, [ - [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.PLAINS, BiomePoolTier.ULTRA_RARE ], + [ Biome.PLAINS, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.KYOGRE, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.GROUDON, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.BADLANDS, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.RAYQUAZA, Type.DRAGON, Type.FLYING, [ - [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.JIRACHI, Type.STEEL, Type.PSYCHIC, [ ] ], [ Species.DEOXYS, Type.PSYCHIC, -1, [ ] ], [ Species.TURTWIG, Type.GRASS, -1, [ - [ Biome.GRASS, BiomePoolTier.RARE ] - ] + [ Biome.GRASS, BiomePoolTier.RARE ] + ] ], [ Species.GROTLE, Type.GRASS, -1, [ - [ Biome.GRASS, BiomePoolTier.RARE ] - ] + [ Biome.GRASS, BiomePoolTier.RARE ] + ] ], [ Species.TORTERRA, Type.GRASS, Type.GROUND, [ - [ Biome.GRASS, BiomePoolTier.RARE ], - [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.GRASS, BiomePoolTier.RARE ], + [ Biome.GRASS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.CHIMCHAR, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.MONFERNO, Type.FIRE, Type.FIGHTING, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.INFERNAPE, Type.FIRE, Type.FIGHTING, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.PIPLUP, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.RARE ] - ] + [ Biome.SEA, BiomePoolTier.RARE ] + ] ], [ Species.PRINPLUP, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.RARE ] - ] + [ Biome.SEA, BiomePoolTier.RARE ] + ] ], [ Species.EMPOLEON, Type.WATER, Type.STEEL, [ - [ Biome.SEA, BiomePoolTier.RARE ], - [ Biome.SEA, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEA, BiomePoolTier.RARE ], + [ Biome.SEA, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.STARLY, Type.NORMAL, Type.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 ] ] - ] + [ 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, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.STARAPTOR, Type.NORMAL, Type.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 ] ] - ] + [ 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, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ], + [ Biome.PLAINS, BiomePoolTier.COMMON ] + ] ], [ Species.BIBAREL, Type.NORMAL, Type.WATER, [ - [ Biome.PLAINS, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.BOSS ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON ], + [ Biome.PLAINS, BiomePoolTier.BOSS ] + ] ], [ Species.KRICKETOT, Type.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.KRICKETUNE, Type.BUG, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.SHINX, Type.ELECTRIC, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + ] ], [ Species.LUXIO, Type.ELECTRIC, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + ] ], [ Species.LUXRAY, Type.ELECTRIC, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ 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.ROSERADE, Type.GRASS, Type.POISON, [ - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.CRANIDOS, Type.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.RAMPARDOS, Type.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SHIELDON, Type.ROCK, Type.STEEL, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.BASTIODON, Type.ROCK, Type.STEEL, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.BURMY, Type.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.SLUM, BiomePoolTier.UNCOMMON ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON ], + [ Biome.BEACH, BiomePoolTier.UNCOMMON ], + [ Biome.SLUM, BiomePoolTier.UNCOMMON ] + ] ], [ Species.WORMADAM, Type.BUG, Type.GRASS, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.FOREST, BiomePoolTier.BOSS ], - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ], - [ Biome.SLUM, BiomePoolTier.UNCOMMON ], - [ Biome.SLUM, BiomePoolTier.BOSS ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON ], + [ Biome.FOREST, BiomePoolTier.BOSS ], + [ Biome.BEACH, BiomePoolTier.UNCOMMON ], + [ Biome.BEACH, BiomePoolTier.BOSS ], + [ Biome.SLUM, BiomePoolTier.UNCOMMON ], + [ Biome.SLUM, BiomePoolTier.BOSS ] + ] ], [ Species.MOTHIM, Type.BUG, Type.FLYING, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.COMBEE, Type.BUG, Type.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 ] ] - ] + [ 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, [ - [ 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 ] ] - ] + [ 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, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] + ] ], [ Species.BUIZEL, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON ] - ] + [ Biome.SEA, BiomePoolTier.COMMON ] + ] ], [ Species.FLOATZEL, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON ], - [ Biome.SEA, BiomePoolTier.BOSS ] - ] + [ Biome.SEA, BiomePoolTier.COMMON ], + [ Biome.SEA, BiomePoolTier.BOSS ] + ] ], [ Species.CHERUBI, Type.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 ] ] - ] + [ 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, [ - [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ 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, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SWAMP, BiomePoolTier.COMMON ], + [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + ] ], [ Species.GASTRODON, Type.WATER, Type.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ], - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SWAMP, BiomePoolTier.COMMON ], + [ Biome.SWAMP, BiomePoolTier.BOSS ], + [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + ] ], [ Species.AMBIPOM, Type.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS ] - ] + [ Biome.JUNGLE, BiomePoolTier.BOSS ] + ] ], [ Species.DRIFLOON, Type.GHOST, Type.FLYING, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] + ] ], [ Species.DRIFBLIM, Type.GHOST, Type.FLYING, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.BUNEARY, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE ] - ] + [ Biome.PLAINS, BiomePoolTier.RARE ] + ] ], [ Species.LOPUNNY, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS ] - ] + [ Biome.PLAINS, BiomePoolTier.RARE ], + [ Biome.PLAINS, BiomePoolTier.BOSS ] + ] ], [ Species.MISMAGIUS, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.HONCHKROW, Type.DARK, Type.FLYING, [ - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.GLAMEOW, Type.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ] - ] + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ] + ] ], [ Species.PURUGLY, Type.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.BOSS ] - ] + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.MEADOW, BiomePoolTier.BOSS ] + ] ], [ Species.CHINGLING, Type.PSYCHIC, -1, [ - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.STUNKY, Type.POISON, Type.DARK, [ - [ Biome.SLUM, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SLUM, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.SKUNTANK, Type.POISON, Type.DARK, [ - [ Biome.SLUM, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SLUM, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SLUM, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.SLUM, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.BRONZOR, Type.STEEL, Type.PSYCHIC, [ - [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], - [ Biome.SPACE, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] - ] + [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], + [ Biome.SPACE, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ] + ] ], [ Species.BRONZONG, Type.STEEL, Type.PSYCHIC, [ - [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], - [ Biome.SPACE, BiomePoolTier.COMMON ], - [ Biome.SPACE, BiomePoolTier.BOSS ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] - ] + [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], + [ Biome.SPACE, BiomePoolTier.COMMON ], + [ Biome.SPACE, BiomePoolTier.BOSS ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.BOSS ] + ] ], [ Species.BONSLY, Type.ROCK, -1, [ ] ], @@ -4153,3050 +4153,3050 @@ export const biomeTrainerPools: BiomeTrainerPools = { [ Species.HAPPINY, Type.NORMAL, -1, [ ] ], [ Species.CHATOT, Type.NORMAL, Type.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.SPIRITOMB, Type.GHOST, Type.DARK, [ - [ Biome.GRAVEYARD, BiomePoolTier.SUPER_RARE ], - [ Biome.ABYSS, BiomePoolTier.RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.SUPER_RARE ], + [ Biome.ABYSS, BiomePoolTier.RARE ], + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.GIBLE, Type.DRAGON, Type.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.COMMON ] + ] ], [ Species.GABITE, Type.DRAGON, Type.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.COMMON ] + ] ], [ Species.GARCHOMP, Type.DRAGON, Type.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.COMMON ], + [ Biome.WASTELAND, BiomePoolTier.BOSS ] + ] ], [ Species.MUNCHLAX, Type.NORMAL, -1, [ ] ], [ Species.RIOLU, Type.FIGHTING, -1, [ ] ], [ Species.LUCARIO, Type.FIGHTING, Type.STEEL, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.RARE ], + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ Species.HIPPOPOTAS, Type.GROUND, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.HIPPOWDON, Type.GROUND, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SKORUPI, Type.POISON, Type.BUG, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], - ] + [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], + [ Biome.DESERT, BiomePoolTier.COMMON ], + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], + ] ], [ Species.DRAPION, Type.POISON, Type.DARK, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.COMMON ], - [ Biome.DESERT, BiomePoolTier.BOSS ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], - ] + [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], + [ Biome.DESERT, BiomePoolTier.COMMON ], + [ Biome.DESERT, BiomePoolTier.BOSS ], + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ], + ] ], [ Species.CROAGUNK, Type.POISON, Type.FIGHTING, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.DOJO, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.DOJO, BiomePoolTier.UNCOMMON ] + ] ], [ Species.TOXICROAK, Type.POISON, Type.FIGHTING, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.DOJO, BiomePoolTier.UNCOMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.SWAMP, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.DOJO, BiomePoolTier.UNCOMMON ], + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ Species.CARNIVINE, Type.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS ] + ] ], [ Species.FINNEON, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] - ] + [ Biome.SEA, BiomePoolTier.COMMON, TimeOfDay.NIGHT ] + ] ], [ Species.LUMINEON, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], - [ Biome.SEA, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] - ] + [ Biome.SEA, BiomePoolTier.COMMON, TimeOfDay.NIGHT ], + [ Biome.SEA, BiomePoolTier.BOSS, TimeOfDay.NIGHT ] + ] ], [ Species.MANTYKE, Type.WATER, Type.FLYING, [ - [ Biome.SEABED, BiomePoolTier.RARE ] - ] + [ Biome.SEABED, BiomePoolTier.RARE ] + ] ], [ Species.SNOVER, Type.GRASS, Type.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], + [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] + ] ], [ Species.ABOMASNOW, Type.GRASS, Type.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], + [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ], + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] + ] ], [ Species.WEAVILE, Type.DARK, Type.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.MAGNEZONE, Type.ELECTRIC, Type.STEEL, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ], + [ Biome.LABORATORY, BiomePoolTier.BOSS ] + ] ], [ Species.LICKILICKY, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.RHYPERIOR, Type.GROUND, Type.ROCK, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS ] - ] + [ Biome.BADLANDS, BiomePoolTier.BOSS ] + ] ], [ Species.TANGROWTH, Type.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.ELECTIVIRE, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + ] ], [ Species.MAGMORTAR, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.TOGEKISS, Type.FAIRY, Type.FLYING, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.YANMEGA, Type.BUG, Type.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS ] - ] + [ Biome.JUNGLE, BiomePoolTier.BOSS ] + ] ], [ Species.LEAFEON, Type.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.GLACEON, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.GLISCOR, Type.GROUND, Type.FLYING, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS ] - ] + [ Biome.BADLANDS, BiomePoolTier.BOSS ] + ] ], [ Species.MAMOSWINE, Type.ICE, Type.GROUND, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.PORYGON_Z, Type.NORMAL, -1, [ - [ Biome.SPACE, BiomePoolTier.BOSS_RARE ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] - ] + [ Biome.SPACE, BiomePoolTier.BOSS_RARE ], + [ Biome.LABORATORY, BiomePoolTier.BOSS ] + ] ], [ Species.GALLADE, Type.PSYCHIC, Type.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.SUPER_RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.DOJO, BiomePoolTier.SUPER_RARE ], + [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.PROBOPASS, Type.ROCK, Type.STEEL, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.DUSKNOIR, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.FROSLASS, Type.ICE, Type.GHOST, [ - [ Biome.ICE_CAVE, BiomePoolTier.RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.RARE ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.ROTOM, Type.ELECTRIC, Type.GHOST, [ - [ Biome.LABORATORY, BiomePoolTier.SUPER_RARE ], - [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ], - [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ], - [ Biome.SEA, BiomePoolTier.SUPER_RARE ], - [ Biome.SEA, BiomePoolTier.BOSS_SUPER_RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.LABORATORY, BiomePoolTier.SUPER_RARE ], + [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ], + [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ], + [ Biome.SEA, BiomePoolTier.SUPER_RARE ], + [ Biome.SEA, BiomePoolTier.BOSS_SUPER_RARE ], + [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS_SUPER_RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ], + [ Biome.TALL_GRASS, BiomePoolTier.SUPER_RARE ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.UXIE, Type.PSYCHIC, -1, [ - [ Biome.CAVE, BiomePoolTier.ULTRA_RARE ], - [ Biome.CAVE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.CAVE, BiomePoolTier.ULTRA_RARE ], + [ Biome.CAVE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.MESPRIT, Type.PSYCHIC, -1, [ - [ Biome.LAKE, BiomePoolTier.ULTRA_RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.LAKE, BiomePoolTier.ULTRA_RARE ], + [ Biome.LAKE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.AZELF, Type.PSYCHIC, -1, [ - [ Biome.SWAMP, BiomePoolTier.ULTRA_RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.ULTRA_RARE ], + [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.DIALGA, Type.STEEL, Type.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.PALKIA, Type.WATER, Type.DRAGON, [ - [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.HEATRAN, Type.FIRE, Type.STEEL, [ - [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.REGIGIGAS, Type.NORMAL, -1, [ - [ Biome.TEMPLE, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.TEMPLE, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.GIRATINA, Type.GHOST, Type.DRAGON, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.CRESSELIA, Type.PSYCHIC, -1, [ - [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], - [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], + [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.PHIONE, Type.WATER, -1, [ ] ], [ Species.MANAPHY, Type.WATER, -1, [ ] ], [ Species.DARKRAI, Type.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.ULTRA_RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.ABYSS, BiomePoolTier.ULTRA_RARE ], + [ Biome.ABYSS, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.SHAYMIN, Type.GRASS, -1, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.ARCEUS, Type.NORMAL, -1, [ ] ], [ Species.VICTINI, Type.PSYCHIC, Type.FIRE, [ ] ], [ Species.SNIVY, Type.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ] + ] ], [ Species.SERVINE, Type.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ] + ] ], [ Species.SERPERIOR, Type.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.TEPIG, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.PIGNITE, Type.FIRE, Type.FIGHTING, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.EMBOAR, Type.FIRE, Type.FIGHTING, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.OSHAWOTT, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ] + ] ], [ Species.DEWOTT, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ] + ] ], [ Species.SAMUROTT, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ], + [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.PATRAT, Type.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 ] ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SLUM, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.SLUM, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.WATCHOG, Type.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 ] ] - ] + [ 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, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ], + [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + ] ], [ Species.HERDIER, Type.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] - ] + [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + ] ], [ Species.STOUTLAND, Type.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] - ] + [ Biome.METROPOLIS, BiomePoolTier.COMMON ], + [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + ] ], [ Species.PURRLOIN, Type.DARK, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ 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, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ], + [ Biome.ABYSS, BiomePoolTier.BOSS ], + [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.PANSAGE, Type.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SIMISAGE, Type.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON ], - [ Biome.FOREST, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON ], + [ Biome.FOREST, BiomePoolTier.BOSS ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.PANSEAR, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SIMISEAR, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], + [ Biome.VOLCANO, BiomePoolTier.BOSS ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.PANPOUR, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SIMIPOUR, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SEA, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON ], + [ Biome.SEA, BiomePoolTier.BOSS ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.MUNNA, Type.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.COMMON ] - ] + [ Biome.SPACE, BiomePoolTier.COMMON ] + ] ], [ Species.MUSHARNA, Type.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.COMMON ], - [ Biome.SPACE, BiomePoolTier.BOSS ] - ] + [ Biome.SPACE, BiomePoolTier.COMMON ], + [ Biome.SPACE, BiomePoolTier.BOSS ] + ] ], [ Species.PIDOVE, Type.NORMAL, Type.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 ] ] - ] + [ 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, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.UNFEZANT, Type.NORMAL, Type.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 ] ] - ] + [ 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, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.COMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.COMMON ], + [ Biome.JUNGLE, BiomePoolTier.COMMON ] + ] ], [ Species.ZEBSTRIKA, Type.ELECTRIC, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.COMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.COMMON ], + [ Biome.MEADOW, BiomePoolTier.BOSS ], + [ Biome.JUNGLE, BiomePoolTier.COMMON ] + ] ], [ Species.ROGGENROLA, Type.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 ] - ] + [ 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, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ] - ] + [ 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, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.WOOBAT, Type.PSYCHIC, Type.FLYING, [ - [ Biome.CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.SWOOBAT, Type.PSYCHIC, Type.FLYING, [ - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.DRILBUR, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] - ] + [ Biome.BADLANDS, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + ] ], [ Species.EXCADRILL, Type.GROUND, Type.STEEL, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.BADLANDS, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] - ] + [ Biome.BADLANDS, BiomePoolTier.COMMON ], + [ Biome.BADLANDS, BiomePoolTier.BOSS ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + ] ], [ Species.AUDINO, Type.NORMAL, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.RARE ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.RARE ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.TIMBURR, Type.FIGHTING, -1, [ - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] - ] + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + ] ], [ Species.GURDURR, Type.FIGHTING, -1, [ - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] - ] + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + ] ], [ Species.CONKELDURR, Type.FIGHTING, -1, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] + ] ], [ Species.TYMPOLE, Type.WATER, -1, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ] - ] + [ Biome.SWAMP, BiomePoolTier.COMMON ] + ] ], [ Species.PALPITOAD, Type.WATER, Type.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ] - ] + [ Biome.SWAMP, BiomePoolTier.COMMON ] + ] ], [ Species.SEISMITOAD, Type.WATER, Type.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.COMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ] - ] + [ Biome.SWAMP, BiomePoolTier.COMMON ], + [ Biome.SWAMP, BiomePoolTier.BOSS ] + ] ], [ Species.THROH, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.RARE ], + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ Species.SAWK, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.RARE ], + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ Species.SEWADDLE, Type.BUG, Type.GRASS, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SWADLOON, Type.BUG, Type.GRASS, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.LEAVANNY, Type.BUG, Type.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 ] ] - ] + [ 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, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.WHIRLIPEDE, Type.BUG, Type.POISON, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.SCOLIPEDE, Type.BUG, Type.POISON, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.COTTONEE, Type.GRASS, Type.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 ] ] - ] + [ 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, [ - [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.PETILIL, Type.GRASS, -1, [ - [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.LILLIGANT, Type.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.BASCULIN, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] - ] + [ Biome.SEABED, BiomePoolTier.COMMON ] + ] ], [ Species.SANDILE, Type.GROUND, Type.DARK, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.KROKOROK, Type.GROUND, Type.DARK, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.KROOKODILE, Type.GROUND, Type.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 ] ] - ] + [ 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, [ - [ Biome.DESERT, BiomePoolTier.RARE ] - ] + [ Biome.DESERT, BiomePoolTier.RARE ] + ] ], [ Species.DARMANITAN, Type.FIRE, -1, [ - [ Biome.DESERT, BiomePoolTier.RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS ] - ] + [ Biome.DESERT, BiomePoolTier.RARE ], + [ Biome.DESERT, BiomePoolTier.BOSS ] + ] ], [ Species.MARACTUS, Type.GRASS, -1, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.BOSS ] - ] + [ Biome.DESERT, BiomePoolTier.UNCOMMON ], + [ Biome.DESERT, BiomePoolTier.BOSS ] + ] ], [ Species.DWEBBLE, Type.BUG, Type.ROCK, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ] + ] ], [ Species.CRUSTLE, Type.BUG, Type.ROCK, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ], + [ Biome.BEACH, BiomePoolTier.BOSS ] + ] ], [ Species.SCRAGGY, Type.DARK, Type.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.UNCOMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.DOJO, BiomePoolTier.UNCOMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SCRAFTY, Type.DARK, Type.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.UNCOMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.DOJO, BiomePoolTier.UNCOMMON ], + [ Biome.DOJO, BiomePoolTier.BOSS ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SIGILYPH, Type.PSYCHIC, Type.FLYING, [ - [ Biome.RUINS, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ], - [ Biome.SPACE, BiomePoolTier.RARE ] - ] + [ Biome.RUINS, BiomePoolTier.UNCOMMON ], + [ Biome.RUINS, BiomePoolTier.BOSS ], + [ Biome.SPACE, BiomePoolTier.RARE ] + ] ], [ Species.YAMASK, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], + [ Biome.TEMPLE, BiomePoolTier.COMMON ] + ] ], [ Species.COFAGRIGUS, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], + [ Biome.TEMPLE, BiomePoolTier.COMMON ], + [ Biome.TEMPLE, BiomePoolTier.BOSS ] + ] ], [ Species.TIRTOUGA, Type.WATER, Type.ROCK, [ - [ Biome.SEA, BiomePoolTier.SUPER_RARE ], - [ Biome.BEACH, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.SEA, BiomePoolTier.SUPER_RARE ], + [ Biome.BEACH, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.CARRACOSTA, Type.WATER, Type.ROCK, [ - [ Biome.SEA, BiomePoolTier.SUPER_RARE ], - [ Biome.BEACH, BiomePoolTier.SUPER_RARE ], - [ Biome.BEACH, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEA, BiomePoolTier.SUPER_RARE ], + [ Biome.BEACH, BiomePoolTier.SUPER_RARE ], + [ Biome.BEACH, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.ARCHEN, Type.ROCK, Type.FLYING, [ - [ Biome.RUINS, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.RUINS, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.ARCHEOPS, Type.ROCK, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.RUINS, BiomePoolTier.SUPER_RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.RUINS, BiomePoolTier.SUPER_RARE ], + [ Biome.RUINS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.TRUBBISH, Type.POISON, -1, [ - [ Biome.SLUM, BiomePoolTier.COMMON ] - ] + [ Biome.SLUM, BiomePoolTier.COMMON ] + ] ], [ Species.GARBODOR, Type.POISON, -1, [ - [ Biome.SLUM, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.BOSS ] - ] + [ Biome.SLUM, BiomePoolTier.COMMON ], + [ Biome.SLUM, BiomePoolTier.BOSS ] + ] ], [ Species.ZORUA, Type.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.RARE ] - ] + [ Biome.ABYSS, BiomePoolTier.RARE ] + ] ], [ Species.ZOROARK, Type.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.ABYSS, BiomePoolTier.RARE ], + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.MINCCINO, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MEADOW, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.CINCCINO, Type.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - ] + [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + ] ], [ Species.GOTHITA, Type.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.RARE ] - ] + [ Biome.RUINS, BiomePoolTier.RARE ] + ] ], [ Species.GOTHORITA, Type.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.RARE ] - ] + [ Biome.RUINS, BiomePoolTier.RARE ] + ] ], [ Species.GOTHITELLE, Type.PSYCHIC, -1, [ [ Biome.RUINS, BiomePoolTier.RARE ], [ Biome.RUINS, BiomePoolTier.BOSS ] - ] + ] ], [ Species.SOLOSIS, Type.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.RARE ], - [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SPACE, BiomePoolTier.RARE ], + [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ] + ] ], [ Species.DUOSION, Type.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.RARE ], - [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SPACE, BiomePoolTier.RARE ], + [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ] + ] ], [ Species.REUNICLUS, Type.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.RARE ], - [ Biome.SPACE, BiomePoolTier.BOSS ], - [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] - ] + [ Biome.SPACE, BiomePoolTier.RARE ], + [ Biome.SPACE, BiomePoolTier.BOSS ], + [ Biome.LABORATORY, BiomePoolTier.UNCOMMON ], + [ Biome.LABORATORY, BiomePoolTier.BOSS ] + ] ], [ Species.DUCKLETT, Type.WATER, Type.FLYING, [ - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SWANNA, Type.WATER, Type.FLYING, [ - [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.LAKE, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.VANILLITE, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.VANILLISH, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.VANILLUXE, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.DEERLING, Type.NORMAL, Type.GRASS, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SAWSBUCK, Type.NORMAL, Type.GRASS, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.EMOLGA, Type.ELECTRIC, Type.FLYING, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ] + ] ], [ Species.KARRABLAST, Type.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ] + ] ], [ Species.ESCAVALIER, Type.BUG, Type.STEEL, [ - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.FOONGUS, Type.GRASS, Type.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 ] ] - ] + [ 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, [ - [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.GRASS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.JUNGLE, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.FRILLISH, Type.WATER, Type.GHOST, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] - ] + [ Biome.SEABED, BiomePoolTier.COMMON ] + ] ], [ Species.JELLICENT, Type.WATER, Type.GHOST, [ - [ Biome.SEABED, BiomePoolTier.COMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.COMMON ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.ALOMOMOLA, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.JOLTIK, Type.BUG, Type.ELECTRIC, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], - ] + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], + ] ], [ Species.GALVANTULA, Type.BUG, Type.ELECTRIC, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] - ] + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], + [ Biome.JUNGLE, BiomePoolTier.BOSS ] + ] ], [ Species.FERROSEED, Type.GRASS, Type.STEEL, [ - [ Biome.CAVE, BiomePoolTier.RARE ] - ] + [ Biome.CAVE, BiomePoolTier.RARE ] + ] ], [ Species.FERROTHORN, Type.GRASS, Type.STEEL, [ - [ Biome.CAVE, BiomePoolTier.RARE ], - [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.CAVE, BiomePoolTier.RARE ], + [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.KLINK, Type.STEEL, -1, [ - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] - ] + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ] + ] ], [ Species.KLANG, Type.STEEL, -1, [ - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ] - ] + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ] + ] ], [ Species.KLINKLANG, Type.STEEL, -1, [ - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.BOSS ], - [ Biome.LABORATORY, BiomePoolTier.COMMON ], - [ Biome.LABORATORY, BiomePoolTier.BOSS ] - ] + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.FACTORY, BiomePoolTier.BOSS ], + [ Biome.LABORATORY, BiomePoolTier.COMMON ], + [ Biome.LABORATORY, BiomePoolTier.BOSS ] + ] ], [ Species.TYNAMO, Type.ELECTRIC, -1, [ - [ Biome.SEABED, BiomePoolTier.RARE ] - ] + [ Biome.SEABED, BiomePoolTier.RARE ] + ] ], [ Species.EELEKTRIK, Type.ELECTRIC, -1, [ - [ Biome.SEABED, BiomePoolTier.RARE ] - ] + [ Biome.SEABED, BiomePoolTier.RARE ] + ] ], [ Species.EELEKTROSS, Type.ELECTRIC, -1, [ - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.ELGYEM, Type.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.SPACE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.RUINS, BiomePoolTier.COMMON ], + [ Biome.SPACE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.BEHEEYEM, Type.PSYCHIC, -1, [ - [ Biome.RUINS, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ], - [ Biome.SPACE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.RUINS, BiomePoolTier.COMMON ], + [ Biome.RUINS, BiomePoolTier.BOSS ], + [ Biome.SPACE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.LITWICK, Type.GHOST, Type.FIRE, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.LAMPENT, Type.GHOST, Type.FIRE, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.CHANDELURE, Type.GHOST, Type.FIRE, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.AXEW, Type.DRAGON, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.COMMON ] + ] ], [ Species.FRAXURE, Type.DRAGON, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.COMMON ] + ] ], [ Species.HAXORUS, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON ], + [ Biome.WASTELAND, BiomePoolTier.BOSS ] + ] ], [ Species.CUBCHOO, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.BEARTIC, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.CRYOGONAL, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.RARE ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.SHELMET, Type.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ] + ] ], [ Species.ACCELGOR, Type.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.STUNFISK, Type.GROUND, Type.ELECTRIC, [ - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ] - ] + [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], + [ Biome.SWAMP, BiomePoolTier.BOSS ] + ] ], [ Species.MIENFOO, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.UNCOMMON ] - ] + [ Biome.DOJO, BiomePoolTier.UNCOMMON ] + ] ], [ Species.MIENSHAO, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.UNCOMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.UNCOMMON ], + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ Species.DRUDDIGON, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.GOLETT, Type.GROUND, Type.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.COMMON ] - ] + [ Biome.TEMPLE, BiomePoolTier.COMMON ] + ] ], [ Species.GOLURK, Type.GROUND, Type.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.COMMON ], - [ Biome.TEMPLE, BiomePoolTier.BOSS ] - ] + [ Biome.TEMPLE, BiomePoolTier.COMMON ], + [ Biome.TEMPLE, BiomePoolTier.BOSS ] + ] ], [ Species.PAWNIARD, Type.DARK, Type.STEEL, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ] + ] ], [ Species.BISHARP, Type.DARK, Type.STEEL, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ] + ] ], [ Species.BOUFFALANT, Type.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.RUFFLET, Type.NORMAL, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.BRAVIARY, Type.NORMAL, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.VULLABY, Type.DARK, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.MANDIBUZZ, Type.DARK, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.HEATMOR, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.DURANT, Type.BUG, Type.STEEL, [ - [ Biome.FOREST, BiomePoolTier.SUPER_RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.SUPER_RARE ], + [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.DEINO, Type.DARK, Type.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.ABYSS, BiomePoolTier.RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.ABYSS, BiomePoolTier.RARE ] + ] ], [ Species.ZWEILOUS, Type.DARK, Type.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.ABYSS, BiomePoolTier.RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.ABYSS, BiomePoolTier.RARE ] + ] ], [ Species.HYDREIGON, Type.DARK, Type.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.ABYSS, BiomePoolTier.RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.WASTELAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.ABYSS, BiomePoolTier.RARE ], + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.LARVESTA, Type.BUG, Type.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.VOLCARONA, Type.BUG, Type.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.COBALION, Type.STEEL, Type.FIGHTING, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.TERRAKION, Type.ROCK, Type.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ], + [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.VIRIZION, Type.GRASS, Type.FIGHTING, [ - [ Biome.GRASS, BiomePoolTier.ULTRA_RARE ], - [ Biome.GRASS, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.GRASS, BiomePoolTier.ULTRA_RARE ], + [ Biome.GRASS, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.TORNADUS, Type.FLYING, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.THUNDURUS, Type.ELECTRIC, Type.FLYING, [ - [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.RESHIRAM, Type.DRAGON, Type.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.ZEKROM, Type.DRAGON, Type.ELECTRIC, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.LANDORUS, Type.GROUND, Type.FLYING, [ - [ Biome.BADLANDS, BiomePoolTier.ULTRA_RARE ], - [ Biome.BADLANDS, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.BADLANDS, BiomePoolTier.ULTRA_RARE ], + [ Biome.BADLANDS, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.KYUREM, Type.DRAGON, Type.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.KELDEO, Type.WATER, Type.FIGHTING, [ - [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], - [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], + [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.MELOETTA, Type.NORMAL, Type.PSYCHIC, [ - [ Biome.MEADOW, BiomePoolTier.ULTRA_RARE ], - [ Biome.MEADOW, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.ULTRA_RARE ], + [ Biome.MEADOW, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.GENESECT, Type.BUG, Type.STEEL, [ - [ Biome.FACTORY, BiomePoolTier.ULTRA_RARE ], - [ Biome.FACTORY, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.FACTORY, BiomePoolTier.ULTRA_RARE ], + [ Biome.FACTORY, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.CHESPIN, Type.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ] + ] ], [ Species.QUILLADIN, Type.GRASS, -1, [ - [ Biome.FOREST, BiomePoolTier.RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ] + ] ], [ Species.CHESNAUGHT, Type.GRASS, Type.FIGHTING, [ - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ], + [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.FENNEKIN, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.BRAIXEN, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.DELPHOX, Type.FIRE, Type.PSYCHIC, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.FROAKIE, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ] + ] ], [ Species.FROGADIER, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ] + ] ], [ Species.GRENINJA, Type.WATER, Type.DARK, [ - [ Biome.LAKE, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ], + [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.BUNNELBY, Type.NORMAL, -1, [ - [ Biome.CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.DIGGERSBY, Type.NORMAL, Type.GROUND, [ - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.FLETCHLING, Type.NORMAL, Type.FLYING, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ], + [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.FLETCHINDER, Type.FIRE, Type.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.TALONFLAME, Type.FIRE, Type.FLYING, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ 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, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SPEWPA, Type.BUG, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.VIVILLON, Type.BUG, Type.FLYING, [ - [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.LITLEO, Type.FIRE, Type.NORMAL, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.PYROAR, Type.FIRE, Type.NORMAL, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] - ] + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], + [ Biome.JUNGLE, BiomePoolTier.BOSS ] + ] ], [ Species.FLABEBE, Type.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.COMMON ] + ] ], [ Species.FLOETTE, Type.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.COMMON ] + ] ], [ Species.FLORGES, Type.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.BOSS ] - ] + [ Biome.MEADOW, BiomePoolTier.BOSS ] + ] ], [ Species.SKIDDO, Type.GRASS, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.COMMON ] + ] ], [ Species.GOGOAT, Type.GRASS, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + ] ], [ Species.PANCHAM, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.DOJO, BiomePoolTier.RARE ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.PANGORO, Type.FIGHTING, Type.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 ] ] - ] + [ 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, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] - ] + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + ] ], [ Species.ESPURR, Type.PSYCHIC, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.MEOWSTIC, Type.PSYCHIC, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.METROPOLIS, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.HONEDGE, Type.STEEL, Type.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.COMMON ] - ] + [ Biome.TEMPLE, BiomePoolTier.COMMON ] + ] ], [ Species.DOUBLADE, Type.STEEL, Type.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.COMMON ] - ] + [ Biome.TEMPLE, BiomePoolTier.COMMON ] + ] ], [ Species.AEGISLASH, Type.STEEL, Type.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.BOSS ] - ] + [ Biome.TEMPLE, BiomePoolTier.BOSS ] + ] ], [ Species.SPRITZEE, Type.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.AROMATISSE, Type.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.SWIRLIX, Type.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.SLURPUFF, Type.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.INKAY, Type.DARK, Type.PSYCHIC, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.MALAMAR, Type.DARK, Type.PSYCHIC, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.BINACLE, Type.ROCK, Type.WATER, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ] + ] ], [ Species.BARBARACLE, Type.ROCK, Type.WATER, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ], + [ Biome.BEACH, BiomePoolTier.BOSS ] + ] ], [ Species.SKRELP, Type.POISON, Type.WATER, [ - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + ] ], [ Species.DRAGALGE, Type.POISON, Type.DRAGON, [ - [ Biome.SEABED, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.UNCOMMON ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.CLAUNCHER, Type.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.UNCOMMON ] - ] + [ Biome.BEACH, BiomePoolTier.UNCOMMON ] + ] ], [ Species.CLAWITZER, Type.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] - ] + [ Biome.BEACH, BiomePoolTier.UNCOMMON ], + [ Biome.BEACH, BiomePoolTier.BOSS ] + ] ], [ Species.HELIOPTILE, Type.ELECTRIC, Type.NORMAL, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.DESERT, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.HELIOLISK, Type.ELECTRIC, Type.NORMAL, [ - [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.TYRUNT, Type.ROCK, Type.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.TYRANTRUM, Type.ROCK, Type.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.AMAURA, Type.ROCK, Type.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.AURORUS, Type.ROCK, Type.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.SUPER_RARE ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SYLVEON, Type.FAIRY, -1, [ - [ Biome.MEADOW, BiomePoolTier.SUPER_RARE ], - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.SUPER_RARE ], + [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.HAWLUCHA, Type.FIGHTING, Type.FLYING, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.DEDENNE, Type.ELECTRIC, Type.FAIRY, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + ] ], [ Species.CARBINK, Type.ROCK, Type.FAIRY, [ - [ Biome.CAVE, BiomePoolTier.RARE ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.RARE ], + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.GOOMY, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SLIGGOO, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.GOODRA, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.KLEFKI, Type.STEEL, Type.FAIRY, [ - [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], - [ Biome.FACTORY, BiomePoolTier.BOSS ] - ] + [ Biome.FACTORY, BiomePoolTier.UNCOMMON ], + [ Biome.FACTORY, BiomePoolTier.BOSS ] + ] ], [ Species.PHANTUMP, Type.GHOST, Type.GRASS, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] + ] ], [ Species.TREVENANT, Type.GHOST, Type.GRASS, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.PUMPKABOO, Type.GHOST, Type.GRASS, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] + ] ], [ Species.GOURGEIST, Type.GHOST, Type.GRASS, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.BERGMITE, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.AVALUGG, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.NOIBAT, Type.FLYING, Type.DRAGON, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.NOIVERN, Type.FLYING, Type.DRAGON, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.XERNEAS, Type.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.YVELTAL, Type.DARK, Type.FLYING, [ - [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.ZYGARDE, Type.DRAGON, Type.GROUND, [ - [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.DIANCIE, Type.ROCK, Type.FAIRY, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.ULTRA_RARE ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.ULTRA_RARE ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.HOOPA, Type.PSYCHIC, Type.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], + [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.VOLCANION, Type.FIRE, Type.WATER, [ - [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.ROWLET, Type.GRASS, Type.FLYING, [ - [ Biome.FOREST, BiomePoolTier.RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ] + ] ], [ Species.DARTRIX, Type.GRASS, Type.FLYING, [ - [ Biome.FOREST, BiomePoolTier.RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ] + ] ], [ Species.DECIDUEYE, Type.GRASS, Type.GHOST, [ - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ], + [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.LITTEN, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.TORRACAT, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.INCINEROAR, Type.FIRE, Type.DARK, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.POPPLIO, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.RARE ] - ] + [ Biome.SEA, BiomePoolTier.RARE ] + ] ], [ Species.BRIONNE, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.RARE ] - ] + [ Biome.SEA, BiomePoolTier.RARE ] + ] ], [ Species.PRIMARINA, Type.WATER, Type.FAIRY, [ - [ Biome.SEA, BiomePoolTier.RARE ], - [ Biome.SEA, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEA, BiomePoolTier.RARE ], + [ Biome.SEA, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.PIKIPEK, Type.NORMAL, Type.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.COMMON ] - ] + [ Biome.JUNGLE, BiomePoolTier.COMMON ] + ] ], [ Species.TRUMBEAK, Type.NORMAL, Type.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.COMMON ] - ] + [ Biome.JUNGLE, BiomePoolTier.COMMON ] + ] ], [ Species.TOUCANNON, Type.NORMAL, Type.FLYING, [ - [ Biome.JUNGLE, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] - ] + [ Biome.JUNGLE, BiomePoolTier.COMMON ], + [ Biome.JUNGLE, BiomePoolTier.BOSS ] + ] ], [ Species.YUNGOOS, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.GUMSHOOS, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.GRUBBIN, Type.BUG, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + ] ], [ Species.CHARJABUG, Type.BUG, Type.ELECTRIC, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + ] ], [ Species.VIKAVOLT, Type.BUG, Type.ELECTRIC, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + ] ], [ Species.CRABRAWLER, Type.FIGHTING, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.CRABOMINABLE, Type.FIGHTING, Type.ICE, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.ORICORIO, Type.FIRE, Type.FLYING, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.ISLAND, BiomePoolTier.COMMON ], + [ Biome.ISLAND, BiomePoolTier.BOSS ] + ] ], [ Species.CUTIEFLY, Type.BUG, Type.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.COMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.RIBOMBEE, Type.BUG, Type.FAIRY, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.BOSS ], - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.MEADOW, BiomePoolTier.COMMON ], + [ Biome.MEADOW, BiomePoolTier.BOSS ], + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.ROCKRUFF, Type.ROCK, -1, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], + [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.CAVE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ] + ] ], [ Species.LYCANROC, Type.ROCK, -1, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE, TimeOfDay.DAY ], - [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE, TimeOfDay.NIGHT ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], - [ Biome.CAVE, BiomePoolTier.BOSS_RARE, TimeOfDay.DUSK ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON, TimeOfDay.DAY ], + [ Biome.PLAINS, BiomePoolTier.BOSS_RARE, TimeOfDay.DAY ], + [ Biome.FOREST, BiomePoolTier.UNCOMMON, TimeOfDay.NIGHT ], + [ Biome.FOREST, BiomePoolTier.BOSS_RARE, TimeOfDay.NIGHT ], + [ Biome.CAVE, BiomePoolTier.UNCOMMON, TimeOfDay.DUSK ], + [ Biome.CAVE, BiomePoolTier.BOSS_RARE, TimeOfDay.DUSK ] + ] ], [ Species.WISHIWASHI, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] - ] + [ Biome.LAKE, BiomePoolTier.UNCOMMON ], + [ Biome.LAKE, BiomePoolTier.BOSS ] + ] ], [ Species.MAREANIE, Type.POISON, Type.WATER, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ], + [ Biome.SWAMP, BiomePoolTier.UNCOMMON ] + ] ], [ Species.TOXAPEX, Type.POISON, Type.WATER, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ], - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.BOSS ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ], + [ Biome.BEACH, BiomePoolTier.BOSS ], + [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], + [ Biome.SWAMP, BiomePoolTier.BOSS ] + ] ], [ Species.MUDBRAY, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ] - ] + [ Biome.BADLANDS, BiomePoolTier.COMMON ] + ] ], [ Species.MUDSDALE, Type.GROUND, -1, [ - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.BADLANDS, BiomePoolTier.BOSS ] - ] + [ Biome.BADLANDS, BiomePoolTier.COMMON ], + [ Biome.BADLANDS, BiomePoolTier.BOSS ] + ] ], [ Species.DEWPIDER, Type.WATER, Type.BUG, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.LAKE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.ARAQUANID, Type.WATER, Type.BUG, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.LAKE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.LAKE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.FOMANTIS, Type.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.LURANTIS, Type.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ], - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS ], + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], + [ Biome.JUNGLE, BiomePoolTier.BOSS ] + ] ], [ Species.MORELULL, Type.GRASS, Type.FAIRY, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.SHIINOTIC, Type.GRASS, Type.FAIRY, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.SALANDIT, Type.POISON, Type.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ] - ] + [ Biome.VOLCANO, BiomePoolTier.COMMON ] + ] ], [ Species.SALAZZLE, Type.POISON, Type.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.COMMON ], + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.STUFFUL, Type.NORMAL, Type.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.COMMON ] - ] + [ Biome.DOJO, BiomePoolTier.COMMON ] + ] ], [ Species.BEWEAR, Type.NORMAL, Type.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.COMMON ], + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ Species.BOUNSWEET, Type.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.STEENEE, Type.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.TSAREENA, Type.GRASS, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.COMFEY, Type.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.ORANGURU, Type.NORMAL, Type.PSYCHIC, [ - [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.PASSIMIAN, Type.FIGHTING, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.WIMPOD, Type.BUG, Type.WATER, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.GOLISOPOD, Type.BUG, Type.WATER, [ - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.SANDYGAST, Type.GHOST, Type.GROUND, [ - [ Biome.BEACH, BiomePoolTier.UNCOMMON ] - ] + [ Biome.BEACH, BiomePoolTier.UNCOMMON ] + ] ], [ Species.PALOSSAND, Type.GHOST, Type.GROUND, [ - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.BOSS ] - ] + [ Biome.BEACH, BiomePoolTier.UNCOMMON ], + [ Biome.BEACH, BiomePoolTier.BOSS ] + ] ], [ Species.PYUKUMUKU, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.TYPE_NULL, Type.NORMAL, -1, [ - [ Biome.LABORATORY, BiomePoolTier.ULTRA_RARE ] - ] + [ Biome.LABORATORY, BiomePoolTier.ULTRA_RARE ] + ] ], [ Species.SILVALLY, Type.NORMAL, -1, [ - [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.LABORATORY, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.MINIOR, Type.ROCK, Type.FLYING, [ - [ Biome.SPACE, BiomePoolTier.COMMON ], - [ Biome.SPACE, BiomePoolTier.BOSS ] - ] + [ Biome.SPACE, BiomePoolTier.COMMON ], + [ Biome.SPACE, BiomePoolTier.BOSS ] + ] ], [ Species.KOMALA, Type.NORMAL, -1, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.JUNGLE, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.TURTONATOR, Type.FIRE, Type.DRAGON, [ - [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.UNCOMMON ], + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.TOGEDEMARU, Type.ELECTRIC, Type.STEEL, [ - [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.UNCOMMON ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + ] ], [ Species.MIMIKYU, Type.GHOST, Type.FAIRY, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.RARE ], + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.BRUXISH, Type.WATER, Type.PSYCHIC, [ - [ Biome.ISLAND, BiomePoolTier.UNCOMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ] - ] + [ Biome.ISLAND, BiomePoolTier.UNCOMMON ], + [ Biome.ISLAND, BiomePoolTier.BOSS ] + ] ], [ Species.DRAMPA, Type.NORMAL, Type.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] - ] + [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ], + [ Biome.WASTELAND, BiomePoolTier.BOSS ] + ] ], [ Species.DHELMISE, Type.GHOST, Type.GRASS, [ - [ Biome.SEABED, BiomePoolTier.RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.JANGMO_O, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.HAKAMO_O, Type.DRAGON, Type.FIGHTING, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.KOMMO_O, Type.DRAGON, Type.FIGHTING, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.TAPU_KOKO, Type.ELECTRIC, Type.FAIRY, [ - [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.TEMPLE, BiomePoolTier.ULTRA_RARE ], + [ Biome.TEMPLE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.TAPU_LELE, Type.PSYCHIC, Type.FAIRY, [ - [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.TAPU_BULU, Type.GRASS, Type.FAIRY, [ - [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], + [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.TAPU_FINI, Type.WATER, Type.FAIRY, [ - [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], - [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.BEACH, BiomePoolTier.ULTRA_RARE ], + [ Biome.BEACH, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.COSMOG, Type.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ] - ] + [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ] + ] ], [ Species.COSMOEM, Type.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ] - ] + [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ] + ] ], [ Species.SOLGALEO, Type.PSYCHIC, Type.STEEL, [ - [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE, TimeOfDay.DAY ] - ] + [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE, TimeOfDay.DAY ] + ] ], [ Species.LUNALA, Type.PSYCHIC, Type.GHOST, [ - [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE, TimeOfDay.NIGHT ] - ] + [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE, TimeOfDay.NIGHT ] + ] ], [ Species.NIHILEGO, Type.ROCK, Type.POISON, [ - [ Biome.SEABED, BiomePoolTier.ULTRA_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.ULTRA_RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.BUZZWOLE, Type.BUG, Type.FIGHTING, [ - [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.PHEROMOSA, Type.BUG, Type.FIGHTING, [ - [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], - [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.DESERT, BiomePoolTier.ULTRA_RARE ], + [ Biome.DESERT, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.XURKITREE, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.CELESTEELA, Type.STEEL, Type.FLYING, [ - [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ], - [ Biome.SPACE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.SPACE, BiomePoolTier.ULTRA_RARE ], + [ Biome.SPACE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.KARTANA, Type.GRASS, Type.STEEL, [ - [ Biome.FOREST, BiomePoolTier.ULTRA_RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.ULTRA_RARE ], + [ Biome.FOREST, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.GUZZLORD, Type.DARK, Type.DRAGON, [ - [ Biome.SLUM, BiomePoolTier.ULTRA_RARE ], - [ Biome.SLUM, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.SLUM, BiomePoolTier.ULTRA_RARE ], + [ Biome.SLUM, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.NECROZMA, Type.PSYCHIC, -1, [ - [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.SPACE, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.MAGEARNA, Type.STEEL, Type.FAIRY, [ - [ Biome.FACTORY, BiomePoolTier.ULTRA_RARE ], - [ Biome.FACTORY, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.FACTORY, BiomePoolTier.ULTRA_RARE ], + [ Biome.FACTORY, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.MARSHADOW, Type.FIGHTING, Type.GHOST, [ - [ Biome.GRAVEYARD, BiomePoolTier.ULTRA_RARE ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.ULTRA_RARE ], + [ Biome.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.POIPOLE, Type.POISON, -1, [ - [ Biome.SWAMP, BiomePoolTier.ULTRA_RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.ULTRA_RARE ] + ] ], [ Species.NAGANADEL, Type.POISON, Type.DRAGON, [ - [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.STAKATAKA, Type.ROCK, Type.STEEL, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.ULTRA_RARE ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.BLACEPHALON, Type.FIRE, Type.GHOST, [ - [ Biome.ISLAND, BiomePoolTier.ULTRA_RARE ], - [ Biome.ISLAND, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.ISLAND, BiomePoolTier.ULTRA_RARE ], + [ Biome.ISLAND, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.ZERAORA, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.MELTAN, Type.STEEL, -1, [ ] ], [ Species.MELMETAL, Type.STEEL, -1, [ ] ], [ Species.GROOKEY, Type.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ] + ] ], [ Species.THWACKEY, Type.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ] + ] ], [ Species.RILLABOOM, Type.GRASS, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SCORBUNNY, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.RABOOT, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.CINDERACE, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SOBBLE, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ] + ] ], [ Species.DRIZZILE, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ] + ] ], [ Species.INTELEON, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.LAKE, BiomePoolTier.RARE ], + [ Biome.LAKE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SKWOVET, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.GREEDENT, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.PLAINS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.ROOKIDEE, Type.FLYING, -1, [ - [ Biome.TOWN, BiomePoolTier.RARE ], - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.RARE ], + [ Biome.PLAINS, BiomePoolTier.RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.CORVISQUIRE, Type.FLYING, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.PLAINS, BiomePoolTier.RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.CORVIKNIGHT, Type.FLYING, Type.STEEL, [ - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ 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, [ - [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.DOTTLER, Type.BUG, Type.PSYCHIC, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.ORBEETLE, Type.BUG, Type.PSYCHIC, [ - [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.FOREST, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.NICKIT, Type.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ] + ] ], [ Species.THIEVUL, Type.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ], + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.GOSSIFLEUR, Type.GRASS, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.COMMON ] + ] ], [ Species.ELDEGOSS, Type.GRASS, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ] - ] + [ Biome.MEADOW, BiomePoolTier.COMMON ] + ] ], [ Species.WOOLOO, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ], + [ Biome.MEADOW, BiomePoolTier.COMMON ] + ] ], [ Species.DUBWOOL, Type.NORMAL, -1, [ - [ Biome.MEADOW, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.BOSS ] - ] + [ Biome.MEADOW, BiomePoolTier.COMMON ], + [ Biome.MEADOW, BiomePoolTier.BOSS ] + ] ], [ Species.CHEWTLE, Type.WATER, -1, [ - [ Biome.LAKE, BiomePoolTier.COMMON ] - ] + [ Biome.LAKE, BiomePoolTier.COMMON ] + ] ], [ Species.DREDNAW, Type.WATER, Type.ROCK, [ - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.LAKE, BiomePoolTier.BOSS ] - ] + [ Biome.LAKE, BiomePoolTier.COMMON ], + [ Biome.LAKE, BiomePoolTier.BOSS ] + ] ], [ Species.YAMPER, Type.ELECTRIC, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.BOLTUND, Type.ELECTRIC, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.METROPOLIS, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.METROPOLIS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.ROLYCOLY, Type.ROCK, -1, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ] - ] + [ Biome.VOLCANO, BiomePoolTier.COMMON ] + ] ], [ Species.CARKOL, Type.ROCK, Type.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ] - ] + [ Biome.VOLCANO, BiomePoolTier.COMMON ] + ] ], [ Species.COALOSSAL, Type.ROCK, Type.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.COMMON ], - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.COMMON ], + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ Species.APPLIN, Type.GRASS, Type.DRAGON, [ - [ Biome.MEADOW, BiomePoolTier.RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.RARE ] + ] ], [ Species.FLAPPLE, Type.GRASS, Type.DRAGON, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.APPLETUN, Type.GRASS, Type.DRAGON, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SILICOBRA, Type.GROUND, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON ] - ] + [ Biome.DESERT, BiomePoolTier.COMMON ] + ] ], [ Species.SANDACONDA, Type.GROUND, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON ], - [ Biome.DESERT, BiomePoolTier.BOSS ] - ] + [ Biome.DESERT, BiomePoolTier.COMMON ], + [ Biome.DESERT, BiomePoolTier.BOSS ] + ] ], [ Species.CRAMORANT, Type.FLYING, Type.WATER, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.ARROKUDA, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] - ] + [ Biome.SEABED, BiomePoolTier.COMMON ] + ] ], [ Species.BARRASKEWDA, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.COMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.COMMON ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.TOXEL, Type.ELECTRIC, Type.POISON, [ ] ], [ Species.TOXTRICITY, Type.ELECTRIC, Type.POISON, [ - [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SLUM, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.SLUM, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.SIZZLIPEDE, Type.FIRE, Type.BUG, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.CENTISKORCH, Type.FIRE, Type.BUG, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.CLOBBOPUS, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.COMMON ] - ] + [ Biome.DOJO, BiomePoolTier.COMMON ] + ] ], [ Species.GRAPPLOCT, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.COMMON ], + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ Species.SINISTEA, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ] + ] ], [ Species.POLTEAGEIST, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ], + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.HATENNA, Type.PSYCHIC, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.HATTREM, Type.PSYCHIC, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.HATTERENE, Type.PSYCHIC, Type.FAIRY, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.IMPIDIMP, Type.DARK, Type.FAIRY, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ] + ] ], [ Species.MORGREM, Type.DARK, Type.FAIRY, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ] + ] ], [ Species.GRIMMSNARL, Type.DARK, Type.FAIRY, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ], + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.OBSTAGOON, Type.DARK, Type.NORMAL, [ - [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SLUM, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.SLUM, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.PERRSERKER, Type.STEEL, -1, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE, TimeOfDay.DUSK ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_RARE, TimeOfDay.DUSK ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE, TimeOfDay.DUSK ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_RARE, TimeOfDay.DUSK ] + ] ], [ Species.CURSOLA, Type.GHOST, -1, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SIRFETCHD, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.MR_RIME, Type.ICE, Type.PSYCHIC, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.RUNERIGUS, Type.GROUND, Type.GHOST, [ - [ Biome.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.RUINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.RUINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.MILCERY, Type.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.ALCREMIE, Type.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.FALINKS, Type.FIGHTING, -1, [ - [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], - [ Biome.JUNGLE, BiomePoolTier.BOSS ] - ] + [ Biome.JUNGLE, BiomePoolTier.UNCOMMON ], + [ Biome.JUNGLE, BiomePoolTier.BOSS ] + ] ], [ Species.PINCURCHIN, Type.ELECTRIC, -1, [ - [ Biome.SEABED, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SEABED, BiomePoolTier.UNCOMMON ] + ] ], [ Species.SNOM, Type.ICE, Type.BUG, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], + [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.FROSMOTH, Type.ICE, Type.BUG, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ 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, [ - [ Biome.RUINS, BiomePoolTier.RARE ] - ] + [ Biome.RUINS, BiomePoolTier.RARE ] + ] ], [ Species.EISCUE, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] + ] ], [ Species.INDEEDEE, Type.PSYCHIC, Type.NORMAL, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.MORPEKO, Type.ELECTRIC, Type.DARK, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.CUFANT, Type.STEEL, -1, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ] - ] + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ] + ] ], [ Species.COPPERAJAH, Type.STEEL, -1, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.BADLANDS, BiomePoolTier.BOSS ] - ] + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], + [ Biome.BADLANDS, BiomePoolTier.BOSS ] + ] ], [ Species.DRACOZOLT, Type.ELECTRIC, Type.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.ARCTOZOLT, Type.ELECTRIC, Type.ICE, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ], + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.DRACOVISH, Type.WATER, Type.DRAGON, [ - [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.SUPER_RARE ], + [ Biome.WASTELAND, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.ARCTOVISH, Type.WATER, Type.ICE, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.SUPER_RARE ], + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.DURALUDON, Type.STEEL, Type.DRAGON, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE ] + ] ], [ Species.DREEPY, Type.DRAGON, Type.GHOST, [ - [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.DRAKLOAK, Type.DRAGON, Type.GHOST, [ - [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.DRAGAPULT, Type.DRAGON, Type.GHOST, [ - [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.WASTELAND, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.WASTELAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.ZACIAN, Type.FAIRY, -1, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.ZAMAZENTA, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.DOJO, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.ETERNATUS, Type.POISON, Type.DRAGON, [ - [ Biome.END, BiomePoolTier.BOSS ] - ] + [ Biome.END, BiomePoolTier.BOSS ] + ] ], [ Species.KUBFU, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ] - ] + [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ] + ] ], [ Species.URSHIFU, Type.FIGHTING, Type.DARK, [ - [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.DOJO, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.ZARUDE, Type.DARK, Type.GRASS, [ - [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.REGIELEKI, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.ULTRA_RARE ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.REGIDRAGO, Type.DRAGON, -1, [ - [ Biome.WASTELAND, BiomePoolTier.ULTRA_RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.ULTRA_RARE ], + [ Biome.WASTELAND, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.GLASTRIER, Type.ICE, -1, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.SPECTRIER, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.ULTRA_RARE ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.ULTRA_RARE ], + [ Biome.GRAVEYARD, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.CALYREX, Type.PSYCHIC, Type.GRASS, [ - [ Biome.FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.WYRDEER, Type.NORMAL, Type.PSYCHIC, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.KLEAVOR, Type.BUG, Type.ROCK, [ - [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.SUPER_RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.URSALUNA, Type.GROUND, Type.NORMAL, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] + ] ], [ Species.BASCULEGION, Type.WATER, Type.GHOST, [ - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.SNEASLER, Type.FIGHTING, Type.POISON, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.OVERQWIL, Type.DARK, Type.POISON, [ - [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.ENAMORUS, Type.FAIRY, Type.FLYING, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.ULTRA_RARE ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.ULTRA_RARE ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.SPRIGATITO, Type.GRASS, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.RARE ] + ] ], [ Species.FLORAGATO, Type.GRASS, -1, [ - [ Biome.MEADOW, BiomePoolTier.RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.RARE ] + ] ], [ Species.MEOWSCARADA, Type.GRASS, Type.DARK, [ - [ Biome.MEADOW, BiomePoolTier.RARE ], - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.RARE ], + [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.FUECOCO, Type.FIRE, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.RARE ] + ] ], [ Species.CROCALOR, Type.FIRE, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.RARE ] + ] ], [ Species.SKELEDIRGE, Type.FIRE, Type.GHOST, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.RARE ], + [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.QUAXLY, Type.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.RARE ] - ] + [ Biome.BEACH, BiomePoolTier.RARE ] + ] ], [ Species.QUAXWELL, Type.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.RARE ] - ] + [ Biome.BEACH, BiomePoolTier.RARE ] + ] ], [ Species.QUAQUAVAL, Type.WATER, Type.FIGHTING, [ - [ Biome.BEACH, BiomePoolTier.RARE ], - [ Biome.BEACH, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.BEACH, BiomePoolTier.RARE ], + [ Biome.BEACH, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.LECHONK, Type.NORMAL, -1, [ - [ Biome.TOWN, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ], + [ Biome.PLAINS, BiomePoolTier.COMMON ] + ] ], [ Species.OINKOLOGNE, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.BOSS ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON ], + [ Biome.PLAINS, BiomePoolTier.BOSS ] + ] ], [ Species.TAROUNTULA, Type.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.COMMON ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON ] + ] ], [ Species.SPIDOPS, Type.BUG, -1, [ - [ Biome.FOREST, BiomePoolTier.COMMON ], - [ Biome.FOREST, BiomePoolTier.BOSS ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON ], + [ Biome.FOREST, BiomePoolTier.BOSS ] + ] ], [ Species.NYMBLE, Type.BUG, -1, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], - [ Biome.FOREST, BiomePoolTier.COMMON ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], + [ Biome.FOREST, BiomePoolTier.COMMON ] + ] ], [ Species.LOKIX, Type.BUG, Type.DARK, [ - [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ], - [ Biome.FOREST, BiomePoolTier.COMMON ], - [ Biome.FOREST, BiomePoolTier.BOSS ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.COMMON ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS ], + [ Biome.FOREST, BiomePoolTier.COMMON ], + [ Biome.FOREST, BiomePoolTier.BOSS ] + ] ], [ Species.PAWMI, Type.ELECTRIC, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] - ] + [ 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, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + ] ], [ Species.PAWMOT, Type.ELECTRIC, Type.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 ] - ] + [ 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, [ - [ Biome.TOWN, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.TOWN, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.MAUSHOLD, Type.NORMAL, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.METROPOLIS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.FIDOUGH, Type.FAIRY, -1, [ - [ Biome.TOWN, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ] - ] + [ Biome.TOWN, BiomePoolTier.UNCOMMON ], + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ] + ] ], [ Species.DACHSBUN, Type.FAIRY, -1, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] - ] + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + ] ], [ Species.SMOLIV, Type.GRASS, Type.NORMAL, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.DOLLIV, Type.GRASS, Type.NORMAL, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.ARBOLIVA, Type.GRASS, Type.NORMAL, [ - [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MEADOW, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MEADOW, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SQUAWKABILLY, Type.NORMAL, Type.FLYING, [ - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.FOREST, BiomePoolTier.RARE ] - ] + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ Biome.FOREST, BiomePoolTier.RARE ] + ] ], [ Species.NACLI, Type.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.NACLSTACK, Type.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.CAVE, BiomePoolTier.COMMON ] + ] ], [ Species.GARGANACL, Type.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS ], + [ Biome.CAVE, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.CHARCADET, Type.FIRE, -1, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ] + ] ], [ Species.ARMAROUGE, Type.FIRE, Type.PSYCHIC, [ - [ Biome.VOLCANO, BiomePoolTier.RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.CERULEDGE, Type.FIRE, Type.GHOST, [ - [ Biome.GRAVEYARD, BiomePoolTier.RARE ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.RARE ], + [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.TADBULB, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ] + ] ], [ Species.BELLIBOLT, Type.ELECTRIC, -1, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + ] ], [ Species.WATTREL, Type.ELECTRIC, Type.FLYING, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON ] + ] ], [ Species.KILOWATTREL, Type.ELECTRIC, Type.FLYING, [ - [ Biome.SEA, BiomePoolTier.UNCOMMON ], - [ Biome.SEA, BiomePoolTier.BOSS ] - ] + [ Biome.SEA, BiomePoolTier.UNCOMMON ], + [ Biome.SEA, BiomePoolTier.BOSS ] + ] ], [ Species.MASCHIFF, Type.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ] + ] ], [ Species.MABOSSTIFF, Type.DARK, -1, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ], + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.SHROODLE, Type.POISON, Type.NORMAL, [ - [ Biome.FOREST, BiomePoolTier.COMMON ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON ] + ] ], [ Species.GRAFAIAI, Type.POISON, Type.NORMAL, [ - [ Biome.FOREST, BiomePoolTier.COMMON ], - [ Biome.FOREST, BiomePoolTier.BOSS ] - ] + [ Biome.FOREST, BiomePoolTier.COMMON ], + [ Biome.FOREST, BiomePoolTier.BOSS ] + ] ], [ Species.BRAMBLIN, Type.GRASS, Type.GHOST, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON ] - ] + [ Biome.DESERT, BiomePoolTier.UNCOMMON ] + ] ], [ Species.BRAMBLEGHAST, Type.GRASS, Type.GHOST, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON ], - [ Biome.DESERT, BiomePoolTier.BOSS ] - ] + [ Biome.DESERT, BiomePoolTier.UNCOMMON ], + [ Biome.DESERT, BiomePoolTier.BOSS ] + ] ], [ Species.TOEDSCOOL, Type.GROUND, Type.GRASS, [ - [ Biome.FOREST, BiomePoolTier.RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ] + ] ], [ Species.TOEDSCRUEL, Type.GROUND, Type.GRASS, [ - [ Biome.FOREST, BiomePoolTier.RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.RARE ], + [ Biome.FOREST, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.KLAWF, Type.ROCK, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.RARE ] + ] ], [ Species.CAPSAKID, Type.GRASS, -1, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.SCOVILLAIN, Type.GRASS, Type.FIRE, [ - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.BADLANDS, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.RELLOR, Type.BUG, -1, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.RABSCA, Type.BUG, Type.PSYCHIC, [ - [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.DESERT, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.DESERT, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.FLITTLE, Type.PSYCHIC, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.ESPATHRA, Type.PSYCHIC, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.TINKATINK, Type.FAIRY, Type.STEEL, [ - [ Biome.RUINS, BiomePoolTier.UNCOMMON ] - ] + [ Biome.RUINS, BiomePoolTier.UNCOMMON ] + ] ], [ Species.TINKATUFF, Type.FAIRY, Type.STEEL, [ - [ Biome.RUINS, BiomePoolTier.UNCOMMON ] - ] + [ Biome.RUINS, BiomePoolTier.UNCOMMON ] + ] ], [ Species.TINKATON, Type.FAIRY, Type.STEEL, [ - [ Biome.RUINS, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.BOSS ] - ] + [ Biome.RUINS, BiomePoolTier.UNCOMMON ], + [ Biome.RUINS, BiomePoolTier.BOSS ] + ] ], [ Species.WIGLETT, Type.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ] + ] ], [ Species.WUGTRIO, Type.WATER, -1, [ - [ Biome.BEACH, BiomePoolTier.COMMON ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ] + ] ], [ Species.BOMBIRDIER, Type.FLYING, Type.DARK, [ - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.FINIZEN, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.PALAFIN, Type.WATER, -1, [ - [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SEA, BiomePoolTier.COMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.SEA, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.VAROOM, Type.STEEL, Type.POISON, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE ], - [ Biome.SLUM, BiomePoolTier.RARE ] - ] + [ Biome.METROPOLIS, BiomePoolTier.RARE ], + [ Biome.SLUM, BiomePoolTier.RARE ] + ] ], [ Species.REVAVROOM, Type.STEEL, Type.POISON, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE ], - [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE ], - [ Biome.SLUM, BiomePoolTier.RARE ], - [ Biome.SLUM, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.METROPOLIS, BiomePoolTier.RARE ], + [ Biome.METROPOLIS, BiomePoolTier.BOSS_RARE ], + [ Biome.SLUM, BiomePoolTier.RARE ], + [ Biome.SLUM, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.CYCLIZAR, Type.DRAGON, Type.NORMAL, [ - [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] - ] + [ Biome.WASTELAND, BiomePoolTier.UNCOMMON ] + ] ], [ Species.ORTHWORM, Type.STEEL, -1, [ - [ Biome.DESERT, BiomePoolTier.UNCOMMON ] - ] + [ Biome.DESERT, BiomePoolTier.UNCOMMON ] + ] ], [ Species.GLIMMET, Type.ROCK, Type.POISON, [ - [ Biome.CAVE, BiomePoolTier.RARE ] - ] + [ Biome.CAVE, BiomePoolTier.RARE ] + ] ], [ Species.GLIMMORA, Type.ROCK, Type.POISON, [ - [ Biome.CAVE, BiomePoolTier.RARE ], - [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.CAVE, BiomePoolTier.RARE ], + [ Biome.CAVE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.GREAVARD, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ] + ] ], [ Species.HOUNDSTONE, Type.GHOST, -1, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ Species.FLAMIGO, Type.FLYING, Type.FIGHTING, [ - [ Biome.LAKE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.LAKE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.CETODDLE, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ Species.CETITAN, Type.ICE, -1, [ - [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ Species.VELUZA, Type.WATER, Type.PSYCHIC, [ - [ Biome.SEABED, BiomePoolTier.COMMON ] - ] + [ Biome.SEABED, BiomePoolTier.COMMON ] + ] ], [ Species.DONDOZO, Type.WATER, -1, [ - [ Biome.SEABED, BiomePoolTier.UNCOMMON ], - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.UNCOMMON ], + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ Species.TATSUGIRI, Type.DRAGON, Type.WATER, [ - [ Biome.BEACH, BiomePoolTier.RARE ] - ] + [ Biome.BEACH, BiomePoolTier.RARE ] + ] ], [ Species.ANNIHILAPE, Type.FIGHTING, Type.GHOST, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.DOJO, BiomePoolTier.COMMON ], + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ Species.CLODSIRE, Type.POISON, Type.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.SWAMP, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.FARIGIRAF, Type.NORMAL, Type.PSYCHIC, [ - [ Biome.TALL_GRASS, BiomePoolTier.RARE ], - [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.RARE ], + [ Biome.TALL_GRASS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.DUDUNSPARCE, Type.NORMAL, -1, [ - [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.PLAINS, BiomePoolTier.SUPER_RARE ], + [ Biome.PLAINS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.KINGAMBIT, Type.DARK, Type.STEEL, [ - [ Biome.ABYSS, BiomePoolTier.COMMON ], - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.ABYSS, BiomePoolTier.COMMON ], + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ Species.GREAT_TUSK, Type.GROUND, Type.FIGHTING, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.SCREAM_TAIL, Type.FAIRY, Type.PSYCHIC, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.BRUTE_BONNET, Type.GRASS, Type.DARK, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.FLUTTER_MANE, Type.GHOST, Type.FAIRY, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.SLITHER_WING, Type.BUG, Type.FIGHTING, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.SANDY_SHOCKS, Type.ELECTRIC, Type.GROUND, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.IRON_TREADS, Type.GROUND, Type.STEEL, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.IRON_BUNDLE, Type.ICE, Type.WATER, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.IRON_HANDS, Type.FIGHTING, Type.ELECTRIC, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.IRON_JUGULIS, Type.DARK, Type.FLYING, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.IRON_MOTH, Type.FIRE, Type.POISON, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.IRON_THORNS, Type.ROCK, Type.ELECTRIC, [ - [ Biome.END, BiomePoolTier.COMMON ] - ] + [ Biome.END, BiomePoolTier.COMMON ] + ] ], [ Species.FRIGIBAX, Type.DRAGON, Type.ICE, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.RARE ] + ] ], [ Species.ARCTIBAX, Type.DRAGON, Type.ICE, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ] - ] + [ Biome.WASTELAND, BiomePoolTier.RARE ] + ] ], [ Species.BAXCALIBUR, Type.DRAGON, Type.ICE, [ - [ Biome.WASTELAND, BiomePoolTier.RARE ], - [ Biome.WASTELAND, BiomePoolTier.BOSS ] - ] + [ Biome.WASTELAND, BiomePoolTier.RARE ], + [ Biome.WASTELAND, BiomePoolTier.BOSS ] + ] ], [ Species.GIMMIGHOUL, Type.GHOST, -1, [ - [ Biome.TEMPLE, BiomePoolTier.RARE ] - ] + [ Biome.TEMPLE, BiomePoolTier.RARE ] + ] ], [ Species.GHOLDENGO, Type.STEEL, Type.GHOST, [ - [ Biome.TEMPLE, BiomePoolTier.RARE ], - [ Biome.TEMPLE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.TEMPLE, BiomePoolTier.RARE ], + [ Biome.TEMPLE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.WO_CHIEN, Type.DARK, Type.GRASS, [ - [ Biome.FOREST, BiomePoolTier.ULTRA_RARE ], - [ Biome.FOREST, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.FOREST, BiomePoolTier.ULTRA_RARE ], + [ Biome.FOREST, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.CHIEN_PAO, Type.DARK, Type.ICE, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.TING_LU, Type.DARK, Type.GROUND, [ - [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.CHI_YU, Type.DARK, Type.FIRE, [ - [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], - [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.ULTRA_RARE ], + [ Biome.VOLCANO, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.ROARING_MOON, Type.DRAGON, Type.DARK, [ - [ Biome.END, BiomePoolTier.UNCOMMON ] - ] + [ Biome.END, BiomePoolTier.UNCOMMON ] + ] ], [ Species.IRON_VALIANT, Type.FAIRY, Type.FIGHTING, [ - [ Biome.END, BiomePoolTier.UNCOMMON ] - ] + [ Biome.END, BiomePoolTier.UNCOMMON ] + ] ], [ Species.KORAIDON, Type.FIGHTING, Type.DRAGON, [ - [ Biome.RUINS, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.RUINS, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.MIRAIDON, Type.ELECTRIC, Type.DRAGON, [ - [ Biome.LABORATORY, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.LABORATORY, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.WALKING_WAKE, Type.WATER, Type.DRAGON, [ - [ Biome.END, BiomePoolTier.RARE ] - ] + [ Biome.END, BiomePoolTier.RARE ] + ] ], [ Species.IRON_LEAVES, Type.GRASS, Type.PSYCHIC, [ - [ Biome.END, BiomePoolTier.RARE ] - ] + [ Biome.END, BiomePoolTier.RARE ] + ] ], [ Species.DIPPLIN, Type.GRASS, Type.DRAGON, [ - [ Biome.MEADOW, BiomePoolTier.RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.RARE ] + ] ], [ Species.POLTCHAGEIST, Type.GRASS, Type.GHOST, [ - [ Biome.BADLANDS, BiomePoolTier.RARE ] - ] + [ Biome.BADLANDS, BiomePoolTier.RARE ] + ] ], [ Species.SINISTCHA, Type.GRASS, Type.GHOST, [ - [ Biome.BADLANDS, BiomePoolTier.RARE ], - [ Biome.BADLANDS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.BADLANDS, BiomePoolTier.RARE ], + [ Biome.BADLANDS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.OKIDOGI, Type.POISON, Type.FIGHTING, [ - [ Biome.BADLANDS, BiomePoolTier.ULTRA_RARE ], - [ Biome.BADLANDS, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.BADLANDS, BiomePoolTier.ULTRA_RARE ], + [ Biome.BADLANDS, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.MUNKIDORI, Type.POISON, Type.PSYCHIC, [ - [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.JUNGLE, BiomePoolTier.ULTRA_RARE ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.FEZANDIPITI, Type.POISON, Type.FAIRY, [ - [ Biome.RUINS, BiomePoolTier.ULTRA_RARE ], - [ Biome.RUINS, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.RUINS, BiomePoolTier.ULTRA_RARE ], + [ Biome.RUINS, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.OGERPON, Type.GRASS, -1, [ - [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.ULTRA_RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.BOSS_SUPER_RARE ] + ] ], [ Species.ARCHALUDON, Type.STEEL, Type.DRAGON, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.HYDRAPPLE, Type.GRASS, Type.DRAGON, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.MEADOW, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.GOUGING_FIRE, Type.FIRE, Type.DRAGON, [ - [ Biome.END, BiomePoolTier.RARE ] - ] + [ Biome.END, BiomePoolTier.RARE ] + ] ], [ Species.RAGING_BOLT, Type.ELECTRIC, Type.DRAGON, [ - [ Biome.END, BiomePoolTier.RARE ] - ] + [ Biome.END, BiomePoolTier.RARE ] + ] ], [ Species.IRON_BOULDER, Type.ROCK, Type.PSYCHIC, [ - [ Biome.END, BiomePoolTier.RARE ] - ] + [ Biome.END, BiomePoolTier.RARE ] + ] ], [ Species.IRON_CROWN, Type.STEEL, Type.PSYCHIC, [ - [ Biome.END, BiomePoolTier.RARE ] - ] + [ Biome.END, BiomePoolTier.RARE ] + ] ], [ Species.TERAPAGOS, Type.NORMAL, -1, [ - [ Biome.CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.CAVE, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.PECHARUNT, Type.POISON, Type.GHOST, [ ] ], [ Species.ALOLA_RATTATA, Type.DARK, Type.NORMAL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.ALOLA_RATICATE, Type.DARK, Type.NORMAL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.ALOLA_RAICHU, Type.ELECTRIC, Type.PSYCHIC, [ - [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.ALOLA_SANDSHREW, Type.ICE, Type.STEEL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON ], + [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] + ] ], [ Species.ALOLA_SANDSLASH, Type.ICE, Type.STEEL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ], - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ 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, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON ], + [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ] + ] ], [ Species.ALOLA_NINETALES, Type.ICE, Type.FAIRY, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ], - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE ] - ] + [ 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, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON ] + ] ], [ Species.ALOLA_DUGTRIO, Type.GROUND, Type.STEEL, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON ], + [ Biome.ISLAND, BiomePoolTier.BOSS ] + ] ], [ Species.ALOLA_MEOWTH, Type.DARK, -1, [ - [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.ALOLA_PERSIAN, Type.DARK, -1, [ - [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.ALOLA_GEODUDE, Type.ROCK, Type.ELECTRIC, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON ] + ] ], [ Species.ALOLA_GRAVELER, Type.ROCK, Type.ELECTRIC, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON ] + ] ], [ Species.ALOLA_GOLEM, Type.ROCK, Type.ELECTRIC, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON ], + [ Biome.ISLAND, BiomePoolTier.BOSS ] + ] ], [ Species.ALOLA_GRIMER, Type.POISON, Type.DARK, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON ] + ] ], [ Species.ALOLA_MUK, Type.POISON, Type.DARK, [ - [ Biome.ISLAND, BiomePoolTier.COMMON ], - [ Biome.ISLAND, BiomePoolTier.BOSS ] - ] + [ Biome.ISLAND, BiomePoolTier.COMMON ], + [ Biome.ISLAND, BiomePoolTier.BOSS ] + ] ], [ Species.ALOLA_EXEGGUTOR, Type.GRASS, Type.DRAGON, [ - [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.ALOLA_MAROWAK, Type.FIRE, Type.GHOST, [ - [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.ISLAND, BiomePoolTier.UNCOMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], + [ Biome.ISLAND, BiomePoolTier.BOSS, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.ETERNAL_FLOETTE, Type.FAIRY, -1, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.RARE ], - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.RARE ], + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.GALAR_MEOWTH, Type.STEEL, -1, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE, TimeOfDay.DUSK ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.RARE, TimeOfDay.DUSK ] + ] ], [ Species.GALAR_PONYTA, Type.PSYCHIC, -1, [ - [ Biome.JUNGLE, BiomePoolTier.RARE, TimeOfDay.DAWN ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE, TimeOfDay.DAWN ] + ] ], [ Species.GALAR_RAPIDASH, Type.PSYCHIC, Type.FAIRY, [ - [ Biome.JUNGLE, BiomePoolTier.RARE, TimeOfDay.DAWN ], - [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE, TimeOfDay.DAWN ] - ] + [ Biome.JUNGLE, BiomePoolTier.RARE, TimeOfDay.DAWN ], + [ Biome.JUNGLE, BiomePoolTier.BOSS_RARE, TimeOfDay.DAWN ] + ] ], [ Species.GALAR_SLOWPOKE, Type.PSYCHIC, -1, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.GALAR_SLOWBRO, Type.POISON, Type.PSYCHIC, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.GALAR_FARFETCHD, Type.FIGHTING, -1, [ - [ Biome.DOJO, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.DOJO, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.GALAR_WEEZING, Type.POISON, Type.FAIRY, [ - [ Biome.SLUM, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SLUM, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.GALAR_MR_MIME, Type.ICE, Type.PSYCHIC, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.GALAR_ARTICUNO, Type.PSYCHIC, Type.FLYING, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.ULTRA_RARE ], + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.GALAR_ZAPDOS, Type.FIGHTING, Type.FLYING, [ - [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ], - [ Biome.DOJO, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.DOJO, BiomePoolTier.ULTRA_RARE ], + [ Biome.DOJO, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.GALAR_MOLTRES, Type.DARK, Type.FLYING, [ - [ Biome.ABYSS, BiomePoolTier.ULTRA_RARE ], - [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] - ] + [ Biome.ABYSS, BiomePoolTier.ULTRA_RARE ], + [ Biome.ABYSS, BiomePoolTier.BOSS_ULTRA_RARE ] + ] ], [ Species.GALAR_SLOWKING, Type.POISON, Type.PSYCHIC, [ - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.GALAR_CORSOLA, Type.GHOST, -1, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.GALAR_ZIGZAGOON, Type.DARK, Type.NORMAL, [ - [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.GALAR_LINOONE, Type.DARK, Type.NORMAL, [ - [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SLUM, BiomePoolTier.RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.GALAR_DARUMAKA, Type.ICE, -1, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.GALAR_DARMANITAN, Type.ICE, -1, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ 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, [ - [ Biome.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.RUINS, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.GALAR_STUNFISK, Type.GROUND, Type.STEEL, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE ], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.SWAMP, BiomePoolTier.SUPER_RARE ], + [ Biome.SWAMP, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.HISUI_GROWLITHE, Type.FIRE, Type.ROCK, [ - [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.HISUI_ARCANINE, Type.FIRE, Type.ROCK, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.VOLCANO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.HISUI_VOLTORB, Type.ELECTRIC, Type.GRASS, [ - [ Biome.POWER_PLANT, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.HISUI_ELECTRODE, Type.ELECTRIC, Type.GRASS, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.HISUI_TYPHLOSION, Type.FIRE, Type.GHOST, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.HISUI_QWILFISH, Type.DARK, Type.POISON, [ - [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.SEABED, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.HISUI_SNEASEL, Type.FIGHTING, Type.POISON, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.HISUI_SAMUROTT, Type.WATER, Type.DARK, [ - [ Biome.ABYSS, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.ABYSS, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.HISUI_LILLIGANT, Type.GRASS, Type.FIGHTING, [ - [ Biome.MEADOW, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MEADOW, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.HISUI_ZORUA, Type.NORMAL, Type.GHOST, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.HISUI_ZOROARK, Type.NORMAL, Type.GHOST, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ], - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ 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, [ - [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.HISUI_SLIGGOO, Type.STEEL, Type.DRAGON, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.HISUI_GOODRA, Type.STEEL, Type.DRAGON, [ - [ Biome.SWAMP, BiomePoolTier.SUPER_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.SWAMP, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ 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, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.SUPER_RARE ] + ] ], [ Species.HISUI_DECIDUEYE, Type.GRASS, Type.FIGHTING, [ - [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] - ] + [ Biome.DOJO, BiomePoolTier.BOSS_RARE ] + ] ], [ Species.PALDEA_TAUROS, Type.FIGHTING, -1, [ - [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], - [ Biome.PLAINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] - ] + [ Biome.PLAINS, BiomePoolTier.RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ], + [ Biome.PLAINS, BiomePoolTier.BOSS_RARE, [ TimeOfDay.DAWN, TimeOfDay.DAY ] ] + ] ], [ Species.PALDEA_WOOPER, Type.POISON, Type.GROUND, [ - [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] - ] + [ Biome.SWAMP, BiomePoolTier.COMMON, [ TimeOfDay.DUSK, TimeOfDay.NIGHT ] ] + ] ], [ Species.BLOODMOON_URSALUNA, Type.GROUND, Type.NORMAL, [ - [ Biome.FOREST, BiomePoolTier.SUPER_RARE, TimeOfDay.NIGHT ], - [ Biome.FOREST, BiomePoolTier.BOSS_RARE, TimeOfDay.NIGHT ] - ] + [ Biome.FOREST, BiomePoolTier.SUPER_RARE, TimeOfDay.NIGHT ], + [ Biome.FOREST, BiomePoolTier.BOSS_RARE, TimeOfDay.NIGHT ] + ] ] ]; const trainerBiomes = [ [ TrainerType.ACE_TRAINER, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.UNCOMMON ], - [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], - [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.UNCOMMON ], - [ Biome.ABYSS, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], + [ Biome.GRASS, BiomePoolTier.UNCOMMON ], + [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], + [ Biome.SWAMP, BiomePoolTier.UNCOMMON ], + [ Biome.BEACH, BiomePoolTier.UNCOMMON ], + [ Biome.LAKE, BiomePoolTier.UNCOMMON ], + [ Biome.MOUNTAIN, BiomePoolTier.UNCOMMON ], + [ Biome.BADLANDS, BiomePoolTier.UNCOMMON ], + [ Biome.CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.RUINS, BiomePoolTier.UNCOMMON ], + [ Biome.ABYSS, BiomePoolTier.UNCOMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.TEMPLE, BiomePoolTier.UNCOMMON ] + ] ], [ TrainerType.ARTIST, [ - [ Biome.METROPOLIS, BiomePoolTier.RARE ] - ] + [ Biome.METROPOLIS, BiomePoolTier.RARE ] + ] ], [ TrainerType.BACKERS, [] ], [ TrainerType.BACKPACKER, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.BADLANDS, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.COMMON ], + [ Biome.BADLANDS, BiomePoolTier.COMMON ], + [ Biome.JUNGLE, BiomePoolTier.COMMON ] + ] ], [ TrainerType.BAKER, [ - [ Biome.SLUM, BiomePoolTier.UNCOMMON ] - ] + [ Biome.SLUM, BiomePoolTier.UNCOMMON ] + ] ], [ TrainerType.BEAUTY, [ [ Biome.FAIRY_CAVE, BiomePoolTier.COMMON ] ] ], [ TrainerType.BIKER, [ - [ Biome.SLUM, BiomePoolTier.COMMON ] - ] + [ Biome.SLUM, BiomePoolTier.COMMON ] + ] ], [ TrainerType.BLACK_BELT, [ - [ Biome.DOJO, BiomePoolTier.COMMON ], - [ Biome.PLAINS, BiomePoolTier.RARE ], - [ Biome.GRASS, BiomePoolTier.RARE ], - [ Biome.SWAMP, BiomePoolTier.RARE ], - [ Biome.BEACH, BiomePoolTier.RARE ], - [ Biome.LAKE, BiomePoolTier.RARE ], - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.UNCOMMON ], - [ Biome.RUINS, BiomePoolTier.UNCOMMON ] - ] + [ Biome.DOJO, BiomePoolTier.COMMON ], + [ Biome.PLAINS, BiomePoolTier.RARE ], + [ Biome.GRASS, BiomePoolTier.RARE ], + [ Biome.SWAMP, BiomePoolTier.RARE ], + [ Biome.BEACH, BiomePoolTier.RARE ], + [ Biome.LAKE, BiomePoolTier.RARE ], + [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.UNCOMMON ], + [ Biome.RUINS, BiomePoolTier.UNCOMMON ] + ] ], [ TrainerType.BREEDER, [ - [ Biome.PLAINS, BiomePoolTier.COMMON ], - [ Biome.GRASS, BiomePoolTier.COMMON ], - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], - [ Biome.BEACH, BiomePoolTier.UNCOMMON ], - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], - [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON ], + [ Biome.GRASS, BiomePoolTier.COMMON ], + [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], + [ Biome.METROPOLIS, BiomePoolTier.UNCOMMON ], + [ Biome.BEACH, BiomePoolTier.UNCOMMON ], + [ Biome.LAKE, BiomePoolTier.COMMON ], + [ Biome.MEADOW, BiomePoolTier.UNCOMMON ], + [ Biome.FAIRY_CAVE, BiomePoolTier.UNCOMMON ] + ] ], [ TrainerType.CLERK, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + [ Biome.METROPOLIS, BiomePoolTier.COMMON ] ] ], [ TrainerType.CYCLIST, [ - [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.UNCOMMON ], + [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + ] ], [ TrainerType.DANCER, [] ], [ TrainerType.DEPOT_AGENT, [ @@ -7204,9 +7204,9 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ TrainerType.DOCTOR, [] ], [ TrainerType.FISHERMAN, [ - [ Biome.LAKE, BiomePoolTier.COMMON ], - [ Biome.BEACH, BiomePoolTier.COMMON ] - ] + [ Biome.LAKE, BiomePoolTier.COMMON ], + [ Biome.BEACH, BiomePoolTier.COMMON ] + ] ], [ TrainerType.RICH, [] ], [ TrainerType.GUITARIST, [ @@ -7215,10 +7215,10 @@ export const biomeTrainerPools: BiomeTrainerPools = { ] ], [ TrainerType.HARLEQUIN, [] ], [ TrainerType.HIKER, [ - [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], - [ Biome.CAVE, BiomePoolTier.COMMON ], - [ Biome.BADLANDS, BiomePoolTier.COMMON ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.COMMON ], + [ Biome.CAVE, BiomePoolTier.COMMON ], + [ Biome.BADLANDS, BiomePoolTier.COMMON ] + ] ], [ TrainerType.HOOLIGANS, [] ], [ TrainerType.HOOPSTER, [] ], @@ -7229,376 +7229,376 @@ export const biomeTrainerPools: BiomeTrainerPools = { [ TrainerType.MUSICIAN, [] ], [ TrainerType.NURSERY_AIDE, [] ], [ TrainerType.OFFICER, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], - [ Biome.SLUM, BiomePoolTier.COMMON ] - ] + [ Biome.METROPOLIS, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ], + [ Biome.SLUM, BiomePoolTier.COMMON ] + ] ], [ TrainerType.PARASOL_LADY, [ - [ Biome.BEACH, BiomePoolTier.COMMON ], - [ Biome.MEADOW, BiomePoolTier.COMMON ] - ] + [ Biome.BEACH, BiomePoolTier.COMMON ], + [ Biome.MEADOW, BiomePoolTier.COMMON ] + ] ], [ TrainerType.PILOT, [] ], [ TrainerType.POKEFAN, [] ], [ TrainerType.PRESCHOOLER, [] ], [ TrainerType.PSYCHIC, [ - [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.COMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.COMMON ], + [ Biome.RUINS, BiomePoolTier.COMMON ] + ] ], [ TrainerType.RANGER, [ - [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], - [ Biome.FOREST, BiomePoolTier.COMMON ], - [ Biome.JUNGLE, BiomePoolTier.COMMON ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.UNCOMMON ], + [ Biome.FOREST, BiomePoolTier.COMMON ], + [ Biome.JUNGLE, BiomePoolTier.COMMON ] + ] ], [ TrainerType.RICH_KID, [] ], [ TrainerType.ROUGHNECK, [ - [ Biome.SLUM, BiomePoolTier.COMMON ] - ] + [ Biome.SLUM, BiomePoolTier.COMMON ] + ] ], [ TrainerType.SCIENTIST, [ - [ Biome.DESERT, BiomePoolTier.COMMON ], - [ Biome.RUINS, BiomePoolTier.COMMON ] - ] + [ Biome.DESERT, BiomePoolTier.COMMON ], + [ Biome.RUINS, BiomePoolTier.COMMON ] + ] ], [ TrainerType.SMASHER, [] ], [ TrainerType.SNOW_WORKER, [ - [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], - [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.COMMON ], + [ Biome.SNOWY_FOREST, BiomePoolTier.COMMON ] + ] ], [ TrainerType.STRIKER, [] ], [ TrainerType.SCHOOL_KID, [ - [ Biome.GRASS, BiomePoolTier.COMMON ] - ] + [ Biome.GRASS, BiomePoolTier.COMMON ] + ] ], [ TrainerType.SWIMMER, [ - [ Biome.SEA, BiomePoolTier.COMMON ] - ] + [ Biome.SEA, BiomePoolTier.COMMON ] + ] ], [ TrainerType.TWINS, [ - [ Biome.PLAINS, BiomePoolTier.COMMON ] - ] + [ Biome.PLAINS, BiomePoolTier.COMMON ] + ] ], [ TrainerType.VETERAN, [ - [ Biome.WASTELAND, BiomePoolTier.COMMON ] - ] + [ Biome.WASTELAND, BiomePoolTier.COMMON ] + ] ], [ TrainerType.WAITER, [ - [ Biome.METROPOLIS, BiomePoolTier.COMMON ] - ] + [ Biome.METROPOLIS, BiomePoolTier.COMMON ] + ] ], [ TrainerType.WORKER, [ - [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], - [ Biome.FACTORY, BiomePoolTier.COMMON ], - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.COMMON ], + [ Biome.FACTORY, BiomePoolTier.COMMON ], + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.COMMON ] + ] ], [ TrainerType.YOUNGSTER, [ - [ Biome.TOWN, BiomePoolTier.COMMON ] - ] + [ Biome.TOWN, BiomePoolTier.COMMON ] + ] ], [ TrainerType.HEX_MANIAC, [ - [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.UNCOMMON ] + ] ], [ TrainerType.BROCK, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.MISTY, [ - [ Biome.BEACH, BiomePoolTier.BOSS ] - ] + [ Biome.BEACH, BiomePoolTier.BOSS ] + ] ], [ TrainerType.LT_SURGE, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.ERIKA, [ - [ Biome.GRASS, BiomePoolTier.BOSS ] - ] + [ Biome.GRASS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.JANINE, [ - [ Biome.SWAMP, BiomePoolTier.BOSS ] - ] + [ Biome.SWAMP, BiomePoolTier.BOSS ] + ] ], [ TrainerType.SABRINA, [ - [ Biome.RUINS, BiomePoolTier.BOSS ] - ] + [ Biome.RUINS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.GIOVANNI, [ - [ Biome.LABORATORY, BiomePoolTier.BOSS ] - ] + [ Biome.LABORATORY, BiomePoolTier.BOSS ] + ] ], [ TrainerType.BLAINE, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ TrainerType.FALKNER, [ - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + ] ], [ TrainerType.BUGSY, [ - [ Biome.FOREST, BiomePoolTier.BOSS ] - ] + [ Biome.FOREST, BiomePoolTier.BOSS ] + ] ], [ TrainerType.WHITNEY, [ - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] - ] + [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.MORTY, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ TrainerType.CHUCK, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.JASMINE, [ - [ Biome.FACTORY, BiomePoolTier.BOSS ] - ] + [ Biome.FACTORY, BiomePoolTier.BOSS ] + ] ], [ TrainerType.PRYCE, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.CLAIR, [ - [ Biome.WASTELAND, BiomePoolTier.BOSS ] - ] + [ Biome.WASTELAND, BiomePoolTier.BOSS ] + ] ], [ TrainerType.ROXANNE, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.BRAWLY, [ - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ TrainerType.WATTSON, [ - [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] - ] + [ Biome.CONSTRUCTION_SITE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.FLANNERY, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ TrainerType.NORMAN, [ - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] - ] + [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.WINONA, [ - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + ] ], [ TrainerType.TATE, [ - [ Biome.RUINS, BiomePoolTier.BOSS ] - ] + [ Biome.RUINS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.LIZA, [ - [ Biome.RUINS, BiomePoolTier.BOSS ] - ] + [ Biome.RUINS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.JUAN, [ - [ Biome.SEABED, BiomePoolTier.BOSS ] - ] + [ Biome.SEABED, BiomePoolTier.BOSS ] + ] ], [ TrainerType.ROARK, [ - [ Biome.CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.CAVE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.GARDENIA, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.CRASHER_WAKE, [ - [ Biome.LAKE, BiomePoolTier.BOSS ] - ] + [ Biome.LAKE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.MAYLENE, [ - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ TrainerType.FANTINA, [ - [ Biome.TEMPLE, BiomePoolTier.BOSS ] - ] + [ Biome.TEMPLE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.BYRON, [ - [ Biome.FACTORY, BiomePoolTier.BOSS ] - ] + [ Biome.FACTORY, BiomePoolTier.BOSS ] + ] ], [ TrainerType.CANDICE, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] + ] ], [ TrainerType.VOLKNER, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + ] ], [ TrainerType.CILAN, [ - [ Biome.PLAINS, BiomePoolTier.BOSS ] - ] + [ Biome.PLAINS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.CHILI, [ - [ Biome.PLAINS, BiomePoolTier.BOSS ] - ] + [ Biome.PLAINS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.CRESS, [ - [ Biome.PLAINS, BiomePoolTier.BOSS ] - ] + [ Biome.PLAINS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.CHEREN, [ - [ Biome.PLAINS, BiomePoolTier.BOSS ] - ] + [ Biome.PLAINS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.LENORA, [ - [ Biome.MEADOW, BiomePoolTier.BOSS ] - ] + [ Biome.MEADOW, BiomePoolTier.BOSS ] + ] ], [ TrainerType.ROXIE, [ - [ Biome.SWAMP, BiomePoolTier.BOSS ] - ] + [ Biome.SWAMP, BiomePoolTier.BOSS ] + ] ], [ TrainerType.BURGH, [ - [ Biome.FOREST, BiomePoolTier.BOSS ] - ] + [ Biome.FOREST, BiomePoolTier.BOSS ] + ] ], [ TrainerType.ELESA, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + ] ], [ TrainerType.CLAY, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS ] - ] + [ Biome.BADLANDS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.SKYLA, [ - [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] - ] + [ Biome.MOUNTAIN, BiomePoolTier.BOSS ] + ] ], [ TrainerType.BRYCEN, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.DRAYDEN, [ - [ Biome.WASTELAND, BiomePoolTier.BOSS ] - ] + [ Biome.WASTELAND, BiomePoolTier.BOSS ] + ] ], [ TrainerType.MARLON, [ - [ Biome.SEA, BiomePoolTier.BOSS ] - ] + [ Biome.SEA, BiomePoolTier.BOSS ] + ] ], [ TrainerType.VIOLA, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.GRANT, [ - [ Biome.BADLANDS, BiomePoolTier.BOSS ] - ] + [ Biome.BADLANDS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.KORRINA, [ - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ TrainerType.RAMOS, [ - [ Biome.JUNGLE, BiomePoolTier.BOSS ] - ] + [ Biome.JUNGLE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.CLEMONT, [ - [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] - ] + [ Biome.POWER_PLANT, BiomePoolTier.BOSS ] + ] ], [ TrainerType.VALERIE, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.OLYMPIA, [ - [ Biome.SPACE, BiomePoolTier.BOSS ] - ] + [ Biome.SPACE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.WULFRIC, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.MILO, [ - [ Biome.MEADOW, BiomePoolTier.BOSS ] - ] + [ Biome.MEADOW, BiomePoolTier.BOSS ] + ] ], [ TrainerType.NESSA, [ - [ Biome.ISLAND, BiomePoolTier.BOSS ] - ] + [ Biome.ISLAND, BiomePoolTier.BOSS ] + ] ], [ TrainerType.KABU, [ - [ Biome.VOLCANO, BiomePoolTier.BOSS ] - ] + [ Biome.VOLCANO, BiomePoolTier.BOSS ] + ] ], [ TrainerType.BEA, [ - [ Biome.DOJO, BiomePoolTier.BOSS ] - ] + [ Biome.DOJO, BiomePoolTier.BOSS ] + ] ], [ TrainerType.ALLISTER, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ TrainerType.OPAL, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.BEDE, [ - [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.FAIRY_CAVE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.GORDIE, [ - [ Biome.DESERT, BiomePoolTier.BOSS ] - ] + [ Biome.DESERT, BiomePoolTier.BOSS ] + ] ], [ TrainerType.MELONY, [ - [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] - ] + [ Biome.SNOWY_FOREST, BiomePoolTier.BOSS ] + ] ], [ TrainerType.PIERS, [ - [ Biome.SLUM, BiomePoolTier.BOSS ] - ] + [ Biome.SLUM, BiomePoolTier.BOSS ] + ] ], [ TrainerType.MARNIE, [ - [ Biome.ABYSS, BiomePoolTier.BOSS ] - ] + [ Biome.ABYSS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.RAIHAN, [ - [ Biome.WASTELAND, BiomePoolTier.BOSS ] - ] + [ Biome.WASTELAND, BiomePoolTier.BOSS ] + ] ], [ TrainerType.KATY, [ - [ Biome.FOREST, BiomePoolTier.BOSS ] - ] + [ Biome.FOREST, BiomePoolTier.BOSS ] + ] ], [ TrainerType.BRASSIUS, [ - [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] - ] + [ Biome.TALL_GRASS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.IONO, [ - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] - ] + [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.KOFU, [ - [ Biome.BEACH, BiomePoolTier.BOSS ] - ] + [ Biome.BEACH, BiomePoolTier.BOSS ] + ] ], [ TrainerType.LARRY, [ - [ Biome.METROPOLIS, BiomePoolTier.BOSS ] - ] + [ Biome.METROPOLIS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.RYME, [ - [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] - ] + [ Biome.GRAVEYARD, BiomePoolTier.BOSS ] + ] ], [ TrainerType.TULIP, [ - [ Biome.RUINS, BiomePoolTier.BOSS ] - ] + [ Biome.RUINS, BiomePoolTier.BOSS ] + ] ], [ TrainerType.GRUSHA, [ - [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] - ] + [ Biome.ICE_CAVE, BiomePoolTier.BOSS ] + ] ], [ TrainerType.LORELEI, [] ], [ TrainerType.BRUNO, [] ], @@ -7659,7 +7659,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { const linkedBiomes: (Biome | [ Biome, integer ])[] = Array.isArray(biomeLinks[biome]) ? biomeLinks[biome] as (Biome | [ Biome, integer ])[] : [ biomeLinks[biome] as Biome ]; - for (let linkedBiomeEntry of linkedBiomes) { + for (const linkedBiomeEntry of linkedBiomes) { const linkedBiome = !Array.isArray(linkedBiomeEntry) ? linkedBiomeEntry as Biome : linkedBiomeEntry[0]; @@ -7678,20 +7678,20 @@ export const biomeTrainerPools: BiomeTrainerPools = { import('./pokemon-evolutions').then(pe => { const pokemonEvolutions = pe.pokemonEvolutions; - for (let biome of Utils.getEnumValues(Biome)) { + for (const biome of Utils.getEnumValues(Biome)) { biomePokemonPools[biome] = {}; biomeTrainerPools[biome] = {}; - for (let tier of Utils.getEnumValues(BiomePoolTier)) { + for (const tier of Utils.getEnumValues(BiomePoolTier)) { biomePokemonPools[biome][tier] = {}; biomeTrainerPools[biome][tier] = []; - for (let tod of Utils.getEnumValues(TimeOfDay)) + for (const tod of Utils.getEnumValues(TimeOfDay)) biomePokemonPools[biome][tier][tod] = []; } } - for (let pb of pokemonBiomes) { + for (const pb of pokemonBiomes) { const speciesId = pb[0] as Species; const biomeEntries = pb[3] as (Biome | BiomePoolTier)[][]; @@ -7702,7 +7702,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { if (!biomeEntries.filter(b => b[0] !== Biome.END).length && !speciesEvolutions.filter(es => !!((pokemonBiomes.find(p => p[0] === es.speciesId))[3] as any[]).filter(b => b[0] !== Biome.END).length).length) uncatchableSpecies.push(speciesId); - for (let b of biomeEntries) { + for (const b of biomeEntries) { const biome = b[0]; const tier = b[1]; const timesOfDay = b.length > 2 @@ -7711,7 +7711,7 @@ export const biomeTrainerPools: BiomeTrainerPools = { : [ b[2] ] : [ TimeOfDay.ALL ]; - for (let tod of timesOfDay) { + for (const tod of timesOfDay) { if (!biomePokemonPools.hasOwnProperty(biome) || !biomePokemonPools[biome].hasOwnProperty(tier) || !biomePokemonPools[biome][tier].hasOwnProperty(tod)) continue; @@ -7746,10 +7746,10 @@ export const biomeTrainerPools: BiomeTrainerPools = { } } - for (let b of Object.keys(biomePokemonPools)) { - for (let t of Object.keys(biomePokemonPools[b])) { + for (const b of Object.keys(biomePokemonPools)) { + for (const t of Object.keys(biomePokemonPools[b])) { const tier = parseInt(t) as BiomePoolTier; - for (let tod of Object.keys(biomePokemonPools[b][t])) { + for (const tod of Object.keys(biomePokemonPools[b][t])) { const biomeTierTimePool = biomePokemonPools[b][t][tod]; for (let e = 0; e < biomeTierTimePool.length; e++) { const entry = biomeTierTimePool[e]; @@ -7775,11 +7775,11 @@ export const biomeTrainerPools: BiomeTrainerPools = { } } - for (let tb of trainerBiomes) { + for (const tb of trainerBiomes) { const trainerType = tb[0] as TrainerType; const biomeEntries = tb[1] as BiomePoolTier[][]; - for (let b of biomeEntries) { + for (const b of biomeEntries) { const biome = b[0]; const tier = b[1]; @@ -7798,28 +7798,28 @@ export const biomeTrainerPools: BiomeTrainerPools = { const pokemonOutput = {}; const trainerOutput = {}; - for (let b of Object.keys(biomePokemonPools)) { + for (const b of Object.keys(biomePokemonPools)) { const biome = Biome[b]; pokemonOutput[biome] = {}; trainerOutput[biome] = {}; - for (let t of Object.keys(biomePokemonPools[b])) { + for (const t of Object.keys(biomePokemonPools[b])) { const tier = BiomePoolTier[t]; pokemonOutput[biome][tier] = {}; - for (let tod of Object.keys(biomePokemonPools[b][t])) { + for (const tod of Object.keys(biomePokemonPools[b][t])) { const timeOfDay = TimeOfDay[tod]; pokemonOutput[biome][tier][timeOfDay] = []; - for (let f of biomePokemonPools[b][t][tod]) { + for (const f of biomePokemonPools[b][t][tod]) { if (typeof f === 'number') pokemonOutput[biome][tier][timeOfDay].push(Species[f]); else { const tree = {}; - for (let l of Object.keys(f)) { + for (const l of Object.keys(f)) { tree[l] = f[l].map(s => Species[s]); } @@ -7830,12 +7830,12 @@ export const biomeTrainerPools: BiomeTrainerPools = { } } - for (let t of Object.keys(biomeTrainerPools[b])) { + for (const t of Object.keys(biomeTrainerPools[b])) { const tier = BiomePoolTier[t]; trainerOutput[biome][tier] = []; - for (let f of biomeTrainerPools[b][t]) + for (const f of biomeTrainerPools[b][t]) trainerOutput[biome][tier].push(TrainerType[f]); } } diff --git a/src/data/daily-run.ts b/src/data/daily-run.ts index c1a1206f3d7..df9ba5df962 100644 --- a/src/data/daily-run.ts +++ b/src/data/daily-run.ts @@ -1,11 +1,11 @@ -import BattleScene from "../battle-scene"; -import { PlayerPokemon } from "../field/pokemon"; -import { GameModes, gameModes } from "../game-mode"; -import { Starter } from "../ui/starter-select-ui-handler"; -import * as Utils from "../utils"; -import { Species } from "./enums/species"; -import PokemonSpecies, { PokemonSpeciesForm, getPokemonSpecies, getPokemonSpeciesForm, speciesStarters } from "./pokemon-species"; -import { PartyMemberStrength } from "./enums/party-member-strength"; +import BattleScene from '../battle-scene'; +import { PlayerPokemon } from '../field/pokemon'; +import { GameModes, gameModes } from '../game-mode'; +import { Starter } from '../ui/starter-select-ui-handler'; +import * as Utils from '../utils'; +import { Species } from './enums/species'; +import PokemonSpecies, { PokemonSpeciesForm, getPokemonSpecies, getPokemonSpeciesForm, speciesStarters } from './pokemon-species'; +import { PartyMemberStrength } from './enums/party-member-strength'; export interface DailyRunConfig { seed: integer; @@ -21,7 +21,7 @@ export function fetchDailyRunSeed(): Promise { } return response.text(); }).then(seed => resolve(seed)) - .catch(err => reject(err)); + .catch(err => reject(err)); }); } @@ -72,4 +72,4 @@ function getDailyRunStarter(scene: BattleScene, starterSpeciesForm: PokemonSpeci }; pokemon.destroy(); return starter; -} \ No newline at end of file +} diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index 8d1be662f73..edf87ed30b3 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -1,6 +1,6 @@ -import { trainerConfigs } from "./trainer-config"; -import { TrainerType } from "./enums/trainer-type"; -import { BattleSpec } from "../enums/battle-spec"; +import { trainerConfigs } from './trainer-config'; +import { TrainerType } from './enums/trainer-type'; +import { BattleSpec } from '../enums/battle-spec'; export interface TrainerTypeMessages { encounter?: string | string[], @@ -16,317 +16,317 @@ export const trainerTypeDialogue = { [TrainerType.YOUNGSTER]: [ { encounter: [ - `Hey, wanna battle?`, - `Are you a new trainer too?`, - `Hey, I haven't seen you before. Let's battle!`, - `I just lost, so I'm trying to find more Pokémon.\nWait! You look weak! Come on, let's battle!`, - `Have we met or not? I don't really remember. Well, I guess it's nice to meet you anyway!`, - `All right! Let's go!`, - `All right! Here I come! I'll show you my power!`, - `Haw haw haw... I'll show you how hawesome my Pokémon are!`, - `No need to waste time saying hello. Bring it on whenever you're ready!`, - `Don't let your guard down, or you may be crying when a kid beats you.`, - `I've raised my Pokémon with great care. You're not allowed to hurt them!`, - `Glad you made it! It won't be an easy job from here.`, - `The battles continue forever! Welcome to the world with no end!` + 'Hey, wanna battle?', + 'Are you a new trainer too?', + 'Hey, I haven\'t seen you before. Let\'s battle!', + 'I just lost, so I\'m trying to find more Pokémon.\nWait! You look weak! Come on, let\'s battle!', + 'Have we met or not? I don\'t really remember. Well, I guess it\'s nice to meet you anyway!', + 'All right! Let\'s go!', + 'All right! Here I come! I\'ll show you my power!', + 'Haw haw haw... I\'ll show you how hawesome my Pokémon are!', + 'No need to waste time saying hello. Bring it on whenever you\'re ready!', + 'Don\'t let your guard down, or you may be crying when a kid beats you.', + 'I\'ve raised my Pokémon with great care. You\'re not allowed to hurt them!', + 'Glad you made it! It won\'t be an easy job from here.', + 'The battles continue forever! Welcome to the world with no end!' ], victory: [ - `Wow! You're strong!`, - `I didn't stand a chance, huh?`, - `I'll find you again when I'm older and beat you!`, - `Ugh. I don't have any more Pokémon.`, - `No way… NO WAY! How could I lose again…`, - `No! I lost!`, - `Whoa! You are incredible! I'm amazed and surprised!`, - `Could it be… How… My Pokémon and I are the strongest, though…`, - `I won't lose next time! Let's battle again sometime!`, - `Sheesh! Can't you see that I'm just a kid! It wasn't fair of you to go all out like that!`, - `Your Pokémon are more amazing! Trade with me!`, - `I got a little carried away earlier, but what job was I talking about?`, - `Ahaha! There it is! That's right! You're already right at home in this world!` + 'Wow! You\'re strong!', + 'I didn\'t stand a chance, huh?', + 'I\'ll find you again when I\'m older and beat you!', + 'Ugh. I don\'t have any more Pokémon.', + 'No way… NO WAY! How could I lose again…', + 'No! I lost!', + 'Whoa! You are incredible! I\'m amazed and surprised!', + 'Could it be… How… My Pokémon and I are the strongest, though…', + 'I won\'t lose next time! Let\'s battle again sometime!', + 'Sheesh! Can\'t you see that I\'m just a kid! It wasn\'t fair of you to go all out like that!', + 'Your Pokémon are more amazing! Trade with me!', + 'I got a little carried away earlier, but what job was I talking about?', + 'Ahaha! There it is! That\'s right! You\'re already right at home in this world!' ] }, //LASS { encounter: [ - `Let's have a battle, shall we?`, - `You look like a new trainer. Let's have a battle!`, - `I don't recognize you. How about a battle?`, - `Let's have a fun Pokémon battle!`, - `I'll show you the ropes of how to really use Pokémon!`, - `A serious battle starts from a serious beginning! Are you sure you're ready?`, - `You're only young once. And you only get one shot at a given battle. Soon, you'll be nothing but a memory.`, - `You'd better go easy on me, OK? Though I'll be seriously fighting!`, - `School is boring. I've got nothing to do. Yawn. I'm only battling to kill the time.` + 'Let\'s have a battle, shall we?', + 'You look like a new trainer. Let\'s have a battle!', + 'I don\'t recognize you. How about a battle?', + 'Let\'s have a fun Pokémon battle!', + 'I\'ll show you the ropes of how to really use Pokémon!', + 'A serious battle starts from a serious beginning! Are you sure you\'re ready?', + 'You\'re only young once. And you only get one shot at a given battle. Soon, you\'ll be nothing but a memory.', + 'You\'d better go easy on me, OK? Though I\'ll be seriously fighting!', + 'School is boring. I\'ve got nothing to do. Yawn. I\'m only battling to kill the time.' ], victory: [ - `That was impressive! I've got a lot to learn.`, - `I didn't think you'd beat me that bad…`, - `I hope we get to have a rematch some day.`, - `That was pretty amazingly fun! You've totally exhausted me…`, - `You actually taught me a lesson! You're pretty amazing!`, - `Seriously, I lost. That is, like, seriously depressing, but you were seriously cool.`, - `I don't need memories like this. Deleting memory…`, - `Hey! I told you to go easy on me! Still, you're pretty cool when you're serious.`, - `I'm actually getting tired of battling… There's gotta be something new to do…` + 'That was impressive! I\'ve got a lot to learn.', + 'I didn\'t think you\'d beat me that bad…', + 'I hope we get to have a rematch some day.', + 'That was pretty amazingly fun! You\'ve totally exhausted me…', + 'You actually taught me a lesson! You\'re pretty amazing!', + 'Seriously, I lost. That is, like, seriously depressing, but you were seriously cool.', + 'I don\'t need memories like this. Deleting memory…', + 'Hey! I told you to go easy on me! Still, you\'re pretty cool when you\'re serious.', + 'I\'m actually getting tired of battling… There\'s gotta be something new to do…' ] } ], [TrainerType.BREEDER]: [ { encounter: [ - `Obedient Pokémon, selfish Pokémon… Pokémon have unique characteristics.`, - `Even though my upbringing and behavior are poor, I've raised my Pokémon well.`, - `Hmm, do you discipline your Pokémon? Pampering them too much is no good.`, + 'Obedient Pokémon, selfish Pokémon… Pokémon have unique characteristics.', + 'Even though my upbringing and behavior are poor, I\'ve raised my Pokémon well.', + 'Hmm, do you discipline your Pokémon? Pampering them too much is no good.', ], victory: [ - `It is important to nurture and train each Pokémon's characteristics.`, - `Unlike my diabolical self, these are some good Pokémon.`, - `Too much praise can spoil both Pokémon and people.`, + 'It is important to nurture and train each Pokémon\'s characteristics.', + 'Unlike my diabolical self, these are some good Pokémon.', + 'Too much praise can spoil both Pokémon and people.', ], defeat:[ - `You should not get angry at your Pokémon, even if you lose a battle.`, - `Right? Pretty good Pokémon, huh? I'm suited to raising things.`, - `No matter how much you love your Pokémon, you still have to discipline them when they misbehave.` + 'You should not get angry at your Pokémon, even if you lose a battle.', + 'Right? Pretty good Pokémon, huh? I\'m suited to raising things.', + 'No matter how much you love your Pokémon, you still have to discipline them when they misbehave.' ] }, { encounter: [ - `Pokémon never betray you. They return all the love you give them.`, - `Shall I give you a tip for training good Pokémon?`, - `I have raised these very special Pokémon using a special method.` + 'Pokémon never betray you. They return all the love you give them.', + 'Shall I give you a tip for training good Pokémon?', + 'I have raised these very special Pokémon using a special method.' ], victory: [ - `Ugh… It wasn't supposed to be like this. Did I administer the wrong blend?`, - `How could that happen to my Pokémon… What are you feeding your Pokémon?`, - `If I lose, that tells you I was just killing time. It doesn't damage my ego at all.` + 'Ugh… It wasn\'t supposed to be like this. Did I administer the wrong blend?', + 'How could that happen to my Pokémon… What are you feeding your Pokémon?', + 'If I lose, that tells you I was just killing time. It doesn\'t damage my ego at all.' ], defeat: [ - `This proves my Pokémon have accepted my love.`, - `The real trick behind training good Pokémon is catching good Pokémon.`, - `Pokémon will be strong or weak depending on how you raise them.` + 'This proves my Pokémon have accepted my love.', + 'The real trick behind training good Pokémon is catching good Pokémon.', + 'Pokémon will be strong or weak depending on how you raise them.' ] } ], [TrainerType.FISHERMAN]: [ { encounter: [ - `Aack! You made me lose a bite!\nWhat are you going to do about it?`, - `Go away! You're scaring the Pokémon!`, - `Let's see if you can reel in a victory!`, + 'Aack! You made me lose a bite!\nWhat are you going to do about it?', + 'Go away! You\'re scaring the Pokémon!', + 'Let\'s see if you can reel in a victory!', ], victory: [ - `Just forget about it.`, - `Next time, I'll be reelin' in the triumph!`, - `Guess I underestimated the currents this time.`, + 'Just forget about it.', + 'Next time, I\'ll be reelin\' in the triumph!', + 'Guess I underestimated the currents this time.', ] }, { encounter: [ - `Woah! I've hooked a big one!`, - `Line's in, ready to reel in success!`, - `Ready to make waves!` + 'Woah! I\'ve hooked a big one!', + 'Line\'s in, ready to reel in success!', + 'Ready to make waves!' ], victory: [ - `I'll be back with a stronger hook.`, - `I'll reel in victory next time.`, - `I'm just sharpening my hooks for the comeback!` + 'I\'ll be back with a stronger hook.', + 'I\'ll reel in victory next time.', + 'I\'m just sharpening my hooks for the comeback!' ] } ], [TrainerType.SWIMMER]: [ { encounter: [ - `Time to dive in!`, - `Let's ride the waves of victory!`, - `Ready to make a splash!`, + 'Time to dive in!', + 'Let\'s ride the waves of victory!', + 'Ready to make a splash!', ], victory: [ - `Drenched in defeat!`, - `A wave of defeat!`, - `Back to shore, I guess.`, + 'Drenched in defeat!', + 'A wave of defeat!', + 'Back to shore, I guess.', ] } ], [TrainerType.BACKPACKER]: [ { encounter: [ - `Pack up, game on!`, - `Let's see if you can keep pace!`, - `Gear up, challenger!`, - `I've spent 20 years trying to find myself… But where am I?` + 'Pack up, game on!', + 'Let\'s see if you can keep pace!', + 'Gear up, challenger!', + 'I\'ve spent 20 years trying to find myself… But where am I?' ], victory: [ - `Tripped up this time!`, - `Oh, I think I'm lost.`, - `Dead end!`, - `Wait up a second! Hey! Don't you know who I am?` + 'Tripped up this time!', + 'Oh, I think I\'m lost.', + 'Dead end!', + 'Wait up a second! Hey! Don\'t you know who I am?' ] } ], [TrainerType.ACE_TRAINER]: [ { encounter: [ - `You seem quite confident.`, - `Your Pokémon… Show them to me…`, - `Because I'm an Ace Trainer, people think I'm strong.`, - `Are you aware of what it takes to be an Ace Trainer?` + 'You seem quite confident.', + 'Your Pokémon… Show them to me…', + 'Because I\'m an Ace Trainer, people think I\'m strong.', + 'Are you aware of what it takes to be an Ace Trainer?' ], victory: [ - `Yes… You have good Pokémon…`, - `What?! But I'm a battling genius!`, - `Of course, you are the main character!`, - `OK! OK! You could be an Ace Trainer!` + 'Yes… You have good Pokémon…', + 'What?! But I\'m a battling genius!', + 'Of course, you are the main character!', + 'OK! OK! You could be an Ace Trainer!' ], defeat: [ - `I am devoting my body and soul to Pokémon battles!`, - `All within my expectations… Nothing to be surprised about…`, - `I thought I'd grow up to be a frail person who looked like they would break if you squeezed them too hard.`, - `Of course I'm strong and don't lose. It's important that I win gracefully.` + 'I am devoting my body and soul to Pokémon battles!', + 'All within my expectations… Nothing to be surprised about…', + 'I thought I\'d grow up to be a frail person who looked like they would break if you squeezed them too hard.', + 'Of course I\'m strong and don\'t lose. It\'s important that I win gracefully.' ] } ], [TrainerType.PARASOL_LADY]: [ { encounter: [ - `Time to grace the battlefield with elegance and poise!`, + 'Time to grace the battlefield with elegance and poise!', ], victory: [ - `My elegance remains unbroken!`, + 'My elegance remains unbroken!', ] } ], [TrainerType.TWINS]: [ { encounter: [ - `Get ready, because when we team up, it's double the trouble!`, - `Two hearts, one strategy – let's see if you can keep up with our twin power!`, - `Hope you're ready for double trouble, because we're about to bring the heat!` + 'Get ready, because when we team up, it\'s double the trouble!', + 'Two hearts, one strategy – let\'s see if you can keep up with our twin power!', + 'Hope you\'re ready for double trouble, because we\'re about to bring the heat!' ], victory: [ - `We may have lost this round, but our bond remains unbreakable!`, - `Our twin spirit won't be dimmed for long.`, - `We'll come back stronger as a dynamic duo!` + 'We may have lost this round, but our bond remains unbreakable!', + 'Our twin spirit won\'t be dimmed for long.', + 'We\'ll come back stronger as a dynamic duo!' ], defeat: [ - `Twin power reigns supreme!`, - `Two hearts, one triumph!`, - `Double the smiles, double the victory dance!` + 'Twin power reigns supreme!', + 'Two hearts, one triumph!', + 'Double the smiles, double the victory dance!' ], } ], [TrainerType.CYCLIST]: [ { encounter: [ - `Get ready to eat my dust!`, - `Gear up, challenger! I'm about to leave you in the dust!`, - `Pedal to the metal, let's see if you can keep pace!` + 'Get ready to eat my dust!', + 'Gear up, challenger! I\'m about to leave you in the dust!', + 'Pedal to the metal, let\'s see if you can keep pace!' ], victory: [ - `Spokes may be still, but determination pedals on.`, - `Outpaced!`, - `The road to victory has many twists and turns yet to explore.` + 'Spokes may be still, but determination pedals on.', + 'Outpaced!', + 'The road to victory has many twists and turns yet to explore.' ] } ], [TrainerType.BLACK_BELT]: [ { encounter: [ - `I praise your courage in challenging me! For I am the one with the strongest kick!`, - `Oh, I see. Would you like to be cut to pieces? Or do you prefer the role of punching bag?` + 'I praise your courage in challenging me! For I am the one with the strongest kick!', + 'Oh, I see. Would you like to be cut to pieces? Or do you prefer the role of punching bag?' ], victory: [ - `Oh. The Pokémon did the fighting. My strong kick didn't help a bit.`, - `Hmmm… If I was going to lose anyway, I was hoping to get totally messed up in the process.` + 'Oh. The Pokémon did the fighting. My strong kick didn\'t help a bit.', + 'Hmmm… If I was going to lose anyway, I was hoping to get totally messed up in the process.' ] }, //BATTLE GIRL { encounter: [ - `You don't have to try to impress me. You can lose against me.`, + 'You don\'t have to try to impress me. You can lose against me.', ], victory: [ - `It's hard to say good-bye, but we are running out of time…`, + 'It\'s hard to say good-bye, but we are running out of time…', ] } ], [TrainerType.HIKER]: [ { encounter: [ - `My middle-age spread has given me as much gravitas as the mountains I hike!`, - `I inherited this big-boned body from my parents… I'm like a living mountain range…`, + 'My middle-age spread has given me as much gravitas as the mountains I hike!', + 'I inherited this big-boned body from my parents… I\'m like a living mountain range…', ], victory: [ - `At least I cannot lose when it comes to BMI!`, - `It's not enough… It's never enough. My bad cholesterol isn't high enough…` + 'At least I cannot lose when it comes to BMI!', + 'It\'s not enough… It\'s never enough. My bad cholesterol isn\'t high enough…' ] } ], [TrainerType.RANGER]: [ { encounter: [ - `When I am surrounded by nature, most other things cease to matter.`, - `When I'm living without nature in my life, sometimes I'll suddenly feel an anxiety attack coming on.` + 'When I am surrounded by nature, most other things cease to matter.', + 'When I\'m living without nature in my life, sometimes I\'ll suddenly feel an anxiety attack coming on.' ], victory: [ - `It doesn't matter to the vastness of nature whether I win or lose…`, - `Something like this is pretty trivial compared to the stifling feelings of city life.` + 'It doesn\'t matter to the vastness of nature whether I win or lose…', + 'Something like this is pretty trivial compared to the stifling feelings of city life.' ], defeat: [ - `I won the battle. But victory is nothing compared to the vastness of nature…`, - `I'm sure how you feel is not so bad if you compare it to my anxiety attacks…` + 'I won the battle. But victory is nothing compared to the vastness of nature…', + 'I\'m sure how you feel is not so bad if you compare it to my anxiety attacks…' ] } ], [TrainerType.SCIENTIST]: [ { encounter: [ - `My research will lead this world to peace and joy.`, + 'My research will lead this world to peace and joy.', ], victory: [ - `I am a genius… I am not supposed to lose against someone like you…`, + 'I am a genius… I am not supposed to lose against someone like you…', ] } ], [TrainerType.SCHOOL_KID]: [ { encounter: [ - `…Heehee. I'm confident in my calculations and analysis.`, - `I'm gaining as much experience as I can because I want to be a Gym Leader someday.` + '…Heehee. I\'m confident in my calculations and analysis.', + 'I\'m gaining as much experience as I can because I want to be a Gym Leader someday.' ], victory: [ - `Ohhhh… Calculation and analysis are perhaps no match for chance…`, - `Even difficult, trying experiences have their purpose, I suppose.` + 'Ohhhh… Calculation and analysis are perhaps no match for chance…', + 'Even difficult, trying experiences have their purpose, I suppose.' ] } ], [TrainerType.ARTIST]: [ { encounter: [ - `I used to be popular, but now I am all washed up.`, + 'I used to be popular, but now I am all washed up.', ], victory: [ - `As times change, values also change. I realized that too late.`, + 'As times change, values also change. I realized that too late.', ] } ], [TrainerType.GUITARIST]: [ { encounter: [ - `Get ready to feel the rhythm of defeat as I strum my way to victory!`, + 'Get ready to feel the rhythm of defeat as I strum my way to victory!', ], victory: [ - `Silenced for now, but my melody of resilience will play on.`, + 'Silenced for now, but my melody of resilience will play on.', ] } ], [TrainerType.WORKER]: [ { encounter: [ - `It bothers me that people always misunderstand me. I'm a lot more pure than everyone thinks.` + 'It bothers me that people always misunderstand me. I\'m a lot more pure than everyone thinks.' ], victory: [ - `I really don't want my skin to burn, so I want to stay in the shade while I work.`, + 'I really don\'t want my skin to burn, so I want to stay in the shade while I work.', ] }, { @@ -335,576 +335,576 @@ export const trainerTypeDialogue = { $I'm a lot more pure than everyone thinks.` ], victory: [ - `I really don't want my skin to burn, so I want to stay in the shade while I work.` + 'I really don\'t want my skin to burn, so I want to stay in the shade while I work.' ], defeat: [ - `My body and mind aren't necessarily always in sync.` + 'My body and mind aren\'t necessarily always in sync.' ] }, { encounter: [ - `I'll show you we can break you. We've been training in the field!` + 'I\'ll show you we can break you. We\'ve been training in the field!' ], victory: [ - `How strange… How could this be… I shouldn't have been outmuscled.`, + 'How strange… How could this be… I shouldn\'t have been outmuscled.', ] }, ], [TrainerType.HEX_MANIAC]: [ { encounter: [ - `I normally only ever listen to classical music, but if I lose, I think I shall try a bit of new age!`, - `I grow stronger with each tear I cry.` + 'I normally only ever listen to classical music, but if I lose, I think I shall try a bit of new age!', + 'I grow stronger with each tear I cry.' ], victory: [ - `Is this the dawning of the age of Aquarius?`, - `Now I can get even stronger. I grow with every grudge.` + 'Is this the dawning of the age of Aquarius?', + 'Now I can get even stronger. I grow with every grudge.' ], defeat: [ - `New age simply refers to twentieth century classical composers, right?`, - `Don't get hung up on sadness or frustration. You can use your grudges to motivate yourself.` + 'New age simply refers to twentieth century classical composers, right?', + 'Don\'t get hung up on sadness or frustration. You can use your grudges to motivate yourself.' ] } ], [TrainerType.PSYCHIC]: [ { encounter: [ - `Hi! Focus!`, + 'Hi! Focus!', ], victory: [ - `Eeeeek!`, + 'Eeeeek!', ] } ], [TrainerType.OFFICER]: [ { encounter: [ - `Brace yourself, because justice is about to be served!`, - `Ready to uphold the law and serve justice on the battlefield!` + 'Brace yourself, because justice is about to be served!', + 'Ready to uphold the law and serve justice on the battlefield!' ], victory: [ - `The weight of justice feels heavier than ever…`, - `The shadows of defeat linger in the precinct.` + 'The weight of justice feels heavier than ever…', + 'The shadows of defeat linger in the precinct.' ] } ], [TrainerType.BEAUTY]: [ { encounter: [ - `My last ever battle… That's the way I'd like us to view this match…` + 'My last ever battle… That\'s the way I\'d like us to view this match…' ], victory: [ - `It's been fun… Let's have another last battle again someday…` + 'It\'s been fun… Let\'s have another last battle again someday…' ] } ], [TrainerType.BAKER]: [ { encounter: [ - `Hope you're ready to taste defeat!` + 'Hope you\'re ready to taste defeat!' ], victory: [ - `I'll bake a comeback.` + 'I\'ll bake a comeback.' ] } ], [TrainerType.BIKER]: [ { encounter: [ - `Time to rev up and leave you in the dust!` + 'Time to rev up and leave you in the dust!' ], victory: [ - `I'll tune up for the next race.` + 'I\'ll tune up for the next race.' ] } ], [TrainerType.BROCK]: { encounter: [ - `My expertise on Rock-type Pokémon will take you down! Come on!`, - `My rock-hard willpower will overwhelm you!`, - `Allow me to show you the true strength of my Pokémon!` + 'My expertise on Rock-type Pokémon will take you down! Come on!', + 'My rock-hard willpower will overwhelm you!', + 'Allow me to show you the true strength of my Pokémon!' ], victory: [ - `Your Pokémon's strength have overcome my rock-hard defenses!`, - `The world is huge! I'm glad to have had a chance to battle you.`, - `Perhaps I should go back to pursuing my dream as a Pokémon Breeder…` + 'Your Pokémon\'s strength have overcome my rock-hard defenses!', + 'The world is huge! I\'m glad to have had a chance to battle you.', + 'Perhaps I should go back to pursuing my dream as a Pokémon Breeder…' ], defeat: [ - `The best offense is a good defense!\nThat's my way of doing things!`, - `Come study rocks with me next time to better learn how to fight them!`, - `Hah, all my traveling around the regions is paying off!` + 'The best offense is a good defense!\nThat\'s my way of doing things!', + 'Come study rocks with me next time to better learn how to fight them!', + 'Hah, all my traveling around the regions is paying off!' ] }, [TrainerType.MISTY]: { encounter: [ - `My policy is an all out offensive with Water-type Pokémon!`, - `Hiya, I'll show you the strength of my aquatic Pokémon!`, - `My dream was to go on a journey and battle powerful trainers…\nWill you be a sufficient challenge?` + 'My policy is an all out offensive with Water-type Pokémon!', + 'Hiya, I\'ll show you the strength of my aquatic Pokémon!', + 'My dream was to go on a journey and battle powerful trainers…\nWill you be a sufficient challenge?' ], victory: [ - `You really are strong… I'll admit that you are skilled…`, - `Grrr… You know you just got lucky, right?!`, - `Wow, you're too much! I can't believe you beat me!` + 'You really are strong… I\'ll admit that you are skilled…', + 'Grrr… You know you just got lucky, right?!', + 'Wow, you\'re too much! I can\'t believe you beat me!' ], defeat: [ - `Was the mighty Misty too much for you?`, - `I hope you saw my Pokémon's elegant swimming techniques!`, - `Your Pokémon were no match for my pride and joys!` + 'Was the mighty Misty too much for you?', + 'I hope you saw my Pokémon\'s elegant swimming techniques!', + 'Your Pokémon were no match for my pride and joys!' ] }, [TrainerType.LT_SURGE]: { encounter: [ - `My Electric Pokémon saved me during the war! I'll show you how!`, - `Ten-hut! I'll shock you into surrender!`, - `I'll zap you just like I do to all my enemies in battle!` + 'My Electric Pokémon saved me during the war! I\'ll show you how!', + 'Ten-hut! I\'ll shock you into surrender!', + 'I\'ll zap you just like I do to all my enemies in battle!' ], victory: [ - `Whoa! Your team's the real deal, kid!`, - `Aaargh, you're strong! Even my electric tricks lost against you.`, - `That was an absolutely shocking loss!` + 'Whoa! Your team\'s the real deal, kid!', + 'Aaargh, you\'re strong! Even my electric tricks lost against you.', + 'That was an absolutely shocking loss!' ], defeat: [ - `Oh yeah! When it comes to Electric-type Pokémon, I'm number one in the world!`, - `Hahaha! That was an electrifying battle, kid!`, - `A Pokémon battle is war, and I have showed you first-hand combat!` + 'Oh yeah! When it comes to Electric-type Pokémon, I\'m number one in the world!', + 'Hahaha! That was an electrifying battle, kid!', + 'A Pokémon battle is war, and I have showed you first-hand combat!' ] }, [TrainerType.ERIKA]: { encounter: [ - `Ah, the weather is lovely here…\nOh, a battle? Very well then.`, - `My Pokémon battling skills rival that of my flower arranging skills.`, - `Oh, I hope the pleasant aroma of my Pokémon doesn't put me to sleep again…`, - `Seeing flowers in a garden is so soothing.` + 'Ah, the weather is lovely here…\nOh, a battle? Very well then.', + 'My Pokémon battling skills rival that of my flower arranging skills.', + 'Oh, I hope the pleasant aroma of my Pokémon doesn\'t put me to sleep again…', + 'Seeing flowers in a garden is so soothing.' ], victory: [ - `Oh! I concede defeat.`, - `That match was most delightful.`, - `Ah, it appears it is my loss…`, - `Oh, my goodness.` + 'Oh! I concede defeat.', + 'That match was most delightful.', + 'Ah, it appears it is my loss…', + 'Oh, my goodness.' ], defeat: [ - `I was afraid I would doze off…`, - `Oh my, it seems my Grass Pokémon overwhelmed you.`, - `That battle was such a soothing experience.`, - `Oh… Is that all?` + 'I was afraid I would doze off…', + 'Oh my, it seems my Grass Pokémon overwhelmed you.', + 'That battle was such a soothing experience.', + 'Oh… Is that all?' ] }, [TrainerType.JANINE]: { encounter: [ - `I am mastering the art of poisonous attacks.\nI shall spar with you today!`, - `Father trusts that I can hold my own.\nI will prove him right!`, - `My ninja techniques are only second to my Father's!\nCan you keep up?` + 'I am mastering the art of poisonous attacks.\nI shall spar with you today!', + 'Father trusts that I can hold my own.\nI will prove him right!', + 'My ninja techniques are only second to my Father\'s!\nCan you keep up?' ], victory: [ - `Even now, I still need training… I understand.`, - `Your battle technique has outmatched mine.`, - `I'm going to really apply myself and improve my skills.` + 'Even now, I still need training… I understand.', + 'Your battle technique has outmatched mine.', + 'I\'m going to really apply myself and improve my skills.' ], defeat: [ - `Fufufu… the poison has sapped all your strength to battle.`, - `Ha! You didn't stand a chance against my superior ninja skills!`, - `Father's faith in me has proven to not be misplaced.` + 'Fufufu… the poison has sapped all your strength to battle.', + 'Ha! You didn\'t stand a chance against my superior ninja skills!', + 'Father\'s faith in me has proven to not be misplaced.' ] }, [TrainerType.SABRINA]: { encounter: [ - `Through my psychic ability, I had a vision of your arrival!`, - `I dislike fighting, but if you wish, I will show you my powers!`, - `I can sense great ambition in you. I shall see if it not unfounded.` + 'Through my psychic ability, I had a vision of your arrival!', + 'I dislike fighting, but if you wish, I will show you my powers!', + 'I can sense great ambition in you. I shall see if it not unfounded.' ], victory: [ - `Your power… It far exceeds what I foresaw…`, - `I failed to accurately predict your power.`, - `Even with my immense psychic powers, I cannot sense another as strong as you.` + 'Your power… It far exceeds what I foresaw…', + 'I failed to accurately predict your power.', + 'Even with my immense psychic powers, I cannot sense another as strong as you.' ], defeat: [ - `This victory… It is exactly as I foresaw in my visions!`, - `Perhaps it was another I sensed a great desire in…`, - `Hone your abilities before recklessly charging into battle.\nYou never know what the future may hold if you do…` + 'This victory… It is exactly as I foresaw in my visions!', + 'Perhaps it was another I sensed a great desire in…', + 'Hone your abilities before recklessly charging into battle.\nYou never know what the future may hold if you do…' ] }, [TrainerType.BLAINE]: { encounter: [ - `Hah! Hope you brought a Burn Heal!`, - `My fiery Pokémon will incinerate all challengers!`, - `Get ready to play with fire!` + 'Hah! Hope you brought a Burn Heal!', + 'My fiery Pokémon will incinerate all challengers!', + 'Get ready to play with fire!' ], victory: [ - `I have burned down to nothing! Not even ashes remain!`, - `Didn't I stoke the flames high enough?`, - `I'm all burned out… But this makes my motivation to improve burn even hotter!` + 'I have burned down to nothing! Not even ashes remain!', + 'Didn\'t I stoke the flames high enough?', + 'I\'m all burned out… But this makes my motivation to improve burn even hotter!' ], defeat: [ - `My raging inferno cannot be quelled!`, - `My Pokémon have been powered up with the heat from this victory!`, - `Hah! My passion burns brighter than yours!` + 'My raging inferno cannot be quelled!', + 'My Pokémon have been powered up with the heat from this victory!', + 'Hah! My passion burns brighter than yours!' ] }, [TrainerType.GIOVANNI]: { encounter: [ - `I, the leader of Team Rocket, will make you feel a world of pain!`, - `My training here will be vital before I am to face my old associates again.`, - `I do not think you are prepared for the level of failure you are about to experience!` + 'I, the leader of Team Rocket, will make you feel a world of pain!', + 'My training here will be vital before I am to face my old associates again.', + 'I do not think you are prepared for the level of failure you are about to experience!' ], victory: [ - `WHAT! Me, lose?! There is nothing I wish to say to you!`, - `Hmph… You could never understand what I hope to achieve.`, - `This defeat is merely delaying the inevitable.\nI will rise Team Rocket from the ashes in due time.` + 'WHAT! Me, lose?! There is nothing I wish to say to you!', + 'Hmph… You could never understand what I hope to achieve.', + 'This defeat is merely delaying the inevitable.\nI will rise Team Rocket from the ashes in due time.' ], defeat: [ - `Not being able to measure your own strength shows that you are still but a child.`, - `Do not try to interfere with me again.`, - `I hope you understand how foolish challenging me was.` + 'Not being able to measure your own strength shows that you are still but a child.', + 'Do not try to interfere with me again.', + 'I hope you understand how foolish challenging me was.' ] }, [TrainerType.ROXANNE]: { encounter: [ - `Would you kindly demonstrate how you battle?`, - `You can learn many things by battling many trainers.`, - `Oh, you caught me strategizing.\nWould you like to battle?` + 'Would you kindly demonstrate how you battle?', + 'You can learn many things by battling many trainers.', + 'Oh, you caught me strategizing.\nWould you like to battle?' ], victory: [ - `Oh, I appear to have lost.\nI understand.`, - `It seems that I still have so much more to learn when it comes to battle.`, - `I'll take what I learned here today to heart.` + 'Oh, I appear to have lost.\nI understand.', + 'It seems that I still have so much more to learn when it comes to battle.', + 'I\'ll take what I learned here today to heart.' ], defeat: [ - `I have learned many things from our battle.\nI hope you have too.`, - `I look forward to battling you again.\nI hope you'll use what you've learned here.`, - `I won due to everything I have learned.` + 'I have learned many things from our battle.\nI hope you have too.', + 'I look forward to battling you again.\nI hope you\'ll use what you\'ve learned here.', + 'I won due to everything I have learned.' ] }, [TrainerType.BRAWLY]: { encounter: [ - `Oh man, a challenger!\nLet's see what you can do!`, - `You seem like a big splash.\nLet's battle!`, - `Time to create a storm!\nLet's go!` + 'Oh man, a challenger!\nLet\'s see what you can do!', + 'You seem like a big splash.\nLet\'s battle!', + 'Time to create a storm!\nLet\'s go!' ], victory: [ - `Oh woah, you've washed me out!`, - `You surfed my wave and crashed me down!`, - `I feel like I'm lost in Granite Cave!` + 'Oh woah, you\'ve washed me out!', + 'You surfed my wave and crashed me down!', + 'I feel like I\'m lost in Granite Cave!' ], defeat: [ - `Haha, I surfed the big wave!\nChallenge me again sometime.`, - `Surf with me again some time!`, - `Just like the tides come in and out, I hope you return to challenge me again.` + 'Haha, I surfed the big wave!\nChallenge me again sometime.', + 'Surf with me again some time!', + 'Just like the tides come in and out, I hope you return to challenge me again.' ] }, [TrainerType.WATTSON]: { encounter: [ - `Time to get shocked!\nWahahahaha!`, - `I'll make sparks fly!\nWahahahaha!`, - `I hope you brought Paralyz Heal!\nWahahahaha!` + 'Time to get shocked!\nWahahahaha!', + 'I\'ll make sparks fly!\nWahahahaha!', + 'I hope you brought Paralyz Heal!\nWahahahaha!' ], victory: [ - `Seems like I'm out of charge!\nWahahahaha!`, - `You've completely grounded me!\nWahahahaha!`, - `Thanks for the thrill!\nWahahahaha!` + 'Seems like I\'m out of charge!\nWahahahaha!', + 'You\'ve completely grounded me!\nWahahahaha!', + 'Thanks for the thrill!\nWahahahaha!' ], defeat: [ - `Recharge your batteries and challenge me again sometime!\nWahahahaha!`, - `I hope you found our battle electrifying!\nWahahahaha!`, - `Aren't you shocked I won?\nWahahahaha!` + 'Recharge your batteries and challenge me again sometime!\nWahahahaha!', + 'I hope you found our battle electrifying!\nWahahahaha!', + 'Aren\'t you shocked I won?\nWahahahaha!' ] }, [TrainerType.FLANNERY]: { encounter: [ - `Nice to meet you! Wait, no…\nI will crush you!`, - `I've only been a leader for a little while, but I'll smoke you!`, - `It's time to demonstrate the moves my grandfather has taught me! Let's battle!` + 'Nice to meet you! Wait, no…\nI will crush you!', + 'I\'ve only been a leader for a little while, but I\'ll smoke you!', + 'It\'s time to demonstrate the moves my grandfather has taught me! Let\'s battle!' ], victory: [ - `You remind me of my grandfather…\nNo wonder I lost.`, - `Am I trying too hard?\nI should relax, can't get too heated.`, - `Losing isn't going to smother me out.\nTime to reignite training!` + 'You remind me of my grandfather…\nNo wonder I lost.', + 'Am I trying too hard?\nI should relax, can\'t get too heated.', + 'Losing isn\'t going to smother me out.\nTime to reignite training!' ], defeat: [ - `I hope I've made my grandfather proud…\nLet's battle again some time.`, - `I…I can't believe I won!\nDoing things my way worked!`, - `Let's exchange burning hot moves again soon!` + 'I hope I\'ve made my grandfather proud…\nLet\'s battle again some time.', + 'I…I can\'t believe I won!\nDoing things my way worked!', + 'Let\'s exchange burning hot moves again soon!' ] }, [TrainerType.NORMAN]: { encounter: [ - `I'm surprised you managed to get here.\nLet's battle.`, - `I'll do everything in my power as a Gym Leader to win.\nLet's go!`, - `You better give this your all.\nIt's time to battle!` + 'I\'m surprised you managed to get here.\nLet\'s battle.', + 'I\'ll do everything in my power as a Gym Leader to win.\nLet\'s go!', + 'You better give this your all.\nIt\'s time to battle!' ], victory: [ - `I lost to you…?\nRules are rules, though.`, - `Was moving from Olivine a mistake…?`, - `I can't believe it.\nThat was a great match.` + 'I lost to you…?\nRules are rules, though.', + 'Was moving from Olivine a mistake…?', + 'I can\'t believe it.\nThat was a great match.' ], defeat: [ - `We both tried our best.\nI hope we can battle again soon.`, - `You should try challenging my kid instead.\nYou might learn something!`, - `Thank you for the excellent battle.\nBetter luck next time.` + 'We both tried our best.\nI hope we can battle again soon.', + 'You should try challenging my kid instead.\nYou might learn something!', + 'Thank you for the excellent battle.\nBetter luck next time.' ] }, [TrainerType.WINONA]: { encounter: [ - `I've been soaring the skies looking for prey…\nAnd you're my target!`, - `No matter how our battle is, my Flying Pokémon and I will triumph with grace. Let's battle!`, - `I hope you aren't scared of heights.\nLet's ascend!` + 'I\'ve been soaring the skies looking for prey…\nAnd you\'re my target!', + 'No matter how our battle is, my Flying Pokémon and I will triumph with grace. Let\'s battle!', + 'I hope you aren\'t scared of heights.\nLet\'s ascend!' ], victory: [ - `You're the first Trainer I've seen with more grace than I.\nExcellently played.`, - `Oh, my Flying Pokémon have plummeted!\nVery well.`, - `Though I may have fallen, my Pokémon will continue to fly!` + 'You\'re the first Trainer I\'ve seen with more grace than I.\nExcellently played.', + 'Oh, my Flying Pokémon have plummeted!\nVery well.', + 'Though I may have fallen, my Pokémon will continue to fly!' ], defeat: [ - `My Flying Pokémon and I will forever dance elegantly!`, - `I hope you enjoyed our show.\nOur graceful dance is finished.`, - `Won't you come see our elegant choreography again?` + 'My Flying Pokémon and I will forever dance elegantly!', + 'I hope you enjoyed our show.\nOur graceful dance is finished.', + 'Won\'t you come see our elegant choreography again?' ] }, [TrainerType.TATE]: { encounter: [ - `Hehehe…\nWere you surprised to see me without my sister?`, - `I can see what you're thinking…\nYou want to battle!`, - `How can you defeat someone…\nWho knows your every move?` + 'Hehehe…\nWere you surprised to see me without my sister?', + 'I can see what you\'re thinking…\nYou want to battle!', + 'How can you defeat someone…\nWho knows your every move?' ], victory: [ - `It can't be helped…\nI miss Liza…`, - `Your bond with your Pokémon was stronger than mine.`, - `If I were with Liza, we would have won.\nWe can finish each other's thoughts!` + 'It can\'t be helped…\nI miss Liza…', + 'Your bond with your Pokémon was stronger than mine.', + 'If I were with Liza, we would have won.\nWe can finish each other\'s thoughts!' ], defeat: [ - `My Pokémon and I are superior!`, - `If you can't even defeat me, you'll never be able to defeat Liza either.`, - `It's all thanks to my strict training with Liza.\nI can make myself one with Pokémon.` + 'My Pokémon and I are superior!', + 'If you can\'t even defeat me, you\'ll never be able to defeat Liza either.', + 'It\'s all thanks to my strict training with Liza.\nI can make myself one with Pokémon.' ] }, [TrainerType.LIZA]: { encounter: [ - `Fufufu…\nWere you surprised to see me without my brother?`, - `I can determine what you desire…\nYou want to battle, don't you?`, - `How can you defeat someone…\nWho's one with their Pokémon?` + 'Fufufu…\nWere you surprised to see me without my brother?', + 'I can determine what you desire…\nYou want to battle, don\'t you?', + 'How can you defeat someone…\nWho\'s one with their Pokémon?' ], victory: [ - `It can't be helped…\nI miss Tate…`, - `Your bond with your Pokémon…\nIt's stronger than mine.`, - `If I were with Tate, we would have won.\nWe can finish each other's sentences!` + 'It can\'t be helped…\nI miss Tate…', + 'Your bond with your Pokémon…\nIt\'s stronger than mine.', + 'If I were with Tate, we would have won.\nWe can finish each other\'s sentences!' ], defeat: [ - `My Pokémon and I are victorious.`, - `If you can't even defeat me, you'll never be able to defeat Tate either.`, - `It's all thanks to my strict training with Tate.\nI can synchronize myself with my Pokémon.` + 'My Pokémon and I are victorious.', + 'If you can\'t even defeat me, you\'ll never be able to defeat Tate either.', + 'It\'s all thanks to my strict training with Tate.\nI can synchronize myself with my Pokémon.' ] }, [TrainerType.JUAN]: { encounter: [ - `Now's not the time to act coy.\nLet's battle!`, - `Ahahaha, You'll be witness to my artistry with Water Pokémon!`, - `A typhoon approaches!\nWill you be able to test me?`, - `Please, you shall bear witness to our artistry.\nA grand illusion of water sculpted by my Pokémon and myself!` + 'Now\'s not the time to act coy.\nLet\'s battle!', + 'Ahahaha, You\'ll be witness to my artistry with Water Pokémon!', + 'A typhoon approaches!\nWill you be able to test me?', + 'Please, you shall bear witness to our artistry.\nA grand illusion of water sculpted by my Pokémon and myself!' ], victory: [ - `You may be a genius who can take on Wallace!`, - `I focused on elegance while you trained.\nIt's only natural that you defeated me.`, - `Ahahaha!\nVery well, You have won this time.`, - `From you, I sense the brilliant shine of skill that will overcome all.` + 'You may be a genius who can take on Wallace!', + 'I focused on elegance while you trained.\nIt\'s only natural that you defeated me.', + 'Ahahaha!\nVery well, You have won this time.', + 'From you, I sense the brilliant shine of skill that will overcome all.' ], defeat: [ - `My Pokémon and I have sculpted an illusion of Water and come out victorious.`, - `Ahahaha, I have won, and you have lost.`, - `Shall I loan you my outfit? It may help you battle!\nAhahaha, I jest!`, - `I'm the winner! Which is to say, you lost.` + 'My Pokémon and I have sculpted an illusion of Water and come out victorious.', + 'Ahahaha, I have won, and you have lost.', + 'Shall I loan you my outfit? It may help you battle!\nAhahaha, I jest!', + 'I\'m the winner! Which is to say, you lost.' ] }, [TrainerType.CRASHER_WAKE]: { encounter: [ - `Crash! Crash! Watch out!\nCrasher Wake…is…heeere!`, - `Crash! Crash! Crasher Wake!`, - `I'm the tidal wave of power to wash you away!` + 'Crash! Crash! Watch out!\nCrasher Wake…is…heeere!', + 'Crash! Crash! Crasher Wake!', + 'I\'m the tidal wave of power to wash you away!' ], victory: [ - `That puts a grin on my face!\nGuhahaha! That was a blast!`, - `Hunwah! It's gone and ended!\nHow will I say this…\nI want more! I wanted to battle a lot more!`, - `WHAAAAT!?` + 'That puts a grin on my face!\nGuhahaha! That was a blast!', + 'Hunwah! It\'s gone and ended!\nHow will I say this…\nI want more! I wanted to battle a lot more!', + 'WHAAAAT!?' ], defeat: [ - `Yeeeeah! That's right!`, - `I won, but I want more! I wanted to battle a lot more!`, - `So long!` + 'Yeeeeah! That\'s right!', + 'I won, but I want more! I wanted to battle a lot more!', + 'So long!' ] }, [TrainerType.FALKNER]: { encounter: [ - `I'll show you the real power of the magnificent bird Pokémon!`, - `Winds, stay with me!`, - `Dad! I hope you're watching me battle from above!` + 'I\'ll show you the real power of the magnificent bird Pokémon!', + 'Winds, stay with me!', + 'Dad! I hope you\'re watching me battle from above!' ], victory: [ - `I understand… I'll bow out gracefully.`, - `A defeat is a defeat. You are strong indeed.`, - `…Shoot! Yeah, I lost.` + 'I understand… I\'ll bow out gracefully.', + 'A defeat is a defeat. You are strong indeed.', + '…Shoot! Yeah, I lost.' ], defeat: [ - `Dad! I won with your cherished bird Pokémon…`, - `Bird Pokémon are the best after all!`, - `Feels like I'm catching up to my dad!` + 'Dad! I won with your cherished bird Pokémon…', + 'Bird Pokémon are the best after all!', + 'Feels like I\'m catching up to my dad!' ] }, [TrainerType.NESSA]: { encounter: [ - `No matter what kind of plan your refined mind may be plotting, my partner and I will be sure to sink it.`, - `I'm not here to chat. I'm here to win!`, - `This is a little gift from my Pokémon… I hope you can take it!` + 'No matter what kind of plan your refined mind may be plotting, my partner and I will be sure to sink it.', + 'I\'m not here to chat. I\'m here to win!', + 'This is a little gift from my Pokémon… I hope you can take it!' ], victory: [ - `You and your Pokémon are just too much…`, - `How…? How can this be?!`, - `I was totally washed away!` + 'You and your Pokémon are just too much…', + 'How…? How can this be?!', + 'I was totally washed away!' ], defeat: [ - `The raging wave crashes again!`, - `Time to ride the wave of victory!`, - `Ehehe!` + 'The raging wave crashes again!', + 'Time to ride the wave of victory!', + 'Ehehe!' ] }, [TrainerType.MELONY]: { encounter: [ - `I'm not going to hold back!`, - `All righty, I suppose we should get started.`, - `I'll freeze you solid!` + 'I\'m not going to hold back!', + 'All righty, I suppose we should get started.', + 'I\'ll freeze you solid!' ], victory: [ - `You… You're pretty good, huh?`, - `If you find Gordie around, be sure to give him a right trashing, would you?`, - `I think you took breaking the ice a little too literally…` + 'You… You\'re pretty good, huh?', + 'If you find Gordie around, be sure to give him a right trashing, would you?', + 'I think you took breaking the ice a little too literally…' ], defeat: [ - `Now do you see how severe battles can be?`, - `Hee! Looks like I went and won again!`, - `Are you holding back?` + 'Now do you see how severe battles can be?', + 'Hee! Looks like I went and won again!', + 'Are you holding back?' ] }, [TrainerType.MARLON]: { encounter: [ - `You look strong! Shoots! Let's start!`, - `I'm strong like the ocean's wide. You're gonna get swept away, fo' sho'.`, - `Oh ho, so I'm facing you! That's off the wall.` + 'You look strong! Shoots! Let\'s start!', + 'I\'m strong like the ocean\'s wide. You\'re gonna get swept away, fo\' sho\'.', + 'Oh ho, so I\'m facing you! That\'s off the wall.' ], victory: [ - `You totally rocked that! You're raising some wicked Pokémon. You got this Trainer thing down!`, - `You don't just look strong, you're strong fo' reals! Eh, I was swept away, too!`, - `You're strong as a gnarly wave!` + 'You totally rocked that! You\'re raising some wicked Pokémon. You got this Trainer thing down!', + 'You don\'t just look strong, you\'re strong fo\' reals! Eh, I was swept away, too!', + 'You\'re strong as a gnarly wave!' ], defeat: [ - `You're tough, but it's not enough to sway the sea, 'K!`, - `Hee! Looks like I went and won again!`, - `Sweet, sweet victory!` + 'You\'re tough, but it\'s not enough to sway the sea, \'K!', + 'Hee! Looks like I went and won again!', + 'Sweet, sweet victory!' ] }, [TrainerType.SHAUNTAL]: { encounter: [ - `Excuse me. You're a challenger, right?\nI'm the Elite Four's Ghost-type Pokémon user, Shauntal, and I shall be your opponent.`, - `I absolutely love writing about Trainers who come here and the Pokémon they train.\nCould I use you and your Pokémon as a subject?`, - `Every person who works with Pokémon has a story to tell.\nWhat story is about to be told?` + 'Excuse me. You\'re a challenger, right?\nI\'m the Elite Four\'s Ghost-type Pokémon user, Shauntal, and I shall be your opponent.', + 'I absolutely love writing about Trainers who come here and the Pokémon they train.\nCould I use you and your Pokémon as a subject?', + 'Every person who works with Pokémon has a story to tell.\nWhat story is about to be told?' ], victory: [ - `Wow. I'm dumbstruck!`, - `S-sorry! First, I must apologize to my Pokémon…\n\nI'm really sorry you had a bad experience because of me!`, - `Even in light of that, I'm still one of the Elite Four!` + 'Wow. I\'m dumbstruck!', + 'S-sorry! First, I must apologize to my Pokémon…\n\nI\'m really sorry you had a bad experience because of me!', + 'Even in light of that, I\'m still one of the Elite Four!' ], defeat: [ - `Eheh.`, - `That gave me excellent material for my next novel!`, - `And so, another tale ends…` + 'Eheh.', + 'That gave me excellent material for my next novel!', + 'And so, another tale ends…' ] }, [TrainerType.MARSHAL]: { encounter: [ - `My mentor, Alder, sees your potential as a Trainer and is taking an interest in you.\nIt is my intention to test you--to take you to the limits of your strength. Kiai!`, - `Victory, decisive victory, is my intention! Challenger, here I come!`, - `In myself, I seek to develop the strength of a fighter and shatter any weakness in myself!\nPrevailing with the force of my convictions!` + 'My mentor, Alder, sees your potential as a Trainer and is taking an interest in you.\nIt is my intention to test you--to take you to the limits of your strength. Kiai!', + 'Victory, decisive victory, is my intention! Challenger, here I come!', + 'In myself, I seek to develop the strength of a fighter and shatter any weakness in myself!\nPrevailing with the force of my convictions!' ], victory: [ - `Whew! Well done!`, - `As your battles continue, aim for even greater heights!`, - `The strength shown by you and your Pokémon has deeply impressed me…` + 'Whew! Well done!', + 'As your battles continue, aim for even greater heights!', + 'The strength shown by you and your Pokémon has deeply impressed me…' ], defeat: [ - `Hmm.`, - `That was good battle.`, - `Haaah! Haaah! Haiyaaaah!` + 'Hmm.', + 'That was good battle.', + 'Haaah! Haaah! Haiyaaaah!' ] }, [TrainerType.CHEREN]: { encounter: [ - `You remind me of an old friend. That makes me excited about this Pokémon battle!`, + 'You remind me of an old friend. That makes me excited about this Pokémon battle!', `Pokémon battles have no meaning if you don't think why you battle. $Or better said, it makes battling together with Pokémon meaningless.`, - `My name's Cheren! I'm a Gym Leader and a teacher! Pleasure to meet you.` + 'My name\'s Cheren! I\'m a Gym Leader and a teacher! Pleasure to meet you.' ], victory: [ - `Thank you! I saw what was missing in me.`, - `Thank you! I feel like I saw a little of the way toward my ideals.`, - `Hmm… This is problematic.` + 'Thank you! I saw what was missing in me.', + 'Thank you! I feel like I saw a little of the way toward my ideals.', + 'Hmm… This is problematic.' ], defeat: [ - `As a Gym Leader, I aim to be a wall for you to overcome.`, - `All right!`, - `I made it where I am because Pokémon were by my side.\nPerhaps we need to think about why Pokémon help us not in terms of Pokémon and Trainers but as a relationship between living beings.` + 'As a Gym Leader, I aim to be a wall for you to overcome.', + 'All right!', + 'I made it where I am because Pokémon were by my side.\nPerhaps we need to think about why Pokémon help us not in terms of Pokémon and Trainers but as a relationship between living beings.' ] }, [TrainerType.CHILI]: { encounter: [ - `Yeeeeooow! Time to play with FIRE!! I'm the strongest of us brothers!`, - `Ta-da! The Fire-type scorcher Chili--that's me--will be your opponent!`, - `I'm going to show you what me and my blazing Fire types can do!` + 'Yeeeeooow! Time to play with FIRE!! I\'m the strongest of us brothers!', + 'Ta-da! The Fire-type scorcher Chili--that\'s me--will be your opponent!', + 'I\'m going to show you what me and my blazing Fire types can do!' ], victory: [ - `You got me. I am… burned… out…`, - `Whoa ho! You're on fire!`, - `Augh! You got me!` + 'You got me. I am… burned… out…', + 'Whoa ho! You\'re on fire!', + 'Augh! You got me!' ], defeat: [ - `I'm on fire! Play with me, and you'll get burned!`, - `When you play with fire, you get burned!`, - `I mean, c'mon, your opponent was me! You didn't have a chance!` + 'I\'m on fire! Play with me, and you\'ll get burned!', + 'When you play with fire, you get burned!', + 'I mean, c\'mon, your opponent was me! You didn\'t have a chance!' ] }, [TrainerType.CILAN]: { encounter: [ `Nothing personal... No hard feelings... Me and my Grass-type Pokémon will... $Um... We're gonna battle come what may.`, - `So, um, if you're OK with me, I'll, um, put everything I've got into being, er, you know, your opponent.`, - `OK… So, um, I'm Cilan, I like Grass-type Pokémon.` + 'So, um, if you\'re OK with me, I\'ll, um, put everything I\'ve got into being, er, you know, your opponent.', + 'OK… So, um, I\'m Cilan, I like Grass-type Pokémon.' ], victory: [ - `Er… Is it over now?`, + 'Er… Is it over now?', `…What a surprise. You are very strong, aren't you? $I guess my brothers wouldn't have been able to defeat you either…`, - `…Huh. Looks like my timing was, um, off?` + '…Huh. Looks like my timing was, um, off?' ], defeat: [ - `Huh? Did I win?`, + 'Huh? Did I win?', `I guess… $I suppose I won, because I've been competing with my brothers Chili and Cress, and we all were able to get tougher.`, - `It…it was quite a thrilling experience…` + 'It…it was quite a thrilling experience…' ] }, [TrainerType.ROARK]: { encounter: [ - `I need to see your potential as a Trainer. And, I'll need to see the toughness of the Pokémon that battle with you!`, - `Here goes! These are my rocking Pokémon, my pride and joy!`, - `Rock-type Pokémon are simply the best!`, - `I need to see your potential as a Trainer. And, I'll need to see the toughness of the Pokémon that battle with you!` + 'I need to see your potential as a Trainer. And, I\'ll need to see the toughness of the Pokémon that battle with you!', + 'Here goes! These are my rocking Pokémon, my pride and joy!', + 'Rock-type Pokémon are simply the best!', + 'I need to see your potential as a Trainer. And, I\'ll need to see the toughness of the Pokémon that battle with you!' ], victory: [ - `W-what? That can't be! My buffed-up Pokémon!`, - `…We lost control there. Next time I'd like to challenge you to a Fossil-digging race underground.`, - `With skill like yours, it's natural for you to win.`, - `Wh-what?! It can't be! Even that wasn't enough?`, - `I blew it.` + 'W-what? That can\'t be! My buffed-up Pokémon!', + '…We lost control there. Next time I\'d like to challenge you to a Fossil-digging race underground.', + 'With skill like yours, it\'s natural for you to win.', + 'Wh-what?! It can\'t be! Even that wasn\'t enough?', + 'I blew it.' ], defeat: [ - `See? I'm proud of my rocking battle style!`, - `Thanks! The battle gave me confidence that I may be able to beat my dad!`, - `I feel like I just smashed through a really stubborn boulder!` + 'See? I\'m proud of my rocking battle style!', + 'Thanks! The battle gave me confidence that I may be able to beat my dad!', + 'I feel like I just smashed through a really stubborn boulder!' ] }, [TrainerType.MORTY]: { @@ -915,42 +915,42 @@ export const trainerTypeDialogue = { $I believed that tale, so I have secretly trained here all my life. As a result, I can now see what others cannot. $I see a shadow of the person who will make the Pokémon appear. $I believe that person is me! You're going to help me reach that level!`, - `Whether you choose to believe or not, mystic power does exist.`, - `You can bear witness to the fruits of my training.`, - `You must make your soul one with that of Pokémon. Can you do this?`, - `Say, do you want to be part of my training?` + 'Whether you choose to believe or not, mystic power does exist.', + 'You can bear witness to the fruits of my training.', + 'You must make your soul one with that of Pokémon. Can you do this?', + 'Say, do you want to be part of my training?' ], victory: [ - `I'm not good enough yet…`, + 'I\'m not good enough yet…', `I see… Your journey has taken you to far-away places and you have witnessed much more than I. $I envy you for that…`, - `How is this possible…`, + 'How is this possible…', `I don't think our potentials are so different. $But you seem to have something more than that… So be it.`, - `Guess I need more training.`, - `That's a shame.` + 'Guess I need more training.', + 'That\'s a shame.' ], defeat: [ - `I moved… one step ahead again.`, - `Fufufu…`, - `Wh-what?! It can't be! Even that wasn't enough?`, - `I feel like I just smashed through a really stubborn boulder!`, - `Ahahahah!`, - `I knew I would win!` + 'I moved… one step ahead again.', + 'Fufufu…', + 'Wh-what?! It can\'t be! Even that wasn\'t enough?', + 'I feel like I just smashed through a really stubborn boulder!', + 'Ahahahah!', + 'I knew I would win!' ] }, [TrainerType.CRISPIN]: { encounter: [ - `I wanna win, so that's exactly what I'll do!`, - `I battle because I wanna battle! And you know what? That's how it should be!` + 'I wanna win, so that\'s exactly what I\'ll do!', + 'I battle because I wanna battle! And you know what? That\'s how it should be!' ], victory: [ - `I wanted to win…but I lost!`, - `I lost…'cause I couldn't win!` + 'I wanted to win…but I lost!', + 'I lost…\'cause I couldn\'t win!' ], defeat: [ - `Hey, wait a sec. Did I just win? I think I just won! Talk about satisfying!`, - `Wooo! That was amazing!` + 'Hey, wait a sec. Did I just win? I think I just won! Talk about satisfying!', + 'Wooo! That was amazing!' ] }, [TrainerType.AMARYS]: { @@ -960,21 +960,21 @@ export const trainerTypeDialogue = { ], victory: [ - `I am… not enough, I see.`, + 'I am… not enough, I see.', ], defeat: [ - `Victory belongs to me. Well fought.`, + 'Victory belongs to me. Well fought.', ] }, [TrainerType.LACEY]: { encounter: [ - `I'll be facing you with my usual party as a member of the Elite Four.`, + 'I\'ll be facing you with my usual party as a member of the Elite Four.', ], victory: [ - `That was a great battle!`, + 'That was a great battle!', ], defeat: [ - `Let's give your Pokémon a nice round of applause for their efforts!`, + 'Let\'s give your Pokémon a nice round of applause for their efforts!', ] }, [TrainerType.DRAYTON]: { @@ -983,10 +983,10 @@ export const trainerTypeDialogue = { $I don't get why everyone doesn't just sit all the time. Standing up's tiring work!`, ], victory: [ - `Guess I should've expected that!`, + 'Guess I should\'ve expected that!', ], defeat: [ - `Heh heh! Don't mind me, just scooping up a W over here. I get it if you're upset, but don't go full Kieran on me, OK?`, + 'Heh heh! Don\'t mind me, just scooping up a W over here. I get it if you\'re upset, but don\'t go full Kieran on me, OK?', ] }, [TrainerType.RAMOS]: { @@ -995,10 +995,10 @@ export const trainerTypeDialogue = { $Their strength is a sign o' my strength as a gardener and a Gym Leader! Yeh sure yer up to facing all that?`, ], victory: [ - `Yeh believe in yer Pokémon… And they believe in yeh, too… It was a fine battle, sprout.`, + 'Yeh believe in yer Pokémon… And they believe in yeh, too… It was a fine battle, sprout.', ], defeat: [ - `Hohoho… Indeed. Frail little blades o' grass'll break through even concrete.`, + 'Hohoho… Indeed. Frail little blades o\' grass\'ll break through even concrete.', ] }, [TrainerType.VIOLA]: { @@ -1006,16 +1006,16 @@ export const trainerTypeDialogue = { `Whether it's the tears of frustration that follow a loss or the blossoming of joy that comes with victory… $They're both great subjects for my camera! Fantastic! This'll be just fantastic! $Now come at me!`, - `My lens is always focused on victory--I won't let anything ruin this shot!` + 'My lens is always focused on victory--I won\'t let anything ruin this shot!' ], victory: [ - `You and your Pokémon have shown me a whole new depth of field! Fantastic! Just fantastic!`, + 'You and your Pokémon have shown me a whole new depth of field! Fantastic! Just fantastic!', `The world you see through a lens, and the world you see with a Pokémon by your side… $The same world can look entirely different depending on your view.` ], defeat: [ - `The photo from the moment of my victory will be a really winner, all right!`, - `Yes! I took some great photos!` + 'The photo from the moment of my victory will be a really winner, all right!', + 'Yes! I took some great photos!' ] }, [TrainerType.CANDICE]: { @@ -1026,66 +1026,66 @@ export const trainerTypeDialogue = { $I'll show you just what I mean. Get ready to lose!` ], victory: [ - `I must say, I'm warmed up to you! I might even admire you a little.`, + 'I must say, I\'m warmed up to you! I might even admire you a little.', `Wow! You're great! You've earned my respect! $I think your focus and will bowled us over totally. ` ], defeat: [ - `I sensed your will to win, but I don't lose!`, - `See? Candice's focus! My Pokémon's focus is great, too!` + 'I sensed your will to win, but I don\'t lose!', + 'See? Candice\'s focus! My Pokémon\'s focus is great, too!' ] }, [TrainerType.GARDENIA]: { encounter: [ - `You have a winning aura about you. So, anyway, this will be fun. Let's have our battle!`, + 'You have a winning aura about you. So, anyway, this will be fun. Let\'s have our battle!', ], victory: [ - `Amazing! You're very good, aren't you?`, + 'Amazing! You\'re very good, aren\'t you?', ], defeat: [ - `Yes! My Pokémon and I are perfectly good!`, + 'Yes! My Pokémon and I are perfectly good!', ] }, [TrainerType.AARON]: { encounter: [ - `Ok! Let me take you on!`, + 'Ok! Let me take you on!', ], victory: [ - `Battling is a deep and complex affair…`, + 'Battling is a deep and complex affair…', ], defeat: [ - `Victory over an Elite Four member doesn't come easily.`, + 'Victory over an Elite Four member doesn\'t come easily.', ] }, [TrainerType.CRESS]: { encounter: [ - `That is correct! It shall be I and my esteemed Water types that you must face in battle!`, + 'That is correct! It shall be I and my esteemed Water types that you must face in battle!', ], victory: [ - `Lose? Me? I don't believe this.`, + 'Lose? Me? I don\'t believe this.', ], defeat: [ - `This is the appropriate result when I'm your opponent.`, + 'This is the appropriate result when I\'m your opponent.', ] }, [TrainerType.ALLISTER]: { encounter: [ - `'M Allister.\nH-here… I go…`, + '\'M Allister.\nH-here… I go…', ], victory: [ `I nearly lost my mask from the shock… That was… $Wow. I can see your skill for what it is.`, ], defeat: [ - `Th-that was ace!`, + 'Th-that was ace!', ] }, [TrainerType.CLAY]: { encounter: [ - `Harrumph! Kept me waitin', didn't ya, kid? All right, time to see what ya can do!`, + 'Harrumph! Kept me waitin\', didn\'t ya, kid? All right, time to see what ya can do!', ], victory: [ - `Man oh man… It feels good to go all out and still be defeated!`, + 'Man oh man… It feels good to go all out and still be defeated!', ], defeat: [ `What's important is how ya react to losin'. @@ -1094,24 +1094,24 @@ export const trainerTypeDialogue = { }, [TrainerType.KOFU]: { encounter: [ - `I'mma serve you a full course o' Water-type Pokémon! Don't try to eat 'em, though!`, + 'I\'mma serve you a full course o\' Water-type Pokémon! Don\'t try to eat \'em, though!', ], victory: [ - `Vaultin' Veluza! Yer a lively one, aren't ya! A little TOO lively, if I do say so myself!`, + 'Vaultin\' Veluza! Yer a lively one, aren\'t ya! A little TOO lively, if I do say so myself!', ], defeat: [ - `You come back to see me again now, ya hear?`, + 'You come back to see me again now, ya hear?', ] }, [TrainerType.TULIP]: { encounter: [ - `Allow me to put my skills to use to make your cute little Pokémon even more beautiful!`, + 'Allow me to put my skills to use to make your cute little Pokémon even more beautiful!', ], victory: [ - `Your strength has a magic to it that cannot be washed away.`, + 'Your strength has a magic to it that cannot be washed away.', ], defeat: [ - `You know, in my line of work, people who lack talent in one area or the other often fade away quickly—never to be heard of again.`, + 'You know, in my line of work, people who lack talent in one area or the other often fade away quickly—never to be heard of again.', ] }, [TrainerType.SIDNEY]: { @@ -1121,10 +1121,10 @@ export const trainerTypeDialogue = { $You and me, let's enjoy a battle that can only be staged here!`, ], victory: [ - `Well, how do you like that? I lost! Eh, it was fun, so it doesn't matter.`, + 'Well, how do you like that? I lost! Eh, it was fun, so it doesn\'t matter.', ], defeat: [ - `No hard feelings, alright?`, + 'No hard feelings, alright?', ] }, [TrainerType.PHOEBE]: { @@ -1134,10 +1134,10 @@ export const trainerTypeDialogue = { $So, come on, just try and see if you can even inflict damage on my Pokémon!`, ], victory: [ - `Oh, darn. I've gone and lost.`, + 'Oh, darn. I\'ve gone and lost.', ], defeat: [ - `I look forward to battling you again sometime!`, + 'I look forward to battling you again sometime!', ] }, [TrainerType.GLACIA]: { @@ -1151,7 +1151,7 @@ export const trainerTypeDialogue = { $It's no surprise that my icy skills failed to harm you.`, ], defeat: [ - `A fiercely passionate battle, indeed.`, + 'A fiercely passionate battle, indeed.', ] }, [TrainerType.DRAKE]: { @@ -1160,10 +1160,10 @@ export const trainerTypeDialogue = { $If you don't, then you will never prevail over me!`, ], victory: [ - `Superb, it should be said.`, + 'Superb, it should be said.', ], defeat: [ - `I gave my all for that battle!`, + 'I gave my all for that battle!', ] }, [TrainerType.WALLACE]: { @@ -1177,7 +1177,7 @@ export const trainerTypeDialogue = { $I find much joy in having met you and your Pokémon. You have proven yourself worthy.`, ], defeat: [ - `A grand illusion!`, + 'A grand illusion!', ] }, [TrainerType.LORELEI]: { @@ -1186,10 +1186,10 @@ export const trainerTypeDialogue = { $Your Pokémon will be at my mercy when they are frozen solid! Hahaha! Are you ready?`, ], victory: [ - `How dare you!`, + 'How dare you!', ], defeat: [ - `There's nothing you can do once you're frozen.`, + 'There\'s nothing you can do once you\'re frozen.', ] }, [TrainerType.WILL]: { @@ -1198,10 +1198,10 @@ export const trainerTypeDialogue = { $I can only keep getting better! Losing is not an option!`, ], victory: [ - `I… I can't… believe it…`, + 'I… I can\'t… believe it…', ], defeat: [ - `That was close. I wonder what it is that you lack.`, + 'That was close. I wonder what it is that you lack.', ] }, [TrainerType.MALVA]: { @@ -1210,21 +1210,21 @@ export const trainerTypeDialogue = { $I'm burning up with my hatred for you, runt!`, ], victory: [ - `What news… So a new challenger has defeated Malva!`, + 'What news… So a new challenger has defeated Malva!', ], defeat: [ - `I am delighted! Yes, delighted that I could squash you beneath my heel.`, + 'I am delighted! Yes, delighted that I could squash you beneath my heel.', ] }, [TrainerType.HALA]: { encounter: [ - `Old Hala is here to make you holler!`, + 'Old Hala is here to make you holler!', ], victory: [ - `I could feel the power you gained on your journey.`, + 'I could feel the power you gained on your journey.', ], defeat: [ - `Haha! What a delightful battle!`, + 'Haha! What a delightful battle!', ] }, [TrainerType.MOLAYNE]: { @@ -1233,60 +1233,60 @@ export const trainerTypeDialogue = { $My strength is like that of a supernova!`, ], victory: [ - `I certainly found an interesting Trainer to face!`, + 'I certainly found an interesting Trainer to face!', ], defeat: [ - `Ahaha. What an interesting battle.`, + 'Ahaha. What an interesting battle.', ] }, [TrainerType.RIKA]: { encounter: [ - `I'd say I'll go easy on you, but… I'd be lying! Think fast!`, + 'I\'d say I\'ll go easy on you, but… I\'d be lying! Think fast!', ], victory: [ - `Not bad, kiddo.`, + 'Not bad, kiddo.', ], defeat: [ - `Nahahaha! You really are something else, kiddo!`, + 'Nahahaha! You really are something else, kiddo!', ] }, [TrainerType.BRUNO]: { encounter: [ - `We will grind you down with our superior power! Hoo hah!`, + 'We will grind you down with our superior power! Hoo hah!', ], victory: [ - `Why? How could I lose?`, + 'Why? How could I lose?', ], defeat: [ - `You can challenge me all you like, but the results will never change!`, + 'You can challenge me all you like, but the results will never change!', ] }, [TrainerType.BUGSY]: { encounter: [ - `Let me demonstrate what I've learned from my studies.`, + 'Let me demonstrate what I\'ve learned from my studies.', ], victory: [ `Whoa, amazing! You're an expert on Pokémon! $My research isn't complete yet. OK, you win.`, ], defeat: [ - `Thanks! Thanks to our battle, I was also able to make progress in my research!`, + 'Thanks! Thanks to our battle, I was also able to make progress in my research!', ] }, [TrainerType.KOGA]: { encounter: [ - `Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!`, + 'Fwahahahaha! Pokémon are not merely about brute force--you shall see soon enough!', ], victory: [ - `Ah! You've proven your worth!`, + 'Ah! You\'ve proven your worth!', ], defeat: [ - `Have you learned to fear the techniques of the ninja?`, + 'Have you learned to fear the techniques of the ninja?', ] }, [TrainerType.BERTHA]: { encounter: [ - `Well, would you show this old lady how much you've learned?`, + 'Well, would you show this old lady how much you\'ve learned?', ], victory: [ `Well! Dear child, I must say, that was most impressive. @@ -1294,26 +1294,26 @@ export const trainerTypeDialogue = { $Even though I've lost, I find myself with this silly grin!`, ], defeat: [ - `Hahahahah! Looks like this old lady won!`, + 'Hahahahah! Looks like this old lady won!', ] }, [TrainerType.LENORA]: { encounter: [ - `Well then, challenger, I'm going to research how you battle with the Pokémon you've so lovingly raised!`, + 'Well then, challenger, I\'m going to research how you battle with the Pokémon you\'ve so lovingly raised!', ], victory: [ - `My theory about you was correct. You're more than just talented… You're motivated! I salute you!`, + 'My theory about you was correct. You\'re more than just talented… You\'re motivated! I salute you!', ], defeat: [ - `Ah ha ha! If you lose, make sure to analyze why, and use that knowledge in your next battle!`, + 'Ah ha ha! If you lose, make sure to analyze why, and use that knowledge in your next battle!', ] }, [TrainerType.SIEBOLD]: { encounter: [ - `As long as I am alive, I shall strive onward to seek the ultimate cuisine... and the strongest opponents in battle!`, + 'As long as I am alive, I shall strive onward to seek the ultimate cuisine... and the strongest opponents in battle!', ], victory: [ - `I shall store my memory of you and your Pokémon forever away within my heart.`, + 'I shall store my memory of you and your Pokémon forever away within my heart.', ], defeat: [ `Our Pokémon battle was like food for my soul. It shall keep me going. @@ -1322,32 +1322,32 @@ export const trainerTypeDialogue = { }, [TrainerType.ROXIE]: { encounter: [ - `Get ready! I'm gonna knock some sense outta ya!`, + 'Get ready! I\'m gonna knock some sense outta ya!', ], victory: [ - `Wild! Your reason's already more toxic than mine!`, + 'Wild! Your reason\'s already more toxic than mine!', ], defeat: [ - `Hey, c'mon! Get serious! You gotta put more out there!`, + 'Hey, c\'mon! Get serious! You gotta put more out there!', ] }, [TrainerType.OLIVIA]: { encounter: [ - `No introduction needed here. Time to battle me, Olivia!`, + 'No introduction needed here. Time to battle me, Olivia!', ], victory: [ - `Really lovely… Both you and your Pokémon…`, + 'Really lovely… Both you and your Pokémon…', ], defeat: [ - `Mmm-hmm.`, + 'Mmm-hmm.', ] }, [TrainerType.POPPY]: { encounter: [ - `Oooh! Do you wanna have a Pokémon battle with me?`, + 'Oooh! Do you wanna have a Pokémon battle with me?', ], victory: [ - `Uagh?! Mmmuuuggghhh…`, + 'Uagh?! Mmmuuuggghhh…', ], defeat: [ `Yaaay! I did it! I de-feet-ed you! You can come for… For… An avenge match? @@ -1356,35 +1356,35 @@ export const trainerTypeDialogue = { }, [TrainerType.AGATHA]: { encounter: [ - `Pokémon are for battling! I'll show you how a real Trainer battles!`, + 'Pokémon are for battling! I\'ll show you how a real Trainer battles!', ], victory: [ - `Oh my! You're something special, child!`, + 'Oh my! You\'re something special, child!', ], defeat: [ - `Bahaha. That's how a proper battle's done!`, + 'Bahaha. That\'s how a proper battle\'s done!', ] }, [TrainerType.FLINT]: { encounter: [ - `Hope you're warmed up, cause here comes the Big Bang!`, + 'Hope you\'re warmed up, cause here comes the Big Bang!', ], victory: [ - `Incredible! Your moves are so hot, they make mine look lukewarm!`, + 'Incredible! Your moves are so hot, they make mine look lukewarm!', ], defeat: [ - `Huh? Is that it? I think you need a bit more passion.`, + 'Huh? Is that it? I think you need a bit more passion.', ] }, [TrainerType.GRIMSLEY]: { encounter: [ - `The winner takes everything, and there's nothing left for the loser.`, + 'The winner takes everything, and there\'s nothing left for the loser.', ], victory: [ - `When one loses, they lose everything… The next thing I'll look for will be victory, too!`, + 'When one loses, they lose everything… The next thing I\'ll look for will be victory, too!', ], defeat: [ - `If somebody wins, the person who fought against that person will lose.`, + 'If somebody wins, the person who fought against that person will lose.', ] }, [TrainerType.CAITLIN]: { @@ -1395,10 +1395,10 @@ export const trainerTypeDialogue = { $Please unleash your power to the fullest!`, ], victory: [ - `My Pokémon and I learned so much! I offer you my thanks.`, + 'My Pokémon and I learned so much! I offer you my thanks.', ], defeat: [ - `I aspire to claim victory with elegance and grace.`, + 'I aspire to claim victory with elegance and grace.', ] }, [TrainerType.DIANTHA]: { @@ -1407,10 +1407,10 @@ export const trainerTypeDialogue = { $Honestly, it just fills me up with energy I need to keep facing each new day! It does!`, ], victory: [ - `Witnessing the noble spirits of you and your Pokémon in battle has really touched my heart…`, + 'Witnessing the noble spirits of you and your Pokémon in battle has really touched my heart…', ], defeat: [ - `Oh, fantastic! What did you think? My team was pretty cool, right?`, + 'Oh, fantastic! What did you think? My team was pretty cool, right?', ] }, [TrainerType.WIKSTROM]: { @@ -1419,7 +1419,7 @@ export const trainerTypeDialogue = { $Let the battle begin! En garde!`, ], victory: [ - `Glorious! The trust that you share with your honorable Pokémon surpasses even mine!`, + 'Glorious! The trust that you share with your honorable Pokémon surpasses even mine!', ], defeat: [ `What manner of magic is this? My heart, it doth hammer ceaselessly in my breast! @@ -1428,13 +1428,13 @@ export const trainerTypeDialogue = { }, [TrainerType.ACEROLA]: { encounter: [ - `Battling is just plain fun! Come on, I can take you!`, + 'Battling is just plain fun! Come on, I can take you!', ], victory: [ - `I'm… I'm speechless! How did you do it?!`, + 'I\'m… I\'m speechless! How did you do it?!', ], defeat: [ - `Ehaha! What an amazing victory!`, + 'Ehaha! What an amazing victory!', ] }, [TrainerType.LARRY_ELITE]: { @@ -1443,41 +1443,41 @@ export const trainerTypeDialogue = { $I serve as a member of the Elite Four too, yes… Unfortunately for me.`, ], victory: [ - `Well, that took the wind from under our wings…`, + 'Well, that took the wind from under our wings…', ], defeat: [ - `It's time for a meeting with the boss.`, + 'It\'s time for a meeting with the boss.', ] }, [TrainerType.LANCE]: { encounter: [ - `I've been waiting for you. Allow me to test your skill.`, - `I thought that you would be able to get this far. Let's get this started.` + 'I\'ve been waiting for you. Allow me to test your skill.', + 'I thought that you would be able to get this far. Let\'s get this started.' ], victory: [ - `You got me. You are magnificent!`, - `I never expected another trainer to beat me… I'm surprised.` + 'You got me. You are magnificent!', + 'I never expected another trainer to beat me… I\'m surprised.' ], defeat: [ - `That was close. Want to try again?`, - `It's not that you are weak. Don't let it bother you.` + 'That was close. Want to try again?', + 'It\'s not that you are weak. Don\'t let it bother you.' ] }, [TrainerType.KAREN]: { encounter: [ - `I am Karen. Would you care for a showdown with my Dark-type Pokémon?`, - `I am unlike those you've already met.`, - `You've assembled a charming team. Our battle should be a good one.` + 'I am Karen. Would you care for a showdown with my Dark-type Pokémon?', + 'I am unlike those you\'ve already met.', + 'You\'ve assembled a charming team. Our battle should be a good one.' ], victory: [ - `No! I can't win. How did you become so strong?`, - `I will not stray from my chosen path.`, - `The Champion is looking forward to meeting you.` + 'No! I can\'t win. How did you become so strong?', + 'I will not stray from my chosen path.', + 'The Champion is looking forward to meeting you.' ], defeat: [ - `That's about what I expected.`, - `Well, that was relatively entertaining.`, - `Come visit me anytime.` + 'That\'s about what I expected.', + 'Well, that was relatively entertaining.', + 'Come visit me anytime.' ] }, [TrainerType.MILO]: { @@ -1487,10 +1487,10 @@ export const trainerTypeDialogue = { $I'll have to Dynamax my Pokémon if I want to win!`, ], victory: [ - `The power of Grass has wilted… What an incredible Challenger!`, + 'The power of Grass has wilted… What an incredible Challenger!', ], defeat: [ - `This'll really leave you in shock and awe.`, + 'This\'ll really leave you in shock and awe.', ] }, [TrainerType.LUCIAN]: { @@ -1501,10 +1501,10 @@ export const trainerTypeDialogue = { $Let me see if you'll achieve as much glory as the hero of my book!,` ], victory: [ - `I see… It appears you've put me in checkmate.`, + 'I see… It appears you\'ve put me in checkmate.', ], defeat: [ - `I have a reputation to uphold.`, + 'I have a reputation to uphold.', ] }, [TrainerType.DRASNA]: { @@ -1513,88 +1513,88 @@ export const trainerTypeDialogue = { $That's just wonderful news! Facing opponents like you and your team will make my Pokémon grow like weeds!` ], victory: [ - `Oh, dear me. That sure was a quick battle… I do hope you'll come back again sometime!`, + 'Oh, dear me. That sure was a quick battle… I do hope you\'ll come back again sometime!', ], defeat: [ - `How can this be?`, + 'How can this be?', ] }, [TrainerType.KAHILI]: { encounter: [ - `So, here you are… Why don't we see who the winds favor today, you… Or me?` + 'So, here you are… Why don\'t we see who the winds favor today, you… Or me?' ], victory: [ - `It's frustrating to me as a member of the Elite Four, but it seems your strength is the real deal.`, + 'It\'s frustrating to me as a member of the Elite Four, but it seems your strength is the real deal.', ], defeat: [ - `That was an ace!`, + 'That was an ace!', ] }, [TrainerType.HASSEL]: { encounter: [ - `Prepare to learn firsthand how the fiery breath of ferocious battle feels!` + 'Prepare to learn firsthand how the fiery breath of ferocious battle feels!' ], victory: [ `Fortune smiled on me this time, but… $Judging from how the match went, who knows if I will be so lucky next time.`, ], defeat: [ - `That was an ace!`, + 'That was an ace!', ] }, [TrainerType.BLUE]: { encounter: [ - `You must be pretty good to get this far.` + 'You must be pretty good to get this far.' ], victory: [ - `I've only lost to him and now to you… Him? Hee, hee…`, + 'I\'ve only lost to him and now to you… Him? Hee, hee…', ], defeat: [ - `See? My power is what got me here.`, + 'See? My power is what got me here.', ] }, [TrainerType.PIERS]: { encounter: [ - `Get ready for a mosh pit with me and my party! Spikemuth, it's time to rock!` + 'Get ready for a mosh pit with me and my party! Spikemuth, it\'s time to rock!' ], victory: [ - `Me an' my team gave it our best. Let's meet up again for a battle some time…`, + 'Me an\' my team gave it our best. Let\'s meet up again for a battle some time…', ], defeat: [ - `My throat's ragged from shoutin'… But 'at was an excitin' battle!`, + 'My throat\'s ragged from shoutin\'… But \'at was an excitin\' battle!', ] }, [TrainerType.RED]: { encounter: [ - `…!` + '…!' ], victory: [ - `…?`, + '…?', ], defeat: [ - `…!`, + '…!', ] }, [TrainerType.JASMINE]: { encounter: [ - `Oh… Your Pokémon are impressive. I think I will enjoy this.` + 'Oh… Your Pokémon are impressive. I think I will enjoy this.' ], victory: [ - `You are truly strong. I'll have to try much harder, too.`, + 'You are truly strong. I\'ll have to try much harder, too.', ], defeat: [ - `I never expected to win.`, + 'I never expected to win.', ] }, [TrainerType.LANCE_CHAMPION]: { encounter: [ - `I am still the Champion. I won't hold anything back.`, + 'I am still the Champion. I won\'t hold anything back.', ], victory: [ - `This is the emergence of a new Champion.`, + 'This is the emergence of a new Champion.', ], defeat: [ - `I successfully defended my Championship.`, + 'I successfully defended my Championship.', ] }, [TrainerType.STEVEN]: { @@ -1606,21 +1606,21 @@ export const trainerTypeDialogue = { $My Pokémon and I will respond in turn with all that we know!`, ], victory: [ - `So I, the Champion, fall in defeat…`, + 'So I, the Champion, fall in defeat…', ], defeat: [ - `That was time well spent! Thank you!`, + 'That was time well spent! Thank you!', ] }, [TrainerType.CYNTHIA]: { encounter: [ - `I, Cynthia, accept your challenge! There won't be any letup from me!`, + 'I, Cynthia, accept your challenge! There won\'t be any letup from me!', ], victory: [ - `No matter how fun the battle is, it will always end sometime…`, + 'No matter how fun the battle is, it will always end sometime…', ], defeat: [ - `Even if you lose, never lose your love of Pokémon.`, + 'Even if you lose, never lose your love of Pokémon.', ] }, [TrainerType.IRIS]: { @@ -1633,10 +1633,10 @@ export const trainerTypeDialogue = { $I'm Iris, the Pokémon League Champion, and I'm going to defeat you!`, ], victory: [ - `Aghhhh… I did my best, but we lost…`, + 'Aghhhh… I did my best, but we lost…', ], defeat: [ - `Yay! We won!`, + 'Yay! We won!', ] }, [TrainerType.HAU]: { @@ -1645,10 +1645,10 @@ export const trainerTypeDialogue = { $Let's test it out!`, ], victory: [ - `That was awesome! I think I kinda understand your vibe a little better now!`, + 'That was awesome! I think I kinda understand your vibe a little better now!', ], defeat: [ - `Ma-an, that was some kinda battle!`, + 'Ma-an, that was some kinda battle!', ] }, [TrainerType.GEETA]: { @@ -1657,26 +1657,26 @@ export const trainerTypeDialogue = { $Come now… Show me the fruits of your training.`, ], victory: [ - `I eagerly await news of all your achievements!`, + 'I eagerly await news of all your achievements!', ], defeat: [ - `What's the matter? This isn't all, is it?`, + 'What\'s the matter? This isn\'t all, is it?', ] }, [TrainerType.NEMONA]: { encounter: [ - `Yesss! I'm so psyched! Time for us to let loose!`, + 'Yesss! I\'m so psyched! Time for us to let loose!', ], victory: [ - `Well, that stinks, but I still had fun! I'll getcha next time!`, + 'Well, that stinks, but I still had fun! I\'ll getcha next time!', ], defeat: [ - `Well, that was a great battle! Fruitful for sure.`, + 'Well, that was a great battle! Fruitful for sure.', ] }, [TrainerType.LEON]: { encounter: [ - `We're gonna have an absolutely champion time!`, + 'We\'re gonna have an absolutely champion time!', ], victory: [ `My time as Champion is over… @@ -1684,62 +1684,62 @@ export const trainerTypeDialogue = { $Thank you for the greatest battle I've ever had!`, ], defeat: [ - `An absolute champion time, that was!`, + 'An absolute champion time, that was!', ] }, [TrainerType.WHITNEY]: { encounter: [ - `Hey! Don't you think Pokémon are, like, super cute?`, + 'Hey! Don\'t you think Pokémon are, like, super cute?', ], victory: [ - `Waaah! Waaah! You're so mean!`, + 'Waaah! Waaah! You\'re so mean!', ], defeat: [ - `And that's that!`, + 'And that\'s that!', ] }, [TrainerType.CHUCK]: { encounter: [ - `Hah! You want to challenge me? Are you brave or just ignorant?`, + 'Hah! You want to challenge me? Are you brave or just ignorant?', ], victory: [ - `You're strong! Would you please make me your apprentice?`, + 'You\'re strong! Would you please make me your apprentice?', ], defeat: [ - `There. Do you realize how much more powerful I am than you?`, + 'There. Do you realize how much more powerful I am than you?', ] }, [TrainerType.KATY]: { encounter: [ - `Don't let your guard down unless you would like to find yourself knocked off your feet!`, + 'Don\'t let your guard down unless you would like to find yourself knocked off your feet!', ], victory: [ - `All of my sweet little Pokémon dropped like flies!`, + 'All of my sweet little Pokémon dropped like flies!', ], defeat: [ - `Eat up, my cute little Vivillon!`, + 'Eat up, my cute little Vivillon!', ] }, [TrainerType.PRYCE]: { encounter: [ - `Youth alone does not ensure victory! Experience is what counts.`, + 'Youth alone does not ensure victory! Experience is what counts.', ], victory: [ - `Outstanding! That was perfect. Try not to forget what you feel now.`, + 'Outstanding! That was perfect. Try not to forget what you feel now.', ], defeat: [ - `Just as I envisioned.`, + 'Just as I envisioned.', ] }, [TrainerType.CLAIR]: { encounter: [ - `Do you know who I am? And you still dare to challenge me?`, + 'Do you know who I am? And you still dare to challenge me?', ], victory: [ - `I wonder how far you can get with your skill level. This should be fascinating.`, + 'I wonder how far you can get with your skill level. This should be fascinating.', ], defeat: [ - `That's that.`, + 'That\'s that.', ] }, [TrainerType.MAYLENE]: { @@ -1748,10 +1748,10 @@ export const trainerTypeDialogue = { $Please prepare yourself for battle!`, ], victory: [ - `I admit defeat…`, + 'I admit defeat…', ], defeat: [ - `That was awesome.`, + 'That was awesome.', ] }, [TrainerType.FANTINA]: { @@ -1760,10 +1760,10 @@ export const trainerTypeDialogue = { $That is what the Gym Leader of Hearthome does, non?`, ], victory: [ - `You are so fantastically strong. I know why I have lost.`, + 'You are so fantastically strong. I know why I have lost.', ], defeat: [ - `I am so, so, very happy!`, + 'I am so, so, very happy!', ] }, [TrainerType.BYRON]: { @@ -1773,21 +1773,21 @@ export const trainerTypeDialogue = { $So, as a wall for young people, I'll take your challenge!`, ], victory: [ - `Hmm! My sturdy Pokémon--defeated!`, + 'Hmm! My sturdy Pokémon--defeated!', ], defeat: [ - `Gwahahaha! How were my sturdy Pokémon?!`, + 'Gwahahaha! How were my sturdy Pokémon?!', ] }, [TrainerType.OLYMPIA]: { encounter: [ - `An ancient custom deciding one's destiny. The battle begins!`, + 'An ancient custom deciding one\'s destiny. The battle begins!', ], victory: [ - `Create your own path. Let nothing get in your way. Your fate, your future.`, + 'Create your own path. Let nothing get in your way. Your fate, your future.', ], defeat: [ - `Our path is clear now.`, + 'Our path is clear now.', ] }, [TrainerType.VOLKNER]: { @@ -1813,11 +1813,11 @@ export const trainerTypeDialogue = { $Well now… Let's get right to it!` ], victory: [ - `Is it over? Has my muse abandoned me?`, - `Hmm… It's over! You're incredible!` + 'Is it over? Has my muse abandoned me?', + 'Hmm… It\'s over! You\'re incredible!' ], defeat: [ - `Wow… It's beautiful somehow, isn't it…`, + 'Wow… It\'s beautiful somehow, isn\'t it…', `Sometimes I hear people say something was an ugly win. $I think if you're trying your best, any win is beautiful.` ] @@ -1828,10 +1828,10 @@ export const trainerTypeDialogue = { $I want to feel the sensation, so now my beloved Pokémon are going to make your head spin!`, ], victory: [ - `I meant to make your head spin, but you shocked me instead.`, + 'I meant to make your head spin, but you shocked me instead.', ], defeat: [ - `That was unsatisfying somehow… Will you give it your all next time?`, + 'That was unsatisfying somehow… Will you give it your all next time?', ] }, [TrainerType.SKYLA]: { @@ -1841,10 +1841,10 @@ export const trainerTypeDialogue = { $So, how about you and I have some fun?`, ], victory: [ - `Being your opponent in battle is a new source of strength to me. Thank you!`, + 'Being your opponent in battle is a new source of strength to me. Thank you!', ], defeat: [ - `Win or lose, you always gain something from a battle, right?`, + 'Win or lose, you always gain something from a battle, right?', ] }, [TrainerType.BRYCEN]: { @@ -1853,10 +1853,10 @@ export const trainerTypeDialogue = { $Receiving their support makes you stronger. I'll show you this power!`, ], victory: [ - `The wonderful combination of you and your Pokémon! What a beautiful friendship!`, + 'The wonderful combination of you and your Pokémon! What a beautiful friendship!', ], defeat: [ - `Extreme conditions really test you and train you!`, + 'Extreme conditions really test you and train you!', ] }, [TrainerType.DRAYDEN]: { @@ -1865,10 +1865,10 @@ export const trainerTypeDialogue = { $Let's battle with everything we have: your skill, my experience, and the love we've raised our Pokémon with!`, ], victory: [ - `This intense feeling that floods me after a defeat… I don't know how to describe it.`, + 'This intense feeling that floods me after a defeat… I don\'t know how to describe it.', ], defeat: [ - `Harrumph! I know your ability is greater than that!`, + 'Harrumph! I know your ability is greater than that!', ] }, [TrainerType.GRANT]: { @@ -1877,7 +1877,7 @@ export const trainerTypeDialogue = { $That by surpassing one another, we find a way to even greater heights.`, ], victory: [ - `You are a wall that I am unable to surmount!`, + 'You are a wall that I am unable to surmount!', ], defeat: [ `Do not give up. @@ -1887,24 +1887,24 @@ export const trainerTypeDialogue = { }, [TrainerType.KORRINA]: { encounter: [ - `Time for Lady Korrina's big appearance!`, + 'Time for Lady Korrina\'s big appearance!', ], victory: [ - `It's your very being that allows your Pokémon to evolve!`, + 'It\'s your very being that allows your Pokémon to evolve!', ], defeat: [ - `What an explosive battle!`, + 'What an explosive battle!', ] }, [TrainerType.CLEMONT]: { encounter: [ - `Oh! I'm glad that we got to meet!`, + 'Oh! I\'m glad that we got to meet!', ], victory: [ - `Your passion for battle inspires me!`, + 'Your passion for battle inspires me!', ], defeat: [ - `Looks like my Trainer-Grow-Stronger Machine, Mach 2 is really working!`, + 'Looks like my Trainer-Grow-Stronger Machine, Mach 2 is really working!', ] }, [TrainerType.VALERIE]: { @@ -1914,10 +1914,10 @@ export const trainerTypeDialogue = { $The elusive Fairy may appear frail as the breeze and delicate as a bloom, but it is strong.`, ], victory: [ - `I hope that you will find things worth smiling about tomorrow…`, + 'I hope that you will find things worth smiling about tomorrow…', ], defeat: [ - `Oh goodness, what a pity…`, + 'Oh goodness, what a pity…', ] }, [TrainerType.WULFRIC]: { @@ -1927,10 +1927,10 @@ export const trainerTypeDialogue = { $Who cares about the grandstanding? Let's get to battling!`, ], victory: [ - `Outstanding! I'm tough as an iceberg, but you smashed me through and through!`, + 'Outstanding! I\'m tough as an iceberg, but you smashed me through and through!', ], defeat: [ - `Tussle with me and this is what happens!`, + 'Tussle with me and this is what happens!', ] }, [TrainerType.KABU]: { @@ -1940,10 +1940,10 @@ export const trainerTypeDialogue = { $In the end, the match is decided by which side is able to unleash their true potential.`, ], victory: [ - `I'm glad I could battle you today!`, + 'I\'m glad I could battle you today!', ], defeat: [ - `That's a great way for me to feel my own growth!`, + 'That\'s a great way for me to feel my own growth!', ] }, [TrainerType.BEA]: { @@ -1952,43 +1952,43 @@ export const trainerTypeDialogue = { $I think I'll just test that out, shall I?`, ], victory: [ - `I felt the fighting spirit of your Pokémon as you led them in battle.`, + 'I felt the fighting spirit of your Pokémon as you led them in battle.', ], defeat: [ - `That was the best sort of match anyone could ever hope for.`, + 'That was the best sort of match anyone could ever hope for.', ] }, [TrainerType.OPAL]: { encounter: [ - `Let me have a look at how you and your partner Pokémon behave!`, + 'Let me have a look at how you and your partner Pokémon behave!', ], victory: [ - `Your pink is still lacking, but you're an excellent Trainer with excellent Pokémon.`, + 'Your pink is still lacking, but you\'re an excellent Trainer with excellent Pokémon.', ], defeat: [ - `Too bad for you, I guess.`, + 'Too bad for you, I guess.', ] }, [TrainerType.BEDE]: { encounter: [ - `I suppose I should prove beyond doubt just how pathetic you are and how strong I am.`, + 'I suppose I should prove beyond doubt just how pathetic you are and how strong I am.', ], victory: [ - `I see… Well, that's fine. I wasn't really trying all that hard anyway.`, + 'I see… Well, that\'s fine. I wasn\'t really trying all that hard anyway.', ], defeat: [ - `Not a bad job, I suppose.`, + 'Not a bad job, I suppose.', ] }, [TrainerType.GORDIE]: { encounter: [ - `So, let's get this over with.`, + 'So, let\'s get this over with.', ], victory: [ - `I just want to climb into a hole… Well, I guess it'd be more like falling from here.`, + 'I just want to climb into a hole… Well, I guess it\'d be more like falling from here.', ], defeat: [ - `Battle like you always do, victory will follow!`, + 'Battle like you always do, victory will follow!', ] }, [TrainerType.MARNIE]: { @@ -1997,15 +1997,15 @@ export const trainerTypeDialogue = { $So don't take it personal when I kick your butt!`, ], victory: [ - `OK, so I lost… But I got to see a lot of the good points of you and your Pokémon!`, + 'OK, so I lost… But I got to see a lot of the good points of you and your Pokémon!', ], defeat: [ - `Hope you enjoyed our battle tactics.`, + 'Hope you enjoyed our battle tactics.', ] }, [TrainerType.RAIHAN]: { encounter: [ - `I'm going to defeat the Champion, win the whole tournament, and prove to the world just how strong the great Raihan really is!`, + 'I\'m going to defeat the Champion, win the whole tournament, and prove to the world just how strong the great Raihan really is!', ], victory: [ `I look this good even when I lose. @@ -2013,18 +2013,18 @@ export const trainerTypeDialogue = { $Guess it's time for another selfie!`, ], defeat: [ - `Let's take a selfie to remember this.`, + 'Let\'s take a selfie to remember this.', ] }, [TrainerType.BRASSIUS]: { encounter: [ - `I assume you are ready? Let our collaborative work of art begin!`, + 'I assume you are ready? Let our collaborative work of art begin!', ], victory: [ - `Ahhh…vant-garde!`, + 'Ahhh…vant-garde!', ], defeat: [ - `I will begin on a new piece at once!`, + 'I will begin on a new piece at once!', ] }, [TrainerType.IONO]: { @@ -2035,43 +2035,43 @@ export const trainerTypeDialogue = { $I 'unno! Let's find out together!`, ], victory: [ - `You're as flashy and bright as a 10,000,000-volt Thunderbolt, friendo!`, + 'You\'re as flashy and bright as a 10,000,000-volt Thunderbolt, friendo!', ], defeat: [ - `Your eyeballs are MINE!`, + 'Your eyeballs are MINE!', ] }, [TrainerType.LARRY]: { encounter: [ - `When all's said and done, simplicity is strongest.`, + 'When all\'s said and done, simplicity is strongest.', ], victory: [ - `A serving of defeat, huh?`, + 'A serving of defeat, huh?', ], defeat: [ - `I'll call it a day.`, + 'I\'ll call it a day.', ] }, [TrainerType.RYME]: { encounter: [ - `Come on, baby! Rattle me down to the bone!`, + 'Come on, baby! Rattle me down to the bone!', ], victory: [ - `You're cool, my friend—you move my SOUL!`, + 'You\'re cool, my friend—you move my SOUL!', ], defeat: [ - `Later, baby!`, + 'Later, baby!', ] }, [TrainerType.GRUSHA]: { encounter: [ - `All I need to do is make sure the power of my Pokémon chills you to the bone!`, + 'All I need to do is make sure the power of my Pokémon chills you to the bone!', ], victory: [ - `Your burning passion… I kinda like it, to be honest.`, + 'Your burning passion… I kinda like it, to be honest.', ], defeat: [ - `Things didn't heat up for you.`, + 'Things didn\'t heat up for you.', ] }, [TrainerType.RIVAL]: [ @@ -2137,7 +2137,7 @@ export const trainerTypeDialogue = { $@c{smile_wave}Keep at it!` ], defeat: [ - `It's OK to lose sometimes…` + 'It\'s OK to lose sometimes…' ] } ], @@ -2152,7 +2152,7 @@ export const trainerTypeDialogue = { $@c{serious_mopen_fists}If so, prove it to me.` ], victory: [ - `@c{angry_mhalf}This is ridiculous… I've hardly stopped training…\nHow are we still so far apart?` + '@c{angry_mhalf}This is ridiculous… I\'ve hardly stopped training…\nHow are we still so far apart?' ] }, { @@ -2163,10 +2163,10 @@ export const trainerTypeDialogue = { $@c{smile}And when you do, I'll be there for you like always.\n@c{angry_mopen}Now, let me show you how strong I've become!` ], victory: [ - `@c{shock}After all that… it wasn't enough…?\nYou'll never come back at this rate…` + '@c{shock}After all that… it wasn\'t enough…?\nYou\'ll never come back at this rate…' ], defeat: [ - `You gave it your best, now let's go home.` + 'You gave it your best, now let\'s go home.' ] } ], @@ -2183,7 +2183,7 @@ export const trainerTypeDialogue = { $@c{serious_mopen_fists}Prepare yourself.` ], victory: [ - `@c{neutral}What…@d{64} What are you?` + '@c{neutral}What…@d{64} What are you?' ] }, { @@ -2198,33 +2198,33 @@ export const trainerTypeDialogue = { $@c{angry_mopen}Prepare yourself.` ], victory: [ - `@c{neutral}What…@d{64} What are you?` + '@c{neutral}What…@d{64} What are you?' ], defeat: [ - `$@c{smile}You should be proud of how far you made it.` + '$@c{smile}You should be proud of how far you made it.' ] } ], [TrainerType.RIVAL_5]: [ { encounter: [ - `@c{neutral}…` + '@c{neutral}…' ], victory: [ - `@c{neutral}…` + '@c{neutral}…' ] }, { encounter: [ - `@c{neutral}…` + '@c{neutral}…' ], victory: [ - `@c{neutral}…` + '@c{neutral}…' ] }, { defeat: [ - `$@c{smile_ehalf}…` + '$@c{smile_ehalf}…' ] } ], @@ -2288,7 +2288,7 @@ export const battleSpecDialogue = { $We begin.`, firstStageWin: `I see. The presence I felt was indeed real.\nIt appears I no longer need to hold back. $Do not disappoint me.`, - secondStageWin: `…Magnificent.` + secondStageWin: '…Magnificent.' } }; @@ -2309,7 +2309,7 @@ export const miscDialogue = { $@c{smile_wave}Anyway,@d{64} it's getting late…@d{96} I think?\nIt's hard to tell in this place. $Let's go home. @c{smile_wave_wink}Maybe tomorrow, we can have another battle, for old time's sake?` ] -} +}; export function getCharVariantFromDialogue(message: string): string { const variantMatch = /@c\{(.*?)\}/.exec(message); @@ -2320,17 +2320,17 @@ export function getCharVariantFromDialogue(message: string): string { export function initTrainerTypeDialogue(): void { const trainerTypes = Object.keys(trainerTypeDialogue).map(t => parseInt(t) as TrainerType); - for (let trainerType of trainerTypes) { + for (const trainerType of trainerTypes) { const messages = trainerTypeDialogue[trainerType]; - const messageTypes = [ 'encounter', 'victory', 'defeat' ]; - for (let messageType of messageTypes) { - if (Array.isArray(messages)) { - if (messages[0][messageType]) - trainerConfigs[trainerType][`${messageType}Messages`] = messages[0][messageType]; - if (messages.length > 1) - trainerConfigs[trainerType][`female${messageType.slice(0, 1).toUpperCase()}${messageType.slice(1)}Messages`] = messages[1][messageType]; - } else - trainerConfigs[trainerType][`${messageType}Messages`] = messages[messageType]; - } + const messageTypes = [ 'encounter', 'victory', 'defeat' ]; + for (const messageType of messageTypes) { + if (Array.isArray(messages)) { + if (messages[0][messageType]) + trainerConfigs[trainerType][`${messageType}Messages`] = messages[0][messageType]; + if (messages.length > 1) + trainerConfigs[trainerType][`female${messageType.slice(0, 1).toUpperCase()}${messageType.slice(1)}Messages`] = messages[1][messageType]; + } else + trainerConfigs[trainerType][`${messageType}Messages`] = messages[messageType]; + } } -} \ No newline at end of file +} diff --git a/src/data/egg-moves.ts b/src/data/egg-moves.ts index 49203026a3c..c0583c90361 100644 --- a/src/data/egg-moves.ts +++ b/src/data/egg-moves.ts @@ -1,7 +1,7 @@ -import { Moves } from "./enums/moves"; -import { Species } from "./enums/species"; -import { allMoves } from "./move"; -import * as Utils from "../utils"; +import { Moves } from './enums/moves'; +import { Species } from './enums/species'; +import { allMoves } from './move'; +import * as Utils from '../utils'; export const speciesEggMoves = { @@ -588,7 +588,7 @@ function parseEggMoves(content: string): void { const enumSpeciesName = cols[0].toUpperCase().replace(/[ -]/g, '_'); const species = speciesValues[speciesNames.findIndex(s => s === enumSpeciesName)]; - let eggMoves: Moves[] = []; + const eggMoves: Moves[] = []; for (let m = 0; m < 4; m++) { const moveName = cols[m + 1].trim(); @@ -606,9 +606,9 @@ function parseEggMoves(content: string): void { console.log(output); } -const eggMovesStr = ``; +const eggMovesStr = ''; if (eggMovesStr) { setTimeout(() => { parseEggMoves(eggMovesStr); }, 1000); -} \ No newline at end of file +} diff --git a/src/data/egg.ts b/src/data/egg.ts index 6437dfce262..1c5f75b143e 100644 --- a/src/data/egg.ts +++ b/src/data/egg.ts @@ -1,9 +1,9 @@ -import { Type } from "./type"; -import * as Utils from "../utils"; -import BattleScene from "../battle-scene"; -import { Species } from "./enums/species"; -import { getPokemonSpecies, speciesStarters } from "./pokemon-species"; -import { EggTier } from "./enums/egg-type"; +import { Type } from './type'; +import * as Utils from '../utils'; +import BattleScene from '../battle-scene'; +import { Species } from './enums/species'; +import { getPokemonSpecies, speciesStarters } from './pokemon-species'; +import { EggTier } from './enums/egg-type'; import i18next from '../plugins/i18n'; export const EGG_SEED = 1073741824; @@ -42,12 +42,12 @@ export class Egg { export function getEggTierDefaultHatchWaves(tier: EggTier): integer { switch (tier) { - case EggTier.COMMON: - return 10; - case EggTier.GREAT: - return 25; - case EggTier.ULTRA: - return 50; + case EggTier.COMMON: + return 10; + case EggTier.GREAT: + return 25; + case EggTier.ULTRA: + return 50; } return 100; } @@ -56,14 +56,14 @@ export function getEggDescriptor(egg: Egg): string { if (egg.isManaphyEgg()) return 'Manaphy'; switch (egg.tier) { - case EggTier.GREAT: - return i18next.t('egg:greatTier'); - case EggTier.ULTRA: - return i18next.t('egg:ultraTier'); - case EggTier.MASTER: - return i18next.t('egg:masterTier'); - default: - return i18next.t('egg:defaultTier'); + case EggTier.GREAT: + return i18next.t('egg:greatTier'); + case EggTier.ULTRA: + return i18next.t('egg:ultraTier'); + case EggTier.MASTER: + return i18next.t('egg:masterTier'); + default: + return i18next.t('egg:defaultTier'); } } @@ -79,12 +79,12 @@ export function getEggHatchWavesMessage(hatchWaves: integer): string { export function getEggGachaTypeDescriptor(scene: BattleScene, egg: Egg): string { switch (egg.gachaType) { - case GachaType.LEGENDARY: - return `${i18next.t('egg:gachaTypeLegendary')} (${getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(scene, egg.timestamp)).getName()})`; - case GachaType.MOVE: - return i18next.t('egg:gachaTypeMove'); - case GachaType.SHINY: - return i18next.t('egg:gachaTypeShiny'); + case GachaType.LEGENDARY: + return `${i18next.t('egg:gachaTypeLegendary')} (${getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(scene, egg.timestamp)).getName()})`; + case GachaType.MOVE: + return i18next.t('egg:gachaTypeMove'); + case GachaType.SHINY: + return i18next.t('egg:gachaTypeShiny'); } } @@ -101,11 +101,11 @@ export function getLegendaryGachaSpeciesForTimestamp(scene: BattleScene, timesta const dayDate = new Date(Date.UTC(timeDate.getUTCFullYear(), timeDate.getUTCMonth(), timeDate.getUTCDate())); const dayTimestamp = timeDate.getTime(); // Timestamp of current week const offset = Math.floor(Math.floor(dayTimestamp / 86400000) / legendarySpecies.length); // Cycle number - const index = Math.floor(dayTimestamp / 86400000) % legendarySpecies.length // Index within cycle + const index = Math.floor(dayTimestamp / 86400000) % legendarySpecies.length; // Index within cycle scene.executeWithSeedOffset(() => { ret = Phaser.Math.RND.shuffle(legendarySpecies)[index]; }, offset, EGG_SEED.toString()); return ret; -} \ No newline at end of file +} diff --git a/src/data/enums/arena-tag-type.ts b/src/data/enums/arena-tag-type.ts index 2ecac8b5677..3b222b53885 100644 --- a/src/data/enums/arena-tag-type.ts +++ b/src/data/enums/arena-tag-type.ts @@ -1,20 +1,20 @@ export enum ArenaTagType { - NONE = "NONE", - MUD_SPORT = "MUD_SPORT", - WATER_SPORT = "WATER_SPORT", - SPIKES = "SPIKES", - TOXIC_SPIKES = "TOXIC_SPIKES", - MIST = "MIST", - FUTURE_SIGHT = "FUTURE_SIGHT", - DOOM_DESIRE = "DOOM_DESIRE", - WISH = "WISH", - STEALTH_ROCK = "STEALTH_ROCK", - STICKY_WEB = "STICKY_WEB", - TRICK_ROOM = "TRICK_ROOM", - GRAVITY = "GRAVITY", - REFLECT = "REFLECT", - LIGHT_SCREEN = "LIGHT_SCREEN", - AURORA_VEIL = "AURORA_VEIL", - TAILWIND = "TAILWIND" + NONE = 'NONE', + MUD_SPORT = 'MUD_SPORT', + WATER_SPORT = 'WATER_SPORT', + SPIKES = 'SPIKES', + TOXIC_SPIKES = 'TOXIC_SPIKES', + MIST = 'MIST', + FUTURE_SIGHT = 'FUTURE_SIGHT', + DOOM_DESIRE = 'DOOM_DESIRE', + WISH = 'WISH', + STEALTH_ROCK = 'STEALTH_ROCK', + STICKY_WEB = 'STICKY_WEB', + TRICK_ROOM = 'TRICK_ROOM', + GRAVITY = 'GRAVITY', + REFLECT = 'REFLECT', + LIGHT_SCREEN = 'LIGHT_SCREEN', + AURORA_VEIL = 'AURORA_VEIL', + TAILWIND = 'TAILWIND' } diff --git a/src/data/enums/battler-tag-type.ts b/src/data/enums/battler-tag-type.ts index 9411d70a670..a9c5a6c1619 100644 --- a/src/data/enums/battler-tag-type.ts +++ b/src/data/enums/battler-tag-type.ts @@ -1,60 +1,60 @@ export enum BattlerTagType { - NONE = "NONE", - RECHARGING = "RECHARGING", - FLINCHED = "FLINCHED", - INTERRUPTED = "INTERRUPTED", - CONFUSED = "CONFUSED", - INFATUATED = "INFATUATED", - SEEDED = "SEEDED", - NIGHTMARE = "NIGHTMARE", - FRENZY = "FRENZY", - CHARGING = "CHARGING", - ENCORE = "ENCORE", - HELPING_HAND = "HELPING_HAND", - INGRAIN = "INGRAIN", - AQUA_RING = "AQUA_RING", - DROWSY = "DROWSY", - TRAPPED = "TRAPPED", - BIND = "BIND", - WRAP = "WRAP", - FIRE_SPIN = "FIRE_SPIN", - WHIRLPOOL = "WHIRLPOOL", - CLAMP = "CLAMP", - SAND_TOMB = "SAND_TOMB", - MAGMA_STORM = "MAGMA_STORM", - SNAP_TRAP = "SNAP_TRAP", - THUNDER_CAGE = "THUNDER_CAGE", - INFESTATION = "INFESTATION", - PROTECTED = "PROTECTED", - SPIKY_SHIELD = "SPIKY_SHIELD", - KINGS_SHIELD = "KINGS_SHIELD", - OBSTRUCT = "OBSTRUCT", - SILK_TRAP = "SILK_TRAP", - BANEFUL_BUNKER = "BANEFUL_BUNKER", - BURNING_BULWARK = "BURNING_BULWARK", - ENDURING = "ENDURING", - STURDY = "STURDY", - PERISH_SONG = "PERISH_SONG", - TRUANT = "TRUANT", - SLOW_START = "SLOW_START", - PROTOSYNTHESIS = "PROTOSYNTHESIS", - QUARK_DRIVE = "QUARK_DRIVE", - FLYING = "FLYING", - UNDERGROUND = "UNDERGROUND", - UNDERWATER = "UNDERWATER", - HIDDEN = "HIDDEN", - FIRE_BOOST = "FIRE_BOOST", - CRIT_BOOST = "CRIT_BOOST", - ALWAYS_CRIT = "ALWAYS_CRIT", - NO_CRIT = "NO_CRIT", - IGNORE_ACCURACY = "IGNORE_ACCURACY", - BYPASS_SLEEP = "BYPASS_SLEEP", - IGNORE_FLYING = "IGNORE_FLYING", - SALT_CURED = "SALT_CURED", - CURSED = "CURSED", - CHARGED = "CHARGED", - GROUNDED = "GROUNDED", - MAGNET_RISEN = "MAGNET_RISEN", - MINIMIZED = "MINIMIZED" + NONE = 'NONE', + RECHARGING = 'RECHARGING', + FLINCHED = 'FLINCHED', + INTERRUPTED = 'INTERRUPTED', + CONFUSED = 'CONFUSED', + INFATUATED = 'INFATUATED', + SEEDED = 'SEEDED', + NIGHTMARE = 'NIGHTMARE', + FRENZY = 'FRENZY', + CHARGING = 'CHARGING', + ENCORE = 'ENCORE', + HELPING_HAND = 'HELPING_HAND', + INGRAIN = 'INGRAIN', + AQUA_RING = 'AQUA_RING', + DROWSY = 'DROWSY', + TRAPPED = 'TRAPPED', + BIND = 'BIND', + WRAP = 'WRAP', + FIRE_SPIN = 'FIRE_SPIN', + WHIRLPOOL = 'WHIRLPOOL', + CLAMP = 'CLAMP', + SAND_TOMB = 'SAND_TOMB', + MAGMA_STORM = 'MAGMA_STORM', + SNAP_TRAP = 'SNAP_TRAP', + THUNDER_CAGE = 'THUNDER_CAGE', + INFESTATION = 'INFESTATION', + PROTECTED = 'PROTECTED', + SPIKY_SHIELD = 'SPIKY_SHIELD', + KINGS_SHIELD = 'KINGS_SHIELD', + OBSTRUCT = 'OBSTRUCT', + SILK_TRAP = 'SILK_TRAP', + BANEFUL_BUNKER = 'BANEFUL_BUNKER', + BURNING_BULWARK = 'BURNING_BULWARK', + ENDURING = 'ENDURING', + STURDY = 'STURDY', + PERISH_SONG = 'PERISH_SONG', + TRUANT = 'TRUANT', + SLOW_START = 'SLOW_START', + PROTOSYNTHESIS = 'PROTOSYNTHESIS', + QUARK_DRIVE = 'QUARK_DRIVE', + FLYING = 'FLYING', + UNDERGROUND = 'UNDERGROUND', + UNDERWATER = 'UNDERWATER', + HIDDEN = 'HIDDEN', + FIRE_BOOST = 'FIRE_BOOST', + CRIT_BOOST = 'CRIT_BOOST', + ALWAYS_CRIT = 'ALWAYS_CRIT', + NO_CRIT = 'NO_CRIT', + IGNORE_ACCURACY = 'IGNORE_ACCURACY', + BYPASS_SLEEP = 'BYPASS_SLEEP', + IGNORE_FLYING = 'IGNORE_FLYING', + SALT_CURED = 'SALT_CURED', + CURSED = 'CURSED', + CHARGED = 'CHARGED', + GROUNDED = 'GROUNDED', + MAGNET_RISEN = 'MAGNET_RISEN', + MINIMIZED = 'MINIMIZED' } diff --git a/src/data/enums/egg-type.ts b/src/data/enums/egg-type.ts index cd845a0d2cf..d8d0facb020 100644 --- a/src/data/enums/egg-type.ts +++ b/src/data/enums/egg-type.ts @@ -3,4 +3,4 @@ export enum EggTier { GREAT, ULTRA, MASTER -} \ No newline at end of file +} diff --git a/src/data/enums/moves.ts b/src/data/enums/moves.ts index 07b92b4f0c5..ee685e85fbe 100644 --- a/src/data/enums/moves.ts +++ b/src/data/enums/moves.ts @@ -1872,4 +1872,4 @@ export enum Moves { UPPER_HAND, /**{@link https://bulbapedia.bulbagarden.net/wiki/Malignant_Chain_(move) | Source} */ MALIGNANT_CHAIN, -}; \ No newline at end of file +} diff --git a/src/data/enums/species.ts b/src/data/enums/species.ts index dead4fcbd27..0299ee0ce5b 100644 --- a/src/data/enums/species.ts +++ b/src/data/enums/species.ts @@ -2163,7 +2163,7 @@ export enum Species { PALDEA_WOOPER = 8194, /**{@link https://bulbapedia.bulbagarden.net/wiki/Ursaluna_(Pokémon) | Source} */ BLOODMOON_URSALUNA = 8901, -}; +} export const defaultStarterSpecies: Species[] = [ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, @@ -2175,4 +2175,4 @@ export const defaultStarterSpecies: Species[] = [ Species.ROWLET, Species.LITTEN, Species.POPPLIO, Species.GROOKEY, Species.SCORBUNNY, Species.SOBBLE, Species.SPRIGATITO, Species.FUECOCO, Species.QUAXLY -]; \ No newline at end of file +]; diff --git a/src/data/exp.ts b/src/data/exp.ts index 4a0fd2879c2..415b4607284 100644 --- a/src/data/exp.ts +++ b/src/data/exp.ts @@ -5,7 +5,7 @@ export enum GrowthRate { MEDIUM_SLOW, SLOW, FLUCTUATING -}; +} const expLevels = [ [ 0, 15, 52, 122, 237, 406, 637, 942, 1326, 1800, 2369, 3041, 3822, 4719, 5737, 6881, 8155, 9564, 11111, 12800, 14632, 16610, 18737, 21012, 23437, 26012, 28737, 31610, 34632, 37800, 41111, 44564, 48155, 51881, 55737, 59719, 63822, 68041, 72369, 76800, 81326, 85942, 90637, 95406, 100237, 105122, 110052, 115015, 120001, 125000, 131324, 137795, 144410, 151165, 158056, 165079, 172229, 179503, 186894, 194400, 202013, 209728, 217540, 225443, 233431, 241496, 249633, 257834, 267406, 276458, 286328, 296358, 305767, 316074, 326531, 336255, 346965, 357812, 367807, 378880, 390077, 400293, 411686, 423190, 433572, 445239, 457001, 467489, 479378, 491346, 501878, 513934, 526049, 536557, 548720, 560922, 571333, 583539, 591882, 600000 ], @@ -27,24 +27,24 @@ export function getLevelTotalExp(level: integer, growthRate: GrowthRate): intege let ret: integer; switch (growthRate) { - case GrowthRate.ERRATIC: - ret = (Math.pow(level, 4) + (Math.pow(level, 3) * 2000)) / 3500; - break; - case GrowthRate.FAST: - ret = Math.pow(level, 3) * 4 / 5; - break; - case GrowthRate.MEDIUM_FAST: - ret = Math.pow(level, 3); - break; - case GrowthRate.MEDIUM_SLOW: - ret = (Math.pow(level, 3) * 6 / 5) - (15 * Math.pow(level, 2)) + (100 * level) - 140; - break; - case GrowthRate.SLOW: - ret = Math.pow(level, 3) * 5 / 4; - break; - case GrowthRate.FLUCTUATING: - ret = (Math.pow(level, 3) * ((level / 2) + 8)) * 4 / (100 + level); - break; + case GrowthRate.ERRATIC: + ret = (Math.pow(level, 4) + (Math.pow(level, 3) * 2000)) / 3500; + break; + case GrowthRate.FAST: + ret = Math.pow(level, 3) * 4 / 5; + break; + case GrowthRate.MEDIUM_FAST: + ret = Math.pow(level, 3); + break; + case GrowthRate.MEDIUM_SLOW: + ret = (Math.pow(level, 3) * 6 / 5) - (15 * Math.pow(level, 2)) + (100 * level) - 140; + break; + case GrowthRate.SLOW: + ret = Math.pow(level, 3) * 5 / 4; + break; + case GrowthRate.FLUCTUATING: + ret = (Math.pow(level, 3) * ((level / 2) + 8)) * 4 / (100 + level); + break; } if (growthRate !== GrowthRate.MEDIUM_FAST) @@ -59,17 +59,17 @@ export function getLevelRelExp(level: integer, growthRate: GrowthRate): number { export function getGrowthRateColor(growthRate: GrowthRate, shadow?: boolean) { switch (growthRate) { - case GrowthRate.ERRATIC: - return !shadow ? '#f85888' : '#906060'; - case GrowthRate.FAST: - return !shadow ? '#f8d030' : '#b8a038'; - case GrowthRate.MEDIUM_FAST: - return !shadow ? '#78c850' : '#588040'; - case GrowthRate.MEDIUM_SLOW: - return !shadow ? '#6890f0' : '#807870'; - case GrowthRate.SLOW: - return !shadow ? '#f08030' : '#c03028'; - case GrowthRate.FLUCTUATING: - return !shadow ? '#a040a0' : '#483850'; + case GrowthRate.ERRATIC: + return !shadow ? '#f85888' : '#906060'; + case GrowthRate.FAST: + return !shadow ? '#f8d030' : '#b8a038'; + case GrowthRate.MEDIUM_FAST: + return !shadow ? '#78c850' : '#588040'; + case GrowthRate.MEDIUM_SLOW: + return !shadow ? '#6890f0' : '#807870'; + case GrowthRate.SLOW: + return !shadow ? '#f08030' : '#c03028'; + case GrowthRate.FLUCTUATING: + return !shadow ? '#a040a0' : '#483850'; } -} \ No newline at end of file +} diff --git a/src/data/gender.ts b/src/data/gender.ts index b859a9daa42..27a13f1dabe 100644 --- a/src/data/gender.ts +++ b/src/data/gender.ts @@ -5,21 +5,21 @@ export enum Gender { } export function getGenderSymbol(gender: Gender) { - switch (gender) { - case Gender.MALE: - return '♂'; - case Gender.FEMALE: - return '♀'; - } - return ''; + switch (gender) { + case Gender.MALE: + return '♂'; + case Gender.FEMALE: + return '♀'; + } + return ''; } export function getGenderColor(gender: Gender, shadow?: boolean) { - switch (gender) { - case Gender.MALE: - return shadow ? '#006090' : '#40c8f8'; - case Gender.FEMALE: - return shadow ? '#984038' : '#f89890'; - } - return '#ffffff'; -} \ No newline at end of file + switch (gender) { + case Gender.MALE: + return shadow ? '#006090' : '#40c8f8'; + case Gender.FEMALE: + return shadow ? '#984038' : '#f89890'; + } + return '#ffffff'; +} diff --git a/src/data/move.ts b/src/data/move.ts index 2d27afcbe47..83bc946bd0a 100644 --- a/src/data/move.ts +++ b/src/data/move.ts @@ -1,29 +1,29 @@ -import { Moves } from "./enums/moves"; -import { ChargeAnim, MoveChargeAnim, initMoveAnim, loadMoveAnimAssets } from "./battle-anims"; -import { BattleEndPhase, MoveEffectPhase, MovePhase, NewBattlePhase, PartyStatusCurePhase, PokemonHealPhase, StatChangePhase, SwitchSummonPhase, ToggleDoublePositionPhase } from "../phases"; -import { BattleStat, getBattleStatName } from "./battle-stat"; -import { EncoreTag } from "./battler-tags"; -import { BattlerTagType } from "./enums/battler-tag-type"; -import { getPokemonMessage } from "../messages"; -import Pokemon, { AttackMoveResult, EnemyPokemon, HitResult, MoveResult, PlayerPokemon, PokemonMove, TurnMove } from "../field/pokemon"; -import { StatusEffect, getStatusEffectHealText } from "./status-effect"; -import { Type } from "./type"; -import * as Utils from "../utils"; -import { WeatherType } from "./weather"; -import { ArenaTagSide, ArenaTrapTag } from "./arena-tag"; -import { ArenaTagType } from "./enums/arena-tag-type"; -import { UnswappableAbilityAbAttr, UncopiableAbilityAbAttr, UnsuppressableAbilityAbAttr, NoTransformAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr, applyPostDefendAbAttrs, PostDefendContactApplyStatusEffectAbAttr, MoveAbilityBypassAbAttr, ReverseDrainAbAttr, FieldPreventExplosiveMovesAbAttr, ForceSwitchOutImmunityAbAttr, PreventBerryUseAbAttr, BlockItemTheftAbAttr } from "./ability"; -import { Abilities } from "./enums/abilities"; +import { Moves } from './enums/moves'; +import { ChargeAnim, MoveChargeAnim, initMoveAnim, loadMoveAnimAssets } from './battle-anims'; +import { BattleEndPhase, MoveEffectPhase, MovePhase, NewBattlePhase, PartyStatusCurePhase, PokemonHealPhase, StatChangePhase, SwitchSummonPhase, ToggleDoublePositionPhase } from '../phases'; +import { BattleStat, getBattleStatName } from './battle-stat'; +import { EncoreTag } from './battler-tags'; +import { BattlerTagType } from './enums/battler-tag-type'; +import { getPokemonMessage } from '../messages'; +import Pokemon, { AttackMoveResult, EnemyPokemon, HitResult, MoveResult, PlayerPokemon, PokemonMove, TurnMove } from '../field/pokemon'; +import { StatusEffect, getStatusEffectHealText } from './status-effect'; +import { Type } from './type'; +import * as Utils from '../utils'; +import { WeatherType } from './weather'; +import { ArenaTagSide, ArenaTrapTag } from './arena-tag'; +import { ArenaTagType } from './enums/arena-tag-type'; +import { UnswappableAbilityAbAttr, UncopiableAbilityAbAttr, UnsuppressableAbilityAbAttr, NoTransformAbilityAbAttr, BlockRecoilDamageAttr, BlockOneHitKOAbAttr, IgnoreContactAbAttr, MaxMultiHitAbAttr, applyAbAttrs, BlockNonDirectDamageAbAttr, applyPreSwitchOutAbAttrs, PreSwitchOutAbAttr, applyPostDefendAbAttrs, PostDefendContactApplyStatusEffectAbAttr, MoveAbilityBypassAbAttr, ReverseDrainAbAttr, FieldPreventExplosiveMovesAbAttr, ForceSwitchOutImmunityAbAttr, PreventBerryUseAbAttr, BlockItemTheftAbAttr } from './ability'; +import { Abilities } from './enums/abilities'; import { allAbilities } from './ability'; -import { PokemonHeldItemModifier, BerryModifier, PreserveBerryModifier } from "../modifier/modifier"; -import { BattlerIndex } from "../battle"; -import { Stat } from "./pokemon-stat"; -import { TerrainType } from "./terrain"; -import { SpeciesFormChangeActiveTrigger } from "./pokemon-forms"; -import { Species } from "./enums/species"; -import { ModifierPoolType } from "#app/modifier/modifier-type"; -import { Command } from "../ui/command-ui-handler"; -import { Biome } from "./enums/biome"; +import { PokemonHeldItemModifier, BerryModifier, PreserveBerryModifier } from '../modifier/modifier'; +import { BattlerIndex } from '../battle'; +import { Stat } from './pokemon-stat'; +import { TerrainType } from './terrain'; +import { SpeciesFormChangeActiveTrigger } from './pokemon-forms'; +import { Species } from './enums/species'; +import { ModifierPoolType } from '#app/modifier/modifier-type'; +import { Command } from '../ui/command-ui-handler'; +import { Biome } from './enums/biome'; import i18next, { Localizable } from '../plugins/i18n'; import { BerryType, BerryEffectFunc, getBerryEffectFunc } from './berry'; @@ -186,26 +186,26 @@ export default class Move implements Localizable { isMultiTarget(): boolean { switch (this.moveTarget) { - case MoveTarget.ALL_OTHERS: - case MoveTarget.ALL_NEAR_OTHERS: - case MoveTarget.ALL_NEAR_ENEMIES: - case MoveTarget.ALL_ENEMIES: - case MoveTarget.USER_AND_ALLIES: - case MoveTarget.ALL: - case MoveTarget.USER_SIDE: - case MoveTarget.ENEMY_SIDE: - case MoveTarget.BOTH_SIDES: - return true; + case MoveTarget.ALL_OTHERS: + case MoveTarget.ALL_NEAR_OTHERS: + case MoveTarget.ALL_NEAR_ENEMIES: + case MoveTarget.ALL_ENEMIES: + case MoveTarget.USER_AND_ALLIES: + case MoveTarget.ALL: + case MoveTarget.USER_SIDE: + case MoveTarget.ENEMY_SIDE: + case MoveTarget.BOTH_SIDES: + return true; } return false; } isTypeImmune(type: Type): boolean { switch (type) { - case Type.GRASS: - if (this.hasFlag(MoveFlags.POWDER_MOVE)) - return true; - break; + case Type.GRASS: + if (this.hasFlag(MoveFlags.POWDER_MOVE)) + return true; + break; } return false; } @@ -328,24 +328,24 @@ export default class Move implements Localizable { checkFlag(flag: MoveFlags, user: Pokemon, target: Pokemon): boolean { switch (flag) { - case MoveFlags.MAKES_CONTACT: - if (user.hasAbilityWithAttr(IgnoreContactAbAttr)) - return false; - break; - case MoveFlags.IGNORE_ABILITIES: - if (user.hasAbilityWithAttr(MoveAbilityBypassAbAttr)) { - const abilityEffectsIgnored = new Utils.BooleanHolder(false); - applyAbAttrs(MoveAbilityBypassAbAttr, user, abilityEffectsIgnored, this); - if (abilityEffectsIgnored.value) - return true; - } + case MoveFlags.MAKES_CONTACT: + if (user.hasAbilityWithAttr(IgnoreContactAbAttr)) + return false; + break; + case MoveFlags.IGNORE_ABILITIES: + if (user.hasAbilityWithAttr(MoveAbilityBypassAbAttr)) { + const abilityEffectsIgnored = new Utils.BooleanHolder(false); + applyAbAttrs(MoveAbilityBypassAbAttr, user, abilityEffectsIgnored, this); + if (abilityEffectsIgnored.value) + return true; + } } return !!(this.flags & flag); } applyConditions(user: Pokemon, target: Pokemon, move: Move): boolean { - for (let condition of this.conditions) { + for (const condition of this.conditions) { if (!condition.apply(user, target, move)) return false; } @@ -354,8 +354,8 @@ export default class Move implements Localizable { } getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null { - for (let attr of this.attrs) { - let failedText = attr.getFailedText(user, target, move, cancelled); + for (const attr of this.attrs) { + const failedText = attr.getFailedText(user, target, move, cancelled); if (failedText !== null) return failedText; } @@ -365,10 +365,10 @@ export default class Move implements Localizable { getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { let score = 0; - for (let attr of this.attrs) + for (const attr of this.attrs) score += attr.getUserBenefitScore(user, target, move); - for (let condition of this.conditions) + for (const condition of this.conditions) score += condition.getUserBenefitScore(user, target, move); return score; @@ -377,7 +377,7 @@ export default class Move implements Localizable { getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { let score = 0; - for (let attr of this.attrs) + for (const attr of this.attrs) score += attr.getTargetBenefitScore(user, !attr.selfTarget ? target : user, move) * (target !== user && attr.selfTarget ? -1 : 1); return score; @@ -793,7 +793,7 @@ export class RecoilAttr extends MoveEffectAttr { user.damageAndUpdate(recoilDamage, HitResult.OTHER, false, true, true); user.scene.queueMessage(getPokemonMessage(user, ' is hit\nwith recoil!')); - user.turnData.damageTaken += recoilDamage; + user.turnData.damageTaken += recoilDamage; return true; } @@ -954,7 +954,7 @@ export class HealAttr extends MoveEffectAttr { } getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { - let score = ((1 - (this.selfTarget ? user : target).getHpRatio()) * 20) - this.healRatio * 10; + const score = ((1 - (this.selfTarget ? user : target).getHpRatio()) * 20) - this.healRatio * 10; return Math.round(score / (1 - this.healRatio / 2)); } } @@ -1068,17 +1068,17 @@ export abstract class WeatherHealAttr extends HealAttr { export class PlantHealAttr extends WeatherHealAttr { getWeatherHealRatio(weatherType: WeatherType): number { switch (weatherType) { - case WeatherType.SUNNY: - case WeatherType.HARSH_SUN: - return 2 / 3; - case WeatherType.RAIN: - case WeatherType.SANDSTORM: - case WeatherType.HAIL: - case WeatherType.SNOW: - case WeatherType.HEAVY_RAIN: - return 0.25; - default: - return 0.5; + case WeatherType.SUNNY: + case WeatherType.HARSH_SUN: + return 2 / 3; + case WeatherType.RAIN: + case WeatherType.SANDSTORM: + case WeatherType.HAIL: + case WeatherType.SNOW: + case WeatherType.HEAVY_RAIN: + return 0.25; + default: + return 0.5; } } } @@ -1086,10 +1086,10 @@ export class PlantHealAttr extends WeatherHealAttr { export class SandHealAttr extends WeatherHealAttr { getWeatherHealRatio(weatherType: WeatherType): number { switch (weatherType) { - case WeatherType.SANDSTORM: - return 2 / 3; - default: - return 0.5; + case WeatherType.SANDSTORM: + return 2 / 3; + default: + return 0.5; } } } @@ -1143,7 +1143,7 @@ export class HitHealAttr extends MoveEffectAttr { const reverseDrain = user.hasAbilityWithAttr(ReverseDrainAbAttr); user.scene.unshiftPhase(new PokemonHealPhase(user.scene, user.getBattlerIndex(), !reverseDrain ? healAmount : healAmount * -1, - !reverseDrain ? getPokemonMessage(target, ` had its\nenergy drained!`) : undefined, + !reverseDrain ? getPokemonMessage(target, ' had its\nenergy drained!') : undefined, false, true)); if (reverseDrain) user.turnData.damageTaken += healAmount; return true; @@ -1164,7 +1164,7 @@ export class StrengthSapHealAttr extends MoveEffectAttr { const reverseDrain = user.hasAbilityWithAttr(ReverseDrainAbAttr); user.scene.unshiftPhase(new PokemonHealPhase(user.scene, user.getBattlerIndex(), !reverseDrain ? healAmount : healAmount * -1, - !reverseDrain ? getPokemonMessage(user, ` regained\nhealth!`) : undefined, + !reverseDrain ? getPokemonMessage(user, ' regained\nhealth!') : undefined, false, true)); return true; } @@ -1217,66 +1217,66 @@ export class MultiHitAttr extends MoveAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { let hitTimes: integer; - const hitType = new Utils.IntegerHolder(this.multiHitType) - applyMoveAttrs(ChangeMultiHitTypeAttr, user, target, move, hitType) + const hitType = new Utils.IntegerHolder(this.multiHitType); + applyMoveAttrs(ChangeMultiHitTypeAttr, user, target, move, hitType); switch (hitType.value) { - case MultiHitType._2_TO_5: - { - const rand = user.randSeedInt(16); - const hitValue = new Utils.IntegerHolder(rand); - applyAbAttrs(MaxMultiHitAbAttr, user, null, hitValue); - if (hitValue.value >= 10) - hitTimes = 2; - else if (hitValue.value >= 4) - hitTimes = 3; - else if (hitValue.value >= 2) - hitTimes = 4; - else - hitTimes = 5; - } - break; - case MultiHitType._2: - hitTimes = 2; - break; - case MultiHitType._3: - hitTimes = 3; - break; - case MultiHitType._3_INCR: - hitTimes = 3; - // TODO: Add power increase for every hit - break; - case MultiHitType._1_TO_10: - { - const rand = user.randSeedInt(90); - const hitValue = new Utils.IntegerHolder(rand); - applyAbAttrs(MaxMultiHitAbAttr, user, null, hitValue); - if (hitValue.value >= 81) - hitTimes = 1; - else if (hitValue.value >= 73) - hitTimes = 2; - else if (hitValue.value >= 66) - hitTimes = 3; - else if (hitValue.value >= 60) - hitTimes = 4; - else if (hitValue.value >= 54) - hitTimes = 5; - else if (hitValue.value >= 49) - hitTimes = 6; - else if (hitValue.value >= 44) - hitTimes = 7; - else if (hitValue.value >= 40) - hitTimes = 8; - else if (hitValue.value >= 36) - hitTimes = 9; - else - hitTimes = 10; - } - break; - case MultiHitType.BEAT_UP: - // No status means the ally pokemon can contribute to Beat Up - hitTimes = user.scene.getParty().reduce((total, pokemon) => { - return total + (pokemon.id === user.id ? 1 : pokemon?.status && pokemon.status.effect !== StatusEffect.NONE ? 0 : 1) - }, 0); + case MultiHitType._2_TO_5: + { + const rand = user.randSeedInt(16); + const hitValue = new Utils.IntegerHolder(rand); + applyAbAttrs(MaxMultiHitAbAttr, user, null, hitValue); + if (hitValue.value >= 10) + hitTimes = 2; + else if (hitValue.value >= 4) + hitTimes = 3; + else if (hitValue.value >= 2) + hitTimes = 4; + else + hitTimes = 5; + } + break; + case MultiHitType._2: + hitTimes = 2; + break; + case MultiHitType._3: + hitTimes = 3; + break; + case MultiHitType._3_INCR: + hitTimes = 3; + // TODO: Add power increase for every hit + break; + case MultiHitType._1_TO_10: + { + const rand = user.randSeedInt(90); + const hitValue = new Utils.IntegerHolder(rand); + applyAbAttrs(MaxMultiHitAbAttr, user, null, hitValue); + if (hitValue.value >= 81) + hitTimes = 1; + else if (hitValue.value >= 73) + hitTimes = 2; + else if (hitValue.value >= 66) + hitTimes = 3; + else if (hitValue.value >= 60) + hitTimes = 4; + else if (hitValue.value >= 54) + hitTimes = 5; + else if (hitValue.value >= 49) + hitTimes = 6; + else if (hitValue.value >= 44) + hitTimes = 7; + else if (hitValue.value >= 40) + hitTimes = 8; + else if (hitValue.value >= 36) + hitTimes = 9; + else + hitTimes = 10; + } + break; + case MultiHitType.BEAT_UP: + // No status means the ally pokemon can contribute to Beat Up + hitTimes = user.scene.getParty().reduce((total, pokemon) => { + return total + (pokemon.id === user.id ? 1 : pokemon?.status && pokemon.status.effect !== StatusEffect.NONE ? 0 : 1); + }, 0); } (args[0] as Utils.IntegerHolder).value = hitTimes; return true; @@ -1297,7 +1297,7 @@ export class ChangeMultiHitTypeAttr extends MoveAttr { export class WaterShurikenMultiHitTypeAttr extends ChangeMultiHitTypeAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (user.species.speciesId == Species.GRENINJA && user.hasAbility(Abilities.BATTLE_BOND) && user.formIndex == 2) { - (args[0] as Utils.IntegerHolder).value = MultiHitType._3 + (args[0] as Utils.IntegerHolder).value = MultiHitType._3; return true; } return false; @@ -1369,7 +1369,7 @@ export class PsychoShiftEffectAttr extends MoveEffectAttr { return false; } if (!target.status || (target.status.effect === statusToApply && move.chance < 0)) { - var statusAfflictResult = target.trySetStatus(statusToApply, true, user); + const statusAfflictResult = target.trySetStatus(statusToApply, true, user); if (statusAfflictResult) { user.scene.queueMessage(getPokemonMessage(user, getStatusEffectHealText(user.status.effect))); user.resetStatus(); @@ -1489,7 +1489,7 @@ export class EatBerryAttr extends MoveEffectAttr { super(true, MoveEffectTrigger.HIT); this.chosenBerry = undefined; } -/** + /** * Causes the target to eat a berry. * @param user {@linkcode Pokemon} Pokemon that used the move * @param target {@linkcode Pokemon} Pokemon that will eat a berry @@ -1517,7 +1517,7 @@ export class EatBerryAttr extends MoveEffectAttr { if (!--this.chosenBerry.stackCount) target.scene.removeModifier(this.chosenBerry, !target.isPlayer()); target.scene.updateModifiers(target.isPlayer()); -} + } this.chosenBerry = undefined; return true; @@ -1537,7 +1537,7 @@ export class StealEatBerryAttr extends EatBerryAttr { constructor() { super(); } -/** + /** * User steals a random berry from the target and then eats it. * @param {Pokemon} user Pokemon that used the move and will eat the stolen berry * @param {Pokemon} target Pokemon that will have its berry stolen @@ -1718,7 +1718,7 @@ export class OneHitKOAttr extends MoveAttr { const cancelled = new Utils.BooleanHolder(false); applyAbAttrs(BlockOneHitKOAbAttr, target, cancelled); return !cancelled.value && user.level >= target.level; - } + }; } } @@ -1901,8 +1901,8 @@ export class StatChangeAttr extends MoveEffectAttr { getTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { let ret = 0; - let moveLevels = this.getLevels(user); - for (let stat of this.stats) { + const moveLevels = this.getLevels(user); + for (const stat of this.stats) { let levels = moveLevels; if (levels > 0) levels = Math.min(target.summonData.battleStats[stat] + levels, 6) - target.summonData.battleStats[stat]; @@ -1910,22 +1910,22 @@ export class StatChangeAttr extends MoveEffectAttr { levels = Math.max(target.summonData.battleStats[stat] + levels, -6) - target.summonData.battleStats[stat]; let noEffect = false; switch (stat) { - case BattleStat.ATK: - if (this.selfTarget) - noEffect = !user.getMoveset().find(m => m instanceof AttackMove && m.category === MoveCategory.PHYSICAL); - break; - case BattleStat.DEF: - if (!this.selfTarget) - noEffect = !user.getMoveset().find(m => m instanceof AttackMove && m.category === MoveCategory.PHYSICAL); - break; - case BattleStat.SPATK: - if (this.selfTarget) - noEffect = !user.getMoveset().find(m => m instanceof AttackMove && m.category === MoveCategory.SPECIAL); - break; - case BattleStat.SPDEF: - if (!this.selfTarget) - noEffect = !user.getMoveset().find(m => m instanceof AttackMove && m.category === MoveCategory.SPECIAL); - break; + case BattleStat.ATK: + if (this.selfTarget) + noEffect = !user.getMoveset().find(m => m instanceof AttackMove && m.category === MoveCategory.PHYSICAL); + break; + case BattleStat.DEF: + if (!this.selfTarget) + noEffect = !user.getMoveset().find(m => m instanceof AttackMove && m.category === MoveCategory.PHYSICAL); + break; + case BattleStat.SPATK: + if (this.selfTarget) + noEffect = !user.getMoveset().find(m => m instanceof AttackMove && m.category === MoveCategory.SPECIAL); + break; + case BattleStat.SPDEF: + if (!this.selfTarget) + noEffect = !user.getMoveset().find(m => m instanceof AttackMove && m.category === MoveCategory.SPECIAL); + break; } if (noEffect) continue; @@ -1967,7 +1967,7 @@ export class AcupressureStatChangeAttr extends MoveEffectAttr { let randStats = [ BattleStat.ATK, BattleStat.DEF, BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD, BattleStat.ACC, BattleStat.EVA ]; randStats = randStats.filter(s => target.summonData.battleStats[s] < 6); if (randStats.length > 0) { - let boostStat = [randStats[Utils.randInt(randStats.length)]]; + const boostStat = [randStats[Utils.randInt(randStats.length)]]; user.scene.unshiftPhase(new StatChangePhase(user.scene, target.getBattlerIndex(), this.selfTarget, boostStat, 2)); return true; } @@ -2055,7 +2055,7 @@ export class CopyStatsAttr extends MoveEffectAttr { target.updateInfo(); user.updateInfo(); - target.scene.queueMessage(getPokemonMessage(user, ' copied\n') + getPokemonMessage(target, `'s stat changes!`)); + target.scene.queueMessage(getPokemonMessage(user, ' copied\n') + getPokemonMessage(target, '\'s stat changes!')); return true; } @@ -2071,7 +2071,7 @@ export class InvertStatsAttr extends MoveEffectAttr { target.updateInfo(); user.updateInfo(); - target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere all reversed!`)); + target.scene.queueMessage(getPokemonMessage(target, '\'s stat changes\nwere all reversed!')); return true; } @@ -2087,7 +2087,7 @@ export class ResetStatsAttr extends MoveEffectAttr { target.updateInfo(); user.updateInfo(); - target.scene.queueMessage(getPokemonMessage(target, `'s stat changes\nwere eliminated!`)); + target.scene.queueMessage(getPokemonMessage(target, '\'s stat changes\nwere eliminated!')); return true; } @@ -2098,7 +2098,7 @@ export class ResetStatsAttr extends MoveEffectAttr { */ export class SwapStatsAttr extends MoveEffectAttr { - /** + /** * Swaps the user and the target's stat changes. * @param user Pokemon that used the move * @param target The target of the move @@ -2106,22 +2106,22 @@ export class SwapStatsAttr extends MoveEffectAttr * @param args N/A * @returns true if the function succeeds */ - apply(user: Pokemon, target: Pokemon, move: Move, args: any []): boolean + apply(user: Pokemon, target: Pokemon, move: Move, args: any []): boolean + { + if (!super.apply(user, target, move, args)) + return false; //Exits if the move can't apply + let priorBoost : integer; //For storing a stat boost + for (let s = 0; s < target.summonData.battleStats.length; s++) { - if (!super.apply(user, target, move, args)) - return false; //Exits if the move can't apply - let priorBoost : integer; //For storing a stat boost - for (let s = 0; s < target.summonData.battleStats.length; s++) - { - priorBoost = user.summonData.battleStats[s]; //Store user stat boost - user.summonData.battleStats[s] = target.summonData.battleStats[s]; //Applies target boost to self - target.summonData.battleStats[s] = priorBoost; //Applies stored boost to target - } - target.updateInfo(); - user.updateInfo(); - target.scene.queueMessage(getPokemonMessage(user, ' switched stat changes with the target!')); - return true; + priorBoost = user.summonData.battleStats[s]; //Store user stat boost + user.summonData.battleStats[s] = target.summonData.battleStats[s]; //Applies target boost to self + target.summonData.battleStats[s] = priorBoost; //Applies stored boost to target } + target.updateInfo(); + user.updateInfo(); + target.scene.queueMessage(getPokemonMessage(user, ' switched stat changes with the target!')); + return true; + } } export class HpSplitAttr extends MoveEffectAttr { @@ -2178,7 +2178,7 @@ export class LessPPMorePowerAttr extends VariablePowerAttr { */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const ppMax = move.pp; - let ppUsed = user.moveset.find((m) => m.moveId === move.id).ppUsed; + const ppUsed = user.moveset.find((m) => m.moveId === move.id).ppUsed; let ppRemains = ppMax - ppUsed; /** Reduce to 0 to avoid negative numbers if user has 1PP before attack and target has Ability.PRESSURE */ @@ -2187,21 +2187,21 @@ export class LessPPMorePowerAttr extends VariablePowerAttr { const power = args[0] as Utils.NumberHolder; switch (ppRemains) { - case 0: - power.value = 200; - break; - case 1: - power.value = 80; - break; - case 2: - power.value = 60; - break; - case 3: - power.value = 50; - break; - default: - power.value = 40; - break; + case 0: + power.value = 200; + break; + case 1: + power.value = 80; + break; + case 2: + power.value = 60; + break; + case 3: + power.value = 50; + break; + default: + power.value = 40; + break; } return true; } @@ -2243,7 +2243,7 @@ const beatUpFunc = (user: Pokemon, allyIndex: number): number => { } return (pokemon.species.getBaseStat(Stat.ATK) / 10) + 5; } -} +}; export class BeatUpAttr extends VariablePowerAttr { @@ -2266,7 +2266,7 @@ export class BeatUpAttr extends VariablePowerAttr { const doublePowerChanceMessageFunc = (user: Pokemon, target: Pokemon, move: Move) => { let message: string = null; user.scene.executeWithSeedOffset(() => { - let rand = Utils.randSeedInt(100); + const rand = Utils.randSeedInt(100); if (rand < move.chance) message = getPokemonMessage(user, ' is going all out for this attack!'); }, user.scene.currentBattle.turn << 6, user.scene.waveSeed); @@ -2411,24 +2411,24 @@ export class LowHpPowerAttr extends VariablePowerAttr { const hpRatio = user.getHpRatio(); switch (true) { - case (hpRatio < 0.0417): - power.value = 200; - break; - case (hpRatio < 0.1042): - power.value = 150; - break; - case (hpRatio < 0.2083): - power.value = 100; - break; - case (hpRatio < 0.3542): - power.value = 80; - break; - case (hpRatio < 0.6875): - power.value = 40; - break; - default: - power.value = 20; - break; + case (hpRatio < 0.0417): + power.value = 200; + break; + case (hpRatio < 0.1042): + power.value = 150; + break; + case (hpRatio < 0.2083): + power.value = 100; + break; + case (hpRatio < 0.3542): + power.value = 80; + break; + case (hpRatio < 0.6875): + power.value = 40; + break; + default: + power.value = 20; + break; } return true; @@ -2447,21 +2447,21 @@ export class CompareWeightPowerAttr extends VariablePowerAttr { const relativeWeight = (targetWeight / userWeight) * 100; switch (true) { - case (relativeWeight < 20.01): - power.value = 120; - break; - case (relativeWeight < 25.01): - power.value = 100; - break; - case (relativeWeight < 33.35): - power.value = 80; - break; - case (relativeWeight < 50.01): - power.value = 60; - break; - default: - power.value = 40; - break; + case (relativeWeight < 20.01): + power.value = 120; + break; + case (relativeWeight < 25.01): + power.value = 100; + break; + case (relativeWeight < 33.35): + power.value = 80; + break; + case (relativeWeight < 50.01): + power.value = 60; + break; + default: + power.value = 40; + break; } return true; @@ -2555,13 +2555,13 @@ export class AntiSunlightPowerDecreaseAttr extends VariablePowerAttr { const power = args[0] as Utils.NumberHolder; const weatherType = user.scene.arena.weather?.weatherType || WeatherType.NONE; switch (weatherType) { - case WeatherType.RAIN: - case WeatherType.SANDSTORM: - case WeatherType.HAIL: - case WeatherType.SNOW: - case WeatherType.HEAVY_RAIN: - power.value *= 0.5; - return true; + case WeatherType.RAIN: + case WeatherType.SANDSTORM: + case WeatherType.HAIL: + case WeatherType.SNOW: + case WeatherType.HEAVY_RAIN: + power.value *= 0.5; + return true; } } @@ -2623,7 +2623,7 @@ export class PresentPowerAttr extends VariablePowerAttr { } else if (80 < powerSeed && powerSeed <= 100) { target.scene.unshiftPhase(new PokemonHealPhase(target.scene, target.getBattlerIndex(), - Math.max(Math.floor(target.getMaxHp() / 4), 1), getPokemonMessage(target, ' regained\nhealth!'), true)); + Math.max(Math.floor(target.getMaxHp() / 4), 1), getPokemonMessage(target, ' regained\nhealth!'), true)); } return true; @@ -2644,7 +2644,7 @@ export class KnockOffPowerAttr extends VariablePowerAttr { export class WaterShurikenPowerAttr extends VariablePowerAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (user.species.speciesId == Species.GRENINJA && user.hasAbility(Abilities.BATTLE_BOND) && user.formIndex == 2) { - (args[0] as Utils.IntegerHolder).value = 20 + (args[0] as Utils.IntegerHolder).value = 20; return true; } return false; @@ -2718,15 +2718,15 @@ export class ThunderAccuracyAttr extends VariableAccuracyAttr { const accuracy = args[0] as Utils.NumberHolder; const weatherType = user.scene.arena.weather?.weatherType || WeatherType.NONE; switch (weatherType) { - case WeatherType.SUNNY: - case WeatherType.SANDSTORM: - case WeatherType.HARSH_SUN: - accuracy.value = 50; - return true; - case WeatherType.RAIN: - case WeatherType.HEAVY_RAIN: - accuracy.value = -1; - return true; + case WeatherType.SUNNY: + case WeatherType.SANDSTORM: + case WeatherType.HARSH_SUN: + accuracy.value = 50; + return true; + case WeatherType.RAIN: + case WeatherType.HEAVY_RAIN: + accuracy.value = -1; + return true; } } @@ -2751,7 +2751,7 @@ export class MinimizeAccuracyAttr extends VariableAccuracyAttr { */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (target.getTag(BattlerTagType.MINIMIZED)){ - const accuracy = args[0] as Utils.NumberHolder + const accuracy = args[0] as Utils.NumberHolder; accuracy.value = -1; return true; @@ -2763,11 +2763,11 @@ export class MinimizeAccuracyAttr extends VariableAccuracyAttr { export class ToxicAccuracyAttr extends VariableAccuracyAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { - if (user.isOfType(Type.POISON)) { - const accuracy = args[0] as Utils.NumberHolder; - accuracy.value = -1; - return true; - } + if (user.isOfType(Type.POISON)) { + const accuracy = args[0] as Utils.NumberHolder; + accuracy.value = -1; + return true; + } return false; } @@ -2852,21 +2852,21 @@ export class TechnoBlastTypeAttr extends VariableMoveTypeAttr { const type = (args[0] as Utils.IntegerHolder); switch (form) { - case 1: // Shock Drive - type.value = Type.ELECTRIC; - break; - case 2: // Burn Drive - type.value = Type.FIRE; - break; - case 3: // Chill Drive - type.value = Type.ICE; - break; - case 4: // Douse Drive - type.value = Type.WATER; - break; - default: - type.value = Type.NORMAL; - break; + case 1: // Shock Drive + type.value = Type.ELECTRIC; + break; + case 2: // Burn Drive + type.value = Type.FIRE; + break; + case 3: // Chill Drive + type.value = Type.ICE; + break; + case 4: // Douse Drive + type.value = Type.WATER; + break; + default: + type.value = Type.NORMAL; + break; } return true; } @@ -2882,12 +2882,12 @@ export class AuraWheelTypeAttr extends VariableMoveTypeAttr { const type = (args[0] as Utils.IntegerHolder); switch (form) { - case 1: // Hangry Mode - type.value = Type.DARK; - break; - default: // Full Belly Mode - type.value = Type.ELECTRIC; - break; + case 1: // Hangry Mode + type.value = Type.DARK; + break; + default: // Full Belly Mode + type.value = Type.ELECTRIC; + break; } return true; } @@ -2903,15 +2903,15 @@ export class RagingBullTypeAttr extends VariableMoveTypeAttr { const type = (args[0] as Utils.IntegerHolder); switch (form) { - case 1: // Blaze breed - type.value = Type.FIRE; - break; - case 2: // Aqua breed - type.value = Type.WATER; - break; - default: - type.value = Type.FIGHTING; - break; + case 1: // Blaze breed + type.value = Type.FIRE; + break; + case 2: // Aqua breed + type.value = Type.WATER; + break; + default: + type.value = Type.FIGHTING; + break; } return true; } @@ -2927,30 +2927,30 @@ export class IvyCudgelTypeAttr extends VariableMoveTypeAttr { const type = (args[0] as Utils.IntegerHolder); switch (form) { - case 1: // Wellspring Mask - type.value = Type.WATER; - break; - case 2: // Hearthflame Mask - type.value = Type.FIRE; - break; - case 3: // Cornerstone Mask - type.value = Type.ROCK; - break; - case 4: // Teal Mask Tera - type.value = Type.GRASS; - break; - case 5: // Wellspring Mask Tera - type.value = Type.WATER; - break; - case 6: // Hearthflame Mask Tera - type.value = Type.FIRE; - break; - case 7: // Cornerstone Mask Tera - type.value = Type.ROCK; - break; - default: - type.value = Type.GRASS; - break; + case 1: // Wellspring Mask + type.value = Type.WATER; + break; + case 2: // Hearthflame Mask + type.value = Type.FIRE; + break; + case 3: // Cornerstone Mask + type.value = Type.ROCK; + break; + case 4: // Teal Mask Tera + type.value = Type.GRASS; + break; + case 5: // Wellspring Mask Tera + type.value = Type.WATER; + break; + case 6: // Hearthflame Mask Tera + type.value = Type.FIRE; + break; + case 7: // Cornerstone Mask Tera + type.value = Type.ROCK; + break; + default: + type.value = Type.GRASS; + break; } return true; } @@ -2965,23 +2965,23 @@ export class WeatherBallTypeAttr extends VariableMoveTypeAttr { const type = (args[0] as Utils.IntegerHolder); switch (user.scene.arena.weather?.weatherType) { - case WeatherType.SUNNY: - case WeatherType.HARSH_SUN: - type.value = Type.FIRE; - break; - case WeatherType.RAIN: - case WeatherType.HEAVY_RAIN: - type.value = Type.WATER; - break; - case WeatherType.SANDSTORM: - type.value = Type.ROCK; - break; - case WeatherType.HAIL: - case WeatherType.SNOW: - type.value = Type.ICE; - break; - default: - return false; + case WeatherType.SUNNY: + case WeatherType.HARSH_SUN: + type.value = Type.FIRE; + break; + case WeatherType.RAIN: + case WeatherType.HEAVY_RAIN: + type.value = Type.WATER; + break; + case WeatherType.SANDSTORM: + type.value = Type.ROCK; + break; + case WeatherType.HAIL: + case WeatherType.SNOW: + type.value = Type.ICE; + break; + default: + return false; } return true; } @@ -3012,20 +3012,20 @@ export class TerrainPulseTypeAttr extends VariableMoveTypeAttr { const type = (args[0] as Utils.IntegerHolder); switch (currentTerrain) { - case TerrainType.MISTY: - type.value = Type.FAIRY; - break; - case TerrainType.ELECTRIC: - type.value = Type.ELECTRIC; - break; - case TerrainType.GRASSY: - type.value = Type.GRASS; - break; - case TerrainType.PSYCHIC: - type.value = Type.PSYCHIC; - break; - default: - return false; + case TerrainType.MISTY: + type.value = Type.FAIRY; + break; + case TerrainType.ELECTRIC: + type.value = Type.ELECTRIC; + break; + case TerrainType.GRASSY: + type.value = Type.GRASS; + break; + case TerrainType.PSYCHIC: + type.value = Type.PSYCHIC; + break; + default: + return false; } return true; } @@ -3115,7 +3115,7 @@ export class IceNoEffectTypeAttr extends VariableMoveTypeMultiplierAttr { * @param {any[]} args Sets to false if the target is Ice-Type, so it should do no damage/no effect. * @returns {boolean} Returns true if move is successful, false if Ice-Type. */ - apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { + apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { if (target.isOfType(Type.ICE)) { (args[0] as Utils.BooleanHolder).value = false; return false; @@ -3156,12 +3156,12 @@ export class SheerColdAccuracyAttr extends OneHitKOAccuracyAttr { */ apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean { const accuracy = args[0] as Utils.NumberHolder; - if (user.level < target.level) { - accuracy.value = 0; - } else { - const baseAccuracy = user.isOfType(Type.ICE) ? 30 : 20; - accuracy.value = Math.min(Math.max(baseAccuracy + 100 * (1 - target.level / user.level), 0), 100); - } + if (user.level < target.level) { + accuracy.value = 0; + } else { + const baseAccuracy = user.isOfType(Type.ICE) ? 30 : 20; + accuracy.value = Math.min(Math.max(baseAccuracy + 100 * (1 - target.level / user.level), 0), 100); + } return true; } } @@ -3349,43 +3349,43 @@ export class AddBattlerTagAttr extends MoveEffectAttr { getTagTargetBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { switch (this.tagType) { - case BattlerTagType.RECHARGING: - case BattlerTagType.PERISH_SONG: - return -16; - case BattlerTagType.FLINCHED: - case BattlerTagType.CONFUSED: - case BattlerTagType.INFATUATED: - case BattlerTagType.NIGHTMARE: - case BattlerTagType.DROWSY: - case BattlerTagType.NO_CRIT: - return -5; - case BattlerTagType.SEEDED: - case BattlerTagType.SALT_CURED: - case BattlerTagType.CURSED: - case BattlerTagType.FRENZY: - case BattlerTagType.TRAPPED: - case BattlerTagType.BIND: - case BattlerTagType.WRAP: - case BattlerTagType.FIRE_SPIN: - case BattlerTagType.WHIRLPOOL: - case BattlerTagType.CLAMP: - case BattlerTagType.SAND_TOMB: - case BattlerTagType.MAGMA_STORM: - case BattlerTagType.SNAP_TRAP: - case BattlerTagType.THUNDER_CAGE: - case BattlerTagType.INFESTATION: - return -3; - case BattlerTagType.ENCORE: - return -2; - case BattlerTagType.INGRAIN: - case BattlerTagType.IGNORE_ACCURACY: - case BattlerTagType.AQUA_RING: - return 3; - case BattlerTagType.PROTECTED: - case BattlerTagType.FLYING: - case BattlerTagType.CRIT_BOOST: - case BattlerTagType.ALWAYS_CRIT: - return 5; + case BattlerTagType.RECHARGING: + case BattlerTagType.PERISH_SONG: + return -16; + case BattlerTagType.FLINCHED: + case BattlerTagType.CONFUSED: + case BattlerTagType.INFATUATED: + case BattlerTagType.NIGHTMARE: + case BattlerTagType.DROWSY: + case BattlerTagType.NO_CRIT: + return -5; + case BattlerTagType.SEEDED: + case BattlerTagType.SALT_CURED: + case BattlerTagType.CURSED: + case BattlerTagType.FRENZY: + case BattlerTagType.TRAPPED: + case BattlerTagType.BIND: + case BattlerTagType.WRAP: + case BattlerTagType.FIRE_SPIN: + case BattlerTagType.WHIRLPOOL: + case BattlerTagType.CLAMP: + case BattlerTagType.SAND_TOMB: + case BattlerTagType.MAGMA_STORM: + case BattlerTagType.SNAP_TRAP: + case BattlerTagType.THUNDER_CAGE: + case BattlerTagType.INFESTATION: + return -3; + case BattlerTagType.ENCORE: + return -2; + case BattlerTagType.INGRAIN: + case BattlerTagType.IGNORE_ACCURACY: + case BattlerTagType.AQUA_RING: + return 3; + case BattlerTagType.PROTECTED: + case BattlerTagType.FLYING: + case BattlerTagType.CRIT_BOOST: + case BattlerTagType.ALWAYS_CRIT: + return 5; } } @@ -3405,7 +3405,7 @@ export class CurseAttr extends MoveEffectAttr { user.scene.queueMessage('But it failed!'); return false; } - let curseRecoilDamage = Math.max(1, Math.floor(user.getMaxHp() / 2)); + const curseRecoilDamage = Math.max(1, Math.floor(user.getMaxHp() / 2)); user.damageAndUpdate(curseRecoilDamage, HitResult.OTHER, false, true, true); user.scene.queueMessage(getPokemonMessage(user, ` cut its own HP\nand laid a curse on the ${target.name}!`)); target.addTag(BattlerTagType.CURSED, 0, move.id, user.id); @@ -3431,7 +3431,7 @@ export class LapseBattlerTagAttr extends MoveEffectAttr { if (!super.apply(user, target, move, args)) return false; - for (let tagType of this.tagTypes) + for (const tagType of this.tagTypes) (this.selfTarget ? user : target).lapseTag(tagType); return true; @@ -3451,7 +3451,7 @@ export class RemoveBattlerTagAttr extends MoveEffectAttr { if (!super.apply(user, target, move, args)) return false; - for (let tagType of this.tagTypes) + for (const tagType of this.tagTypes) (this.selfTarget ? user : target).removeTag(tagType); return true; @@ -3717,35 +3717,35 @@ export class RevivalBlessingAttr extends MoveEffectAttr { // If user is player, checks if the user has fainted pokemon if(user instanceof PlayerPokemon && user.scene.getParty().findIndex(p => p.isFainted())>-1) { - (user as PlayerPokemon).revivalBlessing().then(() => { - resolve(true) - }); + (user as PlayerPokemon).revivalBlessing().then(() => { + resolve(true); + }); // If user is enemy, checks that it is a trainer, and it has fainted non-boss pokemon in party } else if(user instanceof EnemyPokemon && user.hasTrainer() && user.scene.getEnemyParty().findIndex(p => p.isFainted() && !p.isBoss()) > -1) { - // Selects a random fainted pokemon - const faintedPokemon = user.scene.getEnemyParty().filter(p => p.isFainted() && !p.isBoss()); - const pokemon = faintedPokemon[user.randSeedInt(faintedPokemon.length)]; - const slotIndex = user.scene.getEnemyParty().findIndex(p => pokemon.id === p.id); - pokemon.resetStatus(); - pokemon.heal(Math.min(Math.max(Math.ceil(Math.floor(0.5 * pokemon.getMaxHp())), 1), pokemon.getMaxHp())); - user.scene.queueMessage(`${pokemon.name} was revived!`,0,true); + // Selects a random fainted pokemon + const faintedPokemon = user.scene.getEnemyParty().filter(p => p.isFainted() && !p.isBoss()); + const pokemon = faintedPokemon[user.randSeedInt(faintedPokemon.length)]; + const slotIndex = user.scene.getEnemyParty().findIndex(p => pokemon.id === p.id); + pokemon.resetStatus(); + pokemon.heal(Math.min(Math.max(Math.ceil(Math.floor(0.5 * pokemon.getMaxHp())), 1), pokemon.getMaxHp())); + user.scene.queueMessage(`${pokemon.name} was revived!`,0,true); - if(user.scene.currentBattle.double && user.scene.getEnemyParty().length > 1) { - const allyPokemon = user.getAlly(); - if(slotIndex<=1) { - user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, pokemon.getFieldIndex(), slotIndex, false, false, false)); - } else if(allyPokemon.isFainted()){ - user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, allyPokemon.getFieldIndex(), slotIndex, false, false,false)); - } + if(user.scene.currentBattle.double && user.scene.getEnemyParty().length > 1) { + const allyPokemon = user.getAlly(); + if(slotIndex<=1) { + user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, pokemon.getFieldIndex(), slotIndex, false, false, false)); + } else if(allyPokemon.isFainted()){ + user.scene.unshiftPhase(new SwitchSummonPhase(user.scene, allyPokemon.getFieldIndex(), slotIndex, false, false,false)); } - resolve(true); + } + resolve(true); } else { - user.scene.queueMessage(`But it failed!`); + user.scene.queueMessage('But it failed!'); resolve(false); } - }) + }); } getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): integer { @@ -3770,11 +3770,11 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { return new Promise(resolve => { // Check if the move category is not STATUS or if the switch out condition is not met - if (!this.getSwitchOutCondition()(user, target, move)) { + if (!this.getSwitchOutCondition()(user, target, move)) { //Apply effects before switch out i.e. poison point, flame body, etc - applyPostDefendAbAttrs(PostDefendContactApplyStatusEffectAbAttr, target, user, new PokemonMove(move.id), null); - return resolve(false); - } + applyPostDefendAbAttrs(PostDefendContactApplyStatusEffectAbAttr, target, user, new PokemonMove(move.id), null); + return resolve(false); + } // Move the switch out logic inside the conditional block // This ensures that the switch out only happens when the conditions are met @@ -3821,16 +3821,16 @@ export class ForceSwitchOutAttr extends MoveEffectAttr { resolve(true); }); - } + } - getCondition(): MoveConditionFunc { + getCondition(): MoveConditionFunc { return (user, target, move) => (move.category !== MoveCategory.STATUS || this.getSwitchOutCondition()(user, target, move)); } getFailedText(user: Pokemon, target: Pokemon, move: Move, cancelled: Utils.BooleanHolder): string | null { const blockedByAbility = new Utils.BooleanHolder(false); applyAbAttrs(ForceSwitchOutImmunityAbAttr, target, blockedByAbility); - return blockedByAbility.value ? getPokemonMessage(target, ` can't be switched out!`) : null; + return blockedByAbility.value ? getPokemonMessage(target, ' can\'t be switched out!') : null; } getSwitchOutCondition(): MoveConditionFunc { @@ -3885,7 +3885,7 @@ export class RemoveTypeAttr extends MoveEffectAttr { if(user.isTerastallized && user.getTeraType() == this.removedType) // active tera types cannot be removed return false; - const userTypes = user.getTypes(true) + const userTypes = user.getTypes(true); const modifiedTypes = userTypes.filter(type => type !== this.removedType); user.summonData.types = modifiedTypes; user.updateInfo(); @@ -3998,7 +3998,7 @@ export class FirstMoveTypeAttr extends MoveEffectAttr { if (!super.apply(user, target, move, args)) return false; - const firstMoveType = target.getMoveset()[0].getMove().type + const firstMoveType = target.getMoveset()[0].getMove().type; user.summonData.types = [ firstMoveType ]; @@ -4028,19 +4028,19 @@ export class RandomMovesetMoveAttr extends OverrideMoveEffectAttr { return false; let selectTargets: BattlerIndex[]; switch (true) { - case (moveTargets.multiple || moveTargets.targets.length === 1): { - selectTargets = moveTargets.targets; - break; - } - case (moveTargets.targets.indexOf(target.getBattlerIndex()) > -1): { - selectTargets = [ target.getBattlerIndex() ]; - break; - } - default: { - moveTargets.targets.splice(moveTargets.targets.indexOf(user.getAlly().getBattlerIndex())); - selectTargets = [ moveTargets.targets[user.randSeedInt(moveTargets.targets.length)] ]; - break; - } + case (moveTargets.multiple || moveTargets.targets.length === 1): { + selectTargets = moveTargets.targets; + break; + } + case (moveTargets.targets.indexOf(target.getBattlerIndex()) > -1): { + selectTargets = [ target.getBattlerIndex() ]; + break; + } + default: { + moveTargets.targets.splice(moveTargets.targets.indexOf(user.getAlly().getBattlerIndex())); + selectTargets = [ moveTargets.targets[user.randSeedInt(moveTargets.targets.length)] ]; + break; + } } const targets = selectTargets; user.getMoveQueue().push({ move: move.moveId, targets: targets, ignorePP: true }); @@ -4081,134 +4081,134 @@ export class RandomMoveAttr extends OverrideMoveEffectAttr { export class NaturePowerAttr extends OverrideMoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): Promise { return new Promise(resolve => { - var moveId; + let moveId; switch (user.scene.arena.getTerrainType()) { - // this allows terrains to 'override' the biome move - case TerrainType.NONE: - switch (user.scene.arena.biomeType) { - case Biome.TOWN: - moveId = Moves.ROUND; - break; - case Biome.METROPOLIS: - moveId = Moves.TRI_ATTACK; - break; - case Biome.SLUM: - moveId = Moves.SLUDGE_BOMB; - break; - case Biome.PLAINS: - moveId = Moves.SILVER_WIND; - break; - case Biome.GRASS: - moveId = Moves.GRASS_KNOT; - break; - case Biome.TALL_GRASS: - moveId = Moves.POLLEN_PUFF; - break; - case Biome.MEADOW: - moveId = Moves.GIGA_DRAIN; - break; - case Biome.FOREST: - moveId = Moves.BUG_BUZZ; - break; - case Biome.JUNGLE: - moveId = Moves.LEAF_STORM; - break; - case Biome.SEA: - moveId = Moves.HYDRO_PUMP; - break; - case Biome.SWAMP: - moveId = Moves.MUD_BOMB; - break; - case Biome.BEACH: - moveId = Moves.SCALD; - break; - case Biome.LAKE: - moveId = Moves.BUBBLE_BEAM; - break; - case Biome.SEABED: - moveId = Moves.BRINE; - break; - case Biome.ISLAND: - moveId = Moves.LEAF_TORNADO; - break; - case Biome.MOUNTAIN: - moveId = Moves.AIR_SLASH; - break; - case Biome.BADLANDS: - moveId = Moves.EARTH_POWER; - break; - case Biome.DESERT: - moveId = Moves.SCORCHING_SANDS; - break; - case Biome.WASTELAND: - moveId = Moves.DRAGON_PULSE; - break; - case Biome.CONSTRUCTION_SITE: - moveId = Moves.STEEL_BEAM; - break; - case Biome.CAVE: - moveId = Moves.POWER_GEM; - break; - case Biome.ICE_CAVE: - moveId = Moves.ICE_BEAM; - break; - case Biome.SNOWY_FOREST: - moveId = Moves.FROST_BREATH; - break; - case Biome.VOLCANO: - moveId = Moves.LAVA_PLUME; - break; - case Biome.GRAVEYARD: - moveId = Moves.SHADOW_BALL; - break; - case Biome.RUINS: - moveId = Moves.ANCIENT_POWER; - break; - case Biome.TEMPLE: - moveId = Moves.EXTRASENSORY; - break; - case Biome.DOJO: - moveId = Moves.FOCUS_BLAST; - break; - case Biome.FAIRY_CAVE: - moveId = Moves.ALLURING_VOICE; - break; - case Biome.ABYSS: - moveId = Moves.OMINOUS_WIND; - break; - case Biome.SPACE: - moveId = Moves.DRACO_METEOR; - break; - case Biome.FACTORY: - moveId = Moves.FLASH_CANNON; - break; - case Biome.LABORATORY: - moveId = Moves.ZAP_CANNON; - break; - case Biome.POWER_PLANT: - moveId = Moves.CHARGE_BEAM; - break; - case Biome.END: - moveId = Moves.ETERNABEAM; - break; - } + // this allows terrains to 'override' the biome move + case TerrainType.NONE: + switch (user.scene.arena.biomeType) { + case Biome.TOWN: + moveId = Moves.ROUND; break; - case TerrainType.MISTY: - moveId = Moves.MOONBLAST; - break; - case TerrainType.ELECTRIC: - moveId = Moves.THUNDERBOLT; - break; - case TerrainType.GRASSY: - moveId = Moves.ENERGY_BALL; - break; - case TerrainType.PSYCHIC: - moveId = Moves.PSYCHIC; - break; - default: - // Just in case there's no match + case Biome.METROPOLIS: moveId = Moves.TRI_ATTACK; break; + case Biome.SLUM: + moveId = Moves.SLUDGE_BOMB; + break; + case Biome.PLAINS: + moveId = Moves.SILVER_WIND; + break; + case Biome.GRASS: + moveId = Moves.GRASS_KNOT; + break; + case Biome.TALL_GRASS: + moveId = Moves.POLLEN_PUFF; + break; + case Biome.MEADOW: + moveId = Moves.GIGA_DRAIN; + break; + case Biome.FOREST: + moveId = Moves.BUG_BUZZ; + break; + case Biome.JUNGLE: + moveId = Moves.LEAF_STORM; + break; + case Biome.SEA: + moveId = Moves.HYDRO_PUMP; + break; + case Biome.SWAMP: + moveId = Moves.MUD_BOMB; + break; + case Biome.BEACH: + moveId = Moves.SCALD; + break; + case Biome.LAKE: + moveId = Moves.BUBBLE_BEAM; + break; + case Biome.SEABED: + moveId = Moves.BRINE; + break; + case Biome.ISLAND: + moveId = Moves.LEAF_TORNADO; + break; + case Biome.MOUNTAIN: + moveId = Moves.AIR_SLASH; + break; + case Biome.BADLANDS: + moveId = Moves.EARTH_POWER; + break; + case Biome.DESERT: + moveId = Moves.SCORCHING_SANDS; + break; + case Biome.WASTELAND: + moveId = Moves.DRAGON_PULSE; + break; + case Biome.CONSTRUCTION_SITE: + moveId = Moves.STEEL_BEAM; + break; + case Biome.CAVE: + moveId = Moves.POWER_GEM; + break; + case Biome.ICE_CAVE: + moveId = Moves.ICE_BEAM; + break; + case Biome.SNOWY_FOREST: + moveId = Moves.FROST_BREATH; + break; + case Biome.VOLCANO: + moveId = Moves.LAVA_PLUME; + break; + case Biome.GRAVEYARD: + moveId = Moves.SHADOW_BALL; + break; + case Biome.RUINS: + moveId = Moves.ANCIENT_POWER; + break; + case Biome.TEMPLE: + moveId = Moves.EXTRASENSORY; + break; + case Biome.DOJO: + moveId = Moves.FOCUS_BLAST; + break; + case Biome.FAIRY_CAVE: + moveId = Moves.ALLURING_VOICE; + break; + case Biome.ABYSS: + moveId = Moves.OMINOUS_WIND; + break; + case Biome.SPACE: + moveId = Moves.DRACO_METEOR; + break; + case Biome.FACTORY: + moveId = Moves.FLASH_CANNON; + break; + case Biome.LABORATORY: + moveId = Moves.ZAP_CANNON; + break; + case Biome.POWER_PLANT: + moveId = Moves.CHARGE_BEAM; + break; + case Biome.END: + moveId = Moves.ETERNABEAM; + break; + } + break; + case TerrainType.MISTY: + moveId = Moves.MOONBLAST; + break; + case TerrainType.ELECTRIC: + moveId = Moves.THUNDERBOLT; + break; + case TerrainType.GRASSY: + moveId = Moves.ENERGY_BALL; + break; + case TerrainType.PSYCHIC: + moveId = Moves.PSYCHIC; + break; + default: + // Just in case there's no match + moveId = Moves.TRI_ATTACK; + break; } user.getMoveQueue().push({ move: moveId, targets: [target.getBattlerIndex()], ignorePP: true }); @@ -4315,9 +4315,9 @@ const targetMoveCopiableCondition: MoveConditionFunc = (user, target, move) => { if (allMoves[copiableMove.move].getAttrs(ChargeAttr).length && copiableMove.result === MoveResult.OTHER) return false; - // TODO: Add last turn of Bide + // TODO: Add last turn of Bide - return true; + return true; }; export class MovesetCopyMoveAttr extends OverrideMoveEffectAttr { @@ -4432,11 +4432,11 @@ export class AbilityCopyAttr extends MoveEffectAttr { user.summonData.ability = target.getAbility().id; - user.scene.queueMessage(getPokemonMessage(user, ` copied the `) + getPokemonMessage(target, `'s\n${allAbilities[target.getAbility().id].name}!`)); + user.scene.queueMessage(getPokemonMessage(user, ' copied the ') + getPokemonMessage(target, `'s\n${allAbilities[target.getAbility().id].name}!`)); if (this.copyToPartner && user.scene.currentBattle?.double && user.getAlly().hp) { user.getAlly().summonData.ability = target.getAbility().id; - user.getAlly().scene.queueMessage(getPokemonMessage(user.getAlly(), ` copied the `) + getPokemonMessage(target, `'s\n${allAbilities[target.getAbility().id].name}!`)); + user.getAlly().scene.queueMessage(getPokemonMessage(user.getAlly(), ' copied the ') + getPokemonMessage(target, `'s\n${allAbilities[target.getAbility().id].name}!`)); } return true; @@ -4486,7 +4486,7 @@ export class SwitchAbilitiesAttr extends MoveEffectAttr { user.summonData.ability = target.getAbility().id; target.summonData.ability = tempAbilityId; - user.scene.queueMessage(getPokemonMessage(user, ` swapped\nabilities with its target!`)); + user.scene.queueMessage(getPokemonMessage(user, ' swapped\nabilities with its target!')); return true; } @@ -4503,7 +4503,7 @@ export class SuppressAbilitiesAttr extends MoveEffectAttr { target.summonData.abilitySuppressed = true; - target.scene.queueMessage(getPokemonMessage(target, ` ability\nwas suppressed!`)); + target.scene.queueMessage(getPokemonMessage(target, ' ability\nwas suppressed!')); return true; } @@ -4559,7 +4559,7 @@ export class MoneyAttr extends MoveEffectAttr { apply(user: Pokemon, target: Pokemon, move: Move): boolean { user.scene.currentBattle.moneyScattered += user.scene.getWaveMoneyAmount(0.2); - user.scene.queueMessage("Coins were scattered everywhere!") + user.scene.queueMessage('Coins were scattered everywhere!'); return true; } } @@ -4607,7 +4607,7 @@ const failIfDampCondition: MoveConditionFunc = (user, target, move) => { if (cancelled.value) user.scene.queueMessage(getPokemonMessage(user, ` cannot use ${move.name}!`)); return !cancelled.value; -} +}; export type MoveAttrFilter = (attr: MoveAttr) => boolean; @@ -4615,7 +4615,7 @@ function applyMoveAttrsInternal(attrFilter: MoveAttrFilter, user: Pokemon, targe return new Promise(resolve => { const attrPromises: Promise[] = []; const moveAttrs = move.attrs.filter(a => attrFilter(a)); - for (let attr of moveAttrs) { + for (const attr of moveAttrs) { const result = attr.apply(user, target, move, args); if (result instanceof Promise) attrPromises.push(result); @@ -4674,7 +4674,7 @@ const unknownTypeCondition: MoveConditionFunc = (user, target, move) => !user.ge export type MoveTargetSet = { targets: BattlerIndex[]; multiple: boolean; -} +}; export function getMoveTargets(user: Pokemon, move: Moves): MoveTargetSet { const variableTarget = new Utils.NumberHolder(0); @@ -4687,47 +4687,47 @@ export function getMoveTargets(user: Pokemon, move: Moves): MoveTargetSet { let multiple = false; switch (moveTarget) { - case MoveTarget.USER: - case MoveTarget.PARTY: - set = [ user ]; - break; - case MoveTarget.NEAR_OTHER: - case MoveTarget.OTHER: - case MoveTarget.ALL_NEAR_OTHERS: - case MoveTarget.ALL_OTHERS: - set = (opponents.concat([ user.getAlly() ])); - multiple = moveTarget === MoveTarget.ALL_NEAR_OTHERS || moveTarget === MoveTarget.ALL_OTHERS - break; - case MoveTarget.NEAR_ENEMY: - case MoveTarget.ALL_NEAR_ENEMIES: - case MoveTarget.ALL_ENEMIES: - case MoveTarget.ENEMY_SIDE: - set = opponents; - multiple = moveTarget !== MoveTarget.NEAR_ENEMY; - break; - case MoveTarget.RANDOM_NEAR_ENEMY: - set = [ opponents[user.randSeedInt(opponents.length)] ]; - break; - case MoveTarget.ATTACKER: - return { targets: [ -1 as BattlerIndex ], multiple: false }; - case MoveTarget.NEAR_ALLY: - case MoveTarget.ALLY: - set = [ user.getAlly() ]; - break; - case MoveTarget.USER_OR_NEAR_ALLY: - case MoveTarget.USER_AND_ALLIES: - case MoveTarget.USER_SIDE: - set = [ user, user.getAlly() ]; - multiple = moveTarget !== MoveTarget.USER_OR_NEAR_ALLY; - break; - case MoveTarget.ALL: - case MoveTarget.BOTH_SIDES: - set = [ user, user.getAlly() ].concat(opponents); - multiple = true; - break; - case MoveTarget.CURSE: - set = user.getTypes(true).includes(Type.GHOST) ? (opponents.concat([ user.getAlly() ])) : [ user ]; - break; + case MoveTarget.USER: + case MoveTarget.PARTY: + set = [ user ]; + break; + case MoveTarget.NEAR_OTHER: + case MoveTarget.OTHER: + case MoveTarget.ALL_NEAR_OTHERS: + case MoveTarget.ALL_OTHERS: + set = (opponents.concat([ user.getAlly() ])); + multiple = moveTarget === MoveTarget.ALL_NEAR_OTHERS || moveTarget === MoveTarget.ALL_OTHERS; + break; + case MoveTarget.NEAR_ENEMY: + case MoveTarget.ALL_NEAR_ENEMIES: + case MoveTarget.ALL_ENEMIES: + case MoveTarget.ENEMY_SIDE: + set = opponents; + multiple = moveTarget !== MoveTarget.NEAR_ENEMY; + break; + case MoveTarget.RANDOM_NEAR_ENEMY: + set = [ opponents[user.randSeedInt(opponents.length)] ]; + break; + case MoveTarget.ATTACKER: + return { targets: [ -1 as BattlerIndex ], multiple: false }; + case MoveTarget.NEAR_ALLY: + case MoveTarget.ALLY: + set = [ user.getAlly() ]; + break; + case MoveTarget.USER_OR_NEAR_ALLY: + case MoveTarget.USER_AND_ALLIES: + case MoveTarget.USER_SIDE: + set = [ user, user.getAlly() ]; + multiple = moveTarget !== MoveTarget.USER_OR_NEAR_ALLY; + break; + case MoveTarget.ALL: + case MoveTarget.BOTH_SIDES: + set = [ user, user.getAlly() ].concat(opponents); + multiple = true; + break; + case MoveTarget.CURSE: + set = user.getTypes(true).includes(Type.GHOST) ? (opponents.concat([ user.getAlly() ])) : [ user ]; + break; } return { targets: set.filter(p => p?.isActive(true)).map(p => p.getBattlerIndex()).filter(t => t !== undefined), multiple }; @@ -5171,7 +5171,7 @@ export function initMoves() { new SelfStatusMove(Moves.CONVERSION, Type.NORMAL, -1, 30, -1, 0, 1) .attr(FirstMoveTypeAttr), new AttackMove(Moves.TRI_ATTACK, Type.NORMAL, MoveCategory.SPECIAL, 80, 100, 10, 20, 0, 1) - .attr(MultiStatusEffectAttr, [StatusEffect.BURN, StatusEffect.FREEZE, StatusEffect.PARALYSIS]), + .attr(MultiStatusEffectAttr, [StatusEffect.BURN, StatusEffect.FREEZE, StatusEffect.PARALYSIS]), new AttackMove(Moves.SUPER_FANG, Type.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) @@ -5323,7 +5323,7 @@ export function initMoves() { .condition((user, target, move) => user.status?.effect === StatusEffect.SLEEP) .ignoresVirtual(), new StatusMove(Moves.HEAL_BELL, Type.NORMAL, -1, 5, -1, 0, 2) - .attr(PartyStatusCureAttr, "A bell chimed!", Abilities.SOUNDPROOF) + .attr(PartyStatusCureAttr, 'A bell chimed!', Abilities.SOUNDPROOF) .soundBased() .target(MoveTarget.PARTY), new AttackMove(Moves.RETURN, Type.NORMAL, MoveCategory.PHYSICAL, -1, 100, 20, -1, 0, 2) @@ -5514,7 +5514,7 @@ export function initMoves() { new AttackMove(Moves.REVENGE, Type.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) - .attr(RemoveScreensAttr), + .attr(RemoveScreensAttr), new StatusMove(Moves.YAWN, Type.NORMAL, -1, 10, -1, 0, 3) .attr(AddBattlerTagAttr, BattlerTagType.DROWSY, false, true) .condition((user, target, move) => !target.status), @@ -5598,7 +5598,7 @@ export function initMoves() { .attr(MovePowerMultiplierAttr, (user, target, move) => [WeatherType.SUNNY, WeatherType.RAIN, WeatherType.SANDSTORM, WeatherType.HAIL, WeatherType.SNOW, WeatherType.FOG, WeatherType.HEAVY_RAIN, WeatherType.HARSH_SUN].includes(user.scene.arena.weather?.weatherType) && !user.scene.arena.weather?.isEffectSuppressed(user.scene) ? 2 : 1) .ballBombMove(), new StatusMove(Moves.AROMATHERAPY, Type.GRASS, -1, 5, -1, 0, 3) - .attr(PartyStatusCureAttr, "A soothing aroma wafted through the area!", Abilities.SAP_SIPPER) + .attr(PartyStatusCureAttr, 'A soothing aroma wafted through the area!', Abilities.SAP_SIPPER) .target(MoveTarget.PARTY), new StatusMove(Moves.FAKE_TEARS, Type.DARK, 100, 20, -1, 0, 3) .attr(StatChangeAttr, BattleStat.SPDEF, -2), @@ -5760,7 +5760,7 @@ export function initMoves() { new AttackMove(Moves.CLOSE_COMBAT, Type.FIGHTING, MoveCategory.PHYSICAL, 120, 100, 5, 100, 0, 4) .attr(StatChangeAttr, [ BattleStat.DEF, BattleStat.SPDEF ], -1, true), new AttackMove(Moves.PAYBACK, Type.DARK, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 4) - .attr(MovePowerMultiplierAttr, (user, target, move) => target.getLastXMoves(1).find(m => m.turn === target.scene.currentBattle.turn) || user.scene.currentBattle.turnCommands[target.getBattlerIndex()].command === Command.BALL ? 2 : 1), + .attr(MovePowerMultiplierAttr, (user, target, move) => target.getLastXMoves(1).find(m => m.turn === target.scene.currentBattle.turn) || user.scene.currentBattle.turnCommands[target.getBattlerIndex()].command === Command.BALL ? 2 : 1), new AttackMove(Moves.ASSURANCE, Type.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) @@ -5776,7 +5776,7 @@ export function initMoves() { || user.status?.effect === StatusEffect.PARALYSIS || user.status?.effect === StatusEffect.SLEEP) && target.canSetStatus(user.status?.effect, false, false, user) - ), + ), new AttackMove(Moves.TRUMP_CARD, Type.NORMAL, MoveCategory.SPECIAL, -1, -1, 5, -1, 0, 4) .makesContact() .attr(LessPPMorePowerAttr), @@ -6396,7 +6396,7 @@ export function initMoves() { .powderMove() .unimplemented(), new SelfStatusMove(Moves.GEOMANCY, Type.FAIRY, -1, 10, -1, 0, 6) - .attr(ChargeAttr, ChargeAnim.GEOMANCY_CHARGING, "is charging its power!") + .attr(ChargeAttr, ChargeAnim.GEOMANCY_CHARGING, 'is charging its power!') .attr(StatChangeAttr, [ BattleStat.SPATK, BattleStat.SPDEF, BattleStat.SPD ], 2, true) .ignoresVirtual(), new StatusMove(Moves.MAGNETIC_FLUX, Type.ELECTRIC, -1, 20, -1, 0, 6) @@ -6599,7 +6599,7 @@ export function initMoves() { .condition((user, target, move) => target.summonData.battleStats[BattleStat.ATK] > -6) .triageMove(), new AttackMove(Moves.SOLAR_BLADE, Type.GRASS, MoveCategory.PHYSICAL, 125, 100, 10, -1, 0, 7) - .attr(SunlightChargeAttr, ChargeAnim.SOLAR_BLADE_CHARGING, "is glowing!") + .attr(SunlightChargeAttr, ChargeAnim.SOLAR_BLADE_CHARGING, 'is glowing!') .attr(AntiSunlightPowerDecreaseAttr) .slicingMove(), new AttackMove(Moves.LEAFAGE, Type.GRASS, MoveCategory.PHYSICAL, 40, 100, 40, -1, 0, 7) @@ -6638,7 +6638,7 @@ export function initMoves() { }) .attr(HealStatusEffectAttr, true, StatusEffect.FREEZE) .attr(RemoveTypeAttr, Type.FIRE, (user) => { - user.scene.queueMessage(getPokemonMessage(user, ` burned itself out!`)); + user.scene.queueMessage(getPokemonMessage(user, ' burned itself out!')); }), new StatusMove(Moves.SPEED_SWAP, Type.PSYCHIC, -1, 10, -1, 0, 7) .unimplemented(), @@ -6657,7 +6657,7 @@ export function initMoves() { new StatusMove(Moves.INSTRUCT, Type.PSYCHIC, -1, 15, -1, 0, 7) .unimplemented(), new AttackMove(Moves.BEAK_BLAST, Type.FLYING, MoveCategory.PHYSICAL, 100, 100, 15, -1, 5, 7) - .attr(ChargeAttr, ChargeAnim.BEAK_BLAST_CHARGING, "started\nheating up its beak!", undefined, false, true, -3) + .attr(ChargeAttr, ChargeAnim.BEAK_BLAST_CHARGING, 'started\nheating up its beak!', undefined, false, true, -3) .ballBombMove() .makesContact(false) .partial(), @@ -7270,9 +7270,9 @@ export function initMoves() { .recklessMove(), new AttackMove(Moves.LAST_RESPECTS, Type.GHOST, MoveCategory.PHYSICAL, 50, 100, 10, -1, 0, 9) .attr(MovePowerMultiplierAttr, (user, target, move) => { - return user.scene.getParty().reduce((acc, pokemonInParty) => acc + (pokemonInParty.status?.effect == StatusEffect.FAINT ? 1 : 0), - 1,) - }) + return user.scene.getParty().reduce((acc, pokemonInParty) => acc + (pokemonInParty.status?.effect == StatusEffect.FAINT ? 1 : 0), + 1,); + }) .makesContact(false), new AttackMove(Moves.LUMINA_CRASH, Type.PSYCHIC, MoveCategory.SPECIAL, 80, 100, 10, 100, 0, 9) .attr(StatChangeAttr, BattleStat.SPDEF, -2), @@ -7388,13 +7388,13 @@ export function initMoves() { .slicingMove() .triageMove(), new AttackMove(Moves.DOUBLE_SHOCK, Type.ELECTRIC, MoveCategory.PHYSICAL, 120, 100, 5, -1, 0, 9) - .condition((user) => { - const userTypes = user.getTypes(true); - return userTypes.includes(Type.ELECTRIC); - }) - .attr(RemoveTypeAttr, Type.ELECTRIC, (user) => { - user.scene.queueMessage(getPokemonMessage(user, ` used up all its electricity!`)); - }), + .condition((user) => { + const userTypes = user.getTypes(true); + return userTypes.includes(Type.ELECTRIC); + }) + .attr(RemoveTypeAttr, Type.ELECTRIC, (user) => { + user.scene.queueMessage(getPokemonMessage(user, ' used up all its electricity!')); + }), new AttackMove(Moves.GIGATON_HAMMER, Type.STEEL, MoveCategory.PHYSICAL, 160, 100, 5, -1, 0, 9) .makesContact(false) .condition((user, target, move) => { diff --git a/src/data/nature.ts b/src/data/nature.ts index a8b361674e2..893edb52155 100644 --- a/src/data/nature.ts +++ b/src/data/nature.ts @@ -1,7 +1,7 @@ -import { Stat, getStatName } from "./pokemon-stat"; -import * as Utils from "../utils"; -import { TextStyle, getBBCodeFrag } from "../ui/text"; -import { UiTheme } from "#app/enums/ui-theme"; +import { Stat, getStatName } from './pokemon-stat'; +import * as Utils from '../utils'; +import { TextStyle, getBBCodeFrag } from '../ui/text'; +import { UiTheme } from '#app/enums/ui-theme'; import i18next from 'i18next'; export enum Nature { @@ -36,13 +36,13 @@ export function getNatureName(nature: Nature, includeStatEffects: boolean = fals let ret = Utils.toReadableString(Nature[nature]); //Translating nature if(i18next.exists('nature:' + ret)){ - ret = i18next.t('nature:' + ret as any) + ret = i18next.t('nature:' + ret as any); } if (includeStatEffects) { const stats = Utils.getEnumValues(Stat).slice(1); let increasedStat: Stat = null; let decreasedStat: Stat = null; - for (let stat of stats) { + for (const stat of stats) { const multiplier = getNatureStatMultiplier(nature, stat); if (multiplier > 1) increasedStat = stat; @@ -61,77 +61,77 @@ export function getNatureName(nature: Nature, includeStatEffects: boolean = fals export function getNatureStatMultiplier(nature: Nature, stat: Stat): number { switch (stat) { - case Stat.ATK: - switch (nature) { - case Nature.LONELY: - case Nature.BRAVE: - case Nature.ADAMANT: - case Nature.NAUGHTY: - return 1.1; - case Nature.BOLD: - case Nature.TIMID: - case Nature.MODEST: - case Nature.CALM: - return 0.9; - } - break; - case Stat.DEF: - switch (nature) { - case Nature.BOLD: - case Nature.RELAXED: - case Nature.IMPISH: - case Nature.LAX: - return 1.1; - case Nature.LONELY: - case Nature.HASTY: - case Nature.MILD: - case Nature.GENTLE: - return 0.9; - } - break; - case Stat.SPATK: - switch (nature) { - case Nature.MODEST: - case Nature.MILD: - case Nature.QUIET: - case Nature.RASH: - return 1.1; - case Nature.ADAMANT: - case Nature.IMPISH: - case Nature.JOLLY: - case Nature.CAREFUL: - return 0.9; - } - break; - case Stat.SPDEF: - switch (nature) { - case Nature.CALM: - case Nature.GENTLE: - case Nature.SASSY: - case Nature.CAREFUL: - return 1.1; - case Nature.NAUGHTY: - case Nature.LAX: - case Nature.NAIVE: - case Nature.RASH: - return 0.9; - } - break; - case Stat.SPD: - switch (nature) { - case Nature.TIMID: - case Nature.HASTY: - case Nature.JOLLY: - case Nature.NAIVE: - return 1.1; - case Nature.BRAVE: - case Nature.RELAXED: - case Nature.QUIET: - case Nature.SASSY: - return 0.9; - } - break; + case Stat.ATK: + switch (nature) { + case Nature.LONELY: + case Nature.BRAVE: + case Nature.ADAMANT: + case Nature.NAUGHTY: + return 1.1; + case Nature.BOLD: + case Nature.TIMID: + case Nature.MODEST: + case Nature.CALM: + return 0.9; + } + break; + case Stat.DEF: + switch (nature) { + case Nature.BOLD: + case Nature.RELAXED: + case Nature.IMPISH: + case Nature.LAX: + return 1.1; + case Nature.LONELY: + case Nature.HASTY: + case Nature.MILD: + case Nature.GENTLE: + return 0.9; + } + break; + case Stat.SPATK: + switch (nature) { + case Nature.MODEST: + case Nature.MILD: + case Nature.QUIET: + case Nature.RASH: + return 1.1; + case Nature.ADAMANT: + case Nature.IMPISH: + case Nature.JOLLY: + case Nature.CAREFUL: + return 0.9; + } + break; + case Stat.SPDEF: + switch (nature) { + case Nature.CALM: + case Nature.GENTLE: + case Nature.SASSY: + case Nature.CAREFUL: + return 1.1; + case Nature.NAUGHTY: + case Nature.LAX: + case Nature.NAIVE: + case Nature.RASH: + return 0.9; + } + break; + case Stat.SPD: + switch (nature) { + case Nature.TIMID: + case Nature.HASTY: + case Nature.JOLLY: + case Nature.NAIVE: + return 1.1; + case Nature.BRAVE: + case Nature.RELAXED: + case Nature.QUIET: + case Nature.SASSY: + return 0.9; + } + break; } return 1; -} \ No newline at end of file +} diff --git a/src/data/pokeball.ts b/src/data/pokeball.ts index f5e39ba38ab..3caa37b470e 100644 --- a/src/data/pokeball.ts +++ b/src/data/pokeball.ts @@ -1,4 +1,4 @@ -import BattleScene from "../battle-scene"; +import BattleScene from '../battle-scene'; import i18next from '../plugins/i18n'; export enum PokeballType { @@ -8,81 +8,81 @@ export enum PokeballType { ROGUE_BALL, MASTER_BALL, LUXURY_BALL -}; +} export function getPokeballAtlasKey(type: PokeballType): string { switch (type) { - case PokeballType.POKEBALL: - return 'pb'; - case PokeballType.GREAT_BALL: - return 'gb'; - case PokeballType.ULTRA_BALL: - return 'ub'; - case PokeballType.ROGUE_BALL: - return 'rb'; - case PokeballType.MASTER_BALL: - return 'mb'; - case PokeballType.LUXURY_BALL: - return 'lb'; + case PokeballType.POKEBALL: + return 'pb'; + case PokeballType.GREAT_BALL: + return 'gb'; + case PokeballType.ULTRA_BALL: + return 'ub'; + case PokeballType.ROGUE_BALL: + return 'rb'; + case PokeballType.MASTER_BALL: + return 'mb'; + case PokeballType.LUXURY_BALL: + return 'lb'; } } export function getPokeballName(type: PokeballType): string { let ret: string; switch (type) { - case PokeballType.POKEBALL: - ret = i18next.t('pokeball:pokeBall'); - break; - case PokeballType.GREAT_BALL: - ret = i18next.t('pokeball:greatBall'); - break; - case PokeballType.ULTRA_BALL: - ret = i18next.t('pokeball:ultraBall'); - break; - case PokeballType.ROGUE_BALL: - ret = i18next.t('pokeball:rogueBall'); - break; - case PokeballType.MASTER_BALL: - ret = i18next.t('pokeball:masterBall'); - break; - case PokeballType.LUXURY_BALL: - ret = i18next.t('pokeball:luxuryBall'); - break; + case PokeballType.POKEBALL: + ret = i18next.t('pokeball:pokeBall'); + break; + case PokeballType.GREAT_BALL: + ret = i18next.t('pokeball:greatBall'); + break; + case PokeballType.ULTRA_BALL: + ret = i18next.t('pokeball:ultraBall'); + break; + case PokeballType.ROGUE_BALL: + ret = i18next.t('pokeball:rogueBall'); + break; + case PokeballType.MASTER_BALL: + ret = i18next.t('pokeball:masterBall'); + break; + case PokeballType.LUXURY_BALL: + ret = i18next.t('pokeball:luxuryBall'); + break; } return ret; } export function getPokeballCatchMultiplier(type: PokeballType): number { switch (type) { - case PokeballType.POKEBALL: - return 1; - case PokeballType.GREAT_BALL: - return 1.5; - case PokeballType.ULTRA_BALL: - return 2; - case PokeballType.ROGUE_BALL: - return 3; - case PokeballType.MASTER_BALL: - return -1; - case PokeballType.LUXURY_BALL: - return 1; + case PokeballType.POKEBALL: + return 1; + case PokeballType.GREAT_BALL: + return 1.5; + case PokeballType.ULTRA_BALL: + return 2; + case PokeballType.ROGUE_BALL: + return 3; + case PokeballType.MASTER_BALL: + return -1; + case PokeballType.LUXURY_BALL: + return 1; } } export function getPokeballTintColor(type: PokeballType): number { switch (type) { - case PokeballType.POKEBALL: - return 0xd52929; - case PokeballType.GREAT_BALL: - return 0x94b4de; - case PokeballType.ULTRA_BALL: - return 0xe6cd31; - case PokeballType.ROGUE_BALL: - return 0xd52929; - case PokeballType.MASTER_BALL: - return 0xa441bd; - case PokeballType.LUXURY_BALL: - return 0xffde6a; + case PokeballType.POKEBALL: + return 0xd52929; + case PokeballType.GREAT_BALL: + return 0x94b4de; + case PokeballType.ULTRA_BALL: + return 0xe6cd31; + case PokeballType.ROGUE_BALL: + return 0xd52929; + case PokeballType.MASTER_BALL: + return 0xa441bd; + case PokeballType.LUXURY_BALL: + return 0xffde6a; } } @@ -90,7 +90,7 @@ export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameOb let bouncePower = 1; let bounceYOffset = y1; let bounceY = y2; - let yd = y2 - y1; + const yd = y2 - y1; const doBounce = () => { scene.tweens.add({ @@ -121,4 +121,4 @@ export function doPokeballBounceAnim(scene: BattleScene, pokeball: Phaser.GameOb }; doBounce(); -} \ No newline at end of file +} diff --git a/src/data/pokemon-evolutions.ts b/src/data/pokemon-evolutions.ts index 7511b0e4162..d9f2152585e 100644 --- a/src/data/pokemon-evolutions.ts +++ b/src/data/pokemon-evolutions.ts @@ -1,17 +1,17 @@ -import { Gender } from "./gender"; -import { AttackTypeBoosterModifier, FlinchChanceModifier } from "../modifier/modifier"; -import { Moves } from "./enums/moves"; -import { PokeballType } from "./pokeball"; -import Pokemon from "../field/pokemon"; -import { Stat } from "./pokemon-stat"; -import { Species } from "./enums/species"; -import { Type } from "./type"; -import * as Utils from "../utils"; -import { SpeciesFormKey } from "./pokemon-species"; -import { WeatherType } from "./weather"; -import { Biome } from "./enums/biome"; -import { TimeOfDay } from "./enums/time-of-day"; -import { Nature } from "./nature"; +import { Gender } from './gender'; +import { AttackTypeBoosterModifier, FlinchChanceModifier } from '../modifier/modifier'; +import { Moves } from './enums/moves'; +import { PokeballType } from './pokeball'; +import Pokemon from '../field/pokemon'; +import { Stat } from './pokemon-stat'; +import { Species } from './enums/species'; +import { Type } from './type'; +import * as Utils from '../utils'; +import { SpeciesFormKey } from './pokemon-species'; +import { WeatherType } from './weather'; +import { Biome } from './enums/biome'; +import { TimeOfDay } from './enums/time-of-day'; +import { Nature } from './nature'; export enum SpeciesWildEvolutionDelay { NONE, @@ -1486,8 +1486,8 @@ export const pokemonEvolutions: PokemonEvolutions = { ], [Species.ONIX]: [ new SpeciesEvolution(Species.STEELIX, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition( - p => p.moveset.filter(m => m.getMove().type === Type.STEEL).length > 0), - SpeciesWildEvolutionDelay.VERY_LONG) + p => p.moveset.filter(m => m.getMove().type === Type.STEEL).length > 0), + SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.RHYDON]: [ new SpeciesEvolution(Species.RHYPERIOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition(p => true /* Protector */), SpeciesWildEvolutionDelay.VERY_LONG) @@ -1498,7 +1498,7 @@ export const pokemonEvolutions: PokemonEvolutions = { [Species.SCYTHER]: [ new SpeciesEvolution(Species.SCIZOR, 1, EvolutionItem.LINKING_CORD, new SpeciesEvolutionCondition( p => p.moveset.filter(m => m.getMove().type === Type.STEEL).length > 0), - SpeciesWildEvolutionDelay.VERY_LONG), + SpeciesWildEvolutionDelay.VERY_LONG), new SpeciesEvolution(Species.KLEAVOR, 1, EvolutionItem.BLACK_AUGURITE, null, SpeciesWildEvolutionDelay.VERY_LONG) ], [Species.ELECTABUZZ]: [ @@ -1623,10 +1623,10 @@ export const pokemonPrevolutions: PokemonPrevolutions = {}; const prevolutionKeys = Object.keys(pokemonEvolutions); prevolutionKeys.forEach(pk => { const evolutions = pokemonEvolutions[pk]; - for (let ev of evolutions) { + for (const ev of evolutions) { if (ev.evoFormKey && megaFormKeys.indexOf(ev.evoFormKey) > -1) continue; pokemonPrevolutions[ev.speciesId] = parseInt(pk) as Species; } }); -} \ No newline at end of file +} diff --git a/src/data/pokemon-forms.ts b/src/data/pokemon-forms.ts index a8bc07e92df..c88ca575981 100644 --- a/src/data/pokemon-forms.ts +++ b/src/data/pokemon-forms.ts @@ -1,12 +1,12 @@ -import { TimeOfDay } from "./enums/time-of-day"; -import { PokemonFormChangeItemModifier } from "../modifier/modifier"; -import Pokemon from "../field/pokemon"; -import { Moves } from "./enums/moves"; -import { SpeciesFormKey } from "./pokemon-species"; -import { Species } from "./enums/species"; -import { StatusEffect } from "./status-effect"; -import { MoveCategory, allMoves } from "./move"; -import { Abilities } from "./enums/abilities"; +import { TimeOfDay } from './enums/time-of-day'; +import { PokemonFormChangeItemModifier } from '../modifier/modifier'; +import Pokemon from '../field/pokemon'; +import { Moves } from './enums/moves'; +import { SpeciesFormKey } from './pokemon-species'; +import { Species } from './enums/species'; +import { StatusEffect } from './status-effect'; +import { MoveCategory, allMoves } from './move'; +import { Abilities } from './enums/abilities'; export enum FormChangeItem { NONE, @@ -123,7 +123,7 @@ export class SpeciesFormChange { if (formKeys[pokemon.formIndex] === this.formKey) return false; - for (let condition of this.conditions) { + for (const condition of this.conditions) { if (!condition.predicate(pokemon)) return false; } @@ -138,7 +138,7 @@ export class SpeciesFormChange { if (!this.trigger.hasTriggerType(triggerType)) return null; - let trigger = this.trigger; + const trigger = this.trigger; if (trigger instanceof SpeciesFormChangeCompoundTrigger) return trigger.triggers.find(t => t.hasTriggerType(triggerType)); @@ -181,7 +181,7 @@ export class SpeciesFormChangeCompoundTrigger { } canChange(pokemon: Pokemon): boolean { - for (let trigger of this.triggers) { + for (const trigger of this.triggers) { if (!trigger.canChange(pokemon)) return false; } @@ -719,12 +719,12 @@ export const pokemonFormChanges: PokemonFormChanges = { const formChangeKeys = Object.keys(pokemonFormChanges); formChangeKeys.forEach(pk => { const formChanges = pokemonFormChanges[pk]; - let newFormChanges: SpeciesFormChange[] = []; - for (let fc of formChanges) { + const newFormChanges: SpeciesFormChange[] = []; + for (const fc of formChanges) { const itemTrigger = fc.findTrigger(SpeciesFormChangeItemTrigger) as SpeciesFormChangeItemTrigger; if (itemTrigger && !formChanges.find(c => fc.formKey === c.preFormKey && fc.preFormKey === c.formKey)) newFormChanges.push(new SpeciesFormChange(fc.speciesId, fc.formKey, fc.preFormKey, new SpeciesFormChangeItemTrigger(itemTrigger.item, false))); } formChanges.push(...newFormChanges); }); -} \ No newline at end of file +} diff --git a/src/data/pokemon-level-moves.ts b/src/data/pokemon-level-moves.ts index 53eeb747acf..3e9e5779376 100644 --- a/src/data/pokemon-level-moves.ts +++ b/src/data/pokemon-level-moves.ts @@ -1,5 +1,5 @@ -import { Moves } from "./enums/moves"; -import { Species } from "./enums/species"; +import { Moves } from './enums/moves'; +import { Species } from './enums/species'; export type LevelMoves = ([integer, Moves])[]; diff --git a/src/data/pokemon-species.ts b/src/data/pokemon-species.ts index deb3fdbc00e..f4ea08d15cc 100644 --- a/src/data/pokemon-species.ts +++ b/src/data/pokemon-species.ts @@ -1,4 +1,4 @@ -import { Abilities } from "./enums/abilities"; +import { Abilities } from './enums/abilities'; import BattleScene, { AnySound } from '../battle-scene'; import { Variant, variantColorCache } from './variant'; import { variantData } from './variant'; @@ -11,12 +11,12 @@ import { uncatchableSpecies } from './biomes'; import * as Utils from '../utils'; import { StarterMoveset } from '../system/game-data'; import { speciesEggMoves } from './egg-moves'; -import { PartyMemberStrength } from "./enums/party-member-strength"; +import { PartyMemberStrength } from './enums/party-member-strength'; import { GameMode } from '../game-mode'; -import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from "@material/material-color-utilities"; +import { QuantizerCelebi, argbFromRgba, rgbaFromArgb } from '@material/material-color-utilities'; import { VariantSet } from './variant'; import i18next, { Localizable } from '../plugins/i18n'; -import { Stat } from "./pokemon-stat"; +import { Stat } from './pokemon-stat'; export enum Region { NORMAL, @@ -33,7 +33,7 @@ export function getPokemonSpecies(species: Species): PokemonSpecies { } export function getPokemonSpeciesForm(species: Species, formIndex: integer): PokemonSpeciesForm { - let retSpecies: PokemonSpecies = species >= 2000 + const retSpecies: PokemonSpecies = species >= 2000 ? allSpecies.find(s => s.speciesId === species) : allSpecies[species - 1]; if (formIndex < retSpecies.forms?.length) @@ -64,8 +64,8 @@ export function getFusedSpeciesName(speciesAName: string, speciesBName: string): const splitNameA = speciesAName.split(/ /g); const splitNameB = speciesBName.split(/ /g); - let fragAMatch = fragAPattern.exec(speciesAName); - let fragBMatch = fragBPattern.exec(speciesBName); + const fragAMatch = fragAPattern.exec(speciesAName); + const fragBMatch = fragBPattern.exec(speciesBName); let fragA: string; let fragB: string; @@ -124,19 +124,19 @@ export abstract class PokemonSpeciesForm { constructor(type1: Type, type2: Type, height: number, weight: number, ability1: Abilities, ability2: Abilities, abilityHidden: Abilities, baseTotal: integer, baseHp: integer, baseAtk: integer, baseDef: integer, baseSpatk: integer, baseSpdef: integer, baseSpd: integer, catchRate: integer, baseFriendship: integer, baseExp: integer, genderDiffs: boolean) { - this.type1 = type1; - this.type2 = type2; - this.height = height; - this.weight = weight; - this.ability1 = ability1; - this.ability2 = ability2; - this.abilityHidden = abilityHidden; - this.baseTotal = baseTotal; - this.baseStats = [ baseHp, baseAtk, baseDef, baseSpatk, baseSpdef, baseSpd ]; - this.catchRate = catchRate; - this.baseFriendship = baseFriendship; - this.baseExp = baseExp; - this.genderDiffs = genderDiffs; + this.type1 = type1; + this.type2 = type2; + this.height = height; + this.weight = weight; + this.ability1 = ability1; + this.ability2 = ability2; + this.abilityHidden = abilityHidden; + this.baseTotal = baseTotal; + this.baseStats = [ baseHp, baseAtk, baseDef, baseSpatk, baseSpdef, baseSpd ]; + this.catchRate = catchRate; + this.baseFriendship = baseFriendship; + this.baseExp = baseExp; + this.genderDiffs = genderDiffs; } getRootSpeciesId(forStarter: boolean = false): Species { @@ -186,8 +186,8 @@ export abstract class PokemonSpeciesForm { isRareRegional(): boolean { switch (this.getRegion()) { - case Region.HISUI: - return true; + case Region.HISUI: + return true; } return false; @@ -199,20 +199,20 @@ export abstract class PokemonSpeciesForm { * @returns The species' base stat amount. */ getBaseStat(stat: Stat): integer { - return this.baseStats[stat] + return this.baseStats[stat]; } getBaseExp(): integer { let ret = this.baseExp; switch (this.getFormSpriteKey()) { - case SpeciesFormKey.MEGA: - case SpeciesFormKey.MEGA_X: - case SpeciesFormKey.MEGA_Y: - case SpeciesFormKey.PRIMAL: - case SpeciesFormKey.GIGANTAMAX: - case SpeciesFormKey.ETERNAMAX: - ret *= 1.5; - break; + case SpeciesFormKey.MEGA: + case SpeciesFormKey.MEGA_X: + case SpeciesFormKey.MEGA_Y: + case SpeciesFormKey.PRIMAL: + case SpeciesFormKey.GIGANTAMAX: + case SpeciesFormKey.ETERNAMAX: + ret *= 1.5; + break; } return ret; } @@ -262,27 +262,27 @@ export abstract class PokemonSpeciesForm { ret += 's'; switch (this.speciesId) { - case Species.HIPPOPOTAS: - case Species.HIPPOWDON: - case Species.UNFEZANT: - case Species.FRILLISH: - case Species.JELLICENT: - ret += female ? '-f' : ''; - break; + case Species.HIPPOPOTAS: + case Species.HIPPOWDON: + case Species.UNFEZANT: + case Species.FRILLISH: + case Species.JELLICENT: + ret += female ? '-f' : ''; + break; } let formSpriteKey = this.getFormSpriteKey(formIndex); if (formSpriteKey) { switch (this.speciesId) { - case Species.DUDUNSPARCE: - break; - case Species.ZACIAN: - case Species.ZAMAZENTA: - if (formSpriteKey.startsWith('behemoth')) - formSpriteKey = 'crowned'; - default: - ret += `-${formSpriteKey}`; - break; + case Species.DUDUNSPARCE: + break; + case Species.ZACIAN: + case Species.ZAMAZENTA: + if (formSpriteKey.startsWith('behemoth')) + formSpriteKey = 'crowned'; + default: + ret += `-${formSpriteKey}`; + break; } } @@ -296,15 +296,15 @@ export abstract class PokemonSpeciesForm { let speciesId = this.speciesId; if (this.speciesId > 2000) { switch (this.speciesId) { - case Species.GALAR_SLOWPOKE: - break; - case Species.ETERNAL_FLOETTE: - break; - case Species.BLOODMOON_URSALUNA: - break; - default: - speciesId = speciesId % 2000; - break; + case Species.GALAR_SLOWPOKE: + break; + case Species.ETERNAL_FLOETTE: + break; + case Species.BLOODMOON_URSALUNA: + break; + default: + speciesId = speciesId % 2000; + break; } } let ret = speciesId.toString(); @@ -316,41 +316,41 @@ export abstract class PokemonSpeciesForm { } const formKey = forms[formIndex || 0].formKey; switch (formKey) { - case SpeciesFormKey.MEGA: - case SpeciesFormKey.MEGA_X: - case SpeciesFormKey.MEGA_Y: - case SpeciesFormKey.GIGANTAMAX: - case SpeciesFormKey.GIGANTAMAX_SINGLE: - case SpeciesFormKey.GIGANTAMAX_RAPID: - case 'white': - case 'black': - case 'therian': - case 'sky': - case 'gorging': - case 'gulping': - case 'no-ice': - case 'hangry': - case 'crowned': - case 'eternamax': - case 'four': - case 'droopy': - case 'stretchy': - case 'roaming': - case 'complete': - case '10': - case 'super': - case 'unbound': - case 'pau': - case 'pompom': - case 'sensu': - case 'dusk': - case 'midnight': - case 'school': - case 'dawn-wings': - case 'dusk-mane': - case 'ultra': - ret += `-${formKey}`; - break; + case SpeciesFormKey.MEGA: + case SpeciesFormKey.MEGA_X: + case SpeciesFormKey.MEGA_Y: + case SpeciesFormKey.GIGANTAMAX: + case SpeciesFormKey.GIGANTAMAX_SINGLE: + case SpeciesFormKey.GIGANTAMAX_RAPID: + case 'white': + case 'black': + case 'therian': + case 'sky': + case 'gorging': + case 'gulping': + case 'no-ice': + case 'hangry': + case 'crowned': + case 'eternamax': + case 'four': + case 'droopy': + case 'stretchy': + case 'roaming': + case 'complete': + case '10': + case 'super': + case 'unbound': + case 'pau': + case 'pompom': + case 'sensu': + case 'dusk': + case 'midnight': + case 'school': + case 'dawn-wings': + case 'dusk-mane': + case 'ultra': + ret += `-${formKey}`; + break; } } return ret; @@ -358,7 +358,7 @@ export abstract class PokemonSpeciesForm { validateStarterMoveset(moveset: StarterMoveset, eggMoves: integer): boolean { const rootSpeciesId = this.getRootSpeciesId(); - for (let moveId of moveset) { + for (const moveId of moveset) { if (speciesEggMoves.hasOwnProperty(rootSpeciesId)) { const eggMoveIndex = speciesEggMoves[rootSpeciesId].findIndex(m => m === moveId); if (eggMoveIndex > -1 && eggMoves & Math.pow(2, eggMoveIndex)) @@ -383,7 +383,7 @@ export abstract class PokemonSpeciesForm { const originalWarn = console.warn; // Ignore warnings for missing frames, because there will be a lot console.warn = () => {}; - const frameNames = scene.anims.generateFrameNames(spriteKey, { zeroPad: 4, suffix: ".png", start: 1, end: 400 }); + const frameNames = scene.anims.generateFrameNames(spriteKey, { zeroPad: 4, suffix: '.png', start: 1, end: 400 }); console.warn = originalWarn; scene.anims.create({ key: this.getSpriteKey(female, formIndex, shiny, variant), @@ -529,17 +529,17 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali if (formIndex !== undefined && this.forms.length) { const form = this.forms[formIndex]; switch (form.formKey) { - case SpeciesFormKey.MEGA: - case SpeciesFormKey.PRIMAL: - case SpeciesFormKey.ETERNAMAX: - return `${form.formName} ${this.name}`; - case SpeciesFormKey.MEGA_X: - return `Mega ${this.name} X`; - case SpeciesFormKey.MEGA_Y: - return `Mega ${this.name} Y`; - default: - if (form.formKey.indexOf(SpeciesFormKey.GIGANTAMAX) > -1) - return `G-Max ${this.name}`; + case SpeciesFormKey.MEGA: + case SpeciesFormKey.PRIMAL: + case SpeciesFormKey.ETERNAMAX: + return `${form.formName} ${this.name}`; + case SpeciesFormKey.MEGA_X: + return `Mega ${this.name} X`; + case SpeciesFormKey.MEGA_Y: + return `Mega ${this.name} Y`; + default: + if (form.formKey.indexOf(SpeciesFormKey.GIGANTAMAX) > -1) + return `G-Max ${this.name}`; } } return this.name; @@ -559,18 +559,18 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali private getStrengthLevelDiff(strength: PartyMemberStrength): integer { switch (Math.min(strength, PartyMemberStrength.STRONGER)) { - case PartyMemberStrength.WEAKEST: - return 60; - case PartyMemberStrength.WEAKER: - return 40; - case PartyMemberStrength.WEAK: - return 20; - case PartyMemberStrength.AVERAGE: - return 10; - case PartyMemberStrength.STRONG: - return 5; - default: - return 0; + case PartyMemberStrength.WEAKEST: + return 60; + case PartyMemberStrength.WEAKER: + return 40; + case PartyMemberStrength.WEAK: + return 20; + case PartyMemberStrength.AVERAGE: + return 10; + case PartyMemberStrength.STRONG: + return 5; + default: + return 0; } } @@ -597,7 +597,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali let totalWeight = 0; let noEvolutionChance = 1; - for (let ev of evolutions) { + for (const ev of evolutions) { if (ev.level > level) continue; @@ -619,7 +619,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali evolutionChance = Math.min(minChance + easeInFunc(Math.min(level - ev.level, maxLevelDiff) / maxLevelDiff) * (1 - minChance), 1); } } else { - let preferredMinLevel = Math.max((ev.level - 1) + ev.wildDelay * this.getStrengthLevelDiff(strength), 1); + const preferredMinLevel = Math.max((ev.level - 1) + ev.wildDelay * this.getStrengthLevelDiff(strength), 1); let evolutionLevel = Math.max(ev.level > 1 ? ev.level : Math.floor(preferredMinLevel / 2), 1); if (ev.level <= 1 && pokemonPrevolutions.hasOwnProperty(this.speciesId)) { @@ -650,7 +650,7 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali const randValue = evolutionPool.size === 1 ? 0 : Utils.randSeedInt(totalWeight); - for (let weight of evolutionPool.keys()) { + for (const weight of evolutionPool.keys()) { if (randValue < weight) return getPokemonSpecies(evolutionPool.get(weight)).getSpeciesForLevel(level, true, forTrainer, strength); } @@ -664,13 +664,13 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali //console.log(Species[this.speciesId], pokemonEvolutions[this.speciesId]) if (pokemonEvolutions.hasOwnProperty(this.speciesId)) { - for (let e of pokemonEvolutions[this.speciesId]) { + for (const e of pokemonEvolutions[this.speciesId]) { const speciesId = e.speciesId; const level = e.level; evolutionLevels.push([ speciesId, level ]); //console.log(Species[speciesId], getPokemonSpecies(speciesId), getPokemonSpecies(speciesId).getEvolutionLevels()); const nextEvolutionLevels = getPokemonSpecies(speciesId).getEvolutionLevels(); - for (let npl of nextEvolutionLevels) + for (const npl of nextEvolutionLevels) evolutionLevels.push(npl); } } @@ -682,14 +682,14 @@ export default class PokemonSpecies extends PokemonSpeciesForm implements Locali const prevolutionLevels = []; const allEvolvingPokemon = Object.keys(pokemonEvolutions); - for (let p of allEvolvingPokemon) { - for (let e of pokemonEvolutions[p]) { + for (const p of allEvolvingPokemon) { + for (const e of pokemonEvolutions[p]) { if (e.speciesId === this.speciesId && (!this.forms.length || !e.evoFormKey || e.evoFormKey === this.forms[this.formIndex].formKey)) { const speciesId = parseInt(p) as Species; - let level = e.level; + const level = e.level; prevolutionLevels.push([ speciesId, level ]); const subPrevolutionLevels = getPokemonSpecies(speciesId).getPrevolutionLevels(); - for (let spl of subPrevolutionLevels) + for (const spl of subPrevolutionLevels) prevolutionLevels.push(spl); } } @@ -772,1786 +772,1786 @@ export class PokemonForm extends PokemonSpeciesForm { } export enum SpeciesFormKey { - MEGA = "mega", - MEGA_X = "mega-x", - MEGA_Y = "mega-y", - PRIMAL = "primal", - ORIGIN = "origin", - INCARNATE = "incarnate", - THERIAN = "therian", - GIGANTAMAX = "gigantamax", - GIGANTAMAX_SINGLE = "gigantamax-single", - GIGANTAMAX_RAPID = "gigantamax-rapid", - ETERNAMAX = "eternamax" + MEGA = 'mega', + MEGA_X = 'mega-x', + MEGA_Y = 'mega-y', + PRIMAL = 'primal', + ORIGIN = 'origin', + INCARNATE = 'incarnate', + THERIAN = 'therian', + GIGANTAMAX = 'gigantamax', + GIGANTAMAX_SINGLE = 'gigantamax-single', + GIGANTAMAX_RAPID = 'gigantamax-rapid', + ETERNAMAX = 'eternamax' } 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), - 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, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 625, 100, 90, 120, 110, 130, 75, 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), - 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, 90.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 634, 98, 100, 96, 135, 110, 95, 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), - 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, null, 25, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 630, 100, 95, 130, 105, 125, 75, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.BUG, Type.FLYING, 17, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 495, 75, 50, 75, 120, 100, 75, 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, 178, 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, 178), - 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, 178), - ), - 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, 216, 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, 216), - 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, 216), - ), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ELECTRIC, null, 21, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 420, 45, 60, 65, 100, 75, 75, 190, 50, 112, true), - ), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 33, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 390, 50, 85, 60, 70, 50, 75, 255, 50, 58), - ), - 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), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIGHTING, null, 25, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 605, 113, 170, 90, 70, 95, 67, 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, 221, 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, 223, 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), - 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), - 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, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 600, 75, 95, 85, 160, 95, 90, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 19, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 575, 70, 165, 145, 60, 70, 65, 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), - 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), - 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), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.ICE, 24, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 635, 160, 95, 110, 95, 125, 50, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 18, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 425, 70, 75, 80, 60, 95, 45, 45, 50, 65), - ), - 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), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 35, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 640, 200, 130, 85, 75, 130, 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), - 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, 236, 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, 240, 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, 239, 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), - 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), - ), - 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, 230, 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, 230), - 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, 230), - ), - 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, 207, 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - ), - 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), - 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), - 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), - 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), - 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, 635, 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), - 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), - 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), - 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), - 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, 178, 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, 173, 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, 0, 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), - 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.NONE, 280, 60, 60, 60, 35, 35, 30, 255, 70, 56, GrowthRate.SLOW, 50, false), - 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.NONE, 440, 80, 80, 80, 55, 55, 90, 120, 70, 154, GrowthRate.SLOW, 50, false), - new PokemonSpecies(Species.SLAKING, 3, false, false, false, "Lazy Pokémon", Type.NORMAL, null, 2, 130.5, Abilities.TRUANT, Abilities.NONE, Abilities.NONE, 670, 150, 160, 100, 95, 65, 100, 45, 70, 252, GrowthRate.SLOW, 50, false), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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, 3, 35, 60, GrowthRate.SLOW, null, false), - 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, 3, 35, 147, GrowthRate.SLOW, null, false), - 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, 3, 35, 300, GrowthRate.SLOW, null, false, true, - 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), - 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), - 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), - 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), - 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), - 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), - 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, 270, 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, 270, false, ""), - 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, 270), - 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, 270), - 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, 270), - ), - 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, 236, 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, 240, 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, 239, 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, 218, 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), - 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), - 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), - ), - 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), - 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), - 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), - ), - 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), - 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), - 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), - ), - 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), - 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), - ), - 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), - 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), - 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), - 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), - 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), - 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), - 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, 154), - 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, 154), - 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, 154), - 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, 154), - 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, 154), - ), - 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), - 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), - 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), - new PokemonForm("Origin Forme", "origin", Type.GHOST, Type.DRAGON, 6.9, 650, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 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, 216, 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, 270, 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, 270, 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, 270, 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, 270), - 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, 270), - ), - 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, 324, 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - 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, 324), - new PokemonForm("???", "unknown", Type.UNKNOWN, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324), - ), - new PokemonSpecies(Species.VICTINI, 4, 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, 238, 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, 238, 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, 238, 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), - new PokemonForm("Mega", SpeciesFormKey.MEGA, Type.NORMAL, Type.FAIRY, 1.5, 32, Abilities.HEALER, Abilities.HEALER, Abilities.HEALER, 545, 103, 60, 126, 80, 126, 50, 255, 50, 390), - ), - 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, 225, 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), - 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), - 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), - ), - 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), - 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, 168), - ), - 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.NONE, 401, 55, 112, 45, 74, 45, 70, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), - new PokemonSpecies(Species.ARCHEOPS, 5, false, false, false, "First Bird Pokémon", Type.ROCK, Type.FLYING, 1.4, 32, Abilities.DEFEATIST, Abilities.NONE, Abilities.NONE, 567, 75, 140, 65, 112, 65, 110, 45, 50, 177, GrowthRate.MEDIUM_FAST, 87.5, false), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.POISON, null, 21, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 574, 100, 125, 102, 80, 102, 65, 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), - 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), - 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), - 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), - ), - 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), - 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), - 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), - 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), - ), - 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.IRON_BARBS, 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, 232, 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), - 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), - 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), - 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), - 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, 330), - 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, 330), - ), - 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), - 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, 270, GrowthRate.SLOW, 0, 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, 270), - 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, 270), - ), - 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), - 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, 239, 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, 240, 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), - 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, ""), - ), - 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), - 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, ""), - ), - 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, 239, 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, 239), - 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, 239, false, ""), - 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, 239), - ), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - ), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - ), - 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, 185, 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - 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, 185), - ), - 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), - 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), - 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), - 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), - 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), - ), - 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), - 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), - 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), - 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), - 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), - ), - 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, 248, 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, 248), - 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, 248), - 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, 248), - 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, 248), - 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, 248), - ), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - ), - 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, ""), - 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), - ), - 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, ""), - 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), - 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), - 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), - 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), - ), - 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), - 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), - 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), - 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), - ), - 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), - 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, ""), - 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, 300), - 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, ""), - 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, 300, false, "10"), - new PokemonForm("Complete Forme", "complete", Type.DRAGON, Type.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 300), - ), - 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), - 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, 270, 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, 270), - 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, 270), - ), - 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, 218, 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, ""), - 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), - 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), - 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), - ), - 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), - 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, ""), - ), - 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, ""), - 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), - 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), - ), - 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), - 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, 61), - ), - 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.NONE, 230, 25, 35, 40, 20, 30, 80, 90, 50, 46, GrowthRate.MEDIUM_FAST, 50, false), - new PokemonSpecies(Species.GOLISOPOD, 7, false, false, false, "Hard Scale Pokémon", Type.BUG, Type.WATER, 2, 108, Abilities.EMERGENCY_EXIT, Abilities.NONE, Abilities.NONE, 530, 75, 125, 140, 60, 90, 40, 45, 50, 186, GrowthRate.MEDIUM_FAST, 50, false), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, ""), - 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, 154), - 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, 154), - 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, 154), - 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, 154), - 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, 154), - 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, 154), - 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, 154), - ), - 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, ""), - 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), - 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, 300), - 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, 300), - 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, 300), - ), - 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), - 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), - ), - 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), - 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) - ), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, null, 25, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 700, 170, 165, 165, 95, 75, 30, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, null, 28, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 630, 125, 150, 115, 75, 90, 75, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, null, 27, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 630, 100, 145, 90, 75, 90, 130, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 40, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 630, 90, 100, 90, 150, 90, 110, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FLYING, Type.STEEL, 14, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 595, 125, 100, 135, 60, 95, 80, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.BUG, Type.PSYCHIC, 14, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 605, 75, 50, 140, 90, 150, 100, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.ROCK, 24, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 585, 115, 150, 110, 55, 85, 70, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ROCK, Type.FIRE, 42, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 610, 140, 95, 150, 95, 105, 25, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.DRAGON, 24, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 585, 90, 140, 90, 120, 75, 70, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.DRAGON, 24, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 585, 140, 95, 95, 135, 95, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.GROUND, null, 22, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 610, 90, 135, 150, 75, 80, 80, 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), - 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, ""), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.ELECTRIC, Type.POISON, 24, 40, Abilities.PUNK_ROCK, Abilities.MINUS, Abilities.TECHNICIAN, 602, 95, 118, 80, 144, 80, 85, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FIRE, Type.BUG, 75, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 625, 125, 145, 75, 105, 105, 70, 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, ""), - 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, ""), - ), - 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, ""), - 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, ""), - ), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.PSYCHIC, Type.FAIRY, 26, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 610, 70, 105, 110, 160, 125, 40, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.DARK, Type.FAIRY, 32, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 610, 120, 155, 75, 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, ""), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.FAIRY, null, 30, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 595, 80, 70, 85, 140, 150, 65, 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), - 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, ""), - 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), - ), - 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, ""), - 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, null, 23, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 600, 150, 160, 80, 90, 80, 40, 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), - new PokemonForm("G-Max", SpeciesFormKey.GIGANTAMAX, Type.STEEL, Type.DRAGON, 43, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 635, 90, 110, 145, 140, 60, 90, 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", Type.FAIRY, null, 2.8, 110, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, ""), - 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, 335), - ), - 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", Type.FIGHTING, null, 2.9, 210, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, ""), - 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, 335), - ), - 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), - new PokemonForm("E-Max", "eternamax", Type.POISON, Type.DRAGON, 100, 0, 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, ""), - 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), - new PokemonForm("G-Max Single Strike Style", SpeciesFormKey.GIGANTAMAX_SINGLE, Type.FIGHTING, Type.DARK, 29, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 160, 120, 75, 70, 100, 3, 50, 275), - new PokemonForm("G-Max Rapid Strike Style", SpeciesFormKey.GIGANTAMAX_RAPID, Type.FIGHTING, Type.WATER, 26, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 160, 120, 75, 70, 100, 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), - 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), - ), - 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), - 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, 250), - 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, 250), - ), - 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, ""), - 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), - ), - 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), - 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, ""), - 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), - ), - 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.3, 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.8, 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), - 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), - 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), - 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), - ), - 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, false, - 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), - 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), - 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), - 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), - 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), - ), - 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, ""), - 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), - ), - 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), - new PokemonForm("Limited Build", "limited-build", Type.FIGHTING, Type.DRAGON, 3.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335), - new PokemonForm("Sprinting Build", "sprinting-build", Type.FIGHTING, Type.DRAGON, 3.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335), - new PokemonForm("Swimming Build", "swimming-build", Type.FIGHTING, Type.DRAGON, 3.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335), - new PokemonForm("Gliding Build", "gliding-build", Type.FIGHTING, Type.DRAGON, 3.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335), - ), - 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), - new PokemonForm("Low-Power Mode", "low-power-mode", Type.ELECTRIC, Type.DRAGON, 2.8, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335), - new PokemonForm("Drive Mode", "drive-mode", Type.ELECTRIC, Type.DRAGON, 2.8, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335), - new PokemonForm("Aquatic Mode", "aquatic-mode", Type.ELECTRIC, Type.DRAGON, 2.8, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335), - new PokemonForm("Glide Mode", "glide-mode", Type.ELECTRIC, Type.DRAGON, 2.8, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335), - ), - 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, 5, 0, 295, GrowthRate.SLOW, null, false), - 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, 5, 0, 295, GrowthRate.SLOW, null, false), - 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.SLOW, null, 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), - 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), - ), - 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), - 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), - 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, 90), - 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, 90), - ), - 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, false, 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, 130, GrowthRate.MEDIUM_FAST, 0, false), - 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), - 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, 85, 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, 83, 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, 85, 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, 80, 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, 80, 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, 80, 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, 85, 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, ""), - 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), - 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), - ), - 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, false, 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, 275, GrowthRate.MEDIUM_FAST, 50, false), + 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), + 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, 100, Abilities.OVERGROW, Abilities.NONE, Abilities.CHLOROPHYLL, 625, 100, 90, 120, 110, 130, 75, 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), + 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, 90.5, Abilities.BLAZE, Abilities.NONE, Abilities.SOLAR_POWER, 634, 98, 100, 96, 135, 110, 95, 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), + 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, null, 25, 85.5, Abilities.TORRENT, Abilities.NONE, Abilities.RAIN_DISH, 630, 100, 95, 130, 105, 125, 75, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.BUG, Type.FLYING, 17, 32, Abilities.COMPOUND_EYES, Abilities.NONE, Abilities.TINTED_LENS, 495, 75, 50, 75, 120, 100, 75, 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, 178, 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, 178), + 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, 178), + ), + 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, 216, 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, 216), + 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, 216), + ), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.ELECTRIC, null, 21, 6, Abilities.STATIC, Abilities.NONE, Abilities.LIGHTNING_ROD, 420, 45, 60, 65, 100, 75, 75, 190, 50, 112, true), + ), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 33, 4.2, Abilities.PICKUP, Abilities.TECHNICIAN, Abilities.UNNERVE, 390, 50, 85, 60, 70, 50, 75, 255, 50, 58), + ), + 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), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.FIGHTING, null, 25, 130, Abilities.GUTS, Abilities.NO_GUARD, Abilities.STEADFAST, 605, 113, 170, 90, 70, 95, 67, 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, 221, 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, 223, 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), + 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), + 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, 40.5, Abilities.CURSED_BODY, Abilities.NONE, Abilities.NONE, 600, 75, 95, 85, 160, 95, 90, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 19, 60, Abilities.HYPER_CUTTER, Abilities.SHELL_ARMOR, Abilities.SHEER_FORCE, 575, 70, 165, 145, 60, 70, 65, 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), + 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), + 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), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.ICE, 24, 220, Abilities.WATER_ABSORB, Abilities.SHELL_ARMOR, Abilities.HYDRATION, 635, 160, 95, 110, 95, 125, 50, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 18, 6.5, Abilities.RUN_AWAY, Abilities.ADAPTABILITY, Abilities.ANTICIPATION, 425, 70, 75, 80, 60, 95, 45, 45, 50, 65), + ), + 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), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.NORMAL, null, 35, 460, Abilities.IMMUNITY, Abilities.THICK_FAT, Abilities.GLUTTONY, 640, 200, 130, 85, 75, 130, 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), + 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, 236, 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, 240, 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, 239, 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), + 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), + ), + 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, 230, 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, 230), + 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, 230), + ), + 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, 207, 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + ), + 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), + 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), + 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), + 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), + 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, 635, 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), + 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), + 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), + 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), + 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, 178, 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, 173, 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, 0, 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), + 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.NONE, 280, 60, 60, 60, 35, 35, 30, 255, 70, 56, GrowthRate.SLOW, 50, false), + 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.NONE, 440, 80, 80, 80, 55, 55, 90, 120, 70, 154, GrowthRate.SLOW, 50, false), + new PokemonSpecies(Species.SLAKING, 3, false, false, false, 'Lazy Pokémon', Type.NORMAL, null, 2, 130.5, Abilities.TRUANT, Abilities.NONE, Abilities.NONE, 670, 150, 160, 100, 95, 65, 100, 45, 70, 252, GrowthRate.SLOW, 50, false), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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, 3, 35, 60, GrowthRate.SLOW, null, false), + 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, 3, 35, 147, GrowthRate.SLOW, null, false), + 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, 3, 35, 300, GrowthRate.SLOW, null, false, true, + 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), + 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), + 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), + 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), + 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), + 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), + 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, 270, 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, 270, false, ''), + 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, 270), + 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, 270), + 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, 270), + ), + 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, 236, 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, 240, 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, 239, 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, 218, 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), + 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), + 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), + ), + 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), + 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), + 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), + ), + 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), + 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), + 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), + ), + 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), + 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), + ), + 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), + 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), + 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), + 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), + 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), + 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), + 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, 154), + 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, 154), + 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, 154), + 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, 154), + 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, 154), + ), + 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), + 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), + 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), + new PokemonForm('Origin Forme', 'origin', Type.GHOST, Type.DRAGON, 6.9, 650, Abilities.LEVITATE, Abilities.NONE, Abilities.NONE, 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, 216, 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, 270, 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, 270, 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, 270, 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, 270), + 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, 270), + ), + 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, 324, 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + 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, 324), + new PokemonForm('???', 'unknown', Type.UNKNOWN, null, 3.2, 320, Abilities.MULTITYPE, Abilities.NONE, Abilities.NONE, 720, 120, 120, 120, 120, 120, 120, 3, 0, 324), + ), + new PokemonSpecies(Species.VICTINI, 4, 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, 238, 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, 238, 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, 238, 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), + new PokemonForm('Mega', SpeciesFormKey.MEGA, Type.NORMAL, Type.FAIRY, 1.5, 32, Abilities.HEALER, Abilities.HEALER, Abilities.HEALER, 545, 103, 60, 126, 80, 126, 50, 255, 50, 390), + ), + 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, 225, 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), + 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), + 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), + ), + 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), + 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, 168), + ), + 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.NONE, 401, 55, 112, 45, 74, 45, 70, 45, 50, 71, GrowthRate.MEDIUM_FAST, 87.5, false), + new PokemonSpecies(Species.ARCHEOPS, 5, false, false, false, 'First Bird Pokémon', Type.ROCK, Type.FLYING, 1.4, 32, Abilities.DEFEATIST, Abilities.NONE, Abilities.NONE, 567, 75, 140, 65, 112, 65, 110, 45, 50, 177, GrowthRate.MEDIUM_FAST, 87.5, false), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.POISON, null, 21, 107.3, Abilities.STENCH, Abilities.WEAK_ARMOR, Abilities.AFTERMATH, 574, 100, 125, 102, 80, 102, 65, 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), + 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), + 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), + 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), + ), + 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), + 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), + 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), + 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), + ), + 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.IRON_BARBS, 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, 232, 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), + 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), + 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), + 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), + 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, 330), + 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, 330), + ), + 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), + 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, 270, GrowthRate.SLOW, 0, 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, 270), + 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, 270), + ), + 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), + 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, 239, 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, 240, 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), + 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, ''), + ), + 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), + 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, ''), + ), + 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, 239, 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, 239), + 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, 239, false, ''), + 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, 239), + ), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + ), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + ), + 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, 185, 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + 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, 185), + ), + 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), + 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), + 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), + 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), + 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), + ), + 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), + 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), + 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), + 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), + 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), + ), + 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, 248, 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, 248), + 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, 248), + 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, 248), + 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, 248), + 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, 248), + ), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + ), + 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, ''), + 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), + ), + 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, ''), + 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), + 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), + 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), + 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), + ), + 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), + 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), + 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), + 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), + ), + 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), + 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, ''), + 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, 300), + 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, ''), + 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, 300, false, '10'), + new PokemonForm('Complete Forme', 'complete', Type.DRAGON, Type.GROUND, 4.5, 610, Abilities.POWER_CONSTRUCT, Abilities.NONE, Abilities.NONE, 708, 216, 100, 121, 91, 95, 85, 3, 0, 300), + ), + 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), + 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, 270, 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, 270), + 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, 270), + ), + 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, 218, 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, ''), + 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), + 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), + 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), + ), + 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), + 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, ''), + ), + 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, ''), + 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), + 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), + ), + 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), + 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, 61), + ), + 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.NONE, 230, 25, 35, 40, 20, 30, 80, 90, 50, 46, GrowthRate.MEDIUM_FAST, 50, false), + new PokemonSpecies(Species.GOLISOPOD, 7, false, false, false, 'Hard Scale Pokémon', Type.BUG, Type.WATER, 2, 108, Abilities.EMERGENCY_EXIT, Abilities.NONE, Abilities.NONE, 530, 75, 125, 140, 60, 90, 40, 45, 50, 186, GrowthRate.MEDIUM_FAST, 50, false), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, ''), + 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, 154), + 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, 154), + 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, 154), + 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, 154), + 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, 154), + 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, 154), + 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, 154), + ), + 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, ''), + 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), + 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, 300), + 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, 300), + 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, 300), + ), + 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), + 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), + ), + 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), + 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) + ), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.STEEL, null, 25, 800, Abilities.IRON_FIST, Abilities.NONE, Abilities.NONE, 700, 170, 165, 165, 95, 75, 30, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.GRASS, null, 28, 90, Abilities.OVERGROW, Abilities.NONE, Abilities.GRASSY_SURGE, 630, 125, 150, 115, 75, 90, 75, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.FIRE, null, 27, 33, Abilities.BLAZE, Abilities.NONE, Abilities.LIBERO, 630, 100, 145, 90, 75, 90, 130, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.WATER, null, 40, 45.2, Abilities.TORRENT, Abilities.NONE, Abilities.SNIPER, 630, 90, 100, 90, 150, 90, 110, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.FLYING, Type.STEEL, 14, 75, Abilities.PRESSURE, Abilities.UNNERVE, Abilities.MIRROR_ARMOR, 595, 125, 100, 135, 60, 95, 80, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.BUG, Type.PSYCHIC, 14, 40.8, Abilities.SWARM, Abilities.FRISK, Abilities.TELEPATHY, 605, 75, 50, 140, 90, 150, 100, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.WATER, Type.ROCK, 24, 115.5, Abilities.STRONG_JAW, Abilities.SHELL_ARMOR, Abilities.SWIFT_SWIM, 585, 115, 150, 110, 55, 85, 70, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.ROCK, Type.FIRE, 42, 310.5, Abilities.STEAM_ENGINE, Abilities.FLAME_BODY, Abilities.FLASH_FIRE, 610, 140, 95, 150, 95, 105, 25, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.DRAGON, 24, 1, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.HUSTLE, 585, 90, 140, 90, 120, 75, 70, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.GRASS, Type.DRAGON, 24, 13, Abilities.RIPEN, Abilities.GLUTTONY, Abilities.THICK_FAT, 585, 140, 95, 95, 135, 95, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.GROUND, null, 22, 65.5, Abilities.SAND_SPIT, Abilities.SHED_SKIN, Abilities.SAND_VEIL, 610, 90, 135, 150, 75, 80, 80, 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), + 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, ''), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.ELECTRIC, Type.POISON, 24, 40, Abilities.PUNK_ROCK, Abilities.MINUS, Abilities.TECHNICIAN, 602, 95, 118, 80, 144, 80, 85, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.FIRE, Type.BUG, 75, 120, Abilities.FLASH_FIRE, Abilities.WHITE_SMOKE, Abilities.FLAME_BODY, 625, 125, 145, 75, 105, 105, 70, 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, ''), + 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, ''), + ), + 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, ''), + 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, ''), + ), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.PSYCHIC, Type.FAIRY, 26, 5.1, Abilities.HEALER, Abilities.ANTICIPATION, Abilities.MAGIC_BOUNCE, 610, 70, 105, 110, 160, 125, 40, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.DARK, Type.FAIRY, 32, 61, Abilities.PRANKSTER, Abilities.FRISK, Abilities.PICKPOCKET, 610, 120, 155, 75, 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, ''), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.FAIRY, null, 30, 0.5, Abilities.SWEET_VEIL, Abilities.NONE, Abilities.AROMA_VEIL, 595, 80, 70, 85, 140, 150, 65, 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), + 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, ''), + 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), + ), + 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, ''), + 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.STEEL, null, 23, 650, Abilities.SHEER_FORCE, Abilities.NONE, Abilities.HEAVY_METAL, 600, 150, 160, 80, 90, 80, 40, 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), + new PokemonForm('G-Max', SpeciesFormKey.GIGANTAMAX, Type.STEEL, Type.DRAGON, 43, 40, Abilities.LIGHT_METAL, Abilities.HEAVY_METAL, Abilities.STALWART, 635, 90, 110, 145, 140, 60, 90, 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', Type.FAIRY, null, 2.8, 110, Abilities.INTREPID_SWORD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, ''), + 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, 335), + ), + 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', Type.FIGHTING, null, 2.9, 210, Abilities.DAUNTLESS_SHIELD, Abilities.NONE, Abilities.NONE, 660, 92, 120, 115, 80, 115, 138, 10, 0, 335, false, ''), + 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, 335), + ), + 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), + new PokemonForm('E-Max', 'eternamax', Type.POISON, Type.DRAGON, 100, 0, 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, ''), + 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), + new PokemonForm('G-Max Single Strike Style', SpeciesFormKey.GIGANTAMAX_SINGLE, Type.FIGHTING, Type.DARK, 29, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 160, 120, 75, 70, 100, 3, 50, 275), + new PokemonForm('G-Max Rapid Strike Style', SpeciesFormKey.GIGANTAMAX_RAPID, Type.FIGHTING, Type.WATER, 26, 105, Abilities.UNSEEN_FIST, Abilities.NONE, Abilities.NONE, 650, 125, 160, 120, 75, 70, 100, 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), + 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), + ), + 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), + 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, 250), + 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, 250), + ), + 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, ''), + 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), + ), + 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), + 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, ''), + 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), + ), + 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.3, 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.8, 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), + 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), + 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), + 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), + ), + 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, false, + 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), + 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), + 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), + 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), + 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), + ), + 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, ''), + 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), + ), + 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), + new PokemonForm('Limited Build', 'limited-build', Type.FIGHTING, Type.DRAGON, 3.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335), + new PokemonForm('Sprinting Build', 'sprinting-build', Type.FIGHTING, Type.DRAGON, 3.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335), + new PokemonForm('Swimming Build', 'swimming-build', Type.FIGHTING, Type.DRAGON, 3.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335), + new PokemonForm('Gliding Build', 'gliding-build', Type.FIGHTING, Type.DRAGON, 3.5, 303, Abilities.ORICHALCUM_PULSE, Abilities.NONE, Abilities.NONE, 670, 100, 135, 115, 85, 100, 135, 3, 0, 335), + ), + 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), + new PokemonForm('Low-Power Mode', 'low-power-mode', Type.ELECTRIC, Type.DRAGON, 2.8, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335), + new PokemonForm('Drive Mode', 'drive-mode', Type.ELECTRIC, Type.DRAGON, 2.8, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335), + new PokemonForm('Aquatic Mode', 'aquatic-mode', Type.ELECTRIC, Type.DRAGON, 2.8, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335), + new PokemonForm('Glide Mode', 'glide-mode', Type.ELECTRIC, Type.DRAGON, 2.8, 240, Abilities.HADRON_ENGINE, Abilities.NONE, Abilities.NONE, 670, 100, 85, 100, 135, 115, 135, 3, 0, 335), + ), + 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, 5, 0, 295, GrowthRate.SLOW, null, false), + 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, 5, 0, 295, GrowthRate.SLOW, null, false), + 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.SLOW, null, 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), + 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), + ), + 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), + 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), + 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, 90), + 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, 90), + ), + 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, false, 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, 130, GrowthRate.MEDIUM_FAST, 0, false), + 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), + 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, 85, 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, 83, 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, 85, 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, 80, 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, 80, 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, 80, 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, 85, 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, ''), + 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), + 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), + ), + 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, false, 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, 275, GrowthRate.MEDIUM_FAST, 50, false), ); } @@ -3168,25 +3168,25 @@ export const noStarterFormKeys: string[] = [ export function getStarterValueFriendshipCap(value: integer): integer { switch (value) { - case 1: - return 20; - case 2: - return 40; - case 3: - return 60; - case 4: - return 100; - case 5: - return 140; - case 6: - return 200; - case 7: - return 280; - case 8: - case 9: - return 450; - default: - return 600; + case 1: + return 20; + case 2: + return 40; + case 3: + return 60; + case 4: + return 100; + case 5: + return 140; + case 6: + return 200; + case 7: + return 280; + case 8: + case 9: + return 450; + default: + return 600; } } @@ -3765,7 +3765,7 @@ export const starterPassiveAbilities = { // TODO: Remove { //setTimeout(() => { - /*for (let tc of Object.keys(trainerConfigs)) { + /*for (let tc of Object.keys(trainerConfigs)) { console.log(TrainerType[tc], !trainerConfigs[tc].speciesFilter ? 'all' : [...new Set(allSpecies.filter(s => s.generation <= 9).filter(trainerConfigs[tc].speciesFilter).map(s => { while (pokemonPrevolutions.hasOwnProperty(s.speciesId)) s = getPokemonSpecies(pokemonPrevolutions[s.speciesId]); diff --git a/src/data/pokemon-stat.ts b/src/data/pokemon-stat.ts index 94e710c981b..3578c10a364 100644 --- a/src/data/pokemon-stat.ts +++ b/src/data/pokemon-stat.ts @@ -7,29 +7,29 @@ export enum Stat { SPATK, SPDEF, SPD -}; +} export function getStatName(stat: Stat, shorten: boolean = false) { let ret: string; switch (stat) { - case Stat.HP: - ret = !shorten ? i18next.t('pokemonInfo:Stat.HP') : i18next.t('pokemonInfo:Stat.HPshortened'); - break; - case Stat.ATK: - ret = !shorten ? i18next.t('pokemonInfo:Stat.ATK') : i18next.t('pokemonInfo:Stat.ATKshortened'); - break; - case Stat.DEF: - ret = !shorten ? i18next.t('pokemonInfo:Stat.DEF') : i18next.t('pokemonInfo:Stat.DEFshortened'); - break; - case Stat.SPATK: - ret = !shorten ? i18next.t('pokemonInfo:Stat.SPATK') : i18next.t('pokemonInfo:Stat.SPATKshortened'); - break; - case Stat.SPDEF: - ret = !shorten ? i18next.t('pokemonInfo:Stat.SPDEF') : i18next.t('pokemonInfo:Stat.SPDEFshortened'); - break; - case Stat.SPD: - ret = !shorten ? i18next.t('pokemonInfo:Stat.SPD') : i18next.t('pokemonInfo:Stat.SPDshortened'); - break; + case Stat.HP: + ret = !shorten ? i18next.t('pokemonInfo:Stat.HP') : i18next.t('pokemonInfo:Stat.HPshortened'); + break; + case Stat.ATK: + ret = !shorten ? i18next.t('pokemonInfo:Stat.ATK') : i18next.t('pokemonInfo:Stat.ATKshortened'); + break; + case Stat.DEF: + ret = !shorten ? i18next.t('pokemonInfo:Stat.DEF') : i18next.t('pokemonInfo:Stat.DEFshortened'); + break; + case Stat.SPATK: + ret = !shorten ? i18next.t('pokemonInfo:Stat.SPATK') : i18next.t('pokemonInfo:Stat.SPATKshortened'); + break; + case Stat.SPDEF: + ret = !shorten ? i18next.t('pokemonInfo:Stat.SPDEF') : i18next.t('pokemonInfo:Stat.SPDEFshortened'); + break; + case Stat.SPD: + ret = !shorten ? i18next.t('pokemonInfo:Stat.SPD') : i18next.t('pokemonInfo:Stat.SPDshortened'); + break; } return ret; -} \ No newline at end of file +} diff --git a/src/data/splash-messages.ts b/src/data/splash-messages.ts index c650b038287..21bd046b27d 100644 --- a/src/data/splash-messages.ts +++ b/src/data/splash-messages.ts @@ -1,4 +1,4 @@ -import i18next from "../plugins/i18n"; +import i18next from '../plugins/i18n'; export function getBattleCountSplashMessage(): string { return `{COUNT} ${i18next.t('splashMessages:battlesWon')}`; @@ -41,5 +41,5 @@ export function getSplashMessages(): string[] { i18next.t('splashMessages:ynoproject'), ]); - return splashMessages -} \ No newline at end of file + return splashMessages; +} diff --git a/src/data/status-effect.ts b/src/data/status-effect.ts index c14d49a3250..60040f3d9d1 100644 --- a/src/data/status-effect.ts +++ b/src/data/status-effect.ts @@ -1,4 +1,4 @@ -import * as Utils from "../utils"; +import * as Utils from '../utils'; export enum StatusEffect { NONE, @@ -34,18 +34,18 @@ export class Status { export function getStatusEffectObtainText(statusEffect: StatusEffect, sourceText?: string): string { const sourceClause = sourceText ? ` ${statusEffect !== StatusEffect.SLEEP ? 'by' : 'from'} ${sourceText}` : ''; switch (statusEffect) { - case StatusEffect.POISON: - return `\nwas poisoned${sourceClause}!`; - case StatusEffect.TOXIC: - return `\nwas badly poisoned${sourceClause}!`; - case StatusEffect.PARALYSIS: - return ` was paralyzed${sourceClause}!\nIt may be unable to move!`; - case StatusEffect.SLEEP: - return `\nfell asleep${sourceClause}!`; - case StatusEffect.FREEZE: - return `\nwas frozen solid${sourceClause}!`; - case StatusEffect.BURN: - return `\nwas burned${sourceClause}!`; + case StatusEffect.POISON: + return `\nwas poisoned${sourceClause}!`; + case StatusEffect.TOXIC: + return `\nwas badly poisoned${sourceClause}!`; + case StatusEffect.PARALYSIS: + return ` was paralyzed${sourceClause}!\nIt may be unable to move!`; + case StatusEffect.SLEEP: + return `\nfell asleep${sourceClause}!`; + case StatusEffect.FREEZE: + return `\nwas frozen solid${sourceClause}!`; + case StatusEffect.BURN: + return `\nwas burned${sourceClause}!`; } return ''; @@ -53,17 +53,17 @@ export function getStatusEffectObtainText(statusEffect: StatusEffect, sourceText export function getStatusEffectActivationText(statusEffect: StatusEffect): string { switch (statusEffect) { - case StatusEffect.POISON: - case StatusEffect.TOXIC: - return ' is hurt\nby poison!'; - case StatusEffect.PARALYSIS: - return ' is paralyzed!\nIt can\'t move!'; - case StatusEffect.SLEEP: - return ' is fast asleep.'; - case StatusEffect.FREEZE: - return ' is\nfrozen solid!'; - case StatusEffect.BURN: - return ' is hurt\nby its burn!'; + case StatusEffect.POISON: + case StatusEffect.TOXIC: + return ' is hurt\nby poison!'; + case StatusEffect.PARALYSIS: + return ' is paralyzed!\nIt can\'t move!'; + case StatusEffect.SLEEP: + return ' is fast asleep.'; + case StatusEffect.FREEZE: + return ' is\nfrozen solid!'; + case StatusEffect.BURN: + return ' is hurt\nby its burn!'; } return ''; @@ -71,17 +71,17 @@ export function getStatusEffectActivationText(statusEffect: StatusEffect): strin export function getStatusEffectOverlapText(statusEffect: StatusEffect): string { switch (statusEffect) { - case StatusEffect.POISON: - case StatusEffect.TOXIC: - return ' is\nalready poisoned!'; - case StatusEffect.PARALYSIS: - return ' is\nalready paralyzed!'; - case StatusEffect.SLEEP: - return ' is\nalready asleep!'; - case StatusEffect.FREEZE: - return ' is\nalready frozen!'; - case StatusEffect.BURN: - return ' is\nalready burned!'; + case StatusEffect.POISON: + case StatusEffect.TOXIC: + return ' is\nalready poisoned!'; + case StatusEffect.PARALYSIS: + return ' is\nalready paralyzed!'; + case StatusEffect.SLEEP: + return ' is\nalready asleep!'; + case StatusEffect.FREEZE: + return ' is\nalready frozen!'; + case StatusEffect.BURN: + return ' is\nalready burned!'; } return ''; @@ -89,17 +89,17 @@ export function getStatusEffectOverlapText(statusEffect: StatusEffect): string { export function getStatusEffectHealText(statusEffect: StatusEffect): string { switch (statusEffect) { - case StatusEffect.POISON: - case StatusEffect.TOXIC: - return ' was\ncured of its poison!'; - case StatusEffect.PARALYSIS: - return ' was\nhealed of paralysis!'; - case StatusEffect.SLEEP: - return ' woke up!'; - case StatusEffect.FREEZE: - return ' was\ndefrosted!'; - case StatusEffect.BURN: - return ' was\nhealed of its burn!'; + case StatusEffect.POISON: + case StatusEffect.TOXIC: + return ' was\ncured of its poison!'; + case StatusEffect.PARALYSIS: + return ' was\nhealed of paralysis!'; + case StatusEffect.SLEEP: + return ' woke up!'; + case StatusEffect.FREEZE: + return ' was\ndefrosted!'; + case StatusEffect.BURN: + return ' was\nhealed of its burn!'; } return ''; @@ -107,30 +107,30 @@ export function getStatusEffectHealText(statusEffect: StatusEffect): string { export function getStatusEffectDescriptor(statusEffect: StatusEffect): string { switch (statusEffect) { - case StatusEffect.POISON: - case StatusEffect.TOXIC: - return 'poisoning'; - case StatusEffect.PARALYSIS: - return 'paralysis'; - case StatusEffect.SLEEP: - return 'sleep'; - case StatusEffect.FREEZE: - return 'freezing'; - case StatusEffect.BURN: - return 'burn'; + case StatusEffect.POISON: + case StatusEffect.TOXIC: + return 'poisoning'; + case StatusEffect.PARALYSIS: + return 'paralysis'; + case StatusEffect.SLEEP: + return 'sleep'; + case StatusEffect.FREEZE: + return 'freezing'; + case StatusEffect.BURN: + return 'burn'; } } export function getStatusEffectCatchRateMultiplier(statusEffect: StatusEffect): number { switch (statusEffect) { - case StatusEffect.POISON: - case StatusEffect.TOXIC: - case StatusEffect.PARALYSIS: - case StatusEffect.BURN: - return 1.5; - case StatusEffect.SLEEP: - case StatusEffect.FREEZE: - return 2.5; + case StatusEffect.POISON: + case StatusEffect.TOXIC: + case StatusEffect.PARALYSIS: + case StatusEffect.BURN: + return 1.5; + case StatusEffect.SLEEP: + case StatusEffect.FREEZE: + return 2.5; } return 1; @@ -174,4 +174,4 @@ export function getRandomStatus(statusA: Status, statusB: Status): Status { return Utils.randIntRange(0, 2) ? statusA : statusB; -} \ No newline at end of file +} diff --git a/src/data/temp-battle-stat.ts b/src/data/temp-battle-stat.ts index 72dff92fe52..568d5b17892 100644 --- a/src/data/temp-battle-stat.ts +++ b/src/data/temp-battle-stat.ts @@ -1,4 +1,4 @@ -import { BattleStat, getBattleStatName } from "./battle-stat"; +import { BattleStat, getBattleStatName } from './battle-stat'; export enum TempBattleStat { ATK, @@ -18,19 +18,19 @@ export function getTempBattleStatName(tempBattleStat: TempBattleStat) { export function getTempBattleStatBoosterItemName(tempBattleStat: TempBattleStat) { switch (tempBattleStat) { - case TempBattleStat.ATK: - return 'X Attack'; - case TempBattleStat.DEF: - return 'X Defense'; - case TempBattleStat.SPATK: - return 'X Sp. Atk'; - case TempBattleStat.SPDEF: - return 'X Sp. Def'; - case TempBattleStat.SPD: - return 'X Speed'; - case TempBattleStat.ACC: - return 'X Accuracy'; - case TempBattleStat.CRIT: - return 'Dire Hit'; + case TempBattleStat.ATK: + return 'X Attack'; + case TempBattleStat.DEF: + return 'X Defense'; + case TempBattleStat.SPATK: + return 'X Sp. Atk'; + case TempBattleStat.SPDEF: + return 'X Sp. Def'; + case TempBattleStat.SPD: + return 'X Speed'; + case TempBattleStat.ACC: + return 'X Accuracy'; + case TempBattleStat.CRIT: + return 'Dire Hit'; } -} \ No newline at end of file +} diff --git a/src/data/terrain.ts b/src/data/terrain.ts index c0328d98d6c..feb3292fd8b 100644 --- a/src/data/terrain.ts +++ b/src/data/terrain.ts @@ -1,10 +1,10 @@ -import Pokemon from "../field/pokemon"; -import Move from "./move"; -import { Type } from "./type"; -import * as Utils from "../utils"; -import { IncrementMovePriorityAbAttr, applyAbAttrs } from "./ability"; -import { ProtectAttr } from "./move"; -import { BattlerIndex } from "#app/battle.js"; +import Pokemon from '../field/pokemon'; +import Move from './move'; +import { Type } from './type'; +import * as Utils from '../utils'; +import { IncrementMovePriorityAbAttr, applyAbAttrs } from './ability'; +import { ProtectAttr } from './move'; +import { BattlerIndex } from '#app/battle.js'; export enum TerrainType { NONE, @@ -32,18 +32,18 @@ export class Terrain { getAttackTypeMultiplier(attackType: Type): number { switch (this.terrainType) { - case TerrainType.ELECTRIC: - if (attackType === Type.ELECTRIC) - return 1.3; - break; - case TerrainType.GRASSY: - if (attackType === Type.GRASS) - return 1.3; - break; - case TerrainType.PSYCHIC: - if (attackType === Type.PSYCHIC) - return 1.3; - break; + case TerrainType.ELECTRIC: + if (attackType === Type.ELECTRIC) + return 1.3; + break; + case TerrainType.GRASSY: + if (attackType === Type.GRASS) + return 1.3; + break; + case TerrainType.PSYCHIC: + if (attackType === Type.PSYCHIC) + return 1.3; + break; } return 1; @@ -51,12 +51,12 @@ export class Terrain { isMoveTerrainCancelled(user: Pokemon, targets: BattlerIndex[], move: Move): boolean { switch (this.terrainType) { - case TerrainType.PSYCHIC: - if (!move.getAttrs(ProtectAttr).length) { - const priority = new Utils.IntegerHolder(move.priority); - applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority); - return priority.value > 0 && user.getOpponents().filter(o => targets.includes(o.getBattlerIndex())).length > 0; - } + case TerrainType.PSYCHIC: + if (!move.getAttrs(ProtectAttr).length) { + const priority = new Utils.IntegerHolder(move.priority); + applyAbAttrs(IncrementMovePriorityAbAttr, user, null, move, priority); + return priority.value > 0 && user.getOpponents().filter(o => targets.includes(o.getBattlerIndex())).length > 0; + } } return false; @@ -65,15 +65,15 @@ export class Terrain { export function getTerrainColor(terrainType: TerrainType): [ integer, integer, integer ] { switch (terrainType) { - case TerrainType.MISTY: - return [ 232, 136, 200 ]; - case TerrainType.ELECTRIC: - return [ 248, 248, 120 ]; - case TerrainType.GRASSY: - return [ 120, 200, 80 ]; - case TerrainType.PSYCHIC: - return [ 160, 64, 160 ]; + case TerrainType.MISTY: + return [ 232, 136, 200 ]; + case TerrainType.ELECTRIC: + return [ 248, 248, 120 ]; + case TerrainType.GRASSY: + return [ 120, 200, 80 ]; + case TerrainType.PSYCHIC: + return [ 160, 64, 160 ]; } return [ 0, 0, 0 ]; -} \ No newline at end of file +} diff --git a/src/data/tms.ts b/src/data/tms.ts index d8b22438c37..83c1c3d65ff 100644 --- a/src/data/tms.ts +++ b/src/data/tms.ts @@ -1,6 +1,6 @@ -import { ModifierTier } from "../modifier/modifier-tier"; -import { Moves } from "./enums/moves"; -import { Species } from "./enums/species"; +import { ModifierTier } from '../modifier/modifier-tier'; +import { Moves } from './enums/moves'; +import { Species } from './enums/species'; interface TmSpecies { [key: integer]: Array> @@ -64181,309 +64181,309 @@ interface TmPoolTiers { } export const tmPoolTiers: TmPoolTiers = { - [Moves.MEGA_PUNCH]: ModifierTier.GREAT, - [Moves.PAY_DAY]: ModifierTier.ULTRA, - [Moves.FIRE_PUNCH]: ModifierTier.GREAT, - [Moves.ICE_PUNCH]: ModifierTier.GREAT, - [Moves.THUNDER_PUNCH]: ModifierTier.GREAT, - [Moves.SWORDS_DANCE]: ModifierTier.COMMON, - [Moves.CUT]: ModifierTier.COMMON, - [Moves.FLY]: ModifierTier.COMMON, - [Moves.MEGA_KICK]: ModifierTier.GREAT, - [Moves.BODY_SLAM]: ModifierTier.GREAT, - [Moves.TAKE_DOWN]: ModifierTier.GREAT, - [Moves.DOUBLE_EDGE]: ModifierTier.ULTRA, - [Moves.PIN_MISSILE]: ModifierTier.COMMON, - [Moves.ROAR]: ModifierTier.COMMON, - [Moves.FLAMETHROWER]: ModifierTier.ULTRA, - [Moves.HYDRO_PUMP]: ModifierTier.ULTRA, - [Moves.SURF]: ModifierTier.ULTRA, - [Moves.ICE_BEAM]: ModifierTier.ULTRA, - [Moves.BLIZZARD]: ModifierTier.ULTRA, - [Moves.PSYBEAM]: ModifierTier.GREAT, - [Moves.HYPER_BEAM]: ModifierTier.ULTRA, - [Moves.LOW_KICK]: ModifierTier.COMMON, - [Moves.STRENGTH]: ModifierTier.GREAT, - [Moves.SOLAR_BEAM]: ModifierTier.ULTRA, - [Moves.FIRE_SPIN]: ModifierTier.COMMON, - [Moves.THUNDERBOLT]: ModifierTier.ULTRA, - [Moves.THUNDER_WAVE]: ModifierTier.COMMON, - [Moves.THUNDER]: ModifierTier.ULTRA, - [Moves.EARTHQUAKE]: ModifierTier.ULTRA, - [Moves.DIG]: ModifierTier.GREAT, - [Moves.TOXIC]: ModifierTier.GREAT, - [Moves.PSYCHIC]: ModifierTier.ULTRA, - [Moves.AGILITY]: ModifierTier.COMMON, - [Moves.NIGHT_SHADE]: ModifierTier.COMMON, - [Moves.SCREECH]: ModifierTier.COMMON, - [Moves.DOUBLE_TEAM]: ModifierTier.COMMON, - [Moves.CONFUSE_RAY]: ModifierTier.COMMON, - [Moves.LIGHT_SCREEN]: ModifierTier.COMMON, - [Moves.HAZE]: ModifierTier.COMMON, - [Moves.REFLECT]: ModifierTier.COMMON, - [Moves.FOCUS_ENERGY]: ModifierTier.COMMON, - [Moves.METRONOME]: ModifierTier.COMMON, - [Moves.SELF_DESTRUCT]: ModifierTier.GREAT, - [Moves.FIRE_BLAST]: ModifierTier.ULTRA, - [Moves.WATERFALL]: ModifierTier.GREAT, - [Moves.SWIFT]: ModifierTier.COMMON, - [Moves.AMNESIA]: ModifierTier.COMMON, - [Moves.DREAM_EATER]: ModifierTier.GREAT, - [Moves.LEECH_LIFE]: ModifierTier.ULTRA, - [Moves.FLASH]: ModifierTier.COMMON, - [Moves.EXPLOSION]: ModifierTier.GREAT, - [Moves.REST]: ModifierTier.COMMON, - [Moves.ROCK_SLIDE]: ModifierTier.GREAT, - [Moves.TRI_ATTACK]: ModifierTier.ULTRA, - [Moves.SUPER_FANG]: ModifierTier.COMMON, - [Moves.SUBSTITUTE]: ModifierTier.COMMON, - [Moves.THIEF]: ModifierTier.GREAT, - [Moves.SNORE]: ModifierTier.COMMON, - [Moves.CURSE]: ModifierTier.COMMON, - [Moves.REVERSAL]: ModifierTier.COMMON, - [Moves.SPITE]: ModifierTier.COMMON, - [Moves.PROTECT]: ModifierTier.COMMON, - [Moves.SCARY_FACE]: ModifierTier.COMMON, - [Moves.SLUDGE_BOMB]: ModifierTier.GREAT, - [Moves.MUD_SLAP]: ModifierTier.COMMON, - [Moves.SPIKES]: ModifierTier.COMMON, - [Moves.ICY_WIND]: ModifierTier.GREAT, - [Moves.OUTRAGE]: ModifierTier.ULTRA, - [Moves.SANDSTORM]: ModifierTier.COMMON, - [Moves.GIGA_DRAIN]: ModifierTier.ULTRA, - [Moves.ENDURE]: ModifierTier.COMMON, - [Moves.CHARM]: ModifierTier.COMMON, - [Moves.FALSE_SWIPE]: ModifierTier.COMMON, - [Moves.SWAGGER]: ModifierTier.COMMON, - [Moves.STEEL_WING]: ModifierTier.GREAT, - [Moves.ATTRACT]: ModifierTier.COMMON, - [Moves.SLEEP_TALK]: ModifierTier.COMMON, - [Moves.RETURN]: ModifierTier.ULTRA, - [Moves.FRUSTRATION]: ModifierTier.COMMON, - [Moves.SAFEGUARD]: ModifierTier.COMMON, - [Moves.PAIN_SPLIT]: ModifierTier.COMMON, - [Moves.MEGAHORN]: ModifierTier.ULTRA, - [Moves.BATON_PASS]: ModifierTier.COMMON, - [Moves.ENCORE]: ModifierTier.COMMON, - [Moves.IRON_TAIL]: ModifierTier.GREAT, - [Moves.METAL_CLAW]: ModifierTier.COMMON, - [Moves.HIDDEN_POWER]: ModifierTier.GREAT, - [Moves.RAIN_DANCE]: ModifierTier.COMMON, - [Moves.SUNNY_DAY]: ModifierTier.COMMON, - [Moves.CRUNCH]: ModifierTier.GREAT, - [Moves.PSYCH_UP]: ModifierTier.COMMON, - [Moves.SHADOW_BALL]: ModifierTier.ULTRA, - [Moves.FUTURE_SIGHT]: ModifierTier.GREAT, - [Moves.ROCK_SMASH]: ModifierTier.COMMON, - [Moves.WHIRLPOOL]: ModifierTier.COMMON, - [Moves.BEAT_UP]: ModifierTier.COMMON, - [Moves.UPROAR]: ModifierTier.GREAT, - [Moves.HEAT_WAVE]: ModifierTier.ULTRA, - [Moves.HAIL]: ModifierTier.COMMON, - [Moves.TORMENT]: ModifierTier.COMMON, - [Moves.WILL_O_WISP]: ModifierTier.COMMON, - [Moves.FACADE]: ModifierTier.GREAT, - [Moves.FOCUS_PUNCH]: ModifierTier.COMMON, - [Moves.NATURE_POWER]: ModifierTier.COMMON, - [Moves.CHARGE]: ModifierTier.COMMON, - [Moves.TAUNT]: ModifierTier.COMMON, - [Moves.HELPING_HAND]: ModifierTier.COMMON, - [Moves.TRICK]: ModifierTier.COMMON, - [Moves.SUPERPOWER]: ModifierTier.ULTRA, - [Moves.REVENGE]: ModifierTier.GREAT, - [Moves.BRICK_BREAK]: ModifierTier.GREAT, - [Moves.KNOCK_OFF]: ModifierTier.GREAT, - [Moves.ENDEAVOR]: ModifierTier.COMMON, - [Moves.SKILL_SWAP]: ModifierTier.COMMON, - [Moves.IMPRISON]: ModifierTier.COMMON, - [Moves.DIVE]: ModifierTier.GREAT, - [Moves.FEATHER_DANCE]: ModifierTier.COMMON, - [Moves.BLAZE_KICK]: ModifierTier.GREAT, - [Moves.HYPER_VOICE]: ModifierTier.ULTRA, - [Moves.BLAST_BURN]: ModifierTier.ULTRA, - [Moves.HYDRO_CANNON]: ModifierTier.ULTRA, - [Moves.WEATHER_BALL]: ModifierTier.COMMON, - [Moves.FAKE_TEARS]: ModifierTier.COMMON, - [Moves.AIR_CUTTER]: ModifierTier.GREAT, - [Moves.OVERHEAT]: ModifierTier.ULTRA, - [Moves.ROCK_TOMB]: ModifierTier.GREAT, - [Moves.METAL_SOUND]: ModifierTier.COMMON, - [Moves.COSMIC_POWER]: ModifierTier.COMMON, - [Moves.SIGNAL_BEAM]: ModifierTier.GREAT, - [Moves.SAND_TOMB]: ModifierTier.COMMON, - [Moves.MUDDY_WATER]: ModifierTier.GREAT, - [Moves.BULLET_SEED]: ModifierTier.GREAT, - [Moves.AERIAL_ACE]: ModifierTier.GREAT, - [Moves.ICICLE_SPEAR]: ModifierTier.GREAT, - [Moves.IRON_DEFENSE]: ModifierTier.GREAT, - [Moves.DRAGON_CLAW]: ModifierTier.ULTRA, - [Moves.FRENZY_PLANT]: ModifierTier.ULTRA, - [Moves.BULK_UP]: ModifierTier.COMMON, - [Moves.BOUNCE]: ModifierTier.GREAT, - [Moves.MUD_SHOT]: ModifierTier.GREAT, - [Moves.POISON_TAIL]: ModifierTier.GREAT, - [Moves.MAGICAL_LEAF]: ModifierTier.GREAT, - [Moves.CALM_MIND]: ModifierTier.GREAT, - [Moves.LEAF_BLADE]: ModifierTier.ULTRA, - [Moves.DRAGON_DANCE]: ModifierTier.GREAT, - [Moves.ROCK_BLAST]: ModifierTier.GREAT, - [Moves.WATER_PULSE]: ModifierTier.GREAT, - [Moves.ROOST]: ModifierTier.GREAT, - [Moves.GRAVITY]: ModifierTier.COMMON, - [Moves.GYRO_BALL]: ModifierTier.COMMON, - [Moves.BRINE]: ModifierTier.GREAT, - [Moves.TAILWIND]: ModifierTier.GREAT, - [Moves.U_TURN]: ModifierTier.GREAT, - [Moves.CLOSE_COMBAT]: ModifierTier.ULTRA, - [Moves.PAYBACK]: ModifierTier.COMMON, - [Moves.ASSURANCE]: ModifierTier.COMMON, - [Moves.EMBARGO]: ModifierTier.COMMON, - [Moves.FLING]: ModifierTier.COMMON, - [Moves.POWER_SWAP]: ModifierTier.COMMON, - [Moves.GUARD_SWAP]: ModifierTier.COMMON, - [Moves.TOXIC_SPIKES]: ModifierTier.GREAT, - [Moves.FLARE_BLITZ]: ModifierTier.ULTRA, - [Moves.AURA_SPHERE]: ModifierTier.GREAT, - [Moves.ROCK_POLISH]: ModifierTier.COMMON, - [Moves.POISON_JAB]: ModifierTier.GREAT, - [Moves.DARK_PULSE]: ModifierTier.GREAT, - [Moves.SEED_BOMB]: ModifierTier.GREAT, - [Moves.AIR_SLASH]: ModifierTier.GREAT, - [Moves.X_SCISSOR]: ModifierTier.GREAT, - [Moves.BUG_BUZZ]: ModifierTier.GREAT, - [Moves.DRAGON_PULSE]: ModifierTier.GREAT, - [Moves.POWER_GEM]: ModifierTier.GREAT, - [Moves.DRAIN_PUNCH]: ModifierTier.GREAT, - [Moves.VACUUM_WAVE]: ModifierTier.COMMON, - [Moves.FOCUS_BLAST]: ModifierTier.GREAT, - [Moves.ENERGY_BALL]: ModifierTier.GREAT, - [Moves.BRAVE_BIRD]: ModifierTier.ULTRA, - [Moves.EARTH_POWER]: ModifierTier.ULTRA, - [Moves.GIGA_IMPACT]: ModifierTier.GREAT, - [Moves.NASTY_PLOT]: ModifierTier.COMMON, - [Moves.AVALANCHE]: ModifierTier.GREAT, - [Moves.SHADOW_CLAW]: ModifierTier.GREAT, - [Moves.THUNDER_FANG]: ModifierTier.GREAT, - [Moves.ICE_FANG]: ModifierTier.GREAT, - [Moves.FIRE_FANG]: ModifierTier.GREAT, - [Moves.PSYCHO_CUT]: ModifierTier.GREAT, - [Moves.ZEN_HEADBUTT]: ModifierTier.GREAT, - [Moves.FLASH_CANNON]: ModifierTier.GREAT, - [Moves.ROCK_CLIMB]: ModifierTier.GREAT, - [Moves.DEFOG]: ModifierTier.COMMON, - [Moves.TRICK_ROOM]: ModifierTier.COMMON, - [Moves.DRACO_METEOR]: ModifierTier.ULTRA, - [Moves.LEAF_STORM]: ModifierTier.ULTRA, - [Moves.POWER_WHIP]: ModifierTier.ULTRA, - [Moves.CROSS_POISON]: ModifierTier.GREAT, - [Moves.GUNK_SHOT]: ModifierTier.ULTRA, - [Moves.IRON_HEAD]: ModifierTier.GREAT, - [Moves.STONE_EDGE]: ModifierTier.ULTRA, - [Moves.STEALTH_ROCK]: ModifierTier.COMMON, - [Moves.GRASS_KNOT]: ModifierTier.ULTRA, - [Moves.BUG_BITE]: ModifierTier.GREAT, - [Moves.CHARGE_BEAM]: ModifierTier.GREAT, - [Moves.HONE_CLAWS]: ModifierTier.COMMON, - [Moves.WONDER_ROOM]: ModifierTier.COMMON, - [Moves.PSYSHOCK]: ModifierTier.GREAT, - [Moves.VENOSHOCK]: ModifierTier.GREAT, - [Moves.MAGIC_ROOM]: ModifierTier.COMMON, - [Moves.SMACK_DOWN]: ModifierTier.COMMON, - [Moves.SLUDGE_WAVE]: ModifierTier.GREAT, - [Moves.HEAVY_SLAM]: ModifierTier.GREAT, - [Moves.ELECTRO_BALL]: ModifierTier.GREAT, - [Moves.FLAME_CHARGE]: ModifierTier.GREAT, - [Moves.LOW_SWEEP]: ModifierTier.GREAT, - [Moves.ACID_SPRAY]: ModifierTier.COMMON, - [Moves.FOUL_PLAY]: ModifierTier.ULTRA, - [Moves.ROUND]: ModifierTier.COMMON, - [Moves.ECHOED_VOICE]: ModifierTier.COMMON, - [Moves.STORED_POWER]: ModifierTier.COMMON, - [Moves.ALLY_SWITCH]: ModifierTier.COMMON, - [Moves.SCALD]: ModifierTier.GREAT, - [Moves.HEX]: ModifierTier.GREAT, - [Moves.SKY_DROP]: ModifierTier.GREAT, - [Moves.QUASH]: ModifierTier.COMMON, - [Moves.ACROBATICS]: ModifierTier.GREAT, - [Moves.RETALIATE]: ModifierTier.GREAT, - [Moves.WATER_PLEDGE]: ModifierTier.GREAT, - [Moves.FIRE_PLEDGE]: ModifierTier.GREAT, - [Moves.GRASS_PLEDGE]: ModifierTier.GREAT, - [Moves.VOLT_SWITCH]: ModifierTier.GREAT, - [Moves.STRUGGLE_BUG]: ModifierTier.COMMON, - [Moves.BULLDOZE]: ModifierTier.GREAT, - [Moves.FROST_BREATH]: ModifierTier.GREAT, - [Moves.DRAGON_TAIL]: ModifierTier.GREAT, - [Moves.WORK_UP]: ModifierTier.COMMON, - [Moves.ELECTROWEB]: ModifierTier.GREAT, - [Moves.WILD_CHARGE]: ModifierTier.GREAT, - [Moves.DRILL_RUN]: ModifierTier.GREAT, - [Moves.SACRED_SWORD]: ModifierTier.ULTRA, - [Moves.RAZOR_SHELL]: ModifierTier.GREAT, - [Moves.HEAT_CRASH]: ModifierTier.GREAT, - [Moves.TAIL_SLAP]: ModifierTier.GREAT, - [Moves.HURRICANE]: ModifierTier.ULTRA, - [Moves.SNARL]: ModifierTier.COMMON, - [Moves.PHANTOM_FORCE]: ModifierTier.ULTRA, - [Moves.PETAL_BLIZZARD]: ModifierTier.GREAT, - [Moves.DISARMING_VOICE]: ModifierTier.GREAT, - [Moves.DRAINING_KISS]: ModifierTier.GREAT, - [Moves.GRASSY_TERRAIN]: ModifierTier.COMMON, - [Moves.MISTY_TERRAIN]: ModifierTier.COMMON, - [Moves.PLAY_ROUGH]: ModifierTier.GREAT, - [Moves.CONFIDE]: ModifierTier.COMMON, - [Moves.MYSTICAL_FIRE]: ModifierTier.GREAT, - [Moves.EERIE_IMPULSE]: ModifierTier.COMMON, - [Moves.VENOM_DRENCH]: ModifierTier.COMMON, - [Moves.ELECTRIC_TERRAIN]: ModifierTier.COMMON, - [Moves.DAZZLING_GLEAM]: ModifierTier.ULTRA, - [Moves.INFESTATION]: ModifierTier.COMMON, - [Moves.DRAGON_ASCENT]: ModifierTier.ULTRA, - [Moves.DARKEST_LARIAT]: ModifierTier.GREAT, - [Moves.HIGH_HORSEPOWER]: ModifierTier.ULTRA, - [Moves.SOLAR_BLADE]: ModifierTier.GREAT, - [Moves.THROAT_CHOP]: ModifierTier.GREAT, - [Moves.POLLEN_PUFF]: ModifierTier.GREAT, - [Moves.PSYCHIC_TERRAIN]: ModifierTier.COMMON, - [Moves.LUNGE]: ModifierTier.GREAT, - [Moves.SPEED_SWAP]: ModifierTier.COMMON, - [Moves.SMART_STRIKE]: ModifierTier.GREAT, - [Moves.BRUTAL_SWING]: ModifierTier.GREAT, - [Moves.PSYCHIC_FANGS]: ModifierTier.GREAT, - [Moves.STOMPING_TANTRUM]: ModifierTier.GREAT, - [Moves.LIQUIDATION]: ModifierTier.ULTRA, - [Moves.BODY_PRESS]: ModifierTier.ULTRA, - [Moves.BREAKING_SWIPE]: ModifierTier.GREAT, - [Moves.STEEL_BEAM]: ModifierTier.ULTRA, - [Moves.EXPANDING_FORCE]: ModifierTier.GREAT, - [Moves.STEEL_ROLLER]: ModifierTier.COMMON, - [Moves.SCALE_SHOT]: ModifierTier.ULTRA, - [Moves.METEOR_BEAM]: ModifierTier.GREAT, - [Moves.MISTY_EXPLOSION]: ModifierTier.COMMON, - [Moves.GRASSY_GLIDE]: ModifierTier.COMMON, - [Moves.RISING_VOLTAGE]: ModifierTier.COMMON, - [Moves.TERRAIN_PULSE]: ModifierTier.COMMON, - [Moves.SKITTER_SMACK]: ModifierTier.GREAT, - [Moves.BURNING_JEALOUSY]: ModifierTier.GREAT, - [Moves.LASH_OUT]: ModifierTier.GREAT, - [Moves.POLTERGEIST]: ModifierTier.ULTRA, - [Moves.CORROSIVE_GAS]: ModifierTier.COMMON, - [Moves.COACHING]: ModifierTier.COMMON, - [Moves.FLIP_TURN]: ModifierTier.COMMON, - [Moves.TRIPLE_AXEL]: ModifierTier.COMMON, - [Moves.DUAL_WINGBEAT]: ModifierTier.COMMON, - [Moves.SCORCHING_SANDS]: ModifierTier.GREAT, - [Moves.TERA_BLAST]: ModifierTier.GREAT, - [Moves.ICE_SPINNER]: ModifierTier.GREAT, - [Moves.SNOWSCAPE]: ModifierTier.COMMON, - [Moves.POUNCE]: ModifierTier.COMMON, - [Moves.TRAILBLAZE]: ModifierTier.COMMON, - [Moves.CHILLING_WATER]: ModifierTier.COMMON, - [Moves.HARD_PRESS]: ModifierTier.GREAT, - [Moves.DRAGON_CHEER]: ModifierTier.COMMON, - [Moves.ALLURING_VOICE]: ModifierTier.GREAT, - [Moves.TEMPER_FLARE]: ModifierTier.GREAT, - [Moves.SUPERCELL_SLAM]: ModifierTier.GREAT, - [Moves.PSYCHIC_NOISE]: ModifierTier.GREAT, - [Moves.UPPER_HAND]: ModifierTier.COMMON, -}; \ No newline at end of file + [Moves.MEGA_PUNCH]: ModifierTier.GREAT, + [Moves.PAY_DAY]: ModifierTier.ULTRA, + [Moves.FIRE_PUNCH]: ModifierTier.GREAT, + [Moves.ICE_PUNCH]: ModifierTier.GREAT, + [Moves.THUNDER_PUNCH]: ModifierTier.GREAT, + [Moves.SWORDS_DANCE]: ModifierTier.COMMON, + [Moves.CUT]: ModifierTier.COMMON, + [Moves.FLY]: ModifierTier.COMMON, + [Moves.MEGA_KICK]: ModifierTier.GREAT, + [Moves.BODY_SLAM]: ModifierTier.GREAT, + [Moves.TAKE_DOWN]: ModifierTier.GREAT, + [Moves.DOUBLE_EDGE]: ModifierTier.ULTRA, + [Moves.PIN_MISSILE]: ModifierTier.COMMON, + [Moves.ROAR]: ModifierTier.COMMON, + [Moves.FLAMETHROWER]: ModifierTier.ULTRA, + [Moves.HYDRO_PUMP]: ModifierTier.ULTRA, + [Moves.SURF]: ModifierTier.ULTRA, + [Moves.ICE_BEAM]: ModifierTier.ULTRA, + [Moves.BLIZZARD]: ModifierTier.ULTRA, + [Moves.PSYBEAM]: ModifierTier.GREAT, + [Moves.HYPER_BEAM]: ModifierTier.ULTRA, + [Moves.LOW_KICK]: ModifierTier.COMMON, + [Moves.STRENGTH]: ModifierTier.GREAT, + [Moves.SOLAR_BEAM]: ModifierTier.ULTRA, + [Moves.FIRE_SPIN]: ModifierTier.COMMON, + [Moves.THUNDERBOLT]: ModifierTier.ULTRA, + [Moves.THUNDER_WAVE]: ModifierTier.COMMON, + [Moves.THUNDER]: ModifierTier.ULTRA, + [Moves.EARTHQUAKE]: ModifierTier.ULTRA, + [Moves.DIG]: ModifierTier.GREAT, + [Moves.TOXIC]: ModifierTier.GREAT, + [Moves.PSYCHIC]: ModifierTier.ULTRA, + [Moves.AGILITY]: ModifierTier.COMMON, + [Moves.NIGHT_SHADE]: ModifierTier.COMMON, + [Moves.SCREECH]: ModifierTier.COMMON, + [Moves.DOUBLE_TEAM]: ModifierTier.COMMON, + [Moves.CONFUSE_RAY]: ModifierTier.COMMON, + [Moves.LIGHT_SCREEN]: ModifierTier.COMMON, + [Moves.HAZE]: ModifierTier.COMMON, + [Moves.REFLECT]: ModifierTier.COMMON, + [Moves.FOCUS_ENERGY]: ModifierTier.COMMON, + [Moves.METRONOME]: ModifierTier.COMMON, + [Moves.SELF_DESTRUCT]: ModifierTier.GREAT, + [Moves.FIRE_BLAST]: ModifierTier.ULTRA, + [Moves.WATERFALL]: ModifierTier.GREAT, + [Moves.SWIFT]: ModifierTier.COMMON, + [Moves.AMNESIA]: ModifierTier.COMMON, + [Moves.DREAM_EATER]: ModifierTier.GREAT, + [Moves.LEECH_LIFE]: ModifierTier.ULTRA, + [Moves.FLASH]: ModifierTier.COMMON, + [Moves.EXPLOSION]: ModifierTier.GREAT, + [Moves.REST]: ModifierTier.COMMON, + [Moves.ROCK_SLIDE]: ModifierTier.GREAT, + [Moves.TRI_ATTACK]: ModifierTier.ULTRA, + [Moves.SUPER_FANG]: ModifierTier.COMMON, + [Moves.SUBSTITUTE]: ModifierTier.COMMON, + [Moves.THIEF]: ModifierTier.GREAT, + [Moves.SNORE]: ModifierTier.COMMON, + [Moves.CURSE]: ModifierTier.COMMON, + [Moves.REVERSAL]: ModifierTier.COMMON, + [Moves.SPITE]: ModifierTier.COMMON, + [Moves.PROTECT]: ModifierTier.COMMON, + [Moves.SCARY_FACE]: ModifierTier.COMMON, + [Moves.SLUDGE_BOMB]: ModifierTier.GREAT, + [Moves.MUD_SLAP]: ModifierTier.COMMON, + [Moves.SPIKES]: ModifierTier.COMMON, + [Moves.ICY_WIND]: ModifierTier.GREAT, + [Moves.OUTRAGE]: ModifierTier.ULTRA, + [Moves.SANDSTORM]: ModifierTier.COMMON, + [Moves.GIGA_DRAIN]: ModifierTier.ULTRA, + [Moves.ENDURE]: ModifierTier.COMMON, + [Moves.CHARM]: ModifierTier.COMMON, + [Moves.FALSE_SWIPE]: ModifierTier.COMMON, + [Moves.SWAGGER]: ModifierTier.COMMON, + [Moves.STEEL_WING]: ModifierTier.GREAT, + [Moves.ATTRACT]: ModifierTier.COMMON, + [Moves.SLEEP_TALK]: ModifierTier.COMMON, + [Moves.RETURN]: ModifierTier.ULTRA, + [Moves.FRUSTRATION]: ModifierTier.COMMON, + [Moves.SAFEGUARD]: ModifierTier.COMMON, + [Moves.PAIN_SPLIT]: ModifierTier.COMMON, + [Moves.MEGAHORN]: ModifierTier.ULTRA, + [Moves.BATON_PASS]: ModifierTier.COMMON, + [Moves.ENCORE]: ModifierTier.COMMON, + [Moves.IRON_TAIL]: ModifierTier.GREAT, + [Moves.METAL_CLAW]: ModifierTier.COMMON, + [Moves.HIDDEN_POWER]: ModifierTier.GREAT, + [Moves.RAIN_DANCE]: ModifierTier.COMMON, + [Moves.SUNNY_DAY]: ModifierTier.COMMON, + [Moves.CRUNCH]: ModifierTier.GREAT, + [Moves.PSYCH_UP]: ModifierTier.COMMON, + [Moves.SHADOW_BALL]: ModifierTier.ULTRA, + [Moves.FUTURE_SIGHT]: ModifierTier.GREAT, + [Moves.ROCK_SMASH]: ModifierTier.COMMON, + [Moves.WHIRLPOOL]: ModifierTier.COMMON, + [Moves.BEAT_UP]: ModifierTier.COMMON, + [Moves.UPROAR]: ModifierTier.GREAT, + [Moves.HEAT_WAVE]: ModifierTier.ULTRA, + [Moves.HAIL]: ModifierTier.COMMON, + [Moves.TORMENT]: ModifierTier.COMMON, + [Moves.WILL_O_WISP]: ModifierTier.COMMON, + [Moves.FACADE]: ModifierTier.GREAT, + [Moves.FOCUS_PUNCH]: ModifierTier.COMMON, + [Moves.NATURE_POWER]: ModifierTier.COMMON, + [Moves.CHARGE]: ModifierTier.COMMON, + [Moves.TAUNT]: ModifierTier.COMMON, + [Moves.HELPING_HAND]: ModifierTier.COMMON, + [Moves.TRICK]: ModifierTier.COMMON, + [Moves.SUPERPOWER]: ModifierTier.ULTRA, + [Moves.REVENGE]: ModifierTier.GREAT, + [Moves.BRICK_BREAK]: ModifierTier.GREAT, + [Moves.KNOCK_OFF]: ModifierTier.GREAT, + [Moves.ENDEAVOR]: ModifierTier.COMMON, + [Moves.SKILL_SWAP]: ModifierTier.COMMON, + [Moves.IMPRISON]: ModifierTier.COMMON, + [Moves.DIVE]: ModifierTier.GREAT, + [Moves.FEATHER_DANCE]: ModifierTier.COMMON, + [Moves.BLAZE_KICK]: ModifierTier.GREAT, + [Moves.HYPER_VOICE]: ModifierTier.ULTRA, + [Moves.BLAST_BURN]: ModifierTier.ULTRA, + [Moves.HYDRO_CANNON]: ModifierTier.ULTRA, + [Moves.WEATHER_BALL]: ModifierTier.COMMON, + [Moves.FAKE_TEARS]: ModifierTier.COMMON, + [Moves.AIR_CUTTER]: ModifierTier.GREAT, + [Moves.OVERHEAT]: ModifierTier.ULTRA, + [Moves.ROCK_TOMB]: ModifierTier.GREAT, + [Moves.METAL_SOUND]: ModifierTier.COMMON, + [Moves.COSMIC_POWER]: ModifierTier.COMMON, + [Moves.SIGNAL_BEAM]: ModifierTier.GREAT, + [Moves.SAND_TOMB]: ModifierTier.COMMON, + [Moves.MUDDY_WATER]: ModifierTier.GREAT, + [Moves.BULLET_SEED]: ModifierTier.GREAT, + [Moves.AERIAL_ACE]: ModifierTier.GREAT, + [Moves.ICICLE_SPEAR]: ModifierTier.GREAT, + [Moves.IRON_DEFENSE]: ModifierTier.GREAT, + [Moves.DRAGON_CLAW]: ModifierTier.ULTRA, + [Moves.FRENZY_PLANT]: ModifierTier.ULTRA, + [Moves.BULK_UP]: ModifierTier.COMMON, + [Moves.BOUNCE]: ModifierTier.GREAT, + [Moves.MUD_SHOT]: ModifierTier.GREAT, + [Moves.POISON_TAIL]: ModifierTier.GREAT, + [Moves.MAGICAL_LEAF]: ModifierTier.GREAT, + [Moves.CALM_MIND]: ModifierTier.GREAT, + [Moves.LEAF_BLADE]: ModifierTier.ULTRA, + [Moves.DRAGON_DANCE]: ModifierTier.GREAT, + [Moves.ROCK_BLAST]: ModifierTier.GREAT, + [Moves.WATER_PULSE]: ModifierTier.GREAT, + [Moves.ROOST]: ModifierTier.GREAT, + [Moves.GRAVITY]: ModifierTier.COMMON, + [Moves.GYRO_BALL]: ModifierTier.COMMON, + [Moves.BRINE]: ModifierTier.GREAT, + [Moves.TAILWIND]: ModifierTier.GREAT, + [Moves.U_TURN]: ModifierTier.GREAT, + [Moves.CLOSE_COMBAT]: ModifierTier.ULTRA, + [Moves.PAYBACK]: ModifierTier.COMMON, + [Moves.ASSURANCE]: ModifierTier.COMMON, + [Moves.EMBARGO]: ModifierTier.COMMON, + [Moves.FLING]: ModifierTier.COMMON, + [Moves.POWER_SWAP]: ModifierTier.COMMON, + [Moves.GUARD_SWAP]: ModifierTier.COMMON, + [Moves.TOXIC_SPIKES]: ModifierTier.GREAT, + [Moves.FLARE_BLITZ]: ModifierTier.ULTRA, + [Moves.AURA_SPHERE]: ModifierTier.GREAT, + [Moves.ROCK_POLISH]: ModifierTier.COMMON, + [Moves.POISON_JAB]: ModifierTier.GREAT, + [Moves.DARK_PULSE]: ModifierTier.GREAT, + [Moves.SEED_BOMB]: ModifierTier.GREAT, + [Moves.AIR_SLASH]: ModifierTier.GREAT, + [Moves.X_SCISSOR]: ModifierTier.GREAT, + [Moves.BUG_BUZZ]: ModifierTier.GREAT, + [Moves.DRAGON_PULSE]: ModifierTier.GREAT, + [Moves.POWER_GEM]: ModifierTier.GREAT, + [Moves.DRAIN_PUNCH]: ModifierTier.GREAT, + [Moves.VACUUM_WAVE]: ModifierTier.COMMON, + [Moves.FOCUS_BLAST]: ModifierTier.GREAT, + [Moves.ENERGY_BALL]: ModifierTier.GREAT, + [Moves.BRAVE_BIRD]: ModifierTier.ULTRA, + [Moves.EARTH_POWER]: ModifierTier.ULTRA, + [Moves.GIGA_IMPACT]: ModifierTier.GREAT, + [Moves.NASTY_PLOT]: ModifierTier.COMMON, + [Moves.AVALANCHE]: ModifierTier.GREAT, + [Moves.SHADOW_CLAW]: ModifierTier.GREAT, + [Moves.THUNDER_FANG]: ModifierTier.GREAT, + [Moves.ICE_FANG]: ModifierTier.GREAT, + [Moves.FIRE_FANG]: ModifierTier.GREAT, + [Moves.PSYCHO_CUT]: ModifierTier.GREAT, + [Moves.ZEN_HEADBUTT]: ModifierTier.GREAT, + [Moves.FLASH_CANNON]: ModifierTier.GREAT, + [Moves.ROCK_CLIMB]: ModifierTier.GREAT, + [Moves.DEFOG]: ModifierTier.COMMON, + [Moves.TRICK_ROOM]: ModifierTier.COMMON, + [Moves.DRACO_METEOR]: ModifierTier.ULTRA, + [Moves.LEAF_STORM]: ModifierTier.ULTRA, + [Moves.POWER_WHIP]: ModifierTier.ULTRA, + [Moves.CROSS_POISON]: ModifierTier.GREAT, + [Moves.GUNK_SHOT]: ModifierTier.ULTRA, + [Moves.IRON_HEAD]: ModifierTier.GREAT, + [Moves.STONE_EDGE]: ModifierTier.ULTRA, + [Moves.STEALTH_ROCK]: ModifierTier.COMMON, + [Moves.GRASS_KNOT]: ModifierTier.ULTRA, + [Moves.BUG_BITE]: ModifierTier.GREAT, + [Moves.CHARGE_BEAM]: ModifierTier.GREAT, + [Moves.HONE_CLAWS]: ModifierTier.COMMON, + [Moves.WONDER_ROOM]: ModifierTier.COMMON, + [Moves.PSYSHOCK]: ModifierTier.GREAT, + [Moves.VENOSHOCK]: ModifierTier.GREAT, + [Moves.MAGIC_ROOM]: ModifierTier.COMMON, + [Moves.SMACK_DOWN]: ModifierTier.COMMON, + [Moves.SLUDGE_WAVE]: ModifierTier.GREAT, + [Moves.HEAVY_SLAM]: ModifierTier.GREAT, + [Moves.ELECTRO_BALL]: ModifierTier.GREAT, + [Moves.FLAME_CHARGE]: ModifierTier.GREAT, + [Moves.LOW_SWEEP]: ModifierTier.GREAT, + [Moves.ACID_SPRAY]: ModifierTier.COMMON, + [Moves.FOUL_PLAY]: ModifierTier.ULTRA, + [Moves.ROUND]: ModifierTier.COMMON, + [Moves.ECHOED_VOICE]: ModifierTier.COMMON, + [Moves.STORED_POWER]: ModifierTier.COMMON, + [Moves.ALLY_SWITCH]: ModifierTier.COMMON, + [Moves.SCALD]: ModifierTier.GREAT, + [Moves.HEX]: ModifierTier.GREAT, + [Moves.SKY_DROP]: ModifierTier.GREAT, + [Moves.QUASH]: ModifierTier.COMMON, + [Moves.ACROBATICS]: ModifierTier.GREAT, + [Moves.RETALIATE]: ModifierTier.GREAT, + [Moves.WATER_PLEDGE]: ModifierTier.GREAT, + [Moves.FIRE_PLEDGE]: ModifierTier.GREAT, + [Moves.GRASS_PLEDGE]: ModifierTier.GREAT, + [Moves.VOLT_SWITCH]: ModifierTier.GREAT, + [Moves.STRUGGLE_BUG]: ModifierTier.COMMON, + [Moves.BULLDOZE]: ModifierTier.GREAT, + [Moves.FROST_BREATH]: ModifierTier.GREAT, + [Moves.DRAGON_TAIL]: ModifierTier.GREAT, + [Moves.WORK_UP]: ModifierTier.COMMON, + [Moves.ELECTROWEB]: ModifierTier.GREAT, + [Moves.WILD_CHARGE]: ModifierTier.GREAT, + [Moves.DRILL_RUN]: ModifierTier.GREAT, + [Moves.SACRED_SWORD]: ModifierTier.ULTRA, + [Moves.RAZOR_SHELL]: ModifierTier.GREAT, + [Moves.HEAT_CRASH]: ModifierTier.GREAT, + [Moves.TAIL_SLAP]: ModifierTier.GREAT, + [Moves.HURRICANE]: ModifierTier.ULTRA, + [Moves.SNARL]: ModifierTier.COMMON, + [Moves.PHANTOM_FORCE]: ModifierTier.ULTRA, + [Moves.PETAL_BLIZZARD]: ModifierTier.GREAT, + [Moves.DISARMING_VOICE]: ModifierTier.GREAT, + [Moves.DRAINING_KISS]: ModifierTier.GREAT, + [Moves.GRASSY_TERRAIN]: ModifierTier.COMMON, + [Moves.MISTY_TERRAIN]: ModifierTier.COMMON, + [Moves.PLAY_ROUGH]: ModifierTier.GREAT, + [Moves.CONFIDE]: ModifierTier.COMMON, + [Moves.MYSTICAL_FIRE]: ModifierTier.GREAT, + [Moves.EERIE_IMPULSE]: ModifierTier.COMMON, + [Moves.VENOM_DRENCH]: ModifierTier.COMMON, + [Moves.ELECTRIC_TERRAIN]: ModifierTier.COMMON, + [Moves.DAZZLING_GLEAM]: ModifierTier.ULTRA, + [Moves.INFESTATION]: ModifierTier.COMMON, + [Moves.DRAGON_ASCENT]: ModifierTier.ULTRA, + [Moves.DARKEST_LARIAT]: ModifierTier.GREAT, + [Moves.HIGH_HORSEPOWER]: ModifierTier.ULTRA, + [Moves.SOLAR_BLADE]: ModifierTier.GREAT, + [Moves.THROAT_CHOP]: ModifierTier.GREAT, + [Moves.POLLEN_PUFF]: ModifierTier.GREAT, + [Moves.PSYCHIC_TERRAIN]: ModifierTier.COMMON, + [Moves.LUNGE]: ModifierTier.GREAT, + [Moves.SPEED_SWAP]: ModifierTier.COMMON, + [Moves.SMART_STRIKE]: ModifierTier.GREAT, + [Moves.BRUTAL_SWING]: ModifierTier.GREAT, + [Moves.PSYCHIC_FANGS]: ModifierTier.GREAT, + [Moves.STOMPING_TANTRUM]: ModifierTier.GREAT, + [Moves.LIQUIDATION]: ModifierTier.ULTRA, + [Moves.BODY_PRESS]: ModifierTier.ULTRA, + [Moves.BREAKING_SWIPE]: ModifierTier.GREAT, + [Moves.STEEL_BEAM]: ModifierTier.ULTRA, + [Moves.EXPANDING_FORCE]: ModifierTier.GREAT, + [Moves.STEEL_ROLLER]: ModifierTier.COMMON, + [Moves.SCALE_SHOT]: ModifierTier.ULTRA, + [Moves.METEOR_BEAM]: ModifierTier.GREAT, + [Moves.MISTY_EXPLOSION]: ModifierTier.COMMON, + [Moves.GRASSY_GLIDE]: ModifierTier.COMMON, + [Moves.RISING_VOLTAGE]: ModifierTier.COMMON, + [Moves.TERRAIN_PULSE]: ModifierTier.COMMON, + [Moves.SKITTER_SMACK]: ModifierTier.GREAT, + [Moves.BURNING_JEALOUSY]: ModifierTier.GREAT, + [Moves.LASH_OUT]: ModifierTier.GREAT, + [Moves.POLTERGEIST]: ModifierTier.ULTRA, + [Moves.CORROSIVE_GAS]: ModifierTier.COMMON, + [Moves.COACHING]: ModifierTier.COMMON, + [Moves.FLIP_TURN]: ModifierTier.COMMON, + [Moves.TRIPLE_AXEL]: ModifierTier.COMMON, + [Moves.DUAL_WINGBEAT]: ModifierTier.COMMON, + [Moves.SCORCHING_SANDS]: ModifierTier.GREAT, + [Moves.TERA_BLAST]: ModifierTier.GREAT, + [Moves.ICE_SPINNER]: ModifierTier.GREAT, + [Moves.SNOWSCAPE]: ModifierTier.COMMON, + [Moves.POUNCE]: ModifierTier.COMMON, + [Moves.TRAILBLAZE]: ModifierTier.COMMON, + [Moves.CHILLING_WATER]: ModifierTier.COMMON, + [Moves.HARD_PRESS]: ModifierTier.GREAT, + [Moves.DRAGON_CHEER]: ModifierTier.COMMON, + [Moves.ALLURING_VOICE]: ModifierTier.GREAT, + [Moves.TEMPER_FLARE]: ModifierTier.GREAT, + [Moves.SUPERCELL_SLAM]: ModifierTier.GREAT, + [Moves.PSYCHIC_NOISE]: ModifierTier.GREAT, + [Moves.UPPER_HAND]: ModifierTier.COMMON, +}; diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 0abd153ff25..62df4aa4183 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -1,21 +1,21 @@ -import BattleScene, {startingWave} from "../battle-scene"; -import {ModifierTypeFunc, modifierTypes} from "../modifier/modifier-type"; -import {EnemyPokemon} from "../field/pokemon"; -import * as Utils from "../utils"; -import {TrainerType} from "./enums/trainer-type"; -import {Moves} from "./enums/moves"; -import {PokeballType} from "./pokeball"; -import {pokemonEvolutions, pokemonPrevolutions} from "./pokemon-evolutions"; -import PokemonSpecies, {PokemonSpeciesFilter, getPokemonSpecies} from "./pokemon-species"; -import {Species} from "./enums/species"; -import {tmSpecies} from "./tms"; -import {Type} from "./type"; -import {initTrainerTypeDialogue} from "./dialogue"; -import {PersistentModifier} from "../modifier/modifier"; -import {TrainerVariant} from "../field/trainer"; -import {PartyMemberStrength} from "./enums/party-member-strength"; -import i18next from "i18next"; -import {getIsInitialized, initI18n} from "#app/plugins/i18n"; +import BattleScene, {startingWave} from '../battle-scene'; +import {ModifierTypeFunc, modifierTypes} from '../modifier/modifier-type'; +import {EnemyPokemon} from '../field/pokemon'; +import * as Utils from '../utils'; +import {TrainerType} from './enums/trainer-type'; +import {Moves} from './enums/moves'; +import {PokeballType} from './pokeball'; +import {pokemonEvolutions, pokemonPrevolutions} from './pokemon-evolutions'; +import PokemonSpecies, {PokemonSpeciesFilter, getPokemonSpecies} from './pokemon-species'; +import {Species} from './enums/species'; +import {tmSpecies} from './tms'; +import {Type} from './type'; +import {initTrainerTypeDialogue} from './dialogue'; +import {PersistentModifier} from '../modifier/modifier'; +import {TrainerVariant} from '../field/trainer'; +import {PartyMemberStrength} from './enums/party-member-strength'; +import i18next from 'i18next'; +import {getIsInitialized, initI18n} from '#app/plugins/i18n'; export enum TrainerPoolTier { COMMON, @@ -36,128 +36,128 @@ export enum TrainerSlot { } export class TrainerPartyTemplate { - public size: integer; - public strength: PartyMemberStrength; - public sameSpecies: boolean; - public balanced: boolean; + public size: integer; + public strength: PartyMemberStrength; + public sameSpecies: boolean; + public balanced: boolean; - constructor(size: integer, strength: PartyMemberStrength, sameSpecies?: boolean, balanced?: boolean) { - this.size = size; - this.strength = strength; - this.sameSpecies = !!sameSpecies; - this.balanced = !!balanced; - } + constructor(size: integer, strength: PartyMemberStrength, sameSpecies?: boolean, balanced?: boolean) { + this.size = size; + this.strength = strength; + this.sameSpecies = !!sameSpecies; + this.balanced = !!balanced; + } - getStrength(index: integer): PartyMemberStrength { - return this.strength; - } + getStrength(index: integer): PartyMemberStrength { + return this.strength; + } - isSameSpecies(index: integer): boolean { - return this.sameSpecies; - } + isSameSpecies(index: integer): boolean { + return this.sameSpecies; + } - isBalanced(index: integer): boolean { - return this.balanced; - } + isBalanced(index: integer): boolean { + return this.balanced; + } } export class TrainerPartyCompoundTemplate extends TrainerPartyTemplate { - public templates: TrainerPartyTemplate[]; + public templates: TrainerPartyTemplate[]; - constructor(...templates: TrainerPartyTemplate[]) { - super(templates.reduce((total: integer, template: TrainerPartyTemplate) => { - total += template.size; - return total; - }, 0), PartyMemberStrength.AVERAGE); - this.templates = templates; + constructor(...templates: TrainerPartyTemplate[]) { + super(templates.reduce((total: integer, template: TrainerPartyTemplate) => { + total += template.size; + return total; + }, 0), PartyMemberStrength.AVERAGE); + this.templates = templates; + } + + getStrength(index: integer): PartyMemberStrength { + let t = 0; + for (const template of this.templates) { + if (t + template.size > index) + return template.getStrength(index - t); + t += template.size; } - getStrength(index: integer): PartyMemberStrength { - let t = 0; - for (let template of this.templates) { - if (t + template.size > index) - return template.getStrength(index - t); - t += template.size; - } + return super.getStrength(index); + } - return super.getStrength(index); + isSameSpecies(index: integer): boolean { + let t = 0; + for (const template of this.templates) { + if (t + template.size > index) + return template.isSameSpecies(index - t); + t += template.size; } - isSameSpecies(index: integer): boolean { - let t = 0; - for (let template of this.templates) { - if (t + template.size > index) - return template.isSameSpecies(index - t); - t += template.size; - } + return super.isSameSpecies(index); + } - return super.isSameSpecies(index); + isBalanced(index: integer): boolean { + let t = 0; + for (const template of this.templates) { + if (t + template.size > index) + return template.isBalanced(index - t); + t += template.size; } - isBalanced(index: integer): boolean { - let t = 0; - for (let template of this.templates) { - if (t + template.size > index) - return template.isBalanced(index - t); - t += template.size; - } - - return super.isBalanced(index); - } + return super.isBalanced(index); + } } export const trainerPartyTemplates = { - ONE_WEAK_ONE_STRONG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.WEAK), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), - ONE_AVG: new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), - ONE_AVG_ONE_STRONG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), - ONE_STRONG: new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), - ONE_STRONGER: new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER), - TWO_WEAKER: new TrainerPartyTemplate(2, PartyMemberStrength.WEAKER), - TWO_WEAK: new TrainerPartyTemplate(2, PartyMemberStrength.WEAK), - TWO_WEAK_ONE_AVG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.WEAK), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE)), - TWO_WEAK_SAME_ONE_AVG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.WEAK, true), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE)), - TWO_WEAK_SAME_TWO_WEAK_SAME: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.WEAK, true), new TrainerPartyTemplate(2, PartyMemberStrength.WEAK, true)), - TWO_WEAK_ONE_STRONG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.WEAK), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), - TWO_AVG: new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE), - TWO_AVG_ONE_STRONG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), - TWO_AVG_SAME_ONE_AVG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE, true), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE)), - TWO_AVG_SAME_ONE_STRONG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE, true), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), - TWO_AVG_SAME_TWO_AVG_SAME: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE, true), new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE, true)), - TWO_STRONG: new TrainerPartyTemplate(2, PartyMemberStrength.STRONG), - THREE_WEAK: new TrainerPartyTemplate(3, PartyMemberStrength.WEAK), - THREE_WEAK_SAME: new TrainerPartyTemplate(3, PartyMemberStrength.WEAK, true), - THREE_AVG: new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE), - THREE_AVG_SAME: new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE, true), - THREE_WEAK_BALANCED: new TrainerPartyTemplate(3, PartyMemberStrength.WEAK, false, true), - FOUR_WEAKER: new TrainerPartyTemplate(4, PartyMemberStrength.WEAKER), - FOUR_WEAKER_SAME: new TrainerPartyTemplate(4, PartyMemberStrength.WEAKER, true), - FOUR_WEAK: new TrainerPartyTemplate(4, PartyMemberStrength.WEAK), - FOUR_WEAK_SAME: new TrainerPartyTemplate(4, PartyMemberStrength.WEAK, true), - FOUR_WEAK_BALANCED: new TrainerPartyTemplate(4, PartyMemberStrength.WEAK, false, true), - FIVE_WEAKER: new TrainerPartyTemplate(5, PartyMemberStrength.WEAKER), - FIVE_WEAK: new TrainerPartyTemplate(5, PartyMemberStrength.WEAK), - FIVE_WEAK_BALANCED: new TrainerPartyTemplate(5, PartyMemberStrength.WEAK, false, true), - SIX_WEAKER: new TrainerPartyTemplate(6, PartyMemberStrength.WEAKER), - SIX_WEAKER_SAME: new TrainerPartyTemplate(6, PartyMemberStrength.WEAKER, true), - SIX_WEAK_SAME: new TrainerPartyTemplate(6, PartyMemberStrength.WEAKER, true), - SIX_WEAK_BALANCED: new TrainerPartyTemplate(6, PartyMemberStrength.WEAK, false, true), + ONE_WEAK_ONE_STRONG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.WEAK), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), + ONE_AVG: new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), + ONE_AVG_ONE_STRONG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), + ONE_STRONG: new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), + ONE_STRONGER: new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER), + TWO_WEAKER: new TrainerPartyTemplate(2, PartyMemberStrength.WEAKER), + TWO_WEAK: new TrainerPartyTemplate(2, PartyMemberStrength.WEAK), + TWO_WEAK_ONE_AVG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.WEAK), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE)), + TWO_WEAK_SAME_ONE_AVG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.WEAK, true), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE)), + TWO_WEAK_SAME_TWO_WEAK_SAME: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.WEAK, true), new TrainerPartyTemplate(2, PartyMemberStrength.WEAK, true)), + TWO_WEAK_ONE_STRONG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.WEAK), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), + TWO_AVG: new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE), + TWO_AVG_ONE_STRONG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), + TWO_AVG_SAME_ONE_AVG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE, true), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE)), + TWO_AVG_SAME_ONE_STRONG: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE, true), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), + TWO_AVG_SAME_TWO_AVG_SAME: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE, true), new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE, true)), + TWO_STRONG: new TrainerPartyTemplate(2, PartyMemberStrength.STRONG), + THREE_WEAK: new TrainerPartyTemplate(3, PartyMemberStrength.WEAK), + THREE_WEAK_SAME: new TrainerPartyTemplate(3, PartyMemberStrength.WEAK, true), + THREE_AVG: new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE), + THREE_AVG_SAME: new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE, true), + THREE_WEAK_BALANCED: new TrainerPartyTemplate(3, PartyMemberStrength.WEAK, false, true), + FOUR_WEAKER: new TrainerPartyTemplate(4, PartyMemberStrength.WEAKER), + FOUR_WEAKER_SAME: new TrainerPartyTemplate(4, PartyMemberStrength.WEAKER, true), + FOUR_WEAK: new TrainerPartyTemplate(4, PartyMemberStrength.WEAK), + FOUR_WEAK_SAME: new TrainerPartyTemplate(4, PartyMemberStrength.WEAK, true), + FOUR_WEAK_BALANCED: new TrainerPartyTemplate(4, PartyMemberStrength.WEAK, false, true), + FIVE_WEAKER: new TrainerPartyTemplate(5, PartyMemberStrength.WEAKER), + FIVE_WEAK: new TrainerPartyTemplate(5, PartyMemberStrength.WEAK), + FIVE_WEAK_BALANCED: new TrainerPartyTemplate(5, PartyMemberStrength.WEAK, false, true), + SIX_WEAKER: new TrainerPartyTemplate(6, PartyMemberStrength.WEAKER), + SIX_WEAKER_SAME: new TrainerPartyTemplate(6, PartyMemberStrength.WEAKER, true), + SIX_WEAK_SAME: new TrainerPartyTemplate(6, PartyMemberStrength.WEAKER, true), + SIX_WEAK_BALANCED: new TrainerPartyTemplate(6, PartyMemberStrength.WEAK, false, true), - GYM_LEADER_1: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), - GYM_LEADER_2: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)), - GYM_LEADER_3: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)), - GYM_LEADER_4: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)), - GYM_LEADER_5: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(2, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)), + GYM_LEADER_1: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), + GYM_LEADER_2: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)), + GYM_LEADER_3: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)), + GYM_LEADER_4: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)), + GYM_LEADER_5: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(2, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)), - ELITE_FOUR: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(3, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)), + ELITE_FOUR: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(3, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)), - CHAMPION: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER), new TrainerPartyTemplate(5, PartyMemberStrength.STRONG, false, true)), + CHAMPION: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER), new TrainerPartyTemplate(5, PartyMemberStrength.STRONG, false, true)), - RIVAL: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE)), - RIVAL_2: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.WEAK, false, true)), - RIVAL_3: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE, false, true), new TrainerPartyTemplate(1, PartyMemberStrength.WEAK, false, true)), - RIVAL_4: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE, false, true), new TrainerPartyTemplate(1, PartyMemberStrength.WEAK, false, true)), - RIVAL_5: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE, false, true), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), - RIVAL_6: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE, false, true), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)) + RIVAL: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE)), + RIVAL_2: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.WEAK, false, true)), + RIVAL_3: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE, false, true), new TrainerPartyTemplate(1, PartyMemberStrength.WEAK, false, true)), + RIVAL_4: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(2, PartyMemberStrength.AVERAGE, false, true), new TrainerPartyTemplate(1, PartyMemberStrength.WEAK, false, true)), + RIVAL_5: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE, false, true), new TrainerPartyTemplate(1, PartyMemberStrength.STRONG)), + RIVAL_6: new TrainerPartyCompoundTemplate(new TrainerPartyTemplate(1, PartyMemberStrength.STRONG), new TrainerPartyTemplate(1, PartyMemberStrength.AVERAGE), new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE, false, true), new TrainerPartyTemplate(1, PartyMemberStrength.STRONGER)) }; type PartyTemplateFunc = (scene: BattleScene) => TrainerPartyTemplate; @@ -169,477 +169,477 @@ export interface PartyMemberFuncs { } export class TrainerConfig { - public trainerType: TrainerType; - public name: string; - public nameFemale: string; - public nameDouble: string; - public title: string; - public hasGenders: boolean = false; - public hasDouble: boolean = false; - public hasCharSprite: boolean = false; - public doubleOnly: boolean = false; - public moneyMultiplier: number = 1; - public isBoss: boolean = false; - public hasStaticParty: boolean = false; - public useSameSeedForAllMembers: boolean = false; - public battleBgm: string; - public encounterBgm: string; - public femaleEncounterBgm: string; - public doubleEncounterBgm: string; - public victoryBgm: string; - public genModifiersFunc: GenModifiersFunc; - public modifierRewardFuncs: ModifierTypeFunc[] = []; - public partyTemplates: TrainerPartyTemplate[]; - public partyTemplateFunc: PartyTemplateFunc; - public partyMemberFuncs: PartyMemberFuncs = {}; - public speciesPools: TrainerTierPools; - public speciesFilter: PokemonSpeciesFilter; - public specialtyTypes: Type[] = []; + public trainerType: TrainerType; + public name: string; + public nameFemale: string; + public nameDouble: string; + public title: string; + public hasGenders: boolean = false; + public hasDouble: boolean = false; + public hasCharSprite: boolean = false; + public doubleOnly: boolean = false; + public moneyMultiplier: number = 1; + public isBoss: boolean = false; + public hasStaticParty: boolean = false; + public useSameSeedForAllMembers: boolean = false; + public battleBgm: string; + public encounterBgm: string; + public femaleEncounterBgm: string; + public doubleEncounterBgm: string; + public victoryBgm: string; + public genModifiersFunc: GenModifiersFunc; + public modifierRewardFuncs: ModifierTypeFunc[] = []; + public partyTemplates: TrainerPartyTemplate[]; + public partyTemplateFunc: PartyTemplateFunc; + public partyMemberFuncs: PartyMemberFuncs = {}; + public speciesPools: TrainerTierPools; + public speciesFilter: PokemonSpeciesFilter; + public specialtyTypes: Type[] = []; - public encounterMessages: string[] = []; - public victoryMessages: string[] = []; - public defeatMessages: string[] = []; + public encounterMessages: string[] = []; + public victoryMessages: string[] = []; + public defeatMessages: string[] = []; - public femaleEncounterMessages: string[]; - public femaleVictoryMessages: string[]; - public femaleDefeatMessages: string[]; + public femaleEncounterMessages: string[]; + public femaleVictoryMessages: string[]; + public femaleDefeatMessages: string[]; - public doubleEncounterMessages: string[]; - public doubleVictoryMessages: string[]; - public doubleDefeatMessages: string[]; + public doubleEncounterMessages: string[]; + public doubleVictoryMessages: string[]; + public doubleDefeatMessages: string[]; - constructor(trainerType: TrainerType, allowLegendaries?: boolean) { - this.trainerType = trainerType; - this.name = Utils.toReadableString(TrainerType[this.getDerivedType()]); - this.battleBgm = 'battle_trainer'; - this.victoryBgm = 'victory_trainer'; - this.partyTemplates = [trainerPartyTemplates.TWO_AVG]; - this.speciesFilter = species => (allowLegendaries || (!species.legendary && !species.subLegendary && !species.mythical)) && !species.isTrainerForbidden(); + constructor(trainerType: TrainerType, allowLegendaries?: boolean) { + this.trainerType = trainerType; + this.name = Utils.toReadableString(TrainerType[this.getDerivedType()]); + this.battleBgm = 'battle_trainer'; + this.victoryBgm = 'victory_trainer'; + this.partyTemplates = [trainerPartyTemplates.TWO_AVG]; + this.speciesFilter = species => (allowLegendaries || (!species.legendary && !species.subLegendary && !species.mythical)) && !species.isTrainerForbidden(); + } + + getKey(): string { + return TrainerType[this.getDerivedType()].toString().toLowerCase(); + } + + getSpriteKey(female?: boolean): string { + let ret = this.getKey(); + if (this.hasGenders) + ret += `_${female ? 'f' : 'm'}`; + return ret; + } + + setName(name: string): TrainerConfig { + if (name === 'Finn') { + // Give the rival a localized name + // First check if i18n is initialized + if (!getIsInitialized()) { + initI18n(); + } + // This is only the male name, because the female name is handled in a different function (setHasGenders) + if (name === 'Finn') { + name = i18next.t('trainerNames:rival'); + } + } + this.name = name; + return this; + } + + setTitle(title: string): TrainerConfig { + // First check if i18n is initialized + if (!getIsInitialized()) { + initI18n(); } - getKey(): string { - return TrainerType[this.getDerivedType()].toString().toLowerCase(); + // Make the title lowercase and replace spaces with underscores + title = title.toLowerCase().replace(/\s/g, '_'); + + // Get the title from the i18n file + this.title = i18next.t(`titles:${title}`); + + + return this; + } + + getDerivedType(): TrainerType { + let trainerType = this.trainerType; + switch (trainerType) { + case TrainerType.RIVAL_2: + case TrainerType.RIVAL_3: + case TrainerType.RIVAL_4: + case TrainerType.RIVAL_5: + case TrainerType.RIVAL_6: + trainerType = TrainerType.RIVAL; + break; + case TrainerType.LANCE_CHAMPION: + trainerType = TrainerType.LANCE; + break; + case TrainerType.LARRY_ELITE: + trainerType = TrainerType.LARRY; + break; } - getSpriteKey(female?: boolean): string { - let ret = this.getKey(); - if (this.hasGenders) - ret += `_${female ? 'f' : 'm'}`; - return ret; - } + return trainerType; + } - setName(name: string): TrainerConfig { - if (name === 'Finn') { - // Give the rival a localized name - // First check if i18n is initialized - if (!getIsInitialized()) { - initI18n(); - } - // This is only the male name, because the female name is handled in a different function (setHasGenders) - if (name === 'Finn') { - name = i18next.t('trainerNames:rival'); - } - } - this.name = name; - return this; - } - - setTitle(title: string): TrainerConfig { - // First check if i18n is initialized - if (!getIsInitialized()) { - initI18n(); - } - - // Make the title lowercase and replace spaces with underscores - title = title.toLowerCase().replace(/\s/g, '_'); - - // Get the title from the i18n file - this.title = i18next.t(`titles:${title}`); - - - return this; - } - - getDerivedType(): TrainerType { - let trainerType = this.trainerType; - switch (trainerType) { - case TrainerType.RIVAL_2: - case TrainerType.RIVAL_3: - case TrainerType.RIVAL_4: - case TrainerType.RIVAL_5: - case TrainerType.RIVAL_6: - trainerType = TrainerType.RIVAL; - break; - case TrainerType.LANCE_CHAMPION: - trainerType = TrainerType.LANCE; - break; - case TrainerType.LARRY_ELITE: - trainerType = TrainerType.LARRY; - break; - } - - return trainerType; - } - - /** + /** * Sets the configuration for trainers with genders, including the female name and encounter background music (BGM). * @param {string} [nameFemale] - The name of the female trainer. If 'Ivy', a localized name will be assigned. * @param {TrainerType | string} [femaleEncounterBgm] - The encounter BGM for the female trainer, which can be a TrainerType or a string. * @returns {TrainerConfig} - The updated TrainerConfig instance. **/ - setHasGenders(nameFemale?: string, femaleEncounterBgm?: TrainerType | string): TrainerConfig { - // If the female name is 'Ivy' (the rival), assign a localized name. - if (nameFemale === 'Ivy') { - // Check if the internationalization (i18n) system is initialized. - if (!getIsInitialized()) { - // Initialize the i18n system if it is not already initialized. - initI18n(); - } - // Set the localized name for the female rival. - this.nameFemale = i18next.t('trainerNames:rival_female'); - } else { - // Otherwise, assign the provided female name. - this.nameFemale = nameFemale; - } - - // Indicate that this trainer configuration includes genders. - this.hasGenders = true; - - // If a female encounter BGM is provided. - if (femaleEncounterBgm) { - // If the BGM is a TrainerType (number), convert it to a string, replace underscores with spaces, and convert to lowercase. - // Otherwise, assign the provided string as the BGM. - this.femaleEncounterBgm = typeof femaleEncounterBgm === 'number' - ? TrainerType[femaleEncounterBgm].toString().replace(/_/g, ' ').toLowerCase() - : femaleEncounterBgm; - } - - // Return the updated TrainerConfig instance. - return this; + setHasGenders(nameFemale?: string, femaleEncounterBgm?: TrainerType | string): TrainerConfig { + // If the female name is 'Ivy' (the rival), assign a localized name. + if (nameFemale === 'Ivy') { + // Check if the internationalization (i18n) system is initialized. + if (!getIsInitialized()) { + // Initialize the i18n system if it is not already initialized. + initI18n(); + } + // Set the localized name for the female rival. + this.nameFemale = i18next.t('trainerNames:rival_female'); + } else { + // Otherwise, assign the provided female name. + this.nameFemale = nameFemale; } - setHasDouble(nameDouble: string, doubleEncounterBgm?: TrainerType | string): TrainerConfig { - this.hasDouble = true; - this.nameDouble = nameDouble; - if (doubleEncounterBgm) - this.doubleEncounterBgm = typeof doubleEncounterBgm === 'number' ? TrainerType[doubleEncounterBgm].toString().replace(/\_/g, ' ').toLowerCase() : doubleEncounterBgm; - return this; + // Indicate that this trainer configuration includes genders. + this.hasGenders = true; + + // If a female encounter BGM is provided. + if (femaleEncounterBgm) { + // If the BGM is a TrainerType (number), convert it to a string, replace underscores with spaces, and convert to lowercase. + // Otherwise, assign the provided string as the BGM. + this.femaleEncounterBgm = typeof femaleEncounterBgm === 'number' + ? TrainerType[femaleEncounterBgm].toString().replace(/_/g, ' ').toLowerCase() + : femaleEncounterBgm; } - setHasCharSprite(): TrainerConfig { - this.hasCharSprite = true; - return this; - } + // Return the updated TrainerConfig instance. + return this; + } - setDoubleOnly(): TrainerConfig { - this.doubleOnly = true; - return this; - } + setHasDouble(nameDouble: string, doubleEncounterBgm?: TrainerType | string): TrainerConfig { + this.hasDouble = true; + this.nameDouble = nameDouble; + if (doubleEncounterBgm) + this.doubleEncounterBgm = typeof doubleEncounterBgm === 'number' ? TrainerType[doubleEncounterBgm].toString().replace(/\_/g, ' ').toLowerCase() : doubleEncounterBgm; + return this; + } - setMoneyMultiplier(moneyMultiplier: number): TrainerConfig { - this.moneyMultiplier = moneyMultiplier; - return this; - } + setHasCharSprite(): TrainerConfig { + this.hasCharSprite = true; + return this; + } - setBoss(): TrainerConfig { - this.isBoss = true; - return this; - } + setDoubleOnly(): TrainerConfig { + this.doubleOnly = true; + return this; + } - setStaticParty(): TrainerConfig { - this.hasStaticParty = true; - return this; - } + setMoneyMultiplier(moneyMultiplier: number): TrainerConfig { + this.moneyMultiplier = moneyMultiplier; + return this; + } - setUseSameSeedForAllMembers(): TrainerConfig { - this.useSameSeedForAllMembers = true; - return this; - } + setBoss(): TrainerConfig { + this.isBoss = true; + return this; + } - setBattleBgm(battleBgm: string): TrainerConfig { - this.battleBgm = battleBgm; - return this; - } + setStaticParty(): TrainerConfig { + this.hasStaticParty = true; + return this; + } - setEncounterBgm(encounterBgm: TrainerType | string): TrainerConfig { - this.encounterBgm = typeof encounterBgm === 'number' ? TrainerType[encounterBgm].toString().toLowerCase() : encounterBgm; - return this; - } + setUseSameSeedForAllMembers(): TrainerConfig { + this.useSameSeedForAllMembers = true; + return this; + } - setVictoryBgm(victoryBgm: string): TrainerConfig { - this.victoryBgm = victoryBgm; - return this; - } + setBattleBgm(battleBgm: string): TrainerConfig { + this.battleBgm = battleBgm; + return this; + } - setPartyTemplates(...partyTemplates: TrainerPartyTemplate[]): TrainerConfig { - this.partyTemplates = partyTemplates; - return this; - } + setEncounterBgm(encounterBgm: TrainerType | string): TrainerConfig { + this.encounterBgm = typeof encounterBgm === 'number' ? TrainerType[encounterBgm].toString().toLowerCase() : encounterBgm; + return this; + } - setPartyTemplateFunc(partyTemplateFunc: PartyTemplateFunc): TrainerConfig { - this.partyTemplateFunc = partyTemplateFunc; - return this; - } + setVictoryBgm(victoryBgm: string): TrainerConfig { + this.victoryBgm = victoryBgm; + return this; + } - setPartyMemberFunc(slotIndex: integer, partyMemberFunc: PartyMemberFunc): TrainerConfig { - this.partyMemberFuncs[slotIndex] = partyMemberFunc; - return this; - } + setPartyTemplates(...partyTemplates: TrainerPartyTemplate[]): TrainerConfig { + this.partyTemplates = partyTemplates; + return this; + } - setSpeciesPools(speciesPools: TrainerTierPools | Species[]): TrainerConfig { - this.speciesPools = (Array.isArray(speciesPools) ? {[TrainerPoolTier.COMMON]: speciesPools} : speciesPools) as unknown as TrainerTierPools; - return this; - } + setPartyTemplateFunc(partyTemplateFunc: PartyTemplateFunc): TrainerConfig { + this.partyTemplateFunc = partyTemplateFunc; + return this; + } - setSpeciesFilter(speciesFilter: PokemonSpeciesFilter, allowLegendaries?: boolean): TrainerConfig { - const baseFilter = this.speciesFilter; - this.speciesFilter = allowLegendaries ? speciesFilter : species => speciesFilter(species) && baseFilter(species); - return this; - } + setPartyMemberFunc(slotIndex: integer, partyMemberFunc: PartyMemberFunc): TrainerConfig { + this.partyMemberFuncs[slotIndex] = partyMemberFunc; + return this; + } - setSpecialtyTypes(...specialtyTypes: Type[]): TrainerConfig { - this.specialtyTypes = specialtyTypes; - return this; - } + setSpeciesPools(speciesPools: TrainerTierPools | Species[]): TrainerConfig { + this.speciesPools = (Array.isArray(speciesPools) ? {[TrainerPoolTier.COMMON]: speciesPools} : speciesPools) as unknown as TrainerTierPools; + return this; + } - setGenModifiersFunc(genModifiersFunc: GenModifiersFunc): TrainerConfig { - this.genModifiersFunc = genModifiersFunc; - return this; - } + setSpeciesFilter(speciesFilter: PokemonSpeciesFilter, allowLegendaries?: boolean): TrainerConfig { + const baseFilter = this.speciesFilter; + this.speciesFilter = allowLegendaries ? speciesFilter : species => speciesFilter(species) && baseFilter(species); + return this; + } - setModifierRewardFuncs(...modifierTypeFuncs: (() => ModifierTypeFunc)[]): TrainerConfig { - this.modifierRewardFuncs = modifierTypeFuncs.map(func => () => { - const modifierTypeFunc = func(); - const modifierType = modifierTypeFunc(); - modifierType.withIdFromFunc(modifierTypeFunc); - return modifierType; - }); - return this; - } + setSpecialtyTypes(...specialtyTypes: Type[]): TrainerConfig { + this.specialtyTypes = specialtyTypes; + return this; + } - /** + setGenModifiersFunc(genModifiersFunc: GenModifiersFunc): TrainerConfig { + this.genModifiersFunc = genModifiersFunc; + return this; + } + + setModifierRewardFuncs(...modifierTypeFuncs: (() => ModifierTypeFunc)[]): TrainerConfig { + this.modifierRewardFuncs = modifierTypeFuncs.map(func => () => { + const modifierTypeFunc = func(); + const modifierType = modifierTypeFunc(); + modifierType.withIdFromFunc(modifierTypeFunc); + return modifierType; + }); + return this; + } + + /** * Initializes the trainer configuration for a Gym Leader. * @param {Species | Species[]} signatureSpecies - The signature species for the Gym Leader. * @param {Type[]} specialtyTypes - The specialty types for the Gym Leader. * @returns {TrainerConfig} - The updated TrainerConfig instance. * **/ - initForGymLeader(signatureSpecies: (Species | Species[])[], ...specialtyTypes: Type[]): TrainerConfig { - // Check if the internationalization (i18n) system is initialized. - if (!getIsInitialized()) { - initI18n(); - } - - // Set the function to generate the Gym Leader's party template. - this.setPartyTemplateFunc(getGymLeaderPartyTemplate); - - // Set up party members with their corresponding species. - signatureSpecies.forEach((speciesPool, s) => { - // Ensure speciesPool is an array. - if (!Array.isArray(speciesPool)) - speciesPool = [speciesPool]; - // Set a function to get a random party member from the species pool. - this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); - }); - - // If specialty types are provided, set species filter and specialty types. - if (specialtyTypes.length) { - this.setSpeciesFilter(p => specialtyTypes.find(t => p.isOfType(t)) !== undefined); - this.setSpecialtyTypes(...specialtyTypes); - } - - // Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. - const nameForCall = this.name.toLowerCase().replace(/\s/g, '_'); - this.name = i18next.t(`trainerNames:${nameForCall}`); - - // Set the title to "gym_leader". (this is the key in the i18n file) - this.setTitle('gym_leader'); - - // Configure various properties for the Gym Leader. - this.setMoneyMultiplier(2.5); - this.setBoss(); - this.setStaticParty(); - this.setBattleBgm('battle_unova_gym'); - this.setVictoryBgm('victory_gym'); - this.setGenModifiersFunc(party => { - const waveIndex = party[0].scene.currentBattle.waveIndex; - return getRandomTeraModifiers(party, waveIndex >= 100 ? 1 : 0, specialtyTypes.length ? specialtyTypes : null); - }); - - return this; + initForGymLeader(signatureSpecies: (Species | Species[])[], ...specialtyTypes: Type[]): TrainerConfig { + // Check if the internationalization (i18n) system is initialized. + if (!getIsInitialized()) { + initI18n(); } - /** + // Set the function to generate the Gym Leader's party template. + this.setPartyTemplateFunc(getGymLeaderPartyTemplate); + + // Set up party members with their corresponding species. + signatureSpecies.forEach((speciesPool, s) => { + // Ensure speciesPool is an array. + if (!Array.isArray(speciesPool)) + speciesPool = [speciesPool]; + // Set a function to get a random party member from the species pool. + this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); + }); + + // If specialty types are provided, set species filter and specialty types. + if (specialtyTypes.length) { + this.setSpeciesFilter(p => specialtyTypes.find(t => p.isOfType(t)) !== undefined); + this.setSpecialtyTypes(...specialtyTypes); + } + + // Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. + const nameForCall = this.name.toLowerCase().replace(/\s/g, '_'); + this.name = i18next.t(`trainerNames:${nameForCall}`); + + // Set the title to "gym_leader". (this is the key in the i18n file) + this.setTitle('gym_leader'); + + // Configure various properties for the Gym Leader. + this.setMoneyMultiplier(2.5); + this.setBoss(); + this.setStaticParty(); + this.setBattleBgm('battle_unova_gym'); + this.setVictoryBgm('victory_gym'); + this.setGenModifiersFunc(party => { + const waveIndex = party[0].scene.currentBattle.waveIndex; + return getRandomTeraModifiers(party, waveIndex >= 100 ? 1 : 0, specialtyTypes.length ? specialtyTypes : null); + }); + + return this; + } + + /** * Initializes the trainer configuration for an Elite Four member. * @param {Species | Species[]} signatureSpecies - The signature species for the Elite Four member. * @param {Type[]} specialtyTypes - The specialty types for the Elite Four member. * @returns {TrainerConfig} - The updated TrainerConfig instance. **/ - initForEliteFour(signatureSpecies: (Species | Species[])[], ...specialtyTypes: Type[]): TrainerConfig { - // Check if the internationalization (i18n) system is initialized. - if (!getIsInitialized()) { - initI18n(); - } - - // Set the party templates for the Elite Four. - this.setPartyTemplates(trainerPartyTemplates.ELITE_FOUR); - - // Set up party members with their corresponding species. - signatureSpecies.forEach((speciesPool, s) => { - // Ensure speciesPool is an array. - if (!Array.isArray(speciesPool)) - speciesPool = [speciesPool]; - // Set a function to get a random party member from the species pool. - this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); - }); - - // Set species filter and specialty types if provided, otherwise filter by base total. - if (specialtyTypes.length) { - this.setSpeciesFilter(p => specialtyTypes.find(t => p.isOfType(t)) && p.baseTotal >= 450); - this.setSpecialtyTypes(...specialtyTypes); - } else { - this.setSpeciesFilter(p => p.baseTotal >= 450); - } - - // Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. - const nameForCall = this.name.toLowerCase().replace(/\s/g, '_'); - this.name = i18next.t(`trainerNames:${nameForCall}`); - - // Set the title to "elite_four". (this is the key in the i18n file) - this.setTitle('elite_four'); - - // Configure various properties for the Elite Four member. - this.setMoneyMultiplier(3.25); - this.setBoss(); - this.setStaticParty(); - this.setBattleBgm('battle_elite'); - this.setVictoryBgm('victory_gym'); - this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 2, specialtyTypes.length ? specialtyTypes : null)); - - return this; + initForEliteFour(signatureSpecies: (Species | Species[])[], ...specialtyTypes: Type[]): TrainerConfig { + // Check if the internationalization (i18n) system is initialized. + if (!getIsInitialized()) { + initI18n(); } - /** + // Set the party templates for the Elite Four. + this.setPartyTemplates(trainerPartyTemplates.ELITE_FOUR); + + // Set up party members with their corresponding species. + signatureSpecies.forEach((speciesPool, s) => { + // Ensure speciesPool is an array. + if (!Array.isArray(speciesPool)) + speciesPool = [speciesPool]; + // Set a function to get a random party member from the species pool. + this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); + }); + + // Set species filter and specialty types if provided, otherwise filter by base total. + if (specialtyTypes.length) { + this.setSpeciesFilter(p => specialtyTypes.find(t => p.isOfType(t)) && p.baseTotal >= 450); + this.setSpecialtyTypes(...specialtyTypes); + } else { + this.setSpeciesFilter(p => p.baseTotal >= 450); + } + + // Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. + const nameForCall = this.name.toLowerCase().replace(/\s/g, '_'); + this.name = i18next.t(`trainerNames:${nameForCall}`); + + // Set the title to "elite_four". (this is the key in the i18n file) + this.setTitle('elite_four'); + + // Configure various properties for the Elite Four member. + this.setMoneyMultiplier(3.25); + this.setBoss(); + this.setStaticParty(); + this.setBattleBgm('battle_elite'); + this.setVictoryBgm('victory_gym'); + this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 2, specialtyTypes.length ? specialtyTypes : null)); + + return this; + } + + /** * Initializes the trainer configuration for a Champion. * @param {Species | Species[]} signatureSpecies - The signature species for the Champion. * @returns {TrainerConfig} - The updated TrainerConfig instance. **/ - initForChampion(signatureSpecies: (Species | Species[])[]): TrainerConfig { - // Check if the internationalization (i18n) system is initialized. - if (!getIsInitialized()) { - initI18n(); - } - - // Set the party templates for the Champion. - this.setPartyTemplates(trainerPartyTemplates.CHAMPION); - - // Set up party members with their corresponding species. - signatureSpecies.forEach((speciesPool, s) => { - // Ensure speciesPool is an array. - if (!Array.isArray(speciesPool)) - speciesPool = [speciesPool]; - // Set a function to get a random party member from the species pool. - this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); - }); - - // Set species filter to only include species with a base total of 470 or higher. - this.setSpeciesFilter(p => p.baseTotal >= 470); - - // Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. - const nameForCall = this.name.toLowerCase().replace(/\s/g, '_'); - this.name = i18next.t(`trainerNames:${nameForCall}`); - - // Set the title to "champion". (this is the key in the i18n file) - this.setTitle('champion'); - - // Configure various properties for the Champion. - this.setMoneyMultiplier(10); - this.setBoss(); - this.setStaticParty(); - this.setBattleBgm('battle_champion_alder'); - this.setVictoryBgm('victory_champion'); - this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 3)); - - return this; + initForChampion(signatureSpecies: (Species | Species[])[]): TrainerConfig { + // Check if the internationalization (i18n) system is initialized. + if (!getIsInitialized()) { + initI18n(); } - /** + // Set the party templates for the Champion. + this.setPartyTemplates(trainerPartyTemplates.CHAMPION); + + // Set up party members with their corresponding species. + signatureSpecies.forEach((speciesPool, s) => { + // Ensure speciesPool is an array. + if (!Array.isArray(speciesPool)) + speciesPool = [speciesPool]; + // Set a function to get a random party member from the species pool. + this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool)); + }); + + // Set species filter to only include species with a base total of 470 or higher. + this.setSpeciesFilter(p => p.baseTotal >= 470); + + // Localize the trainer's name by converting it to lowercase and replacing spaces with underscores. + const nameForCall = this.name.toLowerCase().replace(/\s/g, '_'); + this.name = i18next.t(`trainerNames:${nameForCall}`); + + // Set the title to "champion". (this is the key in the i18n file) + this.setTitle('champion'); + + // Configure various properties for the Champion. + this.setMoneyMultiplier(10); + this.setBoss(); + this.setStaticParty(); + this.setBattleBgm('battle_champion_alder'); + this.setVictoryBgm('victory_champion'); + this.setGenModifiersFunc(party => getRandomTeraModifiers(party, 3)); + + return this; + } + + /** * Retrieves the title for the trainer based on the provided trainer slot and variant. * @param {TrainerSlot} trainerSlot - The slot to determine which title to use. Defaults to TrainerSlot.NONE. * @param {TrainerVariant} variant - The variant of the trainer to determine the specific title. * @returns {string} - The title of the trainer. **/ - getTitle(trainerSlot: TrainerSlot = TrainerSlot.NONE, variant: TrainerVariant): string { - let ret = this.name; + getTitle(trainerSlot: TrainerSlot = TrainerSlot.NONE, variant: TrainerVariant): string { + const ret = this.name; - // Check if the variant is double and the name for double exists - if (!trainerSlot && variant === TrainerVariant.DOUBLE && this.nameDouble) - return this.nameDouble; + // Check if the variant is double and the name for double exists + if (!trainerSlot && variant === TrainerVariant.DOUBLE && this.nameDouble) + return this.nameDouble; - // Female variant - if (this.hasGenders) { - // If the name is already set - if (this.nameFemale) { - // Check if the variant is either female or this is for the partner in a double battle - if (variant === TrainerVariant.FEMALE || (variant === TrainerVariant.DOUBLE && trainerSlot === TrainerSlot.TRAINER_PARTNER)) - return this.nameFemale; - } else - // Check if !variant is true, if so return the name, else return the name with _female appended - if (variant) { - if (!getIsInitialized()) { - initI18n(); - } - // Check if the female version exists in the i18n file - if (i18next.exists(`trainerClasses:${this.name.toLowerCase().replace()}`)) { - // If it does, return - return ret + "_female"; - } else { - // If it doesn't, we do not do anything and go to the normal return - // This is to prevent the game from displaying an error if a female version of the trainer does not exist in the localization - } - } + // Female variant + if (this.hasGenders) { + // If the name is already set + if (this.nameFemale) { + // Check if the variant is either female or this is for the partner in a double battle + if (variant === TrainerVariant.FEMALE || (variant === TrainerVariant.DOUBLE && trainerSlot === TrainerSlot.TRAINER_PARTNER)) + return this.nameFemale; + } else + // Check if !variant is true, if so return the name, else return the name with _female appended + if (variant) { + if (!getIsInitialized()) { + initI18n(); + } + // Check if the female version exists in the i18n file + if (i18next.exists(`trainerClasses:${this.name.toLowerCase().replace()}`)) { + // If it does, return + return ret + '_female'; + } else { + // If it doesn't, we do not do anything and go to the normal return + // This is to prevent the game from displaying an error if a female version of the trainer does not exist in the localization + } } - - return ret; } - loadAssets(scene: BattleScene, variant: TrainerVariant): Promise { - return new Promise(resolve => { - const isDouble = variant === TrainerVariant.DOUBLE; - const trainerKey = this.getSpriteKey(variant === TrainerVariant.FEMALE); - const partnerTrainerKey = this.getSpriteKey(true); - scene.loadAtlas(trainerKey, 'trainer'); - if (isDouble) - scene.loadAtlas(partnerTrainerKey, 'trainer'); - scene.load.once(Phaser.Loader.Events.COMPLETE, () => { - const originalWarn = console.warn; - // Ignore warnings for missing frames, because there will be a lot - console.warn = () => { - }; - const frameNames = scene.anims.generateFrameNames(trainerKey, {zeroPad: 4,suffix: ".png",start: 1,end: 128}); - const partnerFrameNames = isDouble - ? scene.anims.generateFrameNames(partnerTrainerKey, {zeroPad: 4,suffix: ".png",start: 1,end: 128}) - : null; - console.warn = originalWarn; - scene.anims.create({ - key: trainerKey, - frames: frameNames, - frameRate: 24, - repeat: -1 - }); - if (isDouble) { - scene.anims.create({ - key: partnerTrainerKey, - frames: partnerFrameNames, - frameRate: 24, - repeat: -1 - }); - } - resolve(); - }); - if (!scene.load.isLoading()) - scene.load.start(); + return ret; + } + + loadAssets(scene: BattleScene, variant: TrainerVariant): Promise { + return new Promise(resolve => { + const isDouble = variant === TrainerVariant.DOUBLE; + const trainerKey = this.getSpriteKey(variant === TrainerVariant.FEMALE); + const partnerTrainerKey = this.getSpriteKey(true); + scene.loadAtlas(trainerKey, 'trainer'); + if (isDouble) + scene.loadAtlas(partnerTrainerKey, 'trainer'); + scene.load.once(Phaser.Loader.Events.COMPLETE, () => { + const originalWarn = console.warn; + // Ignore warnings for missing frames, because there will be a lot + console.warn = () => { + }; + const frameNames = scene.anims.generateFrameNames(trainerKey, {zeroPad: 4,suffix: '.png',start: 1,end: 128}); + const partnerFrameNames = isDouble + ? scene.anims.generateFrameNames(partnerTrainerKey, {zeroPad: 4,suffix: '.png',start: 1,end: 128}) + : null; + console.warn = originalWarn; + scene.anims.create({ + key: trainerKey, + frames: frameNames, + frameRate: 24, + repeat: -1 }); - } + if (isDouble) { + scene.anims.create({ + key: partnerTrainerKey, + frames: partnerFrameNames, + frameRate: 24, + repeat: -1 + }); + } + resolve(); + }); + if (!scene.load.isLoading()) + scene.load.start(); + }); + } } let t = 0; @@ -649,40 +649,40 @@ interface TrainerConfigs { } function getWavePartyTemplate(scene: BattleScene, ...templates: TrainerPartyTemplate[]) { - return templates[Math.min(Math.max(Math.ceil((scene.gameMode.getWaveForDifficulty(scene.currentBattle?.waveIndex || startingWave, true) - 20) / 30), 0), templates.length - 1)]; + return templates[Math.min(Math.max(Math.ceil((scene.gameMode.getWaveForDifficulty(scene.currentBattle?.waveIndex || startingWave, true) - 20) / 30), 0), templates.length - 1)]; } function getGymLeaderPartyTemplate(scene: BattleScene) { - return getWavePartyTemplate(scene, trainerPartyTemplates.GYM_LEADER_1, trainerPartyTemplates.GYM_LEADER_2, trainerPartyTemplates.GYM_LEADER_3, trainerPartyTemplates.GYM_LEADER_4, trainerPartyTemplates.GYM_LEADER_5); + return getWavePartyTemplate(scene, trainerPartyTemplates.GYM_LEADER_1, trainerPartyTemplates.GYM_LEADER_2, trainerPartyTemplates.GYM_LEADER_3, trainerPartyTemplates.GYM_LEADER_4, trainerPartyTemplates.GYM_LEADER_5); } function getRandomPartyMemberFunc(speciesPool: Species[], trainerSlot: TrainerSlot = TrainerSlot.TRAINER, ignoreEvolution: boolean = false, postProcess?: (enemyPokemon: EnemyPokemon) => void): PartyMemberFunc { - return (scene: BattleScene, level: integer, strength: PartyMemberStrength) => { - let species = Utils.randSeedItem(speciesPool); - if (!ignoreEvolution) - species = getPokemonSpecies(species).getTrainerSpeciesForLevel(level, true, strength); - return scene.addEnemyPokemon(getPokemonSpecies(species), level, trainerSlot, undefined, undefined, postProcess); - }; + return (scene: BattleScene, level: integer, strength: PartyMemberStrength) => { + let species = Utils.randSeedItem(speciesPool); + if (!ignoreEvolution) + species = getPokemonSpecies(species).getTrainerSpeciesForLevel(level, true, strength); + return scene.addEnemyPokemon(getPokemonSpecies(species), level, trainerSlot, undefined, undefined, postProcess); + }; } function getSpeciesFilterRandomPartyMemberFunc(speciesFilter: PokemonSpeciesFilter, trainerSlot: TrainerSlot = TrainerSlot.TRAINER, allowLegendaries?: boolean, postProcess?: (EnemyPokemon: EnemyPokemon) => void): PartyMemberFunc { - const originalSpeciesFilter = speciesFilter; - speciesFilter = (species: PokemonSpecies) => (allowLegendaries || (!species.legendary && !species.subLegendary && !species.mythical)) && !species.isTrainerForbidden() && originalSpeciesFilter(species); - return (scene: BattleScene, level: integer, strength: PartyMemberStrength) => { - const ret = scene.addEnemyPokemon(getPokemonSpecies(scene.randomSpecies(scene.currentBattle.waveIndex, level, false, speciesFilter).getTrainerSpeciesForLevel(level, true, strength)), level, trainerSlot, undefined, undefined, postProcess); - return ret; - }; + const originalSpeciesFilter = speciesFilter; + speciesFilter = (species: PokemonSpecies) => (allowLegendaries || (!species.legendary && !species.subLegendary && !species.mythical)) && !species.isTrainerForbidden() && originalSpeciesFilter(species); + return (scene: BattleScene, level: integer, strength: PartyMemberStrength) => { + const ret = scene.addEnemyPokemon(getPokemonSpecies(scene.randomSpecies(scene.currentBattle.waveIndex, level, false, speciesFilter).getTrainerSpeciesForLevel(level, true, strength)), level, trainerSlot, undefined, undefined, postProcess); + return ret; + }; } function getRandomTeraModifiers(party: EnemyPokemon[], count: integer, types?: Type[]): PersistentModifier[] { - const ret: PersistentModifier[] = []; - const partyMemberIndexes = new Array(party.length).fill(null).map((_, i) => i); - for (let t = 0; t < Math.min(count, party.length); t++) { - const randomIndex = Utils.randSeedItem(partyMemberIndexes); - partyMemberIndexes.splice(partyMemberIndexes.indexOf(randomIndex), 1); - ret.push(modifierTypes.TERA_SHARD().generateType(null, [Utils.randSeedItem(types ? types : party[randomIndex].getTypes())]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(party[randomIndex]) as PersistentModifier); - } - return ret; + const ret: PersistentModifier[] = []; + const partyMemberIndexes = new Array(party.length).fill(null).map((_, i) => i); + for (let t = 0; t < Math.min(count, party.length); t++) { + const randomIndex = Utils.randSeedItem(partyMemberIndexes); + partyMemberIndexes.splice(partyMemberIndexes.indexOf(randomIndex), 1); + ret.push(modifierTypes.TERA_SHARD().generateType(null, [Utils.randSeedItem(types ? types : party[randomIndex].getTypes())]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(party[randomIndex]) as PersistentModifier); + } + return ret; } export const trainerConfigs: TrainerConfigs = { @@ -691,8 +691,8 @@ export const trainerConfigs: TrainerConfigs = { .setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.THREE_WEAK_BALANCED, trainerPartyTemplates.FOUR_WEAK_BALANCED, trainerPartyTemplates.FIVE_WEAK_BALANCED, trainerPartyTemplates.SIX_WEAK_BALANCED)), [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.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) .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 ], @@ -712,17 +712,17 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.SUPER_RARE]: [ Species.HITMONTOP, Species.INFERNAPE, Species.GALLADE, Species.HAWLUCHA, Species.HAKAMO_O ], [TrainerPoolTier.ULTRA_RARE]: [ Species.KUBFU ] }), - [TrainerType.BREEDER]: new TrainerConfig(++t).setMoneyMultiplier(1.325).setEncounterBgm(TrainerType.POKEFAN).setHasGenders("Breeder Female").setHasDouble('Breeders') + [TrainerType.BREEDER]: new TrainerConfig(++t).setMoneyMultiplier(1.325).setEncounterBgm(TrainerType.POKEFAN).setHasGenders('Breeder Female').setHasDouble('Breeders') .setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.FOUR_WEAKER, trainerPartyTemplates.FIVE_WEAKER, trainerPartyTemplates.SIX_WEAKER)) .setSpeciesFilter(s => s.baseTotal < 450), - [TrainerType.CLERK]: new TrainerConfig(++t).setHasGenders("Clerk Female").setHasDouble('Colleagues').setEncounterBgm(TrainerType.CLERK) + [TrainerType.CLERK]: new TrainerConfig(++t).setHasGenders('Clerk Female').setHasDouble('Colleagues').setEncounterBgm(TrainerType.CLERK) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_ONE_AVG) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.MEOWTH, Species.PSYDUCK, Species.BUDEW, Species.PIDOVE, Species.CINCCINO, Species.LITLEO ], [TrainerPoolTier.UNCOMMON]: [ Species.JIGGLYPUFF, Species.MAGNEMITE, Species.MARILL, Species.COTTONEE, Species.SKIDDO ], [TrainerPoolTier.RARE]: [ Species.BUIZEL, Species.SNEASEL, Species.KLEFKI, Species.INDEEDEE ] }), - [TrainerType.CYCLIST]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setHasGenders("Cyclist Female").setHasDouble('Cyclists').setEncounterBgm(TrainerType.CYCLIST) + [TrainerType.CYCLIST]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setHasGenders('Cyclist Female').setHasDouble('Cyclists').setEncounterBgm(TrainerType.CYCLIST) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.ONE_AVG) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.PICHU, Species.STARLY, Species.TAILLOW, Species.BOLTUND ], @@ -781,9 +781,9 @@ export const trainerConfigs: TrainerConfigs = { }), [TrainerType.PARASOL_LADY]: new TrainerConfig(++t).setMoneyMultiplier(1.55).setEncounterBgm(TrainerType.PARASOL_LADY).setSpeciesFilter(s => s.isOfType(Type.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) + [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), - [TrainerType.PRESCHOOLER]: new TrainerConfig(++t).setMoneyMultiplier(0.2).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders("Preschooler Female", 'lass').setHasDouble('Preschoolers') + [TrainerType.PRESCHOOLER]: new TrainerConfig(++t).setMoneyMultiplier(0.2).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders('Preschooler Female', 'lass').setHasDouble('Preschoolers') .setPartyTemplates(trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.FOUR_WEAKER, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.FIVE_WEAKER) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.CATERPIE, Species.PICHU, Species.SANDSHREW, Species.LEDYBA, Species.BUDEW, Species.BURMY, Species.WOOLOO, Species.PAWMI, Species.SMOLIV ], @@ -791,7 +791,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.RARE]: [ Species.RALTS, Species.RIOLU, Species.JOLTIK, Species.TANDEMAUS ], [TrainerPoolTier.SUPER_RARE]: [ Species.DARUMAKA, Species.TINKATINK ], }), - [TrainerType.PSYCHIC]: new TrainerConfig(++t).setHasGenders("Psychic Female").setHasDouble('Psychics').setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.PSYCHIC) + [TrainerType.PSYCHIC]: new TrainerConfig(++t).setHasGenders('Psychic Female').setHasDouble('Psychics').setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.PSYCHIC) .setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.TWO_WEAK_SAME_TWO_WEAK_SAME, trainerPartyTemplates.ONE_STRONGER) .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.ABRA, Species.DROWZEE, Species.RALTS, Species.SPOINK, Species.GOTHITA, Species.SOLOSIS, Species.BLIPBUG, Species.ESPURR, Species.HATENNA ], @@ -799,7 +799,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerPoolTier.RARE]: [ Species.ELGYEM, Species.SIGILYPH, Species.BALTOY, Species.GIRAFARIG, Species.MEOWSTIC ], [TrainerPoolTier.SUPER_RARE]: [ Species.BELDUM, Species.ESPEON, Species.STANTLER ], }), - [TrainerType.RANGER]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setName('Pokémon Ranger').setEncounterBgm(TrainerType.BACKPACKER).setHasGenders("Pokémon Ranger Female").setHasDouble('Pokémon Rangers') + [TrainerType.RANGER]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setName('Pokémon Ranger').setEncounterBgm(TrainerType.BACKPACKER).setHasGenders('Pokémon Ranger Female').setHasDouble('Pokémon Rangers') .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.PICHU, Species.GROWLITHE, Species.PONYTA, Species.ZIGZAGOON, Species.SEEDOT, Species.BIDOOF, Species.RIOLU, Species.SEWADDLE, Species.SKIDDO, Species.SALANDIT, Species.YAMPER ], [TrainerPoolTier.UNCOMMON]: [ Species.AZURILL, Species.TAUROS, Species.MAREEP, Species.FARFETCHD, Species.TEDDIURSA, Species.SHROOMISH, Species.ELECTRIKE, Species.BUDEW, Species.BUIZEL, Species.MUDBRAY, Species.STUFFUL ], @@ -809,7 +809,7 @@ 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.SCIENTIST]: new TrainerConfig(++t).setHasGenders("Scientist Female").setHasDouble('Scientists').setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.SCIENTIST) + [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 ], [TrainerPoolTier.UNCOMMON]: [ Species.BALTOY, Species.BRONZOR, Species.FERROSEED, Species.KLINK, Species.CHARJABUG, Species.BLIPBUG, Species.HELIOPTILE ], @@ -818,29 +818,29 @@ 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').setHasGenders("Worker Female").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').setHasGenders('Worker Female').setHasDouble('Workers').setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => s.isOfType(Type.ICE) || s.isOfType(Type.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') + [TrainerType.SCHOOL_KID]: new TrainerConfig(++t).setMoneyMultiplier(0.75).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders('School Kid Female', 'lass').setHasDouble('School Kids') .setSpeciesPools({ [TrainerPoolTier.COMMON]: [ Species.ODDISH, Species.EXEGGCUTE, Species.TEDDIURSA, Species.WURMPLE, Species.RALTS, Species.SHROOMISH, Species.FLETCHLING ], [TrainerPoolTier.UNCOMMON]: [ Species.VOLTORB, Species.WHISMUR, Species.MEDITITE, Species.MIME_JR, Species.NYMBLE ], [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').setSpecialtyTypes(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').setSpecialtyTypes(Type.WATER).setSpeciesFilter(s => s.isOfType(Type.WATER)), [TrainerType.TWINS]: new TrainerConfig(++t).setDoubleOnly().setMoneyMultiplier(0.65).setUseSameSeedForAllMembers() .setPartyTemplateFunc(scene => getWavePartyTemplate(scene, 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(Type.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(Type.ROCK) || s.isOfType(Type.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 ] @@ -915,7 +915,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader([ Species.SMOLIV, Species.SHROOMISH, Species.ODDISH ], Type.GRASS), [TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader([ Species.TADBULB, Species.WATTREL, Species.VOLTORB ], Type.ELECTRIC), [TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader([ Species.VELUZA, Species.WIGLETT, Species.WINGULL ], Type.WATER), - [TrainerType.LARRY]: new TrainerConfig(++t).setName("Larry").initForGymLeader([ Species.STARLY, Species.DUNSPARCE, Species.KOMALA ], Type.NORMAL), + [TrainerType.LARRY]: new TrainerConfig(++t).setName('Larry').initForGymLeader([ Species.STARLY, Species.DUNSPARCE, Species.KOMALA ], Type.NORMAL), [TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader([ Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU ], Type.GHOST), [TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader([ Species.GIRAFARIG, Species.FLITTLE, Species.RALTS ], Type.PSYCHIC), [TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader([ Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO ], Type.ICE), @@ -923,7 +923,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.LORELEI]: new TrainerConfig((t = TrainerType.LORELEI)).initForEliteFour([ Species.SLOWBRO, Species.LAPRAS, Species.DEWGONG, Species.ALOLA_SANDSLASH ], Type.ICE), [TrainerType.BRUNO]: new TrainerConfig(++t).initForEliteFour([ Species.ONIX, Species.HITMONCHAN, Species.HITMONLEE, Species.ALOLA_GOLEM ], Type.FIGHTING), [TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour([ Species.GENGAR, Species.ARBOK, Species.CROBAT, Species.ALOLA_MAROWAK ], Type.GHOST), - [TrainerType.LANCE]: new TrainerConfig(++t).setName("Lance").initForEliteFour([ Species.DRAGONITE, Species.GYARADOS, Species.AERODACTYL, Species.ALOLA_EXEGGUTOR ], Type.DRAGON), + [TrainerType.LANCE]: new TrainerConfig(++t).setName('Lance').initForEliteFour([ Species.DRAGONITE, Species.GYARADOS, Species.AERODACTYL, Species.ALOLA_EXEGGUTOR ], Type.DRAGON), [TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour([ Species.XATU, Species.JYNX, Species.SLOWBRO, Species.EXEGGUTOR ], Type.PSYCHIC), [TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour([ Species.WEEZING, Species.VENOMOTH, Species.CROBAT, Species.TENTACRUEL ], Type.POISON), [TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour([ Species.UMBREON, Species.HONCHKROW, Species.HOUNDOOM, Species.WEAVILE ], Type.DARK), @@ -950,7 +950,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.KAHILI]: new TrainerConfig(++t).initForEliteFour([ Species.BRAVIARY, Species.HAWLUCHA, Species.ORICORIO, Species.TOUCANNON ], Type.FLYING), [TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour([ Species. WHISCASH, Species.DONPHAN, Species.CAMERUPT, Species.CLODSIRE ], Type.GROUND), [TrainerType.POPPY]: new TrainerConfig(++t).initForEliteFour([ Species.COPPERAJAH, Species.BRONZONG, Species.CORVIKNIGHT, Species.TINKATON ], Type.STEEL), - [TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName("Larry").initForEliteFour([ Species.STARAPTOR, Species.FLAMIGO, Species.ALTARIA, Species.TROPIUS ], Type.NORMAL, Type.FLYING), + [TrainerType.LARRY_ELITE]: new TrainerConfig(++t).setName('Larry').initForEliteFour([ Species.STARAPTOR, Species.FLAMIGO, Species.ALTARIA, Species.TROPIUS ], Type.NORMAL, Type.FLYING), [TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour([ Species.NOIVERN, Species.HAXORUS, Species.DRAGALGE, Species.BAXCALIBUR ], Type.DRAGON), [TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour([ Species.TALONFLAME, Species.CAMERUPT, Species.MAGMORTAR, Species.BLAZIKEN ], Type.FIRE), [TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour([ Species.SKARMORY, Species.EMPOLEON, Species.SCIZOR, Species.METAGROSS ], Type.STEEL), @@ -959,7 +959,7 @@ export const trainerConfigs: TrainerConfigs = { [TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion([ Species.GYARADOS, Species.MEWTWO, Species.ARCANINE, Species.ALAKAZAM, Species.PIDGEOT ]).setBattleBgm('battle_kanto_champion'), [TrainerType.RED]: new TrainerConfig(++t).initForChampion([ Species.CHARIZARD, [ Species.LUGIA, Species.HO_OH ], Species.SNORLAX, Species.RAICHU, Species.ESPEON ]).setBattleBgm('battle_johto_champion'), - [TrainerType.LANCE_CHAMPION]: new TrainerConfig(++t).setName("Lance").initForChampion([ Species.DRAGONITE, Species.ZYGARDE, Species.AERODACTYL, Species.KINGDRA, Species.ALOLA_EXEGGUTOR ]).setBattleBgm('battle_johto_champion'), + [TrainerType.LANCE_CHAMPION]: new TrainerConfig(++t).setName('Lance').initForChampion([ Species.DRAGONITE, Species.ZYGARDE, Species.AERODACTYL, Species.KINGDRA, Species.ALOLA_EXEGGUTOR ]).setBattleBgm('battle_johto_champion'), [TrainerType.STEVEN]: new TrainerConfig(++t).initForChampion([ Species.METAGROSS, [ Species.DIALGA, Species.PALKIA ], Species.SKARMORY, Species.AGGRON, Species.CARBINK ]).setBattleBgm('battle_hoenn_champion'), [TrainerType.WALLACE]: new TrainerConfig(++t).initForChampion([ Species.MILOTIC, Species.KYOGRE, Species.WHISCASH, Species.WALREIN, Species.LUDICOLO ]).setBattleBgm('battle_hoenn_champion'), [TrainerType.CYNTHIA]: new TrainerConfig(++t).initForChampion([ Species.SPIRITOMB, Species.GIRATINA, Species.GARCHOMP, Species.MILOTIC, Species.LUCARIO, Species.TOGEKISS ]).setBattleBgm('battle_sinnoh_champion'), @@ -1039,5 +1039,5 @@ export const trainerConfigs: TrainerConfigs = { }; (function () { - initTrainerTypeDialogue(); + initTrainerTypeDialogue(); })(); diff --git a/src/data/trainer-names.ts b/src/data/trainer-names.ts index 2b95a91314e..4ef5ef1811b 100644 --- a/src/data/trainer-names.ts +++ b/src/data/trainer-names.ts @@ -1,5 +1,5 @@ -import { TrainerType } from "./enums/trainer-type"; -import * as Utils from "../utils"; +import { TrainerType } from './enums/trainer-type'; +import * as Utils from '../utils'; class TrainerNameConfig { public urls: string[]; @@ -71,54 +71,54 @@ const trainerNameConfigs: TrainerNameConfigs = { }; export const trainerNamePools = { - [TrainerType.ACE_TRAINER]: [["Aaron","Allen","Blake","Brian","Gaven","Jake","Kevin","Mike","Nick","Paul","Ryan","Sean","Darin","Albert","Berke","Clyde","Edgar","George","Leroy","Owen","Parker","Randall","Ruben","Samuel","Vincent","Warren","Wilton","Zane","Alfred","Braxton","Felix","Gerald","Jonathan","Leonel","Marcel","Mitchell","Quincy","Roderick","Colby","Rolando","Yuji","Abel","Anton","Arthur","Cesar","Dalton","Dennis","Ernest","Garrett","Graham","Henry","Isaiah","Jonah","Jose","Keenan","Micah","Omar","Quinn","Rodolfo","Saul","Sergio","Skylar","Stefan","Zachery","Alton","Arabella","Bonita","Cal","Cody","French","Kobe","Paulo","Shaye","Austin","Beckett","Charlie","Corky","David","Dwayne","Elmer","Jesse","Jared","Johan","Jordan","Kipp","Lou","Terry","Tom","Webster","Billy","Doyle","Enzio","Geoff","Grant","Kelsey","Miguel","Pierce","Ray","Santino","Shel","Adelbert","Bence","Emil","Evan","Mathis","Maxim","Neil","Rico","Robbie","Theo","Viktor","Benedict","Cornelius","Hisato","Leopold","Neville","Vito","Chase","Cole","Hiroshi","Jackson","Jim","Kekoa","Makana","Yuki","Elwood","Seth","Alvin","Arjun","Arnold","Cameron","Carl","Carlton","Christopher","Dave","Dax","Dominic","Edmund","Finn","Fred","Garret","Grayson","Jace","Jaxson","Jay","Jirard","Johnson","Kayden","Kite","Louis","Mac","Marty","Percy","Raymond","Ronnie","Satch","Tim","Zach","Conner","Vince","Bedro","Boda","Botan","Daras","Dury","Herton","Rewn","Stum","Tock","Trilo","Berki","Cruik","Dazon","Desid","Dillot","Farfin","Forgon","Hebel","Morfon","Moril","Shadd","Vanhub","Bardo","Carben","Degin","Gorps","Klept","Lask","Malex","Mopar","Niled","Noxon","Teslor","Tetil"],["Beth","Carol","Cybil","Emma","Fran","Gwen","Irene","Jenn","Joyce","Kate","Kelly","Lois","Lola","Megan","Quinn","Reena","Cara","Alexa","Brooke","Caroline","Elaine","Hope","Jennifer","Jody","Julie","Lori","Mary","Michelle","Shannon","Wendy","Alexia","Alicia","Athena","Carolina","Cristin","Darcy","Dianne","Halle","Jazmyn","Katelynn","Keira","Marley","Allyson","Kathleen","Naomi","Alyssa","Ariana","Brandi","Breanna","Brenda","Brenna","Catherine","Clarice","Dana","Deanna","Destiny","Jamie","Jasmin","Kassandra","Laura","Maria","Mariah","Maya","Meagan","Mikayla","Monique","Natasha","Olivia","Sandra","Savannah","Sydney","Moira","Piper","Salma","Allison","Beverly","Cathy","Cheyenne","Clara","Dara","Eileen","Glinda","Junko","Lena","Lucille","Mariana","Olwen","Shanta","Stella","Angi","Belle","Chandra","Cora","Eve","Jacqueline","Jeanne","Juliet","Kathrine","Layla","Lucca","Melina","Miki","Nina","Sable","Shelly","Summer","Trish","Vicki","Alanza","Cordelia","Hilde","Imelda","Michele","Mireille","Claudia","Constance","Harriet","Honor","Melba","Portia","Alexis","Angela","Karla","Lindsey","Tori","Sheri","Jada","Kailee","Amanda","Annie","Kindra","Kyla","Sofia","Yvette","Becky","Flora","Gloria","Buna","Ferda","Lehan","Liqui","Lomen","Neira","Atilo","Detta","Gilly","Gosney","Levens","Moden","Rask","Rateis","Rosno","Tynan","Veron","Zoel","Cida","Dibsin","Dodin","Ebson","Equin","Flostin","Gabsen","Halsion","Hileon","Quelor","Rapeel","Roze","Tensin"]], - [TrainerType.ARTIST]: [["Ismael","William","Horton","Pierre","Zach","Gough","Salvador","Vincent","Duncan"],["Georgia"]], - [TrainerType.BACKERS]: [["Alf & Fred","Hawk & Dar","Joe & Ross","Les & Web","Masa & Yas","Stu & Art"],["Ai & Ciel","Ami & Eira","Cam & Abby","Fey & Sue","Kat & Phae","Kay & Ali","Ava & Aya","Cleo & Rio","May & Mal"]], - [TrainerType.BACKPACKER]: [["Alexander","Carlos","Herman","Jerome","Keane","Kelsey","Kiyo","Michael","Nate","Peter","Sam","Stephen","Talon","Terrance","Toru","Waylon","Boone","Clifford","Ivan","Kendall","Lowell","Randall","Reece","Roland","Shane","Walt","Farid","Heike","Joren","Lane","Roderick","Darnell","Deon","Emory","Graeme","Grayson","Ashley","Mikiko","Kiana","Perdy","Maria","Yuho","Peren","Barbara","Diane","Ruth","Aitor","Alex","Arturo","Asier","Jaime","Jonathan","Julio","Kevin","Kosuke","Lander","Markel","Mateo","Nil","Pau","Samuel"],["Anna","Corin","Elaine","Emi","Jill","Kumiko","Liz","Lois","Lora","Molly","Patty","Ruth","Vicki","Annie","Blossom","Clara","Eileen","Mae","Myra","Rachel","Tami"]], - [TrainerType.BAKER]: ["Chris","Jenn","Lilly"], - [TrainerType.BEAUTY]: ["Cassie","Julia","Olivia","Samantha","Valerie","Victoria","Bridget","Connie","Jessica","Johanna","Melissa","Sheila","Shirley","Tiffany","Namiko","Thalia","Grace","Lola","Lori","Maura","Tamia","Cyndy","Devon","Gabriella","Harley","Lindsay","Nicola","Callie","Charlotte","Kassandra","December","Fleming","Nikola","Aimee","Anais","Brigitte","Cassandra","Andrea","Brittney","Carolyn","Krystal","Alexis","Alice","Aina","Anya","Arianna","Aubrey","Beverly","Camille","Beauty","Evette","Hansol","Haruka","Jill","Jo","Lana","Lois","Lucy","Mai","Nickie","Nicole","Prita","Rose","Shelly","Suzy","Tessa","Anita","Alissa","Rita","Cudsy","Eloff","Miru","Minot","Nevah","Niven","Ogoin"], - [TrainerType.BIKER]: ["Charles","Dwayne","Glenn","Harris","Joel","Riley","Zeke","Alex","Billy","Ernest","Gerald","Hideo","Isaac","Jared","Jaren","Jaxon","Jordy","Lao","Lukas","Malik","Nikolas","Ricardo","Ruben","Virgil","William","Aiden","Dale","Dan","Jacob","Markey","Reese","Teddy","Theron","Jeremy","Morgann","Phillip","Philip","Stanley","Dillon"], - [TrainerType.BLACK_BELT]: [["Kenji","Lao","Lung","Nob","Wai","Yoshi","Atsushi","Daisuke","Hideki","Hitoshi","Kiyo","Koichi","Koji","Yuji","Cristian","Rhett","Takao","Theodore","Zander","Aaron","Hugh","Mike","Nicolas","Shea","Takashi","Adam","Carl","Colby","Darren","David","Davon","Derek","Eddie","Gregory","Griffin","Jarrett","Jeffery","Kendal","Kyle","Luke","Miles","Nathaniel","Philip","Rafael","Ray","Ricky","Sean","Willie","Ander","Manford","Benjamin","Corey","Edward","Grant","Jay","Kendrew","Kentaro","Ryder","Teppei","Thomas","Tyrone","Andrey","Donny","Drago","Gordon","Grigor","Jeriel","Kenneth","Martell","Mathis","Rich","Rocky","Rodrigo","Wesley","Zachery","Alonzo","Cadoc","Gunnar","Igor","Killian","Markus","Ricardo","Yanis","Banting","Clayton","Duane","Earl","Greg","Roy","Terry","Tracy","Walter","Alvaro","Curtis","Francis","Ross","Brice","Cheng","Dudley","Eric","Kano","Masahiro","Randy","Ryuji","Steve","Tadashi","Wong","Yuen","Brian","Carter","Reece","Nick","Yang"],["Cora","Cyndy","Jill","Laura","Sadie","Tessa","Vivian","Aisha","Callie","Danielle","Helene","Jocelyn","Lilith","Paula","Reyna","Helen","Kelsey","Tyler","Amy","Chandra","Hillary","Janie","Lee","Maggie","Mikiko","Miriam","Sharon","Susie","Xiao","Alize","Azra","Brenda","Chalina","Chan","Glinda","Maki","Tia","Tiffany","Wendy","Andrea","Gabrielle","Gerardine","Hailey","Hedvig","Justine","Kinsey","Sigrid","Veronique","Tess"]], - [TrainerType.BREEDER]: [["Isaac","Myles","Salvadore","Albert","Kahlil","Eustace","Galen","Owen","Addison","Marcus","Foster","Cory","Glenn","Jay","Wesley","William","Adrian","Bradley","Jaime"],["Allison","Alize","Bethany","Lily","Lydia","Gabrielle","Jayden","Pat","Veronica","Amber","Jennifer","Kaylee","Adelaide","Brooke","Ethel","April","Irene","Magnolia","Amala","Mercy","Amanda","Ikue","Savannah","Yuka","Chloe","Debra","Denise","Elena"]], - [TrainerType.CLERK]: [["Chaz","Clemens","Doug","Fredric","Ivan","Isaac","Nelson","Wade","Warren","Augustin","Gilligan","Cody","Jeremy","Shane","Dugal","Royce","Ronald"],["Alberta","Ingrid","Katie","Piper","Trisha","Wren","Britney","Lana","Jessica","Kristen","Michelle","Gabrielle"]], - [TrainerType.CYCLIST]: [["Axel","James","John","Ryan","Hector","Jeremiah"],["Kayla","Megan","Nicole","Rachel","Krissa","Adelaide"]], - [TrainerType.DANCER]: ["Brian","Davey","Dirk","Edmond","Mickey","Raymond","Cara","Julia","Maika","Mireille","Ronda","Zoe"], - [TrainerType.DEPOT_AGENT]: ["Josh","Hank","Vincent"], - [TrainerType.DOCTOR]: [["Hank","Jerry","Jules","Logan","Wayne","Braid","Derek","Heath","Julius","Kit","Graham"],["Kirsten","Sachiko","Shery","Carol","Dixie","Mariah"]], - [TrainerType.FISHERMAN]: ["Andre","Arnold","Barney","Chris","Edgar","Henry","Jonah","Justin","Kyle","Martin","Marvin","Ralph","Raymond","Scott","Stephen","Wilton","Tully","Andrew","Barny","Carter","Claude","Dale","Elliot","Eugene","Ivan","Ned","Nolan","Roger","Ronald","Wade","Wayne","Darian","Kai","Chip","Hank","Kaden","Tommy","Tylor","Alec","Brett","Cameron","Cody","Cole","Cory","Erick","George","Joseph","Juan","Kenneth","Luc","Miguel","Travis","Walter","Zachary","Josh","Gideon","Kyler","Liam","Murphy","Bruce","Damon","Devon","Hubert","Jones","Lydon","Mick","Pete","Sean","Sid","Vince","Bucky","Dean","Eustace","Kenzo","Leroy","Mack","Ryder","Ewan","Finn","Murray","Seward","Shad","Wharton","Finley","Fisher","Fisk","River","Sheaffer","Timin","Carl","Ernest","Hal","Herbert","Hisato","Mike","Vernon","Harriet","Marina","Chase"], - [TrainerType.GUITARIST]: ["Anna","Beverly","January","Tina","Alicia","Claudia","Julia","Lidia","Mireia","Noelia","Sara","Sheila","Tatiana"], - [TrainerType.HARLEQUIN]: ["Charley","Ian","Jack","Kerry","Louis","Pat","Paul","Rick","Anders","Clarence","Gary"], - [TrainerType.HIKER]: ["Anthony","Bailey","Benjamin","Daniel","Erik","Jim","Kenny","Leonard","Michael","Parry","Phillip","Russell","Sidney","Tim","Timothy","Alan","Brice","Clark","Eric","Lenny","Lucas","Mike","Trent","Devan","Eli","Marc","Sawyer","Allen","Daryl","Dudley","Earl","Franklin","Jeremy","Marcos","Nob","Oliver","Wayne","Alexander","Damon","Jonathan","Justin","Kevin","Lorenzo","Louis","Maurice","Nicholas","Reginald","Robert","Theodore","Bruce","Clarke","Devin","Dwight","Edwin","Eoin","Noland","Russel","Andy","Bret","Darrell","Gene","Hardy","Hugh","Jebediah","Jeremiah","Kit","Neil","Terrell","Don","Doug","Hunter","Jared","Jerome","Keith","Manuel","Markus","Otto","Shelby","Stephen","Teppei","Tobias","Wade","Zaiem","Aaron","Alain","Bergin","Bernard","Brent","Corwin","Craig","Delmon","Dunstan","Orestes","Ross","Davian","Calhoun","David","Gabriel","Ryan","Thomas","Travis","Zachary","Anuhea","Barnaby","Claus","Collin","Colson","Dexter","Dillan","Eugine","Farkas","Hisato","Julius","Kenji","Irwin","Lionel","Paul","Richter","Valentino","Donald","Douglas","Kevyn","Angela","Carla","Celia","Daniela","Estela","Fatima","Helena","Leire","Lucia","Luna","Manuela","Mar","Marina","Miyu","Nancy","Nerea","Paula","Rocio","Yanira","Chester"], - [TrainerType.HOOLIGANS]: ["Jim & Cas","Rob & Sal"], - [TrainerType.HOOPSTER]: ["Bobby","John","Lamarcus","Derrick","Nicolas"], - [TrainerType.INFIELDER]: ["Alex","Connor","Todd"], - [TrainerType.JANITOR]: ["Caleb","Geoff","Brady","Felix","Orville","Melvin","Shawn"], - [TrainerType.LINEBACKER]: ["Bob","Dan","Jonah"], - [TrainerType.MAID]: ["Belinda","Sophie","Emily","Elena","Clare","Alica","Tanya","Tammy"], - [TrainerType.MUSICIAN]: ["Boris","Preston","Charles","Clyde","Vincent","Dalton","Kirk","Shawn","Fabian","Fernando","Joseph","Marcos","Arturo","Jerry","Lonnie","Tony"], - [TrainerType.NURSERY_AIDE]: ["Autumn","Briana","Leah","Miho","Ethel","Hollie","Ilse","June","Kimya","Rosalyn"], - [TrainerType.OFFICER]: ["Dirk","Keith","Alex","Bobby","Caleb","Danny","Dylan","Thomas","Daniel","Jeff","Braven","Dell","Neagle","Haruki","Mitchell","Raymond"], - [TrainerType.PARASOL_LADY]: ["Angelica","Clarissa","Madeline","Akari","Annabell","Kayley","Rachel","Alexa","Sabrina","April","Gwyneth","Laura","Lumi","Mariah","Melita","Nicole","Tihana","Ingrid","Tyra"], - [TrainerType.PILOT]: ["Chase","Leonard","Ted","Elron","Ewing","Flynn","Winslow"], - [TrainerType.POKEFAN]: [["Alex","Allan","Brandon","Carter","Colin","Derek","Jeremy","Joshua","Rex","Robert","Trevor","William","Colton","Miguel","Francisco","Kaleb","Leonard","Boone","Elliot","Jude","Norbert","Corey","Gabe","Baxter"],["Beverly","Georgia","Jaime","Ruth","Isabel","Marissa","Vanessa","Annika","Bethany","Kimberly","Meredith","Rebekah","Eleanor","Darcy","Lydia","Sachiko","Abigail","Agnes","Lydie","Roisin","Tara","Carmen","Janet"]], - [TrainerType.PRESCHOOLER]: [["Billy","Doyle","Evan","Homer","Tully","Albert","Buster","Greg","Ike","Jojo","Tyrone","Adrian","Oliver","Hayden","Hunter","Kaleb","Liam","Dylan"],["Juliet","Mia","Sarah","Wendy","Winter","Chrissy","Eva","Lin","Samantha","Ella","Lily","Natalie","Ailey","Hannah","Malia","Kindra","Nancy"]], - [TrainerType.PSYCHIC]: [["Fidel","Franklin","Gilbert","Greg","Herman","Jared","Mark","Nathan","Norman","Phil","Richard","Rodney","Cameron","Edward","Fritz","Joshua","Preston","Virgil","William","Alvaro","Blake","Cedric","Keenan","Nicholas","Dario","Johan","Lorenzo","Tyron","Bryce","Corbin","Deandre","Elijah","Kody","Landon","Maxwell","Mitchell","Sterling","Eli","Nelson","Vernon","Gaven","Gerard","Low","Micki","Perry","Rudolf","Tommy","Al","Nandor","Tully","Arthur","Emanuel","Franz","Harry","Paschal","Robert","Sayid","Angelo","Anton","Arin","Avery","Danny","Frasier","Harrison","Jaime","Ross","Rui","Vlad","Mason"],["Alexis","Hannah","Jacki","Jaclyn","Kayla","Maura","Samantha","Alix","Brandi","Edie","Macey","Mariella","Marlene","Laura","Rodette","Abigail","Brittney","Chelsey","Daisy","Desiree","Kendra","Lindsey","Rachael","Valencia","Belle","Cybil","Doreen","Dua","Future","Lin","Madhu","Alia","Ena","Joyce","Lynette","Olesia","Sarah"]], - [TrainerType.RANGER]: [["Carlos","Jackson","Sebastian","Gav","Lorenzo","Logan","Nicolas","Trenton","Deshawn","Dwayne","Jeffery","Kyler","Taylor","Alain","Claude","Crofton","Forrest","Harry","Jaden","Keith","Lewis","Miguel","Pedro","Ralph","Richard","Bret","Daryl","Eddie","Johan","Leaf","Louis","Maxwell","Parker","Rick","Steve","Bjorn","Chaise","Dean","Lee","Maurice","Nash","Ralf","Reed","Shinobu","Silas"],["Catherine","Jenna","Sophia","Merdith","Nora","Beth","Chelsea","Katelyn","Madeline","Allison","Ashlee","Felicia","Krista","Annie","Audra","Brenda","Chloris","Eliza","Heidi","Irene","Mary","Mylene","Shanti","Shelly","Thalia","Anja","Briana","Dianna","Elaine","Elle","Hillary","Katie","Lena","Lois","Malory","Melita","Mikiko","Naoko","Serenity","Ambre","Brooke","Clementine","Melina","Petra","Twiggy"]], - [TrainerType.RICH]: [["Alfred","Edward","Gregory","Preston","Thomas","Tucker","Walter","Clifford","Everett","Micah","Nate","Pierre","Terrance","Arthur","Brooks","Emanuel","Lamar","Jeremy","Leonardo","Milton","Frederic","Renaud","Robert","Yan","Daniel","Sheldon","Stonewall","Gerald","Ronald","Smith","Stanley","Reginald","Orson","Wilco","Caden","Glenn"],["Rebecca","Reina","Cassandra","Emilia","Grace","Marian","Elizabeth","Kathleen","Sayuri","Caroline","Judy"]], - [TrainerType.RICH_KID]: [["Garret","Winston","Dawson","Enrique","Jason","Roman","Trey","Liam","Anthony","Brad","Cody","Manuel","Martin","Pierce","Rolan","Keenan","Filbert","Antoin","Cyus","Diek","Dugo","Flitz","Jurek","Lond","Perd","Quint","Basto","Benit","Brot","Denc","Guyit","Marcon","Perc","Puros","Roex","Sainz","Symin","Tark","Venak"],["Anette","Brianna","Cindy","Colleen","Daphne","Elizabeth","Naomi","Sarah","Charlotte","Gillian","Jacki","Lady","Melissa","Celeste","Colette","Elizandra","Isabel","Lynette","Magnolia","Sophie","Lina","Dulcie","Auro","Brin","Caril","Eloos","Gwin","Illa","Kowly","Rima","Ristin","Vesey","Brena","Deasy","Denslon","Kylet","Nemi","Rene","Sanol","Stouner","Sturk","Talmen","Zoila"]], - [TrainerType.ROUGHNECK]: ["Camron","Corey","Gabriel","Isaiah","Jamal","Koji","Luke","Paxton","Raul","Zeek","Kirby","Chance","Dave","Fletcher","Johnny","Reese","Joey","Ricky","Silvester","Martin"], - [TrainerType.SCIENTIST]: [["Jed","Marc","Mitch","Rich","Ross","Beau","Braydon","Connor","Ed","Ivan","Jerry","Jose","Joshua","Parker","Rodney","Taylor","Ted","Travis","Zackery","Darrius","Emilio","Fredrick","Shaun","Stefano","Travon","Daniel","Garett","Gregg","Linden","Lowell","Trenton","Dudley","Luke","Markus","Nathan","Orville","Randall","Ron","Ronald","Simon","Steve","William","Franklin","Clarke","Jacques","Terrance","Ernst","Justus","Ikaika","Jayson","Kyle","Reid","Tyrone","Adam","Albert","Alphonse","Cory","Donnie","Elton","Francis","Gordon","Herbert","Humphrey","Jordan","Julian","Keaton","Levi","Melvin","Murray","West","Craig","Coren","Dubik","Kotan","Lethco","Mante","Mort","Myron","Odlow","Ribek","Roeck","Vogi","Vonder","Zogo","Doimo","Doton","Durel","Hildon","Kukla","Messa","Nanot","Platen","Raburn","Reman","Acrod","Coffy","Elrok","Foss","Hardig","Hombol","Hospel","Kaller","Klots","Krilok","Limar","Loket","Mesak","Morbit","Newin","Orill","Tabor","Tekot"],["Blythe","Chan","Kathrine","Marie","Maria","Naoko","Samantha","Satomi","Shannon","Athena","Caroline","Lumi","Lumina","Marissa","Sonia"]], - [TrainerType.SMASHER]: ["Aspen","Elena","Mari","Amy","Lizzy"], - [TrainerType.SNOW_WORKER]: [["Braden","Brendon","Colin","Conrad","Dillan","Gary","Gerardo","Holden","Jackson","Mason","Quentin","Willy","Noel","Arnold","Brady","Brand","Cairn","Cliff","Don","Eddie","Felix","Filipe","Glenn","Gus","Heath","Matthew","Patton","Rich","Rob","Ryan","Scott","Shelby","Sterling","Tyler","Victor","Zack","Friedrich","Herman","Isaac","Leo","Maynard","Mitchell","Morgann","Nathan","Niel","Pasqual","Paul","Tavarius","Tibor","Dimitri","Narek","Yusif","Frank","Jeff","Vaclav","Ovid","Francis","Keith","Russel","Sangon","Toway","Bomber","Chean","Demit","Hubor","Kebile","Laber","Ordo","Retay","Ronix","Wagel","Dobit","Kaster","Lobel","Releo","Saken","Rustix"],["Georgia","Sandra","Yvonne"]], - [TrainerType.STRIKER]: ["Marco","Roberto","Tony"], - [TrainerType.SCHOOL_KID]: [["Alan","Billy","Chad","Danny","Dudley","Jack","Joe","Johnny","Kipp","Nate","Ricky","Tommy","Jerry","Paul","Ted","Chance","Esteban","Forrest","Harrison","Connor","Sherman","Torin","Travis","Al","Carter","Edgar","Jem","Sammy","Shane","Shayne","Alvin","Keston","Neil","Seymour","William","Carson","Clark","Nolan"],["Georgia","Karen","Meiko","Christine","Mackenzie","Tiera","Ann","Gina","Lydia","Marsha","Millie","Sally","Serena","Silvia","Alberta","Cassie","Mara","Rita","Georgie","Meena","Nitzel"]], - [TrainerType.SWIMMER]: [["Berke","Cameron","Charlie","George","Harold","Jerome","Kirk","Mathew","Parker","Randall","Seth","Simon","Tucker","Austin","Barry","Chad","Cody","Darrin","David","Dean","Douglas","Franklin","Gilbert","Herman","Jack","Luis","Matthew","Reed","Richard","Rodney","Roland","Spencer","Stan","Tony","Clarence","Declan","Dominik","Harrison","Kevin","Leonardo","Nolen","Pete","Santiago","Axle","Braden","Finn","Garrett","Mymo","Reece","Samir","Toby","Adrian","Colton","Dillon","Erik","Evan","Francisco","Glenn","Kurt","Oscar","Ricardo","Sam","Sheltin","Troy","Vincent","Wade","Wesley","Duane","Elmo","Esteban","Frankie","Ronald","Tyson","Bart","Matt","Tim","Wright","Jeffery","Kyle","Alessandro","Estaban","Kieran","Ramses","Casey","Dakota","Jared","Kalani","Keoni","Lawrence","Logan","Robert","Roddy","Yasu","Derek","Jacob","Bruce","Clayton"],["Briana","Dawn","Denise","Diana","Elaine","Kara","Kaylee","Lori","Nicole","Nikki","Paula","Susie","Wendy","Alice","Beth","Beverly","Brenda","Dana","Debra","Grace","Jenny","Katie","Laurel","Linda","Missy","Sharon","Tanya","Tara","Tisha","Carlee","Imani","Isabelle","Kyla","Sienna","Abigail","Amara","Anya","Connie","Maria","Melissa","Nora","Shirley","Shania","Tiffany","Aubree","Cassandra","Claire","Crystal","Erica","Gabrielle","Haley","Jessica","Joanna","Lydia","Mallory","Mary","Miranda","Paige","Sophia","Vanessa","Chelan","Debbie","Joy","Kendra","Leona","Mina","Caroline","Joyce","Larissa","Rebecca","Tyra","Dara","Desiree","Kaoru","Ruth","Coral","Genevieve","Isla","Marissa","Romy","Sheryl","Alexandria","Alicia","Chelsea","Jade","Kelsie","Laura","Portia","Shelby","Sara","Tiare","Kyra","Natasha","Layla","Scarlett","Cora"]], - [TrainerType.TWINS]: ["Amy & May","Jo & Zoe","Meg & Peg","Ann & Anne","Lea & Pia","Amy & Liv","Gina & Mia","Miu & Yuki","Tori & Tia","Eli & Anne","Jen & Kira","Joy & Meg","Kiri & Jan","Miu & Mia","Emma & Lil","Liv & Liz","Teri & Tia","Amy & Mimi","Clea & Gil","Day & Dani","Kay & Tia","Tori & Til","Saya & Aya","Emy & Lin","Kumi & Amy","Mayo & May","Ally & Amy","Lia & Lily","Rae & Ula","Sola & Ana","Tara & Val","Faith & Joy","Nana & Nina"], - [TrainerType.VETERAN]: [["Armando","Brenden","Brian","Clayton","Edgar","Emanuel","Grant","Harlan","Terrell","Arlen","Chester","Hugo","Martell","Ray","Shaun","Abraham","Carter","Claude","Jerry","Lucius","Murphy","Rayne","Ron","Sinan","Sterling","Vincent","Zach","Gerard","Gilles","Louis","Timeo","Akira","Don","Eric","Harry","Leon","Roger","Angus","Aristo","Brone","Johnny"],["Julia","Karla","Kim","Sayuri","Tiffany","Cathy","Cecile","Chloris","Denae","Gina","Maya","Oriana","Portia","Rhona","Rosaline","Catrina","Inga","Trisha","Heather","Lynn","Sheri","Alonsa","Ella","Leticia","Kiara"]], - [TrainerType.WAITER]: [["Bert","Clint","Maxwell","Lou"],["Kati","Aurora","Bonita","Flo","Tia","Jan","Olwen","Paget","Paula","Talia"]], - [TrainerType.WORKER]: [["Braden","Brendon","Colin","Conrad","Dillan","Gary","Gerardo","Holden","Jackson","Mason","Quentin","Willy","Noel","Arnold","Brady","Brand","Cairn","Cliff","Don","Eddie","Felix","Filipe","Glenn","Gus","Heath","Matthew","Patton","Rich","Rob","Ryan","Scott","Shelby","Sterling","Tyler","Victor","Zack","Friedrich","Herman","Isaac","Leo","Maynard","Mitchell","Morgann","Nathan","Niel","Pasqual","Paul","Tavarius","Tibor","Dimitri","Narek","Yusif","Frank","Jeff","Vaclav","Ovid","Francis","Keith","Russel","Sangon","Toway","Bomber","Chean","Demit","Hubor","Kebile","Laber","Ordo","Retay","Ronix","Wagel","Dobit","Kaster","Lobel","Releo","Saken","Rustix"],["Georgia","Sandra","Yvonne"]], - [TrainerType.YOUNGSTER]: [["Albert","Gordon","Ian","Jason","Jimmy","Mikey","Owen","Samuel","Warren","Allen","Ben","Billy","Calvin","Dillion","Eddie","Joey","Josh","Neal","Timmy","Tommy","Breyden","Deandre","Demetrius","Dillon","Jaylen","Johnson","Shigenobu","Chad","Cole","Cordell","Dan","Dave","Destin","Nash","Tyler","Yasu","Austin","Dallas","Darius","Donny","Jonathon","Logan","Michael","Oliver","Sebastian","Tristan","Wayne","Norman","Roland","Regis","Abe","Astor","Keita","Kenneth","Kevin","Kyle","Lester","Masao","Nicholas","Parker","Wes","Zachary","Cody","Henley","Jaye","Karl","Kenny","Masahiro","Pedro","Petey","Sinclair","Terrell","Waylon","Aidan","Anthony","David","Jacob","Jayden","Cutler","Ham","Caleb","Kai","Honus","Kenway","Bret","Chris","Cid","Dennis","Easton","Ken","Robby","Ronny","Shawn","Benjamin","Jake","Travis","Adan","Aday","Beltran","Elian","Hernan","Julen","Luka","Roi","Bernie","Dustin","Jonathan","Wyatt"],["Alice","Bridget","Carrie","Connie","Dana","Ellen","Krise","Laura","Linda","Michelle","Shannon","Andrea","Crissy","Janice","Robin","Sally","Tiana","Haley","Ali","Ann","Dalia","Dawn","Iris","Joana","Julia","Kay","Lisa","Megan","Mikaela","Miriam","Paige","Reli","Blythe","Briana","Caroline","Cassidy","Kaitlin","Madeline","Molly","Natalie","Samantha","Sarah","Cathy","Dye","Eri","Eva","Fey","Kara","Lurleen","Maki","Mali","Maya","Miki","Sibyl","Daya","Diana","Flo","Helia","Henrietta","Isabel","Mai","Persephone","Serena","Anna","Charlotte","Elin","Elsa","Lise","Sara","Suzette","Audrey","Emmy","Isabella","Madison","Rika","Rylee","Salla","Ellie","Alexandra","Amy","Lass","Brittany","Chel","Cindy","Dianne","Emily","Emma","Evelyn","Hana","Harleen","Hazel","Jocelyn","Katrina","Kimberly","Lina","Marge","Mila","Mizuki","Rena","Sal","Satoko","Summer","Tomoe","Vicky","Yue","Yumi","Lauren","Rei","Riley","Lois","Nancy","Tammy","Terry"]], - [TrainerType.HEX_MANIAC]: ["Kindra","Patricia","Tammy","Tasha","Valerie","Alaina","Kathleen","Leah","Makie","Sylvia","Anina","Arachna","Carrie","Desdemona","Josette","Luna","Melanie","Osanna","Raziah"], + [TrainerType.ACE_TRAINER]: [['Aaron','Allen','Blake','Brian','Gaven','Jake','Kevin','Mike','Nick','Paul','Ryan','Sean','Darin','Albert','Berke','Clyde','Edgar','George','Leroy','Owen','Parker','Randall','Ruben','Samuel','Vincent','Warren','Wilton','Zane','Alfred','Braxton','Felix','Gerald','Jonathan','Leonel','Marcel','Mitchell','Quincy','Roderick','Colby','Rolando','Yuji','Abel','Anton','Arthur','Cesar','Dalton','Dennis','Ernest','Garrett','Graham','Henry','Isaiah','Jonah','Jose','Keenan','Micah','Omar','Quinn','Rodolfo','Saul','Sergio','Skylar','Stefan','Zachery','Alton','Arabella','Bonita','Cal','Cody','French','Kobe','Paulo','Shaye','Austin','Beckett','Charlie','Corky','David','Dwayne','Elmer','Jesse','Jared','Johan','Jordan','Kipp','Lou','Terry','Tom','Webster','Billy','Doyle','Enzio','Geoff','Grant','Kelsey','Miguel','Pierce','Ray','Santino','Shel','Adelbert','Bence','Emil','Evan','Mathis','Maxim','Neil','Rico','Robbie','Theo','Viktor','Benedict','Cornelius','Hisato','Leopold','Neville','Vito','Chase','Cole','Hiroshi','Jackson','Jim','Kekoa','Makana','Yuki','Elwood','Seth','Alvin','Arjun','Arnold','Cameron','Carl','Carlton','Christopher','Dave','Dax','Dominic','Edmund','Finn','Fred','Garret','Grayson','Jace','Jaxson','Jay','Jirard','Johnson','Kayden','Kite','Louis','Mac','Marty','Percy','Raymond','Ronnie','Satch','Tim','Zach','Conner','Vince','Bedro','Boda','Botan','Daras','Dury','Herton','Rewn','Stum','Tock','Trilo','Berki','Cruik','Dazon','Desid','Dillot','Farfin','Forgon','Hebel','Morfon','Moril','Shadd','Vanhub','Bardo','Carben','Degin','Gorps','Klept','Lask','Malex','Mopar','Niled','Noxon','Teslor','Tetil'],['Beth','Carol','Cybil','Emma','Fran','Gwen','Irene','Jenn','Joyce','Kate','Kelly','Lois','Lola','Megan','Quinn','Reena','Cara','Alexa','Brooke','Caroline','Elaine','Hope','Jennifer','Jody','Julie','Lori','Mary','Michelle','Shannon','Wendy','Alexia','Alicia','Athena','Carolina','Cristin','Darcy','Dianne','Halle','Jazmyn','Katelynn','Keira','Marley','Allyson','Kathleen','Naomi','Alyssa','Ariana','Brandi','Breanna','Brenda','Brenna','Catherine','Clarice','Dana','Deanna','Destiny','Jamie','Jasmin','Kassandra','Laura','Maria','Mariah','Maya','Meagan','Mikayla','Monique','Natasha','Olivia','Sandra','Savannah','Sydney','Moira','Piper','Salma','Allison','Beverly','Cathy','Cheyenne','Clara','Dara','Eileen','Glinda','Junko','Lena','Lucille','Mariana','Olwen','Shanta','Stella','Angi','Belle','Chandra','Cora','Eve','Jacqueline','Jeanne','Juliet','Kathrine','Layla','Lucca','Melina','Miki','Nina','Sable','Shelly','Summer','Trish','Vicki','Alanza','Cordelia','Hilde','Imelda','Michele','Mireille','Claudia','Constance','Harriet','Honor','Melba','Portia','Alexis','Angela','Karla','Lindsey','Tori','Sheri','Jada','Kailee','Amanda','Annie','Kindra','Kyla','Sofia','Yvette','Becky','Flora','Gloria','Buna','Ferda','Lehan','Liqui','Lomen','Neira','Atilo','Detta','Gilly','Gosney','Levens','Moden','Rask','Rateis','Rosno','Tynan','Veron','Zoel','Cida','Dibsin','Dodin','Ebson','Equin','Flostin','Gabsen','Halsion','Hileon','Quelor','Rapeel','Roze','Tensin']], + [TrainerType.ARTIST]: [['Ismael','William','Horton','Pierre','Zach','Gough','Salvador','Vincent','Duncan'],['Georgia']], + [TrainerType.BACKERS]: [['Alf & Fred','Hawk & Dar','Joe & Ross','Les & Web','Masa & Yas','Stu & Art'],['Ai & Ciel','Ami & Eira','Cam & Abby','Fey & Sue','Kat & Phae','Kay & Ali','Ava & Aya','Cleo & Rio','May & Mal']], + [TrainerType.BACKPACKER]: [['Alexander','Carlos','Herman','Jerome','Keane','Kelsey','Kiyo','Michael','Nate','Peter','Sam','Stephen','Talon','Terrance','Toru','Waylon','Boone','Clifford','Ivan','Kendall','Lowell','Randall','Reece','Roland','Shane','Walt','Farid','Heike','Joren','Lane','Roderick','Darnell','Deon','Emory','Graeme','Grayson','Ashley','Mikiko','Kiana','Perdy','Maria','Yuho','Peren','Barbara','Diane','Ruth','Aitor','Alex','Arturo','Asier','Jaime','Jonathan','Julio','Kevin','Kosuke','Lander','Markel','Mateo','Nil','Pau','Samuel'],['Anna','Corin','Elaine','Emi','Jill','Kumiko','Liz','Lois','Lora','Molly','Patty','Ruth','Vicki','Annie','Blossom','Clara','Eileen','Mae','Myra','Rachel','Tami']], + [TrainerType.BAKER]: ['Chris','Jenn','Lilly'], + [TrainerType.BEAUTY]: ['Cassie','Julia','Olivia','Samantha','Valerie','Victoria','Bridget','Connie','Jessica','Johanna','Melissa','Sheila','Shirley','Tiffany','Namiko','Thalia','Grace','Lola','Lori','Maura','Tamia','Cyndy','Devon','Gabriella','Harley','Lindsay','Nicola','Callie','Charlotte','Kassandra','December','Fleming','Nikola','Aimee','Anais','Brigitte','Cassandra','Andrea','Brittney','Carolyn','Krystal','Alexis','Alice','Aina','Anya','Arianna','Aubrey','Beverly','Camille','Beauty','Evette','Hansol','Haruka','Jill','Jo','Lana','Lois','Lucy','Mai','Nickie','Nicole','Prita','Rose','Shelly','Suzy','Tessa','Anita','Alissa','Rita','Cudsy','Eloff','Miru','Minot','Nevah','Niven','Ogoin'], + [TrainerType.BIKER]: ['Charles','Dwayne','Glenn','Harris','Joel','Riley','Zeke','Alex','Billy','Ernest','Gerald','Hideo','Isaac','Jared','Jaren','Jaxon','Jordy','Lao','Lukas','Malik','Nikolas','Ricardo','Ruben','Virgil','William','Aiden','Dale','Dan','Jacob','Markey','Reese','Teddy','Theron','Jeremy','Morgann','Phillip','Philip','Stanley','Dillon'], + [TrainerType.BLACK_BELT]: [['Kenji','Lao','Lung','Nob','Wai','Yoshi','Atsushi','Daisuke','Hideki','Hitoshi','Kiyo','Koichi','Koji','Yuji','Cristian','Rhett','Takao','Theodore','Zander','Aaron','Hugh','Mike','Nicolas','Shea','Takashi','Adam','Carl','Colby','Darren','David','Davon','Derek','Eddie','Gregory','Griffin','Jarrett','Jeffery','Kendal','Kyle','Luke','Miles','Nathaniel','Philip','Rafael','Ray','Ricky','Sean','Willie','Ander','Manford','Benjamin','Corey','Edward','Grant','Jay','Kendrew','Kentaro','Ryder','Teppei','Thomas','Tyrone','Andrey','Donny','Drago','Gordon','Grigor','Jeriel','Kenneth','Martell','Mathis','Rich','Rocky','Rodrigo','Wesley','Zachery','Alonzo','Cadoc','Gunnar','Igor','Killian','Markus','Ricardo','Yanis','Banting','Clayton','Duane','Earl','Greg','Roy','Terry','Tracy','Walter','Alvaro','Curtis','Francis','Ross','Brice','Cheng','Dudley','Eric','Kano','Masahiro','Randy','Ryuji','Steve','Tadashi','Wong','Yuen','Brian','Carter','Reece','Nick','Yang'],['Cora','Cyndy','Jill','Laura','Sadie','Tessa','Vivian','Aisha','Callie','Danielle','Helene','Jocelyn','Lilith','Paula','Reyna','Helen','Kelsey','Tyler','Amy','Chandra','Hillary','Janie','Lee','Maggie','Mikiko','Miriam','Sharon','Susie','Xiao','Alize','Azra','Brenda','Chalina','Chan','Glinda','Maki','Tia','Tiffany','Wendy','Andrea','Gabrielle','Gerardine','Hailey','Hedvig','Justine','Kinsey','Sigrid','Veronique','Tess']], + [TrainerType.BREEDER]: [['Isaac','Myles','Salvadore','Albert','Kahlil','Eustace','Galen','Owen','Addison','Marcus','Foster','Cory','Glenn','Jay','Wesley','William','Adrian','Bradley','Jaime'],['Allison','Alize','Bethany','Lily','Lydia','Gabrielle','Jayden','Pat','Veronica','Amber','Jennifer','Kaylee','Adelaide','Brooke','Ethel','April','Irene','Magnolia','Amala','Mercy','Amanda','Ikue','Savannah','Yuka','Chloe','Debra','Denise','Elena']], + [TrainerType.CLERK]: [['Chaz','Clemens','Doug','Fredric','Ivan','Isaac','Nelson','Wade','Warren','Augustin','Gilligan','Cody','Jeremy','Shane','Dugal','Royce','Ronald'],['Alberta','Ingrid','Katie','Piper','Trisha','Wren','Britney','Lana','Jessica','Kristen','Michelle','Gabrielle']], + [TrainerType.CYCLIST]: [['Axel','James','John','Ryan','Hector','Jeremiah'],['Kayla','Megan','Nicole','Rachel','Krissa','Adelaide']], + [TrainerType.DANCER]: ['Brian','Davey','Dirk','Edmond','Mickey','Raymond','Cara','Julia','Maika','Mireille','Ronda','Zoe'], + [TrainerType.DEPOT_AGENT]: ['Josh','Hank','Vincent'], + [TrainerType.DOCTOR]: [['Hank','Jerry','Jules','Logan','Wayne','Braid','Derek','Heath','Julius','Kit','Graham'],['Kirsten','Sachiko','Shery','Carol','Dixie','Mariah']], + [TrainerType.FISHERMAN]: ['Andre','Arnold','Barney','Chris','Edgar','Henry','Jonah','Justin','Kyle','Martin','Marvin','Ralph','Raymond','Scott','Stephen','Wilton','Tully','Andrew','Barny','Carter','Claude','Dale','Elliot','Eugene','Ivan','Ned','Nolan','Roger','Ronald','Wade','Wayne','Darian','Kai','Chip','Hank','Kaden','Tommy','Tylor','Alec','Brett','Cameron','Cody','Cole','Cory','Erick','George','Joseph','Juan','Kenneth','Luc','Miguel','Travis','Walter','Zachary','Josh','Gideon','Kyler','Liam','Murphy','Bruce','Damon','Devon','Hubert','Jones','Lydon','Mick','Pete','Sean','Sid','Vince','Bucky','Dean','Eustace','Kenzo','Leroy','Mack','Ryder','Ewan','Finn','Murray','Seward','Shad','Wharton','Finley','Fisher','Fisk','River','Sheaffer','Timin','Carl','Ernest','Hal','Herbert','Hisato','Mike','Vernon','Harriet','Marina','Chase'], + [TrainerType.GUITARIST]: ['Anna','Beverly','January','Tina','Alicia','Claudia','Julia','Lidia','Mireia','Noelia','Sara','Sheila','Tatiana'], + [TrainerType.HARLEQUIN]: ['Charley','Ian','Jack','Kerry','Louis','Pat','Paul','Rick','Anders','Clarence','Gary'], + [TrainerType.HIKER]: ['Anthony','Bailey','Benjamin','Daniel','Erik','Jim','Kenny','Leonard','Michael','Parry','Phillip','Russell','Sidney','Tim','Timothy','Alan','Brice','Clark','Eric','Lenny','Lucas','Mike','Trent','Devan','Eli','Marc','Sawyer','Allen','Daryl','Dudley','Earl','Franklin','Jeremy','Marcos','Nob','Oliver','Wayne','Alexander','Damon','Jonathan','Justin','Kevin','Lorenzo','Louis','Maurice','Nicholas','Reginald','Robert','Theodore','Bruce','Clarke','Devin','Dwight','Edwin','Eoin','Noland','Russel','Andy','Bret','Darrell','Gene','Hardy','Hugh','Jebediah','Jeremiah','Kit','Neil','Terrell','Don','Doug','Hunter','Jared','Jerome','Keith','Manuel','Markus','Otto','Shelby','Stephen','Teppei','Tobias','Wade','Zaiem','Aaron','Alain','Bergin','Bernard','Brent','Corwin','Craig','Delmon','Dunstan','Orestes','Ross','Davian','Calhoun','David','Gabriel','Ryan','Thomas','Travis','Zachary','Anuhea','Barnaby','Claus','Collin','Colson','Dexter','Dillan','Eugine','Farkas','Hisato','Julius','Kenji','Irwin','Lionel','Paul','Richter','Valentino','Donald','Douglas','Kevyn','Angela','Carla','Celia','Daniela','Estela','Fatima','Helena','Leire','Lucia','Luna','Manuela','Mar','Marina','Miyu','Nancy','Nerea','Paula','Rocio','Yanira','Chester'], + [TrainerType.HOOLIGANS]: ['Jim & Cas','Rob & Sal'], + [TrainerType.HOOPSTER]: ['Bobby','John','Lamarcus','Derrick','Nicolas'], + [TrainerType.INFIELDER]: ['Alex','Connor','Todd'], + [TrainerType.JANITOR]: ['Caleb','Geoff','Brady','Felix','Orville','Melvin','Shawn'], + [TrainerType.LINEBACKER]: ['Bob','Dan','Jonah'], + [TrainerType.MAID]: ['Belinda','Sophie','Emily','Elena','Clare','Alica','Tanya','Tammy'], + [TrainerType.MUSICIAN]: ['Boris','Preston','Charles','Clyde','Vincent','Dalton','Kirk','Shawn','Fabian','Fernando','Joseph','Marcos','Arturo','Jerry','Lonnie','Tony'], + [TrainerType.NURSERY_AIDE]: ['Autumn','Briana','Leah','Miho','Ethel','Hollie','Ilse','June','Kimya','Rosalyn'], + [TrainerType.OFFICER]: ['Dirk','Keith','Alex','Bobby','Caleb','Danny','Dylan','Thomas','Daniel','Jeff','Braven','Dell','Neagle','Haruki','Mitchell','Raymond'], + [TrainerType.PARASOL_LADY]: ['Angelica','Clarissa','Madeline','Akari','Annabell','Kayley','Rachel','Alexa','Sabrina','April','Gwyneth','Laura','Lumi','Mariah','Melita','Nicole','Tihana','Ingrid','Tyra'], + [TrainerType.PILOT]: ['Chase','Leonard','Ted','Elron','Ewing','Flynn','Winslow'], + [TrainerType.POKEFAN]: [['Alex','Allan','Brandon','Carter','Colin','Derek','Jeremy','Joshua','Rex','Robert','Trevor','William','Colton','Miguel','Francisco','Kaleb','Leonard','Boone','Elliot','Jude','Norbert','Corey','Gabe','Baxter'],['Beverly','Georgia','Jaime','Ruth','Isabel','Marissa','Vanessa','Annika','Bethany','Kimberly','Meredith','Rebekah','Eleanor','Darcy','Lydia','Sachiko','Abigail','Agnes','Lydie','Roisin','Tara','Carmen','Janet']], + [TrainerType.PRESCHOOLER]: [['Billy','Doyle','Evan','Homer','Tully','Albert','Buster','Greg','Ike','Jojo','Tyrone','Adrian','Oliver','Hayden','Hunter','Kaleb','Liam','Dylan'],['Juliet','Mia','Sarah','Wendy','Winter','Chrissy','Eva','Lin','Samantha','Ella','Lily','Natalie','Ailey','Hannah','Malia','Kindra','Nancy']], + [TrainerType.PSYCHIC]: [['Fidel','Franklin','Gilbert','Greg','Herman','Jared','Mark','Nathan','Norman','Phil','Richard','Rodney','Cameron','Edward','Fritz','Joshua','Preston','Virgil','William','Alvaro','Blake','Cedric','Keenan','Nicholas','Dario','Johan','Lorenzo','Tyron','Bryce','Corbin','Deandre','Elijah','Kody','Landon','Maxwell','Mitchell','Sterling','Eli','Nelson','Vernon','Gaven','Gerard','Low','Micki','Perry','Rudolf','Tommy','Al','Nandor','Tully','Arthur','Emanuel','Franz','Harry','Paschal','Robert','Sayid','Angelo','Anton','Arin','Avery','Danny','Frasier','Harrison','Jaime','Ross','Rui','Vlad','Mason'],['Alexis','Hannah','Jacki','Jaclyn','Kayla','Maura','Samantha','Alix','Brandi','Edie','Macey','Mariella','Marlene','Laura','Rodette','Abigail','Brittney','Chelsey','Daisy','Desiree','Kendra','Lindsey','Rachael','Valencia','Belle','Cybil','Doreen','Dua','Future','Lin','Madhu','Alia','Ena','Joyce','Lynette','Olesia','Sarah']], + [TrainerType.RANGER]: [['Carlos','Jackson','Sebastian','Gav','Lorenzo','Logan','Nicolas','Trenton','Deshawn','Dwayne','Jeffery','Kyler','Taylor','Alain','Claude','Crofton','Forrest','Harry','Jaden','Keith','Lewis','Miguel','Pedro','Ralph','Richard','Bret','Daryl','Eddie','Johan','Leaf','Louis','Maxwell','Parker','Rick','Steve','Bjorn','Chaise','Dean','Lee','Maurice','Nash','Ralf','Reed','Shinobu','Silas'],['Catherine','Jenna','Sophia','Merdith','Nora','Beth','Chelsea','Katelyn','Madeline','Allison','Ashlee','Felicia','Krista','Annie','Audra','Brenda','Chloris','Eliza','Heidi','Irene','Mary','Mylene','Shanti','Shelly','Thalia','Anja','Briana','Dianna','Elaine','Elle','Hillary','Katie','Lena','Lois','Malory','Melita','Mikiko','Naoko','Serenity','Ambre','Brooke','Clementine','Melina','Petra','Twiggy']], + [TrainerType.RICH]: [['Alfred','Edward','Gregory','Preston','Thomas','Tucker','Walter','Clifford','Everett','Micah','Nate','Pierre','Terrance','Arthur','Brooks','Emanuel','Lamar','Jeremy','Leonardo','Milton','Frederic','Renaud','Robert','Yan','Daniel','Sheldon','Stonewall','Gerald','Ronald','Smith','Stanley','Reginald','Orson','Wilco','Caden','Glenn'],['Rebecca','Reina','Cassandra','Emilia','Grace','Marian','Elizabeth','Kathleen','Sayuri','Caroline','Judy']], + [TrainerType.RICH_KID]: [['Garret','Winston','Dawson','Enrique','Jason','Roman','Trey','Liam','Anthony','Brad','Cody','Manuel','Martin','Pierce','Rolan','Keenan','Filbert','Antoin','Cyus','Diek','Dugo','Flitz','Jurek','Lond','Perd','Quint','Basto','Benit','Brot','Denc','Guyit','Marcon','Perc','Puros','Roex','Sainz','Symin','Tark','Venak'],['Anette','Brianna','Cindy','Colleen','Daphne','Elizabeth','Naomi','Sarah','Charlotte','Gillian','Jacki','Lady','Melissa','Celeste','Colette','Elizandra','Isabel','Lynette','Magnolia','Sophie','Lina','Dulcie','Auro','Brin','Caril','Eloos','Gwin','Illa','Kowly','Rima','Ristin','Vesey','Brena','Deasy','Denslon','Kylet','Nemi','Rene','Sanol','Stouner','Sturk','Talmen','Zoila']], + [TrainerType.ROUGHNECK]: ['Camron','Corey','Gabriel','Isaiah','Jamal','Koji','Luke','Paxton','Raul','Zeek','Kirby','Chance','Dave','Fletcher','Johnny','Reese','Joey','Ricky','Silvester','Martin'], + [TrainerType.SCIENTIST]: [['Jed','Marc','Mitch','Rich','Ross','Beau','Braydon','Connor','Ed','Ivan','Jerry','Jose','Joshua','Parker','Rodney','Taylor','Ted','Travis','Zackery','Darrius','Emilio','Fredrick','Shaun','Stefano','Travon','Daniel','Garett','Gregg','Linden','Lowell','Trenton','Dudley','Luke','Markus','Nathan','Orville','Randall','Ron','Ronald','Simon','Steve','William','Franklin','Clarke','Jacques','Terrance','Ernst','Justus','Ikaika','Jayson','Kyle','Reid','Tyrone','Adam','Albert','Alphonse','Cory','Donnie','Elton','Francis','Gordon','Herbert','Humphrey','Jordan','Julian','Keaton','Levi','Melvin','Murray','West','Craig','Coren','Dubik','Kotan','Lethco','Mante','Mort','Myron','Odlow','Ribek','Roeck','Vogi','Vonder','Zogo','Doimo','Doton','Durel','Hildon','Kukla','Messa','Nanot','Platen','Raburn','Reman','Acrod','Coffy','Elrok','Foss','Hardig','Hombol','Hospel','Kaller','Klots','Krilok','Limar','Loket','Mesak','Morbit','Newin','Orill','Tabor','Tekot'],['Blythe','Chan','Kathrine','Marie','Maria','Naoko','Samantha','Satomi','Shannon','Athena','Caroline','Lumi','Lumina','Marissa','Sonia']], + [TrainerType.SMASHER]: ['Aspen','Elena','Mari','Amy','Lizzy'], + [TrainerType.SNOW_WORKER]: [['Braden','Brendon','Colin','Conrad','Dillan','Gary','Gerardo','Holden','Jackson','Mason','Quentin','Willy','Noel','Arnold','Brady','Brand','Cairn','Cliff','Don','Eddie','Felix','Filipe','Glenn','Gus','Heath','Matthew','Patton','Rich','Rob','Ryan','Scott','Shelby','Sterling','Tyler','Victor','Zack','Friedrich','Herman','Isaac','Leo','Maynard','Mitchell','Morgann','Nathan','Niel','Pasqual','Paul','Tavarius','Tibor','Dimitri','Narek','Yusif','Frank','Jeff','Vaclav','Ovid','Francis','Keith','Russel','Sangon','Toway','Bomber','Chean','Demit','Hubor','Kebile','Laber','Ordo','Retay','Ronix','Wagel','Dobit','Kaster','Lobel','Releo','Saken','Rustix'],['Georgia','Sandra','Yvonne']], + [TrainerType.STRIKER]: ['Marco','Roberto','Tony'], + [TrainerType.SCHOOL_KID]: [['Alan','Billy','Chad','Danny','Dudley','Jack','Joe','Johnny','Kipp','Nate','Ricky','Tommy','Jerry','Paul','Ted','Chance','Esteban','Forrest','Harrison','Connor','Sherman','Torin','Travis','Al','Carter','Edgar','Jem','Sammy','Shane','Shayne','Alvin','Keston','Neil','Seymour','William','Carson','Clark','Nolan'],['Georgia','Karen','Meiko','Christine','Mackenzie','Tiera','Ann','Gina','Lydia','Marsha','Millie','Sally','Serena','Silvia','Alberta','Cassie','Mara','Rita','Georgie','Meena','Nitzel']], + [TrainerType.SWIMMER]: [['Berke','Cameron','Charlie','George','Harold','Jerome','Kirk','Mathew','Parker','Randall','Seth','Simon','Tucker','Austin','Barry','Chad','Cody','Darrin','David','Dean','Douglas','Franklin','Gilbert','Herman','Jack','Luis','Matthew','Reed','Richard','Rodney','Roland','Spencer','Stan','Tony','Clarence','Declan','Dominik','Harrison','Kevin','Leonardo','Nolen','Pete','Santiago','Axle','Braden','Finn','Garrett','Mymo','Reece','Samir','Toby','Adrian','Colton','Dillon','Erik','Evan','Francisco','Glenn','Kurt','Oscar','Ricardo','Sam','Sheltin','Troy','Vincent','Wade','Wesley','Duane','Elmo','Esteban','Frankie','Ronald','Tyson','Bart','Matt','Tim','Wright','Jeffery','Kyle','Alessandro','Estaban','Kieran','Ramses','Casey','Dakota','Jared','Kalani','Keoni','Lawrence','Logan','Robert','Roddy','Yasu','Derek','Jacob','Bruce','Clayton'],['Briana','Dawn','Denise','Diana','Elaine','Kara','Kaylee','Lori','Nicole','Nikki','Paula','Susie','Wendy','Alice','Beth','Beverly','Brenda','Dana','Debra','Grace','Jenny','Katie','Laurel','Linda','Missy','Sharon','Tanya','Tara','Tisha','Carlee','Imani','Isabelle','Kyla','Sienna','Abigail','Amara','Anya','Connie','Maria','Melissa','Nora','Shirley','Shania','Tiffany','Aubree','Cassandra','Claire','Crystal','Erica','Gabrielle','Haley','Jessica','Joanna','Lydia','Mallory','Mary','Miranda','Paige','Sophia','Vanessa','Chelan','Debbie','Joy','Kendra','Leona','Mina','Caroline','Joyce','Larissa','Rebecca','Tyra','Dara','Desiree','Kaoru','Ruth','Coral','Genevieve','Isla','Marissa','Romy','Sheryl','Alexandria','Alicia','Chelsea','Jade','Kelsie','Laura','Portia','Shelby','Sara','Tiare','Kyra','Natasha','Layla','Scarlett','Cora']], + [TrainerType.TWINS]: ['Amy & May','Jo & Zoe','Meg & Peg','Ann & Anne','Lea & Pia','Amy & Liv','Gina & Mia','Miu & Yuki','Tori & Tia','Eli & Anne','Jen & Kira','Joy & Meg','Kiri & Jan','Miu & Mia','Emma & Lil','Liv & Liz','Teri & Tia','Amy & Mimi','Clea & Gil','Day & Dani','Kay & Tia','Tori & Til','Saya & Aya','Emy & Lin','Kumi & Amy','Mayo & May','Ally & Amy','Lia & Lily','Rae & Ula','Sola & Ana','Tara & Val','Faith & Joy','Nana & Nina'], + [TrainerType.VETERAN]: [['Armando','Brenden','Brian','Clayton','Edgar','Emanuel','Grant','Harlan','Terrell','Arlen','Chester','Hugo','Martell','Ray','Shaun','Abraham','Carter','Claude','Jerry','Lucius','Murphy','Rayne','Ron','Sinan','Sterling','Vincent','Zach','Gerard','Gilles','Louis','Timeo','Akira','Don','Eric','Harry','Leon','Roger','Angus','Aristo','Brone','Johnny'],['Julia','Karla','Kim','Sayuri','Tiffany','Cathy','Cecile','Chloris','Denae','Gina','Maya','Oriana','Portia','Rhona','Rosaline','Catrina','Inga','Trisha','Heather','Lynn','Sheri','Alonsa','Ella','Leticia','Kiara']], + [TrainerType.WAITER]: [['Bert','Clint','Maxwell','Lou'],['Kati','Aurora','Bonita','Flo','Tia','Jan','Olwen','Paget','Paula','Talia']], + [TrainerType.WORKER]: [['Braden','Brendon','Colin','Conrad','Dillan','Gary','Gerardo','Holden','Jackson','Mason','Quentin','Willy','Noel','Arnold','Brady','Brand','Cairn','Cliff','Don','Eddie','Felix','Filipe','Glenn','Gus','Heath','Matthew','Patton','Rich','Rob','Ryan','Scott','Shelby','Sterling','Tyler','Victor','Zack','Friedrich','Herman','Isaac','Leo','Maynard','Mitchell','Morgann','Nathan','Niel','Pasqual','Paul','Tavarius','Tibor','Dimitri','Narek','Yusif','Frank','Jeff','Vaclav','Ovid','Francis','Keith','Russel','Sangon','Toway','Bomber','Chean','Demit','Hubor','Kebile','Laber','Ordo','Retay','Ronix','Wagel','Dobit','Kaster','Lobel','Releo','Saken','Rustix'],['Georgia','Sandra','Yvonne']], + [TrainerType.YOUNGSTER]: [['Albert','Gordon','Ian','Jason','Jimmy','Mikey','Owen','Samuel','Warren','Allen','Ben','Billy','Calvin','Dillion','Eddie','Joey','Josh','Neal','Timmy','Tommy','Breyden','Deandre','Demetrius','Dillon','Jaylen','Johnson','Shigenobu','Chad','Cole','Cordell','Dan','Dave','Destin','Nash','Tyler','Yasu','Austin','Dallas','Darius','Donny','Jonathon','Logan','Michael','Oliver','Sebastian','Tristan','Wayne','Norman','Roland','Regis','Abe','Astor','Keita','Kenneth','Kevin','Kyle','Lester','Masao','Nicholas','Parker','Wes','Zachary','Cody','Henley','Jaye','Karl','Kenny','Masahiro','Pedro','Petey','Sinclair','Terrell','Waylon','Aidan','Anthony','David','Jacob','Jayden','Cutler','Ham','Caleb','Kai','Honus','Kenway','Bret','Chris','Cid','Dennis','Easton','Ken','Robby','Ronny','Shawn','Benjamin','Jake','Travis','Adan','Aday','Beltran','Elian','Hernan','Julen','Luka','Roi','Bernie','Dustin','Jonathan','Wyatt'],['Alice','Bridget','Carrie','Connie','Dana','Ellen','Krise','Laura','Linda','Michelle','Shannon','Andrea','Crissy','Janice','Robin','Sally','Tiana','Haley','Ali','Ann','Dalia','Dawn','Iris','Joana','Julia','Kay','Lisa','Megan','Mikaela','Miriam','Paige','Reli','Blythe','Briana','Caroline','Cassidy','Kaitlin','Madeline','Molly','Natalie','Samantha','Sarah','Cathy','Dye','Eri','Eva','Fey','Kara','Lurleen','Maki','Mali','Maya','Miki','Sibyl','Daya','Diana','Flo','Helia','Henrietta','Isabel','Mai','Persephone','Serena','Anna','Charlotte','Elin','Elsa','Lise','Sara','Suzette','Audrey','Emmy','Isabella','Madison','Rika','Rylee','Salla','Ellie','Alexandra','Amy','Lass','Brittany','Chel','Cindy','Dianne','Emily','Emma','Evelyn','Hana','Harleen','Hazel','Jocelyn','Katrina','Kimberly','Lina','Marge','Mila','Mizuki','Rena','Sal','Satoko','Summer','Tomoe','Vicky','Yue','Yumi','Lauren','Rei','Riley','Lois','Nancy','Tammy','Terry']], + [TrainerType.HEX_MANIAC]: ['Kindra','Patricia','Tammy','Tasha','Valerie','Alaina','Kathleen','Leah','Makie','Sylvia','Anina','Arachna','Carrie','Desdemona','Josette','Luna','Melanie','Osanna','Raziah'], }; function fetchAndPopulateTrainerNames(url: string, parser: DOMParser, trainerNames: Set, femaleTrainerNames: Set, forceFemale: boolean = false) { @@ -138,16 +138,16 @@ function fetchAndPopulateTrainerNames(url: string, parser: DOMParser, trainerNam const childIndex = elements.indexOf(t); return childIndex > startChildIndex && childIndex < endChildIndex; }).map(t => t as Element); - console.log(url, tables) - for (let table of tables) { + console.log(url, tables); + for (const table of tables) { const trainerRows = [...table.querySelectorAll('tr:not(:first-child)')].filter(r => r.children.length === 9); - for (let row of trainerRows) { + for (const row of trainerRows) { const nameCell = row.firstElementChild; const content = nameCell.innerHTML; if (content.indexOf(' -1) { const female = /♀/.test(content); if (url === 'Twins') - console.log(content) + console.log(content); const nameMatch = />([a-z]+(?: & [a-z]+)?)<\/a>/i.exec(content); if (nameMatch) (female || forceFemale ? femaleTrainerNames : trainerNames).add(nameMatch[1].replace('&', '&')); @@ -156,7 +156,7 @@ function fetchAndPopulateTrainerNames(url: string, parser: DOMParser, trainerNam } resolve(); }); - }); + }); } /*export function scrapeTrainerNames() { @@ -190,4 +190,4 @@ function fetchAndPopulateTrainerNames(url: string, parser: DOMParser, trainerNam output += `\n};`; console.log(output); }); -}*/ \ No newline at end of file +}*/ diff --git a/src/data/type.ts b/src/data/type.ts index 35c56aecd32..222d7e08f40 100644 --- a/src/data/type.ts +++ b/src/data/type.ts @@ -19,7 +19,7 @@ export enum Type { DARK, FAIRY, STELLAR -}; +} export type TypeDamageMultiplier = 0 | 0.125 | 0.25 | 0.5 | 1 | 2 | 4 | 8; @@ -28,519 +28,519 @@ export function getTypeDamageMultiplier(attackType: integer, defType: integer): return 1; switch (defType) { - case Type.NORMAL: - switch (attackType) { - case Type.FIGHTING: - return 2; - case Type.NORMAL: - case Type.FLYING: - case Type.POISON: - case Type.GROUND: - case Type.ROCK: - case Type.BUG: - case Type.STEEL: - case Type.FIRE: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: - case Type.PSYCHIC: - case Type.ICE: - case Type.DRAGON: - case Type.DARK: - case Type.FAIRY: - return 1; - case Type.GHOST: - default: - return 0; - } + case Type.NORMAL: + switch (attackType) { case Type.FIGHTING: - switch (attackType) { - case Type.FLYING: - case Type.PSYCHIC: - case Type.FAIRY: - return 2; - case Type.NORMAL: - case Type.FIGHTING: - case Type.POISON: - case Type.GROUND: - case Type.GHOST: - case Type.STEEL: - case Type.FIRE: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: - case Type.ICE: - case Type.DRAGON: - return 1; - case Type.ROCK: - case Type.BUG: - case Type.DARK: - return 0.5; - default: - return 0; - } + return 2; + case Type.NORMAL: case Type.FLYING: - switch (attackType) { - case Type.ROCK: - case Type.ELECTRIC: - case Type.ICE: - return 2; - case Type.NORMAL: - case Type.FLYING: - case Type.POISON: - case Type.GHOST: - case Type.STEEL: - case Type.FIRE: - case Type.WATER: - case Type.PSYCHIC: - case Type.DRAGON: - case Type.DARK: - case Type.FAIRY: - return 1; - case Type.FIGHTING: - case Type.BUG: - case Type.GRASS: - return 0.5; - case Type.GROUND: - default: - return 0; - } case Type.POISON: - switch (attackType) { - case Type.GROUND: - case Type.PSYCHIC: - return 2; - case Type.NORMAL: - case Type.FLYING: - case Type.ROCK: - case Type.GHOST: - case Type.STEEL: - case Type.FIRE: - case Type.WATER: - case Type.ELECTRIC: - case Type.ICE: - case Type.DRAGON: - case Type.DARK: - return 1; - case Type.FIGHTING: - case Type.POISON: - case Type.BUG: - case Type.GRASS: - case Type.FAIRY: - return 0.5; - default: - return 0; - } case Type.GROUND: - switch (attackType) { - case Type.WATER: - case Type.GRASS: - case Type.ICE: - return 2; - case Type.NORMAL: - case Type.FIGHTING: - case Type.FLYING: - case Type.GROUND: - case Type.BUG: - case Type.GHOST: - case Type.STEEL: - case Type.FIRE: - case Type.PSYCHIC: - case Type.DRAGON: - case Type.DARK: - case Type.FAIRY: - return 1; - case Type.POISON: - case Type.ROCK: - return 0.5; - case Type.ELECTRIC: - default: - return 0; - } case Type.ROCK: - switch (attackType) { - case Type.FIGHTING: - case Type.GROUND: - case Type.STEEL: - case Type.WATER: - case Type.GRASS: - return 2; - case Type.ROCK: - case Type.BUG: - case Type.GHOST: - case Type.ELECTRIC: - case Type.PSYCHIC: - case Type.ICE: - case Type.DRAGON: - case Type.DARK: - case Type.FAIRY: - return 1; - case Type.NORMAL: - case Type.FLYING: - case Type.POISON: - case Type.FIRE: - return 0.5; - default: - return 0; - } case Type.BUG: - switch (attackType) { - case Type.FLYING: - case Type.ROCK: - case Type.FIRE: - return 2; - case Type.NORMAL: - case Type.POISON: - case Type.BUG: - case Type.GHOST: - case Type.STEEL: - case Type.WATER: - case Type.ELECTRIC: - case Type.PSYCHIC: - case Type.ICE: - case Type.DRAGON: - case Type.DARK: - case Type.FAIRY: - return 1; - case Type.FIGHTING: - case Type.GROUND: - case Type.GRASS: - return 0.5; - default: - return 0; - } - case Type.GHOST: - switch (attackType) { - case Type.GHOST: - case Type.DARK: - return 2; - case Type.FLYING: - case Type.GROUND: - case Type.ROCK: - case Type.STEEL: - case Type.FIRE: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: - case Type.PSYCHIC: - case Type.ICE: - case Type.DRAGON: - case Type.FAIRY: - return 1; - case Type.POISON: - case Type.BUG: - return 0.5; - case Type.NORMAL: - case Type.FIGHTING: - default: - return 0; - } case Type.STEEL: - switch (attackType) { - case Type.FIGHTING: - case Type.GROUND: - case Type.FIRE: - return 2; - case Type.GHOST: - case Type.WATER: - case Type.ELECTRIC: - case Type.DARK: - return 1; - 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: - return 0.5; - case Type.POISON: - default: - return 0; - } case Type.FIRE: - switch (attackType) { - case Type.GROUND: - case Type.ROCK: - case Type.WATER: - return 2; - case Type.NORMAL: - case Type.FIGHTING: - case Type.FLYING: - case Type.POISON: - case Type.GHOST: - case Type.ELECTRIC: - case Type.PSYCHIC: - case Type.DRAGON: - case Type.DARK: - return 1; - case Type.BUG: - case Type.STEEL: - case Type.FIRE: - case Type.GRASS: - case Type.ICE: - case Type.FAIRY: - return 0.5; - default: - return 0; - } case Type.WATER: - switch (attackType) { - case Type.GRASS: - case Type.ELECTRIC: - return 2; - case Type.NORMAL: - case Type.FIGHTING: - case Type.FLYING: - case Type.POISON: - case Type.GROUND: - case Type.ROCK: - case Type.BUG: - case Type.GHOST: - case Type.PSYCHIC: - case Type.DRAGON: - case Type.DARK: - case Type.FAIRY: - return 1; - case Type.STEEL: - case Type.FIRE: - case Type.WATER: - case Type.ICE: - return 0.5; - default: - return 0; - } case Type.GRASS: - switch (attackType) { - case Type.FLYING: - case Type.POISON: - case Type.BUG: - case Type.FIRE: - case Type.ICE: - return 2; - case Type.NORMAL: - case Type.FIGHTING: - case Type.ROCK: - case Type.GHOST: - case Type.STEEL: - case Type.PSYCHIC: - case Type.DRAGON: - case Type.DARK: - case Type.FAIRY: - return 1; - case Type.GROUND: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: - return 0.5; - default: - return 0; - } case Type.ELECTRIC: - switch (attackType) { - case Type.GROUND: - return 2; - case Type.NORMAL: - case Type.FIGHTING: - case Type.POISON: - case Type.ROCK: - case Type.BUG: - case Type.GHOST: - case Type.FIRE: - case Type.WATER: - case Type.GRASS: - case Type.PSYCHIC: - case Type.ICE: - case Type.DRAGON: - case Type.DARK: - case Type.FAIRY: - return 1; - case Type.FLYING: - case Type.STEEL: - case Type.ELECTRIC: - return 0.5; - default: - return 0; - } case Type.PSYCHIC: - switch (attackType) { - case Type.BUG: - case Type.GHOST: - case Type.DARK: - return 2; - case Type.NORMAL: - case Type.FLYING: - case Type.POISON: - case Type.GROUND: - case Type.ROCK: - case Type.STEEL: - case Type.FIRE: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: - case Type.ICE: - case Type.DRAGON: - case Type.FAIRY: - return 1; - case Type.FIGHTING: - case Type.PSYCHIC: - return 0.5; - default: - return 0; - } case Type.ICE: - switch (attackType) { - case Type.FIGHTING: - case Type.ROCK: - case Type.STEEL: - case Type.FIRE: - return 2; - case Type.NORMAL: - case Type.FLYING: - case Type.POISON: - case Type.GROUND: - case Type.BUG: - case Type.GHOST: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: - case Type.PSYCHIC: - case Type.DRAGON: - case Type.DARK: - case Type.FAIRY: - return 1; - case Type.ICE: - return 0.5; - default: - return 0; - } case Type.DRAGON: - switch (attackType) { - case Type.ICE: - case Type.DRAGON: - case Type.FAIRY: - return 2; - case Type.NORMAL: - case Type.FIGHTING: - case Type.FLYING: - case Type.POISON: - case Type.GROUND: - case Type.ROCK: - case Type.BUG: - case Type.GHOST: - case Type.STEEL: - case Type.PSYCHIC: - case Type.DARK: - return 1; - case Type.FIRE: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: - return 0.5; - default: - return 0; - } case Type.DARK: - switch (attackType) { - case Type.FIGHTING: - case Type.BUG: - case Type.FAIRY: - return 2; - case Type.NORMAL: - case Type.FLYING: - case Type.POISON: - case Type.GROUND: - case Type.ROCK: - case Type.STEEL: - case Type.FIRE: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: - case Type.ICE: - case Type.DRAGON: - return 1; - case Type.GHOST: - case Type.DARK: - return 0.5; - case Type.PSYCHIC: - default: - return 0; - } case Type.FAIRY: - switch (attackType) { - case Type.POISON: - case Type.STEEL: - return 2; - case Type.NORMAL: - case Type.FLYING: - case Type.GROUND: - case Type.ROCK: - case Type.GHOST: - case Type.FIRE: - case Type.WATER: - case Type.GRASS: - case Type.ELECTRIC: - case Type.PSYCHIC: - case Type.ICE: - case Type.FAIRY: - return 1; - case Type.FIGHTING: - case Type.BUG: - case Type.DARK: - return 0.5; - case Type.DRAGON: - default: - return 0; - } - case Type.STELLAR: return 1; + case Type.GHOST: + default: + return 0; + } + case Type.FIGHTING: + switch (attackType) { + case Type.FLYING: + case Type.PSYCHIC: + case Type.FAIRY: + return 2; + case Type.NORMAL: + case Type.FIGHTING: + case Type.POISON: + case Type.GROUND: + case Type.GHOST: + case Type.STEEL: + case Type.FIRE: + case Type.WATER: + case Type.GRASS: + case Type.ELECTRIC: + case Type.ICE: + case Type.DRAGON: + return 1; + case Type.ROCK: + case Type.BUG: + case Type.DARK: + return 0.5; + default: + return 0; + } + case Type.FLYING: + switch (attackType) { + case Type.ROCK: + case Type.ELECTRIC: + case Type.ICE: + return 2; + case Type.NORMAL: + case Type.FLYING: + case Type.POISON: + case Type.GHOST: + case Type.STEEL: + case Type.FIRE: + case Type.WATER: + case Type.PSYCHIC: + case Type.DRAGON: + case Type.DARK: + case Type.FAIRY: + return 1; + case Type.FIGHTING: + case Type.BUG: + case Type.GRASS: + return 0.5; + case Type.GROUND: + default: + return 0; + } + case Type.POISON: + switch (attackType) { + case Type.GROUND: + case Type.PSYCHIC: + return 2; + case Type.NORMAL: + case Type.FLYING: + case Type.ROCK: + case Type.GHOST: + case Type.STEEL: + case Type.FIRE: + case Type.WATER: + case Type.ELECTRIC: + case Type.ICE: + case Type.DRAGON: + case Type.DARK: + return 1; + case Type.FIGHTING: + case Type.POISON: + case Type.BUG: + case Type.GRASS: + case Type.FAIRY: + return 0.5; + default: + return 0; + } + case Type.GROUND: + switch (attackType) { + case Type.WATER: + case Type.GRASS: + case Type.ICE: + return 2; + case Type.NORMAL: + case Type.FIGHTING: + case Type.FLYING: + case Type.GROUND: + case Type.BUG: + case Type.GHOST: + case Type.STEEL: + case Type.FIRE: + case Type.PSYCHIC: + case Type.DRAGON: + case Type.DARK: + case Type.FAIRY: + return 1; + case Type.POISON: + case Type.ROCK: + return 0.5; + case Type.ELECTRIC: + default: + return 0; + } + case Type.ROCK: + switch (attackType) { + case Type.FIGHTING: + case Type.GROUND: + case Type.STEEL: + case Type.WATER: + case Type.GRASS: + return 2; + case Type.ROCK: + case Type.BUG: + case Type.GHOST: + case Type.ELECTRIC: + case Type.PSYCHIC: + case Type.ICE: + case Type.DRAGON: + case Type.DARK: + case Type.FAIRY: + return 1; + case Type.NORMAL: + case Type.FLYING: + case Type.POISON: + case Type.FIRE: + return 0.5; + default: + return 0; + } + case Type.BUG: + switch (attackType) { + case Type.FLYING: + case Type.ROCK: + case Type.FIRE: + return 2; + case Type.NORMAL: + case Type.POISON: + case Type.BUG: + case Type.GHOST: + case Type.STEEL: + case Type.WATER: + case Type.ELECTRIC: + case Type.PSYCHIC: + case Type.ICE: + case Type.DRAGON: + case Type.DARK: + case Type.FAIRY: + return 1; + case Type.FIGHTING: + case Type.GROUND: + case Type.GRASS: + return 0.5; + default: + return 0; + } + case Type.GHOST: + switch (attackType) { + case Type.GHOST: + case Type.DARK: + return 2; + case Type.FLYING: + case Type.GROUND: + case Type.ROCK: + case Type.STEEL: + case Type.FIRE: + case Type.WATER: + case Type.GRASS: + case Type.ELECTRIC: + case Type.PSYCHIC: + case Type.ICE: + case Type.DRAGON: + case Type.FAIRY: + return 1; + case Type.POISON: + case Type.BUG: + return 0.5; + case Type.NORMAL: + case Type.FIGHTING: + default: + return 0; + } + case Type.STEEL: + switch (attackType) { + case Type.FIGHTING: + case Type.GROUND: + case Type.FIRE: + return 2; + case Type.GHOST: + case Type.WATER: + case Type.ELECTRIC: + case Type.DARK: + return 1; + 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: + return 0.5; + case Type.POISON: + default: + return 0; + } + case Type.FIRE: + switch (attackType) { + case Type.GROUND: + case Type.ROCK: + case Type.WATER: + return 2; + case Type.NORMAL: + case Type.FIGHTING: + case Type.FLYING: + case Type.POISON: + case Type.GHOST: + case Type.ELECTRIC: + case Type.PSYCHIC: + case Type.DRAGON: + case Type.DARK: + return 1; + case Type.BUG: + case Type.STEEL: + case Type.FIRE: + case Type.GRASS: + case Type.ICE: + case Type.FAIRY: + return 0.5; + default: + return 0; + } + case Type.WATER: + switch (attackType) { + case Type.GRASS: + case Type.ELECTRIC: + return 2; + case Type.NORMAL: + case Type.FIGHTING: + case Type.FLYING: + case Type.POISON: + case Type.GROUND: + case Type.ROCK: + case Type.BUG: + case Type.GHOST: + case Type.PSYCHIC: + case Type.DRAGON: + case Type.DARK: + case Type.FAIRY: + return 1; + case Type.STEEL: + case Type.FIRE: + case Type.WATER: + case Type.ICE: + return 0.5; + default: + return 0; + } + case Type.GRASS: + switch (attackType) { + case Type.FLYING: + case Type.POISON: + case Type.BUG: + case Type.FIRE: + case Type.ICE: + return 2; + case Type.NORMAL: + case Type.FIGHTING: + case Type.ROCK: + case Type.GHOST: + case Type.STEEL: + case Type.PSYCHIC: + case Type.DRAGON: + case Type.DARK: + case Type.FAIRY: + return 1; + case Type.GROUND: + case Type.WATER: + case Type.GRASS: + case Type.ELECTRIC: + return 0.5; + default: + return 0; + } + case Type.ELECTRIC: + switch (attackType) { + case Type.GROUND: + return 2; + case Type.NORMAL: + case Type.FIGHTING: + case Type.POISON: + case Type.ROCK: + case Type.BUG: + case Type.GHOST: + case Type.FIRE: + case Type.WATER: + case Type.GRASS: + case Type.PSYCHIC: + case Type.ICE: + case Type.DRAGON: + case Type.DARK: + case Type.FAIRY: + return 1; + case Type.FLYING: + case Type.STEEL: + case Type.ELECTRIC: + return 0.5; + default: + return 0; + } + case Type.PSYCHIC: + switch (attackType) { + case Type.BUG: + case Type.GHOST: + case Type.DARK: + return 2; + case Type.NORMAL: + case Type.FLYING: + case Type.POISON: + case Type.GROUND: + case Type.ROCK: + case Type.STEEL: + case Type.FIRE: + case Type.WATER: + case Type.GRASS: + case Type.ELECTRIC: + case Type.ICE: + case Type.DRAGON: + case Type.FAIRY: + return 1; + case Type.FIGHTING: + case Type.PSYCHIC: + return 0.5; + default: + return 0; + } + case Type.ICE: + switch (attackType) { + case Type.FIGHTING: + case Type.ROCK: + case Type.STEEL: + case Type.FIRE: + return 2; + case Type.NORMAL: + case Type.FLYING: + case Type.POISON: + case Type.GROUND: + case Type.BUG: + case Type.GHOST: + case Type.WATER: + case Type.GRASS: + case Type.ELECTRIC: + case Type.PSYCHIC: + case Type.DRAGON: + case Type.DARK: + case Type.FAIRY: + return 1; + case Type.ICE: + return 0.5; + default: + return 0; + } + case Type.DRAGON: + switch (attackType) { + case Type.ICE: + case Type.DRAGON: + case Type.FAIRY: + return 2; + case Type.NORMAL: + case Type.FIGHTING: + case Type.FLYING: + case Type.POISON: + case Type.GROUND: + case Type.ROCK: + case Type.BUG: + case Type.GHOST: + case Type.STEEL: + case Type.PSYCHIC: + case Type.DARK: + return 1; + case Type.FIRE: + case Type.WATER: + case Type.GRASS: + case Type.ELECTRIC: + return 0.5; + default: + return 0; + } + case Type.DARK: + switch (attackType) { + case Type.FIGHTING: + case Type.BUG: + case Type.FAIRY: + return 2; + case Type.NORMAL: + case Type.FLYING: + case Type.POISON: + case Type.GROUND: + case Type.ROCK: + case Type.STEEL: + case Type.FIRE: + case Type.WATER: + case Type.GRASS: + case Type.ELECTRIC: + case Type.ICE: + case Type.DRAGON: + return 1; + case Type.GHOST: + case Type.DARK: + return 0.5; + case Type.PSYCHIC: + default: + return 0; + } + case Type.FAIRY: + switch (attackType) { + case Type.POISON: + case Type.STEEL: + return 2; + case Type.NORMAL: + case Type.FLYING: + case Type.GROUND: + case Type.ROCK: + case Type.GHOST: + case Type.FIRE: + case Type.WATER: + case Type.GRASS: + case Type.ELECTRIC: + case Type.PSYCHIC: + case Type.ICE: + case Type.FAIRY: + return 1; + case Type.FIGHTING: + case Type.BUG: + case Type.DARK: + return 0.5; + case Type.DRAGON: + default: + return 0; + } + case Type.STELLAR: + return 1; } } export function getTypeRgb(type: Type): [ integer, integer, integer ] { switch (type) { - case Type.NORMAL: - return [ 168, 168, 120 ]; - case Type.FIGHTING: - return [ 192, 48, 40 ]; - case Type.FLYING: - return [ 168, 144, 240 ]; - case Type.POISON: - return [ 160, 64, 160 ]; - case Type.GROUND: - return [ 224, 192, 104 ]; - case Type.ROCK: - return [ 184, 160, 56 ]; - case Type.BUG: - return [ 168, 184, 32 ]; - case Type.GHOST: - return [ 112, 88, 152 ]; - case Type.STEEL: - return [ 184, 184, 208 ]; - case Type.FIRE: - return [ 240, 128, 48 ]; - case Type.WATER: - return [ 104, 144, 240 ]; - case Type.GRASS: - return [ 120, 200, 80 ]; - case Type.ELECTRIC: - return [ 248, 208, 48 ]; - case Type.PSYCHIC: - return [ 248, 88, 136 ]; - case Type.ICE: - return [ 152, 216, 216 ]; - case Type.DRAGON: - return [ 112, 56, 248 ]; - case Type.DARK: - return [ 112, 88, 72 ]; - case Type.FAIRY: - return [ 232, 136, 200 ]; - case Type.STELLAR: - return [ 255, 255, 255 ]; - default: - return [ 0, 0, 0 ]; + case Type.NORMAL: + return [ 168, 168, 120 ]; + case Type.FIGHTING: + return [ 192, 48, 40 ]; + case Type.FLYING: + return [ 168, 144, 240 ]; + case Type.POISON: + return [ 160, 64, 160 ]; + case Type.GROUND: + return [ 224, 192, 104 ]; + case Type.ROCK: + return [ 184, 160, 56 ]; + case Type.BUG: + return [ 168, 184, 32 ]; + case Type.GHOST: + return [ 112, 88, 152 ]; + case Type.STEEL: + return [ 184, 184, 208 ]; + case Type.FIRE: + return [ 240, 128, 48 ]; + case Type.WATER: + return [ 104, 144, 240 ]; + case Type.GRASS: + return [ 120, 200, 80 ]; + case Type.ELECTRIC: + return [ 248, 208, 48 ]; + case Type.PSYCHIC: + return [ 248, 88, 136 ]; + case Type.ICE: + return [ 152, 216, 216 ]; + case Type.DRAGON: + return [ 112, 56, 248 ]; + case Type.DARK: + return [ 112, 88, 72 ]; + case Type.FAIRY: + return [ 232, 136, 200 ]; + case Type.STELLAR: + return [ 255, 255, 255 ]; + default: + return [ 0, 0, 0 ]; } } diff --git a/src/data/variant.ts b/src/data/variant.ts index 4e167e43291..b16586108fd 100644 --- a/src/data/variant.ts +++ b/src/data/variant.ts @@ -8,11 +8,11 @@ export const variantColorCache = {}; export function getVariantTint(variant: Variant): integer { switch (variant) { - case 0: - return 0xf8c020; - case 1: - return 0x20f8f0; - case 2: - return 0xe81048; + case 0: + return 0xf8c020; + case 1: + return 0x20f8f0; + case 2: + return 0xe81048; } -} \ No newline at end of file +} diff --git a/src/data/weather.ts b/src/data/weather.ts index c8bd47fc12d..3c1b7efcd87 100644 --- a/src/data/weather.ts +++ b/src/data/weather.ts @@ -1,13 +1,13 @@ -import { Biome } from "./enums/biome"; -import { getPokemonMessage, getPokemonPrefix } from "../messages"; -import Pokemon from "../field/pokemon"; -import { Type } from "./type"; -import Move, { AttackMove } from "./move"; -import * as Utils from "../utils"; -import BattleScene from "../battle-scene"; -import { SuppressWeatherEffectAbAttr } from "./ability"; -import { TerrainType } from "./terrain"; -import i18next from "i18next"; +import { Biome } from './enums/biome'; +import { getPokemonMessage, getPokemonPrefix } from '../messages'; +import Pokemon from '../field/pokemon'; +import { Type } from './type'; +import Move, { AttackMove } from './move'; +import * as Utils from '../utils'; +import BattleScene from '../battle-scene'; +import { SuppressWeatherEffectAbAttr } from './ability'; +import { TerrainType } from './terrain'; +import i18next from 'i18next'; export enum WeatherType { NONE, @@ -42,10 +42,10 @@ export class Weather { isImmutable(): boolean { switch (this.weatherType) { - case WeatherType.HEAVY_RAIN: - case WeatherType.HARSH_SUN: - case WeatherType.STRONG_WINDS: - return true; + case WeatherType.HEAVY_RAIN: + case WeatherType.HARSH_SUN: + case WeatherType.STRONG_WINDS: + return true; } return false; @@ -53,9 +53,9 @@ export class Weather { isDamaging(): boolean { switch (this.weatherType) { - case WeatherType.SANDSTORM: - case WeatherType.HAIL: - return true; + case WeatherType.SANDSTORM: + case WeatherType.HAIL: + return true; } return false; @@ -63,10 +63,10 @@ export class Weather { isTypeDamageImmune(type: Type): boolean { switch (this.weatherType) { - case WeatherType.SANDSTORM: - return type === Type.GROUND || type === Type.ROCK || type === Type.STEEL; - case WeatherType.HAIL: - return type === Type.ICE; + case WeatherType.SANDSTORM: + return type === Type.GROUND || type === Type.ROCK || type === Type.STEEL; + case WeatherType.HAIL: + return type === Type.ICE; } return false; @@ -74,20 +74,20 @@ export class Weather { getAttackTypeMultiplier(attackType: Type): number { switch (this.weatherType) { - case WeatherType.SUNNY: - case WeatherType.HARSH_SUN: - if (attackType === Type.FIRE) - return 1.5; - if (attackType === Type.WATER) - return 0.5; - break; - case WeatherType.RAIN: - case WeatherType.HEAVY_RAIN: - if (attackType === Type.FIRE) - return 0.5; - if (attackType === Type.WATER) - return 1.5; - break; + case WeatherType.SUNNY: + case WeatherType.HARSH_SUN: + if (attackType === Type.FIRE) + return 1.5; + if (attackType === Type.WATER) + return 0.5; + break; + case WeatherType.RAIN: + case WeatherType.HEAVY_RAIN: + if (attackType === Type.FIRE) + return 0.5; + if (attackType === Type.WATER) + return 1.5; + break; } return 1; @@ -95,10 +95,10 @@ export class Weather { isMoveWeatherCancelled(move: Move): boolean { switch (this.weatherType) { - case WeatherType.HARSH_SUN: - return move instanceof AttackMove && move.type === Type.WATER; - case WeatherType.HEAVY_RAIN: - return move instanceof AttackMove && move.type === Type.FIRE; + case WeatherType.HARSH_SUN: + return move instanceof AttackMove && move.type === Type.WATER; + case WeatherType.HEAVY_RAIN: + return move instanceof AttackMove && move.type === Type.FIRE; } return false; @@ -107,7 +107,7 @@ export class Weather { isEffectSuppressed(scene: BattleScene): boolean { const field = scene.getField(true); - for (let pokemon of field) { + for (const pokemon of field) { let suppressWeatherEffectAbAttr = pokemon.getAbility().getAttrs(SuppressWeatherEffectAbAttr).find(() => true) as SuppressWeatherEffectAbAttr; if (!suppressWeatherEffectAbAttr) suppressWeatherEffectAbAttr = pokemon.hasPassive() ? pokemon.getPassiveAbility().getAttrs(SuppressWeatherEffectAbAttr).find(() => true) as SuppressWeatherEffectAbAttr : null; @@ -121,24 +121,24 @@ export class Weather { export function getWeatherStartMessage(weatherType: WeatherType): string { switch (weatherType) { - case WeatherType.SUNNY: - return i18next.t('weather:sunnyStartMessage'); - case WeatherType.RAIN: - return i18next.t('weather:rainStartMessage'); - case WeatherType.SANDSTORM: - return i18next.t('weather:sandstormStartMessage'); - case WeatherType.HAIL: - return i18next.t('weather:hailStartMessage'); - case WeatherType.SNOW: - return i18next.t('weather:snowStartMessage'); - case WeatherType.FOG: - return i18next.t('weather:fogStartMessage'); - case WeatherType.HEAVY_RAIN: - return i18next.t('weather:heavyRainStartMessage'); - case WeatherType.HARSH_SUN: - return i18next.t('weather:harshSunStartMessage'); - case WeatherType.STRONG_WINDS: - return i18next.t('weather:strongWindsStartMessage'); + case WeatherType.SUNNY: + return i18next.t('weather:sunnyStartMessage'); + case WeatherType.RAIN: + return i18next.t('weather:rainStartMessage'); + case WeatherType.SANDSTORM: + return i18next.t('weather:sandstormStartMessage'); + case WeatherType.HAIL: + return i18next.t('weather:hailStartMessage'); + case WeatherType.SNOW: + return i18next.t('weather:snowStartMessage'); + case WeatherType.FOG: + return i18next.t('weather:fogStartMessage'); + case WeatherType.HEAVY_RAIN: + return i18next.t('weather:heavyRainStartMessage'); + case WeatherType.HARSH_SUN: + return i18next.t('weather:harshSunStartMessage'); + case WeatherType.STRONG_WINDS: + return i18next.t('weather:strongWindsStartMessage'); } return null; @@ -146,24 +146,24 @@ export function getWeatherStartMessage(weatherType: WeatherType): string { export function getWeatherLapseMessage(weatherType: WeatherType): string { switch (weatherType) { - case WeatherType.SUNNY: - return i18next.t('weather:sunnyLapseMessage'); - case WeatherType.RAIN: - return i18next.t('weather:rainLapseMessage'); - case WeatherType.SANDSTORM: - return i18next.t('weather:sandstormLapseMessage'); - case WeatherType.HAIL: - return i18next.t('weather:hailLapseMessage'); - case WeatherType.SNOW: - return i18next.t('weather:snowLapseMessage'); - case WeatherType.FOG: - return i18next.t('weather:fogLapseMessage'); - case WeatherType.HEAVY_RAIN: - return i18next.t('weather:heavyRainLapseMessage'); - case WeatherType.HARSH_SUN: - return i18next.t('weather:harshSunLapseMessage'); - case WeatherType.STRONG_WINDS: - return i18next.t('weather:strongWindsLapseMessage'); + case WeatherType.SUNNY: + return i18next.t('weather:sunnyLapseMessage'); + case WeatherType.RAIN: + return i18next.t('weather:rainLapseMessage'); + case WeatherType.SANDSTORM: + return i18next.t('weather:sandstormLapseMessage'); + case WeatherType.HAIL: + return i18next.t('weather:hailLapseMessage'); + case WeatherType.SNOW: + return i18next.t('weather:snowLapseMessage'); + case WeatherType.FOG: + return i18next.t('weather:fogLapseMessage'); + case WeatherType.HEAVY_RAIN: + return i18next.t('weather:heavyRainLapseMessage'); + case WeatherType.HARSH_SUN: + return i18next.t('weather:harshSunLapseMessage'); + case WeatherType.STRONG_WINDS: + return i18next.t('weather:strongWindsLapseMessage'); } return null; @@ -171,10 +171,10 @@ export function getWeatherLapseMessage(weatherType: WeatherType): string { export function getWeatherDamageMessage(weatherType: WeatherType, pokemon: Pokemon): string { switch (weatherType) { - case WeatherType.SANDSTORM: - return i18next.t('weather:sandstormDamageMessage', {pokemonPrefix: getPokemonPrefix(pokemon), pokemonName: pokemon.name}); - case WeatherType.HAIL: - return i18next.t('weather:hailDamageMessage', {pokemonPrefix: getPokemonPrefix(pokemon), pokemonName: pokemon.name}); + case WeatherType.SANDSTORM: + return i18next.t('weather:sandstormDamageMessage', {pokemonPrefix: getPokemonPrefix(pokemon), pokemonName: pokemon.name}); + case WeatherType.HAIL: + return i18next.t('weather:hailDamageMessage', {pokemonPrefix: getPokemonPrefix(pokemon), pokemonName: pokemon.name}); } return null; @@ -182,24 +182,24 @@ export function getWeatherDamageMessage(weatherType: WeatherType, pokemon: Pokem export function getWeatherClearMessage(weatherType: WeatherType): string { switch (weatherType) { - case WeatherType.SUNNY: - return i18next.t('weather:sunnyClearMessage'); - case WeatherType.RAIN: - return i18next.t('weather:rainClearMessage'); - case WeatherType.SANDSTORM: - return i18next.t('weather:sandstormClearMessage'); - case WeatherType.HAIL: - return i18next.t('weather:hailClearMessage'); - case WeatherType.SNOW: - return i18next.t('weather:snowClearMessage'); - case WeatherType.FOG: - return i18next.t('weather:fogClearMessage'); - case WeatherType.HEAVY_RAIN: - return i18next.t('weather:heavyRainClearMessage'); - case WeatherType.HARSH_SUN: - return i18next.t('weather:harshSunClearMessage'); - case WeatherType.STRONG_WINDS: - return i18next.t('weather:strongWindsClearMessage'); + case WeatherType.SUNNY: + return i18next.t('weather:sunnyClearMessage'); + case WeatherType.RAIN: + return i18next.t('weather:rainClearMessage'); + case WeatherType.SANDSTORM: + return i18next.t('weather:sandstormClearMessage'); + case WeatherType.HAIL: + return i18next.t('weather:hailClearMessage'); + case WeatherType.SNOW: + return i18next.t('weather:snowClearMessage'); + case WeatherType.FOG: + return i18next.t('weather:fogClearMessage'); + case WeatherType.HEAVY_RAIN: + return i18next.t('weather:heavyRainClearMessage'); + case WeatherType.HARSH_SUN: + return i18next.t('weather:harshSunClearMessage'); + case WeatherType.STRONG_WINDS: + return i18next.t('weather:strongWindsClearMessage'); } return null; @@ -207,33 +207,33 @@ export function getWeatherClearMessage(weatherType: WeatherType): string { export function getTerrainStartMessage(terrainType: TerrainType): string { switch (terrainType) { - case TerrainType.MISTY: - return 'Mist swirled around the battlefield!'; - case TerrainType.ELECTRIC: - return 'An electric current ran across the battlefield!'; - case TerrainType.GRASSY: - return 'Grass grew to cover the battlefield!'; - case TerrainType.PSYCHIC: - return 'The battlefield got weird!'; + case TerrainType.MISTY: + return 'Mist swirled around the battlefield!'; + case TerrainType.ELECTRIC: + return 'An electric current ran across the battlefield!'; + case TerrainType.GRASSY: + return 'Grass grew to cover the battlefield!'; + case TerrainType.PSYCHIC: + return 'The battlefield got weird!'; } } export function getTerrainClearMessage(terrainType: TerrainType): string { switch (terrainType) { - case TerrainType.MISTY: - return 'The mist disappeared from the battlefield.'; - case TerrainType.ELECTRIC: - return 'The electricity disappeared from the battlefield.'; - case TerrainType.GRASSY: - return 'The grass disappeared from the battlefield.'; - case TerrainType.PSYCHIC: - return 'The weirdness disappeared from the battlefield!'; + case TerrainType.MISTY: + return 'The mist disappeared from the battlefield.'; + case TerrainType.ELECTRIC: + return 'The electricity disappeared from the battlefield.'; + case TerrainType.GRASSY: + return 'The grass disappeared from the battlefield.'; + case TerrainType.PSYCHIC: + return 'The weirdness disappeared from the battlefield!'; } } export function getTerrainBlockMessage(pokemon: Pokemon, terrainType: TerrainType): string { if (terrainType === TerrainType.MISTY) - return getPokemonMessage(pokemon, ` surrounds itself with a protective mist!`); + return getPokemonMessage(pokemon, ' surrounds itself with a protective mist!'); return getPokemonMessage(pokemon, ` is protected by the ${Utils.toReadableString(TerrainType[terrainType])} Terrain!`); } @@ -246,119 +246,119 @@ export function getRandomWeatherType(arena: any /* Importing from arena causes a let weatherPool: WeatherPoolEntry[] = []; const hasSun = arena.getTimeOfDay() < 2; switch (arena.biomeType) { - case Biome.GRASS: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 7 } - ]; - if (hasSun) - weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 3 }); - break; - case Biome.TALL_GRASS: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 8 }, - { weatherType: WeatherType.RAIN, weight: 5 }, - ]; - if (hasSun) - weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 8 }); - break; - case Biome.FOREST: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 8 }, - { weatherType: WeatherType.RAIN, weight: 5 } - ]; - break; - case Biome.SEA: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 3 }, - { weatherType: WeatherType.RAIN, weight: 12 } - ]; - break; - case Biome.SWAMP: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 3 }, - { weatherType: WeatherType.RAIN, weight: 4 }, - { weatherType: WeatherType.FOG, weight: 1 } - ]; - break; - case Biome.BEACH: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 8 }, - { weatherType: WeatherType.RAIN, weight: 3 } - ]; - if (hasSun) - weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 5 }); - break; - case Biome.LAKE: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 10 }, - { weatherType: WeatherType.RAIN, weight: 5 }, - { weatherType: WeatherType.FOG, weight: 1 } - ]; - break; - case Biome.SEABED: - weatherPool = [ - { weatherType: WeatherType.RAIN, weight: 1 } - ]; - break; - case Biome.BADLANDS: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 8 }, - { weatherType: WeatherType.SANDSTORM, weight: 2 } - ]; - if (hasSun) - weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 5 }); - break; - case Biome.DESERT: - weatherPool = [ - { weatherType: WeatherType.SANDSTORM, weight: 2 } - ]; - if (hasSun) - weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 }); - break; - case Biome.ICE_CAVE: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 3 }, - { weatherType: WeatherType.SNOW, weight: 4 }, - { weatherType: WeatherType.HAIL, weight: 1 } - ]; - break; - case Biome.MEADOW: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 2 } - ]; - if (hasSun) - weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 }); - case Biome.VOLCANO: - weatherPool = [ - { weatherType: hasSun ? WeatherType.SUNNY : WeatherType.NONE, weight: 1 } - ]; - break; - case Biome.GRAVEYARD: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 3 }, - { weatherType: WeatherType.FOG, weight: 1 } - ]; - break; - case Biome.JUNGLE: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 8 }, - { weatherType: WeatherType.RAIN, weight: 2 } - ]; - break; - case Biome.SNOWY_FOREST: - weatherPool = [ - { weatherType: WeatherType.SNOW, weight: 7 }, - { weatherType: WeatherType.HAIL, weight: 1 } - ]; - break; - case Biome.ISLAND: - weatherPool = [ - { weatherType: WeatherType.NONE, weight: 5 }, - { weatherType: WeatherType.RAIN, weight: 1 }, - ]; - if (hasSun) - weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 }); - break; + case Biome.GRASS: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 7 } + ]; + if (hasSun) + weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 3 }); + break; + case Biome.TALL_GRASS: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 8 }, + { weatherType: WeatherType.RAIN, weight: 5 }, + ]; + if (hasSun) + weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 8 }); + break; + case Biome.FOREST: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 8 }, + { weatherType: WeatherType.RAIN, weight: 5 } + ]; + break; + case Biome.SEA: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 3 }, + { weatherType: WeatherType.RAIN, weight: 12 } + ]; + break; + case Biome.SWAMP: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 3 }, + { weatherType: WeatherType.RAIN, weight: 4 }, + { weatherType: WeatherType.FOG, weight: 1 } + ]; + break; + case Biome.BEACH: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 8 }, + { weatherType: WeatherType.RAIN, weight: 3 } + ]; + if (hasSun) + weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 5 }); + break; + case Biome.LAKE: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 10 }, + { weatherType: WeatherType.RAIN, weight: 5 }, + { weatherType: WeatherType.FOG, weight: 1 } + ]; + break; + case Biome.SEABED: + weatherPool = [ + { weatherType: WeatherType.RAIN, weight: 1 } + ]; + break; + case Biome.BADLANDS: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 8 }, + { weatherType: WeatherType.SANDSTORM, weight: 2 } + ]; + if (hasSun) + weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 5 }); + break; + case Biome.DESERT: + weatherPool = [ + { weatherType: WeatherType.SANDSTORM, weight: 2 } + ]; + if (hasSun) + weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 }); + break; + case Biome.ICE_CAVE: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 3 }, + { weatherType: WeatherType.SNOW, weight: 4 }, + { weatherType: WeatherType.HAIL, weight: 1 } + ]; + break; + case Biome.MEADOW: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 2 } + ]; + if (hasSun) + weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 }); + case Biome.VOLCANO: + weatherPool = [ + { weatherType: hasSun ? WeatherType.SUNNY : WeatherType.NONE, weight: 1 } + ]; + break; + case Biome.GRAVEYARD: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 3 }, + { weatherType: WeatherType.FOG, weight: 1 } + ]; + break; + case Biome.JUNGLE: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 8 }, + { weatherType: WeatherType.RAIN, weight: 2 } + ]; + break; + case Biome.SNOWY_FOREST: + weatherPool = [ + { weatherType: WeatherType.SNOW, weight: 7 }, + { weatherType: WeatherType.HAIL, weight: 1 } + ]; + break; + case Biome.ISLAND: + weatherPool = [ + { weatherType: WeatherType.NONE, weight: 5 }, + { weatherType: WeatherType.RAIN, weight: 1 }, + ]; + if (hasSun) + weatherPool.push({ weatherType: WeatherType.SUNNY, weight: 2 }); + break; } if (weatherPool.length > 1) { @@ -367,7 +367,7 @@ export function getRandomWeatherType(arena: any /* Importing from arena causes a const rand = Utils.randSeedInt(totalWeight); let w = 0; - for (let weather of weatherPool) { + for (const weather of weatherPool) { w += weather.weight; if (rand < w) return weather.weatherType; @@ -377,4 +377,4 @@ export function getRandomWeatherType(arena: any /* Importing from arena causes a return weatherPool.length ? weatherPool[0].weatherType : WeatherType.NONE; -} \ No newline at end of file +} diff --git a/src/debug.js b/src/debug.js index b627dba65b1..100a91451f7 100644 --- a/src/debug.js +++ b/src/debug.js @@ -10,4 +10,4 @@ export function getSession() { if (!sessionStr) return null; return JSON.parse(atob(sessionStr)); -} \ No newline at end of file +} diff --git a/src/egg-hatch-phase.ts b/src/egg-hatch-phase.ts index 70f2d5f388e..36ca3519e75 100644 --- a/src/egg-hatch-phase.ts +++ b/src/egg-hatch-phase.ts @@ -1,17 +1,17 @@ -import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import { Phase } from "./phase"; -import BattleScene, { AnySound } from "./battle-scene"; -import * as Utils from "./utils"; -import { Mode } from "./ui/ui"; -import { EGG_SEED, Egg, GachaType, getLegendaryGachaSpeciesForTimestamp } from "./data/egg"; -import EggHatchSceneHandler from "./ui/egg-hatch-scene-handler"; -import { Species } from "./data/enums/species"; -import { PlayerPokemon } from "./field/pokemon"; -import { getPokemonSpecies, speciesStarters } from "./data/pokemon-species"; -import { achvs } from "./system/achv"; -import { pokemonPrevolutions } from "./data/pokemon-evolutions"; -import { EggTier } from "./data/enums/egg-type"; -import PokemonInfoContainer from "./ui/pokemon-info-container"; +import SoundFade from 'phaser3-rex-plugins/plugins/soundfade'; +import { Phase } from './phase'; +import BattleScene, { AnySound } from './battle-scene'; +import * as Utils from './utils'; +import { Mode } from './ui/ui'; +import { EGG_SEED, Egg, GachaType, getLegendaryGachaSpeciesForTimestamp } from './data/egg'; +import EggHatchSceneHandler from './ui/egg-hatch-scene-handler'; +import { Species } from './data/enums/species'; +import { PlayerPokemon } from './field/pokemon'; +import { getPokemonSpecies, speciesStarters } from './data/pokemon-species'; +import { achvs } from './system/achv'; +import { pokemonPrevolutions } from './data/pokemon-evolutions'; +import { EggTier } from './data/enums/egg-type'; +import PokemonInfoContainer from './ui/pokemon-info-container'; export class EggHatchPhase extends Phase { private egg: Egg; @@ -83,7 +83,7 @@ export class EggHatchPhase extends Phase { this.eggHatchContainer.add(this.eggContainer); const getPokemonSprite = () => { - const ret = this.scene.add.sprite(this.eggHatchBg.displayWidth / 2, this.eggHatchBg.displayHeight / 2, `pkmn__sub`); + const ret = this.scene.add.sprite(this.eggHatchBg.displayWidth / 2, this.eggHatchBg.displayHeight / 2, 'pkmn__sub'); ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); return ret; }; @@ -151,7 +151,7 @@ export class EggHatchPhase extends Phase { }); }); }); - }) + }); }); }); }); @@ -196,7 +196,7 @@ export class EggHatchPhase extends Phase { onComplete: () => resolve() }); } - }) + }); } }); }); @@ -312,8 +312,8 @@ export class EggHatchPhase extends Phase { let f = 0; let yOffset = 0; - let speed = 3 - Utils.randInt(8); - let amp = 24 + Utils.randInt(32); + const speed = 3 - Utils.randInt(8); + const amp = 24 + Utils.randInt(32); const particleTimer = this.scene.tweens.addCounter({ repeat: -1, @@ -366,34 +366,34 @@ export class EggHatchPhase extends Phase { let maxStarterValue: integer; switch (this.egg.tier) { - case EggTier.GREAT: - minStarterValue = 4; - maxStarterValue = 5; - break; - case EggTier.ULTRA: - minStarterValue = 6; - maxStarterValue = 7; - break; - case EggTier.MASTER: - minStarterValue = 8; - maxStarterValue = 9; - break; - default: - minStarterValue = 1; - maxStarterValue = 3; - break; + case EggTier.GREAT: + minStarterValue = 4; + maxStarterValue = 5; + break; + case EggTier.ULTRA: + minStarterValue = 6; + maxStarterValue = 7; + break; + case EggTier.MASTER: + minStarterValue = 8; + maxStarterValue = 9; + break; + default: + minStarterValue = 1; + maxStarterValue = 3; + break; } const ignoredSpecies = [ Species.PHIONE, Species.MANAPHY, Species.ETERNATUS ]; - let speciesPool = Object.keys(speciesStarters) + const speciesPool = Object.keys(speciesStarters) .filter(s => speciesStarters[s] >= minStarterValue && speciesStarters[s] <= maxStarterValue) .map(s => parseInt(s) as Species) .filter(s => !pokemonPrevolutions.hasOwnProperty(s) && getPokemonSpecies(s).isObtainable() && ignoredSpecies.indexOf(s) === -1); let totalWeight = 0; const speciesWeights = []; - for (let speciesId of speciesPool) { + for (const speciesId of speciesPool) { let weight = Math.floor((((maxStarterValue - speciesStarters[speciesId]) / ((maxStarterValue - minStarterValue) + 1)) * 1.5 + 1) * 100); const species = getPokemonSpecies(speciesId); if (species.isRegional()) @@ -434,4 +434,4 @@ export class EggHatchPhase extends Phase { return ret; } -} \ No newline at end of file +} diff --git a/src/enums/ui-theme.ts b/src/enums/ui-theme.ts index e0fd92a20a8..50b5c4f65a3 100644 --- a/src/enums/ui-theme.ts +++ b/src/enums/ui-theme.ts @@ -1,4 +1,4 @@ export enum UiTheme { DEFAULT, LEGACY -} \ No newline at end of file +} diff --git a/src/evolution-phase.ts b/src/evolution-phase.ts index 7684d7797a2..2546f549522 100644 --- a/src/evolution-phase.ts +++ b/src/evolution-phase.ts @@ -1,15 +1,15 @@ -import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import { Phase } from "./phase"; -import BattleScene from "./battle-scene"; -import { SpeciesFormEvolution } from "./data/pokemon-evolutions"; -import EvolutionSceneHandler from "./ui/evolution-scene-handler"; -import * as Utils from "./utils"; -import { Mode } from "./ui/ui"; -import { LearnMovePhase } from "./phases"; -import { cos, sin } from "./field/anims"; -import { PlayerPokemon } from "./field/pokemon"; -import { getTypeRgb } from "./data/type"; -import i18next from "i18next"; +import SoundFade from 'phaser3-rex-plugins/plugins/soundfade'; +import { Phase } from './phase'; +import BattleScene from './battle-scene'; +import { SpeciesFormEvolution } from './data/pokemon-evolutions'; +import EvolutionSceneHandler from './ui/evolution-scene-handler'; +import * as Utils from './utils'; +import { Mode } from './ui/ui'; +import { LearnMovePhase } from './phases'; +import { cos, sin } from './field/anims'; +import { PlayerPokemon } from './field/pokemon'; +import { getTypeRgb } from './data/type'; +import i18next from 'i18next'; export class EvolutionPhase extends Phase { protected pokemon: PlayerPokemon; @@ -73,7 +73,7 @@ export class EvolutionPhase extends Phase { this.evolutionContainer.add(this.evolutionBgOverlay); const getPokemonSprite = () => { - const ret = this.scene.addPokemonSprite(this.pokemon, this.evolutionBaseBg.displayWidth / 2, this.evolutionBaseBg.displayHeight / 2, `pkmn__sub`); + const ret = this.scene.addPokemonSprite(this.pokemon, this.evolutionBaseBg.displayWidth / 2, this.evolutionBaseBg.displayHeight / 2, 'pkmn__sub'); ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); return ret; }; @@ -217,7 +217,7 @@ export class EvolutionPhase extends Phase { this.pokemon.evolve(this.evolution).then(() => { const levelMoves = this.pokemon.getLevelMoves(this.lastLevel + 1, true); - for (let lm of levelMoves) + for (const lm of levelMoves) this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.scene.getParty().indexOf(this.pokemon), lm[1])); this.scene.unshiftPhase(new EndEvolutionPhase(this.scene)); @@ -266,7 +266,7 @@ export class EvolutionPhase extends Phase { }); }); } - }) + }); } }); }); @@ -485,8 +485,8 @@ export class EvolutionPhase extends Phase { let f = 0; let yOffset = 0; - let speed = 3 - Utils.randInt(8); - let amp = 48 + Utils.randInt(64); + const speed = 3 - Utils.randInt(8); + const amp = 48 + Utils.randInt(64); const particleTimer = this.scene.tweens.addCounter({ repeat: -1, @@ -522,4 +522,4 @@ export class EndEvolutionPhase extends Phase { this.scene.ui.setModeForceTransition(Mode.MESSAGE).then(() => this.end()); } -} \ No newline at end of file +} diff --git a/src/field/anims.ts b/src/field/anims.ts index bbe35d9312b..f03067a7f0d 100644 --- a/src/field/anims.ts +++ b/src/field/anims.ts @@ -1,24 +1,24 @@ -import BattleScene from "../battle-scene"; -import { PokeballType } from "../data/pokeball"; -import * as Utils from "../utils"; +import BattleScene from '../battle-scene'; +import { PokeballType } from '../data/pokeball'; +import * as Utils from '../utils'; export function addPokeballOpenParticles(scene: BattleScene, x: number, y: number, pokeballType: PokeballType): void { switch (pokeballType) { - case PokeballType.POKEBALL: - doDefaultPbOpenParticles(scene, x, y, 48); - break; - case PokeballType.GREAT_BALL: - doDefaultPbOpenParticles(scene, x, y, 96); - break; - case PokeballType.ULTRA_BALL: - doUbOpenParticles(scene, x, y, 8); - break; - case PokeballType.ROGUE_BALL: - doUbOpenParticles(scene, x, y, 10); - break; - case PokeballType.MASTER_BALL: - doMbOpenParticles(scene, x, y); - break; + case PokeballType.POKEBALL: + doDefaultPbOpenParticles(scene, x, y, 48); + break; + case PokeballType.GREAT_BALL: + doDefaultPbOpenParticles(scene, x, y, 96); + break; + case PokeballType.ULTRA_BALL: + doUbOpenParticles(scene, x, y, 8); + break; + case PokeballType.ROGUE_BALL: + doUbOpenParticles(scene, x, y, 10); + break; + case PokeballType.MASTER_BALL: + doMbOpenParticles(scene, x, y); + break; } } @@ -66,7 +66,7 @@ function doDefaultPbOpenParticles(scene: BattleScene, x: number, y: number, radi } function doUbOpenParticles(scene: BattleScene, x: number, y: number, frameIndex: integer) { - let particles: Phaser.GameObjects.Image[] = []; + const particles: Phaser.GameObjects.Image[] = []; for (let i = 0; i < 10; i++) particles.push(doFanOutParticle(scene, i * 25, x, y, 1, 1, 5, frameIndex)); @@ -77,14 +77,14 @@ function doUbOpenParticles(scene: BattleScene, x: number, y: number, frameIndex: alpha: 0, ease: 'Sine.easeIn', onComplete: () => { - for (let particle of particles) + for (const particle of particles) particle.destroy(); } }); } function doMbOpenParticles(scene: BattleScene, x: number, y: number) { - let particles: Phaser.GameObjects.Image[] = []; + const particles: Phaser.GameObjects.Image[] = []; for (let j = 0; j < 2; j++) { for (let i = 0; i < 8; i++) particles.push(doFanOutParticle(scene, i * 32, x, y, j ? 1 : 2, j ? 2 : 1, 8, 4)); @@ -96,7 +96,7 @@ function doMbOpenParticles(scene: BattleScene, x: number, y: number) { alpha: 0, ease: 'Sine.easeIn', onComplete: () => { - for (let particle of particles) + for (const particle of particles) particle.destroy(); } }); @@ -177,4 +177,4 @@ export function sin(index: integer, amplitude: integer): number { export function cos(index: integer, amplitude: integer): number { return amplitude * Math.cos(index * (Math.PI / 128)); -} \ No newline at end of file +} diff --git a/src/field/arena.ts b/src/field/arena.ts index 75cc86fcebc..354792e0137 100644 --- a/src/field/arena.ts +++ b/src/field/arena.ts @@ -1,23 +1,23 @@ -import BattleScene from "../battle-scene"; -import { BiomePoolTier, PokemonPools, BiomeTierTrainerPools, biomePokemonPools, biomeTrainerPools } from "../data/biomes"; -import { Biome } from "../data/enums/biome"; -import * as Utils from "../utils"; -import PokemonSpecies, { getPokemonSpecies } from "../data/pokemon-species"; -import { Species } from "../data/enums/species"; -import { Weather, WeatherType, getTerrainClearMessage, getTerrainStartMessage, getWeatherClearMessage, getWeatherStartMessage } from "../data/weather"; -import { CommonAnimPhase, WeatherEffectPhase } from "../phases"; -import { CommonAnim } from "../data/battle-anims"; -import { Type } from "../data/type"; -import Move from "../data/move"; -import { ArenaTag, ArenaTagSide, getArenaTag } from "../data/arena-tag"; -import { ArenaTagType } from "../data/enums/arena-tag-type"; -import { TrainerType } from "../data/enums/trainer-type"; -import { BattlerIndex } from "../battle"; -import { Moves } from "../data/enums/moves"; -import { TimeOfDay } from "../data/enums/time-of-day"; -import { Terrain, TerrainType } from "../data/terrain"; -import { PostTerrainChangeAbAttr, PostWeatherChangeAbAttr, applyPostTerrainChangeAbAttrs, applyPostWeatherChangeAbAttrs } from "../data/ability"; -import Pokemon from "./pokemon"; +import BattleScene from '../battle-scene'; +import { BiomePoolTier, PokemonPools, BiomeTierTrainerPools, biomePokemonPools, biomeTrainerPools } from '../data/biomes'; +import { Biome } from '../data/enums/biome'; +import * as Utils from '../utils'; +import PokemonSpecies, { getPokemonSpecies } from '../data/pokemon-species'; +import { Species } from '../data/enums/species'; +import { Weather, WeatherType, getTerrainClearMessage, getTerrainStartMessage, getWeatherClearMessage, getWeatherStartMessage } from '../data/weather'; +import { CommonAnimPhase, WeatherEffectPhase } from '../phases'; +import { CommonAnim } from '../data/battle-anims'; +import { Type } from '../data/type'; +import Move from '../data/move'; +import { ArenaTag, ArenaTagSide, getArenaTag } from '../data/arena-tag'; +import { ArenaTagType } from '../data/enums/arena-tag-type'; +import { TrainerType } from '../data/enums/trainer-type'; +import { BattlerIndex } from '../battle'; +import { Moves } from '../data/enums/moves'; +import { TimeOfDay } from '../data/enums/time-of-day'; +import { Terrain, TerrainType } from '../data/terrain'; +import { PostTerrainChangeAbAttr, PostWeatherChangeAbAttr, applyPostTerrainChangeAbAttrs, applyPostWeatherChangeAbAttrs } from '../data/ability'; +import Pokemon from './pokemon'; import * as Overrides from '../overrides'; export class Arena { @@ -58,7 +58,7 @@ export class Arena { const timeOfDay = this.getTimeOfDay(); if (timeOfDay !== this.lastTimeOfDay) { this.pokemonPool = {}; - for (let tier of Object.keys(biomePokemonPools[this.biomeType])) + for (const tier of Object.keys(biomePokemonPools[this.biomeType])) this.pokemonPool[tier] = Object.assign([], biomePokemonPools[this.biomeType][tier][TimeOfDay.ALL]).concat(biomePokemonPools[this.biomeType][tier][timeOfDay]); this.lastTimeOfDay = timeOfDay; } @@ -108,18 +108,18 @@ export class Arena { if (ret.subLegendary || ret.legendary || ret.mythical) { switch (true) { - case (ret.baseTotal >= 720): - regen = level < 90; - break; - case (ret.baseTotal >= 670): - regen = level < 70; - break; - case (ret.baseTotal >= 580): - regen = level < 50; - break; - default: - regen = level < 30; - break; + case (ret.baseTotal >= 720): + regen = level < 90; + break; + case (ret.baseTotal >= 670): + regen = level < 70; + break; + case (ret.baseTotal >= 580): + regen = level < 50; + break; + default: + regen = level < 30; + break; } } } @@ -140,7 +140,7 @@ export class Arena { randomTrainerType(waveIndex: integer): TrainerType { const isBoss = !!this.trainerPool[BiomePoolTier.BOSS].length && this.scene.gameMode.isTrainerBoss(waveIndex, this.biomeType, this.scene.offsetGym); - console.log(isBoss, this.trainerPool) + console.log(isBoss, this.trainerPool); const tierValue = Utils.randSeedInt(!isBoss ? 512 : 64); let tier = !isBoss ? tierValue >= 156 ? BiomePoolTier.COMMON : tierValue >= 32 ? BiomePoolTier.UNCOMMON : tierValue >= 6 ? BiomePoolTier.RARE : tierValue >= 1 ? BiomePoolTier.SUPER_RARE : BiomePoolTier.ULTRA_RARE @@ -156,41 +156,41 @@ export class Arena { getSpeciesFormIndex(species: PokemonSpecies): integer { switch (species.speciesId) { - case Species.BURMY: - case Species.WORMADAM: - switch (this.biomeType) { - case Biome.BEACH: - return 1; - case Biome.SLUM: - return 2; - } - break; - case Species.ROTOM: - switch (this.biomeType) { - case Biome.VOLCANO: - return 1; - case Biome.SEA: - return 2; - case Biome.ICE_CAVE: - return 3; - case Biome.MOUNTAIN: - return 4; - case Biome.TALL_GRASS: - return 5; - } - break; - case Species.LYCANROC: - const timeOfDay = this.getTimeOfDay(); - switch (timeOfDay) { - case TimeOfDay.DAY: - case TimeOfDay.DAWN: - return 0; - case TimeOfDay.DUSK: - return 2; - case TimeOfDay.NIGHT: - return 1; - } - break; + case Species.BURMY: + case Species.WORMADAM: + switch (this.biomeType) { + case Biome.BEACH: + return 1; + case Biome.SLUM: + return 2; + } + break; + case Species.ROTOM: + switch (this.biomeType) { + case Biome.VOLCANO: + return 1; + case Biome.SEA: + return 2; + case Biome.ICE_CAVE: + return 3; + case Biome.MOUNTAIN: + return 4; + case Biome.TALL_GRASS: + return 5; + } + break; + case Species.LYCANROC: + const timeOfDay = this.getTimeOfDay(); + switch (timeOfDay) { + case TimeOfDay.DAY: + case TimeOfDay.DAWN: + return 0; + case TimeOfDay.DUSK: + return 2; + case TimeOfDay.NIGHT: + return 1; + } + break; } return 0; @@ -198,70 +198,70 @@ export class Arena { getTypeForBiome() { switch (this.biomeType) { - case Biome.TOWN: - case Biome.PLAINS: - case Biome.METROPOLIS: - return Type.NORMAL; - case Biome.GRASS: - case Biome.TALL_GRASS: - return Type.GRASS; - case Biome.FOREST: - case Biome.JUNGLE: - return Type.BUG; - case Biome.SLUM: - case Biome.SWAMP: - return Type.POISON; - case Biome.SEA: - case Biome.BEACH: - case Biome.LAKE: - case Biome.SEABED: - return Type.WATER; - case Biome.MOUNTAIN: - return Type.FLYING; - case Biome.BADLANDS: - return Type.GROUND; - case Biome.CAVE: - case Biome.DESERT: - return Type.ROCK; - case Biome.ICE_CAVE: - case Biome.SNOWY_FOREST: - return Type.ICE; - case Biome.MEADOW: - case Biome.FAIRY_CAVE: - case Biome.ISLAND: - return Type.FAIRY; - case Biome.POWER_PLANT: - return Type.ELECTRIC; - case Biome.VOLCANO: - return Type.FIRE; - case Biome.GRAVEYARD: - case Biome.TEMPLE: - return Type.GHOST; - case Biome.DOJO: - case Biome.CONSTRUCTION_SITE: - return Type.FIGHTING; - case Biome.FACTORY: - case Biome.LABORATORY: - return Type.STEEL; - case Biome.RUINS: - case Biome.SPACE: - return Type.PSYCHIC; - case Biome.WASTELAND: - case Biome.END: - return Type.DRAGON; - case Biome.ABYSS: - return Type.DARK; - default: - return Type.UNKNOWN; + case Biome.TOWN: + case Biome.PLAINS: + case Biome.METROPOLIS: + return Type.NORMAL; + case Biome.GRASS: + case Biome.TALL_GRASS: + return Type.GRASS; + case Biome.FOREST: + case Biome.JUNGLE: + return Type.BUG; + case Biome.SLUM: + case Biome.SWAMP: + return Type.POISON; + case Biome.SEA: + case Biome.BEACH: + case Biome.LAKE: + case Biome.SEABED: + return Type.WATER; + case Biome.MOUNTAIN: + return Type.FLYING; + case Biome.BADLANDS: + return Type.GROUND; + case Biome.CAVE: + case Biome.DESERT: + return Type.ROCK; + case Biome.ICE_CAVE: + case Biome.SNOWY_FOREST: + return Type.ICE; + case Biome.MEADOW: + case Biome.FAIRY_CAVE: + case Biome.ISLAND: + return Type.FAIRY; + case Biome.POWER_PLANT: + return Type.ELECTRIC; + case Biome.VOLCANO: + return Type.FIRE; + case Biome.GRAVEYARD: + case Biome.TEMPLE: + return Type.GHOST; + case Biome.DOJO: + case Biome.CONSTRUCTION_SITE: + return Type.FIGHTING; + case Biome.FACTORY: + case Biome.LABORATORY: + return Type.STEEL; + case Biome.RUINS: + case Biome.SPACE: + return Type.PSYCHIC; + case Biome.WASTELAND: + case Biome.END: + return Type.DRAGON; + case Biome.ABYSS: + return Type.DARK; + default: + return Type.UNKNOWN; } } getBgTerrainColorRatioForBiome(): number { switch (this.biomeType) { - case Biome.SPACE: - return 1; - case Biome.END: - return 0; + case Biome.SPACE: + return 1; + case Biome.END: + return 0; } return 131 / 180; @@ -276,7 +276,7 @@ export class Arena { this.weather = new Weather(weather, 0); this.scene.unshiftPhase(new CommonAnimPhase(this.scene, undefined, undefined, CommonAnim.SUNNY + (weather - 1))); this.scene.queueMessage(getWeatherStartMessage(weather)); - return true + return true; } /** @@ -362,52 +362,52 @@ export class Arena { getTrainerChance(): integer { switch (this.biomeType) { - case Biome.METROPOLIS: - return 2; - case Biome.SLUM: - case Biome.BEACH: - case Biome.DOJO: - case Biome.CONSTRUCTION_SITE: - return 4; - case Biome.PLAINS: - case Biome.GRASS: - case Biome.LAKE: - case Biome.CAVE: - return 6; - case Biome.TALL_GRASS: - case Biome.FOREST: - case Biome.SEA: - case Biome.SWAMP: - case Biome.MOUNTAIN: - case Biome.BADLANDS: - case Biome.DESERT: - case Biome.MEADOW: - case Biome.POWER_PLANT: - case Biome.GRAVEYARD: - case Biome.FACTORY: - case Biome.SNOWY_FOREST: - return 8; - case Biome.ICE_CAVE: - case Biome.VOLCANO: - case Biome.RUINS: - case Biome.WASTELAND: - case Biome.JUNGLE: - case Biome.FAIRY_CAVE: - return 12; - case Biome.SEABED: - case Biome.ABYSS: - case Biome.SPACE: - case Biome.TEMPLE: - return 16; - default: - return 0; + case Biome.METROPOLIS: + return 2; + case Biome.SLUM: + case Biome.BEACH: + case Biome.DOJO: + case Biome.CONSTRUCTION_SITE: + return 4; + case Biome.PLAINS: + case Biome.GRASS: + case Biome.LAKE: + case Biome.CAVE: + return 6; + case Biome.TALL_GRASS: + case Biome.FOREST: + case Biome.SEA: + case Biome.SWAMP: + case Biome.MOUNTAIN: + case Biome.BADLANDS: + case Biome.DESERT: + case Biome.MEADOW: + case Biome.POWER_PLANT: + case Biome.GRAVEYARD: + case Biome.FACTORY: + case Biome.SNOWY_FOREST: + return 8; + case Biome.ICE_CAVE: + case Biome.VOLCANO: + case Biome.RUINS: + case Biome.WASTELAND: + case Biome.JUNGLE: + case Biome.FAIRY_CAVE: + return 12; + case Biome.SEABED: + case Biome.ABYSS: + case Biome.SPACE: + case Biome.TEMPLE: + return 16; + default: + return 0; } } getTimeOfDay(): TimeOfDay { switch (this.biomeType) { - case Biome.ABYSS: - return TimeOfDay.NIGHT; + case Biome.ABYSS: + return TimeOfDay.NIGHT; } const waveCycle = ((this.scene.currentBattle?.waveIndex || 0) + this.scene.waveCycleOffset) % 40; @@ -426,28 +426,28 @@ export class Arena { isOutside(): boolean { switch (this.biomeType) { - case Biome.SEABED: - case Biome.CAVE: - case Biome.ICE_CAVE: - case Biome.POWER_PLANT: - case Biome.DOJO: - case Biome.FACTORY: - case Biome.ABYSS: - case Biome.FAIRY_CAVE: - case Biome.TEMPLE: - case Biome.LABORATORY: - return false; - default: - return true; + case Biome.SEABED: + case Biome.CAVE: + case Biome.ICE_CAVE: + case Biome.POWER_PLANT: + case Biome.DOJO: + case Biome.FACTORY: + case Biome.ABYSS: + case Biome.FAIRY_CAVE: + case Biome.TEMPLE: + case Biome.LABORATORY: + return false; + default: + return true; } } getDayTint(): [integer, integer, integer] { switch (this.biomeType) { - case Biome.ABYSS: - return [ 64, 64, 64 ]; - default: - return [ 128, 128, 128 ]; + case Biome.ABYSS: + return [ 64, 64, 64 ]; + default: + return [ 128, 128, 128 ]; } } @@ -456,25 +456,25 @@ export class Arena { return [ 0, 0, 0 ]; switch (this.biomeType) { - default: - return [ 98, 48, 73 ].map(c => Math.round((c + 128) / 2)) as [integer, integer, integer]; + default: + return [ 98, 48, 73 ].map(c => Math.round((c + 128) / 2)) as [integer, integer, integer]; } } getNightTint(): [integer, integer, integer] { switch (this.biomeType) { - case Biome.ABYSS: - case Biome.SPACE: - case Biome.END: - return this.getDayTint(); + case Biome.ABYSS: + case Biome.SPACE: + case Biome.END: + return this.getDayTint(); } if (!this.isOutside()) return [ 64, 64, 64 ]; switch (this.biomeType) { - default: - return [ 48, 48, 98 ]; + default: + return [ 48, 48, 98 ]; } } @@ -489,11 +489,11 @@ export class Arena { if (side !== ArenaTagSide.BOTH) tags = tags.filter(t => t.side === side); tags.forEach(t => t.apply(this, args)); - } + } applyTags(tagType: ArenaTagType | { new(...args: any[]): ArenaTag }, ...args: any[]): void { this.applyTagsForSide(tagType, ArenaTagSide.BOTH, ...args); - } + } addTag(tagType: ArenaTagType, turnCount: integer, sourceMove: Moves, sourceId: integer, side: ArenaTagSide = ArenaTagSide.BOTH, targetIndex?: BattlerIndex): boolean { const existingTag = this.getTagOnSide(tagType, side); @@ -567,74 +567,74 @@ export class Arena { getBgmLoopPoint(): number { switch (this.biomeType) { - case Biome.TOWN: - return 7.288; - case Biome.PLAINS: - return 7.693; - case Biome.GRASS: - return 1.995; - case Biome.TALL_GRASS: - return 9.608; - case Biome.METROPOLIS: - return 141.470; - case Biome.FOREST: - return 4.294; - case Biome.SEA: - return 1.672; - case Biome.SWAMP: - return 4.461; - case Biome.BEACH: - return 3.462; - case Biome.LAKE: - return 5.350; - case Biome.SEABED: - return 2.629; - case Biome.MOUNTAIN: - return 4.018; - case Biome.BADLANDS: - return 17.790; - case Biome.CAVE: - return 14.240; - case Biome.DESERT: - return 1.143; - case Biome.ICE_CAVE: - return 15.010; - case Biome.MEADOW: - return 3.891; - case Biome.POWER_PLANT: - return 2.810; - case Biome.VOLCANO: - return 5.116; - case Biome.GRAVEYARD: - return 3.232; - case Biome.DOJO: - return 6.205; - case Biome.FACTORY: - return 4.985; - case Biome.RUINS: - return 2.270; - case Biome.WASTELAND: - return 6.336; - case Biome.ABYSS: - return 5.130; - case Biome.SPACE: - return 21.347; - case Biome.CONSTRUCTION_SITE: - return 1.222; - case Biome.JUNGLE: - return 0.000; - case Biome.FAIRY_CAVE: - return 4.542; - case Biome.TEMPLE: - return 2.547; - case Biome.ISLAND: - return 2.751; - case Biome.LABORATORY: - return 114.862; - case Biome.SLUM: - return 1.221; - case Biome.SNOWY_FOREST: - return 3.047; + case Biome.TOWN: + return 7.288; + case Biome.PLAINS: + return 7.693; + case Biome.GRASS: + return 1.995; + case Biome.TALL_GRASS: + return 9.608; + case Biome.METROPOLIS: + return 141.470; + case Biome.FOREST: + return 4.294; + case Biome.SEA: + return 1.672; + case Biome.SWAMP: + return 4.461; + case Biome.BEACH: + return 3.462; + case Biome.LAKE: + return 5.350; + case Biome.SEABED: + return 2.629; + case Biome.MOUNTAIN: + return 4.018; + case Biome.BADLANDS: + return 17.790; + case Biome.CAVE: + return 14.240; + case Biome.DESERT: + return 1.143; + case Biome.ICE_CAVE: + return 15.010; + case Biome.MEADOW: + return 3.891; + case Biome.POWER_PLANT: + return 2.810; + case Biome.VOLCANO: + return 5.116; + case Biome.GRAVEYARD: + return 3.232; + case Biome.DOJO: + return 6.205; + case Biome.FACTORY: + return 4.985; + case Biome.RUINS: + return 2.270; + case Biome.WASTELAND: + return 6.336; + case Biome.ABYSS: + return 5.130; + case Biome.SPACE: + return 21.347; + case Biome.CONSTRUCTION_SITE: + return 1.222; + case Biome.JUNGLE: + return 0.000; + case Biome.FAIRY_CAVE: + return 4.542; + case Biome.TEMPLE: + return 2.547; + case Biome.ISLAND: + return 2.751; + case Biome.LABORATORY: + return 114.862; + case Biome.SLUM: + return 1.221; + case Biome.SNOWY_FOREST: + return 3.047; } } } @@ -645,32 +645,32 @@ export function getBiomeKey(biome: Biome): string { export function getBiomeHasProps(biomeType: Biome): boolean { switch (biomeType) { - case Biome.METROPOLIS: - case Biome.BEACH: - case Biome.LAKE: - case Biome.SEABED: - case Biome.MOUNTAIN: - case Biome.BADLANDS: - case Biome.CAVE: - case Biome.DESERT: - case Biome.ICE_CAVE: - case Biome.MEADOW: - case Biome.POWER_PLANT: - case Biome.VOLCANO: - case Biome.GRAVEYARD: - case Biome.FACTORY: - case Biome.RUINS: - case Biome.WASTELAND: - case Biome.ABYSS: - case Biome.CONSTRUCTION_SITE: - case Biome.JUNGLE: - case Biome.FAIRY_CAVE: - case Biome.TEMPLE: - case Biome.SNOWY_FOREST: - case Biome.ISLAND: - case Biome.LABORATORY: - case Biome.END: - return true; + case Biome.METROPOLIS: + case Biome.BEACH: + case Biome.LAKE: + case Biome.SEABED: + case Biome.MOUNTAIN: + case Biome.BADLANDS: + case Biome.CAVE: + case Biome.DESERT: + case Biome.ICE_CAVE: + case Biome.MEADOW: + case Biome.POWER_PLANT: + case Biome.VOLCANO: + case Biome.GRAVEYARD: + case Biome.FACTORY: + case Biome.RUINS: + case Biome.WASTELAND: + case Biome.ABYSS: + case Biome.CONSTRUCTION_SITE: + case Biome.JUNGLE: + case Biome.FAIRY_CAVE: + case Biome.TEMPLE: + case Biome.SNOWY_FOREST: + case Biome.ISLAND: + case Biome.LABORATORY: + case Biome.END: + return true; } return false; @@ -709,7 +709,7 @@ export class ArenaBase extends Phaser.GameObjects.Container { this.base.setTexture(baseKey); if (this.base.texture.frameTotal > 1) { - const baseFrameNames = this.scene.anims.generateFrameNames(baseKey, { zeroPad: 4, suffix: ".png", start: 1, end: this.base.texture.frameTotal - 1 }); + const baseFrameNames = this.scene.anims.generateFrameNames(baseKey, { zeroPad: 4, suffix: '.png', start: 1, end: this.base.texture.frameTotal - 1 }); this.scene.anims.create({ key: baseKey, frames: baseFrameNames, @@ -733,7 +733,7 @@ export class ArenaBase extends Phaser.GameObjects.Container { prop.setTexture(propKey); if (hasProps && prop.texture.frameTotal > 1) { - const propFrameNames = this.scene.anims.generateFrameNames(propKey, { zeroPad: 4, suffix: ".png", start: 1, end: prop.texture.frameTotal - 1 }); + const propFrameNames = this.scene.anims.generateFrameNames(propKey, { zeroPad: 4, suffix: '.png', start: 1, end: prop.texture.frameTotal - 1 }); this.scene.anims.create({ key: propKey, frames: propFrameNames, @@ -750,4 +750,4 @@ export class ArenaBase extends Phaser.GameObjects.Container { }, (this.scene as BattleScene).currentBattle?.waveIndex || 0, (this.scene as BattleScene).waveSeed); } } -} \ No newline at end of file +} diff --git a/src/field/damage-number-handler.ts b/src/field/damage-number-handler.ts index 262ff8863d0..1735261ef0e 100644 --- a/src/field/damage-number-handler.ts +++ b/src/field/damage-number-handler.ts @@ -1,7 +1,7 @@ -import { TextStyle, addTextObject } from "../ui/text"; -import Pokemon, { DamageResult, HitResult } from "./pokemon"; -import * as Utils from "../utils"; -import { BattlerIndex } from "../battle"; +import { TextStyle, addTextObject } from '../ui/text'; +import Pokemon, { DamageResult, HitResult } from './pokemon'; +import * as Utils from '../utils'; +import { BattlerIndex } from '../battle'; export default class DamageNumberHandler { private damageNumbers: Map; @@ -25,21 +25,21 @@ export default class DamageNumberHandler { let [ textColor, shadowColor ] = [ null, null ]; switch (result) { - case HitResult.SUPER_EFFECTIVE: - [ textColor, shadowColor ] = [ '#f8d030', '#b8a038' ]; - break; - case HitResult.NOT_VERY_EFFECTIVE: - [ textColor, shadowColor ] = [ '#f08030', '#c03028' ]; - break; - case HitResult.ONE_HIT_KO: - [ textColor, shadowColor ] = [ '#a040a0', '#483850' ]; - break; - case HitResult.HEAL: - [ textColor, shadowColor ] = [ '#78c850', '#588040' ]; - break; - default: - [ textColor, shadowColor ] = [ '#ffffff', '#636363' ]; - break; + case HitResult.SUPER_EFFECTIVE: + [ textColor, shadowColor ] = [ '#f8d030', '#b8a038' ]; + break; + case HitResult.NOT_VERY_EFFECTIVE: + [ textColor, shadowColor ] = [ '#f08030', '#c03028' ]; + break; + case HitResult.ONE_HIT_KO: + [ textColor, shadowColor ] = [ '#a040a0', '#483850' ]; + break; + case HitResult.HEAL: + [ textColor, shadowColor ] = [ '#78c850', '#588040' ]; + break; + default: + [ textColor, shadowColor ] = [ '#ffffff', '#636363' ]; + break; } if (textColor) @@ -168,4 +168,4 @@ export default class DamageNumberHandler { ] }); } -} \ No newline at end of file +} diff --git a/src/field/pokemon-sprite-sparkle-handler.ts b/src/field/pokemon-sprite-sparkle-handler.ts index 5ae54f2d2c1..f1491b370cd 100644 --- a/src/field/pokemon-sprite-sparkle-handler.ts +++ b/src/field/pokemon-sprite-sparkle-handler.ts @@ -1,6 +1,6 @@ -import BattleScene from "../battle-scene"; -import Pokemon from "./pokemon"; -import * as Utils from "../utils"; +import BattleScene from '../battle-scene'; +import Pokemon from './pokemon'; +import * as Utils from '../utils'; export default class PokemonSpriteSparkleHandler { private sprites: Set; @@ -20,7 +20,7 @@ export default class PokemonSpriteSparkleHandler { onLapse(): void { Array.from(this.sprites.values()).filter(s => !s.scene).map(s => this.sprites.delete(s)); - for (let s of this.sprites.values()) { + for (const s of this.sprites.values()) { if (!s.pipelineData['teraColor'] || !(s.pipelineData['teraColor'] as number[]).find(c => c)) continue; if (!s.visible || (s.parentContainer instanceof Pokemon && !s.parentContainer.parentContainer)) @@ -47,7 +47,7 @@ export default class PokemonSpriteSparkleHandler { add(sprites: Phaser.GameObjects.Sprite | Phaser.GameObjects.Sprite[]): void { if (!Array.isArray(sprites)) sprites = [ sprites ]; - for (let s of sprites) { + for (const s of sprites) { if (this.sprites.has(s)) continue; this.sprites.add(s); @@ -57,13 +57,13 @@ export default class PokemonSpriteSparkleHandler { remove(sprites: Phaser.GameObjects.Sprite | Phaser.GameObjects.Sprite[]): void { if (!Array.isArray(sprites)) sprites = [ sprites ]; - for (let s of sprites) { + for (const s of sprites) { this.sprites.delete(s); } } removeAll(): void { - for (let s of this.sprites.values()) + for (const s of this.sprites.values()) this.sprites.delete(s); } -} \ No newline at end of file +} diff --git a/src/field/pokemon.ts b/src/field/pokemon.ts index abce327a645..81be09d2b5b 100644 --- a/src/field/pokemon.ts +++ b/src/field/pokemon.ts @@ -3,8 +3,8 @@ import BattleScene, { AnySound } from '../battle-scene'; import { Variant, VariantSet, variantColorCache } from '#app/data/variant'; import { variantData } from '#app/data/variant'; import BattleInfo, { PlayerBattleInfo, EnemyBattleInfo } from '../ui/battle-info'; -import { Moves } from "../data/enums/moves"; -import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr, VariableMoveTypeAttr, VariableMoveCategoryAttr, CounterDamageAttr, StatChangeAttr, RechargeAttr, ChargeAttr, IgnoreWeatherTypeDebuffAttr, BypassBurnDamageReductionAttr, SacrificialAttrOnHit } from "../data/move"; +import { Moves } from '../data/enums/moves'; +import Move, { HighCritAttr, HitsTagAttr, applyMoveAttrs, FixedDamageAttr, VariableAtkAttr, VariablePowerAttr, allMoves, MoveCategory, TypelessAttr, CritOnlyAttr, getMoveTargets, OneHitKOAttr, MultiHitAttr, StatusMoveTypeImmunityAttr, MoveTarget, VariableDefAttr, AttackMove, ModifiedDamageAttr, VariableMoveTypeMultiplierAttr, IgnoreOpponentStatChangesAttr, SacrificialAttr, VariableMoveTypeAttr, VariableMoveCategoryAttr, CounterDamageAttr, StatChangeAttr, RechargeAttr, ChargeAttr, IgnoreWeatherTypeDebuffAttr, BypassBurnDamageReductionAttr, SacrificialAttrOnHit } from '../data/move'; import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from '../data/pokemon-species'; import * as Utils from '../utils'; import { Type, TypeDamageMultiplier, getTypeDamageMultiplier, getTypeRgb } from '../data/type'; @@ -20,18 +20,18 @@ import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from '../data/tms'; import { DamagePhase, FaintPhase, LearnMovePhase, ObtainStatusEffectPhase, StatChangePhase, SwitchPhase, SwitchSummonPhase, ToggleDoublePositionPhase } from '../phases'; import { BattleStat } from '../data/battle-stat'; import { BattlerTag, BattlerTagLapseType, EncoreTag, HelpingHandTag, HighestStatBoostTag, TypeBoostTag, getBattlerTag } from '../data/battler-tags'; -import { BattlerTagType } from "../data/enums/battler-tag-type"; +import { BattlerTagType } from '../data/enums/battler-tag-type'; import { Species } from '../data/enums/species'; import { WeatherType } from '../data/weather'; import { TempBattleStat } from '../data/temp-battle-stat'; import { ArenaTagSide, WeakenMoveScreenTag, WeakenMoveTypeTag } from '../data/arena-tag'; -import { ArenaTagType } from "../data/enums/arena-tag-type"; -import { Biome } from "../data/enums/biome"; +import { ArenaTagType } from '../data/enums/arena-tag-type'; +import { Biome } from '../data/enums/biome'; import { Ability, AbAttr, BattleStatMultiplierAbAttr, BlockCritAbAttr, BonusCritAbAttr, BypassBurnDamageReductionAbAttr, FieldPriorityMoveImmunityAbAttr, FieldVariableMovePowerAbAttr, IgnoreOpponentStatChangesAbAttr, MoveImmunityAbAttr, MoveTypeChangeAttr, NonSuperEffectiveImmunityAbAttr, PreApplyBattlerTagAbAttr, PreDefendFullHpEndureAbAttr, ReceivedMoveDamageMultiplierAbAttr, ReduceStatusEffectDurationAbAttr, StabBoostAbAttr, StatusEffectImmunityAbAttr, TypeImmunityAbAttr, VariableMovePowerAbAttr, VariableMoveTypeAbAttr, WeightMultiplierAbAttr, allAbilities, applyAbAttrs, applyBattleStatMultiplierAbAttrs, applyPostDefendAbAttrs, applyPreApplyBattlerTagAbAttrs, applyPreAttackAbAttrs, applyPreDefendAbAttrs, applyPreSetStatusAbAttrs, UnsuppressableAbilityAbAttr, SuppressFieldAbilitiesAbAttr, NoFusionAbilityAbAttr, MultCritAbAttr, IgnoreTypeImmunityAbAttr, DamageBoostAbAttr, IgnoreTypeStatusEffectImmunityAbAttr, ConditionalCritAbAttr } from '../data/ability'; -import { Abilities } from "#app/data/enums/abilities"; +import { Abilities } from '#app/data/enums/abilities'; import PokemonData from '../system/pokemon-data'; import Battle, { BattlerIndex } from '../battle'; -import { BattleSpec } from "../enums/battle-spec"; +import { BattleSpec } from '../enums/battle-spec'; import { Mode } from '../ui/ui'; import PartyUiHandler, { PartyOption, PartyUiMode } from '../ui/party-ui-handler'; import SoundFade from 'phaser3-rex-plugins/plugins/soundfade'; @@ -301,7 +301,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const originalWarn = console.warn; // Ignore warnings for missing frames, because there will be a lot console.warn = () => {}; - const battleFrameNames = this.scene.anims.generateFrameNames(this.getBattleSpriteKey(), { zeroPad: 4, suffix: ".png", start: 1, end: 400 }); + const battleFrameNames = this.scene.anims.generateFrameNames(this.getBattleSpriteKey(), { zeroPad: 4, suffix: '.png', start: 1, end: 400 }); console.warn = originalWarn; this.scene.anims.create({ key: this.getBattleSpriteKey(), @@ -336,11 +336,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { console.error(`Could not load ${res.url}!`); return; } - return res.json() + return res.json(); }).then(c => { - variantColorCache[key] = c; - resolve(); - }); + variantColorCache[key] = c; + resolve(); + }); } else resolve(); }); @@ -471,7 +471,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!this.scene) return []; return this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === this.id, this.isPlayer()) as PokemonHeldItemModifier[]; - } + } updateScale(): void { this.setScale(this.getSpriteScale()); @@ -530,12 +530,12 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getFieldPositionOffset(): [ number, number ] { switch (this.fieldPosition) { - case FieldPosition.CENTER: - return [ 0, 0 ]; - case FieldPosition.LEFT: - return [ -32, -8 ]; - case FieldPosition.RIGHT: - return [ 32, 0 ]; + case FieldPosition.CENTER: + return [ 0, 0 ]; + case FieldPosition.LEFT: + return [ -32, -8 ]; + case FieldPosition.RIGHT: + return [ 32, 0 ]; } } @@ -555,8 +555,8 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const newOffset = this.getFieldPositionOffset(); - let relX = newOffset[0] - initialOffset[0]; - let relY = newOffset[1] - initialOffset[1]; + const relX = newOffset[0] - initialOffset[0]; + const relY = newOffset[1] - initialOffset[1]; if (duration) { this.scene.tweens.add({ @@ -586,14 +586,14 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (opponent) { if (isCritical) { switch (stat) { - case Stat.ATK: - case Stat.SPATK: - statLevel.value = Math.max(statLevel.value, 0); - break; - case Stat.DEF: - case Stat.SPDEF: - statLevel.value = Math.min(statLevel.value, 0); - break; + case Stat.ATK: + case Stat.SPATK: + statLevel.value = Math.max(statLevel.value, 0); + break; + case Stat.DEF: + case Stat.SPDEF: + statLevel.value = Math.min(statLevel.value, 0); + break; } } applyAbAttrs(IgnoreOpponentStatChangesAbAttr, opponent, null, statLevel); @@ -606,31 +606,31 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { applyBattleStatMultiplierAbAttrs(BattleStatMultiplierAbAttr, this, battleStat, statValue); let ret = statValue.value * (Math.max(2, 2 + statLevel.value) / Math.max(2, 2 - statLevel.value)); switch (stat) { - case Stat.ATK: - if (this.getTag(BattlerTagType.SLOW_START)) - ret >>= 1; - break; - case Stat.DEF: - if (this.isOfType(Type.ICE) && this.scene.arena.weather?.weatherType === WeatherType.SNOW) - ret *= 1.5; - break; - case Stat.SPATK: - break; - case Stat.SPDEF: - if (this.isOfType(Type.ROCK) && this.scene.arena.weather?.weatherType === WeatherType.SANDSTORM) - ret *= 1.5; - break; - case Stat.SPD: - // Check both the player and enemy to see if Tailwind should be multiplying the speed of the Pokemon - if ((this.isPlayer() && this.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.PLAYER)) + case Stat.ATK: + if (this.getTag(BattlerTagType.SLOW_START)) + ret >>= 1; + break; + case Stat.DEF: + if (this.isOfType(Type.ICE) && this.scene.arena.weather?.weatherType === WeatherType.SNOW) + ret *= 1.5; + break; + case Stat.SPATK: + break; + case Stat.SPDEF: + if (this.isOfType(Type.ROCK) && this.scene.arena.weather?.weatherType === WeatherType.SANDSTORM) + ret *= 1.5; + break; + case Stat.SPD: + // Check both the player and enemy to see if Tailwind should be multiplying the speed of the Pokemon + if ((this.isPlayer() && this.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.PLAYER)) || (!this.isPlayer() && this.scene.arena.getTagOnSide(ArenaTagType.TAILWIND, ArenaTagSide.ENEMY))) - ret *= 2; + ret *= 2; - if (this.getTag(BattlerTagType.SLOW_START)) - ret >>= 1; - if (this.status && this.status.effect === StatusEffect.PARALYSIS) - ret >>= 1; - break; + if (this.getTag(BattlerTagType.SLOW_START)) + ret >>= 1; + if (this.status && this.status.effect === StatusEffect.PARALYSIS) + ret >>= 1; + break; } const highestStatBoost = this.findTag(t => t instanceof HighestStatBoostTag && (t as HighestStatBoostTag).stat === stat) as HighestStatBoostTag; @@ -654,9 +654,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } this.scene.applyModifiers(PokemonBaseStatModifier, this.isPlayer(), this, baseStats); const stats = Utils.getEnumValues(Stat); - for (let s of stats) { + for (const s of stats) { const isHp = s === Stat.HP; - let baseStat = baseStats[s]; + const baseStat = baseStats[s]; let value = Math.floor(((2 * baseStat + this.ivs[s]) * this.level) * 0.01); if (isHp) { value = value + this.level + 10; @@ -762,7 +762,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (overrideArray.length > 0) { overrideArray.forEach((move: Moves, index: number) => { const ppUsed = this.moveset[index]?.ppUsed || 0; - this.moveset[index] = new PokemonMove(move, Math.min(ppUsed, allMoves[move].pp)) + this.moveset[index] = new PokemonMove(move, Math.min(ppUsed, allMoves[move].pp)); }); } @@ -815,7 +815,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (types.length > 1 && types.includes(Type.UNKNOWN)) { // remove UNKNOWN if other types are present const index = types.indexOf(Type.UNKNOWN); if (index !== -1) { - types.splice(index, 1); + types.splice(index, 1); } } @@ -1025,7 +1025,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { getEvolution(): SpeciesFormEvolution { if (pokemonEvolutions.hasOwnProperty(this.species.speciesId)) { const evolutions = pokemonEvolutions[this.species.speciesId]; - for (let e of evolutions) { + for (const e of evolutions) { if (!e.item && this.level >= e.level && (!e.preFormKey || this.getFormKey() === e.preFormKey)) { if (e.condition === null || (e.condition as SpeciesEvolutionCondition).predicate(this)) return e; @@ -1035,7 +1035,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.isFusion() && pokemonEvolutions.hasOwnProperty(this.fusionSpecies.speciesId)) { const fusionEvolutions = pokemonEvolutions[this.fusionSpecies.speciesId].map(e => new FusionSpeciesFormEvolution(this.species.speciesId, e)); - for (let fe of fusionEvolutions) { + for (const fe of fusionEvolutions) { if (!fe.item && this.level >= fe.level && (!fe.preFormKey || this.getFusionFormKey() === fe.preFormKey)) { if (fe.condition === null || (fe.condition as SpeciesEvolutionCondition).predicate(this)) return fe; @@ -1077,7 +1077,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { while (fusionLevelMoves.length && fusionLevelMoves[0][0] < startingLevel) fusionLevelMoves.shift(); if (includeEvolutionMoves) { - for (let elm of evolutionLevelMoves.reverse()) + for (const elm of evolutionLevelMoves.reverse()) levelMoves.unshift(elm); } for (let l = includeEvolutionMoves ? 0 : startingLevel; l <= this.level; l++) { @@ -1097,7 +1097,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { levelMoves = newLevelMoves; } if (levelMoves) { - for (let lm of levelMoves) { + for (const lm of levelMoves) { const level = lm[0]; if ((!includeEvolutionMoves || level) && level < startingLevel) continue; @@ -1124,7 +1124,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const E = this.scene.gameData.trainerId ^ this.scene.gameData.secretId; const F = rand1 ^ rand2; - let shinyThreshold = new Utils.IntegerHolder(32); + const shinyThreshold = new Utils.IntegerHolder(32); if (thresholdOverride === undefined) { if (!this.hasTrainer()) { if (new Date() < new Date(Date.UTC(2024, 4, 22, 0))) @@ -1164,15 +1164,15 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const randAbilityIndex = Utils.randSeedInt(2); const filter = !forStarter ? this.species.getCompatibleFusionSpeciesFilter() - : species => { - return pokemonEvolutions.hasOwnProperty(species.speciesId) + : species => { + return pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && !species.pseudoLegendary && !species.legendary && !species.mythical && !species.isTrainerForbidden() - && species.speciesId !== this.species.speciesId - }; + && species.speciesId !== this.species.speciesId; + }; this.fusionSpecies = this.scene.randomSpecies(this.scene.currentBattle?.waveIndex || 0, this.level, false, filter, true); this.fusionAbilityIndex = (this.fusionSpecies.abilityHidden && hasHiddenAbility ? this.fusionSpecies.ability2 ? 2 : 1 : this.fusionSpecies.ability2 ? randAbilityIndex : 0); @@ -1234,10 +1234,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.hasTrainer()) { const tms = Object.keys(tmSpecies); - for (let tm of tms) { + for (const tm of tms) { const moveId = parseInt(tm) as Moves; let compatible = false; - for (let p of tmSpecies[tm]) { + for (const p of tmSpecies[tm]) { if (Array.isArray(p)) { if (p[0] === this.species.speciesId || (this.fusionSpecies && p[0] === this.fusionSpecies.speciesId) && p.slice(1).indexOf(this.species.forms[this.formIndex]) > -1) { compatible = true; @@ -1282,7 +1282,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (this.isBoss()) // Bosses never get self ko moves movePool = movePool.filter(m => !allMoves[m[0]].getAttrs(SacrificialAttr).length); - movePool = movePool.filter(m => !allMoves[m[0]].getAttrs(SacrificialAttrOnHit).length); + movePool = movePool.filter(m => !allMoves[m[0]].getAttrs(SacrificialAttrOnHit).length); if (this.hasTrainer()) { // Trainers never get OHKO moves movePool = movePool.filter(m => !allMoves[m[0]].getAttrs(OneHitKOAttr).length); @@ -1450,7 +1450,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { apply(source: Pokemon, battlerMove: PokemonMove): HitResult { let result: HitResult; const move = battlerMove.getMove(); - let damage = new Utils.NumberHolder(0); + const damage = new Utils.NumberHolder(0); const defendingSidePlayField = this.isPlayer() ? this.scene.getPlayerField() : this.scene.getEnemyField(); const variableCategory = new Utils.IntegerHolder(move.category); @@ -1478,232 +1478,232 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { typeMultiplier.value = 0; switch (moveCategory) { - case MoveCategory.PHYSICAL: - case MoveCategory.SPECIAL: - const isPhysical = moveCategory === MoveCategory.PHYSICAL; - const power = new Utils.NumberHolder(move.power); - const sourceTeraType = source.getTeraType(); - if (sourceTeraType !== Type.UNKNOWN && sourceTeraType === type && power.value < 60 && move.priority <= 0 && !move.getAttrs(MultiHitAttr).length && !this.scene.findModifier(m => m instanceof PokemonMultiHitModifier && m.pokemonId === source.id)) - power.value = 60; - applyPreAttackAbAttrs(VariableMovePowerAbAttr, source, this, battlerMove, power); - this.scene.getField(true).map(p => applyPreAttackAbAttrs(FieldVariableMovePowerAbAttr, this, source, battlerMove, power)); + case MoveCategory.PHYSICAL: + case MoveCategory.SPECIAL: + const isPhysical = moveCategory === MoveCategory.PHYSICAL; + const power = new Utils.NumberHolder(move.power); + const sourceTeraType = source.getTeraType(); + if (sourceTeraType !== Type.UNKNOWN && sourceTeraType === type && power.value < 60 && move.priority <= 0 && !move.getAttrs(MultiHitAttr).length && !this.scene.findModifier(m => m instanceof PokemonMultiHitModifier && m.pokemonId === source.id)) + power.value = 60; + applyPreAttackAbAttrs(VariableMovePowerAbAttr, source, this, battlerMove, power); + this.scene.getField(true).map(p => applyPreAttackAbAttrs(FieldVariableMovePowerAbAttr, this, source, battlerMove, power)); - applyPreDefendAbAttrs(ReceivedMoveDamageMultiplierAbAttr, this, source, battlerMove, cancelled, power); + applyPreDefendAbAttrs(ReceivedMoveDamageMultiplierAbAttr, this, source, battlerMove, cancelled, power); - power.value *= typeChangeMovePowerMultiplier.value; + power.value *= typeChangeMovePowerMultiplier.value; - if (!typeless) - applyPreDefendAbAttrs(TypeImmunityAbAttr, this, source, battlerMove, cancelled, typeMultiplier); - if (!cancelled.value) { - applyPreDefendAbAttrs(MoveImmunityAbAttr, this, source, battlerMove, cancelled, typeMultiplier); - defendingSidePlayField.forEach((p) => applyPreDefendAbAttrs(FieldPriorityMoveImmunityAbAttr, p, source, battlerMove, cancelled, typeMultiplier)); + if (!typeless) + applyPreDefendAbAttrs(TypeImmunityAbAttr, this, source, battlerMove, cancelled, typeMultiplier); + if (!cancelled.value) { + applyPreDefendAbAttrs(MoveImmunityAbAttr, this, source, battlerMove, cancelled, typeMultiplier); + defendingSidePlayField.forEach((p) => applyPreDefendAbAttrs(FieldPriorityMoveImmunityAbAttr, p, source, battlerMove, cancelled, typeMultiplier)); + } + + if (cancelled.value) + result = HitResult.NO_EFFECT; + else { + const typeBoost = source.findTag(t => t instanceof TypeBoostTag && (t as TypeBoostTag).boostedType === type) as TypeBoostTag; + if (typeBoost) { + power.value *= typeBoost.boostValue; + if (typeBoost.oneUse) { + source.removeTag(typeBoost.tagType); + } } - - if (cancelled.value) - result = HitResult.NO_EFFECT; + const arenaAttackTypeMultiplier = new Utils.NumberHolder(this.scene.arena.getAttackTypeMultiplier(type, source.isGrounded())); + applyMoveAttrs(IgnoreWeatherTypeDebuffAttr, source, this, move, arenaAttackTypeMultiplier); + if (this.scene.arena.getTerrainType() === TerrainType.GRASSY && this.isGrounded() && type === Type.GROUND && move.moveTarget === MoveTarget.ALL_NEAR_OTHERS) + power.value /= 2; + applyMoveAttrs(VariablePowerAttr, source, this, move, power); + this.scene.applyModifiers(PokemonMultiHitModifier, source.isPlayer(), source, new Utils.IntegerHolder(0), power); + if (!typeless) { + this.scene.arena.applyTags(WeakenMoveTypeTag, type, power); + this.scene.applyModifiers(AttackTypeBoosterModifier, source.isPlayer(), source, type, power); + } + if (source.getTag(HelpingHandTag)) + power.value *= 1.5; + let isCritical: boolean; + const critOnly = new Utils.BooleanHolder(false); + const critAlways = source.getTag(BattlerTagType.ALWAYS_CRIT); + applyMoveAttrs(CritOnlyAttr, source, this, move, critOnly); + applyAbAttrs(ConditionalCritAbAttr, source, null, critOnly, this, move); + if (critOnly.value || critAlways) + isCritical = true; else { - let typeBoost = source.findTag(t => t instanceof TypeBoostTag && (t as TypeBoostTag).boostedType === type) as TypeBoostTag; - if (typeBoost) { - power.value *= typeBoost.boostValue; - if (typeBoost.oneUse) { - source.removeTag(typeBoost.tagType); + const critLevel = new Utils.IntegerHolder(0); + applyMoveAttrs(HighCritAttr, source, this, move, critLevel); + this.scene.applyModifiers(TempBattleStatBoosterModifier, source.isPlayer(), TempBattleStat.CRIT, critLevel); + const bonusCrit = new Utils.BooleanHolder(false); + if (applyAbAttrs(BonusCritAbAttr, source, null, bonusCrit)) { + if (bonusCrit.value) + critLevel.value += 1; + } + if (source.getTag(BattlerTagType.CRIT_BOOST)) + critLevel.value += 2; + const critChance = [24, 8, 2, 1][Math.max(0, Math.min(critLevel.value, 3))]; + isCritical = !source.getTag(BattlerTagType.NO_CRIT) && (critChance === 1 || !this.scene.randBattleSeedInt(critChance)); + } + if (isCritical) { + const blockCrit = new Utils.BooleanHolder(false); + applyAbAttrs(BlockCritAbAttr, this, null, blockCrit); + if (blockCrit.value) + isCritical = false; + } + const sourceAtk = new Utils.IntegerHolder(source.getBattleStat(isPhysical ? Stat.ATK : Stat.SPATK, this, null, isCritical)); + const targetDef = new Utils.IntegerHolder(this.getBattleStat(isPhysical ? Stat.DEF : Stat.SPDEF, source, move, isCritical)); + const criticalMultiplier = new Utils.NumberHolder(isCritical ? 1.5 : 1); + applyAbAttrs(MultCritAbAttr, source, null, criticalMultiplier); + const screenMultiplier = new Utils.NumberHolder(1); + if (!isCritical) { + this.scene.arena.applyTagsForSide(WeakenMoveScreenTag, this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY, move.category, this.scene.currentBattle.double, screenMultiplier); + } + const isTypeImmune = (typeMultiplier.value * arenaAttackTypeMultiplier.value) === 0; + const sourceTypes = source.getTypes(); + const matchesSourceType = sourceTypes[0] === type || (sourceTypes.length > 1 && sourceTypes[1] === type); + const stabMultiplier = new Utils.NumberHolder(1); + if (sourceTeraType === Type.UNKNOWN && matchesSourceType) + stabMultiplier.value += 0.5; + else if (sourceTeraType !== Type.UNKNOWN && sourceTeraType === type) + stabMultiplier.value += 0.5; + + applyAbAttrs(StabBoostAbAttr, source, null, stabMultiplier); + + if (sourceTeraType !== Type.UNKNOWN && matchesSourceType) + stabMultiplier.value = Math.min(stabMultiplier.value + 0.5, 2.25); + + applyMoveAttrs(VariableAtkAttr, source, this, move, sourceAtk); + applyMoveAttrs(VariableDefAttr, source, this, move, targetDef); + + if (!isTypeImmune) { + damage.value = Math.ceil(((((2 * source.level / 5 + 2) * power.value * sourceAtk.value / targetDef.value) / 50) + 2) * stabMultiplier.value * typeMultiplier.value * arenaAttackTypeMultiplier.value * screenMultiplier.value * ((this.scene.randBattleSeedInt(15) + 85) / 100) * criticalMultiplier.value); + if (isPhysical && source.status && source.status.effect === StatusEffect.BURN) { + if(!move.getAttrs(BypassBurnDamageReductionAttr).length) { + const burnDamageReductionCancelled = new Utils.BooleanHolder(false); + applyAbAttrs(BypassBurnDamageReductionAbAttr, source, burnDamageReductionCancelled); + if (!burnDamageReductionCancelled.value) + damage.value = Math.floor(damage.value / 2); } } - const arenaAttackTypeMultiplier = new Utils.NumberHolder(this.scene.arena.getAttackTypeMultiplier(type, source.isGrounded())); - applyMoveAttrs(IgnoreWeatherTypeDebuffAttr, source, this, move, arenaAttackTypeMultiplier); - if (this.scene.arena.getTerrainType() === TerrainType.GRASSY && this.isGrounded() && type === Type.GROUND && move.moveTarget === MoveTarget.ALL_NEAR_OTHERS) - power.value /= 2; - applyMoveAttrs(VariablePowerAttr, source, this, move, power); - this.scene.applyModifiers(PokemonMultiHitModifier, source.isPlayer(), source, new Utils.IntegerHolder(0), power); - if (!typeless) { - this.scene.arena.applyTags(WeakenMoveTypeTag, type, power); - this.scene.applyModifiers(AttackTypeBoosterModifier, source.isPlayer(), source, type, power); - } - if (source.getTag(HelpingHandTag)) - power.value *= 1.5; - let isCritical: boolean; - const critOnly = new Utils.BooleanHolder(false); - const critAlways = source.getTag(BattlerTagType.ALWAYS_CRIT); - applyMoveAttrs(CritOnlyAttr, source, this, move, critOnly); - applyAbAttrs(ConditionalCritAbAttr, source, null, critOnly, this, move); - if (critOnly.value || critAlways) - isCritical = true; - else { - const critLevel = new Utils.IntegerHolder(0); - applyMoveAttrs(HighCritAttr, source, this, move, critLevel); - this.scene.applyModifiers(TempBattleStatBoosterModifier, source.isPlayer(), TempBattleStat.CRIT, critLevel); - const bonusCrit = new Utils.BooleanHolder(false); - if (applyAbAttrs(BonusCritAbAttr, source, null, bonusCrit)) { - if (bonusCrit.value) - critLevel.value += 1; - } - if (source.getTag(BattlerTagType.CRIT_BOOST)) - critLevel.value += 2; - const critChance = [24, 8, 2, 1][Math.max(0, Math.min(critLevel.value, 3))]; - isCritical = !source.getTag(BattlerTagType.NO_CRIT) && (critChance === 1 || !this.scene.randBattleSeedInt(critChance)); - } - if (isCritical) { - const blockCrit = new Utils.BooleanHolder(false); - applyAbAttrs(BlockCritAbAttr, this, null, blockCrit); - if (blockCrit.value) - isCritical = false; - } - const sourceAtk = new Utils.IntegerHolder(source.getBattleStat(isPhysical ? Stat.ATK : Stat.SPATK, this, null, isCritical)); - const targetDef = new Utils.IntegerHolder(this.getBattleStat(isPhysical ? Stat.DEF : Stat.SPDEF, source, move, isCritical)); - const criticalMultiplier = new Utils.NumberHolder(isCritical ? 1.5 : 1); - applyAbAttrs(MultCritAbAttr, source, null, criticalMultiplier); - const screenMultiplier = new Utils.NumberHolder(1); - if (!isCritical) { - this.scene.arena.applyTagsForSide(WeakenMoveScreenTag, this.isPlayer() ? ArenaTagSide.PLAYER : ArenaTagSide.ENEMY, move.category, this.scene.currentBattle.double, screenMultiplier); - } - const isTypeImmune = (typeMultiplier.value * arenaAttackTypeMultiplier.value) === 0; - const sourceTypes = source.getTypes(); - const matchesSourceType = sourceTypes[0] === type || (sourceTypes.length > 1 && sourceTypes[1] === type); - let stabMultiplier = new Utils.NumberHolder(1); - if (sourceTeraType === Type.UNKNOWN && matchesSourceType) - stabMultiplier.value += 0.5; - else if (sourceTeraType !== Type.UNKNOWN && sourceTeraType === type) - stabMultiplier.value += 0.5; - applyAbAttrs(StabBoostAbAttr, source, null, stabMultiplier); + applyPreAttackAbAttrs(DamageBoostAbAttr, source, this, battlerMove, damage); - if (sourceTeraType !== Type.UNKNOWN && matchesSourceType) - stabMultiplier.value = Math.min(stabMultiplier.value + 0.5, 2.25); - - applyMoveAttrs(VariableAtkAttr, source, this, move, sourceAtk); - applyMoveAttrs(VariableDefAttr, source, this, move, targetDef); - - if (!isTypeImmune) { - damage.value = Math.ceil(((((2 * source.level / 5 + 2) * power.value * sourceAtk.value / targetDef.value) / 50) + 2) * stabMultiplier.value * typeMultiplier.value * arenaAttackTypeMultiplier.value * screenMultiplier.value * ((this.scene.randBattleSeedInt(15) + 85) / 100) * criticalMultiplier.value); - if (isPhysical && source.status && source.status.effect === StatusEffect.BURN) { - if(!move.getAttrs(BypassBurnDamageReductionAttr).length) { - const burnDamageReductionCancelled = new Utils.BooleanHolder(false); - applyAbAttrs(BypassBurnDamageReductionAbAttr, source, burnDamageReductionCancelled); - if (!burnDamageReductionCancelled.value) - damage.value = Math.floor(damage.value / 2); - } - } - - applyPreAttackAbAttrs(DamageBoostAbAttr, source, this, battlerMove, damage); - - /** + /** * For each {@link HitsTagAttr} the move has, doubles the damage of the move if: * The target has a {@link BattlerTagType} that this move interacts with * AND * The move doubles damage when used against that tag * */ - move.getAttrs(HitsTagAttr).map(hta => hta as HitsTagAttr).filter(hta => hta.doubleDamage).forEach(hta => { - if (this.getTag(hta.tagType)) - damage.value *= 2; - }); - } + move.getAttrs(HitsTagAttr).map(hta => hta as HitsTagAttr).filter(hta => hta.doubleDamage).forEach(hta => { + if (this.getTag(hta.tagType)) + damage.value *= 2; + }); + } - if (this.scene.arena.terrain?.terrainType === TerrainType.MISTY && this.isGrounded() && type === Type.DRAGON) - damage.value = Math.floor(damage.value / 2); + if (this.scene.arena.terrain?.terrainType === TerrainType.MISTY && this.isGrounded() && type === Type.DRAGON) + damage.value = Math.floor(damage.value / 2); - const fixedDamage = new Utils.IntegerHolder(0); - applyMoveAttrs(FixedDamageAttr, source, this, move, fixedDamage); - if (!isTypeImmune && fixedDamage.value) { - damage.value = fixedDamage.value; - isCritical = false; - result = HitResult.EFFECTIVE; - } + const fixedDamage = new Utils.IntegerHolder(0); + applyMoveAttrs(FixedDamageAttr, source, this, move, fixedDamage); + if (!isTypeImmune && fixedDamage.value) { + damage.value = fixedDamage.value; + isCritical = false; + result = HitResult.EFFECTIVE; + } - if (!result) { - if (!typeMultiplier.value) - result = move.id == Moves.SHEER_COLD ? HitResult.IMMUNE : HitResult.NO_EFFECT; - else { - const oneHitKo = new Utils.BooleanHolder(false); - applyMoveAttrs(OneHitKOAttr, source, this, move, oneHitKo); - if (oneHitKo.value) { - result = HitResult.ONE_HIT_KO; - isCritical = false; - damage.value = this.hp; - } else if (typeMultiplier.value >= 2) - result = HitResult.SUPER_EFFECTIVE; - else if (typeMultiplier.value >= 1) - result = HitResult.EFFECTIVE; - else - result = HitResult.NOT_VERY_EFFECTIVE; - } + if (!result) { + if (!typeMultiplier.value) + result = move.id == Moves.SHEER_COLD ? HitResult.IMMUNE : HitResult.NO_EFFECT; + else { + const oneHitKo = new Utils.BooleanHolder(false); + applyMoveAttrs(OneHitKOAttr, source, this, move, oneHitKo); + if (oneHitKo.value) { + result = HitResult.ONE_HIT_KO; + isCritical = false; + damage.value = this.hp; + } else if (typeMultiplier.value >= 2) + result = HitResult.SUPER_EFFECTIVE; + else if (typeMultiplier.value >= 1) + result = HitResult.EFFECTIVE; + else + result = HitResult.NOT_VERY_EFFECTIVE; } - - if (!fixedDamage.value) { - if (!source.isPlayer()) - this.scene.applyModifiers(EnemyDamageBoosterModifier, false, damage); - if (!this.isPlayer()) - this.scene.applyModifiers(EnemyDamageReducerModifier, false, damage); - } - - applyMoveAttrs(ModifiedDamageAttr, source, this, move, damage); - - if (power.value === 0) { - damage.value = 0; - } - - console.log('damage', damage.value, move.name, power.value, sourceAtk, targetDef); - - if (damage.value) { - if (this.getHpRatio() === 1) - applyPreDefendAbAttrs(PreDefendFullHpEndureAbAttr, this, source, battlerMove, cancelled, damage); - else if (!this.isPlayer() && damage.value >= this.hp) - this.scene.applyModifiers(EnemyEndureChanceModifier, false, this); - - const oneHitKo = result === HitResult.ONE_HIT_KO; - damage.value = this.damageAndUpdate(damage.value, result as DamageResult, isCritical, oneHitKo, oneHitKo); - this.turnData.damageTaken += damage.value; - if (isCritical) - this.scene.queueMessage(i18next.t('battle:hitResultCriticalHit')); - this.scene.setPhaseQueueSplice(); - if (source.isPlayer()) { - this.scene.validateAchvs(DamageAchv, damage); - if (damage.value > this.scene.gameData.gameStats.highestDamage) - this.scene.gameData.gameStats.highestDamage = damage.value; - } - source.turnData.damageDealt += damage.value; - source.turnData.currDamageDealt = damage.value; - this.battleData.hitCount++; - const attackResult = { move: move.id, result: result as DamageResult, damage: damage.value, critical: isCritical, sourceId: source.id }; - this.turnData.attacksReceived.unshift(attackResult); - if (source.isPlayer() && !this.isPlayer()) - this.scene.applyModifiers(DamageMoneyRewardModifier, true, source, damage) - } - - if (source.turnData.hitsLeft === 1) { - switch (result) { - case HitResult.SUPER_EFFECTIVE: - this.scene.queueMessage(i18next.t('battle:hitResultSuperEffective')); - break; - case HitResult.NOT_VERY_EFFECTIVE: - this.scene.queueMessage(i18next.t('battle:hitResultNotVeryEffective')); - break; - case HitResult.NO_EFFECT: - this.scene.queueMessage(i18next.t('battle:hitResultNoEffect', { pokemonName: this.name })); - break; - case HitResult.IMMUNE: - this.scene.queueMessage(`${this.name} is unaffected!`); - break; - case HitResult.ONE_HIT_KO: - this.scene.queueMessage(i18next.t('battle:hitResultOneHitKO')); - break; - } - } - - if (damage) - this.scene.clearPhaseQueueSplice(); } - break; - case MoveCategory.STATUS: - if (!typeless) - applyPreDefendAbAttrs(TypeImmunityAbAttr, this, source, battlerMove, cancelled, typeMultiplier); - if (!cancelled.value) { - applyPreDefendAbAttrs(MoveImmunityAbAttr, this, source, battlerMove, cancelled, typeMultiplier); - defendingSidePlayField.forEach((p) => applyPreDefendAbAttrs(FieldPriorityMoveImmunityAbAttr, p, source, battlerMove, cancelled, typeMultiplier)); + + if (!fixedDamage.value) { + if (!source.isPlayer()) + this.scene.applyModifiers(EnemyDamageBoosterModifier, false, damage); + if (!this.isPlayer()) + this.scene.applyModifiers(EnemyDamageReducerModifier, false, damage); } - if (!typeMultiplier.value) - this.scene.queueMessage(i18next.t('battle:hitResultNoEffect', { pokemonName: this.name })); - result = cancelled.value || !typeMultiplier.value ? HitResult.NO_EFFECT : HitResult.STATUS; - break; + + applyMoveAttrs(ModifiedDamageAttr, source, this, move, damage); + + if (power.value === 0) { + damage.value = 0; + } + + console.log('damage', damage.value, move.name, power.value, sourceAtk, targetDef); + + if (damage.value) { + if (this.getHpRatio() === 1) + applyPreDefendAbAttrs(PreDefendFullHpEndureAbAttr, this, source, battlerMove, cancelled, damage); + else if (!this.isPlayer() && damage.value >= this.hp) + this.scene.applyModifiers(EnemyEndureChanceModifier, false, this); + + const oneHitKo = result === HitResult.ONE_HIT_KO; + damage.value = this.damageAndUpdate(damage.value, result as DamageResult, isCritical, oneHitKo, oneHitKo); + this.turnData.damageTaken += damage.value; + if (isCritical) + this.scene.queueMessage(i18next.t('battle:hitResultCriticalHit')); + this.scene.setPhaseQueueSplice(); + if (source.isPlayer()) { + this.scene.validateAchvs(DamageAchv, damage); + if (damage.value > this.scene.gameData.gameStats.highestDamage) + this.scene.gameData.gameStats.highestDamage = damage.value; + } + source.turnData.damageDealt += damage.value; + source.turnData.currDamageDealt = damage.value; + this.battleData.hitCount++; + const attackResult = { move: move.id, result: result as DamageResult, damage: damage.value, critical: isCritical, sourceId: source.id }; + this.turnData.attacksReceived.unshift(attackResult); + if (source.isPlayer() && !this.isPlayer()) + this.scene.applyModifiers(DamageMoneyRewardModifier, true, source, damage); + } + + if (source.turnData.hitsLeft === 1) { + switch (result) { + case HitResult.SUPER_EFFECTIVE: + this.scene.queueMessage(i18next.t('battle:hitResultSuperEffective')); + break; + case HitResult.NOT_VERY_EFFECTIVE: + this.scene.queueMessage(i18next.t('battle:hitResultNotVeryEffective')); + break; + case HitResult.NO_EFFECT: + this.scene.queueMessage(i18next.t('battle:hitResultNoEffect', { pokemonName: this.name })); + break; + case HitResult.IMMUNE: + this.scene.queueMessage(`${this.name} is unaffected!`); + break; + case HitResult.ONE_HIT_KO: + this.scene.queueMessage(i18next.t('battle:hitResultOneHitKO')); + break; + } + } + + if (damage) + this.scene.clearPhaseQueueSplice(); + } + break; + case MoveCategory.STATUS: + if (!typeless) + applyPreDefendAbAttrs(TypeImmunityAbAttr, this, source, battlerMove, cancelled, typeMultiplier); + if (!cancelled.value) { + applyPreDefendAbAttrs(MoveImmunityAbAttr, this, source, battlerMove, cancelled, typeMultiplier); + defendingSidePlayField.forEach((p) => applyPreDefendAbAttrs(FieldPriorityMoveImmunityAbAttr, p, source, battlerMove, cancelled, typeMultiplier)); + } + if (!typeMultiplier.value) + this.scene.queueMessage(i18next.t('battle:hitResultNoEffect', { pokemonName: this.name })); + result = cancelled.value || !typeMultiplier.value ? HitResult.NO_EFFECT : HitResult.STATUS; + break; } return result; @@ -1716,9 +1716,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { if (!preventEndure && this.hp - damage <= 0) { if(this.hp >= 1 && this.getTag(BattlerTagType.ENDURING)) - surviveDamage.value = this.lapseTag(BattlerTagType.ENDURING) + surviveDamage.value = this.lapseTag(BattlerTagType.ENDURING); else if (this.hp > 1 && this.getTag(BattlerTagType.STURDY)) - surviveDamage.value = this.lapseTag(BattlerTagType.STURDY) + surviveDamage.value = this.lapseTag(BattlerTagType.STURDY); if (!surviveDamage.value) this.scene.applyModifiers(SurviveDamageModifier, this.isPlayer(), this, surviveDamage); if (surviveDamage.value) @@ -1844,7 +1844,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { return false; const tags = this.summonData.tags; const tagsToRemove = tags.filter(t => tagFilter(t)); - for (let tag of tagsToRemove) { + for (const tag of tagsToRemove) { tag.turnCount = 0; tag.onRemove(this); tags.splice(tags.indexOf(tag), 1); @@ -1865,9 +1865,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { transferSummon(source: Pokemon): void { const battleStats = Utils.getEnumValues(BattleStat); - for (let stat of battleStats) + for (const stat of battleStats) this.summonData.battleStats[stat] = source.summonData.battleStats[stat]; - for (let tag of source.summonData.tags) + for (const tag of source.summonData.tags) this.summonData.tags.push(tag); if (this instanceof PlayerPokemon && source.summonData.battleStats.find(bs => bs === 6)) this.scene.validateAchv(achvs.TRANSFER_MAX_BATTLE_STAT); @@ -1992,7 +1992,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const key = this.getSpeciesForm().getCryKey(this.formIndex); let i = 0; let rate = 0.85; - let cry = this.scene.playSound(key, { rate: rate }) as AnySound; + const cry = this.scene.playSound(key, { rate: rate }) as AnySound; const sprite = this.getSprite(); const tintSprite = this.getTintSprite(); let duration = cry.totalDuration * 1000; @@ -2087,46 +2087,46 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const types = this.getTypes(true, true); switch (effect) { - case StatusEffect.POISON: - case StatusEffect.TOXIC: - // Check if the Pokemon is immune to Poison/Toxic or if the source pokemon is canceling the immunity - let poisonImmunity = types.map(defType => { - // Check if the Pokemon is not immune to Poison/Toxic - if (defType !== Type.POISON && defType !== Type.STEEL) - return false; + case StatusEffect.POISON: + case StatusEffect.TOXIC: + // 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) + return false; - // Check if the source Pokemon has an ability that cancels the Poison/Toxic immunity - const cancelImmunity = new Utils.BooleanHolder(false); - if (sourcePokemon) { - applyAbAttrs(IgnoreTypeStatusEffectImmunityAbAttr, sourcePokemon, cancelImmunity, effect, defType); - if (cancelImmunity.value) - return false; - } - - return true; - }) - - if (this.isOfType(Type.POISON) || this.isOfType(Type.STEEL)) { - if (poisonImmunity.includes(true)) + // Check if the source Pokemon has an ability that cancels the Poison/Toxic immunity + const cancelImmunity = new Utils.BooleanHolder(false); + if (sourcePokemon) { + applyAbAttrs(IgnoreTypeStatusEffectImmunityAbAttr, sourcePokemon, cancelImmunity, effect, defType); + if (cancelImmunity.value) return false; } - break; - case StatusEffect.PARALYSIS: - if (this.isOfType(Type.ELECTRIC)) + + return true; + }); + + if (this.isOfType(Type.POISON) || this.isOfType(Type.STEEL)) { + if (poisonImmunity.includes(true)) return false; - break; - case StatusEffect.SLEEP: - if (this.isGrounded() && this.scene.arena.terrain?.terrainType === TerrainType.ELECTRIC) - return false; - break; - case StatusEffect.FREEZE: - if (this.isOfType(Type.ICE) || [WeatherType.SUNNY, WeatherType.HARSH_SUN].includes(this.scene?.arena.weather?.weatherType)) - return false; - break; - case StatusEffect.BURN: - if (this.isOfType(Type.FIRE)) - return false; - break; + } + break; + case StatusEffect.PARALYSIS: + if (this.isOfType(Type.ELECTRIC)) + return false; + break; + case StatusEffect.SLEEP: + if (this.isGrounded() && this.scene.arena.terrain?.terrainType === TerrainType.ELECTRIC) + return false; + break; + case StatusEffect.FREEZE: + if (this.isOfType(Type.ICE) || [WeatherType.SUNNY, WeatherType.HARSH_SUN].includes(this.scene?.arena.weather?.weatherType)) + return false; + break; + case StatusEffect.BURN: + if (this.isOfType(Type.FIRE)) + return false; + break; } const cancelled = new Utils.BooleanHolder(false); @@ -2210,7 +2210,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.resetBattleData(); this.resetBattleSummonData(); if (this.summonDataPrimer) { - for (let k of Object.keys(this.summonData)) { + for (const k of Object.keys(this.summonData)) { if (this.summonDataPrimer[k]) this.summonData[k] = this.summonDataPrimer[k]; } @@ -2289,7 +2289,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { this.maskSprite = this.getTintSprite(); this.maskSprite.setVisible(true); this.maskSprite.setPosition(this.x * this.parentContainer.scale + this.parentContainer.x, - this.y * this.parentContainer.scale + this.parentContainer.y); + this.y * this.parentContainer.scale + this.parentContainer.y); this.maskSprite.setScale(this.getSpriteScale() * this.parentContainer.scale); this.maskEnabled = true; } @@ -2338,9 +2338,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const [ sourceImage, sourceBackImage, fusionImage, fusionBackImage ] = [ sourceTexture, sourceBackTexture, fusionTexture, fusionBackTexture ].map(i => i.getSourceImage() as HTMLImageElement); const canvas = document.createElement('canvas'); - const backCanvas = document.createElement('canvas'); + const backCanvas = document.createElement('canvas'); const fusionCanvas = document.createElement('canvas'); - const fusionBackCanvas = document.createElement('canvas'); + const fusionBackCanvas = document.createElement('canvas'); const spriteColors: integer[][] = []; const pixelData: Uint8ClampedArray[] = []; @@ -2357,7 +2357,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { for (let f = 0; f < 2; f++) { const variantColors = variantColorCache[!f ? spriteKey : backSpriteKey]; - let variantColorSet = new Map(); + const variantColorSet = new Map(); if (this.shiny && variantColors && variantColors[this.variant]) { Object.keys(variantColors[this.variant]).forEach(k => { variantColorSet.set(Utils.rgbaToInt(Array.from(Object.values(Utils.rgbHexToRgba(k)))), Array.from(Object.values(Utils.rgbHexToRgba(variantColors[this.variant][k])))); @@ -2396,7 +2396,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const fusionPixelColors = []; for (let f = 0; f < 2; f++) { const variantColors = variantColorCache[!f ? fusionSpriteKey : fusionBackSpriteKey]; - let variantColorSet = new Map(); + const variantColorSet = new Map(); if (this.fusionShiny && variantColors && variantColors[this.fusionVariant]) { Object.keys(variantColors[this.fusionVariant]).forEach(k => { variantColorSet.set(Utils.rgbaToInt(Array.from(Object.values(Utils.rgbHexToRgba(k)))), Array.from(Object.values(Utils.rgbHexToRgba(variantColors[this.fusionVariant][k])))); @@ -2467,9 +2467,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { mappedColors.forEach((values: integer[], key: integer) => { const keyColor = rgbaColors.get(key); const valueColors = values.map(v => rgbaColors.get(v)); - let color = keyColor.slice(0); + const color = keyColor.slice(0); let count = paletteColors.get(key); - for (let value of values) { + for (const value of values) { const valueCount = paletteColors.get(value); if (!valueCount) continue; @@ -2488,7 +2488,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { } paletteColors.delete(key); - for (let value of values) { + for (const value of values) { paletteColors.delete(value); if (mappedColors.has(value)) mappedColors.delete(value); @@ -2500,9 +2500,9 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { keys = Array.from(paletteColors.keys()).sort((a: integer, b: integer) => paletteColors.get(a) < paletteColors.get(b) ? 1 : -1); } while (mappedColors.size); - return keys.map(c => Object.values(rgbaFromArgb(c))) + return keys.map(c => Object.values(rgbaFromArgb(c))); } - ); + ); const paletteDeltas: number[][] = []; @@ -2519,10 +2519,10 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container { const paletteIndex = Math.min(paletteDeltas[sc].findIndex(pd => pd === delta), fusionPalette.length - 1); if (delta < 255) { const ratio = easeFunc(delta / 255); - let color = [ 0, 0, 0, fusionSpriteColors[sc][3] ]; + const color = [ 0, 0, 0, fusionSpriteColors[sc][3] ]; for (let c = 0; c < 3; c++) color[c] = Math.round((fusionSpriteColors[sc][c] * ratio) + (fusionPalette[paletteIndex][c] * (1 - ratio))); - fusionSpriteColors[sc] = color; + fusionSpriteColors[sc] = color; } } @@ -2602,10 +2602,10 @@ export class PlayerPokemon extends Pokemon { this.compatibleTms = []; const tms = Object.keys(tmSpecies); - for (let tm of tms) { + for (const tm of tms) { const moveId = parseInt(tm) as Moves; let compatible = false; - for (let p of tmSpecies[tm]) { + for (const p of tmSpecies[tm]) { if (Array.isArray(p)) { if (p[0] === this.species.speciesId || (this.fusionSpecies && p[0] === this.fusionSpecies.speciesId) && p.slice(1).indexOf(this.species.forms[this.formIndex]) > -1) { compatible = true; @@ -2679,7 +2679,7 @@ export class PlayerPokemon extends Pokemon { }); } else { this.friendship = Math.max(this.friendship + amount.value, 0); - for (let sd of starterData) + for (const sd of starterData) sd.friendship = Math.max((sd.friendship || 0) + starterAmount.value, 0); } } @@ -2716,8 +2716,8 @@ export class PlayerPokemon extends Pokemon { } this.scene.ui.setMode(Mode.MESSAGE).then(() => resolve()); - }, PartyUiHandler.FilterFainted) - }) + }, PartyUiHandler.FilterFainted); + }); } getPossibleEvolution(evolution: SpeciesFormEvolution): Promise { @@ -2787,7 +2787,7 @@ export class PlayerPokemon extends Pokemon { private handleSpecialEvolutions(evolution: SpeciesFormEvolution) { const isFusion = evolution instanceof FusionSpeciesFormEvolution; - const evoSpecies = (!isFusion ? this.species : this.fusionSpecies) + const evoSpecies = (!isFusion ? this.species : this.fusionSpecies); if (evoSpecies.speciesId === Species.NINCADA && evolution.speciesId === Species.NINJASK) { const newEvolution = pokemonEvolutions[evoSpecies.speciesId][1]; @@ -2902,7 +2902,7 @@ export class PlayerPokemon extends Pokemon { const fusedPartyMemberHeldModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === pokemon.id, true) as PokemonHeldItemModifier[]; const transferModifiers: Promise[] = []; - for (let modifier of fusedPartyMemberHeldModifiers) + for (const modifier of fusedPartyMemberHeldModifiers) transferModifiers.push(this.scene.tryTransferHeldItemModifier(modifier, this, true, false, true, true)); Promise.allSettled(transferModifiers).then(() => { this.scene.updateModifiers(true, true).then(() => { @@ -2929,7 +2929,7 @@ export class PlayerPokemon extends Pokemon { /** Returns a deep copy of this Pokemon's moveset array */ copyMoveset(): PokemonMove[] { - let newMoveset = []; + const newMoveset = []; this.moveset.forEach(move => newMoveset.push(new PokemonMove(move.moveId, 0, move.ppUp, move.virtual))); @@ -3001,32 +3001,32 @@ export class EnemyPokemon extends Pokemon { generateAndPopulateMoveset(formIndex?: integer): void { switch (true) { - case (this.species.speciesId === Species.SMEARGLE): - this.moveset = [ - new PokemonMove(Moves.SKETCH), - new PokemonMove(Moves.SKETCH), - new PokemonMove(Moves.SKETCH), - new PokemonMove(Moves.SKETCH) - ]; - break; - case (this.species.speciesId === Species.ETERNATUS): - this.moveset = (formIndex !== undefined ? formIndex : this.formIndex) - ? [ - new PokemonMove(Moves.DYNAMAX_CANNON), - new PokemonMove(Moves.CROSS_POISON), - new PokemonMove(Moves.FLAMETHROWER), - new PokemonMove(Moves.RECOVER, 0, -4) - ] - : [ - new PokemonMove(Moves.ETERNABEAM), - new PokemonMove(Moves.SLUDGE_BOMB), - new PokemonMove(Moves.DRAGON_DANCE), - new PokemonMove(Moves.COSMIC_POWER) - ]; + case (this.species.speciesId === Species.SMEARGLE): + this.moveset = [ + new PokemonMove(Moves.SKETCH), + new PokemonMove(Moves.SKETCH), + new PokemonMove(Moves.SKETCH), + new PokemonMove(Moves.SKETCH) + ]; + break; + case (this.species.speciesId === Species.ETERNATUS): + this.moveset = (formIndex !== undefined ? formIndex : this.formIndex) + ? [ + new PokemonMove(Moves.DYNAMAX_CANNON), + new PokemonMove(Moves.CROSS_POISON), + new PokemonMove(Moves.FLAMETHROWER), + new PokemonMove(Moves.RECOVER, 0, -4) + ] + : [ + new PokemonMove(Moves.ETERNABEAM), + new PokemonMove(Moves.SLUDGE_BOMB), + new PokemonMove(Moves.DRAGON_DANCE), + new PokemonMove(Moves.COSMIC_POWER) + ]; + break; + default: + super.generateAndPopulateMoveset(); break; - default: - super.generateAndPopulateMoveset(); - break; } } @@ -3054,75 +3054,75 @@ export class EnemyPokemon extends Pokemon { return { move: encoreMove.moveId, targets: this.getNextTargets(encoreMove.moveId) }; } switch (this.aiType) { - case AiType.RANDOM: - const moveId = movePool[this.scene.randBattleSeedInt(movePool.length)].moveId; - return { move: moveId, targets: this.getNextTargets(moveId) }; - case AiType.SMART_RANDOM: - case AiType.SMART: - const moveScores = movePool.map(() => 0); - const moveTargets = Object.fromEntries(movePool.map(m => [ m.moveId, this.getNextTargets(m.moveId) ])); - for (let m in movePool) { - const pokemonMove = movePool[m]; - const move = pokemonMove.getMove(); + case AiType.RANDOM: + const moveId = movePool[this.scene.randBattleSeedInt(movePool.length)].moveId; + return { move: moveId, targets: this.getNextTargets(moveId) }; + case AiType.SMART_RANDOM: + case AiType.SMART: + const moveScores = movePool.map(() => 0); + const moveTargets = Object.fromEntries(movePool.map(m => [ m.moveId, this.getNextTargets(m.moveId) ])); + for (const m in movePool) { + const pokemonMove = movePool[m]; + const move = pokemonMove.getMove(); - const variableType = new Utils.IntegerHolder(move.type); - applyAbAttrs(VariableMoveTypeAbAttr, this, null, variableType); - const moveType = variableType.value as Type; + const variableType = new Utils.IntegerHolder(move.type); + applyAbAttrs(VariableMoveTypeAbAttr, this, null, variableType); + const moveType = variableType.value as Type; - let moveScore = moveScores[m]; - let targetScores: integer[] = []; + let moveScore = moveScores[m]; + const targetScores: integer[] = []; - for (let mt of moveTargets[move.id]) { - // Prevent a target score from being calculated when the target is whoever attacks the user - if (mt === BattlerIndex.ATTACKER) - break; + for (const mt of moveTargets[move.id]) { + // Prevent a target score from being calculated when the target is whoever attacks the user + if (mt === BattlerIndex.ATTACKER) + break; - const target = this.scene.getField()[mt]; - let targetScore = move.getUserBenefitScore(this, target, move) + move.getTargetBenefitScore(this, target, move) * (mt < BattlerIndex.ENEMY === this.isPlayer() ? 1 : -1); - if (move.name.endsWith(' (N)') || !move.applyConditions(this, target, move)) - targetScore = -20; - else if (move instanceof AttackMove) { - const effectiveness = target.getAttackMoveEffectiveness(this, pokemonMove); - if (target.isPlayer() !== this.isPlayer()) { - targetScore *= effectiveness; - if (this.isOfType(moveType)) - targetScore *= 1.5; - } else if (effectiveness) { - targetScore /= effectiveness; - if (this.isOfType(moveType)) - targetScore /= 1.5; - } - if (!targetScore) - targetScore = -20; + const target = this.scene.getField()[mt]; + let targetScore = move.getUserBenefitScore(this, target, move) + move.getTargetBenefitScore(this, target, move) * (mt < BattlerIndex.ENEMY === this.isPlayer() ? 1 : -1); + if (move.name.endsWith(' (N)') || !move.applyConditions(this, target, move)) + targetScore = -20; + else if (move instanceof AttackMove) { + const effectiveness = target.getAttackMoveEffectiveness(this, pokemonMove); + if (target.isPlayer() !== this.isPlayer()) { + targetScore *= effectiveness; + if (this.isOfType(moveType)) + targetScore *= 1.5; + } else if (effectiveness) { + targetScore /= effectiveness; + if (this.isOfType(moveType)) + targetScore /= 1.5; } - targetScores.push(targetScore); + if (!targetScore) + targetScore = -20; } - - moveScore += Math.max(...targetScores); - - // could make smarter by checking opponent def/spdef - moveScores[m] = moveScore; + targetScores.push(targetScore); } - console.log(moveScores); + moveScore += Math.max(...targetScores); - const sortedMovePool = movePool.slice(0); - sortedMovePool.sort((a, b) => { - const scoreA = moveScores[movePool.indexOf(a)]; - const scoreB = moveScores[movePool.indexOf(b)]; - return scoreA < scoreB ? 1 : scoreA > scoreB ? -1 : 0; - }); - let r = 0; - if (this.aiType === AiType.SMART_RANDOM) { - while (r < sortedMovePool.length - 1 && this.scene.randBattleSeedInt(8) >= 5) - r++; - } else if (this.aiType === AiType.SMART) { - while (r < sortedMovePool.length - 1 && (moveScores[movePool.indexOf(sortedMovePool[r + 1])] / moveScores[movePool.indexOf(sortedMovePool[r])]) >= 0 + // could make smarter by checking opponent def/spdef + moveScores[m] = moveScore; + } + + console.log(moveScores); + + const sortedMovePool = movePool.slice(0); + sortedMovePool.sort((a, b) => { + const scoreA = moveScores[movePool.indexOf(a)]; + const scoreB = moveScores[movePool.indexOf(b)]; + return scoreA < scoreB ? 1 : scoreA > scoreB ? -1 : 0; + }); + let r = 0; + if (this.aiType === AiType.SMART_RANDOM) { + while (r < sortedMovePool.length - 1 && this.scene.randBattleSeedInt(8) >= 5) + r++; + } else if (this.aiType === AiType.SMART) { + while (r < sortedMovePool.length - 1 && (moveScores[movePool.indexOf(sortedMovePool[r + 1])] / moveScores[movePool.indexOf(sortedMovePool[r])]) >= 0 && this.scene.randBattleSeedInt(100) < Math.round((moveScores[movePool.indexOf(sortedMovePool[r + 1])] / moveScores[movePool.indexOf(sortedMovePool[r])]) * 50)) - r++; - } - console.log(movePool.map(m => m.getName()), moveScores, r, sortedMovePool.map(m => m.getName())); - return { move: sortedMovePool[r].moveId, targets: moveTargets[sortedMovePool[r].moveId] }; + r++; + } + console.log(movePool.map(m => m.getName()), moveScores, r, sortedMovePool.map(m => m.getName())); + return { move: sortedMovePool[r].moveId, targets: moveTargets[sortedMovePool[r].moveId] }; } } @@ -3247,12 +3247,12 @@ export class EnemyPokemon extends Pokemon { } switch (this.scene.currentBattle.battleSpec) { - case BattleSpec.FINAL_BOSS: - if (!this.formIndex && this.bossSegmentIndex < 1) - damage = Math.min(damage, this.hp - 1); + case BattleSpec.FINAL_BOSS: + if (!this.formIndex && this.bossSegmentIndex < 1) + damage = Math.min(damage, this.hp - 1); } - let ret = super.damage(damage, ignoreSegments, preventEndure); + const ret = super.damage(damage, ignoreSegments, preventEndure); if (this.isBoss()) { if (ignoreSegments) { @@ -3284,14 +3284,14 @@ export class EnemyPokemon extends Pokemon { const statWeights = new Array().fill(battleStats.length).filter((bs: BattleStat) => this.summonData.battleStats[bs] < 6).map((bs: BattleStat) => this.getStat(bs + 1)); const statThresholds: integer[] = []; let totalWeight = 0; - for (let bs of battleStats) { + for (const bs of battleStats) { totalWeight += statWeights[bs]; statThresholds.push(totalWeight); } const randInt = Utils.randSeedInt(totalWeight); - for (let bs of battleStats) { + for (const bs of battleStats) { if (randInt < statThresholds[bs]) { boostedStat = bs; break; @@ -3301,14 +3301,14 @@ export class EnemyPokemon extends Pokemon { let statLevels = 1; switch (segmentIndex) { - case 1: - if (this.bossSegments >= 3) - statLevels++; - break; - case 2: - if (this.bossSegments >= 5) - statLevels++; - break; + case 1: + if (this.bossSegments >= 3) + statLevels++; + break; + case 2: + if (this.bossSegments >= 5) + statLevels++; + break; } this.scene.unshiftPhase(new StatChangePhase(this.scene, this.getBattlerIndex(), true, [ boostedStat ], statLevels, true, true)); @@ -3319,8 +3319,8 @@ export class EnemyPokemon extends Pokemon { heal(amount: integer): integer { if (this.isBoss()) { - let amountRatio = amount / this.getMaxHp(); - let segmentBypassCount = Math.floor(amountRatio / (1 / this.bossSegments)); + const amountRatio = amount / this.getMaxHp(); + const segmentBypassCount = Math.floor(amountRatio / (1 / this.bossSegments)); const segmentSize = this.getMaxHp() / this.bossSegments; for (let s = 1; s < this.bossSegments; s++) { const hpThreshold = segmentSize * s; diff --git a/src/field/trainer.ts b/src/field/trainer.ts index 8cd06cac12f..f5bcdb24665 100644 --- a/src/field/trainer.ts +++ b/src/field/trainer.ts @@ -1,17 +1,17 @@ -import BattleScene from "../battle-scene"; -import { pokemonPrevolutions } from "../data/pokemon-evolutions"; -import PokemonSpecies, { getPokemonSpecies } from "../data/pokemon-species"; -import { TrainerConfig, TrainerPartyCompoundTemplate, TrainerPartyTemplate, TrainerPoolTier, TrainerSlot, trainerConfigs, trainerPartyTemplates } from "../data/trainer-config"; -import { PartyMemberStrength } from "../data/enums/party-member-strength"; -import { TrainerType } from "../data/enums/trainer-type"; -import { EnemyPokemon } from "./pokemon"; -import * as Utils from "../utils"; -import { PersistentModifier } from "../modifier/modifier"; -import { trainerNamePools } from "../data/trainer-names"; -import { ArenaTagType } from "#app/data/enums/arena-tag-type"; -import { ArenaTag, ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag"; -import {getIsInitialized, initI18n} from "#app/plugins/i18n"; -import i18next from "i18next"; +import BattleScene from '../battle-scene'; +import { pokemonPrevolutions } from '../data/pokemon-evolutions'; +import PokemonSpecies, { getPokemonSpecies } from '../data/pokemon-species'; +import { TrainerConfig, TrainerPartyCompoundTemplate, TrainerPartyTemplate, TrainerPoolTier, TrainerSlot, trainerConfigs, trainerPartyTemplates } from '../data/trainer-config'; +import { PartyMemberStrength } from '../data/enums/party-member-strength'; +import { TrainerType } from '../data/enums/trainer-type'; +import { EnemyPokemon } from './pokemon'; +import * as Utils from '../utils'; +import { PersistentModifier } from '../modifier/modifier'; +import { trainerNamePools } from '../data/trainer-names'; +import { ArenaTagType } from '#app/data/enums/arena-tag-type'; +import { ArenaTag, ArenaTagSide, ArenaTrapTag } from '#app/data/arena-tag'; +import {getIsInitialized, initI18n} from '#app/plugins/i18n'; +import i18next from 'i18next'; export enum TrainerVariant { DEFAULT, @@ -49,14 +49,14 @@ export default class Trainer extends Phaser.GameObjects.Container { } switch (this.variant) { - case TrainerVariant.FEMALE: - if (!this.config.hasGenders) - variant = TrainerVariant.DEFAULT; - break; - case TrainerVariant.DOUBLE: - if (!this.config.hasDouble) - variant = TrainerVariant.DEFAULT; - break; + case TrainerVariant.FEMALE: + if (!this.config.hasGenders) + variant = TrainerVariant.DEFAULT; + break; + case TrainerVariant.DOUBLE: + if (!this.config.hasDouble) + variant = TrainerVariant.DEFAULT; + break; } console.log(Object.keys(trainerPartyTemplates)[Object.values(trainerPartyTemplates).indexOf(this.getPartyTemplate())]); @@ -179,7 +179,7 @@ export default class Trainer extends Phaser.GameObjects.Container { const partyTemplate = this.getPartyTemplate(); const difficultyWaveIndex = this.scene.gameMode.getWaveForDifficulty(waveIndex); - let baseLevel = 1 + difficultyWaveIndex / 2 + Math.pow(difficultyWaveIndex / 25, 2); + const baseLevel = 1 + difficultyWaveIndex / 2 + Math.pow(difficultyWaveIndex / 25, 2); if (this.isDouble() && partyTemplate.size < 2) partyTemplate.size = 2; @@ -190,21 +190,21 @@ export default class Trainer extends Phaser.GameObjects.Container { const strength = partyTemplate.getStrength(i); switch (strength) { - case PartyMemberStrength.WEAKER: - multiplier = 0.95; - break; - case PartyMemberStrength.WEAK: - multiplier = 1.0; - break; - case PartyMemberStrength.AVERAGE: - multiplier = 1.1; - break; - case PartyMemberStrength.STRONG: - multiplier = 1.2; - break; - case PartyMemberStrength.STRONGER: - multiplier = 1.25; - break; + case PartyMemberStrength.WEAKER: + multiplier = 0.95; + break; + case PartyMemberStrength.WEAK: + multiplier = 1.0; + break; + case PartyMemberStrength.AVERAGE: + multiplier = 1.1; + break; + case PartyMemberStrength.STRONG: + multiplier = 1.2; + break; + case PartyMemberStrength.STRONGER: + multiplier = 1.25; + break; } let levelOffset = 0; @@ -243,7 +243,7 @@ export default class Trainer extends Phaser.GameObjects.Container { let offset = 0; if (template instanceof TrainerPartyCompoundTemplate) { - for (let innerTemplate of template.templates) { + for (const innerTemplate of template.templates) { if (offset + innerTemplate.size > index) break; offset += innerTemplate.size; @@ -267,7 +267,7 @@ export default class Trainer extends Phaser.GameObjects.Container { let species: PokemonSpecies; if (this.config.speciesPools) { const tierValue = Utils.randSeedInt(512); - let tier = tierValue >= 156 ? TrainerPoolTier.COMMON : tierValue >= 32 ? TrainerPoolTier.UNCOMMON : tierValue >= 6 ? TrainerPoolTier.RARE : tierValue >= 1 ? TrainerPoolTier.SUPER_RARE : TrainerPoolTier.ULTRA_RARE + let tier = tierValue >= 156 ? TrainerPoolTier.COMMON : tierValue >= 32 ? TrainerPoolTier.UNCOMMON : tierValue >= 6 ? TrainerPoolTier.RARE : tierValue >= 1 ? TrainerPoolTier.SUPER_RARE : TrainerPoolTier.ULTRA_RARE; console.log(TrainerPoolTier[tier]); while (!this.config.speciesPools.hasOwnProperty(tier) || !this.config.speciesPools[tier].length) { console.log(`Downgraded trainer Pokemon rarity tier from ${TrainerPoolTier[tier]} to ${TrainerPoolTier[tier - 1]}`); @@ -304,7 +304,7 @@ export default class Trainer extends Phaser.GameObjects.Container { } if (retry && (attempt || 0) < 10) { - console.log('Rerolling party member...') + console.log('Rerolling party member...'); ret = this.genNewPartyMemberSpecies(level, strength, (attempt || 0) + 1); } @@ -321,7 +321,7 @@ export default class Trainer extends Phaser.GameObjects.Container { const playerField = this.scene.getPlayerField(); let score = 0; let ret: [integer, integer]; - for (let playerPokemon of playerField) { + for (const playerPokemon of playerField) { score += p.getMatchupScore(playerPokemon); if (playerPokemon.species.legendary) score /= 2; @@ -366,16 +366,16 @@ export default class Trainer extends Phaser.GameObjects.Container { getPartyMemberModifierChanceMultiplier(index: integer): number { switch (this.getPartyTemplate().getStrength(index)) { - case PartyMemberStrength.WEAKER: - return 0.75; - case PartyMemberStrength.WEAK: - return 0.675; - case PartyMemberStrength.AVERAGE: - return 0.5625; - case PartyMemberStrength.STRONG: - return 0.45; - case PartyMemberStrength.STRONGER: - return 0.375; + case PartyMemberStrength.WEAKER: + return 0.75; + case PartyMemberStrength.WEAK: + return 0.675; + case PartyMemberStrength.AVERAGE: + return 0.5625; + case PartyMemberStrength.STRONG: + return 0.45; + case PartyMemberStrength.STRONGER: + return 0.375; } } @@ -507,4 +507,4 @@ export default class Trainer extends Phaser.GameObjects.Container { export default interface Trainer { scene: BattleScene -} \ No newline at end of file +} diff --git a/src/form-change-phase.ts b/src/form-change-phase.ts index db325bd3d4f..24d5cbcfbb4 100644 --- a/src/form-change-phase.ts +++ b/src/form-change-phase.ts @@ -1,15 +1,15 @@ -import BattleScene from "./battle-scene"; -import * as Utils from "./utils"; -import { SpeciesFormKey } from "./data/pokemon-species"; -import { achvs } from "./system/achv"; -import { SpeciesFormChange, getSpeciesFormChangeMessage } from "./data/pokemon-forms"; -import { EndEvolutionPhase, EvolutionPhase } from "./evolution-phase"; -import Pokemon, { EnemyPokemon, PlayerPokemon } from "./field/pokemon"; -import { Mode } from "./ui/ui"; -import PartyUiHandler from "./ui/party-ui-handler"; -import { BattleSpec } from "./enums/battle-spec"; -import { BattlePhase, MovePhase, PokemonHealPhase } from "./phases"; -import { getTypeRgb } from "./data/type"; +import BattleScene from './battle-scene'; +import * as Utils from './utils'; +import { SpeciesFormKey } from './data/pokemon-species'; +import { achvs } from './system/achv'; +import { SpeciesFormChange, getSpeciesFormChangeMessage } from './data/pokemon-forms'; +import { EndEvolutionPhase, EvolutionPhase } from './evolution-phase'; +import Pokemon, { EnemyPokemon, PlayerPokemon } from './field/pokemon'; +import { Mode } from './ui/ui'; +import PartyUiHandler from './ui/party-ui-handler'; +import { BattleSpec } from './enums/battle-spec'; +import { BattlePhase, MovePhase, PokemonHealPhase } from './phases'; +import { getTypeRgb } from './data/type'; export class FormChangePhase extends EvolutionPhase { private formChange: SpeciesFormChange; @@ -147,7 +147,7 @@ export class FormChangePhase extends EvolutionPhase { }); }); } - }) + }); } }); }); @@ -196,7 +196,7 @@ export class QuietFormChangePhase extends BattlePhase { } const getPokemonSprite = () => { - const sprite = this.scene.addPokemonSprite(this.pokemon, this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y, `pkmn__sub`); + const sprite = this.scene.addPokemonSprite(this.pokemon, this.pokemon.x + this.pokemon.getSprite().x, this.pokemon.y + this.pokemon.getSprite().y, 'pkmn__sub'); sprite.setOrigin(0.5, 1); sprite.play(this.pokemon.getBattleSpriteKey()).stop(); sprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: false, teraColor: getTypeRgb(this.pokemon.getTeraType()) }); @@ -207,7 +207,7 @@ export class QuietFormChangePhase extends BattlePhase { }); this.scene.field.add(sprite); return sprite; - } + }; const [ pokemonTintSprite, pokemonFormTintSprite ] = [ getPokemonSprite(), getPokemonSprite() ]; @@ -288,4 +288,4 @@ export class QuietFormChangePhase extends BattlePhase { super.end(); } -} \ No newline at end of file +} diff --git a/src/game-mode.ts b/src/game-mode.ts index 888ae3b3c84..45e9ac917fc 100644 --- a/src/game-mode.ts +++ b/src/game-mode.ts @@ -1,10 +1,10 @@ -import { fixedBattles } from "./battle"; -import BattleScene from "./battle-scene"; -import { Biome } from "./data/enums/biome"; -import { Species } from "./data/enums/species"; -import PokemonSpecies, { allSpecies } from "./data/pokemon-species"; -import { Arena } from "./field/arena"; -import * as Utils from "./utils"; +import { fixedBattles } from './battle'; +import BattleScene from './battle-scene'; +import { Biome } from './data/enums/biome'; +import { Species } from './data/enums/species'; +import PokemonSpecies, { allSpecies } from './data/pokemon-species'; +import { Arena } from './field/arena'; +import * as Utils from './utils'; import * as Overrides from './overrides'; export enum GameModes { @@ -55,10 +55,10 @@ export class GameMode implements GameModeConfig { if (Overrides.STARTING_LEVEL_OVERRIDE) return Overrides.STARTING_LEVEL_OVERRIDE; switch (this.modeId) { - case GameModes.DAILY: - return 20; - default: - return 5; + case GameModes.DAILY: + return 20; + default: + return 5; } } @@ -80,19 +80,19 @@ export class GameMode implements GameModeConfig { */ getStartingBiome(scene: BattleScene): Biome { switch (this.modeId) { - case GameModes.DAILY: - return scene.generateRandomBiome(this.getWaveForDifficulty(1)); - default: - return Overrides.STARTING_BIOME_OVERRIDE || Biome.TOWN; + case GameModes.DAILY: + return scene.generateRandomBiome(this.getWaveForDifficulty(1)); + default: + return Overrides.STARTING_BIOME_OVERRIDE || Biome.TOWN; } } getWaveForDifficulty(waveIndex: integer, ignoreCurveChanges: boolean = false): integer { switch (this.modeId) { - case GameModes.DAILY: - return waveIndex + 30 + (!ignoreCurveChanges ? Math.floor(waveIndex / 5) : 0); - default: - return waveIndex; + case GameModes.DAILY: + return waveIndex + 30 + (!ignoreCurveChanges ? Math.floor(waveIndex / 5) : 0); + default: + return waveIndex; } } @@ -130,10 +130,10 @@ export class GameMode implements GameModeConfig { isTrainerBoss(waveIndex: integer, biomeType: Biome, offsetGym: boolean): boolean { switch (this.modeId) { - case GameModes.DAILY: - return waveIndex > 10 && waveIndex < 50 && !(waveIndex % 10); - default: - return (waveIndex % 30) === (offsetGym ? 0 : 20) && (biomeType !== Biome.END || this.isClassic || this.isWaveFinal(waveIndex)); + case GameModes.DAILY: + return waveIndex > 10 && waveIndex < 50 && !(waveIndex % 10); + default: + return (waveIndex % 30) === (offsetGym ? 0 : 20) && (biomeType !== Biome.END || this.isClassic || this.isWaveFinal(waveIndex)); } } @@ -149,46 +149,46 @@ export class GameMode implements GameModeConfig { isWaveFinal(waveIndex: integer): boolean { switch (this.modeId) { - case GameModes.CLASSIC: - return waveIndex === 200; - case GameModes.ENDLESS: - case GameModes.SPLICED_ENDLESS: - return !(waveIndex % 250); - case GameModes.DAILY: - return waveIndex === 50; + case GameModes.CLASSIC: + return waveIndex === 200; + case GameModes.ENDLESS: + case GameModes.SPLICED_ENDLESS: + return !(waveIndex % 250); + case GameModes.DAILY: + return waveIndex === 50; } } getClearScoreBonus(): integer { switch (this.modeId) { - case GameModes.CLASSIC: - return 5000; - case GameModes.DAILY: - return 2500; + case GameModes.CLASSIC: + return 5000; + case GameModes.DAILY: + return 2500; } } getEnemyModifierChance(isBoss: boolean): integer { switch (this.modeId) { - case GameModes.CLASSIC: - case GameModes.DAILY: - return !isBoss ? 18 : 6; - case GameModes.ENDLESS: - case GameModes.SPLICED_ENDLESS: - return !isBoss ? 12 : 4; + case GameModes.CLASSIC: + case GameModes.DAILY: + return !isBoss ? 18 : 6; + case GameModes.ENDLESS: + case GameModes.SPLICED_ENDLESS: + return !isBoss ? 12 : 4; } } getName(): string { switch (this.modeId) { - case GameModes.CLASSIC: - return 'Classic'; - case GameModes.ENDLESS: - return 'Endless'; - case GameModes.SPLICED_ENDLESS: - return 'Endless (Spliced)'; - case GameModes.DAILY: - return 'Daily Run'; + case GameModes.CLASSIC: + return 'Classic'; + case GameModes.ENDLESS: + return 'Endless'; + case GameModes.SPLICED_ENDLESS: + return 'Endless (Spliced)'; + case GameModes.DAILY: + return 'Daily Run'; } } } @@ -198,4 +198,4 @@ export const gameModes = Object.freeze({ [GameModes.ENDLESS]: new GameMode(GameModes.ENDLESS, { isEndless: true, hasShortBiomes: true, hasRandomBosses: true }), [GameModes.SPLICED_ENDLESS]: new GameMode(GameModes.SPLICED_ENDLESS, { isEndless: true, hasShortBiomes: true, hasRandomBosses: true, isSplicedOnly: true }), [GameModes.DAILY]: new GameMode(GameModes.DAILY, { isDaily: true, hasTrainers: true, hasNoShop: true }) -}); \ No newline at end of file +}); diff --git a/src/inputs-controller.ts b/src/inputs-controller.ts index 7de0969869d..336f2d00006 100644 --- a/src/inputs-controller.ts +++ b/src/inputs-controller.ts @@ -1,11 +1,11 @@ -import Phaser, {Time} from "phaser"; -import * as Utils from "./utils"; +import Phaser, {Time} from 'phaser'; +import * as Utils from './utils'; import {initTouchControls} from './touch-controls'; -import pad_generic from "./configs/pad_generic"; -import pad_unlicensedSNES from "./configs/pad_unlicensedSNES"; -import pad_xbox360 from "./configs/pad_xbox360"; -import pad_dualshock from "./configs/pad_dualshock"; -import {Button} from "./enums/buttons"; +import pad_generic from './configs/pad_generic'; +import pad_unlicensedSNES from './configs/pad_unlicensedSNES'; +import pad_xbox360 from './configs/pad_xbox360'; +import pad_dualshock from './configs/pad_dualshock'; +import {Button} from './enums/buttons'; export interface GamepadMapping { [key: string]: number; @@ -46,19 +46,19 @@ const repeatInputDelayMillis = 250; * providing a unified interface for all input-related interactions. */ export class InputsController { - private buttonKeys: Phaser.Input.Keyboard.Key[][]; - private gamepads: Array = new Array(); - private scene: Phaser.Scene; + private buttonKeys: Phaser.Input.Keyboard.Key[][]; + private gamepads: Array = new Array(); + private scene: Phaser.Scene; - private buttonLock: Button; - private buttonLock2: Button; - private interactions: Map> = new Map(); - private time: Time; - private player: Map = new Map(); + private buttonLock: Button; + private buttonLock2: Button; + private interactions: Map> = new Map(); + private time: Time; + private player: Map = new Map(); - private gamepadSupport: boolean = true; + private gamepadSupport: boolean = true; - /** + /** * Initializes a new instance of the game control system, setting up initial state and configurations. * * @param scene - The Phaser scene associated with this instance. @@ -69,25 +69,25 @@ export class InputsController { * Specific buttons like MENU and STATS are set not to repeat their actions. * It concludes by calling the `init` method to complete the setup. */ - constructor(scene: Phaser.Scene) { - this.scene = scene; - this.time = this.scene.time; - this.buttonKeys = []; + constructor(scene: Phaser.Scene) { + this.scene = scene; + this.time = this.scene.time; + this.buttonKeys = []; - for (const b of Utils.getEnumValues(Button)) { - this.interactions[b] = { - pressTime: false, - isPressed: false, - source: null, - } - } - // We don't want the menu key to be repeated - delete this.interactions[Button.MENU]; - delete this.interactions[Button.STATS]; - this.init(); + for (const b of Utils.getEnumValues(Button)) { + this.interactions[b] = { + pressTime: false, + isPressed: false, + source: null, + }; } + // We don't want the menu key to be repeated + delete this.interactions[Button.MENU]; + delete this.interactions[Button.STATS]; + this.init(); + } - /** + /** * Sets up event handlers and initializes gamepad and keyboard controls. * * @remarks @@ -95,46 +95,46 @@ export class InputsController { * It handles gamepad connections/disconnections and button press events, and ensures keyboard controls are set up. * Additionally, it manages the game's behavior when it loses focus to prevent unwanted game actions during this state. */ - init(): void { - this.events = new Phaser.Events.EventEmitter(); - this.scene.game.events.on(Phaser.Core.Events.BLUR, () => { - this.loseFocus() - }) + init(): void { + this.events = new Phaser.Events.EventEmitter(); + this.scene.game.events.on(Phaser.Core.Events.BLUR, () => { + this.loseFocus(); + }); - if (typeof this.scene.input.gamepad !== 'undefined') { - this.scene.input.gamepad.on('connected', function (thisGamepad) { - this.refreshGamepads(); - this.setupGamepad(thisGamepad); - }, this); + if (typeof this.scene.input.gamepad !== 'undefined') { + this.scene.input.gamepad.on('connected', function (thisGamepad) { + this.refreshGamepads(); + this.setupGamepad(thisGamepad); + }, this); - // Check to see if the gamepad has already been setup by the browser - this.scene.input.gamepad.refreshPads(); - if (this.scene.input.gamepad.total) { - this.refreshGamepads(); - for (const thisGamepad of this.gamepads) { - this.scene.input.gamepad.emit('connected', thisGamepad); - } - } - - this.scene.input.gamepad.on('down', this.gamepadButtonDown, this); - this.scene.input.gamepad.on('up', this.gamepadButtonUp, this); + // Check to see if the gamepad has already been setup by the browser + this.scene.input.gamepad.refreshPads(); + if (this.scene.input.gamepad.total) { + this.refreshGamepads(); + for (const thisGamepad of this.gamepads) { + this.scene.input.gamepad.emit('connected', thisGamepad); } + } - // Keyboard - this.setupKeyboardControls(); + this.scene.input.gamepad.on('down', this.gamepadButtonDown, this); + this.scene.input.gamepad.on('up', this.gamepadButtonUp, this); } - /** + // Keyboard + this.setupKeyboardControls(); + } + + /** * Handles actions to take when the game loses focus, such as deactivating pressed keys. * * @remarks * This method is triggered when the game or the browser tab loses focus. It ensures that any keys pressed are deactivated to prevent stuck keys affecting gameplay when the game is not active. */ - loseFocus(): void { - this.deactivatePressedKey(); - } + loseFocus(): void { + this.deactivatePressedKey(); + } - /** + /** * Enables or disables support for gamepad input. * * @param value - A boolean indicating whether gamepad support should be enabled (true) or disabled (false). @@ -142,17 +142,17 @@ export class InputsController { * @remarks * This method toggles gamepad support. If disabled, it also ensures that all currently pressed gamepad buttons are deactivated to avoid stuck inputs. */ - setGamepadSupport(value: boolean): void { - if (value) { - this.gamepadSupport = true; - } else { - this.gamepadSupport = false; - // if we disable the gamepad, we want to release every key pressed - this.deactivatePressedKey(); - } + setGamepadSupport(value: boolean): void { + if (value) { + this.gamepadSupport = true; + } else { + this.gamepadSupport = false; + // if we disable the gamepad, we want to release every key pressed + this.deactivatePressedKey(); } + } - /** + /** * Updates the interaction handling by processing input states. * This method gives priority to certain buttons by reversing the order in which they are checked. * @@ -165,30 +165,30 @@ export class InputsController { * Special handling is applied if gamepad support is disabled but a gamepad source is still triggering inputs, * preventing potential infinite loops by removing the last processed movement time for the button. */ - update(): void { - for (const b of Utils.getEnumValues(Button).reverse()) { - if ( - this.interactions.hasOwnProperty(b) && + update(): void { + for (const b of Utils.getEnumValues(Button).reverse()) { + if ( + this.interactions.hasOwnProperty(b) && this.repeatInputDurationJustPassed(b) && this.interactions[b].isPressed - ) { - // Prevents repeating button interactions when gamepad support is disabled. - if (!this.gamepadSupport && this.interactions[b].source === 'gamepad') { - // Deletes the last interaction for a button if gamepad is disabled. - this.delLastProcessedMovementTime(b); - return; - } - // Emits an event for the button press. - this.events.emit('input_down', { - controller_type: this.interactions[b].source, - button: b, - }); - this.setLastProcessedMovementTime(b, this.interactions[b].source); - } + ) { + // Prevents repeating button interactions when gamepad support is disabled. + if (!this.gamepadSupport && this.interactions[b].source === 'gamepad') { + // Deletes the last interaction for a button if gamepad is disabled. + this.delLastProcessedMovementTime(b); + return; } + // Emits an event for the button press. + this.events.emit('input_down', { + controller_type: this.interactions[b].source, + button: b, + }); + this.setLastProcessedMovementTime(b, this.interactions[b].source); + } } + } - /** + /** * Configures a gamepad for use based on its device ID. * * @param thisGamepad - The gamepad to set up. @@ -198,13 +198,13 @@ export class InputsController { * It updates the player's gamepad mapping based on the identified configuration, ensuring * that the gamepad controls are correctly mapped to in-game actions. */ - setupGamepad(thisGamepad: Phaser.Input.Gamepad.Gamepad): void { - let gamepadID = thisGamepad.id.toLowerCase(); - const mappedPad = this.mapGamepad(gamepadID); - this.player['mapping'] = mappedPad.gamepadMapping; - } + setupGamepad(thisGamepad: Phaser.Input.Gamepad.Gamepad): void { + const gamepadID = thisGamepad.id.toLowerCase(); + const mappedPad = this.mapGamepad(gamepadID); + this.player['mapping'] = mappedPad.gamepadMapping; + } - /** + /** * Refreshes and re-indexes the list of connected gamepads. * * @remarks @@ -212,18 +212,18 @@ export class InputsController { * It corrects the index of each gamepad to account for any previously undefined entries, * ensuring that all gamepads are properly indexed and can be accurately referenced within the game. */ - refreshGamepads(): void { - // Sometimes, gamepads are undefined. For some reason. - this.gamepads = this.scene.input.gamepad.gamepads.filter(function (el) { - return el != null; - }); + refreshGamepads(): void { + // Sometimes, gamepads are undefined. For some reason. + this.gamepads = this.scene.input.gamepad.gamepads.filter(function (el) { + return el != null; + }); - for (const [index, thisGamepad] of this.gamepads.entries()) { - thisGamepad.index = index; // Overwrite the gamepad index, in case we had undefined gamepads earlier - } + for (const [index, thisGamepad] of this.gamepads.entries()) { + thisGamepad.index = index; // Overwrite the gamepad index, in case we had undefined gamepads earlier } + } - /** + /** * Retrieves the current gamepad mapping for in-game actions. * * @returns An object mapping gamepad buttons to in-game actions based on the player's current gamepad configuration. @@ -234,31 +234,31 @@ export class InputsController { * The mapping includes directional controls, action buttons, and system commands among others, * adjusted for any custom settings such as swapped action buttons. */ - getActionGamepadMapping(): ActionGamepadMapping { - const gamepadMapping = {}; - if (!this.player?.mapping) return gamepadMapping; - gamepadMapping[this.player.mapping.LC_N] = Button.UP; - gamepadMapping[this.player.mapping.LC_S] = Button.DOWN; - gamepadMapping[this.player.mapping.LC_W] = Button.LEFT; - gamepadMapping[this.player.mapping.LC_E] = Button.RIGHT; - gamepadMapping[this.player.mapping.TOUCH] = Button.SUBMIT; - gamepadMapping[this.player.mapping.RC_S] = this.scene.abSwapped ? Button.CANCEL : Button.ACTION; - gamepadMapping[this.player.mapping.RC_E] = this.scene.abSwapped ? Button.ACTION : Button.CANCEL; - gamepadMapping[this.player.mapping.SELECT] = Button.STATS; - gamepadMapping[this.player.mapping.START] = Button.MENU; - gamepadMapping[this.player.mapping.RB] = Button.CYCLE_SHINY; - gamepadMapping[this.player.mapping.LB] = Button.CYCLE_FORM; - gamepadMapping[this.player.mapping.LT] = Button.CYCLE_GENDER; - gamepadMapping[this.player.mapping.RT] = Button.CYCLE_ABILITY; - gamepadMapping[this.player.mapping.RC_W] = Button.CYCLE_NATURE; - gamepadMapping[this.player.mapping.RC_N] = Button.CYCLE_VARIANT; - gamepadMapping[this.player.mapping.LS] = Button.SPEED_UP; - gamepadMapping[this.player.mapping.RS] = Button.SLOW_DOWN; + getActionGamepadMapping(): ActionGamepadMapping { + const gamepadMapping = {}; + if (!this.player?.mapping) return gamepadMapping; + gamepadMapping[this.player.mapping.LC_N] = Button.UP; + gamepadMapping[this.player.mapping.LC_S] = Button.DOWN; + gamepadMapping[this.player.mapping.LC_W] = Button.LEFT; + gamepadMapping[this.player.mapping.LC_E] = Button.RIGHT; + gamepadMapping[this.player.mapping.TOUCH] = Button.SUBMIT; + gamepadMapping[this.player.mapping.RC_S] = this.scene.abSwapped ? Button.CANCEL : Button.ACTION; + gamepadMapping[this.player.mapping.RC_E] = this.scene.abSwapped ? Button.ACTION : Button.CANCEL; + gamepadMapping[this.player.mapping.SELECT] = Button.STATS; + gamepadMapping[this.player.mapping.START] = Button.MENU; + gamepadMapping[this.player.mapping.RB] = Button.CYCLE_SHINY; + gamepadMapping[this.player.mapping.LB] = Button.CYCLE_FORM; + gamepadMapping[this.player.mapping.LT] = Button.CYCLE_GENDER; + gamepadMapping[this.player.mapping.RT] = Button.CYCLE_ABILITY; + gamepadMapping[this.player.mapping.RC_W] = Button.CYCLE_NATURE; + gamepadMapping[this.player.mapping.RC_N] = Button.CYCLE_VARIANT; + gamepadMapping[this.player.mapping.LS] = Button.SPEED_UP; + gamepadMapping[this.player.mapping.RS] = Button.SLOW_DOWN; - return gamepadMapping; - } + return gamepadMapping; + } - /** + /** * Handles the 'down' event for gamepad buttons, emitting appropriate events and updating the interaction state. * * @param pad - The gamepad on which the button press occurred. @@ -271,20 +271,20 @@ export class InputsController { * - Checks if the pressed button is mapped to a game action. * - If mapped, emits an 'input_down' event with the controller type and button action, and updates the interaction of this button. */ - gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void { - if (!this.gamepadSupport) return; - const actionMapping = this.getActionGamepadMapping(); - const buttonDown = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index]; - if (buttonDown !== undefined) { - this.events.emit('input_down', { - controller_type: 'gamepad', - button: buttonDown, - }); - this.setLastProcessedMovementTime(buttonDown, 'gamepad'); - } + gamepadButtonDown(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void { + if (!this.gamepadSupport) return; + const actionMapping = this.getActionGamepadMapping(); + const buttonDown = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index]; + if (buttonDown !== undefined) { + this.events.emit('input_down', { + controller_type: 'gamepad', + button: buttonDown, + }); + this.setLastProcessedMovementTime(buttonDown, 'gamepad'); } + } - /** + /** * Handles the 'up' event for gamepad buttons, emitting appropriate events and clearing the interaction state. * * @param pad - The gamepad on which the button release occurred. @@ -297,20 +297,20 @@ export class InputsController { * - Checks if the released button is mapped to a game action. * - If mapped, emits an 'input_up' event with the controller type and button action, and clears the interaction for this button. */ - gamepadButtonUp(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void { - if (!this.gamepadSupport) return; - const actionMapping = this.getActionGamepadMapping(); - const buttonUp = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index]; - if (buttonUp !== undefined) { - this.events.emit('input_up', { - controller_type: 'gamepad', - button: buttonUp, - }); - this.delLastProcessedMovementTime(buttonUp); - } + gamepadButtonUp(pad: Phaser.Input.Gamepad.Gamepad, button: Phaser.Input.Gamepad.Button, value: number): void { + if (!this.gamepadSupport) return; + const actionMapping = this.getActionGamepadMapping(); + const buttonUp = actionMapping.hasOwnProperty(button.index) && actionMapping[button.index]; + if (buttonUp !== undefined) { + this.events.emit('input_up', { + controller_type: 'gamepad', + button: buttonUp, + }); + this.delLastProcessedMovementTime(buttonUp); } + } - /** + /** * Configures keyboard controls for the game, mapping physical keys to game actions. * * @remarks @@ -328,43 +328,43 @@ export class InputsController { * Post-setup, it initializes touch controls (if applicable) and starts listening for keyboard inputs using * `listenInputKeyboard`, ensuring that all configured keys are actively monitored for player interactions. */ - setupKeyboardControls(): void { - const keyCodes = Phaser.Input.Keyboard.KeyCodes; - const keyConfig = { - [Button.UP]: [keyCodes.UP, keyCodes.W], - [Button.DOWN]: [keyCodes.DOWN, keyCodes.S], - [Button.LEFT]: [keyCodes.LEFT, keyCodes.A], - [Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D], - [Button.SUBMIT]: [keyCodes.ENTER], - [Button.ACTION]: [keyCodes.SPACE, keyCodes.Z], - [Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X], - [Button.MENU]: [keyCodes.ESC, keyCodes.M], - [Button.STATS]: [keyCodes.SHIFT, keyCodes.C], - [Button.CYCLE_SHINY]: [keyCodes.R], - [Button.CYCLE_FORM]: [keyCodes.F], - [Button.CYCLE_GENDER]: [keyCodes.G], - [Button.CYCLE_ABILITY]: [keyCodes.E], - [Button.CYCLE_NATURE]: [keyCodes.N], - [Button.CYCLE_VARIANT]: [keyCodes.V], - [Button.SPEED_UP]: [keyCodes.PLUS], - [Button.SLOW_DOWN]: [keyCodes.MINUS] - }; - const mobileKeyConfig = {}; - for (const b of Utils.getEnumValues(Button)) { - const keys: Phaser.Input.Keyboard.Key[] = []; - if (keyConfig.hasOwnProperty(b)) { - for (let k of keyConfig[b]) - keys.push(this.scene.input.keyboard.addKey(k, false)); - mobileKeyConfig[Button[b]] = keys[0]; - } - this.buttonKeys[b] = keys; - } - - initTouchControls(mobileKeyConfig); - this.listenInputKeyboard(); + setupKeyboardControls(): void { + const keyCodes = Phaser.Input.Keyboard.KeyCodes; + const keyConfig = { + [Button.UP]: [keyCodes.UP, keyCodes.W], + [Button.DOWN]: [keyCodes.DOWN, keyCodes.S], + [Button.LEFT]: [keyCodes.LEFT, keyCodes.A], + [Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D], + [Button.SUBMIT]: [keyCodes.ENTER], + [Button.ACTION]: [keyCodes.SPACE, keyCodes.Z], + [Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X], + [Button.MENU]: [keyCodes.ESC, keyCodes.M], + [Button.STATS]: [keyCodes.SHIFT, keyCodes.C], + [Button.CYCLE_SHINY]: [keyCodes.R], + [Button.CYCLE_FORM]: [keyCodes.F], + [Button.CYCLE_GENDER]: [keyCodes.G], + [Button.CYCLE_ABILITY]: [keyCodes.E], + [Button.CYCLE_NATURE]: [keyCodes.N], + [Button.CYCLE_VARIANT]: [keyCodes.V], + [Button.SPEED_UP]: [keyCodes.PLUS], + [Button.SLOW_DOWN]: [keyCodes.MINUS] + }; + const mobileKeyConfig = {}; + for (const b of Utils.getEnumValues(Button)) { + const keys: Phaser.Input.Keyboard.Key[] = []; + if (keyConfig.hasOwnProperty(b)) { + for (const k of keyConfig[b]) + keys.push(this.scene.input.keyboard.addKey(k, false)); + mobileKeyConfig[Button[b]] = keys[0]; + } + this.buttonKeys[b] = keys; } - /** + initTouchControls(mobileKeyConfig); + this.listenInputKeyboard(); + } + + /** * Sets up event listeners for keyboard inputs on all registered keys. * * @remarks @@ -382,28 +382,28 @@ export class InputsController { * This setup ensures that each key on the keyboard is monitored for press and release events, * and that these events are properly communicated within the system. */ - listenInputKeyboard(): void { - this.buttonKeys.forEach((row, index) => { - for (const key of row) { - key.on('down', () => { - this.events.emit('input_down', { - controller_type: 'keyboard', - button: index, - }); - this.setLastProcessedMovementTime(index, 'keyboard'); - }); - key.on('up', () => { - this.events.emit('input_up', { - controller_type: 'keyboard', - button: index, - }); - this.delLastProcessedMovementTime(index); - }); - } + listenInputKeyboard(): void { + this.buttonKeys.forEach((row, index) => { + for (const key of row) { + key.on('down', () => { + this.events.emit('input_down', { + controller_type: 'keyboard', + button: index, + }); + this.setLastProcessedMovementTime(index, 'keyboard'); }); - } + key.on('up', () => { + this.events.emit('input_up', { + controller_type: 'keyboard', + button: index, + }); + this.delLastProcessedMovementTime(index); + }); + } + }); + } - /** + /** * Maps a gamepad ID to a specific gamepad configuration based on the ID's characteristics. * * @param id - The gamepad ID string, typically representing a unique identifier for a gamepad model or make. @@ -416,33 +416,33 @@ export class InputsController { * - If the ID contains '054c', it is identified as a DualShock gamepad. * If no specific identifiers are recognized, a generic gamepad configuration is returned. */ - mapGamepad(id: string): GamepadConfig { - id = id.toLowerCase(); + mapGamepad(id: string): GamepadConfig { + id = id.toLowerCase(); - if (id.includes('081f') && id.includes('e401')) { - return pad_unlicensedSNES; - } else if (id.includes('xbox') && id.includes('360')) { - return pad_xbox360; - } else if (id.includes('054c')) { - return pad_dualshock; - } - - return pad_generic; + if (id.includes('081f') && id.includes('e401')) { + return pad_unlicensedSNES; + } else if (id.includes('xbox') && id.includes('360')) { + return pad_xbox360; + } else if (id.includes('054c')) { + return pad_dualshock; } - /** + return pad_generic; + } + + /** * repeatInputDurationJustPassed returns true if @param button has been held down long * enough to fire a repeated input. A button must claim the buttonLock before * firing a repeated input - this is to prevent multiple buttons from firing repeatedly. */ - repeatInputDurationJustPassed(button: Button): boolean { - if (!this.isButtonLocked(button)) return false; - if (this.time.now - this.interactions[button].pressTime >= repeatInputDelayMillis) { - return true; - } + repeatInputDurationJustPassed(button: Button): boolean { + if (!this.isButtonLocked(button)) return false; + if (this.time.now - this.interactions[button].pressTime >= repeatInputDelayMillis) { + return true; } + } - /** + /** * This method updates the interaction state to reflect that the button is pressed. * * @param button - The button for which to set the interaction. @@ -457,15 +457,15 @@ export class InputsController { * * Additionally, this method locks the button (by calling `setButtonLock`) to prevent it from being re-processed until it is released, ensuring that each press is handled distinctly. */ - setLastProcessedMovementTime(button: Button, source: String = 'keyboard'): void { - if (!this.interactions.hasOwnProperty(button)) return; - this.setButtonLock(button); - this.interactions[button].pressTime = this.time.now; - this.interactions[button].isPressed = true; - this.interactions[button].source = source; - } + setLastProcessedMovementTime(button: Button, source: String = 'keyboard'): void { + if (!this.interactions.hasOwnProperty(button)) return; + this.setButtonLock(button); + this.interactions[button].pressTime = this.time.now; + this.interactions[button].isPressed = true; + this.interactions[button].source = source; + } - /** + /** * Clears the last interaction for a specified button. * * @param button - The button for which to clear the interaction. @@ -479,15 +479,15 @@ export class InputsController { * * It releases the button lock, which prevents the button from being processed repeatedly until it's explicitly released. */ - delLastProcessedMovementTime(button: Button): void { - if (!this.interactions.hasOwnProperty(button)) return; - this.releaseButtonLock(button); - this.interactions[button].pressTime = null; - this.interactions[button].isPressed = false; - this.interactions[button].source = null; - } + delLastProcessedMovementTime(button: Button): void { + if (!this.interactions.hasOwnProperty(button)) return; + this.releaseButtonLock(button); + this.interactions[button].pressTime = null; + this.interactions[button].isPressed = false; + this.interactions[button].source = null; + } - /** + /** * Deactivates all currently pressed keys and resets their interaction states. * * @remarks @@ -505,19 +505,19 @@ export class InputsController { * * This method is typically called when needing to ensure that all inputs are neutralized. */ - deactivatePressedKey(): void { - this.releaseButtonLock(this.buttonLock); - this.releaseButtonLock(this.buttonLock2); - for (const b of Utils.getEnumValues(Button)) { - if (this.interactions.hasOwnProperty(b)) { - this.interactions[b].pressTime = null; - this.interactions[b].isPressed = false; - this.interactions[b].source = null; - } - } + deactivatePressedKey(): void { + this.releaseButtonLock(this.buttonLock); + this.releaseButtonLock(this.buttonLock2); + for (const b of Utils.getEnumValues(Button)) { + if (this.interactions.hasOwnProperty(b)) { + this.interactions[b].pressTime = null; + this.interactions[b].isPressed = false; + this.interactions[b].source = null; + } } + } - /** + /** * Checks if a specific button is currently locked. * * @param button - The button to check for a lock status. @@ -527,11 +527,11 @@ export class InputsController { * This method is used to determine if a given button is currently prevented from being processed due to a lock. * It checks against two separate lock variables, allowing for up to two buttons to be locked simultaneously. */ - isButtonLocked(button: Button): boolean { - return (this.buttonLock === button || this.buttonLock2 === button); - } + isButtonLocked(button: Button): boolean { + return (this.buttonLock === button || this.buttonLock2 === button); + } - /** + /** * Sets a lock on a given button if it is not already locked. * * @param button - The button to lock. @@ -542,15 +542,15 @@ export class InputsController { * If not, it locks the button using the first available lock variable. * This mechanism allows for up to two buttons to be locked at the same time. */ - setButtonLock(button: Button): void { - if (this.buttonLock === button || this.buttonLock2 === button) return; - if (this.buttonLock === button) this.buttonLock2 = button; - else if (this.buttonLock2 === button) this.buttonLock = button; - else if (!!this.buttonLock) this.buttonLock2 = button; - else this.buttonLock = button; - } + setButtonLock(button: Button): void { + if (this.buttonLock === button || this.buttonLock2 === button) return; + if (this.buttonLock === button) this.buttonLock2 = button; + else if (this.buttonLock2 === button) this.buttonLock = button; + else if (!!this.buttonLock) this.buttonLock2 = button; + else this.buttonLock = button; + } - /** + /** * Releases a lock on a specific button, allowing it to be processed again. * * @param button - The button whose lock is to be released. @@ -560,8 +560,8 @@ export class InputsController { * If either lock matches the specified button, that lock is cleared. * This action frees the button to be processed again, ensuring it can respond to new inputs. */ - releaseButtonLock(button: Button): void { - if (this.buttonLock === button) this.buttonLock = null; - else if (this.buttonLock2 === button) this.buttonLock2 = null; - } -} \ No newline at end of file + releaseButtonLock(button: Button): void { + if (this.buttonLock === button) this.buttonLock = null; + else if (this.buttonLock2 === button) this.buttonLock2 = null; + } +} diff --git a/src/loading-scene.ts b/src/loading-scene.ts index 56d0ab47f13..b5169e1860a 100644 --- a/src/loading-scene.ts +++ b/src/loading-scene.ts @@ -1,14 +1,14 @@ -import { GachaType } from "./data/egg"; -import { Biome } from "./data/enums/biome"; -import { TrainerType } from "./data/enums/trainer-type"; -import { trainerConfigs } from "./data/trainer-config"; -import { getBiomeHasProps } from "./field/arena"; -import CacheBustedLoaderPlugin from "./plugins/cache-busted-loader-plugin"; -import { SceneBase } from "./scene-base"; -import { WindowVariant, getWindowVariantSuffix } from "./ui/ui-theme"; -import { isMobile } from "./touch-controls"; -import * as Utils from "./utils"; -import { initI18n } from "./plugins/i18n"; +import { GachaType } from './data/egg'; +import { Biome } from './data/enums/biome'; +import { TrainerType } from './data/enums/trainer-type'; +import { trainerConfigs } from './data/trainer-config'; +import { getBiomeHasProps } from './field/arena'; +import CacheBustedLoaderPlugin from './plugins/cache-busted-loader-plugin'; +import { SceneBase } from './scene-base'; +import { WindowVariant, getWindowVariantSuffix } from './ui/ui-theme'; +import { isMobile } from './touch-controls'; +import * as Utils from './utils'; +import { initI18n } from './plugins/i18n'; export class LoadingScene extends SceneBase { constructor() { @@ -35,7 +35,7 @@ export class LoadingScene extends SceneBase { this.loadImage('candy_overlay', 'ui'); this.loadImage('cursor', 'ui'); this.loadImage('cursor_reverse', 'ui'); - for (let wv of Utils.getEnumValues(WindowVariant)) { + for (const wv of Utils.getEnumValues(WindowVariant)) { for (let w = 1; w <= 5; w++) this.loadImage(`window_${w}${getWindowVariantSuffix(wv)}`, 'ui/windows'); } @@ -100,7 +100,7 @@ export class LoadingScene extends SceneBase { this.loadImage('summary_bg', 'ui'); this.loadImage('summary_overlay_shiny', 'ui'); this.loadImage('summary_profile', 'ui'); - this.loadImage('summary_profile_prompt_z', 'ui') // The pixel Z button prompt + this.loadImage('summary_profile_prompt_z', 'ui'); // The pixel Z button prompt this.loadImage('summary_profile_prompt_a', 'ui'); // The pixel A button prompt this.loadImage('summary_profile_ability', 'ui'); // Pixel text 'ABILITY' this.loadImage('summary_profile_passive', 'ui'); // Pixel text 'PASSIVE' @@ -174,8 +174,8 @@ export class LoadingScene extends SceneBase { this.loadAtlas('c_rival_f', 'character', 'rival_f'); // Load pokemon-related images - this.loadImage(`pkmn__back__sub`, 'pokemon/back', 'sub.png'); - this.loadImage(`pkmn__sub`, 'pokemon', 'sub.png'); + this.loadImage('pkmn__back__sub', 'pokemon/back', 'sub.png'); + this.loadImage('pkmn__sub', 'pokemon', 'sub.png'); this.loadAtlas('battle_stats', 'effects'); this.loadAtlas('shiny', 'effects'); this.loadAtlas('shiny_2', 'effects'); @@ -310,8 +310,8 @@ export class LoadingScene extends SceneBase { y: height / 2 - 24, text: '0%', style: { - font: "72px emerald", - color: "#ffffff", + font: '72px emerald', + color: '#ffffff', }, }); percentText.setOrigin(0.5, 0.5); @@ -319,10 +319,10 @@ export class LoadingScene extends SceneBase { const assetText = this.make.text({ x: width / 2, y: height / 2 + 48, - text: "", + text: '', style: { - font: "48px emerald", - color: "#ffffff", + font: '48px emerald', + color: '#ffffff', }, }); assetText.setOrigin(0.5, 0.5); @@ -331,7 +331,7 @@ export class LoadingScene extends SceneBase { intro.setOrigin(0, 0); intro.setScale(3); - this.load.on("progress", (value: string) => { + this.load.on('progress', (value: string) => { const parsedValue = parseFloat(value); percentText.setText(`${Math.floor(parsedValue * 100)}%`); progressBar.clear(); @@ -339,7 +339,7 @@ export class LoadingScene extends SceneBase { progressBar.fillRect(width / 2 - 320, 360, 640 * parsedValue, 64); }); - this.load.on("fileprogress", file => { + this.load.on('fileprogress', file => { assetText.setText(`Loading asset: ${file.key}`); }); @@ -360,33 +360,33 @@ export class LoadingScene extends SceneBase { this.load.on('filecomplete', key => { switch (key) { - case 'intro_dark': - intro.load('intro_dark'); - intro.on('complete', () => { - this.tweens.add({ - targets: intro, - duration: 500, - alpha: 0, - ease: 'Sine.easeIn' - }); - loadingGraphics.map(g => g.setVisible(true)); + case 'intro_dark': + intro.load('intro_dark'); + intro.on('complete', () => { + this.tweens.add({ + targets: intro, + duration: 500, + alpha: 0, + ease: 'Sine.easeIn' }); - intro.play(); - break; - case 'loading_bg': - bg.setTexture('loading_bg'); - if (mobile) - bg.setVisible(true); - break; - case 'logo': - logo.setTexture('logo'); - if (mobile) - logo.setVisible(true); - break; + loadingGraphics.map(g => g.setVisible(true)); + }); + intro.play(); + break; + case 'loading_bg': + bg.setTexture('loading_bg'); + if (mobile) + bg.setVisible(true); + break; + case 'logo': + logo.setTexture('logo'); + if (mobile) + logo.setVisible(true); + break; } }); - this.load.on("complete", () => destroyLoadingAssets()); + this.load.on('complete', () => destroyLoadingAssets()); } get gameHeight() { @@ -398,6 +398,6 @@ export class LoadingScene extends SceneBase { } async create() { - this.scene.start("battle"); + this.scene.start('battle'); } -} \ No newline at end of file +} diff --git a/src/locales/de/ability-trigger.ts b/src/locales/de/ability-trigger.ts index eb5022996d4..fc1a09eb9f7 100644 --- a/src/locales/de/ability-trigger.ts +++ b/src/locales/de/ability-trigger.ts @@ -1,6 +1,6 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const abilityTriggers: SimpleTranslationEntries = { - 'blockRecoilDamage' : `{{pokemonName}} wurde durch {{abilityName}}\nvor Rückstoß geschützt!`, - 'badDreams': `{{pokemonName}} ist in einem Alptraum gefangen!`, + 'blockRecoilDamage' : '{{pokemonName}} wurde durch {{abilityName}}\nvor Rückstoß geschützt!', + 'badDreams': '{{pokemonName}} ist in einem Alptraum gefangen!', } as const; diff --git a/src/locales/de/ability.ts b/src/locales/de/ability.ts index 17472339717..e71bfa549f5 100644 --- a/src/locales/de/ability.ts +++ b/src/locales/de/ability.ts @@ -1,1244 +1,1244 @@ -import { AbilityTranslationEntries } from "#app/plugins/i18n.js"; +import { AbilityTranslationEntries } from '#app/plugins/i18n.js'; export const ability: AbilityTranslationEntries = { stench: { - name: "Duftnote", - description: "Lässt das Ziel beim Angriff eventuell durch Gestank zurückschrecken.", + name: 'Duftnote', + description: 'Lässt das Ziel beim Angriff eventuell durch Gestank zurückschrecken.', }, drizzle: { - name: "Niesel", - description: "Ruft bei Kampfantritt Regen herbei.", + name: 'Niesel', + description: 'Ruft bei Kampfantritt Regen herbei.', }, speedBoost: { - name: "Temposchub", - description: "Erhöht in jeder Runde die Initiative.", + name: 'Temposchub', + description: 'Erhöht in jeder Runde die Initiative.', }, battleArmor: { - name: "Kampfpanzer", - description: "Wehrt gegnerische Volltreffer mit einem harten Panzer ab.", + name: 'Kampfpanzer', + description: 'Wehrt gegnerische Volltreffer mit einem harten Panzer ab.', }, sturdy: { - name: "Robustheit", - description: "Bietet Schutz gegen K.O.-Attacken. Bei vollen KP übersteht das Pokémon auch K.O.-Treffer.", + name: 'Robustheit', + description: 'Bietet Schutz gegen K.O.-Attacken. Bei vollen KP übersteht das Pokémon auch K.O.-Treffer.', }, damp: { - name: "Feuchtigkeit", - description: "Befeuchtet die Umgebung und verhindert so den Einsatz von Attacken wie Finale, die Explosionen auslösen.", + name: 'Feuchtigkeit', + description: 'Befeuchtet die Umgebung und verhindert so den Einsatz von Attacken wie Finale, die Explosionen auslösen.', }, limber: { - name: "Flexibilität", - description: "Der flexible Körper des Pokémon schützt es vor Paralyse.", + name: 'Flexibilität', + description: 'Der flexible Körper des Pokémon schützt es vor Paralyse.', }, sandVeil: { - name: "Sandschleier", - description: "Erhöht in Sandstürmen den Ausweichwert.", + name: 'Sandschleier', + description: 'Erhöht in Sandstürmen den Ausweichwert.', }, static: { - name: "Statik", - description: "Kann bei Berührung durch statisch aufgeladenen Körper paralysieren.", + name: 'Statik', + description: 'Kann bei Berührung durch statisch aufgeladenen Körper paralysieren.', }, voltAbsorb: { - name: "Voltabsorber", - description: "Treffer durch Elektro-Attacken verursachen keinen Schaden, sondern regenerieren stattdessen KP.", + name: 'Voltabsorber', + description: 'Treffer durch Elektro-Attacken verursachen keinen Schaden, sondern regenerieren stattdessen KP.', }, waterAbsorb: { - name: "H2OAbsorber", - description: "Treffer durch Wasser-Attacken verursachen keinen Schaden, sondern regenerieren stattdessen KP.", + name: 'H2OAbsorber', + description: 'Treffer durch Wasser-Attacken verursachen keinen Schaden, sondern regenerieren stattdessen KP.', }, oblivious: { - name: "Dösigkeit", - description: "Das Pokémon ist so apathisch, dass es nicht betört oder provoziert werden kann.", + name: 'Dösigkeit', + description: 'Das Pokémon ist so apathisch, dass es nicht betört oder provoziert werden kann.', }, cloudNine: { - name: "Wolke Sieben", - description: "Hebt alle Wetter-Effekte auf.", + name: 'Wolke Sieben', + description: 'Hebt alle Wetter-Effekte auf.', }, compoundEyes: { - name: "Facettenauge", - description: "Erhöht die Genauigkeit von Attacken.", + name: 'Facettenauge', + description: 'Erhöht die Genauigkeit von Attacken.', }, insomnia: { - name: "Insomnia", - description: "Verhindert Einschlafen.", + name: 'Insomnia', + description: 'Verhindert Einschlafen.', }, colorChange: { - name: "Farbwechsel", - description: "Ändert seinen Typ zu dem der Attacke des Angreifers.", + name: 'Farbwechsel', + description: 'Ändert seinen Typ zu dem der Attacke des Angreifers.', }, immunity: { - name: "Immunität", - description: "Das starke Immunsystem des Pokémon verhindert Vergiftungen.", + name: 'Immunität', + description: 'Das starke Immunsystem des Pokémon verhindert Vergiftungen.', }, flashFire: { - name: "Feuerfänger", - description: "Verstärkt Feuer-Attacken, wenn es von Feuer-Attacken getroffen wird.", + name: 'Feuerfänger', + description: 'Verstärkt Feuer-Attacken, wenn es von Feuer-Attacken getroffen wird.', }, shieldDust: { - name: "Puderabwehr", - description: "Blockiert durch Puder die Zusatzeffekte gegnerischer Angriffe.", + name: 'Puderabwehr', + description: 'Blockiert durch Puder die Zusatzeffekte gegnerischer Angriffe.', }, ownTempo: { - name: "Tempomacher", - description: "Das Pokémon lässt sich nicht aus der Ruhe bringen und verhindert so Verwirrung.", + name: 'Tempomacher', + description: 'Das Pokémon lässt sich nicht aus der Ruhe bringen und verhindert so Verwirrung.', }, suctionCups: { - name: "Saugnapf", - description: "Blockt Attacken und Items, die Pokémon austauschen, indem es sich mit einem Saugnapf am Boden verankert.", + name: 'Saugnapf', + description: 'Blockt Attacken und Items, die Pokémon austauschen, indem es sich mit einem Saugnapf am Boden verankert.', }, intimidate: { - name: "Bedroher", - description: "Senkt den Angriff der Gegner, indem es sie gleich zu Kampfantritt bedroht und einschüchtert.", + name: 'Bedroher', + description: 'Senkt den Angriff der Gegner, indem es sie gleich zu Kampfantritt bedroht und einschüchtert.', }, shadowTag: { - name: "Wegsperre", - description: "Hindert Gegner an der Flucht beziehungsweise am Auswechseln, indem es ihnen den Weg versperrt.", + name: 'Wegsperre', + description: 'Hindert Gegner an der Flucht beziehungsweise am Auswechseln, indem es ihnen den Weg versperrt.', }, roughSkin: { - name: "Rauhaut", - description: "Angreifer werden durch die raue Haut des Pokémon bei direkten Attacken verletzt.", + name: 'Rauhaut', + description: 'Angreifer werden durch die raue Haut des Pokémon bei direkten Attacken verletzt.', }, wonderGuard: { - name: "Wunderwache", - description: "Wundersame Kräfte bewirken, dass nur sehr effektive Treffer bei ihm Schaden anrichten.", + name: 'Wunderwache', + description: 'Wundersame Kräfte bewirken, dass nur sehr effektive Treffer bei ihm Schaden anrichten.', }, levitate: { - name: "Schwebe", - description: "Verleiht volle Immunität gegen alle Boden-Attacken durch Schwebezustand.", + name: 'Schwebe', + description: 'Verleiht volle Immunität gegen alle Boden-Attacken durch Schwebezustand.', }, effectSpore: { - name: "Sporenwirt", - description: "Wird dieses Pokémon durch eine direkte Attacke angegriffen, kann das beim Gegner Paralyse, Vergiftung oder Schlaf auslösen.", + name: 'Sporenwirt', + description: 'Wird dieses Pokémon durch eine direkte Attacke angegriffen, kann das beim Gegner Paralyse, Vergiftung oder Schlaf auslösen.', }, synchronize: { - name: "Synchro", - description: "Erleidet das Pokémon Verbrennungen, Vergiftungen oder Paralyse, ereilt das jeweilige Statusproblem auch den Verursacher.", + name: 'Synchro', + description: 'Erleidet das Pokémon Verbrennungen, Vergiftungen oder Paralyse, ereilt das jeweilige Statusproblem auch den Verursacher.', }, clearBody: { - name: "Neutraltorso", - description: "Verhindert das Senken der Statuswerte durch Attacken und Fähigkeiten von Angreifern.", + name: 'Neutraltorso', + description: 'Verhindert das Senken der Statuswerte durch Attacken und Fähigkeiten von Angreifern.', }, naturalCure: { - name: "Innere Kraft", - description: "Wird das Pokémon ausgewechselt, werden seine Statusprobleme geheilt.", + name: 'Innere Kraft', + description: 'Wird das Pokémon ausgewechselt, werden seine Statusprobleme geheilt.', }, lightningRod: { - name: "Blitzfänger", - description: "Zieht Elektro-Attacken an. Statt durch diese Schaden zu nehmen, erhöht es den eigenen Spezial-Angriff.", + name: 'Blitzfänger', + description: 'Zieht Elektro-Attacken an. Statt durch diese Schaden zu nehmen, erhöht es den eigenen Spezial-Angriff.', }, sereneGrace: { - name: "Edelmut", - description: "Erhöht die Wahrscheinlichkeit, dass Zusatzeffekte von Attacken auftreten.", + name: 'Edelmut', + description: 'Erhöht die Wahrscheinlichkeit, dass Zusatzeffekte von Attacken auftreten.', }, swiftSwim: { - name: "Wassertempo", - description: "Erhöht bei Regen die Initiative.", + name: 'Wassertempo', + description: 'Erhöht bei Regen die Initiative.', }, chlorophyll: { - name: "Chlorophyll", - description: "Erhöht bei Sonnenschein die Initiative.", + name: 'Chlorophyll', + description: 'Erhöht bei Sonnenschein die Initiative.', }, illuminate: { - name: "Erleuchtung", - description: "Erhellt die Umgebung und erhöht dadurch die Wahrscheinlichkeit, wilden Pokémon zu begegnen.", + name: 'Erleuchtung', + description: 'Erhellt die Umgebung und erhöht dadurch die Wahrscheinlichkeit, wilden Pokémon zu begegnen.', }, trace: { - name: "Erfassen", - description: "Kopiert bei Kampfantritt die Fähigkeit eines Gegners.", + name: 'Erfassen', + description: 'Kopiert bei Kampfantritt die Fähigkeit eines Gegners.', }, hugePower: { - name: "Kraftkoloss", - description: "Verdoppelt die Stärke von physischen Attacken.", + name: 'Kraftkoloss', + description: 'Verdoppelt die Stärke von physischen Attacken.', }, poisonPoint: { - name: "Giftdorn", - description: "Vergiftet den Angreifer bei Berührung eventuell.", + name: 'Giftdorn', + description: 'Vergiftet den Angreifer bei Berührung eventuell.', }, innerFocus: { - name: "Konzentrator", - description: "Verhindert durch erhöhte Konzentrationsfähigkeit Zurückschrecken.", + name: 'Konzentrator', + description: 'Verhindert durch erhöhte Konzentrationsfähigkeit Zurückschrecken.', }, magmaArmor: { - name: "Magmapanzer", - description: "Dank eines Panzers aus Magma kann dieses Pokémon nicht eingefroren werden.", + name: 'Magmapanzer', + description: 'Dank eines Panzers aus Magma kann dieses Pokémon nicht eingefroren werden.', }, waterVeil: { - name: "Aquahülle", - description: "Verhindert durch eine Hülle aus Wasser Verbrennungen.", + name: 'Aquahülle', + description: 'Verhindert durch eine Hülle aus Wasser Verbrennungen.', }, magnetPull: { - name: "Magnetfalle", - description: "Hindert Stahl-Pokémon durch Magnetismus an der Flucht.", + name: 'Magnetfalle', + description: 'Hindert Stahl-Pokémon durch Magnetismus an der Flucht.', }, soundproof: { - name: "Lärmschutz", - description: "Bietet durch Schalldämmung volle Immunität gegen alle Lärm-Attacken.", + name: 'Lärmschutz', + description: 'Bietet durch Schalldämmung volle Immunität gegen alle Lärm-Attacken.', }, rainDish: { - name: "Regengenuss", - description: "Regeneriert bei Regen nach und nach KP.", + name: 'Regengenuss', + description: 'Regeneriert bei Regen nach und nach KP.', }, sandStream: { - name: "Sandsturm", - description: "Erzeugt bei Kampfantritt Sandstürme.", + name: 'Sandsturm', + description: 'Erzeugt bei Kampfantritt Sandstürme.', }, pressure: { - name: "Erzwinger", - description: "Zwingt Gegner dazu, beim Einsatz von Attacken mehr AP zu verbrauchen.", + name: 'Erzwinger', + description: 'Zwingt Gegner dazu, beim Einsatz von Attacken mehr AP zu verbrauchen.', }, thickFat: { - name: "Speckschicht", - description: "Das Pokémon wird von einer dicken Fettschicht geschützt, was den durch Feuer- und Eis-Attacken erlittenen Schaden halbiert.", + name: 'Speckschicht', + description: 'Das Pokémon wird von einer dicken Fettschicht geschützt, was den durch Feuer- und Eis-Attacken erlittenen Schaden halbiert.', }, earlyBird: { - name: "Frühwecker", - description: "Wenn es eingeschlafen ist, kann es doppelt so schnell wieder aufwachen wie andere Pokémon.", + name: 'Frühwecker', + description: 'Wenn es eingeschlafen ist, kann es doppelt so schnell wieder aufwachen wie andere Pokémon.', }, flameBody: { - name: "Flammkörper", - description: "Fügt dem Angreifer bei Berührung eventuell Verbrennungen zu.", + name: 'Flammkörper', + description: 'Fügt dem Angreifer bei Berührung eventuell Verbrennungen zu.', }, runAway: { - name: "Angsthase", - description: "Die Flucht vor wilden Pokémon gelingt immer.", + name: 'Angsthase', + description: 'Die Flucht vor wilden Pokémon gelingt immer.', }, keenEye: { - name: "Adlerauge", - description: "Sein scharfer Blick hindert Angreifer daran, seine Genauigkeit zu senken.", + name: 'Adlerauge', + description: 'Sein scharfer Blick hindert Angreifer daran, seine Genauigkeit zu senken.', }, hyperCutter: { - name: "Scherenmacht", - description: "Hindert Angreifer durch mächtige Scheren daran, den Angriffs-Wert zu senken.", + name: 'Scherenmacht', + description: 'Hindert Angreifer durch mächtige Scheren daran, den Angriffs-Wert zu senken.', }, pickup: { - name: "Mitnahme", - description: "Hebt gelegentlich von Gegnern benutzte Items auf. Dies geschieht nicht nur während Kämpfen, sondern auch unterwegs.", + name: 'Mitnahme', + description: 'Hebt gelegentlich von Gegnern benutzte Items auf. Dies geschieht nicht nur während Kämpfen, sondern auch unterwegs.', }, truant: { - name: "Schnarchnase", - description: "Das Pokémon muss nach Einsatz einer Attacke eine Runde lang aussetzen.", + name: 'Schnarchnase', + description: 'Das Pokémon muss nach Einsatz einer Attacke eine Runde lang aussetzen.', }, hustle: { - name: "Übereifer", - description: "Erhöht den Angriffs-Wert, aber senkt die Genauigkeit.", + name: 'Übereifer', + description: 'Erhöht den Angriffs-Wert, aber senkt die Genauigkeit.', }, cuteCharm: { - name: "Charmebolzen", - description: "Wird dieses Pokémon durch eine direkte Attacke angegriffen, verliebt sich der Gegner eventuell in es.", + name: 'Charmebolzen', + description: 'Wird dieses Pokémon durch eine direkte Attacke angegriffen, verliebt sich der Gegner eventuell in es.', }, plus: { - name: "Plus", - description: "Erhöht den Spezial-Angriff, wenn das Pokémon einen Mitstreiter mit der Fähigkeit Plus oder Minus hat.", + name: 'Plus', + description: 'Erhöht den Spezial-Angriff, wenn das Pokémon einen Mitstreiter mit der Fähigkeit Plus oder Minus hat.', }, minus: { - name: "Minus", - description: "Erhöht den Spezial-Angriff, wenn das Pokémon einen Mitstreiter mit der Fähigkeit Plus oder Minus hat.", + name: 'Minus', + description: 'Erhöht den Spezial-Angriff, wenn das Pokémon einen Mitstreiter mit der Fähigkeit Plus oder Minus hat.', }, forecast: { - name: "Prognose", - description: "Nimmt je nach Wetter entweder den Typ Wasser, Feuer oder Eis an.", + name: 'Prognose', + description: 'Nimmt je nach Wetter entweder den Typ Wasser, Feuer oder Eis an.', }, stickyHold: { - name: "Klebekörper", - description: "Trägt es ein Item, bleibt dieses an seinem klebrigen Körper haften, wodurch Item-Diebstahl verhindert wird.", + name: 'Klebekörper', + description: 'Trägt es ein Item, bleibt dieses an seinem klebrigen Körper haften, wodurch Item-Diebstahl verhindert wird.', }, shedSkin: { - name: "Expidermis", - description: "Das Pokémon befreit sich eventuell von Statusproblemen, indem es seine Haut abstreift.", + name: 'Expidermis', + description: 'Das Pokémon befreit sich eventuell von Statusproblemen, indem es seine Haut abstreift.', }, guts: { - name: "Adrenalin", - description: "Bei Statusproblemen setzt es Adrenalin frei und erhöht so seinen Angriffs-Wert.", + name: 'Adrenalin', + description: 'Bei Statusproblemen setzt es Adrenalin frei und erhöht so seinen Angriffs-Wert.', }, marvelScale: { - name: "Notschutz", - description: "Bei Statusproblemen schützt es sich mit mysteriösen Schuppen und erhöht so seine Verteidigung.", + name: 'Notschutz', + description: 'Bei Statusproblemen schützt es sich mit mysteriösen Schuppen und erhöht so seine Verteidigung.', }, liquidOoze: { - name: "Kloakensoße", - description: "Angreifer, die durch Saug-Attacken Kloakensoße in sich aufgenommen haben, nehmen durch deren widerwärtigen Gestank Schaden.", + name: 'Kloakensoße', + description: 'Angreifer, die durch Saug-Attacken Kloakensoße in sich aufgenommen haben, nehmen durch deren widerwärtigen Gestank Schaden.', }, overgrow: { - name: "Notdünger", - description: "Erhöht die Stärke von Pflanzen-Attacken, wenn die KP auf einen gewissen Wert fallen.", + name: 'Notdünger', + description: 'Erhöht die Stärke von Pflanzen-Attacken, wenn die KP auf einen gewissen Wert fallen.', }, blaze: { - name: "Großbrand", - description: "Erhöht die Stärke von Feuer-Attacken, wenn die KP auf einen gewissen Wert fallen.", + name: 'Großbrand', + description: 'Erhöht die Stärke von Feuer-Attacken, wenn die KP auf einen gewissen Wert fallen.', }, torrent: { - name: "Sturzbach", - description: "Erhöht die Stärke von Wasser-Attacken, wenn die KP auf einen gewissen Wert fallen.", + name: 'Sturzbach', + description: 'Erhöht die Stärke von Wasser-Attacken, wenn die KP auf einen gewissen Wert fallen.', }, swarm: { - name: "Hexaplaga", - description: "Erhöht die Stärke von Käfer-Attacken, wenn die KP auf einen gewissen Wert fallen.", + name: 'Hexaplaga', + description: 'Erhöht die Stärke von Käfer-Attacken, wenn die KP auf einen gewissen Wert fallen.', }, rockHead: { - name: "Steinhaupt", - description: "Verhindert Schaden, der durch Rückstoß entstehen würde.", + name: 'Steinhaupt', + description: 'Verhindert Schaden, der durch Rückstoß entstehen würde.', }, drought: { - name: "Dürre", - description: "Erzeugt bei Kampfantritt gleißendes Sonnenlicht.", + name: 'Dürre', + description: 'Erzeugt bei Kampfantritt gleißendes Sonnenlicht.', }, arenaTrap: { - name: "Ausweglos", - description: "Hindert Gegner im Kampf an der Flucht.", + name: 'Ausweglos', + description: 'Hindert Gegner im Kampf an der Flucht.', }, vitalSpirit: { - name: "Munterkeit", - description: "Das Pokémon ist so munter, dass es nicht einschlafen kann.", + name: 'Munterkeit', + description: 'Das Pokémon ist so munter, dass es nicht einschlafen kann.', }, whiteSmoke: { - name: "Pulverrauch", - description: "Indem es sich mit pulvrigem Rauch umhüllt, hindert es Angreifer daran, seine Statuswerte zu senken.", + name: 'Pulverrauch', + description: 'Indem es sich mit pulvrigem Rauch umhüllt, hindert es Angreifer daran, seine Statuswerte zu senken.', }, purePower: { - name: "Mentalkraft", - description: "Verdoppelt mit reiner Willenskraft die Stärke seiner physischen Attacken.", + name: 'Mentalkraft', + description: 'Verdoppelt mit reiner Willenskraft die Stärke seiner physischen Attacken.', }, shellArmor: { - name: "Panzerhaut", - description: "Wehrt gegnerische Volltreffer mit einem harten Panzer ab.", + name: 'Panzerhaut', + description: 'Wehrt gegnerische Volltreffer mit einem harten Panzer ab.', }, airLock: { - name: "Klimaschutz", - description: "Hebt alle Wetter-Effekte auf.", + name: 'Klimaschutz', + description: 'Hebt alle Wetter-Effekte auf.', }, tangledFeet: { - name: "Fußangel", - description: "Erhöht den Ausweichwert, wenn das Pokémon verwirrt ist.", + name: 'Fußangel', + description: 'Erhöht den Ausweichwert, wenn das Pokémon verwirrt ist.', }, motorDrive: { - name: "Starthilfe", - description: "Treffer durch Elektro-Attacken verursachen keinen Schaden, sondern geben dem Pokémon eine Starthilfe und erhöhen so seine Initiative.", + name: 'Starthilfe', + description: 'Treffer durch Elektro-Attacken verursachen keinen Schaden, sondern geben dem Pokémon eine Starthilfe und erhöhen so seine Initiative.', }, rivalry: { - name: "Rivalität", - description: "Greift es einen Rivalen desselben Geschlechts an, wird es stärker. Greift es ein Ziel des anderen Geschlechts an, wird es schwächer.", + name: 'Rivalität', + description: 'Greift es einen Rivalen desselben Geschlechts an, wird es stärker. Greift es ein Ziel des anderen Geschlechts an, wird es schwächer.', }, steadfast: { - name: "Felsenfest", - description: "Sein eiserner Wille erhöht die Initiative, wann immer das Pokémon zurückschreckt.", + name: 'Felsenfest', + description: 'Sein eiserner Wille erhöht die Initiative, wann immer das Pokémon zurückschreckt.', }, snowCloak: { - name: "Schneemantel", - description: "Erhöht bei Hagel den Ausweichwert.", + name: 'Schneemantel', + description: 'Erhöht bei Hagel den Ausweichwert.', }, gluttony: { - name: "Völlerei", - description: "Setzt bestimmte Beeren nicht erst in einer Notlage ein, sondern bereits dann, wenn seine KP auf die Hälfte des Maximalwerts fallen.", + name: 'Völlerei', + description: 'Setzt bestimmte Beeren nicht erst in einer Notlage ein, sondern bereits dann, wenn seine KP auf die Hälfte des Maximalwerts fallen.', }, angerPoint: { - name: "Kurzschluss", - description: "Wird nach Einstecken eines Volltreffers wütend und maximiert dabei seinen Angriffs-Wert.", + name: 'Kurzschluss', + description: 'Wird nach Einstecken eines Volltreffers wütend und maximiert dabei seinen Angriffs-Wert.', }, unburden: { - name: "Entlastung", - description: "Wenn das von ihm getragene Item verwendet wird oder verloren geht, erhöht dies seine Initiative.", + name: 'Entlastung', + description: 'Wenn das von ihm getragene Item verwendet wird oder verloren geht, erhöht dies seine Initiative.', }, heatproof: { - name: "Hitzeschutz", - description: "Sein Hitze abweisender Körper halbiert den durch Feuer-Attacken erlittenen Schaden.", + name: 'Hitzeschutz', + description: 'Sein Hitze abweisender Körper halbiert den durch Feuer-Attacken erlittenen Schaden.', }, simple: { - name: "Wankelmut", - description: "Verdoppelt die Wirkung eigener Statusveränderungen.", + name: 'Wankelmut', + description: 'Verdoppelt die Wirkung eigener Statusveränderungen.', }, drySkin: { - name: "Trockenheit", - description: "Bei Sonnenschein verliert das Pokémon KP und der Schaden durch Feuer-Attacken steigt. Bei Regen und Treffern durch Wasser-Attacken regeneriert es KP.", + name: 'Trockenheit', + description: 'Bei Sonnenschein verliert das Pokémon KP und der Schaden durch Feuer-Attacken steigt. Bei Regen und Treffern durch Wasser-Attacken regeneriert es KP.', }, download: { - name: "Download", - description: "Ist die Spezial-Verteidigung des Gegners höher als seine Verteidigung, wird der eigene Spezial-Angriff erhöht. Ist die Verteidigung höher, steigt der Angriff.", + name: 'Download', + description: 'Ist die Spezial-Verteidigung des Gegners höher als seine Verteidigung, wird der eigene Spezial-Angriff erhöht. Ist die Verteidigung höher, steigt der Angriff.', }, ironFist: { - name: "Eisenfaust", - description: "Erhöht die Stärke von Hieb-, Punch-, Faust- und Schlag-Attacken.", + name: 'Eisenfaust', + description: 'Erhöht die Stärke von Hieb-, Punch-, Faust- und Schlag-Attacken.', }, poisonHeal: { - name: "Aufheber", - description: "Das Pokémon erleidet keinen Schaden durch Vergiftung, sondern regeneriert KP.", + name: 'Aufheber', + description: 'Das Pokémon erleidet keinen Schaden durch Vergiftung, sondern regeneriert KP.', }, adaptability: { - name: "Anpassung", - description: "Erhöht die Stärke von Attacken, die dem Typ des Pokémon entsprechen.", + name: 'Anpassung', + description: 'Erhöht die Stärke von Attacken, die dem Typ des Pokémon entsprechen.', }, skillLink: { - name: "Wertelink", - description: "Landet mit Serien-Attacken immer die maximale Anzahl an Treffern.", + name: 'Wertelink', + description: 'Landet mit Serien-Attacken immer die maximale Anzahl an Treffern.', }, hydration: { - name: "Hydration", - description: "Heilt bei Regen Statusprobleme.", + name: 'Hydration', + description: 'Heilt bei Regen Statusprobleme.', }, solarPower: { - name: "Solarkraft", - description: "Führt bei Sonnenschein in jeder Runde zu KP-Verlusten, erhöht aber den Spezial-Angriff.", + name: 'Solarkraft', + description: 'Führt bei Sonnenschein in jeder Runde zu KP-Verlusten, erhöht aber den Spezial-Angriff.', }, quickFeet: { - name: "Rasanz", - description: "Erhöht bei Statusproblemen die Initiative.", + name: 'Rasanz', + description: 'Erhöht bei Statusproblemen die Initiative.', }, normalize: { - name: "Regulierung", - description: "Alle Attacken des Pokémon nehmen den Typ Normal an und ihre Stärke erhöht sich ein wenig.", + name: 'Regulierung', + description: 'Alle Attacken des Pokémon nehmen den Typ Normal an und ihre Stärke erhöht sich ein wenig.', }, sniper: { - name: "Superschütze", - description: "Erhöht bei Volltreffern die Stärke der Attacke noch weiter.", + name: 'Superschütze', + description: 'Erhöht bei Volltreffern die Stärke der Attacke noch weiter.', }, magicGuard: { - name: "Magieschild", - description: "Das Pokémon nimmt nur durch Offensiv-Attacken Schaden.", + name: 'Magieschild', + description: 'Das Pokémon nimmt nur durch Offensiv-Attacken Schaden.', }, noGuard: { - name: "Schildlos", - description: "Alle Attacken des oder auf das Pokémon gelingen aufgrund seiner deckungslosen Kampftaktik.", + name: 'Schildlos', + description: 'Alle Attacken des oder auf das Pokémon gelingen aufgrund seiner deckungslosen Kampftaktik.', }, stall: { - name: "Zeitspiel", - description: "Handelt auch mit Initiative-Vorteil stets als Letztes.", + name: 'Zeitspiel', + description: 'Handelt auch mit Initiative-Vorteil stets als Letztes.', }, technician: { - name: "Techniker", - description: "Erhöht die Stärke von schwächeren Attacken.", + name: 'Techniker', + description: 'Erhöht die Stärke von schwächeren Attacken.', }, leafGuard: { - name: "Floraschild", - description: "Verhindert bei Sonnenschein Statusprobleme.", + name: 'Floraschild', + description: 'Verhindert bei Sonnenschein Statusprobleme.', }, klutz: { - name: "Tollpatsch", - description: "Das Pokémon kann keine getragenen Items verwenden.", + name: 'Tollpatsch', + description: 'Das Pokémon kann keine getragenen Items verwenden.', }, moldBreaker: { - name: "Überbrückung", - description: "Attacken können ungeachtet der Fähigkeiten des Zieles verwendet werden.", + name: 'Überbrückung', + description: 'Attacken können ungeachtet der Fähigkeiten des Zieles verwendet werden.', }, superLuck: { - name: "Glückspilz", - description: "Großes Glück erhöht die Wahrscheinlichkeit, einen Volltreffer zu landen.", + name: 'Glückspilz', + description: 'Großes Glück erhöht die Wahrscheinlichkeit, einen Volltreffer zu landen.', }, aftermath: { - name: "Finalschlag", - description: "Wird das Pokémon durch eine direkte Attacke besiegt, fügt es dem Angreifer Schaden zu.", + name: 'Finalschlag', + description: 'Wird das Pokémon durch eine direkte Attacke besiegt, fügt es dem Angreifer Schaden zu.', }, anticipation: { - name: "Vorahnung", - description: "Kann gefährliche gegnerische Attacken erahnen.", + name: 'Vorahnung', + description: 'Kann gefährliche gegnerische Attacken erahnen.', }, forewarn: { - name: "Vorwarnung", - description: "Gibt bei Kampfantritt Auskunft über eine Attacke aus dem gegnerischen Repertoire.", + name: 'Vorwarnung', + description: 'Gibt bei Kampfantritt Auskunft über eine Attacke aus dem gegnerischen Repertoire.', }, unaware: { - name: "Unkenntnis", - description: "Greift das Pokémon an, ignoriert es sämtliche Statusveränderungen des Zieles.", + name: 'Unkenntnis', + description: 'Greift das Pokémon an, ignoriert es sämtliche Statusveränderungen des Zieles.', }, tintedLens: { - name: "Aufwertung", - description: "Bewirkt, dass nicht sehr effektive Attacken dem Ziel trotz des Typennachteils normalen Schaden zufügen.", + name: 'Aufwertung', + description: 'Bewirkt, dass nicht sehr effektive Attacken dem Ziel trotz des Typennachteils normalen Schaden zufügen.', }, filter: { - name: "Filter", - description: "Reduziert die Stärke von sehr effektiven Attacken und verringert damit den Schaden, den das Pokémon durch sie erleidet.", + name: 'Filter', + description: 'Reduziert die Stärke von sehr effektiven Attacken und verringert damit den Schaden, den das Pokémon durch sie erleidet.', }, slowStart: { - name: "Saumselig", - description: "Halbiert fünf Runden lang den Angriffs-Wert und die Initiative des Pokémon.", + name: 'Saumselig', + description: 'Halbiert fünf Runden lang den Angriffs-Wert und die Initiative des Pokémon.', }, scrappy: { - name: "Rauflust", - description: "Bewirkt, dass Normal- und Kampf-Attacken auch Pokémon vom Typ Geist treffen können.", + name: 'Rauflust', + description: 'Bewirkt, dass Normal- und Kampf-Attacken auch Pokémon vom Typ Geist treffen können.', }, stormDrain: { - name: "Sturmsog", - description: "Zieht Wasser-Attacken an. Statt durch diese Schaden zu nehmen, erhöht es den eigenen Spezial-Angriff.", + name: 'Sturmsog', + description: 'Zieht Wasser-Attacken an. Statt durch diese Schaden zu nehmen, erhöht es den eigenen Spezial-Angriff.', }, iceBody: { - name: "Eishaut", - description: "Regeneriert bei Hagel nach und nach KP.", + name: 'Eishaut', + description: 'Regeneriert bei Hagel nach und nach KP.', }, solidRock: { - name: "Felskern", - description: "Reduziert die Stärke von sehr effektiven Attacken und verringert damit den Schaden, den das Pokémon durch sie erleidet.", + name: 'Felskern', + description: 'Reduziert die Stärke von sehr effektiven Attacken und verringert damit den Schaden, den das Pokémon durch sie erleidet.', }, snowWarning: { - name: "Hagelalarm", - description: "Löst bei Kampfantritt Hagel aus.", + name: 'Hagelalarm', + description: 'Löst bei Kampfantritt Hagel aus.', }, honeyGather: { - name: "Honigmaul", - description: "Das Pokémon sammelt nach Kämpfen eventuell Honig auf.", + name: 'Honigmaul', + description: 'Das Pokémon sammelt nach Kämpfen eventuell Honig auf.', }, frisk: { - name: "Schnüffler", - description: "Kann bei Kampfantritt Auskunft über die Fähigkeit vom Gegner geben.", + name: 'Schnüffler', + description: 'Kann bei Kampfantritt Auskunft über die Fähigkeit vom Gegner geben.', }, reckless: { - name: "Achtlos", - description: "Erhöht die Stärke von Attacken mit Rückstoßschaden.", + name: 'Achtlos', + description: 'Erhöht die Stärke von Attacken mit Rückstoßschaden.', }, multitype: { - name: "Variabilität", - description: "Das Pokémon passt seinen Typ dem der getragenen Tafel bzw. des getragenen Z-Kristalls an.", + name: 'Variabilität', + description: 'Das Pokémon passt seinen Typ dem der getragenen Tafel bzw. des getragenen Z-Kristalls an.', }, flowerGift: { - name: "Pflanzengabe", - description: "Erhöht bei Sonnenschein den Angriff und die Spezial-Verteidigung aller Team-Pokémon.", + name: 'Pflanzengabe', + description: 'Erhöht bei Sonnenschein den Angriff und die Spezial-Verteidigung aller Team-Pokémon.', }, badDreams: { - name: "Alptraum", - description: "Fügt schlafenden Gegnern Schaden zu.", + name: 'Alptraum', + description: 'Fügt schlafenden Gegnern Schaden zu.', }, pickpocket: { - name: "Langfinger", - description: "Stiehlt das Item des Angreifers bei Berührung.", + name: 'Langfinger', + description: 'Stiehlt das Item des Angreifers bei Berührung.', }, sheerForce: { - name: "Rohe Gewalt", - description: "Erhöht die Stärke von Attacken, aber hebt dafür ihre Zusatzeffekte auf.", + name: 'Rohe Gewalt', + description: 'Erhöht die Stärke von Attacken, aber hebt dafür ihre Zusatzeffekte auf.', }, contrary: { - name: "Umkehrung", - description: "Statusveränderungen werden umgekehrt: Statuswerte, die eigentlich erhöht werden sollten, sinken und umgekehrt.", + name: 'Umkehrung', + description: 'Statusveränderungen werden umgekehrt: Statuswerte, die eigentlich erhöht werden sollten, sinken und umgekehrt.', }, unnerve: { - name: "Anspannung", - description: "Erzeugt bei Gegnern Stress und hindert sie so daran, Beeren zu konsumieren.", + name: 'Anspannung', + description: 'Erzeugt bei Gegnern Stress und hindert sie so daran, Beeren zu konsumieren.', }, defiant: { - name: "Siegeswille", - description: "Erhöht den Angriff stark, wenn ein Statuswert gesenkt wurde.", + name: 'Siegeswille', + description: 'Erhöht den Angriff stark, wenn ein Statuswert gesenkt wurde.', }, defeatist: { - name: "Schwächling", - description: "Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, bekommt es Angst. Dadurch wird die Stärke seines Angriffs und Spezial-Angriffs halbiert.", + name: 'Schwächling', + description: 'Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, bekommt es Angst. Dadurch wird die Stärke seines Angriffs und Spezial-Angriffs halbiert.', }, cursedBody: { - name: "Tastfluch", - description: "Blockiert eventuell die Attacke, mit welcher der Angreifer es getroffen hat.", + name: 'Tastfluch', + description: 'Blockiert eventuell die Attacke, mit welcher der Angreifer es getroffen hat.', }, healer: { - name: "Heilherz", - description: "Befreit Mitstreiter gelegentlich von Statusproblemen.", + name: 'Heilherz', + description: 'Befreit Mitstreiter gelegentlich von Statusproblemen.', }, friendGuard: { - name: "Freundeshut", - description: "Kann den Schaden, den Mitstreiter erleiden, verringern.", + name: 'Freundeshut', + description: 'Kann den Schaden, den Mitstreiter erleiden, verringern.', }, weakArmor: { - name: "Bruchrüstung", - description: "Senkt bei erlittenem Treffer durch eine physische Attacke die Verteidigung des Pokémon, aber erhöht dafür seine Initiative stark.", + name: 'Bruchrüstung', + description: 'Senkt bei erlittenem Treffer durch eine physische Attacke die Verteidigung des Pokémon, aber erhöht dafür seine Initiative stark.', }, heavyMetal: { - name: "Schwermetall", - description: "Verdoppelt das eigene Gewicht.", + name: 'Schwermetall', + description: 'Verdoppelt das eigene Gewicht.', }, lightMetal: { - name: "Leichtmetall", - description: "Halbiert das eigene Gewicht.", + name: 'Leichtmetall', + description: 'Halbiert das eigene Gewicht.', }, multiscale: { - name: "Multischuppe", - description: "Verringert den erlittenen Schaden bei vollen KP.", + name: 'Multischuppe', + description: 'Verringert den erlittenen Schaden bei vollen KP.', }, toxicBoost: { - name: "Giftwahn", - description: "Erhöht bei Vergiftungen die Stärke von physischen Attacken.", + name: 'Giftwahn', + description: 'Erhöht bei Vergiftungen die Stärke von physischen Attacken.', }, flareBoost: { - name: "Hitzewahn", - description: "Erhöht bei Verbrennungen die Stärke von Spezial-Attacken.", + name: 'Hitzewahn', + description: 'Erhöht bei Verbrennungen die Stärke von Spezial-Attacken.', }, harvest: { - name: "Reiche Ernte", - description: "Dieselbe Beere kann mehrmals verwendet werden.", + name: 'Reiche Ernte', + description: 'Dieselbe Beere kann mehrmals verwendet werden.', }, telepathy: { - name: "Telepathie", - description: "Erkennt und pariert Attacken von Mitstreitern.", + name: 'Telepathie', + description: 'Erkennt und pariert Attacken von Mitstreitern.', }, moody: { - name: "Gefühlswippe", - description: "Erhöht in jeder Runde aufs Neue einen Statuswert stark und senkt einen anderen.", + name: 'Gefühlswippe', + description: 'Erhöht in jeder Runde aufs Neue einen Statuswert stark und senkt einen anderen.', }, overcoat: { - name: "Partikelschutz", - description: "Nimmt weder durch Wetterlagen wie Sandsturm oder Hagel noch durch Pulver oder Puder Schaden.", + name: 'Partikelschutz', + description: 'Nimmt weder durch Wetterlagen wie Sandsturm oder Hagel noch durch Pulver oder Puder Schaden.', }, poisonTouch: { - name: "Giftgriff", - description: "Kann das Ziel durch bloßes Berühren vergiften.", + name: 'Giftgriff', + description: 'Kann das Ziel durch bloßes Berühren vergiften.', }, regenerator: { - name: "Belebekraft", - description: "Wird das Pokémon ausgewechselt, regeneriert es eine kleine Menge an KP.", + name: 'Belebekraft', + description: 'Wird das Pokémon ausgewechselt, regeneriert es eine kleine Menge an KP.', }, bigPecks: { - name: "Brustbieter", - description: "Hindert Angreifer daran, die Verteidigung des Pokémon zu senken.", + name: 'Brustbieter', + description: 'Hindert Angreifer daran, die Verteidigung des Pokémon zu senken.', }, sandRush: { - name: "Sandscharrer", - description: "Erhöht in Sandstürmen die Initiative.", + name: 'Sandscharrer', + description: 'Erhöht in Sandstürmen die Initiative.', }, wonderSkin: { - name: "Wunderhaut", - description: "Wehrt mit robustem Körper viele Status-Attacken ab.", + name: 'Wunderhaut', + description: 'Wehrt mit robustem Körper viele Status-Attacken ab.', }, analytic: { - name: "Analyse", - description: "Greift das Pokémon zuletzt an, erhöht sich die Stärke der Attacke, die es einsetzt.", + name: 'Analyse', + description: 'Greift das Pokémon zuletzt an, erhöht sich die Stärke der Attacke, die es einsetzt.', }, illusion: { - name: "Trugbild", - description: "Führt den Gegner hinters Licht, indem es bei Kampfantritt die Gestalt des Pokémon an der letzten Stelle im Team annimmt.", + name: 'Trugbild', + description: 'Führt den Gegner hinters Licht, indem es bei Kampfantritt die Gestalt des Pokémon an der letzten Stelle im Team annimmt.', }, imposter: { - name: "Doppelgänger", - description: "Kämpft als Kopie seines Gegenübers.", + name: 'Doppelgänger', + description: 'Kämpft als Kopie seines Gegenübers.', }, infiltrator: { - name: "Schwebedurch", - description: "Überwindet gegnerische Schilde sowie Delegatoren und greift an.", + name: 'Schwebedurch', + description: 'Überwindet gegnerische Schilde sowie Delegatoren und greift an.', }, mummy: { - name: "Mumie", - description: "Überträgt bei Berührung die Fähigkeit Mumie auf den Angreifer.", + name: 'Mumie', + description: 'Überträgt bei Berührung die Fähigkeit Mumie auf den Angreifer.', }, moxie: { - name: "Hochmut", - description: "Besiegt es ein Pokémon, steigt sein Selbstvertrauen und somit auch sein Angriff.", + name: 'Hochmut', + description: 'Besiegt es ein Pokémon, steigt sein Selbstvertrauen und somit auch sein Angriff.', }, justified: { - name: "Redlichkeit", - description: "Wird es von einer Unlicht-Attacke getroffen, meldet sich sein Sinn für Gerechtigkeit zu Wort und sein Angriff steigt.", + name: 'Redlichkeit', + description: 'Wird es von einer Unlicht-Attacke getroffen, meldet sich sein Sinn für Gerechtigkeit zu Wort und sein Angriff steigt.', }, rattled: { - name: "Hasenfuß", - description: "Wird es von einer Unlicht-, Geister- oder Käfer-Attacke getroffen, bekommt es Angst und seine Initiative steigt.", + name: 'Hasenfuß', + description: 'Wird es von einer Unlicht-, Geister- oder Käfer-Attacke getroffen, bekommt es Angst und seine Initiative steigt.', }, magicBounce: { - name: "Magiespiegel", - description: "Lenkt Status-Attacken auf den Angreifer um, ohne selbst von ihnen getroffen zu werden.", + name: 'Magiespiegel', + description: 'Lenkt Status-Attacken auf den Angreifer um, ohne selbst von ihnen getroffen zu werden.', }, sapSipper: { - name: "Vegetarier", - description: "Wird es von einer Pflanzen-Attacke getroffen, erleidet es keinerlei Schaden und sein Angriff steigt.", + name: 'Vegetarier', + description: 'Wird es von einer Pflanzen-Attacke getroffen, erleidet es keinerlei Schaden und sein Angriff steigt.', }, prankster: { - name: "Strolch", - description: "Ermöglicht einen Erstschlag mit Status-Attacken.", + name: 'Strolch', + description: 'Ermöglicht einen Erstschlag mit Status-Attacken.', }, sandForce: { - name: "Sandgewalt", - description: "Erhöht in Sandstürmen die Stärke von Gesteins-, Boden- und Stahl-Attacken.", + name: 'Sandgewalt', + description: 'Erhöht in Sandstürmen die Stärke von Gesteins-, Boden- und Stahl-Attacken.', }, ironBarbs: { - name: "Eisenstachel", - description: "Fügt dem Angreifer bei Berührung mit eisernen Stacheln Schaden zu.", + name: 'Eisenstachel', + description: 'Fügt dem Angreifer bei Berührung mit eisernen Stacheln Schaden zu.', }, zenMode: { - name: "TranceModus", - description: "Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, wechselt es seine Gestalt.", + name: 'TranceModus', + description: 'Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, wechselt es seine Gestalt.', }, victoryStar: { - name: "Triumphstern", - description: "Erhöht die Genauigkeit aller Team-Pokémon.", + name: 'Triumphstern', + description: 'Erhöht die Genauigkeit aller Team-Pokémon.', }, turboblaze: { - name: "Turbobrand", - description: "Attacken können ungeachtet der Fähigkeit des Zieles eingesetzt werden.", + name: 'Turbobrand', + description: 'Attacken können ungeachtet der Fähigkeit des Zieles eingesetzt werden.', }, teravolt: { - name: "Teravolt", - description: "Attacken können ungeachtet der Fähigkeit des Zieles eingesetzt werden.", + name: 'Teravolt', + description: 'Attacken können ungeachtet der Fähigkeit des Zieles eingesetzt werden.', }, aromaVeil: { - name: "Dufthülle", - description: "Kann alle Team-Pokémon vor mentalen Angriffen schützen.", + name: 'Dufthülle', + description: 'Kann alle Team-Pokémon vor mentalen Angriffen schützen.', }, flowerVeil: { - name: "Blütenhülle", - description: "Schützt Mitstreiter vom Typ Pflanze vor dem Senken ihrer Statuswerte sowie vor Statusproblemen.", + name: 'Blütenhülle', + description: 'Schützt Mitstreiter vom Typ Pflanze vor dem Senken ihrer Statuswerte sowie vor Statusproblemen.', }, cheekPouch: { - name: "Backentaschen", - description: "Regeneriert beim Konsum von Beeren ungeachtet der Beerensorte KP.", + name: 'Backentaschen', + description: 'Regeneriert beim Konsum von Beeren ungeachtet der Beerensorte KP.', }, protean: { - name: "Wandlungskunst", - description: "Das Pokémon nimmt bei Einsatz einer Attacke deren Typ an.", + name: 'Wandlungskunst', + description: 'Das Pokémon nimmt bei Einsatz einer Attacke deren Typ an.', }, furCoat: { - name: "Fellkleid", - description: "Halbiert den Schaden, den das Pokémon durch physische Attacken erleidet.", + name: 'Fellkleid', + description: 'Halbiert den Schaden, den das Pokémon durch physische Attacken erleidet.', }, magician: { - name: "Zauberer", - description: "Trifft das Pokémon ein Ziel mit einer Attacke, kann es ihm dabei sein Item stehlen.", + name: 'Zauberer', + description: 'Trifft das Pokémon ein Ziel mit einer Attacke, kann es ihm dabei sein Item stehlen.', }, bulletproof: { - name: "Kugelsicher", - description: "Kann das Pokémon vor geworfenen kugelförmigen Objekten, wie zum Beispiel Bomben, schützen.", + name: 'Kugelsicher', + description: 'Kann das Pokémon vor geworfenen kugelförmigen Objekten, wie zum Beispiel Bomben, schützen.', }, competitive: { - name: "Unbeugsamkeit", - description: "Erhöht den Spezial-Angriff stark, wenn ein Statuswert gesenkt wurde.", + name: 'Unbeugsamkeit', + description: 'Erhöht den Spezial-Angriff stark, wenn ein Statuswert gesenkt wurde.', }, strongJaw: { - name: "Titankiefer", - description: "Der kräftige Kiefer des Pokémon erhöht die Stärke von Biss-Attacken.", + name: 'Titankiefer', + description: 'Der kräftige Kiefer des Pokémon erhöht die Stärke von Biss-Attacken.', }, refrigerate: { - name: "Frostschicht", - description: "Attacken vom Typ Normal nehmen den Typ Eis an und ihre Stärke erhöht sich ein wenig.", + name: 'Frostschicht', + description: 'Attacken vom Typ Normal nehmen den Typ Eis an und ihre Stärke erhöht sich ein wenig.', }, sweetVeil: { - name: "Zuckerhülle", - description: "Alle Team-Pokémon können nicht einschlafen.", + name: 'Zuckerhülle', + description: 'Alle Team-Pokémon können nicht einschlafen.', }, stanceChange: { - name: "Taktikwechsel", - description: "Setzt das Pokémon eine Offensiv-Attacke ein, nimmt es die Klingenform an. Setzt es danach die Attacke Königsschild ein, nimmt es die Schildform an.", + name: 'Taktikwechsel', + description: 'Setzt das Pokémon eine Offensiv-Attacke ein, nimmt es die Klingenform an. Setzt es danach die Attacke Königsschild ein, nimmt es die Schildform an.', }, galeWings: { - name: "Orkanschwingen", - description: "Kann bei vollen KP einen Erstschlag mit Flug-Attacken ermöglichen.", + name: 'Orkanschwingen', + description: 'Kann bei vollen KP einen Erstschlag mit Flug-Attacken ermöglichen.', }, megaLauncher: { - name: "Megawumme", - description: "Erhöht die Stärke einiger Wellen-, Aura- und Puls-Attacken.", + name: 'Megawumme', + description: 'Erhöht die Stärke einiger Wellen-, Aura- und Puls-Attacken.', }, grassPelt: { - name: "Pflanzenpelz", - description: "Erhöht die Verteidigung, wenn Grasfeld aktiv ist.", + name: 'Pflanzenpelz', + description: 'Erhöht die Verteidigung, wenn Grasfeld aktiv ist.', }, symbiosis: { - name: "Nutznießer", - description: "Gibt Mitstreitern, die ihr Item aufgebraucht haben, sein eigenes Item.", + name: 'Nutznießer', + description: 'Gibt Mitstreitern, die ihr Item aufgebraucht haben, sein eigenes Item.', }, toughClaws: { - name: "Krallenwucht", - description: "Erhöht die Stärke von direkten Attacken.", + name: 'Krallenwucht', + description: 'Erhöht die Stärke von direkten Attacken.', }, pixilate: { - name: "Feenschicht", - description: "Attacken vom Typ Normal nehmen den Typ Fee an und ihre Stärke erhöht sich ein wenig.", + name: 'Feenschicht', + description: 'Attacken vom Typ Normal nehmen den Typ Fee an und ihre Stärke erhöht sich ein wenig.', }, gooey: { - name: "Viskosität", - description: "Senkt bei Berührung im Zuge eines Angriffs die Initiative des Angreifers.", + name: 'Viskosität', + description: 'Senkt bei Berührung im Zuge eines Angriffs die Initiative des Angreifers.', }, aerilate: { - name: "Zenithaut", - description: "Attacken vom Typ Normal nehmen den Typ Flug an und ihre Stärke erhöht sich ein wenig.", + name: 'Zenithaut', + description: 'Attacken vom Typ Normal nehmen den Typ Flug an und ihre Stärke erhöht sich ein wenig.', }, parentalBond: { - name: "Familienbande", - description: "Zwei Generationen setzen jeweils ein Mal zum Angriff an.", + name: 'Familienbande', + description: 'Zwei Generationen setzen jeweils ein Mal zum Angriff an.', }, darkAura: { - name: "Dunkelaura", - description: "Erhöht die Stärke aller Attacken des Typs Unlicht.", + name: 'Dunkelaura', + description: 'Erhöht die Stärke aller Attacken des Typs Unlicht.', }, fairyAura: { - name: "Feenaura", - description: "Erhöht die Stärke aller Attacken des Typs Fee.", + name: 'Feenaura', + description: 'Erhöht die Stärke aller Attacken des Typs Fee.', }, auraBreak: { - name: "AuraUmkehr", - description: "Kehrt die Wirkung von Auren um und senkt so die Stärke bestimmter Attacken, anstatt sie zu erhöhen.", + name: 'AuraUmkehr', + description: 'Kehrt die Wirkung von Auren um und senkt so die Stärke bestimmter Attacken, anstatt sie zu erhöhen.', }, primordialSea: { - name: "Urmeer", - description: "Ändert das Wetter, um Feuer-Attacken wirkungslos zu machen.", + name: 'Urmeer', + description: 'Ändert das Wetter, um Feuer-Attacken wirkungslos zu machen.', }, desolateLand: { - name: "Endland", - description: "Ändert das Wetter, um Wasser-Attacken wirkungslos zu machen.", + name: 'Endland', + description: 'Ändert das Wetter, um Wasser-Attacken wirkungslos zu machen.', }, deltaStream: { - name: "DeltaWind", - description: "Ändert das Wetter, um die Schwächen des Typs Flug zu beseitigen.", + name: 'DeltaWind', + description: 'Ändert das Wetter, um die Schwächen des Typs Flug zu beseitigen.', }, stamina: { - name: "Zähigkeit", - description: "Wird es von einer Attacke getroffen, steigt seine Verteidigung.", + name: 'Zähigkeit', + description: 'Wird es von einer Attacke getroffen, steigt seine Verteidigung.', }, wimpOut: { - name: "Reißaus", - description: "Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, zieht es sich ängstlich zurück.", + name: 'Reißaus', + description: 'Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, zieht es sich ängstlich zurück.', }, emergencyExit: { - name: "Rückzug", - description: "Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, bringt es sich in Sicherheit.", + name: 'Rückzug', + description: 'Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, bringt es sich in Sicherheit.', }, waterCompaction: { - name: "Verklumpen", - description: "Wird es von einer Wasser-Attacke getroffen, steigt seine Verteidigung stark.", + name: 'Verklumpen', + description: 'Wird es von einer Wasser-Attacke getroffen, steigt seine Verteidigung stark.', }, merciless: { - name: "Quälerei", - description: "Sorgt bei Angriffen auf vergiftete Ziele für Volltreffergarantie.", + name: 'Quälerei', + description: 'Sorgt bei Angriffen auf vergiftete Ziele für Volltreffergarantie.', }, shieldsDown: { - name: "Limitschild", - description: "Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, zerbricht die Panzerung des Pokémon und es wird aggressiver.", + name: 'Limitschild', + description: 'Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, zerbricht die Panzerung des Pokémon und es wird aggressiver.', }, stakeout: { - name: "Beschattung", - description: "Bewirkt bei Angriffen auf neu eingewechselte Ziele doppelten Schaden.", + name: 'Beschattung', + description: 'Bewirkt bei Angriffen auf neu eingewechselte Ziele doppelten Schaden.', }, waterBubble: { - name: "Wasserblase", - description: "Feuer-Attacken fügen dem Pokémon weniger Schaden zu. Verhindert Verbrennungen.", + name: 'Wasserblase', + description: 'Feuer-Attacken fügen dem Pokémon weniger Schaden zu. Verhindert Verbrennungen.', }, steelworker: { - name: "Stahlprofi", - description: "Erhöht die Stärke von Stahl-Attacken.", + name: 'Stahlprofi', + description: 'Erhöht die Stärke von Stahl-Attacken.', }, berserk: { - name: "Wutausbruch", - description: "Fallen seine KP nach einem Angriff auf die Hälfte des Maximalwerts oder weniger, steigt sein Spezial-Angriff.", + name: 'Wutausbruch', + description: 'Fallen seine KP nach einem Angriff auf die Hälfte des Maximalwerts oder weniger, steigt sein Spezial-Angriff.', }, slushRush: { - name: "Schneescharrer", - description: "Erhöht bei Hagel die Initiative.", + name: 'Schneescharrer', + description: 'Erhöht bei Hagel die Initiative.', }, longReach: { - name: "Langstrecke", - description: "Ermöglicht dem Pokémon den Einsatz aller seiner Attacken, ohne das Ziel dabei direkt zu berühren.", + name: 'Langstrecke', + description: 'Ermöglicht dem Pokémon den Einsatz aller seiner Attacken, ohne das Ziel dabei direkt zu berühren.', }, liquidVoice: { - name: "Plätscherstimme", - description: "Bewirkt, dass alle Lärm-Attacken des Pokémon den Typ Wasser annehmen.", + name: 'Plätscherstimme', + description: 'Bewirkt, dass alle Lärm-Attacken des Pokémon den Typ Wasser annehmen.', }, triage: { - name: "Heilwandel", - description: "Ermöglicht einen Erstschlag mit Attacken, welche die KP des Anwenders direkt regenerieren.", + name: 'Heilwandel', + description: 'Ermöglicht einen Erstschlag mit Attacken, welche die KP des Anwenders direkt regenerieren.', }, galvanize: { - name: "Elektrohaut", - description: "Attacken vom Typ Normal nehmen den Typ Elektro an und ihre Stärke erhöht sich ein wenig.", + name: 'Elektrohaut', + description: 'Attacken vom Typ Normal nehmen den Typ Elektro an und ihre Stärke erhöht sich ein wenig.', }, surgeSurfer: { - name: "SurfSchweif", - description: "Verdoppelt die Initiative, wenn zuvor ein Elektrofeld erzeugt wurde.", + name: 'SurfSchweif', + description: 'Verdoppelt die Initiative, wenn zuvor ein Elektrofeld erzeugt wurde.', }, schooling: { - name: "Fischschwarm", - description: "Verfügt es über einen hohen KP-Wert, wird es zu einem Schwarm und gewinnt an Stärke. Ist der KP-Wert niedrig, löst sich der Schwarm wieder auf.", + name: 'Fischschwarm', + description: 'Verfügt es über einen hohen KP-Wert, wird es zu einem Schwarm und gewinnt an Stärke. Ist der KP-Wert niedrig, löst sich der Schwarm wieder auf.', }, disguise: { - name: "Kostümspuk", - description: "Kann ein Mal pro Kampf mit seinem gruseligen Kostüm einen Angriff abwehren.", + name: 'Kostümspuk', + description: 'Kann ein Mal pro Kampf mit seinem gruseligen Kostüm einen Angriff abwehren.', }, battleBond: { - name: "Freundschaftsakt", - description: "Besiegt es ein Ziel, vertieft dies die Freundschaft zu seinem Trainer, wodurch es die Ash-Form annimmt und sein Wasser-Shuriken stärker wird.", + name: 'Freundschaftsakt', + description: 'Besiegt es ein Ziel, vertieft dies die Freundschaft zu seinem Trainer, wodurch es die Ash-Form annimmt und sein Wasser-Shuriken stärker wird.', }, powerConstruct: { - name: "Scharwandel", - description: "Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, eilen ihm weitere Zellen zu Hilfe und es nimmt die Optimumform an.", + name: 'Scharwandel', + description: 'Fallen seine KP auf die Hälfte des Maximalwerts oder weniger, eilen ihm weitere Zellen zu Hilfe und es nimmt die Optimumform an.', }, corrosion: { - name: "Korrosion", - description: "Kann selbst Pokémon vom Typ Stahl oder Gift vergiften.", + name: 'Korrosion', + description: 'Kann selbst Pokémon vom Typ Stahl oder Gift vergiften.', }, comatose: { - name: "Dauerschlaf", - description: "Das Pokémon befindet sich ununterbrochen im Halbschlaf und wacht nie vollständig auf. Es kann jedoch im Schlaf angreifen.", + name: 'Dauerschlaf', + description: 'Das Pokémon befindet sich ununterbrochen im Halbschlaf und wacht nie vollständig auf. Es kann jedoch im Schlaf angreifen.', }, queenlyMajesty: { - name: "Majestät", - description: "Schüchtert Gegner ein und hindert sie so daran, Erstschlag-Attacken gegen es einzusetzen.", + name: 'Majestät', + description: 'Schüchtert Gegner ein und hindert sie so daran, Erstschlag-Attacken gegen es einzusetzen.', }, innardsOut: { - name: "Magenkrempler", - description: "Wird es durch eine Attacke besiegt, fügt es dem Angreifer Schaden in Höhe des KP-Werts zu, den es besaß, bevor es kampfunfähig wurde.", + name: 'Magenkrempler', + description: 'Wird es durch eine Attacke besiegt, fügt es dem Angreifer Schaden in Höhe des KP-Werts zu, den es besaß, bevor es kampfunfähig wurde.', }, dancer: { - name: "Tänzer", - description: "Kann direkt im Anschluss an die Tanz-Attacke eines anderen Pokémon ebenfalls eine solche einsetzen.", + name: 'Tänzer', + description: 'Kann direkt im Anschluss an die Tanz-Attacke eines anderen Pokémon ebenfalls eine solche einsetzen.', }, battery: { - name: "Batterie", - description: "Erhöht die Stärke der Spezial-Attacken seiner Mitstreiter.", + name: 'Batterie', + description: 'Erhöht die Stärke der Spezial-Attacken seiner Mitstreiter.', }, fluffy: { - name: "Flauschigkeit", - description: "Halbiert den Schaden, den es durch direkte Attacken nimmt, aber verdoppelt dafür den durch Feuer-Attacken erlittenen Schaden.", + name: 'Flauschigkeit', + description: 'Halbiert den Schaden, den es durch direkte Attacken nimmt, aber verdoppelt dafür den durch Feuer-Attacken erlittenen Schaden.', }, dazzling: { - name: "Buntkörper", - description: "Überrascht Gegner und hindert sie so daran, Erstschlag-Attacken gegen es einzusetzen.", + name: 'Buntkörper', + description: 'Überrascht Gegner und hindert sie so daran, Erstschlag-Attacken gegen es einzusetzen.', }, soulHeart: { - name: "Seelenherz", - description: "Erhöht jedes Mal, wenn ein Pokémon besiegt wird, den eigenen Spezial-Angriff.", + name: 'Seelenherz', + description: 'Erhöht jedes Mal, wenn ein Pokémon besiegt wird, den eigenen Spezial-Angriff.', }, tanglingHair: { - name: "Lockenkopf", - description: "Senkt bei Berührung im Zuge eines Angriffs die Initiative des Angreifers.", + name: 'Lockenkopf', + description: 'Senkt bei Berührung im Zuge eines Angriffs die Initiative des Angreifers.', }, receiver: { - name: "Receiver", - description: "Wird einer seiner Mitstreiter besiegt, erhält es dessen Fähigkeit.", + name: 'Receiver', + description: 'Wird einer seiner Mitstreiter besiegt, erhält es dessen Fähigkeit.', }, powerOfAlchemy: { - name: "Chemiekraft", - description: "Wechselt seine Fähigkeit zu der eines kampfunfähig gewordenen Mitstreiters.", + name: 'Chemiekraft', + description: 'Wechselt seine Fähigkeit zu der eines kampfunfähig gewordenen Mitstreiters.', }, beastBoost: { - name: "BestienBoost", - description: "Erhöht in jeder Runde, in der es ein anderes Pokémon besiegt, seinen höchsten Statuswert.", + name: 'BestienBoost', + description: 'Erhöht in jeder Runde, in der es ein anderes Pokémon besiegt, seinen höchsten Statuswert.', }, rksSystem: { - name: "AlphaSystem", - description: "Das Pokémon passt seinen Typ der getragenen Disc an.", + name: 'AlphaSystem', + description: 'Das Pokémon passt seinen Typ der getragenen Disc an.', }, electricSurge: { - name: "ElektroErzeuger", - description: "Erzeugt bei Kampfantritt ein Elektrofeld.", + name: 'ElektroErzeuger', + description: 'Erzeugt bei Kampfantritt ein Elektrofeld.', }, psychicSurge: { - name: "PsychoErzeuger", - description: "Erzeugt bei Kampfantritt ein Psychofeld.", + name: 'PsychoErzeuger', + description: 'Erzeugt bei Kampfantritt ein Psychofeld.', }, mistySurge: { - name: "NebelErzeuger", - description: "Erzeugt bei Kampfantritt ein Nebelfeld.", + name: 'NebelErzeuger', + description: 'Erzeugt bei Kampfantritt ein Nebelfeld.', }, grassySurge: { - name: "GrasErzeuger", - description: "Erzeugt bei Kampfantritt ein Grasfeld.", + name: 'GrasErzeuger', + description: 'Erzeugt bei Kampfantritt ein Grasfeld.', }, fullMetalBody: { - name: "Metallprotektor", - description: "Verhindert das Senken der Statuswerte durch Attacken und Fähigkeiten von Angreifern.", + name: 'Metallprotektor', + description: 'Verhindert das Senken der Statuswerte durch Attacken und Fähigkeiten von Angreifern.', }, shadowShield: { - name: "Phantomschutz", - description: "Verringert den erlittenen Schaden bei vollen KP.", + name: 'Phantomschutz', + description: 'Verringert den erlittenen Schaden bei vollen KP.', }, prismArmor: { - name: "Prismarüstung", - description: "Reduziert die Stärke von sehr effektiven Attacken und verringert damit den Schaden, den das Pokémon durch sie erleidet.", + name: 'Prismarüstung', + description: 'Reduziert die Stärke von sehr effektiven Attacken und verringert damit den Schaden, den das Pokémon durch sie erleidet.', }, neuroforce: { - name: "Zerebralmacht", - description: "Erhöht die Stärke von sehr effektiven Attacken.", + name: 'Zerebralmacht', + description: 'Erhöht die Stärke von sehr effektiven Attacken.', }, intrepidSword: { - name: "Kühnes Schwert", - description: "Erhöht bei Kampfantritt den Angriff.", + name: 'Kühnes Schwert', + description: 'Erhöht bei Kampfantritt den Angriff.', }, dauntlessShield: { - name: "Wackerer Schild", - description: "Erhöht bei Kampfantritt die Verteidigung.", + name: 'Wackerer Schild', + description: 'Erhöht bei Kampfantritt die Verteidigung.', }, libero: { - name: "Libero", - description: "Das Pokémon nimmt bei Einsatz einer Attacke deren Typ an.", + name: 'Libero', + description: 'Das Pokémon nimmt bei Einsatz einer Attacke deren Typ an.', }, ballFetch: { - name: "Apport", - description: "Trägt das Pokémon kein Item bei sich, hebt es den Ball aus dem ersten gescheiterten Fangversuch des Kampfes wieder auf.", + name: 'Apport', + description: 'Trägt das Pokémon kein Item bei sich, hebt es den Ball aus dem ersten gescheiterten Fangversuch des Kampfes wieder auf.', }, cottonDown: { - name: "Wollflaum", - description: "Wird es von einem Angriff getroffen, verstreut es Teile seines Wollflaums, wodurch die Initiative aller anderen Pokémon sinkt.", + name: 'Wollflaum', + description: 'Wird es von einem Angriff getroffen, verstreut es Teile seines Wollflaums, wodurch die Initiative aller anderen Pokémon sinkt.', }, propellerTail: { - name: "Schraubflosse", - description: "Ignoriert die Effekte von Fähigkeiten und Attacken anderer Pokémon, die Attacken auf sich lenken.", + name: 'Schraubflosse', + description: 'Ignoriert die Effekte von Fähigkeiten und Attacken anderer Pokémon, die Attacken auf sich lenken.', }, mirrorArmor: { - name: "Spiegelrüstung", - description: "Lenkt ausschließlich Effekte, welche die Statuswerte des Pokémon senken würden, auf den Angreifer um.", + name: 'Spiegelrüstung', + description: 'Lenkt ausschließlich Effekte, welche die Statuswerte des Pokémon senken würden, auf den Angreifer um.', }, gulpMissile: { - name: "Würggeschoss", - description: "Wenn das Pokémon Surfer oder Taucher einsetzt, fängt es sich dabei Beute. Erleidet es anschließend Schaden, greift es an, indem es die Beute wieder ausspuckt.", + name: 'Würggeschoss', + description: 'Wenn das Pokémon Surfer oder Taucher einsetzt, fängt es sich dabei Beute. Erleidet es anschließend Schaden, greift es an, indem es die Beute wieder ausspuckt.', }, stalwart: { - name: "Stahlrückgrat", - description: "Ignoriert die Effekte von Fähigkeiten und Attacken anderer Pokémon, die Attacken auf sich lenken.", + name: 'Stahlrückgrat', + description: 'Ignoriert die Effekte von Fähigkeiten und Attacken anderer Pokémon, die Attacken auf sich lenken.', }, steamEngine: { - name: "Dampfantrieb", - description: "Wird es von einer Wasser- oder Feuer-Attacke getroffen, steigt seine Initiative drastisch.", + name: 'Dampfantrieb', + description: 'Wird es von einer Wasser- oder Feuer-Attacke getroffen, steigt seine Initiative drastisch.', }, punkRock: { - name: "Punk Rock", - description: "Erhöht die Stärke von eigenen Lärm-Attacken und halbiert den Schaden, den das Pokémon selbst durch Lärm-Attacken erleidet.", + name: 'Punk Rock', + description: 'Erhöht die Stärke von eigenen Lärm-Attacken und halbiert den Schaden, den das Pokémon selbst durch Lärm-Attacken erleidet.', }, sandSpit: { - name: "Sandspeier", - description: "Löst einen Sandsturm aus, wenn das Pokémon von einer Attacke erfasst wird.", + name: 'Sandspeier', + description: 'Löst einen Sandsturm aus, wenn das Pokémon von einer Attacke erfasst wird.', }, iceScales: { - name: "Eisflügelstaub", - description: "Halbiert mithilfe von schützendem Eisflügelstaub den Schaden, den das Pokémon durch Spezial-Attacken erleidet.", + name: 'Eisflügelstaub', + description: 'Halbiert mithilfe von schützendem Eisflügelstaub den Schaden, den das Pokémon durch Spezial-Attacken erleidet.', }, ripen: { - name: "Heranreifen", - description: "Verdoppelt den Effekt von Beeren, indem es sie heranreifen lässt.", + name: 'Heranreifen', + description: 'Verdoppelt den Effekt von Beeren, indem es sie heranreifen lässt.', }, iceFace: { - name: "Tiefkühlkopf", - description: "Der Eisblock um seinen Kopf blockt eine physische Attacke ab. Dies bewirkt jedoch einen Formwechsel. Durch Hagel wird der Eisblock wiederhergestellt.", + name: 'Tiefkühlkopf', + description: 'Der Eisblock um seinen Kopf blockt eine physische Attacke ab. Dies bewirkt jedoch einen Formwechsel. Durch Hagel wird der Eisblock wiederhergestellt.', }, powerSpot: { - name: "Kraftquelle", - description: "Erhöht bei direkt benachbarten Pokémon die Stärke von Attacken.", + name: 'Kraftquelle', + description: 'Erhöht bei direkt benachbarten Pokémon die Stärke von Attacken.', }, mimicry: { - name: "Mimese", - description: "Der Typ des Pokémon ändert sich in Abhängigkeit vom Zustand des Feldes.", + name: 'Mimese', + description: 'Der Typ des Pokémon ändert sich in Abhängigkeit vom Zustand des Feldes.', }, screenCleaner: { - name: "Hemmungslos", - description: "Hebt bei Kampfantritt die Wirkung von Lichtschild, Reflektor und Auroraschleier auf Mitstreiter- und Gegnerseite auf.", + name: 'Hemmungslos', + description: 'Hebt bei Kampfantritt die Wirkung von Lichtschild, Reflektor und Auroraschleier auf Mitstreiter- und Gegnerseite auf.', }, steelySpirit: { - name: "Stählerner Wille", - description: "Erhöht die Stärke von Stahl-Attacken auf Mitstreiterseite.", + name: 'Stählerner Wille', + description: 'Erhöht die Stärke von Stahl-Attacken auf Mitstreiterseite.', }, perishBody: { - name: "Unheilskörper", - description: "Erleidet es einen Treffer von einer direkten Attacke, wird es zusammen mit dem Angreifer nach drei Runden besiegt. Rettung ist durch Austausch möglich.", + name: 'Unheilskörper', + description: 'Erleidet es einen Treffer von einer direkten Attacke, wird es zusammen mit dem Angreifer nach drei Runden besiegt. Rettung ist durch Austausch möglich.', }, wanderingSpirit: { - name: "Rastlose Seele", - description: "Wird das Pokémon von einer direkten Attacke getroffen, tauscht es seine Fähigkeit mit der des Angreifers.", + name: 'Rastlose Seele', + description: 'Wird das Pokémon von einer direkten Attacke getroffen, tauscht es seine Fähigkeit mit der des Angreifers.', }, gorillaTactics: { - name: "Affenfokus", - description: "Erhöht den Angriff, aber nur die zuerst gewählte Attacke kann eingesetzt werden.", + name: 'Affenfokus', + description: 'Erhöht den Angriff, aber nur die zuerst gewählte Attacke kann eingesetzt werden.', }, neutralizingGas: { - name: "Reaktionsgas", - description: "Solange ein Pokémon mit der Fähigkeit Reaktionsgas am Kampf beteiligt ist, werden die Fähigkeiten aller anderen Pokémon unterdrückt oder aufgehoben.", + name: 'Reaktionsgas', + description: 'Solange ein Pokémon mit der Fähigkeit Reaktionsgas am Kampf beteiligt ist, werden die Fähigkeiten aller anderen Pokémon unterdrückt oder aufgehoben.', }, pastelVeil: { - name: "Pastellhülle", - description: "Schützt das Pokémon und seine Mitstreiter vor Vergiftung.", + name: 'Pastellhülle', + description: 'Schützt das Pokémon und seine Mitstreiter vor Vergiftung.', }, hungerSwitch: { - name: "Heißhunger", - description: "Das Pokémon ändert zum Ende jeder Runde seine Form und wechselt somit zwischen dem Pappsatt- und dem Kohldampfmuster.", + name: 'Heißhunger', + description: 'Das Pokémon ändert zum Ende jeder Runde seine Form und wechselt somit zwischen dem Pappsatt- und dem Kohldampfmuster.', }, quickDraw: { - name: "Schnellschuss", - description: "Ermöglicht dem Pokémon gelegentlich den Erstschlag.", + name: 'Schnellschuss', + description: 'Ermöglicht dem Pokémon gelegentlich den Erstschlag.', }, unseenFist: { - name: "Verborgene Faust", - description: "Wenn das Pokémon eine direkte Attacke einsetzt, trifft diese auch dann, wenn sich das Ziel selbst schützt.", + name: 'Verborgene Faust', + description: 'Wenn das Pokémon eine direkte Attacke einsetzt, trifft diese auch dann, wenn sich das Ziel selbst schützt.', }, curiousMedicine: { - name: "Kuriose Arznei", - description: "Das Pokémon versprüht bei Kampfantritt Arznei aus seiner Muschel, die alle Statusveränderungen auf der Mitstreiterseite aufhebt.", + name: 'Kuriose Arznei', + description: 'Das Pokémon versprüht bei Kampfantritt Arznei aus seiner Muschel, die alle Statusveränderungen auf der Mitstreiterseite aufhebt.', }, transistor: { - name: "Transistor", - description: "Erhöht die Stärke von Elektro-Attacken.", + name: 'Transistor', + description: 'Erhöht die Stärke von Elektro-Attacken.', }, dragonsMaw: { - name: "Drachenkiefer", - description: "Erhöht die Stärke von Drachen-Attacken.", + name: 'Drachenkiefer', + description: 'Erhöht die Stärke von Drachen-Attacken.', }, chillingNeigh: { - name: "Helles Wiehern", - description: "Besiegt es ein Pokémon, stößt es ein frostiges Wiehern aus und erhöht damit seinen Angriff.", + name: 'Helles Wiehern', + description: 'Besiegt es ein Pokémon, stößt es ein frostiges Wiehern aus und erhöht damit seinen Angriff.', }, grimNeigh: { - name: "Dunkles Wiehern", - description: "Besiegt es ein Pokémon, stößt es ein furchteinflößendes Wiehern aus und erhöht damit seinen Spezial-Angriff.", + name: 'Dunkles Wiehern', + description: 'Besiegt es ein Pokémon, stößt es ein furchteinflößendes Wiehern aus und erhöht damit seinen Spezial-Angriff.', }, asOneGlastrier: { - name: "Reitgespann", - description: "Das Pokémon verfügt sowohl über Coronospas Fähigkeit Anspannung als auch über Polaross’ Fähigkeit Helles Wiehern.", + name: 'Reitgespann', + description: 'Das Pokémon verfügt sowohl über Coronospas Fähigkeit Anspannung als auch über Polaross’ Fähigkeit Helles Wiehern.', }, asOneSpectrier: { - name: "Reitgespann", - description: "Das Pokémon verfügt sowohl über Coronospas Fähigkeit Anspannung als auch über Phantoross’ Fähigkeit Dunkles Wiehern.", + name: 'Reitgespann', + description: 'Das Pokémon verfügt sowohl über Coronospas Fähigkeit Anspannung als auch über Phantoross’ Fähigkeit Dunkles Wiehern.', }, lingeringAroma: { - name: "Duftschwade", - description: "Das Pokémon überträgt bei Berührung die Fähigkeit Duftschwade auf den Angreifer.", + name: 'Duftschwade', + description: 'Das Pokémon überträgt bei Berührung die Fähigkeit Duftschwade auf den Angreifer.', }, seedSower: { - name: "Streusaat", - description: "Wird das Pokémon von einem Angriff getroffen, erzeugt es ein Grasfeld.", + name: 'Streusaat', + description: 'Wird das Pokémon von einem Angriff getroffen, erzeugt es ein Grasfeld.', }, thermalExchange: { - name: "Thermowandel", - description: "Wird das Pokémon von einer Feuer-Attacke getroffen, steigt sein Angriff. Außerdem kann es keine Verbrennung erleiden.", + name: 'Thermowandel', + description: 'Wird das Pokémon von einer Feuer-Attacke getroffen, steigt sein Angriff. Außerdem kann es keine Verbrennung erleiden.', }, angerShell: { - name: "Wutpanzer", - description: "Fallen die KP des Pokémon durch einen Angriff auf die Hälfte des Maximalwerts oder weniger, sinken Vert. und Sp.-Vert., aber Ang., Sp.-Ang. und Initiative steigen.", + name: 'Wutpanzer', + description: 'Fallen die KP des Pokémon durch einen Angriff auf die Hälfte des Maximalwerts oder weniger, sinken Vert. und Sp.-Vert., aber Ang., Sp.-Ang. und Initiative steigen.', }, purifyingSalt: { - name: "Läutersalz", - description: "Das Pokémon kann dank seines läuternden Salzes keine Statusprobleme erleiden und der durch Geist-Attacken erlittene Schaden wird halbiert.", + name: 'Läutersalz', + description: 'Das Pokémon kann dank seines läuternden Salzes keine Statusprobleme erleiden und der durch Geist-Attacken erlittene Schaden wird halbiert.', }, wellBakedBody: { - name: "Knusperkruste", - description: "Wird das Pokémon von einer Feuer-Attacke getroffen, erleidet es keinen Schaden. Stattdessen steigt seine Verteidigung stark.", + name: 'Knusperkruste', + description: 'Wird das Pokémon von einer Feuer-Attacke getroffen, erleidet es keinen Schaden. Stattdessen steigt seine Verteidigung stark.', }, windRider: { - name: "Windreiter", - description: "Wirkt Rückenwind oder wird das Pokémon von einer Wind-Attacke getroffen, steigt sein Angriff. Außerdem erleidet es keinen Schaden durch Wind-Attacken.", + name: 'Windreiter', + description: 'Wirkt Rückenwind oder wird das Pokémon von einer Wind-Attacke getroffen, steigt sein Angriff. Außerdem erleidet es keinen Schaden durch Wind-Attacken.', }, guardDog: { - name: "Wachhund", - description: "Wird das Pokémon bedroht, steigt sein Angriff. Attacken und Items, durch die Pokémon ausgetauscht werden, haben keine Wirkung auf es.", + name: 'Wachhund', + description: 'Wird das Pokémon bedroht, steigt sein Angriff. Attacken und Items, durch die Pokémon ausgetauscht werden, haben keine Wirkung auf es.', }, rockyPayload: { - name: "Steinträger", - description: "Die Stärke von Gesteins-Attacken des Pokémon steigt.", + name: 'Steinträger', + description: 'Die Stärke von Gesteins-Attacken des Pokémon steigt.', }, windPower: { - name: "Windkraft", - description: "Wird das Pokémon von einer Wind-Attacke getroffen, lädt es sich auf. Dadurch steigt die Stärke seiner nächsten Elektro-Attacke.", + name: 'Windkraft', + description: 'Wird das Pokémon von einer Wind-Attacke getroffen, lädt es sich auf. Dadurch steigt die Stärke seiner nächsten Elektro-Attacke.', }, zeroToHero: { - name: "Superwechsel", - description: "Wird das Pokémon ausgewechselt, nimmt es die Heldenform an.", + name: 'Superwechsel', + description: 'Wird das Pokémon ausgewechselt, nimmt es die Heldenform an.', }, commander: { - name: "Kommandant", - description: "Befindet sich ein Heerashai auf der Mitstreiterseite, springt das Pokémon bei Kampfantritt in dessen Maul und gibt von dort aus Befehle.", + name: 'Kommandant', + description: 'Befindet sich ein Heerashai auf der Mitstreiterseite, springt das Pokémon bei Kampfantritt in dessen Maul und gibt von dort aus Befehle.', }, electromorphosis: { - name: "Dynamo", - description: "Wenn das Pokémon Schaden erleidet, lädt es sich auf. Dadurch steigt die Stärke seiner nächsten Elektro-Attacke.", + name: 'Dynamo', + description: 'Wenn das Pokémon Schaden erleidet, lädt es sich auf. Dadurch steigt die Stärke seiner nächsten Elektro-Attacke.', }, protosynthesis: { - name: "Paläosynthese", - description: "Bei Sonnenschein oder wenn das Pokémon eine Energiekapsel trägt, steigt sein höchster Statuswert.", + name: 'Paläosynthese', + description: 'Bei Sonnenschein oder wenn das Pokémon eine Energiekapsel trägt, steigt sein höchster Statuswert.', }, quarkDrive: { - name: "Quantenantrieb", - description: "Im Elektrofeld oder wenn das Pokémon eine Energiekapsel trägt, steigt sein höchster Statuswert.", + name: 'Quantenantrieb', + description: 'Im Elektrofeld oder wenn das Pokémon eine Energiekapsel trägt, steigt sein höchster Statuswert.', }, goodAsGold: { - name: "Goldkörper", - description: "Dank seines robusten Körpers aus reinem, rostfreiem Gold kann das Pokémon nicht von Status-Attacken getroffen werden.", + name: 'Goldkörper', + description: 'Dank seines robusten Körpers aus reinem, rostfreiem Gold kann das Pokémon nicht von Status-Attacken getroffen werden.', }, vesselOfRuin: { - name: "Unheilsgefäß", - description: "Mit der Macht seines Unheil bringenden Gefäßes schwächt das Pokémon den Spezial-Angriff aller anderen Pokémon.", + name: 'Unheilsgefäß', + description: 'Mit der Macht seines Unheil bringenden Gefäßes schwächt das Pokémon den Spezial-Angriff aller anderen Pokémon.', }, swordOfRuin: { - name: "Unheilsschwert", - description: "Mit der Macht seines Unheil bringenden Schwertes schwächt das Pokémon die Verteidigung aller anderen Pokémon.", + name: 'Unheilsschwert', + description: 'Mit der Macht seines Unheil bringenden Schwertes schwächt das Pokémon die Verteidigung aller anderen Pokémon.', }, tabletsOfRuin: { - name: "Unheilstafeln", - description: "Mit der Macht seiner Unheil bringenden Holztafeln schwächt das Pokémon den Angriff aller anderen Pokémon.", + name: 'Unheilstafeln', + description: 'Mit der Macht seiner Unheil bringenden Holztafeln schwächt das Pokémon den Angriff aller anderen Pokémon.', }, beadsOfRuin: { - name: "Unheilsjuwelen", - description: "Mit der Macht seiner Unheil bringenden Juwelen schwächt das Pokémon die Spezial-Verteidigung aller anderen Pokémon.", + name: 'Unheilsjuwelen', + description: 'Mit der Macht seiner Unheil bringenden Juwelen schwächt das Pokémon die Spezial-Verteidigung aller anderen Pokémon.', }, orichalcumPulse: { - name: "Orichalkum-Puls", - description: "Das Pokémon erzeugt bei Kampfantritt Sonnenschein. Bei Sonnenschein verstärkt ein urzeitlicher Puls seinen Angriff.", + name: 'Orichalkum-Puls', + description: 'Das Pokémon erzeugt bei Kampfantritt Sonnenschein. Bei Sonnenschein verstärkt ein urzeitlicher Puls seinen Angriff.', }, hadronEngine: { - name: "Hadronen-Motor", - description: "Das Pokémon erzeugt bei Kampfantritt ein Elektrofeld. Wenn ein Elektrofeld aktiv ist, verstärkt ein futuristischer Motor seinen Spezial-Angriff.", + name: 'Hadronen-Motor', + description: 'Das Pokémon erzeugt bei Kampfantritt ein Elektrofeld. Wenn ein Elektrofeld aktiv ist, verstärkt ein futuristischer Motor seinen Spezial-Angriff.', }, opportunist: { - name: "Profiteur", - description: "Wenn ein Statuswert eines Gegners steigt, profitiert das Pokémon ebenfalls davon und der gleiche Statuswert steigt auch bei ihm.", + name: 'Profiteur', + description: 'Wenn ein Statuswert eines Gegners steigt, profitiert das Pokémon ebenfalls davon und der gleiche Statuswert steigt auch bei ihm.', }, cudChew: { - name: "Wiederkäuer", - description: "Wenn ein Pokémon eine Beere isst, stößt es diese am Ende der nächsten Runde wieder aus seinem Magen auf und verspeist diese erneut.", + name: 'Wiederkäuer', + description: 'Wenn ein Pokémon eine Beere isst, stößt es diese am Ende der nächsten Runde wieder aus seinem Magen auf und verspeist diese erneut.', }, sharpness: { - name: "Scharfkantig", - description: "Die Stärke von Schnitt-Attacken des Pokémon steigt.", + name: 'Scharfkantig', + description: 'Die Stärke von Schnitt-Attacken des Pokémon steigt.', }, supremeOverlord: { - name: "Feldherr", - description: "Bei Kampfantritt steigen der Angriff und Spezial-Angriff des Pokémon ein bisschen für jedes bis dahin besiegte Team-Mitglied.", + name: 'Feldherr', + description: 'Bei Kampfantritt steigen der Angriff und Spezial-Angriff des Pokémon ein bisschen für jedes bis dahin besiegte Team-Mitglied.', }, costar: { - name: "Synchronauftritt", - description: "Das Pokémon kopiert bei Kampfantritt die Statusveränderungen eines Mitstreiters.", + name: 'Synchronauftritt', + description: 'Das Pokémon kopiert bei Kampfantritt die Statusveränderungen eines Mitstreiters.', }, toxicDebris: { - name: "Giftbelag", - description: "Erleidet das Pokémon Schaden durch eine physische Attacke, verstreut es giftige Stacheln auf der gegnerischen Seite.", + name: 'Giftbelag', + description: 'Erleidet das Pokémon Schaden durch eine physische Attacke, verstreut es giftige Stacheln auf der gegnerischen Seite.', }, armorTail: { - name: "Schweifrüstung", - description: "Der rätselhafte Schweif, der den Kopf des Pokémon umhüllt, hindert Gegner daran, Erstschlag-Attacken gegen die Mitstreiterseite einzusetzen.", + name: 'Schweifrüstung', + description: 'Der rätselhafte Schweif, der den Kopf des Pokémon umhüllt, hindert Gegner daran, Erstschlag-Attacken gegen die Mitstreiterseite einzusetzen.', }, earthEater: { - name: "Bodenschmaus", - description: "Wird das Pokémon von einer Boden-Attacke getroffen, erleidet es keinen Schaden, sondern regeneriert stattdessen KP.", + name: 'Bodenschmaus', + description: 'Wird das Pokémon von einer Boden-Attacke getroffen, erleidet es keinen Schaden, sondern regeneriert stattdessen KP.', }, myceliumMight: { - name: "Myzelienkraft", - description: "Beim Einsatz von Status-Attacken handelt das Pokémon stets langsamer, aber dafür kann es sie ungeachtet der Fähigkeit des Zieles einsetzen.", + name: 'Myzelienkraft', + description: 'Beim Einsatz von Status-Attacken handelt das Pokémon stets langsamer, aber dafür kann es sie ungeachtet der Fähigkeit des Zieles einsetzen.', }, mindsEye: { - name: "Geistiges Auge", - description: "Die Genauigkeit des Pokémon kann nicht gesenkt werden. Es ignoriert Änderungen am Ausweichwert des Zieles und trifft mit Normal- und Kampf-Attacken Geister-Pokémon.", + name: 'Geistiges Auge', + description: 'Die Genauigkeit des Pokémon kann nicht gesenkt werden. Es ignoriert Änderungen am Ausweichwert des Zieles und trifft mit Normal- und Kampf-Attacken Geister-Pokémon.', }, supersweetSyrup: { - name: "Süßer Nektar", - description: "Beim ersten Kampfantritt verbreitet das Pokémon den Duft süßen Nektars und senkt so den Ausweichwert seiner Gegner.", + name: 'Süßer Nektar', + description: 'Beim ersten Kampfantritt verbreitet das Pokémon den Duft süßen Nektars und senkt so den Ausweichwert seiner Gegner.', }, hospitality: { - name: "Gastlichkeit", - description: "Bei Kampfantritt zeigt das Pokémon seine Gastlichkeit, indem es die KP seines Mitstreiters ein wenig auffüllt.", + name: 'Gastlichkeit', + description: 'Bei Kampfantritt zeigt das Pokémon seine Gastlichkeit, indem es die KP seines Mitstreiters ein wenig auffüllt.', }, toxicChain: { - name: "Giftkette", - description: "Durch die toxischen Stoffe in seiner Kette werden Ziele, die das Pokémon mit einer Attacke trifft, gelegentlich schwer vergiftet.", + name: 'Giftkette', + description: 'Durch die toxischen Stoffe in seiner Kette werden Ziele, die das Pokémon mit einer Attacke trifft, gelegentlich schwer vergiftet.', }, embodyAspectTeal: { - name: "Erinnerungskraft", - description: "Die Erinnerungen, die das Pokémon in sich trägt, lassen die Türkisgrüne Maske aufleuchten und erhöhen seine Initiative.", + name: 'Erinnerungskraft', + description: 'Die Erinnerungen, die das Pokémon in sich trägt, lassen die Türkisgrüne Maske aufleuchten und erhöhen seine Initiative.', }, embodyAspectWellspring: { - name: "Erinnerungskraft", - description: "Die Erinnerungen, die das Pokémon in sich trägt, lassen die Brunnenmaske aufleuchten und erhöhen seine Spezial-Verteidigung.", + name: 'Erinnerungskraft', + description: 'Die Erinnerungen, die das Pokémon in sich trägt, lassen die Brunnenmaske aufleuchten und erhöhen seine Spezial-Verteidigung.', }, embodyAspectHearthflame: { - name: "Erinnerungskraft", - description: "Die Erinnerungen, die das Pokémon in sich trägt, lassen die Ofenmaske aufleuchten und erhöhen seinen Angriff.", + name: 'Erinnerungskraft', + description: 'Die Erinnerungen, die das Pokémon in sich trägt, lassen die Ofenmaske aufleuchten und erhöhen seinen Angriff.', }, embodyAspectCornerstone: { - name: "Erinnerungskraft", - description: "Die Erinnerungen, die das Pokémon in sich trägt, lassen die Fundamentmaske aufleuchten und erhöhen seine Verteidigung.", + name: 'Erinnerungskraft', + description: 'Die Erinnerungen, die das Pokémon in sich trägt, lassen die Fundamentmaske aufleuchten und erhöhen seine Verteidigung.', }, teraShift: { - name: "Tera-Wandel", - description: "Bei Kampfantritt absorbiert das Pokémon Energie in seiner Umgebung und nimmt die Terakristall-Form an.", + name: 'Tera-Wandel', + description: 'Bei Kampfantritt absorbiert das Pokémon Energie in seiner Umgebung und nimmt die Terakristall-Form an.', }, teraShell: { - name: "Tera-Panzer", - description: "Der Panzer des Pokémon birgt die Kraft aller Typen in sich. Alle Schaden verursachenden Attacken, die es bei vollen KP treffen, sind nicht sehr effektiv.", + name: 'Tera-Panzer', + description: 'Der Panzer des Pokémon birgt die Kraft aller Typen in sich. Alle Schaden verursachenden Attacken, die es bei vollen KP treffen, sind nicht sehr effektiv.', }, teraformZero: { - name: "Teraforming Null", - description: "Wenn Terapagos die Stellarform annimmt, eliminiert es dank seiner verborgenen Kräfte sämtliche Wettereffekte und Felder.", + name: 'Teraforming Null', + description: 'Wenn Terapagos die Stellarform annimmt, eliminiert es dank seiner verborgenen Kräfte sämtliche Wettereffekte und Felder.', }, poisonPuppeteer: { - name: "Giftpuppenspiel", - description: "Wenn Infamomo ein Ziel mit einer Attacke vergiftet, so wird dieses auch verwirrt.", + name: 'Giftpuppenspiel', + description: 'Wenn Infamomo ein Ziel mit einer Attacke vergiftet, so wird dieses auch verwirrt.', }, } as const; diff --git a/src/locales/de/battle-message-ui-handler.ts b/src/locales/de/battle-message-ui-handler.ts index daedb8550d0..c9f69e86906 100644 --- a/src/locales/de/battle-message-ui-handler.ts +++ b/src/locales/de/battle-message-ui-handler.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battleMessageUiHandler: SimpleTranslationEntries = { - "ivBest": "Sensationell", - "ivFantastic": "Fantastisch", - "ivVeryGood": "Sehr Gut", - "ivPrettyGood": "Gut", - "ivDecent": "Nicht Übel", - "ivNoGood": "Schlecht", + 'ivBest': 'Sensationell', + 'ivFantastic': 'Fantastisch', + 'ivVeryGood': 'Sehr Gut', + 'ivPrettyGood': 'Gut', + 'ivDecent': 'Nicht Übel', + 'ivNoGood': 'Schlecht', } as const; diff --git a/src/locales/de/battle.ts b/src/locales/de/battle.ts index 5504e541be0..5c9ba7db02a 100644 --- a/src/locales/de/battle.ts +++ b/src/locales/de/battle.ts @@ -1,56 +1,56 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battle: SimpleTranslationEntries = { - "bossAppeared": "{{bossName}} erscheint.", - "trainerAppeared": "{{trainerName}}\nmöchte kämpfen!", - "trainerAppearedDouble": "{{trainerName}}\nmöchten kämpfen!", - "singleWildAppeared": "Ein wildes {{pokemonName}} erscheint!", - "multiWildAppeared": "Ein wildes {{pokemonName1}}\nund {{pokemonName2}} erscheinen!", - "playerComeBack": "Komm zurück, {{pokemonName}}!", - "trainerComeBack": "{{trainerName}} ruft {{pokemonName}} zurück!", - "playerGo": "Los! {{pokemonName}}!", - "trainerGo": "{{trainerName}} sendet {{pokemonName}} raus!", - "switchQuestion": "Möchtest du\n{{pokemonName}} auswechseln?", - "trainerDefeated": `{{trainerName}}\nwurde besiegt!`, - "pokemonCaught": "{{pokemonName}} wurde gefangen!", - "pokemon": "Pokémon", - "sendOutPokemon": "Los, {{pokemonName}}!", - "hitResultCriticalHit": "Ein Volltreffer!", - "hitResultSuperEffective": "Das ist sehr effektiv!", - "hitResultNotVeryEffective": "Das ist nicht sehr effektiv…", - "hitResultNoEffect": "Es hat keine Wirkung auf {{pokemonName}}…", - "hitResultOneHitKO": "Ein K.O.-Treffer!", - "attackFailed": "Es ist fehlgeschlagen!", - "attackHitsCount": `{{count}}-mal getroffen!`, - "expGain": "{{pokemonName}} erhält\n{{exp}} Erfahrungspunkte!", - "levelUp": "{{pokemonName}} erreicht\nLv. {{level}}!", - "learnMove": "{{pokemonName}} erlernt\n{{moveName}}!", - "learnMovePrompt": "{{pokemonName}} versucht, {{moveName}} zu erlernen.", - "learnMoveLimitReached": "Aber {{pokemonName}} kann nur\nmaximal vier Attacken erlernen.", - "learnMoveReplaceQuestion": "Soll eine bekannte Attacke durch\n{{moveName}} ersetzt werden?", - "learnMoveStopTeaching": "{{moveName}} nicht\nerlernen?", - "learnMoveNotLearned": "{{pokemonName}} hat\n{{moveName}} nicht erlernt.", - "learnMoveForgetQuestion": "Welche Attacke soll vergessen werden?", - "learnMoveForgetSuccess": "{{pokemonName}} hat\n{{moveName}} vergessen.", - "countdownPoof": "@d{32}Eins, @d{15}zwei @d{15}und@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}schwupp!", - "learnMoveAnd": "Und…", - "levelCapUp": "Das Levelbeschränkung\nwurde auf {{levelCap}} erhöht!", - "moveNotImplemented": "{{moveName}} ist noch nicht implementiert und kann nicht ausgewählt werden.", - "moveNoPP": "Es sind keine AP für\ndiese Attacke mehr übrig!", - "moveDisabled": "{{moveName}} ist deaktiviert!", - "noPokeballForce": "Eine unsichtbare Kraft\nverhindert die Nutzung von Pokébällen.", - "noPokeballTrainer": "Du kannst das Pokémon\neines anderen Trainers nicht fangen!", - "noPokeballMulti": "Du kannst erst einen Pokéball werfen,\nwenn nur noch ein Pokémon übrig ist!", - "noPokeballStrong": "Das Ziel-Pokémon ist zu stark, um gefangen zu werden!\nDu musst es zuerst schwächen!", - "noEscapeForce": "Eine unsichtbare Kraft\nverhindert die Flucht.", - "noEscapeTrainer": "Du kannst nicht\naus einem Trainerkampf fliehen!", - "noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nverhindert {{escapeVerb}}!", - "runAwaySuccess": "Du bist entkommen!", - "runAwayCannotEscape": 'Flucht gescheitert!', - "escapeVerbSwitch": "auswechseln", - "escapeVerbFlee": "flucht", - "skipItemQuestion": "Bist du sicher, dass du kein Item nehmen willst?", - "notDisabled": "{{pokemonName}}'s {{moveName}} ist\nnicht mehr deaktiviert!", - "eggHatching": "Oh?", - "ivScannerUseQuestion": "IV-Scanner auf {{pokemonName}} benutzen?" + 'bossAppeared': '{{bossName}} erscheint.', + 'trainerAppeared': '{{trainerName}}\nmöchte kämpfen!', + 'trainerAppearedDouble': '{{trainerName}}\nmöchten kämpfen!', + 'singleWildAppeared': 'Ein wildes {{pokemonName}} erscheint!', + 'multiWildAppeared': 'Ein wildes {{pokemonName1}}\nund {{pokemonName2}} erscheinen!', + 'playerComeBack': 'Komm zurück, {{pokemonName}}!', + 'trainerComeBack': '{{trainerName}} ruft {{pokemonName}} zurück!', + 'playerGo': 'Los! {{pokemonName}}!', + 'trainerGo': '{{trainerName}} sendet {{pokemonName}} raus!', + 'switchQuestion': 'Möchtest du\n{{pokemonName}} auswechseln?', + 'trainerDefeated': '{{trainerName}}\nwurde besiegt!', + 'pokemonCaught': '{{pokemonName}} wurde gefangen!', + 'pokemon': 'Pokémon', + 'sendOutPokemon': 'Los, {{pokemonName}}!', + 'hitResultCriticalHit': 'Ein Volltreffer!', + 'hitResultSuperEffective': 'Das ist sehr effektiv!', + 'hitResultNotVeryEffective': 'Das ist nicht sehr effektiv…', + 'hitResultNoEffect': 'Es hat keine Wirkung auf {{pokemonName}}…', + 'hitResultOneHitKO': 'Ein K.O.-Treffer!', + 'attackFailed': 'Es ist fehlgeschlagen!', + 'attackHitsCount': '{{count}}-mal getroffen!', + 'expGain': '{{pokemonName}} erhält\n{{exp}} Erfahrungspunkte!', + 'levelUp': '{{pokemonName}} erreicht\nLv. {{level}}!', + 'learnMove': '{{pokemonName}} erlernt\n{{moveName}}!', + 'learnMovePrompt': '{{pokemonName}} versucht, {{moveName}} zu erlernen.', + 'learnMoveLimitReached': 'Aber {{pokemonName}} kann nur\nmaximal vier Attacken erlernen.', + 'learnMoveReplaceQuestion': 'Soll eine bekannte Attacke durch\n{{moveName}} ersetzt werden?', + 'learnMoveStopTeaching': '{{moveName}} nicht\nerlernen?', + 'learnMoveNotLearned': '{{pokemonName}} hat\n{{moveName}} nicht erlernt.', + 'learnMoveForgetQuestion': 'Welche Attacke soll vergessen werden?', + 'learnMoveForgetSuccess': '{{pokemonName}} hat\n{{moveName}} vergessen.', + 'countdownPoof': '@d{32}Eins, @d{15}zwei @d{15}und@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}schwupp!', + 'learnMoveAnd': 'Und…', + 'levelCapUp': 'Das Levelbeschränkung\nwurde auf {{levelCap}} erhöht!', + 'moveNotImplemented': '{{moveName}} ist noch nicht implementiert und kann nicht ausgewählt werden.', + 'moveNoPP': 'Es sind keine AP für\ndiese Attacke mehr übrig!', + 'moveDisabled': '{{moveName}} ist deaktiviert!', + 'noPokeballForce': 'Eine unsichtbare Kraft\nverhindert die Nutzung von Pokébällen.', + 'noPokeballTrainer': 'Du kannst das Pokémon\neines anderen Trainers nicht fangen!', + 'noPokeballMulti': 'Du kannst erst einen Pokéball werfen,\nwenn nur noch ein Pokémon übrig ist!', + 'noPokeballStrong': 'Das Ziel-Pokémon ist zu stark, um gefangen zu werden!\nDu musst es zuerst schwächen!', + 'noEscapeForce': 'Eine unsichtbare Kraft\nverhindert die Flucht.', + 'noEscapeTrainer': 'Du kannst nicht\naus einem Trainerkampf fliehen!', + 'noEscapePokemon': '{{pokemonName}}\'s {{moveName}}\nverhindert {{escapeVerb}}!', + 'runAwaySuccess': 'Du bist entkommen!', + 'runAwayCannotEscape': 'Flucht gescheitert!', + 'escapeVerbSwitch': 'auswechseln', + 'escapeVerbFlee': 'flucht', + 'skipItemQuestion': 'Bist du sicher, dass du kein Item nehmen willst?', + 'notDisabled': '{{pokemonName}}\'s {{moveName}} ist\nnicht mehr deaktiviert!', + 'eggHatching': 'Oh?', + 'ivScannerUseQuestion': 'IV-Scanner auf {{pokemonName}} benutzen?' } as const; diff --git a/src/locales/de/berry.ts b/src/locales/de/berry.ts index bba64597f6b..c167e30c121 100644 --- a/src/locales/de/berry.ts +++ b/src/locales/de/berry.ts @@ -1,48 +1,48 @@ -import { BerryTranslationEntries } from "#app/plugins/i18n"; +import { BerryTranslationEntries } from '#app/plugins/i18n'; export const berry: BerryTranslationEntries = { - "SITRUS": { - name: "Tsitrubeere", - effect: "Stellt 25% der KP wieder her, wenn die KP unter 50% sind" + 'SITRUS': { + name: 'Tsitrubeere', + effect: 'Stellt 25% der KP wieder her, wenn die KP unter 50% sind' }, - "LUM": { - name: "Prunusbeere", - effect: "Heilt jede nichtflüchtige Statusveränderung und Verwirrung" + 'LUM': { + name: 'Prunusbeere', + effect: 'Heilt jede nichtflüchtige Statusveränderung und Verwirrung' }, - "ENIGMA": { - name: "Enigmabeere", - effect: "Stellt 25% der KP wieder her, wenn der Träger von einer sehr effektiven Attacke getroffen wird", + 'ENIGMA': { + name: 'Enigmabeere', + effect: 'Stellt 25% der KP wieder her, wenn der Träger von einer sehr effektiven Attacke getroffen wird', }, - "LIECHI": { - name: "Lydzibeere", - effect: "Steigert den Angriff, wenn die KP unter 25% sind" + 'LIECHI': { + name: 'Lydzibeere', + effect: 'Steigert den Angriff, wenn die KP unter 25% sind' }, - "GANLON": { - name: "Linganbeere", - effect: "Steigert die Verteidigung, wenn die KP unter 25% sind" + 'GANLON': { + name: 'Linganbeere', + effect: 'Steigert die Verteidigung, wenn die KP unter 25% sind' }, - "PETAYA": { - name: "Tahaybeere", - effect: "Steigert den Spezial-Angriff, wenn die KP unter 25% sind" + 'PETAYA': { + name: 'Tahaybeere', + effect: 'Steigert den Spezial-Angriff, wenn die KP unter 25% sind' }, - "APICOT": { - name: "Apikobeere", - effect: "Steigert die Spezial-Verteidigung, wenn die KP unter 25% sind" + 'APICOT': { + name: 'Apikobeere', + effect: 'Steigert die Spezial-Verteidigung, wenn die KP unter 25% sind' }, - "SALAC": { - name: "Salkabeere", - effect: "Steigert die Initiative, wenn die KP unter 25% sind" + 'SALAC': { + name: 'Salkabeere', + effect: 'Steigert die Initiative, wenn die KP unter 25% sind' }, - "LANSAT": { - name: "Lansatbeere", - effect: "Erhöht die Volltrefferchance, wenn die KP unter 25% sind" + 'LANSAT': { + name: 'Lansatbeere', + effect: 'Erhöht die Volltrefferchance, wenn die KP unter 25% sind' }, - "STARF": { - name: "Krambobeere", - effect: "Erhöht eine Statuswert stark, wenn die KP unter 25% sind" + 'STARF': { + name: 'Krambobeere', + effect: 'Erhöht eine Statuswert stark, wenn die KP unter 25% sind' }, - "LEPPA": { - name: "Jonagobeere", - effect: "Stellt 10 AP für eine Attacke wieder her, wenn deren AP auf 0 fallen" + 'LEPPA': { + name: 'Jonagobeere', + effect: 'Stellt 10 AP für eine Attacke wieder her, wenn deren AP auf 0 fallen' }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/de/command-ui-handler.ts b/src/locales/de/command-ui-handler.ts index c7842c6127c..9a62d18ca58 100644 --- a/src/locales/de/command-ui-handler.ts +++ b/src/locales/de/command-ui-handler.ts @@ -1,9 +1,9 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const commandUiHandler: SimpleTranslationEntries = { - "fight": "Kampf", - "ball": "Ball", - "pokemon": "Pokémon", - "run": "Fliehen", - "actionMessage": "Was soll\n{{pokemonName}} tun?", -} as const; \ No newline at end of file + 'fight': 'Kampf', + 'ball': 'Ball', + 'pokemon': 'Pokémon', + 'run': 'Fliehen', + 'actionMessage': 'Was soll\n{{pokemonName}} tun?', +} as const; diff --git a/src/locales/de/config.ts b/src/locales/de/config.ts index 3580d74876d..fada87337d0 100644 --- a/src/locales/de/config.ts +++ b/src/locales/de/config.ts @@ -1,51 +1,51 @@ -import { ability } from "./ability"; -import { abilityTriggers } from "./ability-trigger"; -import { battle } from "./battle"; -import { commandUiHandler } from "./command-ui-handler"; -import { egg } from "./egg"; -import { fightUiHandler } from "./fight-ui-handler"; -import { growth } from "./growth"; -import { menu } from "./menu"; -import { menuUiHandler } from "./menu-ui-handler"; -import { modifierType } from "./modifier-type"; -import { move } from "./move"; -import { nature } from "./nature"; -import { pokeball } from "./pokeball"; -import { pokemon } from "./pokemon"; -import { pokemonInfo } from "./pokemon-info"; -import { splashMessages } from "./splash-messages"; -import { starterSelectUiHandler } from "./starter-select-ui-handler"; -import { titles, trainerClasses, trainerNames } from "./trainers"; -import { tutorial } from "./tutorial"; -import { weather } from "./weather"; -import { battleMessageUiHandler } from "./battle-message-ui-handler"; -import { berry } from "./berry"; -import { voucher } from "./voucher"; +import { ability } from './ability'; +import { abilityTriggers } from './ability-trigger'; +import { battle } from './battle'; +import { commandUiHandler } from './command-ui-handler'; +import { egg } from './egg'; +import { fightUiHandler } from './fight-ui-handler'; +import { growth } from './growth'; +import { menu } from './menu'; +import { menuUiHandler } from './menu-ui-handler'; +import { modifierType } from './modifier-type'; +import { move } from './move'; +import { nature } from './nature'; +import { pokeball } from './pokeball'; +import { pokemon } from './pokemon'; +import { pokemonInfo } from './pokemon-info'; +import { splashMessages } from './splash-messages'; +import { starterSelectUiHandler } from './starter-select-ui-handler'; +import { titles, trainerClasses, trainerNames } from './trainers'; +import { tutorial } from './tutorial'; +import { weather } from './weather'; +import { battleMessageUiHandler } from './battle-message-ui-handler'; +import { berry } from './berry'; +import { voucher } from './voucher'; export const deConfig = { - ability: ability, - abilityTriggers: abilityTriggers, - battle: battle, - commandUiHandler: commandUiHandler, - egg: egg, - fightUiHandler: fightUiHandler, - growth: growth, - menu: menu, - menuUiHandler: menuUiHandler, - modifierType: modifierType, - move: move, - nature: nature, - pokeball: pokeball, - pokemon: pokemon, - pokemonInfo: pokemonInfo, - splashMessages: splashMessages, - starterSelectUiHandler: starterSelectUiHandler, - titles: titles, - trainerClasses: trainerClasses, - trainerNames: trainerNames, - tutorial: tutorial, - weather: weather, - battleMessageUiHandler: battleMessageUiHandler, - berry: berry, - voucher: voucher, -} + ability: ability, + abilityTriggers: abilityTriggers, + battle: battle, + commandUiHandler: commandUiHandler, + egg: egg, + fightUiHandler: fightUiHandler, + growth: growth, + menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, + move: move, + nature: nature, + pokeball: pokeball, + pokemon: pokemon, + pokemonInfo: pokemonInfo, + splashMessages: splashMessages, + starterSelectUiHandler: starterSelectUiHandler, + titles: titles, + trainerClasses: trainerClasses, + trainerNames: trainerNames, + tutorial: tutorial, + weather: weather, + battleMessageUiHandler: battleMessageUiHandler, + berry: berry, + voucher: voucher, +}; diff --git a/src/locales/de/egg.ts b/src/locales/de/egg.ts index 3950d6729ff..4c6ca300d33 100644 --- a/src/locales/de/egg.ts +++ b/src/locales/de/egg.ts @@ -1,21 +1,21 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const egg: SimpleTranslationEntries = { - "egg": "Ei", - "greatTier": "Selten", - "ultraTier": "Episch", - "masterTier": "Legendär", - "defaultTier": "Gewöhnlich", - "hatchWavesMessageSoon": "Man kann schon etwas hören! Es wird wohl bald schlüpfen!", - "hatchWavesMessageClose": "Manchmal bewegt es sich! Es braucht wohl noch ein Weilchen.", - "hatchWavesMessageNotClose": "Was wird da wohl schlüpfen? Es wird sicher noch lange dauern.", - "hatchWavesMessageLongTime": "Dieses Ei braucht sicher noch sehr viel Zeit.", - "gachaTypeLegendary": "Erhöhte Chance auf legendäre Eier", - "gachaTypeMove": "Erhöhte Chance auf Eier mit seltenen Attacken", - "gachaTypeShiny": "Erhöhte Chance auf schillernde Eier", - "selectMachine": "Wähle eine Maschine", - "notEnoughVouchers": "Du hast nicht genug Ei-Gutscheine!", - "tooManyEggs": "Du hast schon zu viele Eier!", - "pull": "Pull", - "pulls": "Pulls" -} as const; \ No newline at end of file + 'egg': 'Ei', + 'greatTier': 'Selten', + 'ultraTier': 'Episch', + 'masterTier': 'Legendär', + 'defaultTier': 'Gewöhnlich', + 'hatchWavesMessageSoon': 'Man kann schon etwas hören! Es wird wohl bald schlüpfen!', + 'hatchWavesMessageClose': 'Manchmal bewegt es sich! Es braucht wohl noch ein Weilchen.', + 'hatchWavesMessageNotClose': 'Was wird da wohl schlüpfen? Es wird sicher noch lange dauern.', + 'hatchWavesMessageLongTime': 'Dieses Ei braucht sicher noch sehr viel Zeit.', + 'gachaTypeLegendary': 'Erhöhte Chance auf legendäre Eier', + 'gachaTypeMove': 'Erhöhte Chance auf Eier mit seltenen Attacken', + 'gachaTypeShiny': 'Erhöhte Chance auf schillernde Eier', + 'selectMachine': 'Wähle eine Maschine', + 'notEnoughVouchers': 'Du hast nicht genug Ei-Gutscheine!', + 'tooManyEggs': 'Du hast schon zu viele Eier!', + 'pull': 'Pull', + 'pulls': 'Pulls' +} as const; diff --git a/src/locales/de/fight-ui-handler.ts b/src/locales/de/fight-ui-handler.ts index 4d94d24f34f..f6038d076a0 100644 --- a/src/locales/de/fight-ui-handler.ts +++ b/src/locales/de/fight-ui-handler.ts @@ -1,7 +1,7 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const fightUiHandler: SimpleTranslationEntries = { - "pp": "AP", - "power": "Stärke", - "accuracy": "Genauigkeit", -} as const; \ No newline at end of file + 'pp': 'AP', + 'power': 'Stärke', + 'accuracy': 'Genauigkeit', +} as const; diff --git a/src/locales/de/growth.ts b/src/locales/de/growth.ts index 28dcf8de4bb..c04c2e6484f 100644 --- a/src/locales/de/growth.ts +++ b/src/locales/de/growth.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const growth: SimpleTranslationEntries = { - "Erratic": "Unregelmäßig", - "Fast": "Schnell", - "Medium_Fast": "Schneller", - "Medium_Slow": "Langsamer", - "Slow": "Langsam", - "Fluctuating": "Schwankend" -} as const; \ No newline at end of file + 'Erratic': 'Unregelmäßig', + 'Fast': 'Schnell', + 'Medium_Fast': 'Schneller', + 'Medium_Slow': 'Langsamer', + 'Slow': 'Langsam', + 'Fluctuating': 'Schwankend' +} as const; diff --git a/src/locales/de/menu-ui-handler.ts b/src/locales/de/menu-ui-handler.ts index aa09a3b4c6f..8fe541baf29 100644 --- a/src/locales/de/menu-ui-handler.ts +++ b/src/locales/de/menu-ui-handler.ts @@ -1,23 +1,23 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const menuUiHandler: SimpleTranslationEntries = { - "GAME_SETTINGS": 'Spieleinstellungen', - "ACHIEVEMENTS": "Erfolge", - "STATS": "Statistiken", - "VOUCHERS": "Gutscheine", - "EGG_LIST": "Eierliste", - "EGG_GACHA": "Eier-Gacha", - "MANAGE_DATA": "Daten verwalten", - "COMMUNITY": "Community", - "SAVE_AND_QUIT": "Speichern und Beenden", - "LOG_OUT": "Abmelden", - "slot": "Slot {{slotNumber}}", - "importSession": "Sitzung importieren", - "importSlotSelect": "Wähle einen Slot zum Importieren.", - "exportSession": "Sitzung exportieren", - "exportSlotSelect": "Wähle einen Slot zum Exportieren.", - "importData": "Daten importieren", - "exportData": "Daten exportieren", - "cancel": "Abbrechen", - "losingProgressionWarning": "Du wirst jeglichen Fortschritt seit Anfang dieses Kampfes verlieren. Fortfahren?" + 'GAME_SETTINGS': 'Spieleinstellungen', + 'ACHIEVEMENTS': 'Erfolge', + 'STATS': 'Statistiken', + 'VOUCHERS': 'Gutscheine', + 'EGG_LIST': 'Eierliste', + 'EGG_GACHA': 'Eier-Gacha', + 'MANAGE_DATA': 'Daten verwalten', + 'COMMUNITY': 'Community', + 'SAVE_AND_QUIT': 'Speichern und Beenden', + 'LOG_OUT': 'Abmelden', + 'slot': 'Slot {{slotNumber}}', + 'importSession': 'Sitzung importieren', + 'importSlotSelect': 'Wähle einen Slot zum Importieren.', + 'exportSession': 'Sitzung exportieren', + 'exportSlotSelect': 'Wähle einen Slot zum Exportieren.', + 'importData': 'Daten importieren', + 'exportData': 'Daten exportieren', + 'cancel': 'Abbrechen', + 'losingProgressionWarning': 'Du wirst jeglichen Fortschritt seit Anfang dieses Kampfes verlieren. Fortfahren?' } as const; diff --git a/src/locales/de/menu.ts b/src/locales/de/menu.ts index 0d33fb4cbd8..8cfc220283e 100644 --- a/src/locales/de/menu.ts +++ b/src/locales/de/menu.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,46 +6,46 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const menu: SimpleTranslationEntries = { - "cancel": "Abbrechen", - "continue": "Fortfahren", - "dailyRun": "Täglicher Run (Beta)", - "loadGame": "Spiel laden", - "newGame": "Neues Spiel", - "selectGameMode": "Wähle einen Spielmodus", - "logInOrCreateAccount": "Melde dich an oder erstelle einen Account zum starten. Keine Email nötig!", - "username": "Benutzername", - "password": "Passwort", - "login": "Anmelden", - "register": "Registrieren", - "emptyUsername": "Benutzername darf nicht leer sein", - "invalidLoginUsername": "Der eingegebene Benutzername ist ungültig", - "invalidRegisterUsername": "Benutzername darf nur Buchstaben, Zahlen oder Unterstriche enthalten", - "invalidLoginPassword": "Das eingegebene Passwort ist ungültig", - "invalidRegisterPassword": "Passwort muss 6 Zeichen oder länger sein", - "usernameAlreadyUsed": "Der eingegebene Benutzername wird bereits verwendet", - "accountNonExistent": "Der eingegebene Benutzer existiert nicht", - "unmatchingPassword": "Das eingegebene Passwort stimmt nicht überein", - "passwordNotMatchingConfirmPassword": "Passwort muss mit Bestätigungspasswort übereinstimmen", - "confirmPassword": "Bestätige Passwort", - "registrationAgeWarning": "Mit der Registrierung bestätigen Sie, dass Sie 13 Jahre oder älter sind.", - "backToLogin": "Zurück zur Anmeldung", - "failedToLoadSaveData": "Speicherdaten konnten nicht geladen werden. Bitte laden Sie die Seite neu.\nWenn dies weiterhin der Fall ist, wenden Sie sich bitte an den Administrator.", - "sessionSuccess": "Sitzung erfolgreich geladen.", - "failedToLoadSession": "Ihre Sitzungsdaten konnten nicht geladen werden.\nSie könnten beschädigt sein.", - "boyOrGirl": "Bist du ein Junge oder ein Mädchen?", - "boy": "Junge", - "girl": "Mädchen", - "evolving": "Nanu?\n{{pokemonName}} entwickelt sich!", - "stoppedEvolving": "Hm? {{pokemonName}} hat die Entwicklung \nabgebrochen.", // "Hm? Entwicklung wurde abgebrochen!" without naming the pokemon seems to be the original. - "pauseEvolutionsQuestion": "Die Entwicklung von {{pokemonName}} vorübergehend pausieren?\nEntwicklungen können im Gruppenmenü wieder aktiviert werden.", - "evolutionsPaused": "Entwicklung von {{pokemonName}} pausiert.", - "evolutionDone": "Glückwunsch!\nDein {{pokemonName}} entwickelte sich zu {{evolvedPokemonName}}!", - "dailyRankings": "Tägliche Rangliste", - "weeklyRankings": "Wöchentliche Rangliste", - "noRankings": "Keine Rangliste", - "loading": "Lade…", - "playersOnline": "Spieler Online", - "empty":"Leer", - "yes":"Ja", - "no":"Nein", + 'cancel': 'Abbrechen', + 'continue': 'Fortfahren', + 'dailyRun': 'Täglicher Run (Beta)', + 'loadGame': 'Spiel laden', + 'newGame': 'Neues Spiel', + 'selectGameMode': 'Wähle einen Spielmodus', + 'logInOrCreateAccount': 'Melde dich an oder erstelle einen Account zum starten. Keine Email nötig!', + 'username': 'Benutzername', + 'password': 'Passwort', + 'login': 'Anmelden', + 'register': 'Registrieren', + 'emptyUsername': 'Benutzername darf nicht leer sein', + 'invalidLoginUsername': 'Der eingegebene Benutzername ist ungültig', + 'invalidRegisterUsername': 'Benutzername darf nur Buchstaben, Zahlen oder Unterstriche enthalten', + 'invalidLoginPassword': 'Das eingegebene Passwort ist ungültig', + 'invalidRegisterPassword': 'Passwort muss 6 Zeichen oder länger sein', + 'usernameAlreadyUsed': 'Der eingegebene Benutzername wird bereits verwendet', + 'accountNonExistent': 'Der eingegebene Benutzer existiert nicht', + 'unmatchingPassword': 'Das eingegebene Passwort stimmt nicht überein', + 'passwordNotMatchingConfirmPassword': 'Passwort muss mit Bestätigungspasswort übereinstimmen', + 'confirmPassword': 'Bestätige Passwort', + 'registrationAgeWarning': 'Mit der Registrierung bestätigen Sie, dass Sie 13 Jahre oder älter sind.', + 'backToLogin': 'Zurück zur Anmeldung', + 'failedToLoadSaveData': 'Speicherdaten konnten nicht geladen werden. Bitte laden Sie die Seite neu.\nWenn dies weiterhin der Fall ist, wenden Sie sich bitte an den Administrator.', + 'sessionSuccess': 'Sitzung erfolgreich geladen.', + 'failedToLoadSession': 'Ihre Sitzungsdaten konnten nicht geladen werden.\nSie könnten beschädigt sein.', + 'boyOrGirl': 'Bist du ein Junge oder ein Mädchen?', + 'boy': 'Junge', + 'girl': 'Mädchen', + 'evolving': 'Nanu?\n{{pokemonName}} entwickelt sich!', + 'stoppedEvolving': 'Hm? {{pokemonName}} hat die Entwicklung \nabgebrochen.', // "Hm? Entwicklung wurde abgebrochen!" without naming the pokemon seems to be the original. + 'pauseEvolutionsQuestion': 'Die Entwicklung von {{pokemonName}} vorübergehend pausieren?\nEntwicklungen können im Gruppenmenü wieder aktiviert werden.', + 'evolutionsPaused': 'Entwicklung von {{pokemonName}} pausiert.', + 'evolutionDone': 'Glückwunsch!\nDein {{pokemonName}} entwickelte sich zu {{evolvedPokemonName}}!', + 'dailyRankings': 'Tägliche Rangliste', + 'weeklyRankings': 'Wöchentliche Rangliste', + 'noRankings': 'Keine Rangliste', + 'loading': 'Lade…', + 'playersOnline': 'Spieler Online', + 'empty':'Leer', + 'yes':'Ja', + 'no':'Nein', } as const; diff --git a/src/locales/de/modifier-type.ts b/src/locales/de/modifier-type.ts index 5006ee294f6..35eb3d56d1f 100644 --- a/src/locales/de/modifier-type.ts +++ b/src/locales/de/modifier-type.ts @@ -1,388 +1,388 @@ -import { ModifierTypeTranslationEntries } from "#app/plugins/i18n"; +import { ModifierTypeTranslationEntries } from '#app/plugins/i18n'; export const modifierType: ModifierTypeTranslationEntries = { ModifierType: { - "AddPokeballModifierType": { - name: "{{modifierCount}}x {{pokeballName}}", - description: "Erhalte {{pokeballName}} x{{modifierCount}} (Inventar: {{pokeballAmount}}) \nFangrate: {{catchRate}}", + 'AddPokeballModifierType': { + name: '{{modifierCount}}x {{pokeballName}}', + description: 'Erhalte {{pokeballName}} x{{modifierCount}} (Inventar: {{pokeballAmount}}) \nFangrate: {{catchRate}}', }, - "AddVoucherModifierType": { - name: "{{modifierCount}}x {{voucherTypeName}}", - description: "Erhalte {{voucherTypeName}} x{{modifierCount}}", + 'AddVoucherModifierType': { + name: '{{modifierCount}}x {{voucherTypeName}}', + description: 'Erhalte {{voucherTypeName}} x{{modifierCount}}', }, - "PokemonHeldItemModifierType": { + 'PokemonHeldItemModifierType': { extra: { - "inoperable": "{{pokemonName}} kann dieses\nItem nicht nehmen!", - "tooMany": "{{pokemonName}} hat zu viele\nvon diesem Item!", + 'inoperable': '{{pokemonName}} kann dieses\nItem nicht nehmen!', + 'tooMany': '{{pokemonName}} hat zu viele\nvon diesem Item!', } }, - "PokemonHpRestoreModifierType": { - description: "Füllt {{restorePoints}} KP oder {{restorePercent}}% der KP für ein Pokémon auf. Je nachdem, welcher Wert höher ist", + 'PokemonHpRestoreModifierType': { + description: 'Füllt {{restorePoints}} KP oder {{restorePercent}}% der KP für ein Pokémon auf. Je nachdem, welcher Wert höher ist', extra: { - "fully": "Füllt die KP eines Pokémon wieder vollständig auf.", - "fullyWithStatus": "Füllt die KP eines Pokémon wieder vollständig auf und behebt alle Statusprobleme", + 'fully': 'Füllt die KP eines Pokémon wieder vollständig auf.', + 'fullyWithStatus': 'Füllt die KP eines Pokémon wieder vollständig auf und behebt alle Statusprobleme', } }, - "PokemonReviveModifierType": { - description: "Belebt ein kampunfähiges Pokémon wieder und stellt {{restorePercent}}% KP wieder her", + 'PokemonReviveModifierType': { + description: 'Belebt ein kampunfähiges Pokémon wieder und stellt {{restorePercent}}% KP wieder her', }, - "PokemonStatusHealModifierType": { - description: "Behebt alle Statusprobleme eines Pokémon", + 'PokemonStatusHealModifierType': { + description: 'Behebt alle Statusprobleme eines Pokémon', }, - "PokemonPpRestoreModifierType": { - description: "Füllt {{restorePoints}} AP der ausgewählten Attacke eines Pokémon auf", + 'PokemonPpRestoreModifierType': { + description: 'Füllt {{restorePoints}} AP der ausgewählten Attacke eines Pokémon auf', extra: { - "fully": "Füllt alle AP der ausgewählten Attacke eines Pokémon auf", + 'fully': 'Füllt alle AP der ausgewählten Attacke eines Pokémon auf', } }, - "PokemonAllMovePpRestoreModifierType": { - description: "Stellt {{restorePoints}} AP für alle Attacken eines Pokémon auf", + 'PokemonAllMovePpRestoreModifierType': { + description: 'Stellt {{restorePoints}} AP für alle Attacken eines Pokémon auf', extra: { - "fully": "Füllt alle AP für alle Attacken eines Pokémon auf", + 'fully': 'Füllt alle AP für alle Attacken eines Pokémon auf', } }, - "PokemonPpUpModifierType": { - description: "Erhöht die maximale Anzahl der AP der ausgewählten Attacke um {{upPoints}} für jede 5 maximale AP (maximal 3)", + 'PokemonPpUpModifierType': { + description: 'Erhöht die maximale Anzahl der AP der ausgewählten Attacke um {{upPoints}} für jede 5 maximale AP (maximal 3)', }, - "PokemonNatureChangeModifierType": { - name: "{{natureName}} Minze", - description: "Ändert das Wesen zu {{natureName}}. Schaltet dieses Wesen permanent für diesen Starter frei.", + 'PokemonNatureChangeModifierType': { + name: '{{natureName}} Minze', + description: 'Ändert das Wesen zu {{natureName}}. Schaltet dieses Wesen permanent für diesen Starter frei.', }, - "DoubleBattleChanceBoosterModifierType": { - description: "Verdoppelt die Wahrscheinlichkeit, dass die nächsten {{battleCount}} Begegnungen mit wilden Pokémon ein Doppelkampf sind.", + 'DoubleBattleChanceBoosterModifierType': { + description: 'Verdoppelt die Wahrscheinlichkeit, dass die nächsten {{battleCount}} Begegnungen mit wilden Pokémon ein Doppelkampf sind.', }, - "TempBattleStatBoosterModifierType": { - description: "Erhöht die {{tempBattleStatName}} aller Teammitglieder für 5 Kämpfe um eine Stufe", + 'TempBattleStatBoosterModifierType': { + description: 'Erhöht die {{tempBattleStatName}} aller Teammitglieder für 5 Kämpfe um eine Stufe', }, - "AttackTypeBoosterModifierType": { - description: "Erhöht die Stärke aller {{moveType}}-Attacken eines Pokémon um 20%", + 'AttackTypeBoosterModifierType': { + description: 'Erhöht die Stärke aller {{moveType}}-Attacken eines Pokémon um 20%', }, - "PokemonLevelIncrementModifierType": { - description: "Erhöht das Level eines Pokémon um 1", + 'PokemonLevelIncrementModifierType': { + description: 'Erhöht das Level eines Pokémon um 1', }, - "AllPokemonLevelIncrementModifierType": { - description: "Erhöht das Level aller Teammitglieder um 1", + 'AllPokemonLevelIncrementModifierType': { + description: 'Erhöht das Level aller Teammitglieder um 1', }, - "PokemonBaseStatBoosterModifierType": { - description: "Erhöht den {{statName}} Basiswert des Trägers um 10%. Das Stapellimit erhöht sich, je höher dein IS-Wert ist.", + 'PokemonBaseStatBoosterModifierType': { + description: 'Erhöht den {{statName}} Basiswert des Trägers um 10%. Das Stapellimit erhöht sich, je höher dein IS-Wert ist.', }, - "AllPokemonFullHpRestoreModifierType": { - description: "Stellt 100% der KP aller Pokémon her", + 'AllPokemonFullHpRestoreModifierType': { + description: 'Stellt 100% der KP aller Pokémon her', }, - "AllPokemonFullReviveModifierType": { - description: "Belebt alle kampunfähigen Pokémon wieder und stellt ihre KP vollständig wieder her", + 'AllPokemonFullReviveModifierType': { + description: 'Belebt alle kampunfähigen Pokémon wieder und stellt ihre KP vollständig wieder her', }, - "MoneyRewardModifierType": { - description:"Gewährt einen {{moneyMultiplier}} Geldbetrag von (₽{{moneyAmount}})", + 'MoneyRewardModifierType': { + description:'Gewährt einen {{moneyMultiplier}} Geldbetrag von (₽{{moneyAmount}})', extra: { - "small": "kleinen", - "moderate": "moderaten", - "large": "großen", + 'small': 'kleinen', + 'moderate': 'moderaten', + 'large': 'großen', }, }, - "ExpBoosterModifierType": { - description: "Erhöht die erhaltenen Erfahrungspunkte um {{boostPercent}}%", + 'ExpBoosterModifierType': { + description: 'Erhöht die erhaltenen Erfahrungspunkte um {{boostPercent}}%', }, - "PokemonExpBoosterModifierType": { - description: "Erhöht die Menge der erhaltenen Erfahrungspunkte für den Träger um {{boostPercent}}%", + 'PokemonExpBoosterModifierType': { + description: 'Erhöht die Menge der erhaltenen Erfahrungspunkte für den Träger um {{boostPercent}}%', }, - "PokemonFriendshipBoosterModifierType": { - description: "Erhöht den Freundschaftszuwachs pro Sieg um 50%.", + 'PokemonFriendshipBoosterModifierType': { + description: 'Erhöht den Freundschaftszuwachs pro Sieg um 50%.', }, - "PokemonMoveAccuracyBoosterModifierType": { - description: "Erhöht die Genauigkeit der Angriffe um {{accuracyAmount}} (maximal 100)", + 'PokemonMoveAccuracyBoosterModifierType': { + description: 'Erhöht die Genauigkeit der Angriffe um {{accuracyAmount}} (maximal 100)', }, - "PokemonMultiHitModifierType": { - description: "Attacken treffen ein weiteres mal mit einer Reduktion von 60/75/82,5% der Stärke", + 'PokemonMultiHitModifierType': { + description: 'Attacken treffen ein weiteres mal mit einer Reduktion von 60/75/82,5% der Stärke', }, - "TmModifierType": { - name: "TM{{moveId}} - {{moveName}}", - description: "Bringt einem Pokémon {{moveName}} bei", + 'TmModifierType': { + name: 'TM{{moveId}} - {{moveName}}', + description: 'Bringt einem Pokémon {{moveName}} bei', }, - "EvolutionItemModifierType": { - description: "Erlaubt es bestimmten Pokémon sich zu entwickeln", + 'EvolutionItemModifierType': { + description: 'Erlaubt es bestimmten Pokémon sich zu entwickeln', }, - "FormChangeItemModifierType": { - description: "Erlaubt es bestimmten Pokémon ihre Form zu ändern", + 'FormChangeItemModifierType': { + description: 'Erlaubt es bestimmten Pokémon ihre Form zu ändern', }, - "FusePokemonModifierType": { - description: "Fusioniert zwei Pokémon (überträgt die Fähigkeit, teilt Basiswerte und Typ auf, gemeinsamer Attackenpool)", + 'FusePokemonModifierType': { + description: 'Fusioniert zwei Pokémon (überträgt die Fähigkeit, teilt Basiswerte und Typ auf, gemeinsamer Attackenpool)', }, - "TerastallizeModifierType": { - name: "{{teraType}} Terra-Stück", - description: "{{teraType}} Terakristallisiert den Träger für bis zu 10 Kämpfe", + 'TerastallizeModifierType': { + name: '{{teraType}} Terra-Stück', + description: '{{teraType}} Terakristallisiert den Träger für bis zu 10 Kämpfe', }, - "ContactHeldItemTransferChanceModifierType": { - description:"Beim Angriff besteht eine {{chancePercent}}%ige Chance, dass das getragene Item des Gegners gestohlen wird." + 'ContactHeldItemTransferChanceModifierType': { + description:'Beim Angriff besteht eine {{chancePercent}}%ige Chance, dass das getragene Item des Gegners gestohlen wird.' }, - "TurnHeldItemTransferModifierType": { - description: "Jede Runde erhält der Träger ein getragenes Item des Gegners", + 'TurnHeldItemTransferModifierType': { + description: 'Jede Runde erhält der Träger ein getragenes Item des Gegners', }, - "EnemyAttackStatusEffectChanceModifierType": { - description: "Fügt Angriffen eine {{chancePercent}}%ige Chance hinzu, {{statusEffect}} zu verursachen", + 'EnemyAttackStatusEffectChanceModifierType': { + description: 'Fügt Angriffen eine {{chancePercent}}%ige Chance hinzu, {{statusEffect}} zu verursachen', }, - "EnemyEndureChanceModifierType": { - description: "Gibt den Träger eine {{chancePercent}}%ige Chance, einen Angriff zu überleben", + 'EnemyEndureChanceModifierType': { + description: 'Gibt den Träger eine {{chancePercent}}%ige Chance, einen Angriff zu überleben', }, - "RARE_CANDY": { name: "Sonderbonbon" }, - "RARER_CANDY": { name: "Supersondererbonbon" }, + 'RARE_CANDY': { name: 'Sonderbonbon' }, + 'RARER_CANDY': { name: 'Supersondererbonbon' }, - "MEGA_BRACELET": { name: "Mega-Armband", description: "Mega-Steine werden verfügbar" }, - "DYNAMAX_BAND": { name: "Dynamax-Band", description: "Dyna-Pilze werden verfügbar" }, - "TERA_ORB": { name: "Terakristall-Orb", description: "Tera-Stücke werden verfügbar" }, + 'MEGA_BRACELET': { name: 'Mega-Armband', description: 'Mega-Steine werden verfügbar' }, + 'DYNAMAX_BAND': { name: 'Dynamax-Band', description: 'Dyna-Pilze werden verfügbar' }, + 'TERA_ORB': { name: 'Terakristall-Orb', description: 'Tera-Stücke werden verfügbar' }, - "MAP": { name: "Karte", description: "Ermöglicht es dir, an einer Kreuzung dein Ziel zu wählen." }, + 'MAP': { name: 'Karte', description: 'Ermöglicht es dir, an einer Kreuzung dein Ziel zu wählen.' }, - "POTION": { name: "Trank" }, - "SUPER_POTION": { name: "Supertrank" }, - "HYPER_POTION": { name: "Hypertrank" }, - "MAX_POTION": { name: "Top-Trank" }, - "FULL_RESTORE": { name: "Top-Genesung" }, + 'POTION': { name: 'Trank' }, + 'SUPER_POTION': { name: 'Supertrank' }, + 'HYPER_POTION': { name: 'Hypertrank' }, + 'MAX_POTION': { name: 'Top-Trank' }, + 'FULL_RESTORE': { name: 'Top-Genesung' }, - "REVIVE": { name: "Beleber" }, - "MAX_REVIVE": { name: "Top-Beleber" }, + 'REVIVE': { name: 'Beleber' }, + 'MAX_REVIVE': { name: 'Top-Beleber' }, - "FULL_HEAL": { name: "Hyperheiler" }, + 'FULL_HEAL': { name: 'Hyperheiler' }, - "SACRED_ASH": { name: "Zauberasche" }, + 'SACRED_ASH': { name: 'Zauberasche' }, - "REVIVER_SEED": { name: "Belebersamen", description: "Belebt den Träger mit der Hälfte seiner KP wieder sollte er kampfunfähig werden" }, + 'REVIVER_SEED': { name: 'Belebersamen', description: 'Belebt den Träger mit der Hälfte seiner KP wieder sollte er kampfunfähig werden' }, - "ETHER": { name: "Äther" }, - "MAX_ETHER": { name: "Top-Äther" }, + 'ETHER': { name: 'Äther' }, + 'MAX_ETHER': { name: 'Top-Äther' }, - "ELIXIR": { name: "Elixir" }, - "MAX_ELIXIR": { name: "Top-Elixir" }, + 'ELIXIR': { name: 'Elixir' }, + 'MAX_ELIXIR': { name: 'Top-Elixir' }, - "PP_UP": { name: "AP-Plus" }, - "PP_MAX": { name: "AP-Top" }, + 'PP_UP': { name: 'AP-Plus' }, + 'PP_MAX': { name: 'AP-Top' }, - "LURE": { name: "Lockparfüm" }, - "SUPER_LURE": { name: "Super-Lockparfüm" }, - "MAX_LURE": { name: "Top-Lockparfüm" }, + 'LURE': { name: 'Lockparfüm' }, + 'SUPER_LURE': { name: 'Super-Lockparfüm' }, + 'MAX_LURE': { name: 'Top-Lockparfüm' }, - "MEMORY_MUSHROOM": { name: "Erinnerungspilz", description: "Lässt ein Pokémon eine vergessene Attacke wiedererlernen" }, + 'MEMORY_MUSHROOM': { name: 'Erinnerungspilz', description: 'Lässt ein Pokémon eine vergessene Attacke wiedererlernen' }, - "EXP_SHARE": { name: "EP-Teiler", description: "Pokémon, die nicht am Kampf teilgenommen haben, bekommen 20% der Erfahrungspunkte eines Kampfteilnehmers" }, - "EXP_BALANCE": { name: "EP-Ausgleicher", description: "Gewichtet die in Kämpfen erhaltenen Erfahrungspunkte auf niedrigstufigere Gruppenmitglieder." }, + 'EXP_SHARE': { name: 'EP-Teiler', description: 'Pokémon, die nicht am Kampf teilgenommen haben, bekommen 20% der Erfahrungspunkte eines Kampfteilnehmers' }, + 'EXP_BALANCE': { name: 'EP-Ausgleicher', description: 'Gewichtet die in Kämpfen erhaltenen Erfahrungspunkte auf niedrigstufigere Gruppenmitglieder.' }, - "OVAL_CHARM": { name: "Ovalpin", description: "Wenn mehrere Pokémon am Kampf teilnehmen, erhählt jeder von ihnen 10% extra Erfahrungspunkte" }, + 'OVAL_CHARM': { name: 'Ovalpin', description: 'Wenn mehrere Pokémon am Kampf teilnehmen, erhählt jeder von ihnen 10% extra Erfahrungspunkte' }, - "EXP_CHARM": { name: "EP-Pin" }, - "SUPER_EXP_CHARM": { name: "Super-EP-Pin" }, - "GOLDEN_EXP_CHARM": { name: "Goldener EP-Pin" }, + 'EXP_CHARM': { name: 'EP-Pin' }, + 'SUPER_EXP_CHARM': { name: 'Super-EP-Pin' }, + 'GOLDEN_EXP_CHARM': { name: 'Goldener EP-Pin' }, - "LUCKY_EGG": { name: "Glücks-Ei" }, - "GOLDEN_EGG": { name: "Goldenes Ei" }, + 'LUCKY_EGG': { name: 'Glücks-Ei' }, + 'GOLDEN_EGG': { name: 'Goldenes Ei' }, - "SOOTHE_BELL": { name: "Sanftglocke" }, + 'SOOTHE_BELL': { name: 'Sanftglocke' }, - "SOUL_DEW": { name: "Seelentau", description: "Erhöht den Einfluss des Wesens eines Pokemon auf seine Werte um 10% (additiv)" }, + 'SOUL_DEW': { name: 'Seelentau', description: 'Erhöht den Einfluss des Wesens eines Pokemon auf seine Werte um 10% (additiv)' }, - "NUGGET": { name: "Nugget" }, - "BIG_NUGGET": { name: "Riesennugget" }, - "RELIC_GOLD": { name: "Alter Dukat" }, + 'NUGGET': { name: 'Nugget' }, + 'BIG_NUGGET': { name: 'Riesennugget' }, + 'RELIC_GOLD': { name: 'Alter Dukat' }, - "AMULET_COIN": { name: "Münzamulett", description: "Erhöht das Preisgeld um 20%" }, - "GOLDEN_PUNCH": { name: "Goldschlag", description: "Gewährt Geld in Höhe von 50% des zugefügten Schadens" }, - "COIN_CASE": { name: "Münzkorb", description: "Erhalte nach jedem 10ten Kampf 10% Zinsen auf dein Geld" }, + 'AMULET_COIN': { name: 'Münzamulett', description: 'Erhöht das Preisgeld um 20%' }, + 'GOLDEN_PUNCH': { name: 'Goldschlag', description: 'Gewährt Geld in Höhe von 50% des zugefügten Schadens' }, + 'COIN_CASE': { name: 'Münzkorb', description: 'Erhalte nach jedem 10ten Kampf 10% Zinsen auf dein Geld' }, - "LOCK_CAPSULE": { name: "Tresorkapsel", description: "Erlaubt es die Seltenheitsstufe der Items festzusetzen wenn diese neu gerollt werden" }, + 'LOCK_CAPSULE': { name: 'Tresorkapsel', description: 'Erlaubt es die Seltenheitsstufe der Items festzusetzen wenn diese neu gerollt werden' }, - "GRIP_CLAW": { name: "Griffklaue" }, - "WIDE_LENS": { name: "Großlinse" }, + 'GRIP_CLAW': { name: 'Griffklaue' }, + 'WIDE_LENS': { name: 'Großlinse' }, - "MULTI_LENS": { name: "Mehrfachlinse" }, + 'MULTI_LENS': { name: 'Mehrfachlinse' }, - "HEALING_CHARM": { name: "Heilungspin", description: "Erhöht die Effektivität von Heilungsattacken sowie Heilitems um 10% (Beleber ausgenommen)" }, - "CANDY_JAR": { name: "Bonbonglas", description: "Erhöht die Anzahl der Level die ein Sonderbonbon erhöht um 1" }, + 'HEALING_CHARM': { name: 'Heilungspin', description: 'Erhöht die Effektivität von Heilungsattacken sowie Heilitems um 10% (Beleber ausgenommen)' }, + 'CANDY_JAR': { name: 'Bonbonglas', description: 'Erhöht die Anzahl der Level die ein Sonderbonbon erhöht um 1' }, - "BERRY_POUCH": { name: "Beerentüte", description: "Fügt eine 25% Chance hinzu, dass Beeren nicht verbraucht werden" }, + 'BERRY_POUCH': { name: 'Beerentüte', description: 'Fügt eine 25% Chance hinzu, dass Beeren nicht verbraucht werden' }, - "FOCUS_BAND": { name: "Fokusband", description: "Fügt eine 10% Chance hinzu, dass Angriffe die zur Kampfunfähigkeit führen mit 1 KP überlebt werden" }, + 'FOCUS_BAND': { name: 'Fokusband', description: 'Fügt eine 10% Chance hinzu, dass Angriffe die zur Kampfunfähigkeit führen mit 1 KP überlebt werden' }, - "QUICK_CLAW": { name: "Quick Claw", description: "Fügt eine 10% Change hinzu als erster anzugreifen. (Nach Prioritätsangriffen)" }, + 'QUICK_CLAW': { name: 'Quick Claw', description: 'Fügt eine 10% Change hinzu als erster anzugreifen. (Nach Prioritätsangriffen)' }, - "KINGS_ROCK": { name: "King-Stein", description: "Fügt eine 10% Chance hinzu, dass der Gegner nach einem Angriff zurückschreckt" }, + 'KINGS_ROCK': { name: 'King-Stein', description: 'Fügt eine 10% Chance hinzu, dass der Gegner nach einem Angriff zurückschreckt' }, - "LEFTOVERS": { name: "Überreste", description: "Heilt 1/16 der maximalen KP eines Pokémon pro Runde" }, - "SHELL_BELL": { name: "Muschelglocke", description: "Heilt den Anwender um 1/8 des von ihm zugefügten Schadens" }, + 'LEFTOVERS': { name: 'Überreste', description: 'Heilt 1/16 der maximalen KP eines Pokémon pro Runde' }, + 'SHELL_BELL': { name: 'Muschelglocke', description: 'Heilt den Anwender um 1/8 des von ihm zugefügten Schadens' }, - "BATON": { name: "Stab", description: "Ermöglicht das Weitergeben von Effekten beim Wechseln von Pokémon, wodurch auch Fallen umgangen werden." }, + 'BATON': { name: 'Stab', description: 'Ermöglicht das Weitergeben von Effekten beim Wechseln von Pokémon, wodurch auch Fallen umgangen werden.' }, - "SHINY_CHARM": { name: "Schillerpin", description: "Erhöht die Chance deutlich, dass ein wildes Pokémon ein schillernd ist" }, - "ABILITY_CHARM": { name: "Ability Charm", description: "Erhöht die Chance deutlich, dass ein wildes Pokémon eine versteckte Fähigkeit hat" }, + 'SHINY_CHARM': { name: 'Schillerpin', description: 'Erhöht die Chance deutlich, dass ein wildes Pokémon ein schillernd ist' }, + 'ABILITY_CHARM': { name: 'Ability Charm', description: 'Erhöht die Chance deutlich, dass ein wildes Pokémon eine versteckte Fähigkeit hat' }, - "IV_SCANNER": { name: "IS-Scanner", description: "Erlaubt es die IS-Werte von wilden Pokémon zu scannen.\n(2 IS-Werte pro Staplung. Die besten IS-Werte zuerst)" }, + 'IV_SCANNER': { name: 'IS-Scanner', description: 'Erlaubt es die IS-Werte von wilden Pokémon zu scannen.\n(2 IS-Werte pro Staplung. Die besten IS-Werte zuerst)' }, - "DNA_SPLICERS": { name: "DNS-Keil" }, + 'DNA_SPLICERS': { name: 'DNS-Keil' }, - "MINI_BLACK_HOLE": { name: "Mini schwarzes Loch" }, + 'MINI_BLACK_HOLE': { name: 'Mini schwarzes Loch' }, - "GOLDEN_POKEBALL": { name: "Goldener Pokéball", description: "Fügt eine zusätzliche Item-Auswahlmöglichkeit nach jedem Kampf hinzu" }, + 'GOLDEN_POKEBALL': { name: 'Goldener Pokéball', description: 'Fügt eine zusätzliche Item-Auswahlmöglichkeit nach jedem Kampf hinzu' }, - "ENEMY_DAMAGE_BOOSTER": { name: "Schadensmarke", description: "Erhöht den Schaden um 5%" }, - "ENEMY_DAMAGE_REDUCTION": { name: "Schutzmarke", description: "Verringert den erhaltenen Schaden um 2,5%" }, - "ENEMY_HEAL": { name: "Wiederherstellungsmarke", description: "Heilt 2% der maximalen KP pro Runde" }, - "ENEMY_ATTACK_POISON_CHANCE": { name: "Giftmarke" }, - "ENEMY_ATTACK_PARALYZE_CHANCE": { "name": "Lähmungsmarke" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { "name": "Schlafmarke" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { "name": "Gefriermarke" }, - "ENEMY_ATTACK_BURN_CHANCE": { "name": "Brandmarke" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { "name": "Vollheilungsmarke", "description": "Fügt eine 10%ige Chance hinzu, jede Runde einen Statuszustand zu heilen" }, - "ENEMY_ENDURE_CHANCE": { "name": "Ausdauer-Marke" }, - "ENEMY_FUSED_CHANCE": { "name": "Fusionsmarke", "description": "Fügt eine 1%ige Chance hinzu, dass ein wildes Pokémon eine Fusion ist" }, + 'ENEMY_DAMAGE_BOOSTER': { name: 'Schadensmarke', description: 'Erhöht den Schaden um 5%' }, + 'ENEMY_DAMAGE_REDUCTION': { name: 'Schutzmarke', description: 'Verringert den erhaltenen Schaden um 2,5%' }, + 'ENEMY_HEAL': { name: 'Wiederherstellungsmarke', description: 'Heilt 2% der maximalen KP pro Runde' }, + 'ENEMY_ATTACK_POISON_CHANCE': { name: 'Giftmarke' }, + 'ENEMY_ATTACK_PARALYZE_CHANCE': { 'name': 'Lähmungsmarke' }, + 'ENEMY_ATTACK_SLEEP_CHANCE': { 'name': 'Schlafmarke' }, + 'ENEMY_ATTACK_FREEZE_CHANCE': { 'name': 'Gefriermarke' }, + 'ENEMY_ATTACK_BURN_CHANCE': { 'name': 'Brandmarke' }, + 'ENEMY_STATUS_EFFECT_HEAL_CHANCE': { 'name': 'Vollheilungsmarke', 'description': 'Fügt eine 10%ige Chance hinzu, jede Runde einen Statuszustand zu heilen' }, + 'ENEMY_ENDURE_CHANCE': { 'name': 'Ausdauer-Marke' }, + 'ENEMY_FUSED_CHANCE': { 'name': 'Fusionsmarke', 'description': 'Fügt eine 1%ige Chance hinzu, dass ein wildes Pokémon eine Fusion ist' }, }, TempBattleStatBoosterItem: { - "x_attack": "X-Angriff", - "x_defense": "X-Verteidigung", - "x_sp_atk": "X-Sp.-Ang.", - "x_sp_def": "X-Sp.-Vert.", - "x_speed": "X-Tempo", - "x_accuracy": "X-Treffer", - "dire_hit": "X-Volltreffer", + 'x_attack': 'X-Angriff', + 'x_defense': 'X-Verteidigung', + 'x_sp_atk': 'X-Sp.-Ang.', + 'x_sp_def': 'X-Sp.-Vert.', + 'x_speed': 'X-Tempo', + 'x_accuracy': 'X-Treffer', + 'dire_hit': 'X-Volltreffer', }, AttackTypeBoosterItem: { - "silk_scarf": "Seidenschal", - "black_belt": "Schwarzgurt", - "sharp_beak": "Spitzer Schnabel", - "poison_barb": "Giftstich", - "soft_sand": "Pudersand", - "hard_stone": "Granitstein", - "silver_powder": "Silberstaub", - "spell_tag": "Bannsticker", - "metal_coat": "Metallmantel", - "charcoal": "Holzkohle", - "mystic_water": "Zauberwasser", - "miracle_seed": "Wundersaat", - "magnet": "Magnet", - "twisted_spoon": "Krümmlöffel", - "never_melt_ice": "Ewiges Eis", - "dragon_fang": "Drachenzahn", - "black_glasses": "Schattenbrille", - "fairy_feather": "Feendaune", + 'silk_scarf': 'Seidenschal', + 'black_belt': 'Schwarzgurt', + 'sharp_beak': 'Spitzer Schnabel', + 'poison_barb': 'Giftstich', + 'soft_sand': 'Pudersand', + 'hard_stone': 'Granitstein', + 'silver_powder': 'Silberstaub', + 'spell_tag': 'Bannsticker', + 'metal_coat': 'Metallmantel', + 'charcoal': 'Holzkohle', + 'mystic_water': 'Zauberwasser', + 'miracle_seed': 'Wundersaat', + 'magnet': 'Magnet', + 'twisted_spoon': 'Krümmlöffel', + 'never_melt_ice': 'Ewiges Eis', + 'dragon_fang': 'Drachenzahn', + 'black_glasses': 'Schattenbrille', + 'fairy_feather': 'Feendaune', }, BaseStatBoosterItem: { - "hp_up": "KP-Plus", - "protein": "Protein", - "iron": "Eisen", - "calcium": "Kalzium", - "zinc": "Zink", - "carbos": "Carbon", + 'hp_up': 'KP-Plus', + 'protein': 'Protein', + 'iron': 'Eisen', + 'calcium': 'Kalzium', + 'zinc': 'Zink', + 'carbos': 'Carbon', }, EvolutionItem: { - "NONE": "Keins", + 'NONE': 'Keins', - "LINKING_CORD": "Linkkabel", - "SUN_STONE": "Sonnenstein", - "MOON_STONE": "Mondstein", - "LEAF_STONE": "Blattstein", - "FIRE_STONE": "Feuerstein", - "WATER_STONE": "Wasserstein", - "THUNDER_STONE": "Donnerstein", - "ICE_STONE": "Eisstein", - "DUSK_STONE": "Finsterstein", - "DAWN_STONE": "Funkelstein", - "SHINY_STONE": "Leuchtstein", - "CRACKED_POT": "Rissige Kanne", - "SWEET_APPLE": "Süßer Apfel", - "TART_APPLE": "Saurer Apfel", - "STRAWBERRY_SWEET": "Zucker-Erdbeere", - "UNREMARKABLE_TEACUP": "Simple Teeschale", + 'LINKING_CORD': 'Linkkabel', + 'SUN_STONE': 'Sonnenstein', + 'MOON_STONE': 'Mondstein', + 'LEAF_STONE': 'Blattstein', + 'FIRE_STONE': 'Feuerstein', + 'WATER_STONE': 'Wasserstein', + 'THUNDER_STONE': 'Donnerstein', + 'ICE_STONE': 'Eisstein', + 'DUSK_STONE': 'Finsterstein', + 'DAWN_STONE': 'Funkelstein', + 'SHINY_STONE': 'Leuchtstein', + 'CRACKED_POT': 'Rissige Kanne', + 'SWEET_APPLE': 'Süßer Apfel', + 'TART_APPLE': 'Saurer Apfel', + 'STRAWBERRY_SWEET': 'Zucker-Erdbeere', + 'UNREMARKABLE_TEACUP': 'Simple Teeschale', - "CHIPPED_POT": "Löchrige Kanne", - "BLACK_AUGURITE": "Schwarzaugit", - "GALARICA_CUFF": "Galarnuss-Reif", - "GALARICA_WREATH": "Galarnuss-Kranz", - "PEAT_BLOCK": "Torfblock", - "AUSPICIOUS_ARMOR": "Glorienrüstung", - "MALICIOUS_ARMOR": "Fluchrüstung", - "MASTERPIECE_TEACUP": "Edle Teeschale", - "METAL_ALLOY": "Legierungsmetall", - "SCROLL_OF_DARKNESS": "Unlicht-Schriftrolle", - "SCROLL_OF_WATERS": "Wasser-Schriftrolle", - "SYRUPY_APPLE": "Saftiger Apfel", + 'CHIPPED_POT': 'Löchrige Kanne', + 'BLACK_AUGURITE': 'Schwarzaugit', + 'GALARICA_CUFF': 'Galarnuss-Reif', + 'GALARICA_WREATH': 'Galarnuss-Kranz', + 'PEAT_BLOCK': 'Torfblock', + 'AUSPICIOUS_ARMOR': 'Glorienrüstung', + 'MALICIOUS_ARMOR': 'Fluchrüstung', + 'MASTERPIECE_TEACUP': 'Edle Teeschale', + 'METAL_ALLOY': 'Legierungsmetall', + 'SCROLL_OF_DARKNESS': 'Unlicht-Schriftrolle', + 'SCROLL_OF_WATERS': 'Wasser-Schriftrolle', + 'SYRUPY_APPLE': 'Saftiger Apfel', }, FormChangeItem: { - "NONE": "Keins", + 'NONE': 'Keins', - "ABOMASITE": "Rexblisarnit", - "ABSOLITE": "Absolnit", - "AERODACTYLITE": "Aerodactylonit", - "AGGRONITE": "Stollossnit", - "ALAKAZITE": "Simsalanit", - "ALTARIANITE": "Altarianit", - "AMPHAROSITE": "Ampharosnit", - "AUDINITE": "Ohrdochnit", - "BANETTITE": "Banetteonit", - "BEEDRILLITE": "Bibornit", - "BLASTOISINITE": "Turtoknit", - "BLAZIKENITE": "Lohgocknit", - "CAMERUPTITE": "Cameruptnit", - "CHARIZARDITE_X": "Gluraknit X", - "CHARIZARDITE_Y": "Gluraknit Y", - "DIANCITE": "Diancienit", - "GALLADITE": "Galagladinit", - "GARCHOMPITE": "Knakracknit", - "GARDEVOIRITE": "Guardevoirnit", - "GENGARITE": "Gengarnit ", - "GLALITITE": "Firnontornit", - "GYARADOSITE": "Garadosnit", - "HERACRONITE": "Skarabornit", - "HOUNDOOMINITE": "Hundemonit ", - "KANGASKHANITE": "Kangamanit", - "LATIASITE": "Latiasnit", - "LATIOSITE": "Latiosnit", - "LOPUNNITE": "Schlapornit", - "LUCARIONITE": "Lucarionit", - "MANECTITE": "Voltensonit", - "MAWILITE": "Flunkifernit", - "MEDICHAMITE": "Meditalisnit", - "METAGROSSITE": "Metagrossnit", - "MEWTWONITE_X": "Mewtunit X", - "MEWTWONITE_Y": "Mewtunit Y", - "PIDGEOTITE": "Taubossnit", - "PINSIRITE": "Pinsirnit", - "RAYQUAZITE": "Rayquazanit", - "SABLENITE": "Zobirisnit", - "SALAMENCITE": "Brutalandanit", - "SCEPTILITE": "Gewaldronit", - "SCIZORITE": "Scheroxnit", - "SHARPEDONITE": "Tohaidonit", - "SLOWBRONITE": "Lahmusnit", - "STEELIXITE": "Stahlosnit", - "SWAMPERTITE": "Sumpexnit", - "TYRANITARITE": "Despotarnit", - "VENUSAURITE": "Bisaflornit", + 'ABOMASITE': 'Rexblisarnit', + 'ABSOLITE': 'Absolnit', + 'AERODACTYLITE': 'Aerodactylonit', + 'AGGRONITE': 'Stollossnit', + 'ALAKAZITE': 'Simsalanit', + 'ALTARIANITE': 'Altarianit', + 'AMPHAROSITE': 'Ampharosnit', + 'AUDINITE': 'Ohrdochnit', + 'BANETTITE': 'Banetteonit', + 'BEEDRILLITE': 'Bibornit', + 'BLASTOISINITE': 'Turtoknit', + 'BLAZIKENITE': 'Lohgocknit', + 'CAMERUPTITE': 'Cameruptnit', + 'CHARIZARDITE_X': 'Gluraknit X', + 'CHARIZARDITE_Y': 'Gluraknit Y', + 'DIANCITE': 'Diancienit', + 'GALLADITE': 'Galagladinit', + 'GARCHOMPITE': 'Knakracknit', + 'GARDEVOIRITE': 'Guardevoirnit', + 'GENGARITE': 'Gengarnit ', + 'GLALITITE': 'Firnontornit', + 'GYARADOSITE': 'Garadosnit', + 'HERACRONITE': 'Skarabornit', + 'HOUNDOOMINITE': 'Hundemonit ', + 'KANGASKHANITE': 'Kangamanit', + 'LATIASITE': 'Latiasnit', + 'LATIOSITE': 'Latiosnit', + 'LOPUNNITE': 'Schlapornit', + 'LUCARIONITE': 'Lucarionit', + 'MANECTITE': 'Voltensonit', + 'MAWILITE': 'Flunkifernit', + 'MEDICHAMITE': 'Meditalisnit', + 'METAGROSSITE': 'Metagrossnit', + 'MEWTWONITE_X': 'Mewtunit X', + 'MEWTWONITE_Y': 'Mewtunit Y', + 'PIDGEOTITE': 'Taubossnit', + 'PINSIRITE': 'Pinsirnit', + 'RAYQUAZITE': 'Rayquazanit', + 'SABLENITE': 'Zobirisnit', + 'SALAMENCITE': 'Brutalandanit', + 'SCEPTILITE': 'Gewaldronit', + 'SCIZORITE': 'Scheroxnit', + 'SHARPEDONITE': 'Tohaidonit', + 'SLOWBRONITE': 'Lahmusnit', + 'STEELIXITE': 'Stahlosnit', + 'SWAMPERTITE': 'Sumpexnit', + 'TYRANITARITE': 'Despotarnit', + 'VENUSAURITE': 'Bisaflornit', - "BLUE_ORB": "Blauer Edelstein", - "RED_ORB": "Roter Edelstein", - "SHARP_METEORITE": "Scharfer Meteorit", - "HARD_METEORITE": "Harter Meteorit", - "SMOOTH_METEORITE": "Glatter Meteorit", - "ADAMANT_CRYSTAL": "Adamantkristall", - "LUSTROUS_ORB": "Weiß-Orb", - "GRISEOUS_CORE": "Platinumkristall", - "REVEAL_GLASS": "Wahrspiegel", - "GRACIDEA": "Gracidea", - "MAX_MUSHROOMS": "Dyna-Pilz", - "DARK_STONE": "Dunkelstein", - "LIGHT_STONE": "Lichtstein", - "PRISON_BOTTLE": "Banngefäß", - "N_LUNARIZER": "Necrolun", - "N_SOLARIZER": "Necrosol", - "RUSTED_SWORD": "Rostiges Schwert", - "RUSTED_SHIELD": "Rostiges Schild", - "ICY_REINS_OF_UNITY": "eisige Zügel des Bundes", - "SHADOW_REINS_OF_UNITY": "schattige Zügel des Bundes", - "WELLSPRING_MASK": "Brunnenmaske", - "HEARTHFLAME_MASK": "Ofenmaske", - "CORNERSTONE_MASK": "Fundamentmaske", - "SHOCK_DRIVE": "Blitzmodul", - "BURN_DRIVE": "Flammenmodul", - "CHILL_DRIVE": "Gefriermodul", - "DOUSE_DRIVE": "Aquamodul", + 'BLUE_ORB': 'Blauer Edelstein', + 'RED_ORB': 'Roter Edelstein', + 'SHARP_METEORITE': 'Scharfer Meteorit', + 'HARD_METEORITE': 'Harter Meteorit', + 'SMOOTH_METEORITE': 'Glatter Meteorit', + 'ADAMANT_CRYSTAL': 'Adamantkristall', + 'LUSTROUS_ORB': 'Weiß-Orb', + 'GRISEOUS_CORE': 'Platinumkristall', + 'REVEAL_GLASS': 'Wahrspiegel', + 'GRACIDEA': 'Gracidea', + 'MAX_MUSHROOMS': 'Dyna-Pilz', + 'DARK_STONE': 'Dunkelstein', + 'LIGHT_STONE': 'Lichtstein', + 'PRISON_BOTTLE': 'Banngefäß', + 'N_LUNARIZER': 'Necrolun', + 'N_SOLARIZER': 'Necrosol', + 'RUSTED_SWORD': 'Rostiges Schwert', + 'RUSTED_SHIELD': 'Rostiges Schild', + 'ICY_REINS_OF_UNITY': 'eisige Zügel des Bundes', + 'SHADOW_REINS_OF_UNITY': 'schattige Zügel des Bundes', + 'WELLSPRING_MASK': 'Brunnenmaske', + 'HEARTHFLAME_MASK': 'Ofenmaske', + 'CORNERSTONE_MASK': 'Fundamentmaske', + 'SHOCK_DRIVE': 'Blitzmodul', + 'BURN_DRIVE': 'Flammenmodul', + 'CHILL_DRIVE': 'Gefriermodul', + 'DOUSE_DRIVE': 'Aquamodul', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/de/move.ts b/src/locales/de/move.ts index a7750942e93..fcf9e3538ab 100644 --- a/src/locales/de/move.ts +++ b/src/locales/de/move.ts @@ -1,3812 +1,3812 @@ -import { MoveTranslationEntries } from "#app/plugins/i18n"; +import { MoveTranslationEntries } from '#app/plugins/i18n'; export const move: MoveTranslationEntries = { - "pound": { - name: "Klaps", - effect: "Ein Hieb mit den Vorderbeinen oder dem Schweif." + 'pound': { + name: 'Klaps', + effect: 'Ein Hieb mit den Vorderbeinen oder dem Schweif.' }, - "karateChop": { - name: "Karateschlag", - effect: "Gute Möglichkeit, einen Volltreffer zu landen." + 'karateChop': { + name: 'Karateschlag', + effect: 'Gute Möglichkeit, einen Volltreffer zu landen.' }, - "doubleSlap": { - name: "Duplexhieb", - effect: "Trifft das Ziel zwei- bis fünfmal hintereinander mit einem Duplexhieb." + 'doubleSlap': { + name: 'Duplexhieb', + effect: 'Trifft das Ziel zwei- bis fünfmal hintereinander mit einem Duplexhieb.' }, - "cometPunch": { - name: "Kometenhieb", - effect: "Trifft das Ziel zwei- bis fünfmal hintereinander mit kräftigen Hieben." + 'cometPunch': { + name: 'Kometenhieb', + effect: 'Trifft das Ziel zwei- bis fünfmal hintereinander mit kräftigen Hieben.' }, - "megaPunch": { - name: "Megahieb", - effect: "Ein unglaublich kräftiger Hieb." + 'megaPunch': { + name: 'Megahieb', + effect: 'Ein unglaublich kräftiger Hieb.' }, - "payDay": { - name: "Zahltag", - effect: "Das Ziel wird mit Münzen beworfen. Das Geld wird nach dem Kampf aufgesammelt." + 'payDay': { + name: 'Zahltag', + effect: 'Das Ziel wird mit Münzen beworfen. Das Geld wird nach dem Kampf aufgesammelt.' }, - "firePunch": { - name: "Feuerschlag", - effect: "Feuriger Schlag, der dem Ziel eventuell Verbrennungen zufügt." + 'firePunch': { + name: 'Feuerschlag', + effect: 'Feuriger Schlag, der dem Ziel eventuell Verbrennungen zufügt.' }, - "icePunch": { - name: "Eishieb", - effect: "Ein eisiger Schlag, der das Ziel eventuell einfriert." + 'icePunch': { + name: 'Eishieb', + effect: 'Ein eisiger Schlag, der das Ziel eventuell einfriert.' }, - "thunderPunch": { - name: "Donnerschlag", - effect: "Ein elektrischer Schlag, der das Ziel eventuell paralysiert." + 'thunderPunch': { + name: 'Donnerschlag', + effect: 'Ein elektrischer Schlag, der das Ziel eventuell paralysiert.' }, - "scratch": { - name: "Kratzer", - effect: "Das Ziel wird mit scharfen Klauen zerkratzt." + 'scratch': { + name: 'Kratzer', + effect: 'Das Ziel wird mit scharfen Klauen zerkratzt.' }, - "viseGrip": { - name: "Klammer", - effect: "Das Ziel wird umklammert und zusammengequetscht." + 'viseGrip': { + name: 'Klammer', + effect: 'Das Ziel wird umklammert und zusammengequetscht.' }, - "guillotine": { - name: "Guillotine", - effect: "Kräftige Scheren-Attacke. Führt beim Ziel sofort zum K.O." + 'guillotine': { + name: 'Guillotine', + effect: 'Kräftige Scheren-Attacke. Führt beim Ziel sofort zum K.O.' }, - "razorWind": { - name: "Klingensturm", - effect: "Eine Attacke, die über zwei Runden geht. Hohe Volltrefferquote." + 'razorWind': { + name: 'Klingensturm', + effect: 'Eine Attacke, die über zwei Runden geht. Hohe Volltrefferquote.' }, - "swordsDance": { - name: "Schwerttanz", - effect: "Ein wilder Kampftanz, der den eigenen Angriffs-Wert stark erhöht." + 'swordsDance': { + name: 'Schwerttanz', + effect: 'Ein wilder Kampftanz, der den eigenen Angriffs-Wert stark erhöht.' }, - "cut": { - name: "Zerschneider", - effect: "Ein Basisangriff mit Schere oder Klaue. Damit können kleine Bäume gefällt werden." + 'cut': { + name: 'Zerschneider', + effect: 'Ein Basisangriff mit Schere oder Klaue. Damit können kleine Bäume gefällt werden.' }, - "gust": { - name: "Windstoß", - effect: "Trifft das Ziel mit einem Windstoß durch einen Flügelschlag." + 'gust': { + name: 'Windstoß', + effect: 'Trifft das Ziel mit einem Windstoß durch einen Flügelschlag.' }, - "wingAttack": { - name: "Flügelschlag", - effect: "Trifft das Ziel mit ausgebreiteten Flügeln." + 'wingAttack': { + name: 'Flügelschlag', + effect: 'Trifft das Ziel mit ausgebreiteten Flügeln.' }, - "whirlwind": { - name: "Wirbelwind", - effect: "Weht das Ziel weg und ersetzt es durch ein anderes Pokémon. In der Wildnis endet der Kampf." + 'whirlwind': { + name: 'Wirbelwind', + effect: 'Weht das Ziel weg und ersetzt es durch ein anderes Pokémon. In der Wildnis endet der Kampf.' }, - "fly": { - name: "Fliegen", - effect: "Steigt in Runde 1 empor und trifft das Ziel in Runde 2." + 'fly': { + name: 'Fliegen', + effect: 'Steigt in Runde 1 empor und trifft das Ziel in Runde 2.' }, - "bind": { - name: "Klammergriff", - effect: "Umklammert und quetscht das Ziel über vier bis fünf Runden." + 'bind': { + name: 'Klammergriff', + effect: 'Umklammert und quetscht das Ziel über vier bis fünf Runden.' }, - "slam": { - name: "Slam", - effect: "Schlag mit einem langen Schweif, einer Ranke oder Ähnlichem." + 'slam': { + name: 'Slam', + effect: 'Schlag mit einem langen Schweif, einer Ranke oder Ähnlichem.' }, - "vineWhip": { - name: "Rankenhieb", - effect: "Peitschenähnlicher Schlag mit Ranken." + 'vineWhip': { + name: 'Rankenhieb', + effect: 'Peitschenähnlicher Schlag mit Ranken.' }, - "stomp": { - name: "Stampfer", - effect: "Stampfen mit dem Fuß. Das Ziel schreckt eventuell zurück." + 'stomp': { + name: 'Stampfer', + effect: 'Stampfen mit dem Fuß. Das Ziel schreckt eventuell zurück.' }, - "doubleKick": { - name: "Doppelkick", - effect: "Der Anwender tritt in einer Runde zweimal schnell zu." + 'doubleKick': { + name: 'Doppelkick', + effect: 'Der Anwender tritt in einer Runde zweimal schnell zu.' }, - "megaKick": { - name: "Megakick", - effect: "Das Ziel wird mit einem extrem heftigen Tritt angegriffen." + 'megaKick': { + name: 'Megakick', + effect: 'Das Ziel wird mit einem extrem heftigen Tritt angegriffen.' }, - "jumpKick": { - name: "Sprungkick", - effect: "Der Angreifer hüpft hoch und tritt zu. Bei Misserfolg schadet er sich selbst." + 'jumpKick': { + name: 'Sprungkick', + effect: 'Der Angreifer hüpft hoch und tritt zu. Bei Misserfolg schadet er sich selbst.' }, - "rollingKick": { - name: "Fegekick", - effect: "Heftiger Tritt aus einer schnellen Drehbewegung. Lässt das Ziel eventuell zurückschrecken." + 'rollingKick': { + name: 'Fegekick', + effect: 'Heftiger Tritt aus einer schnellen Drehbewegung. Lässt das Ziel eventuell zurückschrecken.' }, - "sandAttack": { - name: "Sandwirbel", - effect: "Senkt Genauigkeit des Zieles, indem ihm Sand ins Gesicht geworfen wird." + 'sandAttack': { + name: 'Sandwirbel', + effect: 'Senkt Genauigkeit des Zieles, indem ihm Sand ins Gesicht geworfen wird.' }, - "headbutt": { - name: "Kopfnuss", - effect: "Rammt das Ziel mit einer Kopfnuss. Ziel schreckt eventuell zurück." + 'headbutt': { + name: 'Kopfnuss', + effect: 'Rammt das Ziel mit einer Kopfnuss. Ziel schreckt eventuell zurück.' }, - "hornAttack": { - name: "Hornattacke", - effect: "Spießt das Ziel mit einem spitzen Horn auf." + 'hornAttack': { + name: 'Hornattacke', + effect: 'Spießt das Ziel mit einem spitzen Horn auf.' }, - "furyAttack": { - name: "Furienschlag", - effect: "Spießt das Ziel zwei- bis fünfmal mit spitzem Horn oder Schnabel auf." + 'furyAttack': { + name: 'Furienschlag', + effect: 'Spießt das Ziel zwei- bis fünfmal mit spitzem Horn oder Schnabel auf.' }, - "hornDrill": { - name: "Hornbohrer", - effect: "K.O.-Attacke, bei der ein Horn als Bohrer eingesetzt wird." + 'hornDrill': { + name: 'Hornbohrer', + effect: 'K.O.-Attacke, bei der ein Horn als Bohrer eingesetzt wird.' }, - "tackle": { - name: "Tackle", - effect: "Trifft das Ziel mit vollem Körpereinsatz." + 'tackle': { + name: 'Tackle', + effect: 'Trifft das Ziel mit vollem Körpereinsatz.' }, - "bodySlam": { - name: "Bodyslam", - effect: "Trifft das Ziel mit vollem Körpereinsatz. Bewirkt eventuell Paralyse." + 'bodySlam': { + name: 'Bodyslam', + effect: 'Trifft das Ziel mit vollem Körpereinsatz. Bewirkt eventuell Paralyse.' }, - "wrap": { - name: "Wickel", - effect: "Umwickelt das Ziel über vier bis fünf Runden mit Ranken oder Ähnlichem und fügt ihm Schaden zu." + 'wrap': { + name: 'Wickel', + effect: 'Umwickelt das Ziel über vier bis fünf Runden mit Ranken oder Ähnlichem und fügt ihm Schaden zu.' }, - "takeDown": { - name: "Bodycheck", - effect: "Rücksichtslose Attacke, bei der sich der Angreifer selbst leicht verletzt." + 'takeDown': { + name: 'Bodycheck', + effect: 'Rücksichtslose Attacke, bei der sich der Angreifer selbst leicht verletzt.' }, - "thrash": { - name: "Fuchtler", - effect: "Attacke über zwei bis drei Runden, die den Angreifer verwirrt." + 'thrash': { + name: 'Fuchtler', + effect: 'Attacke über zwei bis drei Runden, die den Angreifer verwirrt.' }, - "doubleEdge": { - name: "Risikotackle", - effect: "Lebensgefährlicher Angriff, bei dem sich der Angreifer selbst verletzt." + 'doubleEdge': { + name: 'Risikotackle', + effect: 'Lebensgefährlicher Angriff, bei dem sich der Angreifer selbst verletzt.' }, - "tailWhip": { - name: "Rutenschlag", - effect: "Hieb mit dem Schweif. Senkt die Verteidigung des Zieles." + 'tailWhip': { + name: 'Rutenschlag', + effect: 'Hieb mit dem Schweif. Senkt die Verteidigung des Zieles.' }, - "poisonSting": { - name: "Giftstachel", - effect: "Angriff mit Giftstachel. Das Ziel wird eventuell vergiftet." + 'poisonSting': { + name: 'Giftstachel', + effect: 'Angriff mit Giftstachel. Das Ziel wird eventuell vergiftet.' }, - "twineedle": { - name: "Duonadel", - effect: "Stacheln treffen das Ziel zweimal. Das Ziel wird eventuell vergiftet." + 'twineedle': { + name: 'Duonadel', + effect: 'Stacheln treffen das Ziel zweimal. Das Ziel wird eventuell vergiftet.' }, - "pinMissile": { - name: "Nadelrakete", - effect: "Spitze Nadeln treffen das Ziel zwei- bis fünfmal hintereinander." + 'pinMissile': { + name: 'Nadelrakete', + effect: 'Spitze Nadeln treffen das Ziel zwei- bis fünfmal hintereinander.' }, - "leer": { - name: "Silberblick", - effect: "Gegnerischer Verteidigungs-Wert wird durch angsteinflößenden Blick gesenkt." + 'leer': { + name: 'Silberblick', + effect: 'Gegnerischer Verteidigungs-Wert wird durch angsteinflößenden Blick gesenkt.' }, - "bite": { - name: "Biss", - effect: "Beißt zu und lässt das Ziel eventuell zurückschrecken." + 'bite': { + name: 'Biss', + effect: 'Beißt zu und lässt das Ziel eventuell zurückschrecken.' }, - "growl": { - name: "Heuler", - effect: "Der Anwender nimmt das Ziel für sich ein und senkt dessen Angriffs-Wert." + 'growl': { + name: 'Heuler', + effect: 'Der Anwender nimmt das Ziel für sich ein und senkt dessen Angriffs-Wert.' }, - "roar": { - name: "Brüller", - effect: "Verjagt das Ziel und ersetzt es durch ein anderes Pokémon. Beendet den Kampf in der Wildnis." + 'roar': { + name: 'Brüller', + effect: 'Verjagt das Ziel und ersetzt es durch ein anderes Pokémon. Beendet den Kampf in der Wildnis.' }, - "sing": { - name: "Gesang", - effect: "Ein Lied, das das Ziel in tiefen Schlaf versetzt." + 'sing': { + name: 'Gesang', + effect: 'Ein Lied, das das Ziel in tiefen Schlaf versetzt.' }, - "supersonic": { - name: "Superschall", - effect: "Ausstoß bizarrer Schallwellen. Das Ziel wird verwirrt." + 'supersonic': { + name: 'Superschall', + effect: 'Ausstoß bizarrer Schallwellen. Das Ziel wird verwirrt.' }, - "sonicBoom": { - name: "Ultraschall", - effect: "Das Ziel wird von einer Schockwelle getroffen, die stets 20 KP Schaden anrichtet." + 'sonicBoom': { + name: 'Ultraschall', + effect: 'Das Ziel wird von einer Schockwelle getroffen, die stets 20 KP Schaden anrichtet.' }, - "disable": { - name: "Aussetzer", - effect: "Die zuletzt eingesetzte Attacke des Zieles wird für mehrere Runden blockiert." + 'disable': { + name: 'Aussetzer', + effect: 'Die zuletzt eingesetzte Attacke des Zieles wird für mehrere Runden blockiert.' }, - "acid": { - name: "Säure", - effect: "Versprüht ätzende Flüssigkeit, die eventuell die Spezial-Verteidigung der Gegner in der Nähe des Anwenders senkt." + 'acid': { + name: 'Säure', + effect: 'Versprüht ätzende Flüssigkeit, die eventuell die Spezial-Verteidigung der Gegner in der Nähe des Anwenders senkt.' }, - "ember": { - name: "Glut", - effect: "Schwache Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet." + 'ember': { + name: 'Glut', + effect: 'Schwache Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet.' }, - "flamethrower": { - name: "Flammenwurf", - effect: "Starke Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet." + 'flamethrower': { + name: 'Flammenwurf', + effect: 'Starke Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet.' }, - "mist": { - name: "Weißnebel", - effect: "Anwender schützt das Team mit einem Nebel. Verhindert Statussenkungen für fünf Runden." + 'mist': { + name: 'Weißnebel', + effect: 'Anwender schützt das Team mit einem Nebel. Verhindert Statussenkungen für fünf Runden.' }, - "waterGun": { - name: "Aquaknarre", - effect: "Das Ziel wird mit Wasser bespritzt." + 'waterGun': { + name: 'Aquaknarre', + effect: 'Das Ziel wird mit Wasser bespritzt.' }, - "hydroPump": { - name: "Hydropumpe", - effect: "Spritzt eine Menge Wasser mit Hochdruck auf das Ziel." + 'hydroPump': { + name: 'Hydropumpe', + effect: 'Spritzt eine Menge Wasser mit Hochdruck auf das Ziel.' }, - "surf": { - name: "Surfer", - effect: "Eine Welle bricht über alle Pokémon in der Nähe des Anwenders herein." + 'surf': { + name: 'Surfer', + effect: 'Eine Welle bricht über alle Pokémon in der Nähe des Anwenders herein.' }, - "iceBeam": { - name: "Eisstrahl", - effect: "Das Ziel wird von einem Eisstrahl getroffen und friert eventuell ein." + 'iceBeam': { + name: 'Eisstrahl', + effect: 'Das Ziel wird von einem Eisstrahl getroffen und friert eventuell ein.' }, - "blizzard": { - name: "Blizzard", - effect: "Ein Schneesturm wütet, der das Ziel einfrieren kann." + 'blizzard': { + name: 'Blizzard', + effect: 'Ein Schneesturm wütet, der das Ziel einfrieren kann.' }, - "psybeam": { - name: "Psystrahl", - effect: "Feuert einen Strahl ab, der das Ziel verwirren kann." + 'psybeam': { + name: 'Psystrahl', + effect: 'Feuert einen Strahl ab, der das Ziel verwirren kann.' }, - "bubbleBeam": { - name: "Blubbstrahl", - effect: "Versprüht Blasen, die eventuell den Initiative-Wert des Zieles senken." + 'bubbleBeam': { + name: 'Blubbstrahl', + effect: 'Versprüht Blasen, die eventuell den Initiative-Wert des Zieles senken.' }, - "auroraBeam": { - name: "Aurorastrahl", - effect: "Regenbogenfarbener Strahl, der eventuell den Angriffs-Wert des Zieles senkt." + 'auroraBeam': { + name: 'Aurorastrahl', + effect: 'Regenbogenfarbener Strahl, der eventuell den Angriffs-Wert des Zieles senkt.' }, - "hyperBeam": { - name: "Hyperstrahl", - effect: "Starke Attacke, die den Anwender zwingt, eine Runde auszusetzen." + 'hyperBeam': { + name: 'Hyperstrahl', + effect: 'Starke Attacke, die den Anwender zwingt, eine Runde auszusetzen.' }, - "peck": { - name: "Pikser", - effect: "Greift das Ziel mit dem Schnabel oder Horn an." + 'peck': { + name: 'Pikser', + effect: 'Greift das Ziel mit dem Schnabel oder Horn an.' }, - "drillPeck": { - name: "Bohrschnabel", - effect: "Korkenzieherangriff, bei dem der Schnabel als Bohrer dient." + 'drillPeck': { + name: 'Bohrschnabel', + effect: 'Korkenzieherangriff, bei dem der Schnabel als Bohrer dient.' }, - "submission": { - name: "Überroller", - effect: "Harte Körperattacke, bei der sich der Angreifer selbst leicht verletzt." + 'submission': { + name: 'Überroller', + effect: 'Harte Körperattacke, bei der sich der Angreifer selbst leicht verletzt.' }, - "lowKick": { - name: "Fußkick", - effect: "Ein Tritt, der das Ziel umwirft. Je schwerer das Ziel ist, desto mehr Schaden fügt ihm die Attacke zu." + 'lowKick': { + name: 'Fußkick', + effect: 'Ein Tritt, der das Ziel umwirft. Je schwerer das Ziel ist, desto mehr Schaden fügt ihm die Attacke zu.' }, - "counter": { - name: "Konter", - effect: "Kontert physische Treffer und fügt dem Ziel das Doppelte des Schadens zu, den der Anwender erlitten hat." + 'counter': { + name: 'Konter', + effect: 'Kontert physische Treffer und fügt dem Ziel das Doppelte des Schadens zu, den der Anwender erlitten hat.' }, - "seismicToss": { - name: "Geowurf", - effect: "Ziel wird mit der Kraft der Gravitation umgeworfen. Richtet Schaden gemäß Level des Angreifers an." + 'seismicToss': { + name: 'Geowurf', + effect: 'Ziel wird mit der Kraft der Gravitation umgeworfen. Richtet Schaden gemäß Level des Angreifers an.' }, - "strength": { - name: "Stärke", - effect: "Das Ziel wird extrem stark getroffen. Macht Verschieben von Felsen möglich." + 'strength': { + name: 'Stärke', + effect: 'Das Ziel wird extrem stark getroffen. Macht Verschieben von Felsen möglich.' }, - "absorb": { - name: "Absorber", - effect: "Attacke, die die Hälfte des Schadens absorbiert." + 'absorb': { + name: 'Absorber', + effect: 'Attacke, die die Hälfte des Schadens absorbiert.' }, - "megaDrain": { - name: "Megasauger", - effect: "Attacke, die die Hälfte des Schadens absorbiert." + 'megaDrain': { + name: 'Megasauger', + effect: 'Attacke, die die Hälfte des Schadens absorbiert.' }, - "leechSeed": { - name: "Egelsamen", - effect: "Ziel wird bepflanzt und verliert jede Runde KP, die ein Pokémon aus dem Team des Anwenders heilen." + 'leechSeed': { + name: 'Egelsamen', + effect: 'Ziel wird bepflanzt und verliert jede Runde KP, die ein Pokémon aus dem Team des Anwenders heilen.' }, - "growth": { - name: "Wachstum", - effect: "Der Körper wächst. Dadurch steigen Angriff und Spezial-Angriff." + 'growth': { + name: 'Wachstum', + effect: 'Der Körper wächst. Dadurch steigen Angriff und Spezial-Angriff.' }, - "razorLeaf": { - name: "Rasierblatt", - effect: "Trifft das Ziel mit Blättern. Hohe Volltrefferquote." + 'razorLeaf': { + name: 'Rasierblatt', + effect: 'Trifft das Ziel mit Blättern. Hohe Volltrefferquote.' }, - "solarBeam": { - name: "Solarstrahl", - effect: "Absorbiert Licht in Runde 1. In Runde 2 erfolgt der Angriff." + 'solarBeam': { + name: 'Solarstrahl', + effect: 'Absorbiert Licht in Runde 1. In Runde 2 erfolgt der Angriff.' }, - "poisonPowder": { - name: "Giftpuder", - effect: "Verstreut giftigen Puder auf das Ziel." + 'poisonPowder': { + name: 'Giftpuder', + effect: 'Verstreut giftigen Puder auf das Ziel.' }, - "stunSpore": { - name: "Stachelspore", - effect: "Verstreut lähmenden Puder." + 'stunSpore': { + name: 'Stachelspore', + effect: 'Verstreut lähmenden Puder.' }, - "sleepPowder": { - name: "Schlafpuder", - effect: "Verstreut Schlafpuder, der das Ziel eventuell in Schlaf versetzt." + 'sleepPowder': { + name: 'Schlafpuder', + effect: 'Verstreut Schlafpuder, der das Ziel eventuell in Schlaf versetzt.' }, - "petalDance": { - name: "Blättertanz", - effect: "Angriff mit Blütenblättern für zwei bis drei Runden. Angreifer wird verwirrt." + 'petalDance': { + name: 'Blättertanz', + effect: 'Angriff mit Blütenblättern für zwei bis drei Runden. Angreifer wird verwirrt.' }, - "stringShot": { - name: "Fadenschuss", - effect: "Umwickelt Ziele in der Nähe mit Fäden aus dem Mund und senkt den Initiative-Wert." + 'stringShot': { + name: 'Fadenschuss', + effect: 'Umwickelt Ziele in der Nähe mit Fäden aus dem Mund und senkt den Initiative-Wert.' }, - "dragonRage": { - name: "Drachenwut", - effect: "Stößt eine wutgeladene Schockwelle aus, die stets 40 KP Schaden anrichtet." + 'dragonRage': { + name: 'Drachenwut', + effect: 'Stößt eine wutgeladene Schockwelle aus, die stets 40 KP Schaden anrichtet.' }, - "fireSpin": { - name: "Feuerwirbel", - effect: "Das Ziel wird für vier bis fünf Runden in einem Feuerkreis gefangen." + 'fireSpin': { + name: 'Feuerwirbel', + effect: 'Das Ziel wird für vier bis fünf Runden in einem Feuerkreis gefangen.' }, - "thunderShock": { - name: "Donnerschock", - effect: "Eine Elektro-Attacke, die das Ziel eventuell paralysiert." + 'thunderShock': { + name: 'Donnerschock', + effect: 'Eine Elektro-Attacke, die das Ziel eventuell paralysiert.' }, - "thunderbolt": { - name: "Donnerblitz", - effect: "Eine starke Elektro-Attacke, die das Ziel eventuell paralysiert." + 'thunderbolt': { + name: 'Donnerblitz', + effect: 'Eine starke Elektro-Attacke, die das Ziel eventuell paralysiert.' }, - "thunderWave": { - name: "Donnerwelle", - effect: "Ein schwacher Stromstoß, der das Ziel paralysiert." + 'thunderWave': { + name: 'Donnerwelle', + effect: 'Ein schwacher Stromstoß, der das Ziel paralysiert.' }, - "thunder": { - name: "Donner", - effect: "Eine verheerende Elektro-Attacke, die das Ziel eventuell paralysiert." + 'thunder': { + name: 'Donner', + effect: 'Eine verheerende Elektro-Attacke, die das Ziel eventuell paralysiert.' }, - "rockThrow": { - name: "Steinwurf", - effect: "Das Ziel wird mit einem kleinen Stein beworfen." + 'rockThrow': { + name: 'Steinwurf', + effect: 'Das Ziel wird mit einem kleinen Stein beworfen.' }, - "earthquake": { - name: "Erdbeben", - effect: "Ein mächtiges Beben, das die anderen Pokémon in der Nähe des Anwenders trifft." + 'earthquake': { + name: 'Erdbeben', + effect: 'Ein mächtiges Beben, das die anderen Pokémon in der Nähe des Anwenders trifft.' }, - "fissure": { - name: "Geofissur", - effect: "Das Ziel wird in eine Erdspalte geworfen. Ist die Attacke erfolgreich, führt sie zu einem K.O." + 'fissure': { + name: 'Geofissur', + effect: 'Das Ziel wird in eine Erdspalte geworfen. Ist die Attacke erfolgreich, führt sie zu einem K.O.' }, - "dig": { - name: "Schaufler", - effect: "In Runde 1 gräbt sich der Anwender ein und in Runde 2 greift er an. Macht Flucht aus Höhlen möglich." + 'dig': { + name: 'Schaufler', + effect: 'In Runde 1 gräbt sich der Anwender ein und in Runde 2 greift er an. Macht Flucht aus Höhlen möglich.' }, - "toxic": { - name: "Toxin", - effect: "Vergiftet das Ziel mit einem potenten Toxin schwer. Vergiftung wird von Runde zu Runde stärker." + 'toxic': { + name: 'Toxin', + effect: 'Vergiftet das Ziel mit einem potenten Toxin schwer. Vergiftung wird von Runde zu Runde stärker.' }, - "confusion": { - name: "Konfusion", - effect: "Das Ziel wird von schwacher telekinetischer Energie getroffen und eventuell verwirrt." + 'confusion': { + name: 'Konfusion', + effect: 'Das Ziel wird von schwacher telekinetischer Energie getroffen und eventuell verwirrt.' }, - "psychic": { - name: "Psychokinese", - effect: "Starke Psycho-Attacke, die eventuell die Spezial-Verteidigung des Zieles senkt." + 'psychic': { + name: 'Psychokinese', + effect: 'Starke Psycho-Attacke, die eventuell die Spezial-Verteidigung des Zieles senkt.' }, - "hypnosis": { - name: "Hypnose", - effect: "Hypnose-Attacke, die das Ziel in Schlaf versetzt." + 'hypnosis': { + name: 'Hypnose', + effect: 'Hypnose-Attacke, die das Ziel in Schlaf versetzt.' }, - "meditate": { - name: "Meditation", - effect: "Anwender aktiviert Kräfte, die tief in seinem Inneren schlummern, und steigert so seinen Angriffs-Wert." + 'meditate': { + name: 'Meditation', + effect: 'Anwender aktiviert Kräfte, die tief in seinem Inneren schlummern, und steigert so seinen Angriffs-Wert.' }, - "agility": { - name: "Agilität", - effect: "Entspannt den Körper, um den Initiative-Wert stark zu steigern." + 'agility': { + name: 'Agilität', + effect: 'Entspannt den Körper, um den Initiative-Wert stark zu steigern.' }, - "quickAttack": { - name: "Ruckzuckhieb", - effect: "Sehr schneller Angriff mit Erstschlaggarantie." + 'quickAttack': { + name: 'Ruckzuckhieb', + effect: 'Sehr schneller Angriff mit Erstschlaggarantie.' }, - "rage": { - name: "Raserei", - effect: "Erhöht Angriff des Anwenders, wenn dieser getroffen wird, solange die Attacke aktiviert ist." + 'rage': { + name: 'Raserei', + effect: 'Erhöht Angriff des Anwenders, wenn dieser getroffen wird, solange die Attacke aktiviert ist.' }, - "teleport": { - name: "Teleport", - effect: "Der Anwender tauscht den Platz mit einem anderen Team-Mitglied, sofern vorhanden. Setzen wilde Pokémon die Attacke ein, ergreifen diese die Flucht." + 'teleport': { + name: 'Teleport', + effect: 'Der Anwender tauscht den Platz mit einem anderen Team-Mitglied, sofern vorhanden. Setzen wilde Pokémon die Attacke ein, ergreifen diese die Flucht.' }, - "nightShade": { - name: "Nachtnebel", - effect: "Das Ziel sieht eine Illusion. Richtet Schaden gemäß dem Level des Anwenders an." + 'nightShade': { + name: 'Nachtnebel', + effect: 'Das Ziel sieht eine Illusion. Richtet Schaden gemäß dem Level des Anwenders an.' }, - "mimic": { - name: "Mimikry", - effect: "Kopiert die zuvor ausgeführte Attacke des Zieles. Kann im Kampf bis zur Auswechslung verwendet werden." + 'mimic': { + name: 'Mimikry', + effect: 'Kopiert die zuvor ausgeführte Attacke des Zieles. Kann im Kampf bis zur Auswechslung verwendet werden.' }, - "screech": { - name: "Kreideschrei", - effect: "Stößt einen Schrei aus, um die Verteidigung des Zieles stark zu senken." + 'screech': { + name: 'Kreideschrei', + effect: 'Stößt einen Schrei aus, um die Verteidigung des Zieles stark zu senken.' }, - "doubleTeam": { - name: "Doppelteam", - effect: "Erzeugt durch schnelle Bewegungen Ebenbilder, um den Fluchtwert zu erhöhen." + 'doubleTeam': { + name: 'Doppelteam', + effect: 'Erzeugt durch schnelle Bewegungen Ebenbilder, um den Fluchtwert zu erhöhen.' }, - "recover": { - name: "Genesung", - effect: "Eine Selbstheilung. KP des Anwenders werden um 50 % des maximalen Wertes aufgefüllt." + 'recover': { + name: 'Genesung', + effect: 'Eine Selbstheilung. KP des Anwenders werden um 50 % des maximalen Wertes aufgefüllt.' }, - "harden": { - name: "Härtner", - effect: "Stärkt die Muskulatur und erhöht den Verteidigungs-Wert." + 'harden': { + name: 'Härtner', + effect: 'Stärkt die Muskulatur und erhöht den Verteidigungs-Wert.' }, - "minimize": { - name: "Komprimator", - effect: "Anwender schrumpft, um seinen Fluchtwert stark zu erhöhen." + 'minimize': { + name: 'Komprimator', + effect: 'Anwender schrumpft, um seinen Fluchtwert stark zu erhöhen.' }, - "smokescreen": { - name: "Rauchwolke", - effect: "Senkt Genauigkeit des Zieles mit Rauch, Tinte oder Ähnlichem." + 'smokescreen': { + name: 'Rauchwolke', + effect: 'Senkt Genauigkeit des Zieles mit Rauch, Tinte oder Ähnlichem.' }, - "confuseRay": { - name: "Konfusstrahl", - effect: "Ein fieser Strahl, der das Ziel verwirrt." + 'confuseRay': { + name: 'Konfusstrahl', + effect: 'Ein fieser Strahl, der das Ziel verwirrt.' }, - "withdraw": { - name: "Panzerschutz", - effect: "Rückzug in den harten Panzer. Erhöht den Verteidigungs-Wert." + 'withdraw': { + name: 'Panzerschutz', + effect: 'Rückzug in den harten Panzer. Erhöht den Verteidigungs-Wert.' }, - "defenseCurl": { - name: "Einigler", - effect: "Verbirgt Schwächen durch Einrollen und hebt gleichzeitig den Verteidigungs-Wert." + 'defenseCurl': { + name: 'Einigler', + effect: 'Verbirgt Schwächen durch Einrollen und hebt gleichzeitig den Verteidigungs-Wert.' }, - "barrier": { - name: "Barriere", - effect: "Erzeugt eine Barriere, die den Verteidigungs-Wert stark erhöht." + 'barrier': { + name: 'Barriere', + effect: 'Erzeugt eine Barriere, die den Verteidigungs-Wert stark erhöht.' }, - "lightScreen": { - name: "Lichtschild", - effect: "Erzeugt eine Lichtwand und senkt den Schaden durch Spezial-Angriffe für fünf Runden." + 'lightScreen': { + name: 'Lichtschild', + effect: 'Erzeugt eine Lichtwand und senkt den Schaden durch Spezial-Angriffe für fünf Runden.' }, - "haze": { - name: "Dunkelnebel", - effect: "Erzeugt einen dunklen Nebel. Alle Veränderungen der Statuswerte der Kampfteilnehmer werden annulliert." + 'haze': { + name: 'Dunkelnebel', + effect: 'Erzeugt einen dunklen Nebel. Alle Veränderungen der Statuswerte der Kampfteilnehmer werden annulliert.' }, - "reflect": { - name: "Reflektor", - effect: "Eine mysteriöse Wand, die fünf Runden den Schaden von physischen gegnerischen Treffern reduziert." + 'reflect': { + name: 'Reflektor', + effect: 'Eine mysteriöse Wand, die fünf Runden den Schaden von physischen gegnerischen Treffern reduziert.' }, - "focusEnergy": { - name: "Energiefokus", - effect: "Anwender atmet ein und bündelt Kraft. Die Volltrefferquote steigt dadurch." + 'focusEnergy': { + name: 'Energiefokus', + effect: 'Anwender atmet ein und bündelt Kraft. Die Volltrefferquote steigt dadurch.' }, - "bide": { - name: "Geduld", - effect: "Erträgt zwei Runden Angriffe und schlägt dann mit dem doppelten Wert des erlittenen Schadens zurück." + 'bide': { + name: 'Geduld', + effect: 'Erträgt zwei Runden Angriffe und schlägt dann mit dem doppelten Wert des erlittenen Schadens zurück.' }, - "metronome": { - name: "Metronom", - effect: "Bewegt Finger, um das Gehirn zu stimulieren. Wählt zufällig eine Attacke aus." + 'metronome': { + name: 'Metronom', + effect: 'Bewegt Finger, um das Gehirn zu stimulieren. Wählt zufällig eine Attacke aus.' }, - "mirrorMove": { - name: "Spiegeltrick", - effect: "Kopiert die letzte Attacke des Zieles und greift es an." + 'mirrorMove': { + name: 'Spiegeltrick', + effect: 'Kopiert die letzte Attacke des Zieles und greift es an.' }, - "selfDestruct": { - name: "Finale", - effect: "Anwender sprengt sich, richtet rundum Riesenschaden an und wird dabei besiegt." + 'selfDestruct': { + name: 'Finale', + effect: 'Anwender sprengt sich, richtet rundum Riesenschaden an und wird dabei besiegt.' }, - "eggBomb": { - name: "Eierbombe", - effect: "Ein großes Ei wird auf das Ziel abgefeuert, um ihm zu schaden." + 'eggBomb': { + name: 'Eierbombe', + effect: 'Ein großes Ei wird auf das Ziel abgefeuert, um ihm zu schaden.' }, - "lick": { - name: "Schlecker", - effect: "Leck-Attacke mit langer Zunge. Das Ziel wird eventuell paralysiert." + 'lick': { + name: 'Schlecker', + effect: 'Leck-Attacke mit langer Zunge. Das Ziel wird eventuell paralysiert.' }, - "smog": { - name: "Smog", - effect: "Angriff mit Gas. Das Ziel kann eventuell vergiftet werden." + 'smog': { + name: 'Smog', + effect: 'Angriff mit Gas. Das Ziel kann eventuell vergiftet werden.' }, - "sludge": { - name: "Schlammbad", - effect: "Wirft Schlamm auf das Ziel. Dieses wird eventuell vergiftet." + 'sludge': { + name: 'Schlammbad', + effect: 'Wirft Schlamm auf das Ziel. Dieses wird eventuell vergiftet.' }, - "boneClub": { - name: "Knochenkeule", - effect: "Schlägt das Ziel mit einer Keule und lässt es eventuell zurückschrecken." + 'boneClub': { + name: 'Knochenkeule', + effect: 'Schlägt das Ziel mit einer Keule und lässt es eventuell zurückschrecken.' }, - "fireBlast": { - name: "Feuersturm", - effect: "Feuersbrunst, die das Ziel versengt und ihm eventuell eine Verbrennung zufügt." + 'fireBlast': { + name: 'Feuersturm', + effect: 'Feuersbrunst, die das Ziel versengt und ihm eventuell eine Verbrennung zufügt.' }, - "waterfall": { - name: "Kaskade", - effect: "Eine mächtige Attacke, durch die das Ziel eventuell zurückschreckt." + 'waterfall': { + name: 'Kaskade', + effect: 'Eine mächtige Attacke, durch die das Ziel eventuell zurückschreckt.' }, - "clamp": { - name: "Schnapper", - effect: "Fängt und quetscht das Ziel über vier bis fünf Runden durch die harte Schale des Anwenders." + 'clamp': { + name: 'Schnapper', + effect: 'Fängt und quetscht das Ziel über vier bis fünf Runden durch die harte Schale des Anwenders.' }, - "swift": { - name: "Sternschauer", - effect: "Verschießt sternförmige Strahlen, die stets treffen, auf Ziele in der Umgebung." + 'swift': { + name: 'Sternschauer', + effect: 'Verschießt sternförmige Strahlen, die stets treffen, auf Ziele in der Umgebung.' }, - "skullBash": { - name: "Schädelwumme", - effect: "Der Anwender erhöht in Runde 1 seine Verteidigung und greift in Runde 2 an." + 'skullBash': { + name: 'Schädelwumme', + effect: 'Der Anwender erhöht in Runde 1 seine Verteidigung und greift in Runde 2 an.' }, - "spikeCannon": { - name: "Dornkanone", - effect: "Spitze Nadeln treffen das Ziel zwei- bis fünfmal hintereinander." + 'spikeCannon': { + name: 'Dornkanone', + effect: 'Spitze Nadeln treffen das Ziel zwei- bis fünfmal hintereinander.' }, - "constrict": { - name: "Umklammerung", - effect: "Angriff mit langen Tentakeln oder Ranken. Senkt eventuell den Initiative-Wert." + 'constrict': { + name: 'Umklammerung', + effect: 'Angriff mit langen Tentakeln oder Ranken. Senkt eventuell den Initiative-Wert.' }, - "amnesia": { - name: "Amnesie", - effect: "Gedächtnisverlust, der die Spezial-Verteidigung stark erhöht." + 'amnesia': { + name: 'Amnesie', + effect: 'Gedächtnisverlust, der die Spezial-Verteidigung stark erhöht.' }, - "kinesis": { - name: "Psykraft", - effect: "Lenkt Ziel durch Verbiegen eines Löffels ab. Senkt dessen Genauigkeit." + 'kinesis': { + name: 'Psykraft', + effect: 'Lenkt Ziel durch Verbiegen eines Löffels ab. Senkt dessen Genauigkeit.' }, - "softBoiled": { - name: "Weichei", - effect: "KP des Anwenders werden um 50 % der maximalen KP aufgefüllt." + 'softBoiled': { + name: 'Weichei', + effect: 'KP des Anwenders werden um 50 % der maximalen KP aufgefüllt.' }, - "highJumpKick": { - name: "Turmkick", - effect: "Sprungtritt mit Knie. Bei Misserfolg verletzt sich der Anwender selbst." + 'highJumpKick': { + name: 'Turmkick', + effect: 'Sprungtritt mit Knie. Bei Misserfolg verletzt sich der Anwender selbst.' }, - "glare": { - name: "Schlangenblick", - effect: "Schüchtert Ziel mit dem Muster auf seinem Bauch ein, sodass dieses paralysiert wird." + 'glare': { + name: 'Schlangenblick', + effect: 'Schüchtert Ziel mit dem Muster auf seinem Bauch ein, sodass dieses paralysiert wird.' }, - "dreamEater": { - name: "Traumfresser", - effect: "Attacke gegen schlafendes Ziel. Die Hälfte des zugefügten Schadens wird dem Anwender gutgeschrieben." + 'dreamEater': { + name: 'Traumfresser', + effect: 'Attacke gegen schlafendes Ziel. Die Hälfte des zugefügten Schadens wird dem Anwender gutgeschrieben.' }, - "poisonGas": { - name: "Giftwolke", - effect: "Hüllt Ziele in der Umgebung in Gas ein, das sie eventuell vergiftet." + 'poisonGas': { + name: 'Giftwolke', + effect: 'Hüllt Ziele in der Umgebung in Gas ein, das sie eventuell vergiftet.' }, - "barrage": { - name: "Stakkato", - effect: "Wirft zwei- bis fünfmal runde Gegenstände auf das Ziel." + 'barrage': { + name: 'Stakkato', + effect: 'Wirft zwei- bis fünfmal runde Gegenstände auf das Ziel.' }, - "leechLife": { - name: "Blutsauger", - effect: "Die Hälfte des zugefügten Schadens wird dem Anwender gutgeschrieben." + 'leechLife': { + name: 'Blutsauger', + effect: 'Die Hälfte des zugefügten Schadens wird dem Anwender gutgeschrieben.' }, - "lovelyKiss": { - name: "Todeskuss", - effect: "Anwender zwingt dem Ziel einen Kuss auf, der Schlaf verursacht." + 'lovelyKiss': { + name: 'Todeskuss', + effect: 'Anwender zwingt dem Ziel einen Kuss auf, der Schlaf verursacht.' }, - "skyAttack": { - name: "Himmelsfeger", - effect: "Anwender greift in der zweiten Runde mit hoher Volltrefferquote an. Ziel schreckt eventuell zurück." + 'skyAttack': { + name: 'Himmelsfeger', + effect: 'Anwender greift in der zweiten Runde mit hoher Volltrefferquote an. Ziel schreckt eventuell zurück.' }, - "transform": { - name: "Wandler", - effect: "Anwender verwandelt sich in ein Abbild des Zieles und kann so auf die gleichen Attacken zugreifen." + 'transform': { + name: 'Wandler', + effect: 'Anwender verwandelt sich in ein Abbild des Zieles und kann so auf die gleichen Attacken zugreifen.' }, - "bubble": { - name: "Blubber", - effect: "Angriff mit Blasen. Initiative-Wert des Zieles wird eventuell gesenkt." + 'bubble': { + name: 'Blubber', + effect: 'Angriff mit Blasen. Initiative-Wert des Zieles wird eventuell gesenkt.' }, - "dizzyPunch": { - name: "Irrschlag", - effect: "Rhythmische Schläge, die das Ziel verwirren können." + 'dizzyPunch': { + name: 'Irrschlag', + effect: 'Rhythmische Schläge, die das Ziel verwirren können.' }, - "spore": { - name: "Pilzspore", - effect: "Erzeugt eine Wolke aus einschläfernden Sporen." + 'spore': { + name: 'Pilzspore', + effect: 'Erzeugt eine Wolke aus einschläfernden Sporen.' }, - "flash": { - name: "Blitz", - effect: "Erzeugt helles Licht, das die Genauigkeit des Zieles senkt." + 'flash': { + name: 'Blitz', + effect: 'Erzeugt helles Licht, das die Genauigkeit des Zieles senkt.' }, - "psywave": { - name: "Psywelle", - effect: "Anwender erzeugt eine mysteriöse Energiewelle, deren Intensität von Mal zu Mal anders ausfällt." + 'psywave': { + name: 'Psywelle', + effect: 'Anwender erzeugt eine mysteriöse Energiewelle, deren Intensität von Mal zu Mal anders ausfällt.' }, - "splash": { - name: "Platscher", - effect: "Nur ein Platscher, der überhaupt nichts bewirkt." + 'splash': { + name: 'Platscher', + effect: 'Nur ein Platscher, der überhaupt nichts bewirkt.' }, - "acidArmor": { - name: "Säurepanzer", - effect: "Verflüssigt Körperzellen des Anwenders. Erhöht den Verteidigungs-Wert stark." + 'acidArmor': { + name: 'Säurepanzer', + effect: 'Verflüssigt Körperzellen des Anwenders. Erhöht den Verteidigungs-Wert stark.' }, - "crabhammer": { - name: "Krabbhammer", - effect: "Schlägt mit Schere zu. Hohe Volltrefferquote." + 'crabhammer': { + name: 'Krabbhammer', + effect: 'Schlägt mit Schere zu. Hohe Volltrefferquote.' }, - "explosion": { - name: "Explosion", - effect: "Anwender explodiert, richtet bei allen Pokémon in seiner Umgebung großen Schaden an und wird selbst kampfunfähig." + 'explosion': { + name: 'Explosion', + effect: 'Anwender explodiert, richtet bei allen Pokémon in seiner Umgebung großen Schaden an und wird selbst kampfunfähig.' }, - "furySwipes": { - name: "Kratzfurie", - effect: "Beharkt das Ziel zwei- bis fünfmal mit scharfen Klauen oder Sicheln." + 'furySwipes': { + name: 'Kratzfurie', + effect: 'Beharkt das Ziel zwei- bis fünfmal mit scharfen Klauen oder Sicheln.' }, - "bonemerang": { - name: "Knochmerang", - effect: "Ein Bumerang aus Knochen, der zweimal trifft." + 'bonemerang': { + name: 'Knochmerang', + effect: 'Ein Bumerang aus Knochen, der zweimal trifft.' }, - "rest": { - name: "Erholung", - effect: "Anwender wird vollkommen geheilt und schläft die folgenden zwei Runden." + 'rest': { + name: 'Erholung', + effect: 'Anwender wird vollkommen geheilt und schläft die folgenden zwei Runden.' }, - "rockSlide": { - name: "Steinhagel", - effect: "Schleudert riesige Felsen auf Ziele in der Umgebung, die eventuell zurückschrecken." + 'rockSlide': { + name: 'Steinhagel', + effect: 'Schleudert riesige Felsen auf Ziele in der Umgebung, die eventuell zurückschrecken.' }, - "hyperFang": { - name: "Hyperzahn", - effect: "Angriff mit scharfen Reißzähnen. Ziel schreckt eventuell zurück." + 'hyperFang': { + name: 'Hyperzahn', + effect: 'Angriff mit scharfen Reißzähnen. Ziel schreckt eventuell zurück.' }, - "sharpen": { - name: "Schärfer", - effect: "Anwender senkt die Polygonzahl, um Kanten zu erzeugen, die den Angriffs-Wert erhöhen." + 'sharpen': { + name: 'Schärfer', + effect: 'Anwender senkt die Polygonzahl, um Kanten zu erzeugen, die den Angriffs-Wert erhöhen.' }, - "conversion": { - name: "Umwandlung", - effect: "Wandelt den Typ des Anwenders in den Typ der ersten Attacke des Anwenders um." + 'conversion': { + name: 'Umwandlung', + effect: 'Wandelt den Typ des Anwenders in den Typ der ersten Attacke des Anwenders um.' }, - "triAttack": { - name: "Triplette", - effect: "Feuert drei Strahlen ab. Verursacht eventuell Paralyse, Verbrennung oder Einfrieren." + 'triAttack': { + name: 'Triplette', + effect: 'Feuert drei Strahlen ab. Verursacht eventuell Paralyse, Verbrennung oder Einfrieren.' }, - "superFang": { - name: "Superzahn", - effect: "Greift mit scharfen Reißzähnen an. KP des Zieles werden halbiert." + 'superFang': { + name: 'Superzahn', + effect: 'Greift mit scharfen Reißzähnen an. KP des Zieles werden halbiert.' }, - "slash": { - name: "Schlitzer", - effect: "Hieb mit Klauen oder Ähnlichem. Hohe Volltrefferquote." + 'slash': { + name: 'Schlitzer', + effect: 'Hieb mit Klauen oder Ähnlichem. Hohe Volltrefferquote.' }, - "substitute": { - name: "Delegator", - effect: "Anwender setzt eine kleine Menge an KP ein, um einen Doppelgänger zu erzeugen, der für ihn Schläge einsteckt." + 'substitute': { + name: 'Delegator', + effect: 'Anwender setzt eine kleine Menge an KP ein, um einen Doppelgänger zu erzeugen, der für ihn Schläge einsteckt.' }, - "struggle": { - name: "Verzweifler", - effect: "Angriff nur bei verbrauchten AP. Anwender verletzt sich selbst leicht." + 'struggle': { + name: 'Verzweifler', + effect: 'Angriff nur bei verbrauchten AP. Anwender verletzt sich selbst leicht.' }, - "sketch": { - name: "Nachahmer", - effect: "Anwender lernt die letzte Attacke des Zieles dauerhaft. Nachahmer verschwindet nach Gebrauch." + 'sketch': { + name: 'Nachahmer', + effect: 'Anwender lernt die letzte Attacke des Zieles dauerhaft. Nachahmer verschwindet nach Gebrauch.' }, - "tripleKick": { - name: "Dreifachkick", - effect: "Tritt das Ziel ein- bis dreimal nacheinander. Die Härte der Tritte nimmt von Treffer zu Treffer zu." + 'tripleKick': { + name: 'Dreifachkick', + effect: 'Tritt das Ziel ein- bis dreimal nacheinander. Die Härte der Tritte nimmt von Treffer zu Treffer zu.' }, - "thief": { - name: "Raub", - effect: "Erlaubt es, das Item des Zieles zu stehlen, solang der Anwender selbst keins bei sich trägt." + 'thief': { + name: 'Raub', + effect: 'Erlaubt es, das Item des Zieles zu stehlen, solang der Anwender selbst keins bei sich trägt.' }, - "spiderWeb": { - name: "Spinnennetz", - effect: "Wickelt das Ziel ein. Flucht oder Tausch unmöglich." + 'spiderWeb': { + name: 'Spinnennetz', + effect: 'Wickelt das Ziel ein. Flucht oder Tausch unmöglich.' }, - "mindReader": { - name: "Willensleser", - effect: "Ahnt Bewegungen des Zieles voraus, um zu gewährleisten, dass die nächste eigene Attacke trifft." + 'mindReader': { + name: 'Willensleser', + effect: 'Ahnt Bewegungen des Zieles voraus, um zu gewährleisten, dass die nächste eigene Attacke trifft.' }, - "nightmare": { - name: "Nachtmahr", - effect: "Dem schlafenden Ziel wird durch einen Alptraum in jeder Runde Schaden zugefügt, solang es schläft." + 'nightmare': { + name: 'Nachtmahr', + effect: 'Dem schlafenden Ziel wird durch einen Alptraum in jeder Runde Schaden zugefügt, solang es schläft.' }, - "flameWheel": { - name: "Flammenrad", - effect: "Feuer-Attacke, die das Ziel eventuell verbrennt." + 'flameWheel': { + name: 'Flammenrad', + effect: 'Feuer-Attacke, die das Ziel eventuell verbrennt.' }, - "snore": { - name: "Schnarcher", - effect: "Attacke nur im Schlaf möglich. Ziel schreckt eventuell zurück." + 'snore': { + name: 'Schnarcher', + effect: 'Attacke nur im Schlaf möglich. Ziel schreckt eventuell zurück.' }, - "curse": { - name: "Fluch", - effect: "Attacke, deren Wirkung davon abhängt, ob der Anwender ein Geist-Pokémon ist." + 'curse': { + name: 'Fluch', + effect: 'Attacke, deren Wirkung davon abhängt, ob der Anwender ein Geist-Pokémon ist.' }, - "flail": { - name: "Dreschflegel", - effect: "Attacke richtet mehr Schaden an, wenn eigene KP niedrig sind." + 'flail': { + name: 'Dreschflegel', + effect: 'Attacke richtet mehr Schaden an, wenn eigene KP niedrig sind.' }, - "conversion2": { - name: "Umwandlung2", - effect: "Anwender ändert Typ und wird gegen letzten Angriffstyp resistent." + 'conversion2': { + name: 'Umwandlung2', + effect: 'Anwender ändert Typ und wird gegen letzten Angriffstyp resistent.' }, - "aeroblast": { - name: "Luftstoß", - effect: "Erzeugt Luftstrudel gegen das Ziel. Hohe Volltrefferquote." + 'aeroblast': { + name: 'Luftstoß', + effect: 'Erzeugt Luftstrudel gegen das Ziel. Hohe Volltrefferquote.' }, - "cottonSpore": { - name: "Baumwollsaat", - effect: "Wattebäusche heften sich an das Ziel. Der Initiative-Wert sinkt stark." + 'cottonSpore': { + name: 'Baumwollsaat', + effect: 'Wattebäusche heften sich an das Ziel. Der Initiative-Wert sinkt stark.' }, - "reversal": { - name: "Gegenschlag", - effect: "Richtet mehr Schaden an, wenn eigene KP niedrig sind." + 'reversal': { + name: 'Gegenschlag', + effect: 'Richtet mehr Schaden an, wenn eigene KP niedrig sind.' }, - "spite": { - name: "Groll", - effect: "AP der letzten Attacke des Zieles werden um 4 gesenkt." + 'spite': { + name: 'Groll', + effect: 'AP der letzten Attacke des Zieles werden um 4 gesenkt.' }, - "powderSnow": { - name: "Pulverschnee", - effect: "Angriff mit Schnee. Das Ziel wird eventuell eingefroren." + 'powderSnow': { + name: 'Pulverschnee', + effect: 'Angriff mit Schnee. Das Ziel wird eventuell eingefroren.' }, - "protect": { - name: "Schutzschild", - effect: "Anwender weicht jeder Attacke aus. Scheitert eventuell bei Wiederholung." + 'protect': { + name: 'Schutzschild', + effect: 'Anwender weicht jeder Attacke aus. Scheitert eventuell bei Wiederholung.' }, - "machPunch": { - name: "Tempohieb", - effect: "Extrem schneller Hieb, der stets zuerst trifft." + 'machPunch': { + name: 'Tempohieb', + effect: 'Extrem schneller Hieb, der stets zuerst trifft.' }, - "scaryFace": { - name: "Grimasse", - effect: "Jagt dem Ziel mit einer Grimasse Angst ein. Dessen Initiative-Wert sinkt stark." + 'scaryFace': { + name: 'Grimasse', + effect: 'Jagt dem Ziel mit einer Grimasse Angst ein. Dessen Initiative-Wert sinkt stark.' }, - "feintAttack": { - name: "Finte", - effect: "Anwender nähert sich mit Unschuldsmiene dem Ziel und schlägt zu, sobald dieses unachtsam wird. Ein Treffer ist gewiss." + 'feintAttack': { + name: 'Finte', + effect: 'Anwender nähert sich mit Unschuldsmiene dem Ziel und schlägt zu, sobald dieses unachtsam wird. Ein Treffer ist gewiss.' }, - "sweetKiss": { - name: "Bitterkuss", - effect: "Anwender küsst das Ziel, das durch diese Niedlichkeit verwirrt wird." + 'sweetKiss': { + name: 'Bitterkuss', + effect: 'Anwender küsst das Ziel, das durch diese Niedlichkeit verwirrt wird.' }, - "bellyDrum": { - name: "Bauchtrommel", - effect: "Der Anwender maximiert den Angriffs-Wert auf Kosten der Hälfte seiner maximalen KP." + 'bellyDrum': { + name: 'Bauchtrommel', + effect: 'Der Anwender maximiert den Angriffs-Wert auf Kosten der Hälfte seiner maximalen KP.' }, - "sludgeBomb": { - name: "Matschbombe", - effect: "Wirft Schlamm auf das Ziel. Dieses wird eventuell vergiftet." + 'sludgeBomb': { + name: 'Matschbombe', + effect: 'Wirft Schlamm auf das Ziel. Dieses wird eventuell vergiftet.' }, - "mudSlap": { - name: "Lehmschelle", - effect: "Schadet dem Ziel durch Matsch. Dessen Genauigkeit sinkt." + 'mudSlap': { + name: 'Lehmschelle', + effect: 'Schadet dem Ziel durch Matsch. Dessen Genauigkeit sinkt.' }, - "octazooka": { - name: "Octazooka", - effect: "Schießt mit Tinte, um Schaden anzurichten und die Genauigkeit zu senken." + 'octazooka': { + name: 'Octazooka', + effect: 'Schießt mit Tinte, um Schaden anzurichten und die Genauigkeit zu senken.' }, - "spikes": { - name: "Stachler", - effect: "Der Anwender verteilt Stacheln, die gegnerische Pokémon verletzen, die in den Kampf gerufen werden." + 'spikes': { + name: 'Stachler', + effect: 'Der Anwender verteilt Stacheln, die gegnerische Pokémon verletzen, die in den Kampf gerufen werden.' }, - "zapCannon": { - name: "Blitzkanone", - effect: "Kanonenähnlicher Elektro-Schuss, der schadet und paralysiert." + 'zapCannon': { + name: 'Blitzkanone', + effect: 'Kanonenähnlicher Elektro-Schuss, der schadet und paralysiert.' }, - "foresight": { - name: "Scharfblick", - effect: "Erlaubt es, Geist-Pokémon mit Normal- und Kampf-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles." + 'foresight': { + name: 'Scharfblick', + effect: 'Erlaubt es, Geist-Pokémon mit Normal- und Kampf-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles.' }, - "destinyBond": { - name: "Abgangsbund", - effect: "Wird der Anwender nach Einsatz dieser Attacke besiegt, führt dies auch beim Ziel zum K.O." + 'destinyBond': { + name: 'Abgangsbund', + effect: 'Wird der Anwender nach Einsatz dieser Attacke besiegt, führt dies auch beim Ziel zum K.O.' }, - "perishSong": { - name: "Abgesang", - effect: "Wer diese Musik hört, wird nach drei Runden besiegt. Rettung ist durch den Eintausch eines neuen Pokémon möglich." + 'perishSong': { + name: 'Abgesang', + effect: 'Wer diese Musik hört, wird nach drei Runden besiegt. Rettung ist durch den Eintausch eines neuen Pokémon möglich.' }, - "icyWind": { - name: "Eissturm", - effect: "Eis-Attacke, die dem Ziel Schaden zufügt und seinen Initiative-Wert senkt." + 'icyWind': { + name: 'Eissturm', + effect: 'Eis-Attacke, die dem Ziel Schaden zufügt und seinen Initiative-Wert senkt.' }, - "detect": { - name: "Scanner", - effect: "Anwender weicht jeder Attacke aus. Scheitert eventuell bei Wiederholung." + 'detect': { + name: 'Scanner', + effect: 'Anwender weicht jeder Attacke aus. Scheitert eventuell bei Wiederholung.' }, - "boneRush": { - name: "Knochenhatz", - effect: "Greift Ziel zwei- bis fünfmal in Folge mit einem harten Knochen an." + 'boneRush': { + name: 'Knochenhatz', + effect: 'Greift Ziel zwei- bis fünfmal in Folge mit einem harten Knochen an.' }, - "lockOn": { - name: "Zielschuss", - effect: "Visiert das Ziel an und trifft in der nächsten Runde garantiert." + 'lockOn': { + name: 'Zielschuss', + effect: 'Visiert das Ziel an und trifft in der nächsten Runde garantiert.' }, - "outrage": { - name: "Wutanfall", - effect: "Attacke über zwei bis drei Runden, die den Anwender verwirrt." + 'outrage': { + name: 'Wutanfall', + effect: 'Attacke über zwei bis drei Runden, die den Anwender verwirrt.' }, - "sandstorm": { - name: "Sandsturm", - effect: "Sandsturm für fünf Runden. Fügt Pokémon von jedem Typ außer Gestein, Boden und Stahl Schaden zu." + 'sandstorm': { + name: 'Sandsturm', + effect: 'Sandsturm für fünf Runden. Fügt Pokémon von jedem Typ außer Gestein, Boden und Stahl Schaden zu.' }, - "gigaDrain": { - name: "Gigasauger", - effect: "Das Ziel wird angegriffen und die Hälfte des zugefügten Schadens dem Angreifer als KP gutgeschrieben." + 'gigaDrain': { + name: 'Gigasauger', + effect: 'Das Ziel wird angegriffen und die Hälfte des zugefügten Schadens dem Angreifer als KP gutgeschrieben.' }, - "endure": { - name: "Ausdauer", - effect: "Nach fatalen Attacken bleibt stets 1 KP übrig. Misserfolg bei Wiederholung möglich." + 'endure': { + name: 'Ausdauer', + effect: 'Nach fatalen Attacken bleibt stets 1 KP übrig. Misserfolg bei Wiederholung möglich.' }, - "charm": { - name: "Charme", - effect: "Betört das Ziel und reduziert dessen Angriffs-Wert stark." + 'charm': { + name: 'Charme', + effect: 'Betört das Ziel und reduziert dessen Angriffs-Wert stark.' }, - "rollout": { - name: "Walzer", - effect: "Attacke, die fünf Runden dauert. Die Härte nimmt von Mal zu Mal zu." + 'rollout': { + name: 'Walzer', + effect: 'Attacke, die fünf Runden dauert. Die Härte nimmt von Mal zu Mal zu.' }, - "falseSwipe": { - name: "Trugschlag", - effect: "Ein Angriff, der dem Ziel zumindest 1 KP lässt." + 'falseSwipe': { + name: 'Trugschlag', + effect: 'Ein Angriff, der dem Ziel zumindest 1 KP lässt.' }, - "swagger": { - name: "Angeberei", - effect: "Verwirrt das Ziel und erhöht dessen Angriffs-Wert stark." + 'swagger': { + name: 'Angeberei', + effect: 'Verwirrt das Ziel und erhöht dessen Angriffs-Wert stark.' }, - "milkDrink": { - name: "Milchgetränk", - effect: "KP des Anwenders werden um 50 % der maximalen KP aufgefüllt." + 'milkDrink': { + name: 'Milchgetränk', + effect: 'KP des Anwenders werden um 50 % der maximalen KP aufgefüllt.' }, - "spark": { - name: "Funkensprung", - effect: "Elektro-Hieb, der das Ziel paralysieren kann." + 'spark': { + name: 'Funkensprung', + effect: 'Elektro-Hieb, der das Ziel paralysieren kann.' }, - "furyCutter": { - name: "Zornklinge", - effect: "Eine Attacke mit Scheren oder Klauen, deren Härte bei aufeinanderfolgenden Treffern zunimmt." + 'furyCutter': { + name: 'Zornklinge', + effect: 'Eine Attacke mit Scheren oder Klauen, deren Härte bei aufeinanderfolgenden Treffern zunimmt.' }, - "steelWing": { - name: "Stahlflügel", - effect: "Trifft das Ziel mit Stahlflügeln. Verteidigungs-Wert des Anwenders steigt eventuell." + 'steelWing': { + name: 'Stahlflügel', + effect: 'Trifft das Ziel mit Stahlflügeln. Verteidigungs-Wert des Anwenders steigt eventuell.' }, - "meanLook": { - name: "Horrorblick", - effect: "Böser Blick, der die Flucht des Zieles vereitelt." + 'meanLook': { + name: 'Horrorblick', + effect: 'Böser Blick, der die Flucht des Zieles vereitelt.' }, - "attract": { - name: "Anziehung", - effect: "Angriff auf Anwender vom anderen Geschlecht wird unwahrscheinlich." + 'attract': { + name: 'Anziehung', + effect: 'Angriff auf Anwender vom anderen Geschlecht wird unwahrscheinlich.' }, - "sleepTalk": { - name: "Schlafrede", - effect: "Anwender setzt per Zufall eine ihm bekannte Attacke im Schlaf ein." + 'sleepTalk': { + name: 'Schlafrede', + effect: 'Anwender setzt per Zufall eine ihm bekannte Attacke im Schlaf ein.' }, - "healBell": { - name: "Vitalglocke", - effect: "Läutet beruhigend und heilt alle Statusprobleme im Team." + 'healBell': { + name: 'Vitalglocke', + effect: 'Läutet beruhigend und heilt alle Statusprobleme im Team.' }, - "return": { - name: "Rückkehr", - effect: "Angriff, dessen Kraft bei Freundschaft zum Trainer größer wird." + 'return': { + name: 'Rückkehr', + effect: 'Angriff, dessen Kraft bei Freundschaft zum Trainer größer wird.' }, - "present": { - name: "Geschenk", - effect: "Eine Bombe als Geschenk. Kann auch KP des Zieles wiederherstellen." + 'present': { + name: 'Geschenk', + effect: 'Eine Bombe als Geschenk. Kann auch KP des Zieles wiederherstellen.' }, - "frustration": { - name: "Frustration", - effect: "Die Attacke wird stärker, je weniger der Anwender seinen Trainer mag." + 'frustration': { + name: 'Frustration', + effect: 'Die Attacke wird stärker, je weniger der Anwender seinen Trainer mag.' }, - "safeguard": { - name: "Bodyguard", - effect: "Team des Anwenders ist fünf Runden vor Statusproblemen geschützt." + 'safeguard': { + name: 'Bodyguard', + effect: 'Team des Anwenders ist fünf Runden vor Statusproblemen geschützt.' }, - "painSplit": { - name: "Leidteiler", - effect: "Addiert KP von Anwender und Ziel. Teilt sie gerecht auf." + 'painSplit': { + name: 'Leidteiler', + effect: 'Addiert KP von Anwender und Ziel. Teilt sie gerecht auf.' }, - "sacredFire": { - name: "Läuterfeuer", - effect: "Mystische Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet." + 'sacredFire': { + name: 'Läuterfeuer', + effect: 'Mystische Feuer-Attacke, durch die das Ziel eventuell Verbrennungen erleidet.' }, - "magnitude": { - name: "Intensität", - effect: "Erdbebenartiger Angriff von zufälliger Stärke gegen andere Pokémon in der Umgebung des Anwenders." + 'magnitude': { + name: 'Intensität', + effect: 'Erdbebenartiger Angriff von zufälliger Stärke gegen andere Pokémon in der Umgebung des Anwenders.' }, - "dynamicPunch": { - name: "Wuchtschlag", - effect: "Kräftiger Schlag, der das Ziel bei Erfolg verwirrt." + 'dynamicPunch': { + name: 'Wuchtschlag', + effect: 'Kräftiger Schlag, der das Ziel bei Erfolg verwirrt.' }, - "megahorn": { - name: "Vielender", - effect: "Brutaler Ramm-Angriff mit spitzem, beeindruckendem Horn." + 'megahorn': { + name: 'Vielender', + effect: 'Brutaler Ramm-Angriff mit spitzem, beeindruckendem Horn.' }, - "dragonBreath": { - name: "Feuerodem", - effect: "Fegt das Ziel mit zerstörerisch heißem Atem weg. Paralysiert das Ziel eventuell." + 'dragonBreath': { + name: 'Feuerodem', + effect: 'Fegt das Ziel mit zerstörerisch heißem Atem weg. Paralysiert das Ziel eventuell.' }, - "batonPass": { - name: "Stafette", - effect: "Tauscht das eigene Pokémon aus. Alle Statusveränderungen bleiben bestehen." + 'batonPass': { + name: 'Stafette', + effect: 'Tauscht das eigene Pokémon aus. Alle Statusveränderungen bleiben bestehen.' }, - "encore": { - name: "Zugabe", - effect: "Das Ziel wiederholt die letzte Attacke drei Runden lang." + 'encore': { + name: 'Zugabe', + effect: 'Das Ziel wiederholt die letzte Attacke drei Runden lang.' }, - "pursuit": { - name: "Verfolgung", - effect: "Die Attacke richtet beim Ziel doppelten Schaden an, falls es ausgetauscht wird." + 'pursuit': { + name: 'Verfolgung', + effect: 'Die Attacke richtet beim Ziel doppelten Schaden an, falls es ausgetauscht wird.' }, - "rapidSpin": { - name: "Turbodreher", - effect: "Trifft das Ziel mit einer Dreh-Attacke. Befreit sich unter anderem von Wickel, Klammergriff, Egelsamen und Stachler." + 'rapidSpin': { + name: 'Turbodreher', + effect: 'Trifft das Ziel mit einer Dreh-Attacke. Befreit sich unter anderem von Wickel, Klammergriff, Egelsamen und Stachler.' }, - "sweetScent": { - name: "Lockduft", - effect: "Lockt Ziele an und senkt deren Fluchtwert. Lockt im Gras auch wilde Pokémon an." + 'sweetScent': { + name: 'Lockduft', + effect: 'Lockt Ziele an und senkt deren Fluchtwert. Lockt im Gras auch wilde Pokémon an.' }, - "ironTail": { - name: "Eisenschweif", - effect: "Attacke mit hartem Eisenschweif. Senkt eventuell den Verteidigungs-Wert des Zieles." + 'ironTail': { + name: 'Eisenschweif', + effect: 'Attacke mit hartem Eisenschweif. Senkt eventuell den Verteidigungs-Wert des Zieles.' }, - "metalClaw": { - name: "Metallklaue", - effect: "Klauen-Attacke, die eventuell den Angriffs-Wert des Anwenders erhöht." + 'metalClaw': { + name: 'Metallklaue', + effect: 'Klauen-Attacke, die eventuell den Angriffs-Wert des Anwenders erhöht.' }, - "vitalThrow": { - name: "Überwurf", - effect: "Anwender greift als Letzter an, hat dafür aber eine Treffergarantie beim eigenen Angriff." + 'vitalThrow': { + name: 'Überwurf', + effect: 'Anwender greift als Letzter an, hat dafür aber eine Treffergarantie beim eigenen Angriff.' }, - "morningSun": { - name: "Morgengrauen", - effect: "Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab." + 'morningSun': { + name: 'Morgengrauen', + effect: 'Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab.' }, - "synthesis": { - name: "Synthese", - effect: "Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab." + 'synthesis': { + name: 'Synthese', + effect: 'Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab.' }, - "moonlight": { - name: "Mondschein", - effect: "Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab." + 'moonlight': { + name: 'Mondschein', + effect: 'Füllt KP des Anwenders auf. Die Menge hängt vom Wetter ab.' }, - "hiddenPower": { - name: "Kraftreserve", - effect: "Wirkung und Typ der Attacke hängen vom Anwender ab." + 'hiddenPower': { + name: 'Kraftreserve', + effect: 'Wirkung und Typ der Attacke hängen vom Anwender ab.' }, - "crossChop": { - name: "Kreuzhieb", - effect: "Doppelter Hieb mit den Unterarmen. Hohe Volltrefferquote." + 'crossChop': { + name: 'Kreuzhieb', + effect: 'Doppelter Hieb mit den Unterarmen. Hohe Volltrefferquote.' }, - "twister": { - name: "Windhose", - effect: "Trifft Ziele in der Umgebung mit einem heftigen Wirbelsturm, was diese eventuell zurückschrecken lässt." + 'twister': { + name: 'Windhose', + effect: 'Trifft Ziele in der Umgebung mit einem heftigen Wirbelsturm, was diese eventuell zurückschrecken lässt.' }, - "rainDance": { - name: "Regentanz", - effect: "Anwender erzeugt starken Regen. Die Stärke von Wasser-Attacken erhöht sich fünf Runden lang." + 'rainDance': { + name: 'Regentanz', + effect: 'Anwender erzeugt starken Regen. Die Stärke von Wasser-Attacken erhöht sich fünf Runden lang.' }, - "sunnyDay": { - name: "Sonnentag", - effect: "Die Sonne brennt unbarmherzig fünf Runden lang. Dadurch werden Attacken vom Typ Feuer verstärkt." + 'sunnyDay': { + name: 'Sonnentag', + effect: 'Die Sonne brennt unbarmherzig fünf Runden lang. Dadurch werden Attacken vom Typ Feuer verstärkt.' }, - "crunch": { - name: "Knirscher", - effect: "Beißt mit scharfen Reißzähnen zu und senkt eventuell die Verteidigung." + 'crunch': { + name: 'Knirscher', + effect: 'Beißt mit scharfen Reißzähnen zu und senkt eventuell die Verteidigung.' }, - "mirrorCoat": { - name: "Spiegelcape", - effect: "Kontert den Spezial-Angriff des Gegners mit doppeltem Schaden." + 'mirrorCoat': { + name: 'Spiegelcape', + effect: 'Kontert den Spezial-Angriff des Gegners mit doppeltem Schaden.' }, - "psychUp": { - name: "Psycho-Plus", - effect: "Der Anwender hypnotisiert sich selbst, um die Statusveränderungen des Zieles zu kopieren." + 'psychUp': { + name: 'Psycho-Plus', + effect: 'Der Anwender hypnotisiert sich selbst, um die Statusveränderungen des Zieles zu kopieren.' }, - "extremeSpeed": { - name: "Turbotempo", - effect: "Extrem schnelle und kraftvolle Attacke, die stets zuerst trifft." + 'extremeSpeed': { + name: 'Turbotempo', + effect: 'Extrem schnelle und kraftvolle Attacke, die stets zuerst trifft.' }, - "ancientPower": { - name: "Antik-Kraft", - effect: "Angriff mit antiker Kraft, der alle Statuswerte erhöhen kann." + 'ancientPower': { + name: 'Antik-Kraft', + effect: 'Angriff mit antiker Kraft, der alle Statuswerte erhöhen kann.' }, - "shadowBall": { - name: "Spukball", - effect: "Bewirft das Ziel mit gruseligem Ball und senkt eventuell die Spezial-Verteidigung." + 'shadowBall': { + name: 'Spukball', + effect: 'Bewirft das Ziel mit gruseligem Ball und senkt eventuell die Spezial-Verteidigung.' }, - "futureSight": { - name: "Seher", - effect: "Zwei Runden, nachdem Seher eingesetzt wurde, erfolgt der Angriff." + 'futureSight': { + name: 'Seher', + effect: 'Zwei Runden, nachdem Seher eingesetzt wurde, erfolgt der Angriff.' }, - "rockSmash": { - name: "Zertrümmerer", - effect: "Diese steinbrechende Attacke kann den Verteidigungs-Wert des Zieles senken und außerhalb von Kämpfen rissige Felsen zertrümmern." + 'rockSmash': { + name: 'Zertrümmerer', + effect: 'Diese steinbrechende Attacke kann den Verteidigungs-Wert des Zieles senken und außerhalb von Kämpfen rissige Felsen zertrümmern.' }, - "whirlpool": { - name: "Whirlpool", - effect: "Das Ziel wird für vier bis fünf Runden in einer Wasserhose gefangen." + 'whirlpool': { + name: 'Whirlpool', + effect: 'Das Ziel wird für vier bis fünf Runden in einer Wasserhose gefangen.' }, - "beatUp": { - name: "Prügler", - effect: "Das gesamte Team nimmt aktiv am Kampf teil. Je mehr Pokémon, desto höher die Anzahl der Angriffe." + 'beatUp': { + name: 'Prügler', + effect: 'Das gesamte Team nimmt aktiv am Kampf teil. Je mehr Pokémon, desto höher die Anzahl der Angriffe.' }, - "fakeOut": { - name: "Mogelhieb", - effect: "Diese Attacke trifft zuerst. Das Ziel schreckt zurück. Gelingt nur in der ersten Runde eines Kampfes." + 'fakeOut': { + name: 'Mogelhieb', + effect: 'Diese Attacke trifft zuerst. Das Ziel schreckt zurück. Gelingt nur in der ersten Runde eines Kampfes.' }, - "uproar": { - name: "Aufruhr", - effect: "Anwender greift an, indem er über drei Runden hinweg einen Aufruhr erzeugt. Verhindert Schlaf." + 'uproar': { + name: 'Aufruhr', + effect: 'Anwender greift an, indem er über drei Runden hinweg einen Aufruhr erzeugt. Verhindert Schlaf.' }, - "stockpile": { - name: "Horter", - effect: "Lädt Kraft für später auf. Erhöht Verteidigung und Spezial-Verteidigung. Kann bis zu dreimal eingesetzt werden." + 'stockpile': { + name: 'Horter', + effect: 'Lädt Kraft für später auf. Erhöht Verteidigung und Spezial-Verteidigung. Kann bis zu dreimal eingesetzt werden.' }, - "spitUp": { - name: "Entfessler", - effect: "Entlädt die Kraft, die während des Einsatzes von Horter gesammelt wurde." + 'spitUp': { + name: 'Entfessler', + effect: 'Entlädt die Kraft, die während des Einsatzes von Horter gesammelt wurde.' }, - "swallow": { - name: "Verzehrer", - effect: "Absorbiert die gehortete Kraft, um KP aufzufüllen." + 'swallow': { + name: 'Verzehrer', + effect: 'Absorbiert die gehortete Kraft, um KP aufzufüllen.' }, - "heatWave": { - name: "Hitzewelle", - effect: "Ziele werden von Sturm aus heißer Luft getroffen und verbrennen sich eventuell." + 'heatWave': { + name: 'Hitzewelle', + effect: 'Ziele werden von Sturm aus heißer Luft getroffen und verbrennen sich eventuell.' }, - "hail": { - name: "Hagelsturm", - effect: "Hagelsturm für fünf Runden. Schadet allen, außer Eis-Pokémon." + 'hail': { + name: 'Hagelsturm', + effect: 'Hagelsturm für fünf Runden. Schadet allen, außer Eis-Pokémon.' }, - "torment": { - name: "Folterknecht", - effect: "Erzürnt das Ziel, um wiederholten Einsatz derselben Attacke zu verhindern." + 'torment': { + name: 'Folterknecht', + effect: 'Erzürnt das Ziel, um wiederholten Einsatz derselben Attacke zu verhindern.' }, - "flatter": { - name: "Schmeichler", - effect: "Schmeichelt dem Ziel, um es zu verwirren. Erhöht dessen Spezial-Angriff." + 'flatter': { + name: 'Schmeichler', + effect: 'Schmeichelt dem Ziel, um es zu verwirren. Erhöht dessen Spezial-Angriff.' }, - "willOWisp": { - name: "Irrlicht", - effect: "Angriff mit unheimlicher Flamme, die das Ziel verbrennt." + 'willOWisp': { + name: 'Irrlicht', + effect: 'Angriff mit unheimlicher Flamme, die das Ziel verbrennt.' }, - "memento": { - name: "Memento-Mori", - effect: "Der Anwender wird besiegt und senkt den Angriffs-Wert und den Spezial-Angriff des Zieles stark." + 'memento': { + name: 'Memento-Mori', + effect: 'Der Anwender wird besiegt und senkt den Angriffs-Wert und den Spezial-Angriff des Zieles stark.' }, - "facade": { - name: "Fassade", - effect: "Doppelte Stärke nach Verbrennung, Paralyse oder Vergiftung." + 'facade': { + name: 'Fassade', + effect: 'Doppelte Stärke nach Verbrennung, Paralyse oder Vergiftung.' }, - "focusPunch": { - name: "Power-Punch", - effect: "Anwender konzentriert sich, bevor er angreift. Wird er vorher getroffen, ist die Attacke erfolglos." + 'focusPunch': { + name: 'Power-Punch', + effect: 'Anwender konzentriert sich, bevor er angreift. Wird er vorher getroffen, ist die Attacke erfolglos.' }, - "smellingSalts": { - name: "Riechsalz", - effect: "Doppelt wirksam gegen paralysierte Ziele, heilt sie aber auch von der Paralyse." + 'smellingSalts': { + name: 'Riechsalz', + effect: 'Doppelt wirksam gegen paralysierte Ziele, heilt sie aber auch von der Paralyse.' }, - "followMe": { - name: "Spotlight", - effect: "Zieht Aufmerksamkeit auf sich. Gegner greift nur Anwender an." + 'followMe': { + name: 'Spotlight', + effect: 'Zieht Aufmerksamkeit auf sich. Gegner greift nur Anwender an.' }, - "naturePower": { - name: "Natur-Kraft", - effect: "Angriff mit der Kraft der Natur, dessen Typ vom Ort abhängt, wo er durchgeführt wird." + 'naturePower': { + name: 'Natur-Kraft', + effect: 'Angriff mit der Kraft der Natur, dessen Typ vom Ort abhängt, wo er durchgeführt wird.' }, - "charge": { - name: "Ladevorgang", - effect: "Lädt Energie für die kommende Elektro-Attacke auf. Erhöht die Spezial-Verteidigung." + 'charge': { + name: 'Ladevorgang', + effect: 'Lädt Energie für die kommende Elektro-Attacke auf. Erhöht die Spezial-Verteidigung.' }, - "taunt": { - name: "Verhöhner", - effect: "Bringt das Ziel in Rage. Dieses kann über drei Runden hinweg nur noch angreifen." + 'taunt': { + name: 'Verhöhner', + effect: 'Bringt das Ziel in Rage. Dieses kann über drei Runden hinweg nur noch angreifen.' }, - "helpingHand": { - name: "Rechte Hand", - effect: "Anwender steigert die Kraft eines Angriffes eines Freundes." + 'helpingHand': { + name: 'Rechte Hand', + effect: 'Anwender steigert die Kraft eines Angriffes eines Freundes.' }, - "trick": { - name: "Trickbetrug", - effect: "Der Anwender überrumpelt das Ziel und tauscht mit ihm die getragenen Items." + 'trick': { + name: 'Trickbetrug', + effect: 'Der Anwender überrumpelt das Ziel und tauscht mit ihm die getragenen Items.' }, - "rolePlay": { - name: "Rollenspiel", - effect: "Parodiert das Ziel und kopiert seine Fähigkeit." + 'rolePlay': { + name: 'Rollenspiel', + effect: 'Parodiert das Ziel und kopiert seine Fähigkeit.' }, - "wish": { - name: "Wunschtraum", - effect: "Ein Wunsch füllt in der nächsten Runde 50 % der KP des Anwenders bei diesem oder einem eingewechselten Pokémon auf." + 'wish': { + name: 'Wunschtraum', + effect: 'Ein Wunsch füllt in der nächsten Runde 50 % der KP des Anwenders bei diesem oder einem eingewechselten Pokémon auf.' }, - "assist": { - name: "Zuschuss", - effect: "Greift zufällig mit einer Attacke eines Mitstreiters an." + 'assist': { + name: 'Zuschuss', + effect: 'Greift zufällig mit einer Attacke eines Mitstreiters an.' }, - "ingrain": { - name: "Verwurzler", - effect: "Verwurzelung füllt jede Runde KP auf. Austausch ist unmöglich." + 'ingrain': { + name: 'Verwurzler', + effect: 'Verwurzelung füllt jede Runde KP auf. Austausch ist unmöglich.' }, - "superpower": { - name: "Kraftkoloss", - effect: "Starke Attacke, die jedoch auch den Angriff und die Verteidigung des Anwenders senkt." + 'superpower': { + name: 'Kraftkoloss', + effect: 'Starke Attacke, die jedoch auch den Angriff und die Verteidigung des Anwenders senkt.' }, - "magicCoat": { - name: "Magiemantel", - effect: "Egelsamen und alle Attacken mit Status verändernden Effekten prallen ab." + 'magicCoat': { + name: 'Magiemantel', + effect: 'Egelsamen und alle Attacken mit Status verändernden Effekten prallen ab.' }, - "recycle": { - name: "Aufbereitung", - effect: "Recycling eines getragenen Items, das zuvor im Kampf verwendet wurde." + 'recycle': { + name: 'Aufbereitung', + effect: 'Recycling eines getragenen Items, das zuvor im Kampf verwendet wurde.' }, - "revenge": { - name: "Vergeltung", - effect: "Schaden verdoppelt sich, wenn der Anwender in der Runde bereits Schaden vom Ziel des Angriffes genommen hat." + 'revenge': { + name: 'Vergeltung', + effect: 'Schaden verdoppelt sich, wenn der Anwender in der Runde bereits Schaden vom Ziel des Angriffes genommen hat.' }, - "brickBreak": { - name: "Durchbruch", - effect: "Ein beherzter Handkantenschlag. Durchbricht Barrieren wie Lichtschild und Reflektor." + 'brickBreak': { + name: 'Durchbruch', + effect: 'Ein beherzter Handkantenschlag. Durchbricht Barrieren wie Lichtschild und Reflektor.' }, - "yawn": { - name: "Gähner", - effect: "Angreifer gähnt und das Ziel schläft in der nächsten Runde ein." + 'yawn': { + name: 'Gähner', + effect: 'Angreifer gähnt und das Ziel schläft in der nächsten Runde ein.' }, - "knockOff": { - name: "Abschlag", - effect: "Schlägt das Item des Zieles weg und vereitelt so dessen Gebrauch während des Kampfes. Mehr Schaden gegen Ziele, die ein Item bei sich tragen." + 'knockOff': { + name: 'Abschlag', + effect: 'Schlägt das Item des Zieles weg und vereitelt so dessen Gebrauch während des Kampfes. Mehr Schaden gegen Ziele, die ein Item bei sich tragen.' }, - "endeavor": { - name: "Notsituation", - effect: "Trifft nur, wenn KP des Anwenders geringer als KP des Zieles sind. Senkt dessen KP auf die Höhe der KP des Anwenders." + 'endeavor': { + name: 'Notsituation', + effect: 'Trifft nur, wenn KP des Anwenders geringer als KP des Zieles sind. Senkt dessen KP auf die Höhe der KP des Anwenders.' }, - "eruption": { - name: "Eruption", - effect: "Explosiver Angriff. Je höher die KP des Anwenders sind, desto mehr Schaden wird angerichtet." + 'eruption': { + name: 'Eruption', + effect: 'Explosiver Angriff. Je höher die KP des Anwenders sind, desto mehr Schaden wird angerichtet.' }, - "skillSwap": { - name: "Fähigkeitstausch", - effect: "Anwender tauscht Fähigkeit mit dem Ziel." + 'skillSwap': { + name: 'Fähigkeitstausch', + effect: 'Anwender tauscht Fähigkeit mit dem Ziel.' }, - "imprison": { - name: "Begrenzer", - effect: "Hindert Gegner am Einsatz von Attacken, die der Anwender selbst auch kennt." + 'imprison': { + name: 'Begrenzer', + effect: 'Hindert Gegner am Einsatz von Attacken, die der Anwender selbst auch kennt.' }, - "refresh": { - name: "Heilung", - effect: "Selbstheilung bei Vergiftung, Paralyse und Verbrennung." + 'refresh': { + name: 'Heilung', + effect: 'Selbstheilung bei Vergiftung, Paralyse und Verbrennung.' }, - "grudge": { - name: "Nachspiel", - effect: "Bei K.O. des Anwenders werden die AP der Attacke, durch die er besiegt wurde, auf 0 herabgesetzt." + 'grudge': { + name: 'Nachspiel', + effect: 'Bei K.O. des Anwenders werden die AP der Attacke, durch die er besiegt wurde, auf 0 herabgesetzt.' }, - "snatch": { - name: "Übernahme", - effect: "Raubt den Effekt eingesetzter heilender oder Werte verändernder Attacken." + 'snatch': { + name: 'Übernahme', + effect: 'Raubt den Effekt eingesetzter heilender oder Werte verändernder Attacken.' }, - "secretPower": { - name: "Geheimpower", - effect: "Angriff, der abhängig vom Anwendungsort einen unterschiedlichen Zusatz-Effekt hat." + 'secretPower': { + name: 'Geheimpower', + effect: 'Angriff, der abhängig vom Anwendungsort einen unterschiedlichen Zusatz-Effekt hat.' }, - "dive": { - name: "Taucher", - effect: "Taucht in Runde 1 ab und greift in Runde 2 aus der Tiefe an." + 'dive': { + name: 'Taucher', + effect: 'Taucht in Runde 1 ab und greift in Runde 2 aus der Tiefe an.' }, - "armThrust": { - name: "Armstoß", - effect: "Schläge mit geradem Arm, die das Ziel zwei- bis fünfmal treffen." + 'armThrust': { + name: 'Armstoß', + effect: 'Schläge mit geradem Arm, die das Ziel zwei- bis fünfmal treffen.' }, - "camouflage": { - name: "Tarnung", - effect: "Der Typ des Anwenders passt sich der Umgebung an, sei es im Wasser, im Gras oder in einer Höhle." + 'camouflage': { + name: 'Tarnung', + effect: 'Der Typ des Anwenders passt sich der Umgebung an, sei es im Wasser, im Gras oder in einer Höhle.' }, - "tailGlow": { - name: "Schweifglanz", - effect: "Ein blinkendes Licht, das den Spezial-Angriff drastisch erhöht." + 'tailGlow': { + name: 'Schweifglanz', + effect: 'Ein blinkendes Licht, das den Spezial-Angriff drastisch erhöht.' }, - "lusterPurge": { - name: "Scheinwerfer", - effect: "Angriff mit grellem Licht, der die Spezial-Verteidigung des Zieles eventuell senkt." + 'lusterPurge': { + name: 'Scheinwerfer', + effect: 'Angriff mit grellem Licht, der die Spezial-Verteidigung des Zieles eventuell senkt.' }, - "mistBall": { - name: "Nebelball", - effect: "Angriff mit einer Kugel aus Wasser, die Nebel enthält. Senkt eventuell den Spezial-Angriff des Zieles." + 'mistBall': { + name: 'Nebelball', + effect: 'Angriff mit einer Kugel aus Wasser, die Nebel enthält. Senkt eventuell den Spezial-Angriff des Zieles.' }, - "featherDance": { - name: "Daunenreigen", - effect: "Hüllt das Ziel in Daunen und senkt dessen Angriffs-Wert stark." + 'featherDance': { + name: 'Daunenreigen', + effect: 'Hüllt das Ziel in Daunen und senkt dessen Angriffs-Wert stark.' }, - "teeterDance": { - name: "Taumeltanz", - effect: "Ein Wackeltanz, der andere Pokémon in der Umgebung des Anwenders verwirrt." + 'teeterDance': { + name: 'Taumeltanz', + effect: 'Ein Wackeltanz, der andere Pokémon in der Umgebung des Anwenders verwirrt.' }, - "blazeKick": { - name: "Feuerfeger", - effect: "Starker Tritt mit hoher Volltrefferquote. Verursacht eventuell Verbrennung." + 'blazeKick': { + name: 'Feuerfeger', + effect: 'Starker Tritt mit hoher Volltrefferquote. Verursacht eventuell Verbrennung.' }, - "mudSport": { - name: "Lehmsuhler", - effect: "Schwächt Elektro-Attacken, solang der Anwender am Kampf teilnimmt." + 'mudSport': { + name: 'Lehmsuhler', + effect: 'Schwächt Elektro-Attacken, solang der Anwender am Kampf teilnimmt.' }, - "iceBall": { - name: "Frostbeule", - effect: "Attacke, die fünf Runden dauert. Die Härte nimmt von Mal zu Mal zu." + 'iceBall': { + name: 'Frostbeule', + effect: 'Attacke, die fünf Runden dauert. Die Härte nimmt von Mal zu Mal zu.' }, - "needleArm": { - name: "Nietenranke", - effect: "Angriff mit dornigen Armen. Das Ziel schreckt eventuell zurück." + 'needleArm': { + name: 'Nietenranke', + effect: 'Angriff mit dornigen Armen. Das Ziel schreckt eventuell zurück.' }, - "slackOff": { - name: "Tagedieb", - effect: "Durch Müßiggang werden KP des Anwenders um 50 % der maximalen KP aufgefüllt." + 'slackOff': { + name: 'Tagedieb', + effect: 'Durch Müßiggang werden KP des Anwenders um 50 % der maximalen KP aufgefüllt.' }, - "hyperVoice": { - name: "Schallwelle", - effect: "Laute Attacke mit Schallwellen." + 'hyperVoice': { + name: 'Schallwelle', + effect: 'Laute Attacke mit Schallwellen.' }, - "poisonFang": { - name: "Giftzahn", - effect: "Angriff mit giftigen Reißzähnen. Das Ziel wird eventuell schwer vergiftet." + 'poisonFang': { + name: 'Giftzahn', + effect: 'Angriff mit giftigen Reißzähnen. Das Ziel wird eventuell schwer vergiftet.' }, - "crushClaw": { - name: "Zermalmklaue", - effect: "Angriff mit scharfen Klauen. Senkt eventuell den Verteidigungs-Wert." + 'crushClaw': { + name: 'Zermalmklaue', + effect: 'Angriff mit scharfen Klauen. Senkt eventuell den Verteidigungs-Wert.' }, - "blastBurn": { - name: "Lohekanonade", - effect: "Das Ziel wird von starker Explosion getroffen. Angreifer setzt eine Runde aus." + 'blastBurn': { + name: 'Lohekanonade', + effect: 'Das Ziel wird von starker Explosion getroffen. Angreifer setzt eine Runde aus.' }, - "hydroCannon": { - name: "Aquahaubitze", - effect: "Das Ziel wird von Wasserkanone getroffen. Angreifer setzt eine Runde aus." + 'hydroCannon': { + name: 'Aquahaubitze', + effect: 'Das Ziel wird von Wasserkanone getroffen. Angreifer setzt eine Runde aus.' }, - "meteorMash": { - name: "Sternenhieb", - effect: "Angriff mit einem harten, schnellen Schlag. Erhöht eventuell Angriffs-Wert des Anwenders." + 'meteorMash': { + name: 'Sternenhieb', + effect: 'Angriff mit einem harten, schnellen Schlag. Erhöht eventuell Angriffs-Wert des Anwenders.' }, - "astonish": { - name: "Erstauner", - effect: "Anwender greift mit einem Schrei an. Ein Angriff, der das Ziel eventuell zurückschrecken lässt." + 'astonish': { + name: 'Erstauner', + effect: 'Anwender greift mit einem Schrei an. Ein Angriff, der das Ziel eventuell zurückschrecken lässt.' }, - "weatherBall": { - name: "Meteorologe", - effect: "Typ und Stärke der Attacke sind vom Wetter zum Zeitpunkt der Anwendung abhängig." + 'weatherBall': { + name: 'Meteorologe', + effect: 'Typ und Stärke der Attacke sind vom Wetter zum Zeitpunkt der Anwendung abhängig.' }, - "aromatherapy": { - name: "Aromakur", - effect: "Heilt alle Statusprobleme des Teams mit beruhigendem Duft." + 'aromatherapy': { + name: 'Aromakur', + effect: 'Heilt alle Statusprobleme des Teams mit beruhigendem Duft.' }, - "fakeTears": { - name: "Trugträne", - effect: "Täuscht Weinen vor, um die Spezial-Verteidigung des Zieles stark zu senken." + 'fakeTears': { + name: 'Trugträne', + effect: 'Täuscht Weinen vor, um die Spezial-Verteidigung des Zieles stark zu senken.' }, - "airCutter": { - name: "Windschnitt", - effect: "Greift mit rasierklingenartigem Wind an. Hohe Volltrefferquote." + 'airCutter': { + name: 'Windschnitt', + effect: 'Greift mit rasierklingenartigem Wind an. Hohe Volltrefferquote.' }, - "overheat": { - name: "Hitzekoller", - effect: "Angriff mit voller Kraft, der den Spezial-Angriff des Anwenders durch den Rückstoß stark senkt." + 'overheat': { + name: 'Hitzekoller', + effect: 'Angriff mit voller Kraft, der den Spezial-Angriff des Anwenders durch den Rückstoß stark senkt.' }, - "odorSleuth": { - name: "Schnüffler", - effect: "Erlaubt es, Geist-Pokémon mit Normal- und Kampf-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles." + 'odorSleuth': { + name: 'Schnüffler', + effect: 'Erlaubt es, Geist-Pokémon mit Normal- und Kampf-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles.' }, - "rockTomb": { - name: "Felsgrab", - effect: "Angriff mit Felsen. Bei Erfolg wird der Initiative-Wert des Zieles gesenkt." + 'rockTomb': { + name: 'Felsgrab', + effect: 'Angriff mit Felsen. Bei Erfolg wird der Initiative-Wert des Zieles gesenkt.' }, - "silverWind": { - name: "Silberhauch", - effect: "Angriff mit Silberstaub. Eventuell werden alle Statuswerte des Anwenders erhöht." + 'silverWind': { + name: 'Silberhauch', + effect: 'Angriff mit Silberstaub. Eventuell werden alle Statuswerte des Anwenders erhöht.' }, - "metalSound": { - name: "Metallsound", - effect: "Stößt einen spitzen Schrei aus, der die Spezial-Verteidigung des Zieles stark senkt." + 'metalSound': { + name: 'Metallsound', + effect: 'Stößt einen spitzen Schrei aus, der die Spezial-Verteidigung des Zieles stark senkt.' }, - "grassWhistle": { - name: "Grasflöte", - effect: "Versetzt das Ziel durch eine schöne Melodie in Tiefschlaf." + 'grassWhistle': { + name: 'Grasflöte', + effect: 'Versetzt das Ziel durch eine schöne Melodie in Tiefschlaf.' }, - "tickle": { - name: "Spaßkanone", - effect: "Bringt das Ziel zum Lachen und senkt dadurch dessen Angriff und Verteidigung." + 'tickle': { + name: 'Spaßkanone', + effect: 'Bringt das Ziel zum Lachen und senkt dadurch dessen Angriff und Verteidigung.' }, - "cosmicPower": { - name: "Kosmik-Kraft", - effect: "Erhöht Verteidigung und Spezial-Verteidigung durch eine mystische Kraft." + 'cosmicPower': { + name: 'Kosmik-Kraft', + effect: 'Erhöht Verteidigung und Spezial-Verteidigung durch eine mystische Kraft.' }, - "waterSpout": { - name: "Fontränen", - effect: "Wasser-Attacke, die wirkungsvoller ist, wenn KP des Anwenders hoch sind." + 'waterSpout': { + name: 'Fontränen', + effect: 'Wasser-Attacke, die wirkungsvoller ist, wenn KP des Anwenders hoch sind.' }, - "signalBeam": { - name: "Ampelleuchte", - effect: "Strahlenattacke, die das Ziel eventuell verwirrt." + 'signalBeam': { + name: 'Ampelleuchte', + effect: 'Strahlenattacke, die das Ziel eventuell verwirrt.' }, - "shadowPunch": { - name: "Finsterfaust", - effect: "Angriff mit der Faust aus dem Schattenreich. Ausweichen unmöglich." + 'shadowPunch': { + name: 'Finsterfaust', + effect: 'Angriff mit der Faust aus dem Schattenreich. Ausweichen unmöglich.' }, - "extrasensory": { - name: "Sondersensor", - effect: "Besonderer Angriff mit einer unsichtbaren Kraft, die das Ziel eventuell zurückschrecken lässt." + 'extrasensory': { + name: 'Sondersensor', + effect: 'Besonderer Angriff mit einer unsichtbaren Kraft, die das Ziel eventuell zurückschrecken lässt.' }, - "skyUppercut": { - name: "Himmelhieb", - effect: "Kinnhaken, der das Ziel gen Himmel schickt." + 'skyUppercut': { + name: 'Himmelhieb', + effect: 'Kinnhaken, der das Ziel gen Himmel schickt.' }, - "sandTomb": { - name: "Sandgrab", - effect: "Das Ziel leidet für vier bis fünf Runden in einer Sandhose." + 'sandTomb': { + name: 'Sandgrab', + effect: 'Das Ziel leidet für vier bis fünf Runden in einer Sandhose.' }, - "sheerCold": { - name: "Eiseskälte", - effect: "Angriff mit Kälte, die das Ziel bei Erfolg besiegt." + 'sheerCold': { + name: 'Eiseskälte', + effect: 'Angriff mit Kälte, die das Ziel bei Erfolg besiegt.' }, - "muddyWater": { - name: "Lehmbrühe", - effect: "Greift mit Matsch an und senkt eventuell die Genauigkeit des Zieles." + 'muddyWater': { + name: 'Lehmbrühe', + effect: 'Greift mit Matsch an und senkt eventuell die Genauigkeit des Zieles.' }, - "bulletSeed": { - name: "Kugelsaat", - effect: "Der Anwender wirft zwei- bis fünfmal in rascher Folge Samen auf das Ziel." + 'bulletSeed': { + name: 'Kugelsaat', + effect: 'Der Anwender wirft zwei- bis fünfmal in rascher Folge Samen auf das Ziel.' }, - "aerialAce": { - name: "Aero-Ass", - effect: "Eine extrem schnelle Attacke, der das Ziel nicht ausweichen kann." + 'aerialAce': { + name: 'Aero-Ass', + effect: 'Eine extrem schnelle Attacke, der das Ziel nicht ausweichen kann.' }, - "icicleSpear": { - name: "Eisspeer", - effect: "Feuert zwei bis fünf Eiszapfen auf das Ziel." + 'icicleSpear': { + name: 'Eisspeer', + effect: 'Feuert zwei bis fünf Eiszapfen auf das Ziel.' }, - "ironDefense": { - name: "Eisenabwehr", - effect: "Anwender stärkt den Körper, um den Verteidigungs-Wert stark zu erhöhen." + 'ironDefense': { + name: 'Eisenabwehr', + effect: 'Anwender stärkt den Körper, um den Verteidigungs-Wert stark zu erhöhen.' }, - "block": { - name: "Rückentzug", - effect: "Anwender versperrt den Fluchtweg des Zieles." + 'block': { + name: 'Rückentzug', + effect: 'Anwender versperrt den Fluchtweg des Zieles.' }, - "howl": { - name: "Jauler", - effect: "Anwender jault, um seinen Kampfgeist und seinen Angriffs-Wert zu erhöhen." + 'howl': { + name: 'Jauler', + effect: 'Anwender jault, um seinen Kampfgeist und seinen Angriffs-Wert zu erhöhen.' }, - "dragonClaw": { - name: "Drachenklaue", - effect: "Das Ziel wird mit riesigen, scharfen Klauen stark verletzt." + 'dragonClaw': { + name: 'Drachenklaue', + effect: 'Das Ziel wird mit riesigen, scharfen Klauen stark verletzt.' }, - "frenzyPlant": { - name: "Flora-Statue", - effect: "Angriff mit dickem Ast. Der Angreifer muss eine Runde aussetzen." + 'frenzyPlant': { + name: 'Flora-Statue', + effect: 'Angriff mit dickem Ast. Der Angreifer muss eine Runde aussetzen.' }, - "bulkUp": { - name: "Protzer", - effect: "Pumpt den Körper auf, um den Angriff und die Verteidigung zu erhöhen." + 'bulkUp': { + name: 'Protzer', + effect: 'Pumpt den Körper auf, um den Angriff und die Verteidigung zu erhöhen.' }, - "bounce": { - name: "Sprungfeder", - effect: "Angreifer springt und landet in der nächsten Runde auf dem Ziel. Das Ziel wird eventuell paralysiert." + 'bounce': { + name: 'Sprungfeder', + effect: 'Angreifer springt und landet in der nächsten Runde auf dem Ziel. Das Ziel wird eventuell paralysiert.' }, - "mudShot": { - name: "Lehmschuss", - effect: "Angriff mit Lehm, der den Initiative-Wert des Zieles senkt." + 'mudShot': { + name: 'Lehmschuss', + effect: 'Angriff mit Lehm, der den Initiative-Wert des Zieles senkt.' }, - "poisonTail": { - name: "Giftschweif", - effect: "Angriff mit hoher Volltrefferquote. Diese Schweifattacke vergiftet das Ziel eventuell." + 'poisonTail': { + name: 'Giftschweif', + effect: 'Angriff mit hoher Volltrefferquote. Diese Schweifattacke vergiftet das Ziel eventuell.' }, - "covet": { - name: "Bezirzer", - effect: "Bittet charmant um das getragene Item des Zieles und stiehlt es dann." + 'covet': { + name: 'Bezirzer', + effect: 'Bittet charmant um das getragene Item des Zieles und stiehlt es dann.' }, - "voltTackle": { - name: "Volttackle", - effect: "Angriff mit Elektro-Tackle. Der Anwender verletzt sich dabei. Das Ziel wird eventuell paralysiert." + 'voltTackle': { + name: 'Volttackle', + effect: 'Angriff mit Elektro-Tackle. Der Anwender verletzt sich dabei. Das Ziel wird eventuell paralysiert.' }, - "magicalLeaf": { - name: "Zauberblatt", - effect: "Magischer Blattangriff, dem nicht auszuweichen ist." + 'magicalLeaf': { + name: 'Zauberblatt', + effect: 'Magischer Blattangriff, dem nicht auszuweichen ist.' }, - "waterSport": { - name: "Nassmacher", - effect: "Der Anwender lässt Wasser herabregnen und schwächt damit fünf Runden lang Feuer-Attacken." + 'waterSport': { + name: 'Nassmacher', + effect: 'Der Anwender lässt Wasser herabregnen und schwächt damit fünf Runden lang Feuer-Attacken.' }, - "calmMind": { - name: "Gedankengut", - effect: "Erhöht Spezial-Angriff und Spezial-Verteidigung durch Konzentration." + 'calmMind': { + name: 'Gedankengut', + effect: 'Erhöht Spezial-Angriff und Spezial-Verteidigung durch Konzentration.' }, - "leafBlade": { - name: "Laubklinge", - effect: "Hieb mit scharfkantigem Blatt. Hohe Volltrefferquote." + 'leafBlade': { + name: 'Laubklinge', + effect: 'Hieb mit scharfkantigem Blatt. Hohe Volltrefferquote.' }, - "dragonDance": { - name: "Drachentanz", - effect: "Ein mystischer Tanz, der den Angriffs- und Initiative-Wert erhöht." + 'dragonDance': { + name: 'Drachentanz', + effect: 'Ein mystischer Tanz, der den Angriffs- und Initiative-Wert erhöht.' }, - "rockBlast": { - name: "Felswurf", - effect: "Wirft zwei- bis fünfmal in Folge Felsblöcke auf das Ziel." + 'rockBlast': { + name: 'Felswurf', + effect: 'Wirft zwei- bis fünfmal in Folge Felsblöcke auf das Ziel.' }, - "shockWave": { - name: "Schockwelle", - effect: "Angriff mit schnellem Elektro-Schlag. Ausweichen nicht möglich." + 'shockWave': { + name: 'Schockwelle', + effect: 'Angriff mit schnellem Elektro-Schlag. Ausweichen nicht möglich.' }, - "waterPulse": { - name: "Aquawelle", - effect: "Angriff mit Wasserwelle, die das Ziel eventuell verwirren kann." + 'waterPulse': { + name: 'Aquawelle', + effect: 'Angriff mit Wasserwelle, die das Ziel eventuell verwirren kann.' }, - "doomDesire": { - name: "Kismetwunsch", - effect: "Angriff mit gebündeltem Licht erfolgt zwei Runden nach Attackeneinsatz." + 'doomDesire': { + name: 'Kismetwunsch', + effect: 'Angriff mit gebündeltem Licht erfolgt zwei Runden nach Attackeneinsatz.' }, - "psychoBoost": { - name: "Psyschub", - effect: "Angriff mit voller Kraft, der den Spezial-Angriff des Anwenders durch den Rückstoß stark senkt." + 'psychoBoost': { + name: 'Psyschub', + effect: 'Angriff mit voller Kraft, der den Spezial-Angriff des Anwenders durch den Rückstoß stark senkt.' }, - "roost": { - name: "Ruheort", - effect: "Anwender landet und ruht sich aus. KP des Anwenders werden um 50 % der maximalen KP aufgefüllt." + 'roost': { + name: 'Ruheort', + effect: 'Anwender landet und ruht sich aus. KP des Anwenders werden um 50 % der maximalen KP aufgefüllt.' }, - "gravity": { - name: "Erdanziehung", - effect: "Die Gravitation wird für fünf Runden erhöht. Macht Fliegen unmöglich und verhindert Schwebe." + 'gravity': { + name: 'Erdanziehung', + effect: 'Die Gravitation wird für fünf Runden erhöht. Macht Fliegen unmöglich und verhindert Schwebe.' }, - "miracleEye": { - name: "Wunderauge", - effect: "Erlaubt es, Unlicht-Pokémon mit Psycho-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles." + 'miracleEye': { + name: 'Wunderauge', + effect: 'Erlaubt es, Unlicht-Pokémon mit Psycho-Attacken anzugreifen. Ignoriert den Fluchtwert des Zieles.' }, - "wakeUpSlap": { - name: "Weckruf", - effect: "Richtet großen Schaden bei einem schlafenden Ziel an, weckt es aber auch auf." + 'wakeUpSlap': { + name: 'Weckruf', + effect: 'Richtet großen Schaden bei einem schlafenden Ziel an, weckt es aber auch auf.' }, - "hammerArm": { - name: "Hammerarm", - effect: "Anwender trifft mit einem starken Hieb. Senkt Initiative des Anwenders." + 'hammerArm': { + name: 'Hammerarm', + effect: 'Anwender trifft mit einem starken Hieb. Senkt Initiative des Anwenders.' }, - "gyroBall": { - name: "Gyroball", - effect: "Angriff mit hoher Geschwindigkeit. Je niedriger die Initiative des Anwenders, desto höher der Schaden." + 'gyroBall': { + name: 'Gyroball', + effect: 'Angriff mit hoher Geschwindigkeit. Je niedriger die Initiative des Anwenders, desto höher der Schaden.' }, - "healingWish": { - name: "Heilopfer", - effect: "Anwender geht K.O. Das an seine Stelle tretende Pokémon hat volle KP. Statusprobleme werden geheilt." + 'healingWish': { + name: 'Heilopfer', + effect: 'Anwender geht K.O. Das an seine Stelle tretende Pokémon hat volle KP. Statusprobleme werden geheilt.' }, - "brine": { - name: "Lake", - effect: "Hat das Ziel die Hälfte oder weniger seiner maximalen KP, trifft diese Attacke mit doppelter Kraft." + 'brine': { + name: 'Lake', + effect: 'Hat das Ziel die Hälfte oder weniger seiner maximalen KP, trifft diese Attacke mit doppelter Kraft.' }, - "naturalGift": { - name: "Beerenkräfte", - effect: "Anwender zieht aus seiner derzeitigen Beere Kraft. Sie bestimmt Typ und Stärke der Attacke." + 'naturalGift': { + name: 'Beerenkräfte', + effect: 'Anwender zieht aus seiner derzeitigen Beere Kraft. Sie bestimmt Typ und Stärke der Attacke.' }, - "feint": { - name: "Offenlegung", - effect: "Ziele, die Schutzschild oder Scanner verwenden, werden getroffen. Entfernt Effekte dieser Attacken." + 'feint': { + name: 'Offenlegung', + effect: 'Ziele, die Schutzschild oder Scanner verwenden, werden getroffen. Entfernt Effekte dieser Attacken.' }, - "pluck": { - name: "Pflücker", - effect: "Anwender pickt das Ziel, nimmt die Beere, falls das Ziel eine trägt, und erhält ihren Effekt." + 'pluck': { + name: 'Pflücker', + effect: 'Anwender pickt das Ziel, nimmt die Beere, falls das Ziel eine trägt, und erhält ihren Effekt.' }, - "tailwind": { - name: "Rückenwind", - effect: "Anwender erzeugt einen Wirbelwind, der die Initiative aller Pokémon im Team für vier Runden steigert." + 'tailwind': { + name: 'Rückenwind', + effect: 'Anwender erzeugt einen Wirbelwind, der die Initiative aller Pokémon im Team für vier Runden steigert.' }, - "acupressure": { - name: "Akupressur", - effect: "Anwender erhöht Druck auf Stresspunkte und steigert einen Statuswert stark." + 'acupressure': { + name: 'Akupressur', + effect: 'Anwender erhöht Druck auf Stresspunkte und steigert einen Statuswert stark.' }, - "metalBurst": { - name: "Metallstoß", - effect: "Attacke mit großer Kraft gegen das Ziel, das dem Anwender in derselben Runde zuletzt Schaden zufügte." + 'metalBurst': { + name: 'Metallstoß', + effect: 'Attacke mit großer Kraft gegen das Ziel, das dem Anwender in derselben Runde zuletzt Schaden zufügte.' }, - "uTurn": { - name: "Kehrtwende", - effect: "Nach der Attacke eilt der Anwender zurück und tauscht den Platz mit einem anderen Pokémon." + 'uTurn': { + name: 'Kehrtwende', + effect: 'Nach der Attacke eilt der Anwender zurück und tauscht den Platz mit einem anderen Pokémon.' }, - "closeCombat": { - name: "Nahkampf", - effect: "Nahkampf-Attacke ohne Rücksicht auf Verluste. Senkt Verteidigung und Spezial-Verteidigung des Anwenders." + 'closeCombat': { + name: 'Nahkampf', + effect: 'Nahkampf-Attacke ohne Rücksicht auf Verluste. Senkt Verteidigung und Spezial-Verteidigung des Anwenders.' }, - "payback": { - name: "Gegenstoß", - effect: "Der Anwender lädt die Attacke auf. Handelt das Ziel vor dem Anwender, verdoppelt sich die Kraft der Attacke." + 'payback': { + name: 'Gegenstoß', + effect: 'Der Anwender lädt die Attacke auf. Handelt das Ziel vor dem Anwender, verdoppelt sich die Kraft der Attacke.' }, - "assurance": { - name: "Gewissheit", - effect: "Hat das Ziel während der Runde schon Schaden genommen, wird die Kraft der Attacke verdoppelt." + 'assurance': { + name: 'Gewissheit', + effect: 'Hat das Ziel während der Runde schon Schaden genommen, wird die Kraft der Attacke verdoppelt.' }, - "embargo": { - name: "Itemsperre", - effect: "Verhindert, dass auf das Ziel Items verwendet werden." + 'embargo': { + name: 'Itemsperre', + effect: 'Verhindert, dass auf das Ziel Items verwendet werden.' }, - "fling": { - name: "Schleuder", - effect: "Anwender schleudert sein Item auf das Ziel. Kraft und Effekt der Attacke hängen vom Item ab." + 'fling': { + name: 'Schleuder', + effect: 'Anwender schleudert sein Item auf das Ziel. Kraft und Effekt der Attacke hängen vom Item ab.' }, - "psychoShift": { - name: "Psybann", - effect: "Anwender nutzt seine Suggestivkräfte, um eigene Statusprobleme auf das Ziel zu transferieren." + 'psychoShift': { + name: 'Psybann', + effect: 'Anwender nutzt seine Suggestivkräfte, um eigene Statusprobleme auf das Ziel zu transferieren.' }, - "trumpCard": { - name: "Trumpfkarte", - effect: "Je weniger AP diese Attacke hat, desto mehr Angriffskraft besitzt sie." + 'trumpCard': { + name: 'Trumpfkarte', + effect: 'Je weniger AP diese Attacke hat, desto mehr Angriffskraft besitzt sie.' }, - "healBlock": { - name: "Heilblockade", - effect: "Anwender verhindert für fünf Runden, dass Ziele durch Attacken, Fähigkeiten oder Items KP regenerieren." + 'healBlock': { + name: 'Heilblockade', + effect: 'Anwender verhindert für fünf Runden, dass Ziele durch Attacken, Fähigkeiten oder Items KP regenerieren.' }, - "wringOut": { - name: "Auswringen", - effect: "Anwender presst sein Ziel aus. Je höher die KP des Zieles, desto kraftvoller die Attacke." + 'wringOut': { + name: 'Auswringen', + effect: 'Anwender presst sein Ziel aus. Je höher die KP des Zieles, desto kraftvoller die Attacke.' }, - "powerTrick": { - name: "Krafttrick", - effect: "Anwender setzt Psycho-Kräfte ein, um eigenen Angriffs- mit Verteidigungs-Wert auszutauschen." + 'powerTrick': { + name: 'Krafttrick', + effect: 'Anwender setzt Psycho-Kräfte ein, um eigenen Angriffs- mit Verteidigungs-Wert auszutauschen.' }, - "gastroAcid": { - name: "Magensäfte", - effect: "Anwender greift das Ziel mit eigenen Magensäften an. Entfernt Effekte von dessen Fähigkeit." + 'gastroAcid': { + name: 'Magensäfte', + effect: 'Anwender greift das Ziel mit eigenen Magensäften an. Entfernt Effekte von dessen Fähigkeit.' }, - "luckyChant": { - name: "Beschwörung", - effect: "Anwender singt eine Beschwörungsformel, die Volltreffer gegen ihn verhindert." + 'luckyChant': { + name: 'Beschwörung', + effect: 'Anwender singt eine Beschwörungsformel, die Volltreffer gegen ihn verhindert.' }, - "meFirst": { - name: "Egotrip", - effect: "Anwender stiehlt und führt die Attacke eines langsameren Zieles zuerst und mit größerer Kraft aus." + 'meFirst': { + name: 'Egotrip', + effect: 'Anwender stiehlt und führt die Attacke eines langsameren Zieles zuerst und mit größerer Kraft aus.' }, - "copycat": { - name: "Imitator", - effect: "Anwender imitiert gerade verwendete Attacke. Dies schlägt fehl, falls zuvor keine Attacke verwendet wurde." + 'copycat': { + name: 'Imitator', + effect: 'Anwender imitiert gerade verwendete Attacke. Dies schlägt fehl, falls zuvor keine Attacke verwendet wurde.' }, - "powerSwap": { - name: "Krafttausch", - effect: "Psychische Kräfte tauschen Änderungen an Angriff und Spezial-Angriff mit denen des Zieles." + 'powerSwap': { + name: 'Krafttausch', + effect: 'Psychische Kräfte tauschen Änderungen an Angriff und Spezial-Angriff mit denen des Zieles.' }, - "guardSwap": { - name: "Schutztausch", - effect: "Psychische Kräfte tauschen Änderungen an Verteidigung und Spezial-Verteidigung mit denen des Zieles." + 'guardSwap': { + name: 'Schutztausch', + effect: 'Psychische Kräfte tauschen Änderungen an Verteidigung und Spezial-Verteidigung mit denen des Zieles.' }, - "punishment": { - name: "Strafattacke", - effect: "Je stärker das Ziel durch Statusveränderungen ist, desto stärker wirkt diese Attacke." + 'punishment': { + name: 'Strafattacke', + effect: 'Je stärker das Ziel durch Statusveränderungen ist, desto stärker wirkt diese Attacke.' }, - "lastResort": { - name: "Zuflucht", - effect: "Diese Attacke kann nur eingesetzt werden, nachdem alle verfügbaren Attacken ausgeführt worden sind." + 'lastResort': { + name: 'Zuflucht', + effect: 'Diese Attacke kann nur eingesetzt werden, nachdem alle verfügbaren Attacken ausgeführt worden sind.' }, - "worrySeed": { - name: "Sorgensamen", - effect: "Ziel wird bepflanzt. Wandelt Fähigkeit in Insomnia um. Verhindert so Schlaf." + 'worrySeed': { + name: 'Sorgensamen', + effect: 'Ziel wird bepflanzt. Wandelt Fähigkeit in Insomnia um. Verhindert so Schlaf.' }, - "suckerPunch": { - name: "Tiefschlag", - effect: "Ermöglicht den Erstschlag. Gelingt aber nur, wenn das Ziel gerade eine Attacke vorbereitet." + 'suckerPunch': { + name: 'Tiefschlag', + effect: 'Ermöglicht den Erstschlag. Gelingt aber nur, wenn das Ziel gerade eine Attacke vorbereitet.' }, - "toxicSpikes": { - name: "Giftspitzen", - effect: "Anwender legt eine Falle mit Giftdornen aus. In den Kampf eingewechselte gegnerische Pokémon werden vergiftet." + 'toxicSpikes': { + name: 'Giftspitzen', + effect: 'Anwender legt eine Falle mit Giftdornen aus. In den Kampf eingewechselte gegnerische Pokémon werden vergiftet.' }, - "heartSwap": { - name: "Statustausch", - effect: "Anwender setzt Psycho-Kräfte ein, um Statusveränderungen des Zieles mit den eigenen zu tauschen." + 'heartSwap': { + name: 'Statustausch', + effect: 'Anwender setzt Psycho-Kräfte ein, um Statusveränderungen des Zieles mit den eigenen zu tauschen.' }, - "aquaRing": { - name: "Wasserring", - effect: "Anwender umgibt sich mit einem Schleier aus Wasser. Dabei regeneriert er einige KP pro Runde." + 'aquaRing': { + name: 'Wasserring', + effect: 'Anwender umgibt sich mit einem Schleier aus Wasser. Dabei regeneriert er einige KP pro Runde.' }, - "magnetRise": { - name: "Magnetflug", - effect: "Anwender schwebt für fünf Runden durch elektrisch erzeugten Magnetismus." + 'magnetRise': { + name: 'Magnetflug', + effect: 'Anwender schwebt für fünf Runden durch elektrisch erzeugten Magnetismus.' }, - "flareBlitz": { - name: "Flammenblitz", - effect: "Anwender hüllt sich in Flammen und stürmt auf das Ziel zu, das sich eventuell verbrennt. Anwender nimmt selbst großen Schaden." + 'flareBlitz': { + name: 'Flammenblitz', + effect: 'Anwender hüllt sich in Flammen und stürmt auf das Ziel zu, das sich eventuell verbrennt. Anwender nimmt selbst großen Schaden.' }, - "forcePalm": { - name: "Kraftwelle", - effect: "Das Ziel wird mit einer Schockwelle angegriffen, die es eventuell paralysiert." + 'forcePalm': { + name: 'Kraftwelle', + effect: 'Das Ziel wird mit einer Schockwelle angegriffen, die es eventuell paralysiert.' }, - "auraSphere": { - name: "Aurasphäre", - effect: "Tief aus dem Inneren des Anwenders löst sich ein kraftvoller Stoß Auraenergie. Trifft in jedem Fall." + 'auraSphere': { + name: 'Aurasphäre', + effect: 'Tief aus dem Inneren des Anwenders löst sich ein kraftvoller Stoß Auraenergie. Trifft in jedem Fall.' }, - "rockPolish": { - name: "Steinpolitur", - effect: "Anwender reduziert so gut wie möglich den Luftwiderstand. Kann Initiative-Wert stark steigern." + 'rockPolish': { + name: 'Steinpolitur', + effect: 'Anwender reduziert so gut wie möglich den Luftwiderstand. Kann Initiative-Wert stark steigern.' }, - "poisonJab": { - name: "Gifthieb", - effect: "Ziel wird mit vergiftetem Arm oder Tentakel verletzt. Es wird dabei eventuell vergiftet." + 'poisonJab': { + name: 'Gifthieb', + effect: 'Ziel wird mit vergiftetem Arm oder Tentakel verletzt. Es wird dabei eventuell vergiftet.' }, - "darkPulse": { - name: "Finsteraura", - effect: "Anwender greift mit fürchterlicher Aura schlechter Gedanken an. Ziel schreckt eventuell zurück." + 'darkPulse': { + name: 'Finsteraura', + effect: 'Anwender greift mit fürchterlicher Aura schlechter Gedanken an. Ziel schreckt eventuell zurück.' }, - "nightSlash": { - name: "Nachthieb", - effect: "Anwender greift bei der ersten Gelegenheit mit scharfen Klauen an. Hohe Volltrefferquote." + 'nightSlash': { + name: 'Nachthieb', + effect: 'Anwender greift bei der ersten Gelegenheit mit scharfen Klauen an. Hohe Volltrefferquote.' }, - "aquaTail": { - name: "Nassschweif", - effect: "Anwender attackiert mit dem Schweif, als ob dieser eine brutale Welle in einem tosenden Sturm sei." + 'aquaTail': { + name: 'Nassschweif', + effect: 'Anwender attackiert mit dem Schweif, als ob dieser eine brutale Welle in einem tosenden Sturm sei.' }, - "seedBomb": { - name: "Samenbomben", - effect: "Anwender lässt eine Menge Samen mit harter Schale von oben auf das Ziel fallen." + 'seedBomb': { + name: 'Samenbomben', + effect: 'Anwender lässt eine Menge Samen mit harter Schale von oben auf das Ziel fallen.' }, - "airSlash": { - name: "Luftschnitt", - effect: "Das Ziel wird mit einer Luftklinge angegriffen. Ziel schreckt eventuell zurück." + 'airSlash': { + name: 'Luftschnitt', + effect: 'Das Ziel wird mit einer Luftklinge angegriffen. Ziel schreckt eventuell zurück.' }, - "xScissor": { - name: "Kreuzschere", - effect: "Der Anwender führt eine Attacke aus, die einer Scherenbewegung ähnelt." + 'xScissor': { + name: 'Kreuzschere', + effect: 'Der Anwender führt eine Attacke aus, die einer Scherenbewegung ähnelt.' }, - "bugBuzz": { - name: "Käfergebrumm", - effect: "Anwender schlägt mit den Flügeln und erzeugt eine Schockwelle. Senkt eventuell Spezial-Verteidigung des Zieles." + 'bugBuzz': { + name: 'Käfergebrumm', + effect: 'Anwender schlägt mit den Flügeln und erzeugt eine Schockwelle. Senkt eventuell Spezial-Verteidigung des Zieles.' }, - "dragonPulse": { - name: "Drachenpuls", - effect: "Das Ziel wird mit einer Schockwelle angegriffen, die aus dem offenen Maul des Anwenders kommt." + 'dragonPulse': { + name: 'Drachenpuls', + effect: 'Das Ziel wird mit einer Schockwelle angegriffen, die aus dem offenen Maul des Anwenders kommt.' }, - "dragonRush": { - name: "Drachenstoß", - effect: "Anwender führt einen gefährlichen Angriff aus. Das Ziel schreckt eventuell zurück." + 'dragonRush': { + name: 'Drachenstoß', + effect: 'Anwender führt einen gefährlichen Angriff aus. Das Ziel schreckt eventuell zurück.' }, - "powerGem": { - name: "Juwelenkraft", - effect: "Anwender attackiert mit einem Lichtstrahl, der funkelt, als sei er aus Juwelen." + 'powerGem': { + name: 'Juwelenkraft', + effect: 'Anwender attackiert mit einem Lichtstrahl, der funkelt, als sei er aus Juwelen.' }, - "drainPunch": { - name: "Ableithieb", - effect: "Entzieht dem Ziel Energie. Die Hälfte des Schadens wird den KP des Anwenders zugerechnet." + 'drainPunch': { + name: 'Ableithieb', + effect: 'Entzieht dem Ziel Energie. Die Hälfte des Schadens wird den KP des Anwenders zugerechnet.' }, - "vacuumWave": { - name: "Vakuumwelle", - effect: "Ein Faustwirbel sendet eine Vakuumwelle auf das Ziel. Erstschlaggarantie." + 'vacuumWave': { + name: 'Vakuumwelle', + effect: 'Ein Faustwirbel sendet eine Vakuumwelle auf das Ziel. Erstschlaggarantie.' }, - "focusBlast": { - name: "Fokusstoß", - effect: "Anwender erhöht seinen mentalen Fokus und greift dann an. Senkt eventuell Spezial-Verteidigung des Zieles." + 'focusBlast': { + name: 'Fokusstoß', + effect: 'Anwender erhöht seinen mentalen Fokus und greift dann an. Senkt eventuell Spezial-Verteidigung des Zieles.' }, - "energyBall": { - name: "Energieball", - effect: "Anwender zieht Kraft aus der Natur und feuert sie auf das Ziel. Senkt eventuell Spezial-Verteidigung des Zieles." + 'energyBall': { + name: 'Energieball', + effect: 'Anwender zieht Kraft aus der Natur und feuert sie auf das Ziel. Senkt eventuell Spezial-Verteidigung des Zieles.' }, - "braveBird": { - name: "Sturzflug", - effect: "Anwender greift aus niedriger Höhe an. Er erleidet bei dieser Attacke selbst großen Schaden." + 'braveBird': { + name: 'Sturzflug', + effect: 'Anwender greift aus niedriger Höhe an. Er erleidet bei dieser Attacke selbst großen Schaden.' }, - "earthPower": { - name: "Erdkräfte", - effect: "Der Boden unter dem Ziel erzittert durch die Kraft der Erde. Senkt eventuell Spezial-Verteidigung." + 'earthPower': { + name: 'Erdkräfte', + effect: 'Der Boden unter dem Ziel erzittert durch die Kraft der Erde. Senkt eventuell Spezial-Verteidigung.' }, - "switcheroo": { - name: "Wechseldich", - effect: "Item wird in Windeseile mit dem Ziel getauscht." + 'switcheroo': { + name: 'Wechseldich', + effect: 'Item wird in Windeseile mit dem Ziel getauscht.' }, - "gigaImpact": { - name: "Gigastoß", - effect: "Anwender rennt mit seiner ganzen Kraft gegen das Ziel an und muss dann eine Runde ruhen." + 'gigaImpact': { + name: 'Gigastoß', + effect: 'Anwender rennt mit seiner ganzen Kraft gegen das Ziel an und muss dann eine Runde ruhen.' }, - "nastyPlot": { - name: "Ränkeschmied", - effect: "Anwender stimuliert sein Gehirn und hat finstere Gedanken. Steigert Spezial-Angriff stark." + 'nastyPlot': { + name: 'Ränkeschmied', + effect: 'Anwender stimuliert sein Gehirn und hat finstere Gedanken. Steigert Spezial-Angriff stark.' }, - "bulletPunch": { - name: "Patronenhieb", - effect: "Das Ziel wird von ultraschnellen Hieben getroffen. Erstschlaggarantie." + 'bulletPunch': { + name: 'Patronenhieb', + effect: 'Das Ziel wird von ultraschnellen Hieben getroffen. Erstschlaggarantie.' }, - "avalanche": { - name: "Lawine", - effect: "Wurde der Anwender in dieser Runde vom Ziel getroffen, macht diese Attacke doppelten Schaden." + 'avalanche': { + name: 'Lawine', + effect: 'Wurde der Anwender in dieser Runde vom Ziel getroffen, macht diese Attacke doppelten Schaden.' }, - "iceShard": { - name: "Eissplitter", - effect: "Das Ziel wird mit Eisklumpen beworfen. Diese Attacke hat Erstschlaggarantie." + 'iceShard': { + name: 'Eissplitter', + effect: 'Das Ziel wird mit Eisklumpen beworfen. Diese Attacke hat Erstschlaggarantie.' }, - "shadowClaw": { - name: "Dunkelklaue", - effect: "Das Ziel wird mit scharfen Klauen aus der Schattenwelt attackiert. Hohe Volltrefferquote." + 'shadowClaw': { + name: 'Dunkelklaue', + effect: 'Das Ziel wird mit scharfen Klauen aus der Schattenwelt attackiert. Hohe Volltrefferquote.' }, - "thunderFang": { - name: "Donnerzahn", - effect: "Anwender beißt mit elektrifizierten Reißzähnen zu. Das Ziel schreckt eventuell zurück oder wird paralysiert." + 'thunderFang': { + name: 'Donnerzahn', + effect: 'Anwender beißt mit elektrifizierten Reißzähnen zu. Das Ziel schreckt eventuell zurück oder wird paralysiert.' }, - "iceFang": { - name: "Eiszahn", - effect: "Anwender beißt mit eiskalten Reißzähnen zu. Ziel schreckt eventuell zurück oder friert ein." + 'iceFang': { + name: 'Eiszahn', + effect: 'Anwender beißt mit eiskalten Reißzähnen zu. Ziel schreckt eventuell zurück oder friert ein.' }, - "fireFang": { - name: "Feuerzahn", - effect: "Anwender beißt mit flammenden Reißzähnen zu. Ziel schreckt eventuell zurück oder verbrennt sich." + 'fireFang': { + name: 'Feuerzahn', + effect: 'Anwender beißt mit flammenden Reißzähnen zu. Ziel schreckt eventuell zurück oder verbrennt sich.' }, - "shadowSneak": { - name: "Schattenstoß", - effect: "Anwender erweitert Schatten und greift das Ziel von hinten an. Erstschlaggarantie." + 'shadowSneak': { + name: 'Schattenstoß', + effect: 'Anwender erweitert Schatten und greift das Ziel von hinten an. Erstschlaggarantie.' }, - "mudBomb": { - name: "Schlammbombe", - effect: "Anwender greift mit einem festen Schlammklumpen an. Senkt eventuell Genauigkeit des Zieles." + 'mudBomb': { + name: 'Schlammbombe', + effect: 'Anwender greift mit einem festen Schlammklumpen an. Senkt eventuell Genauigkeit des Zieles.' }, - "psychoCut": { - name: "Psychoklinge", - effect: "Das Ziel wird mit Klingen attackiert, die aus Psycho-Energie bestehen. Hohe Volltrefferquote." + 'psychoCut': { + name: 'Psychoklinge', + effect: 'Das Ziel wird mit Klingen attackiert, die aus Psycho-Energie bestehen. Hohe Volltrefferquote.' }, - "zenHeadbutt": { - name: "Zen-Kopfstoß", - effect: "Anwender konzentriert seinen Willen und rammt das Ziel. Dieses schreckt eventuell zurück." + 'zenHeadbutt': { + name: 'Zen-Kopfstoß', + effect: 'Anwender konzentriert seinen Willen und rammt das Ziel. Dieses schreckt eventuell zurück.' }, - "mirrorShot": { - name: "Spiegelsalve", - effect: "Anwender feuert Energiestrahl aus seinem Körper ab. Senkt eventuell Genauigkeit des Zieles." + 'mirrorShot': { + name: 'Spiegelsalve', + effect: 'Anwender feuert Energiestrahl aus seinem Körper ab. Senkt eventuell Genauigkeit des Zieles.' }, - "flashCannon": { - name: "Lichtkanone", - effect: "Anwender sammelt Lichtenergie und feuert sie auf einmal ab. Senkt eventuell Spezial-Verteidigung des Zieles." + 'flashCannon': { + name: 'Lichtkanone', + effect: 'Anwender sammelt Lichtenergie und feuert sie auf einmal ab. Senkt eventuell Spezial-Verteidigung des Zieles.' }, - "rockClimb": { - name: "Kraxler", - effect: "Eine stürmische Attacke, die das Ziel eventuell verwirrt." + 'rockClimb': { + name: 'Kraxler', + effect: 'Eine stürmische Attacke, die das Ziel eventuell verwirrt.' }, - "defog": { - name: "Auflockern", - effect: "Starker Wind hebt Attacken wie Reflektor und Lichtschild des Zieles auf. Senkt außerdem den Fluchtwert." + 'defog': { + name: 'Auflockern', + effect: 'Starker Wind hebt Attacken wie Reflektor und Lichtschild des Zieles auf. Senkt außerdem den Fluchtwert.' }, - "trickRoom": { - name: "Bizarroraum", - effect: "Anwender erzeugt einen bizarren Raum, in dem langsame Pokémon fünf Runden lang zuerst agieren." + 'trickRoom': { + name: 'Bizarroraum', + effect: 'Anwender erzeugt einen bizarren Raum, in dem langsame Pokémon fünf Runden lang zuerst agieren.' }, - "dracoMeteor": { - name: "Draco Meteor", - effect: "Kometen werden heraufbeschworen. Der Rückstoß reduziert den Spezial-Angriff des Anwenders stark." + 'dracoMeteor': { + name: 'Draco Meteor', + effect: 'Kometen werden heraufbeschworen. Der Rückstoß reduziert den Spezial-Angriff des Anwenders stark.' }, - "discharge": { - name: "Ladungsstoß", - effect: "Anwender greift alle Pokémon im Umkreis mit Elektrizität an. Diese werden eventuell auch paralysiert." + 'discharge': { + name: 'Ladungsstoß', + effect: 'Anwender greift alle Pokémon im Umkreis mit Elektrizität an. Diese werden eventuell auch paralysiert.' }, - "lavaPlume": { - name: "Flammensturm", - effect: "Greift alles in seiner Umgebung mit tiefroten Flammen an. Ziel kann Verbrennungen erleiden." + 'lavaPlume': { + name: 'Flammensturm', + effect: 'Greift alles in seiner Umgebung mit tiefroten Flammen an. Ziel kann Verbrennungen erleiden.' }, - "leafStorm": { - name: "Blättersturm", - effect: "Anwender erzeugt einen Sturm aus scharfen Blättern. Rückstoß senkt Spezial-Angriff des Anwenders stark." + 'leafStorm': { + name: 'Blättersturm', + effect: 'Anwender erzeugt einen Sturm aus scharfen Blättern. Rückstoß senkt Spezial-Angriff des Anwenders stark.' }, - "powerWhip": { - name: "Blattgeißel", - effect: "Anwender wirbelt seine Ranken oder Tentakel peitschenartig gegen das Ziel." + 'powerWhip': { + name: 'Blattgeißel', + effect: 'Anwender wirbelt seine Ranken oder Tentakel peitschenartig gegen das Ziel.' }, - "rockWrecker": { - name: "Felswerfer", - effect: "Anwender wirft einen riesigen Felsen auf das Ziel. In der nächsten Runde muss der Anwender ruhen." + 'rockWrecker': { + name: 'Felswerfer', + effect: 'Anwender wirft einen riesigen Felsen auf das Ziel. In der nächsten Runde muss der Anwender ruhen.' }, - "crossPoison": { - name: "Giftstreich", - effect: "Ein schneidender Hieb, der das Ziel eventuell vergiftet. Hat eine hohe Volltrefferquote." + 'crossPoison': { + name: 'Giftstreich', + effect: 'Ein schneidender Hieb, der das Ziel eventuell vergiftet. Hat eine hohe Volltrefferquote.' }, - "gunkShot": { - name: "Mülltreffer", - effect: "Anwender schießt mit Müll auf das Ziel. Vergiftet dieses eventuell." + 'gunkShot': { + name: 'Mülltreffer', + effect: 'Anwender schießt mit Müll auf das Ziel. Vergiftet dieses eventuell.' }, - "ironHead": { - name: "Eisenschädel", - effect: "Ziel wird durch stahlharten Kopf des Anwenders getroffen und schreckt eventuell zurück." + 'ironHead': { + name: 'Eisenschädel', + effect: 'Ziel wird durch stahlharten Kopf des Anwenders getroffen und schreckt eventuell zurück.' }, - "magnetBomb": { - name: "Magnetbombe", - effect: "Ziel wird durch Haftbomben getroffen. Diese Attacke trifft immer." + 'magnetBomb': { + name: 'Magnetbombe', + effect: 'Ziel wird durch Haftbomben getroffen. Diese Attacke trifft immer.' }, - "stoneEdge": { - name: "Steinkante", - effect: "Anwender sticht das Ziel mit spitzen Steinen. Hohe Volltrefferquote." + 'stoneEdge': { + name: 'Steinkante', + effect: 'Anwender sticht das Ziel mit spitzen Steinen. Hohe Volltrefferquote.' }, - "captivate": { - name: "Liebreiz", - effect: "Charme-Attacke, die den Spezial-Angriff des Zieles stark senkt, falls es dem anderen Geschlecht angehört." + 'captivate': { + name: 'Liebreiz', + effect: 'Charme-Attacke, die den Spezial-Angriff des Zieles stark senkt, falls es dem anderen Geschlecht angehört.' }, - "stealthRock": { - name: "Tarnsteine", - effect: "Falle mit schwebenden Steinen. In den Kampf eingewechselte Ziele nehmen Schaden." + 'stealthRock': { + name: 'Tarnsteine', + effect: 'Falle mit schwebenden Steinen. In den Kampf eingewechselte Ziele nehmen Schaden.' }, - "grassKnot": { - name: "Strauchler", - effect: "Ziel wird durch Gras ins Straucheln gebracht. Je schwerer das Ziel, desto mehr Schaden." + 'grassKnot': { + name: 'Strauchler', + effect: 'Ziel wird durch Gras ins Straucheln gebracht. Je schwerer das Ziel, desto mehr Schaden.' }, - "chatter": { - name: "Geschwätz", - effect: "Attacke mit Schallwellen. Verwirrt das Ziel." + 'chatter': { + name: 'Geschwätz', + effect: 'Attacke mit Schallwellen. Verwirrt das Ziel.' }, - "judgment": { - name: "Urteilskraft", - effect: "Anwender feuert unzählige Lichtstrahlen ab. Deren Typ hängt von der gehaltenen Tafel ab." + 'judgment': { + name: 'Urteilskraft', + effect: 'Anwender feuert unzählige Lichtstrahlen ab. Deren Typ hängt von der gehaltenen Tafel ab.' }, - "bugBite": { - name: "Käferbiss", - effect: "Anwender beißt das Ziel. Trägt dieses eine Beere, isst der Anwender sie und erhält ihren Effekt." + 'bugBite': { + name: 'Käferbiss', + effect: 'Anwender beißt das Ziel. Trägt dieses eine Beere, isst der Anwender sie und erhält ihren Effekt.' }, - "chargeBeam": { - name: "Ladestrahl", - effect: "Ziel wird von einem Elektrostrahl getroffen. Steigert eventuell Spezial-Angriff des Anwenders." + 'chargeBeam': { + name: 'Ladestrahl', + effect: 'Ziel wird von einem Elektrostrahl getroffen. Steigert eventuell Spezial-Angriff des Anwenders.' }, - "woodHammer": { - name: "Holzhammer", - effect: "Anwender attackiert mit seinem robusten Körper. Er erleidet dabei auch selbst großen Schaden." + 'woodHammer': { + name: 'Holzhammer', + effect: 'Anwender attackiert mit seinem robusten Körper. Er erleidet dabei auch selbst großen Schaden.' }, - "aquaJet": { - name: "Wasserdüse", - effect: "Bei dieser Erstschlag-Attacke stürzt sich der Anwender so schnell auf das Ziel, dass er quasi unsichtbar wird." + 'aquaJet': { + name: 'Wasserdüse', + effect: 'Bei dieser Erstschlag-Attacke stürzt sich der Anwender so schnell auf das Ziel, dass er quasi unsichtbar wird.' }, - "attackOrder": { - name: "Schlagbefehl", - effect: "Anwender ruft seine Untergebenen zum Angriff. Hat eine hohe Volltrefferquote." + 'attackOrder': { + name: 'Schlagbefehl', + effect: 'Anwender ruft seine Untergebenen zum Angriff. Hat eine hohe Volltrefferquote.' }, - "defendOrder": { - name: "Blockbefehl", - effect: "Untergebene bilden einen lebenden Schild um den Anwender. Steigert Verteidigung und Spezial-Verteidigung." + 'defendOrder': { + name: 'Blockbefehl', + effect: 'Untergebene bilden einen lebenden Schild um den Anwender. Steigert Verteidigung und Spezial-Verteidigung.' }, - "healOrder": { - name: "Heilbefehl", - effect: "Untergebene heilen den Anwender. KP des Anwenders werden um 50 % der maximalen KP aufgefüllt." + 'healOrder': { + name: 'Heilbefehl', + effect: 'Untergebene heilen den Anwender. KP des Anwenders werden um 50 % der maximalen KP aufgefüllt.' }, - "headSmash": { - name: "Kopfstoß", - effect: "Anwender greift unter Einsatz seines Lebens mit einem Kopfstoß an und nimmt dabei selbst jede Menge Schaden." + 'headSmash': { + name: 'Kopfstoß', + effect: 'Anwender greift unter Einsatz seines Lebens mit einem Kopfstoß an und nimmt dabei selbst jede Menge Schaden.' }, - "doubleHit": { - name: "Doppelschlag", - effect: "Anwender trifft das Ziel mit dem Schweif oder Ähnlichem. Ziel wird doppelt getroffen." + 'doubleHit': { + name: 'Doppelschlag', + effect: 'Anwender trifft das Ziel mit dem Schweif oder Ähnlichem. Ziel wird doppelt getroffen.' }, - "roarOfTime": { - name: "Zeitenlärm", - effect: "Anwender attackiert mit einer Kraft, die selbst die Zeit verzerrt. In der nächsten Runde muss er ruhen." + 'roarOfTime': { + name: 'Zeitenlärm', + effect: 'Anwender attackiert mit einer Kraft, die selbst die Zeit verzerrt. In der nächsten Runde muss er ruhen.' }, - "spacialRend": { - name: "Raumschlag", - effect: "Schwere, raumgreifende Attacke. Hohe Volltrefferquote." + 'spacialRend': { + name: 'Raumschlag', + effect: 'Schwere, raumgreifende Attacke. Hohe Volltrefferquote.' }, - "lunarDance": { - name: "Lunartanz", - effect: "Anwender geht K.O. Das an seine Stelle tretende Pokémon hat dafür volle KP und AP. Statusprobleme werden geheilt." + 'lunarDance': { + name: 'Lunartanz', + effect: 'Anwender geht K.O. Das an seine Stelle tretende Pokémon hat dafür volle KP und AP. Statusprobleme werden geheilt.' }, - "crushGrip": { - name: "Quetschgriff", - effect: "Ziel wird mit großer Kraft getroffen. Je höher die KP des Zieles, desto stärker die Attacke." + 'crushGrip': { + name: 'Quetschgriff', + effect: 'Ziel wird mit großer Kraft getroffen. Je höher die KP des Zieles, desto stärker die Attacke.' }, - "magmaStorm": { - name: "Lavasturm", - effect: "Das Ziel wird in einen Feuersog gezogen, der vier bis fünf Runden aktiv ist." + 'magmaStorm': { + name: 'Lavasturm', + effect: 'Das Ziel wird in einen Feuersog gezogen, der vier bis fünf Runden aktiv ist.' }, - "darkVoid": { - name: "Schlummerort", - effect: "Das Ziel wird in eine Welt der Dunkelheit gezogen und in Schlaf versetzt." + 'darkVoid': { + name: 'Schlummerort', + effect: 'Das Ziel wird in eine Welt der Dunkelheit gezogen und in Schlaf versetzt.' }, - "seedFlare": { - name: "Schocksamen", - effect: "Anwender erzeugt eine Schockwelle. Spezial-Verteidigung des Zieles wird stark gesenkt." + 'seedFlare': { + name: 'Schocksamen', + effect: 'Anwender erzeugt eine Schockwelle. Spezial-Verteidigung des Zieles wird stark gesenkt.' }, - "ominousWind": { - name: "Unheilböen", - effect: "Das Ziel treffen abscheuliche Winde. Steigert eventuell alle Statuswerte des Anwenders." + 'ominousWind': { + name: 'Unheilböen', + effect: 'Das Ziel treffen abscheuliche Winde. Steigert eventuell alle Statuswerte des Anwenders.' }, - "shadowForce": { - name: "Schemenkraft", - effect: "Anwender verschwindet in Runde 1 und attackiert in Runde 2. Trifft auch, wenn sich das Ziel selbst schützt." + 'shadowForce': { + name: 'Schemenkraft', + effect: 'Anwender verschwindet in Runde 1 und attackiert in Runde 2. Trifft auch, wenn sich das Ziel selbst schützt.' }, - "honeClaws": { - name: "Klauenwetzer", - effect: "Wetzt seine Klauen, um sie zu schärfen. Erhöht Angriff und Genauigkeit des Anwenders." + 'honeClaws': { + name: 'Klauenwetzer', + effect: 'Wetzt seine Klauen, um sie zu schärfen. Erhöht Angriff und Genauigkeit des Anwenders.' }, - "wideGuard": { - name: "Rundumschutz", - effect: "Schützt eine Runde lang vor Angriffen, die alle Pokémon auf deiner Seite treffen." + 'wideGuard': { + name: 'Rundumschutz', + effect: 'Schützt eine Runde lang vor Angriffen, die alle Pokémon auf deiner Seite treffen.' }, - "guardSplit": { - name: "Schutzteiler", - effect: "Durch Psycho-Kräfte werden Verteidigung und Spezial-Verteidigung des Anwenders und des Zieles addiert und in zwei gleiche Hälften geteilt." + 'guardSplit': { + name: 'Schutzteiler', + effect: 'Durch Psycho-Kräfte werden Verteidigung und Spezial-Verteidigung des Anwenders und des Zieles addiert und in zwei gleiche Hälften geteilt.' }, - "powerSplit": { - name: "Kraftteiler", - effect: "Durch Psycho-Kräfte werden Angriff und Spezial-Angriff des Anwenders und des Zieles addiert und in zwei gleiche Hälften geteilt." + 'powerSplit': { + name: 'Kraftteiler', + effect: 'Durch Psycho-Kräfte werden Angriff und Spezial-Angriff des Anwenders und des Zieles addiert und in zwei gleiche Hälften geteilt.' }, - "wonderRoom": { - name: "Wunderraum", - effect: "Anwender erzeugt bizarren Raum, in dem über fünf Runden die Verteidigung aller Pokémon mit ihrer Spezial-Verteidigung getauscht wird." + 'wonderRoom': { + name: 'Wunderraum', + effect: 'Anwender erzeugt bizarren Raum, in dem über fünf Runden die Verteidigung aller Pokémon mit ihrer Spezial-Verteidigung getauscht wird.' }, - "psyshock": { - name: "Psychoschock", - effect: "Anwender erzeugt eine seltsame Energiewelle, die dem Ziel physischen Schaden zufügt." + 'psyshock': { + name: 'Psychoschock', + effect: 'Anwender erzeugt eine seltsame Energiewelle, die dem Ziel physischen Schaden zufügt.' }, - "venoshock": { - name: "Giftschock", - effect: "Überschüttet das Ziel mit einer speziellen toxischen Flüssigkeit. Doppelt so stark gegen vergiftete Ziele." + 'venoshock': { + name: 'Giftschock', + effect: 'Überschüttet das Ziel mit einer speziellen toxischen Flüssigkeit. Doppelt so stark gegen vergiftete Ziele.' }, - "autotomize": { - name: "Autotomie", - effect: "Anwender trennt sich von überflüssigen Körperteilen und steigert seine Initiative stark. Sein Gewicht nimmt deutlich ab." + 'autotomize': { + name: 'Autotomie', + effect: 'Anwender trennt sich von überflüssigen Körperteilen und steigert seine Initiative stark. Sein Gewicht nimmt deutlich ab.' }, - "ragePowder": { - name: "Wutpulver", - effect: "Anwender zieht gegnerische Aufmerksamkeit und Angriffe auf sich, indem er ein Wut erzeugendes Pulver über sich streut." + 'ragePowder': { + name: 'Wutpulver', + effect: 'Anwender zieht gegnerische Aufmerksamkeit und Angriffe auf sich, indem er ein Wut erzeugendes Pulver über sich streut.' }, - "telekinesis": { - name: "Telekinese", - effect: "Bringt das Ziel durch Psycho-Kräfte zum Schweben. Dieses lässt sich so über drei Runden hinweg besonders leicht treffen." + 'telekinesis': { + name: 'Telekinese', + effect: 'Bringt das Ziel durch Psycho-Kräfte zum Schweben. Dieses lässt sich so über drei Runden hinweg besonders leicht treffen.' }, - "magicRoom": { - name: "Magieraum", - effect: "Anwender erzeugt einen bizarren Raum, in dem über fünf Runden die Wirkung aller von Pokémon getragenen Items aufgehoben ist." + 'magicRoom': { + name: 'Magieraum', + effect: 'Anwender erzeugt einen bizarren Raum, in dem über fünf Runden die Wirkung aller von Pokémon getragenen Items aufgehoben ist.' }, - "smackDown": { - name: "Katapult", - effect: "Greift das Ziel mit Steinen und Wurfgeschossen an. Fliegende Ziele fallen dabei vom Himmel und landen auf dem Boden." + 'smackDown': { + name: 'Katapult', + effect: 'Greift das Ziel mit Steinen und Wurfgeschossen an. Fliegende Ziele fallen dabei vom Himmel und landen auf dem Boden.' }, - "stormThrow": { - name: "Bergsturm", - effect: "Ein Angriff mit voller Wucht und Volltreffergarantie." + 'stormThrow': { + name: 'Bergsturm', + effect: 'Ein Angriff mit voller Wucht und Volltreffergarantie.' }, - "flameBurst": { - name: "Funkenflug", - effect: "Bei Erfolg greift der Anwender mit berstenden Feuerblasen an. Die Funken der geplatzten Blasen treffen auch benachbarte Ziele." + 'flameBurst': { + name: 'Funkenflug', + effect: 'Bei Erfolg greift der Anwender mit berstenden Feuerblasen an. Die Funken der geplatzten Blasen treffen auch benachbarte Ziele.' }, - "sludgeWave": { - name: "Schlammwoge", - effect: "Greift Pokémon in der Nähe des Anwenders mit einer Schlammwelle an. Diese werden eventuell vergiftet." + 'sludgeWave': { + name: 'Schlammwoge', + effect: 'Greift Pokémon in der Nähe des Anwenders mit einer Schlammwelle an. Diese werden eventuell vergiftet.' }, - "quiverDance": { - name: "Falterreigen", - effect: "Anwender legt behände einen mystischen, formvollendeten Tanz aufs Parkett. Spezial-Angriff, Spezial-Verteidigung und Initiative steigen." + 'quiverDance': { + name: 'Falterreigen', + effect: 'Anwender legt behände einen mystischen, formvollendeten Tanz aufs Parkett. Spezial-Angriff, Spezial-Verteidigung und Initiative steigen.' }, - "heavySlam": { - name: "Rammboss", - effect: "Anwender rammt das Ziel mit massivem Körper. Je schwerer er im Vergleich zum Ziel ist, desto stärker die Attacke." + 'heavySlam': { + name: 'Rammboss', + effect: 'Anwender rammt das Ziel mit massivem Körper. Je schwerer er im Vergleich zum Ziel ist, desto stärker die Attacke.' }, - "synchronoise": { - name: "Synchrolärm", - effect: "Fügt Pokémon vom selben Typ, die sich in der Nähe des Anwenders aufhalten, mit seltsamen Druckwellen Schaden zu." + 'synchronoise': { + name: 'Synchrolärm', + effect: 'Fügt Pokémon vom selben Typ, die sich in der Nähe des Anwenders aufhalten, mit seltsamen Druckwellen Schaden zu.' }, - "electroBall": { - name: "Elektroball", - effect: "Je höher die Initiative des Anwenders im Vergleich zum Ziel ist, desto stärker trifft dieses eine geballte Ladung Strom." + 'electroBall': { + name: 'Elektroball', + effect: 'Je höher die Initiative des Anwenders im Vergleich zum Ziel ist, desto stärker trifft dieses eine geballte Ladung Strom.' }, - "soak": { - name: "Überflutung", - effect: "Überschüttet das Ziel mit Unmengen an Wasser und ändert den Typ damit in Wasser um." + 'soak': { + name: 'Überflutung', + effect: 'Überschüttet das Ziel mit Unmengen an Wasser und ändert den Typ damit in Wasser um.' }, - "flameCharge": { - name: "Nitroladung", - effect: "Anwender hüllt sich in Flammen und greift das Ziel an. Sammelt seine Energie und erhöht dadurch die eigene Initiative." + 'flameCharge': { + name: 'Nitroladung', + effect: 'Anwender hüllt sich in Flammen und greift das Ziel an. Sammelt seine Energie und erhöht dadurch die eigene Initiative.' }, - "coil": { - name: "Einrollen", - effect: "Anwender rollt sich zusammen und sammelt sich. Dabei werden Angriff, Verteidigung und Genauigkeit erhöht." + 'coil': { + name: 'Einrollen', + effect: 'Anwender rollt sich zusammen und sammelt sich. Dabei werden Angriff, Verteidigung und Genauigkeit erhöht.' }, - "lowSweep": { - name: "Fußtritt", - effect: "Anwender greift mit blitzschnellen Bewegungen die Beine des Zieles an und senkt dessen Initiative." + 'lowSweep': { + name: 'Fußtritt', + effect: 'Anwender greift mit blitzschnellen Bewegungen die Beine des Zieles an und senkt dessen Initiative.' }, - "acidSpray": { - name: "Säurespeier", - effect: "Anwender greift an, indem er eine ätzende Flüssigkeit auf das Ziel speit. Senkt dessen Spezial-Verteidigung stark." + 'acidSpray': { + name: 'Säurespeier', + effect: 'Anwender greift an, indem er eine ätzende Flüssigkeit auf das Ziel speit. Senkt dessen Spezial-Verteidigung stark.' }, - "foulPlay": { - name: "Schmarotzer", - effect: "Anwender macht sich die Kraft des Zieles zunutze. Je höher dessen Angriff, desto mehr Schaden richtet die Attacke an." + 'foulPlay': { + name: 'Schmarotzer', + effect: 'Anwender macht sich die Kraft des Zieles zunutze. Je höher dessen Angriff, desto mehr Schaden richtet die Attacke an.' }, - "simpleBeam": { - name: "Wankelstrahl", - effect: "Bestrahlt das Ziel mit mysteriösen Energiewellen. Bei einem Treffer wird dessen Fähigkeit zu Wankelmut." + 'simpleBeam': { + name: 'Wankelstrahl', + effect: 'Bestrahlt das Ziel mit mysteriösen Energiewellen. Bei einem Treffer wird dessen Fähigkeit zu Wankelmut.' }, - "entrainment": { - name: "Zwango", - effect: "Anwender tanzt zu einem seltsamem Rhythmus und zwingt das Ziel mitzumachen. Dieses nimmt dabei die Fähigkeit des Anwenders an." + 'entrainment': { + name: 'Zwango', + effect: 'Anwender tanzt zu einem seltsamem Rhythmus und zwingt das Ziel mitzumachen. Dieses nimmt dabei die Fähigkeit des Anwenders an.' }, - "afterYou": { - name: "Galanterie", - effect: "Anwender ermöglicht dem Ziel direkt nach ihm zu handeln, solange der Anwender als Erstes zum Zug kommt." + 'afterYou': { + name: 'Galanterie', + effect: 'Anwender ermöglicht dem Ziel direkt nach ihm zu handeln, solange der Anwender als Erstes zum Zug kommt.' }, - "round": { - name: "Kanon", - effect: "Angriff mit Gesang. Singt der Anwender mit allen im Kanon, steigt die Stärke." + 'round': { + name: 'Kanon', + effect: 'Angriff mit Gesang. Singt der Anwender mit allen im Kanon, steigt die Stärke.' }, - "echoedVoice": { - name: "Widerhall", - effect: "Angriff mit widerhallender Stimme. Wenn in jeder Runde ein Teilnehmer wiederholt die Attacke einsetzt, steigt die Stärke." + 'echoedVoice': { + name: 'Widerhall', + effect: 'Angriff mit widerhallender Stimme. Wenn in jeder Runde ein Teilnehmer wiederholt die Attacke einsetzt, steigt die Stärke.' }, - "chipAway": { - name: "Zermürben", - effect: "Eine durchdachte Attacke zu rechter Zeit. Richtet unabhängig von den Statusveränderungen des Zieles Schaden an." + 'chipAway': { + name: 'Zermürben', + effect: 'Eine durchdachte Attacke zu rechter Zeit. Richtet unabhängig von den Statusveränderungen des Zieles Schaden an.' }, - "clearSmog": { - name: "Klärsmog", - effect: "Anwender greift das Ziel mit spezialgefertigten Schlammklumpen an. Setzt Statusveränderungen zurück." + 'clearSmog': { + name: 'Klärsmog', + effect: 'Anwender greift das Ziel mit spezialgefertigten Schlammklumpen an. Setzt Statusveränderungen zurück.' }, - "storedPower": { - name: "Kraftvorrat", - effect: "Angriff mit angesparter Energie. Je höher die Statuswerte des Anwenders, desto stärker fällt die Attacke aus." + 'storedPower': { + name: 'Kraftvorrat', + effect: 'Angriff mit angesparter Energie. Je höher die Statuswerte des Anwenders, desto stärker fällt die Attacke aus.' }, - "quickGuard": { - name: "Rapidschutz", - effect: "Schützt Anwender und Mitstreiter vor gegnerischen Erstschlag-Attacken." + 'quickGuard': { + name: 'Rapidschutz', + effect: 'Schützt Anwender und Mitstreiter vor gegnerischen Erstschlag-Attacken.' }, - "allySwitch": { - name: "Seitentausch", - effect: "Wundersame Kräfte teleportieren den Anwender an den Platz eines Mitstreiters." + 'allySwitch': { + name: 'Seitentausch', + effect: 'Wundersame Kräfte teleportieren den Anwender an den Platz eines Mitstreiters.' }, - "scald": { - name: "Siedewasser", - effect: "Heizt dem Ziel mit einem Schwall siedend heißen Kochwassers ein. Das Ziel erleidet dabei eventuell Verbrennungen." + 'scald': { + name: 'Siedewasser', + effect: 'Heizt dem Ziel mit einem Schwall siedend heißen Kochwassers ein. Das Ziel erleidet dabei eventuell Verbrennungen.' }, - "shellSmash": { - name: "Hausbruch", - effect: "Anwender zerbricht seine Schale und senkt seine Verteidigung und Spezial-Verteidigung, aber dafür steigen Angriff, Spezial-Angriff und Initiative stark." + 'shellSmash': { + name: 'Hausbruch', + effect: 'Anwender zerbricht seine Schale und senkt seine Verteidigung und Spezial-Verteidigung, aber dafür steigen Angriff, Spezial-Angriff und Initiative stark.' }, - "healPulse": { - name: "Heilwoge", - effect: "Anwender löst eine Schmerzen lindernde Welle aus und heilt dabei das Ziel mit der Hälfte seiner maximalen KP." + 'healPulse': { + name: 'Heilwoge', + effect: 'Anwender löst eine Schmerzen lindernde Welle aus und heilt dabei das Ziel mit der Hälfte seiner maximalen KP.' }, - "hex": { - name: "Bürde", - effect: "Eine Attacke, bei der der Anwender das Ziel bedrängt. Fügt Zielen mit Statusproblemen hohen Schaden zu." + 'hex': { + name: 'Bürde', + effect: 'Eine Attacke, bei der der Anwender das Ziel bedrängt. Fügt Zielen mit Statusproblemen hohen Schaden zu.' }, - "skyDrop": { - name: "Freier Fall", - effect: "Steigt in Runde 1 mit dem Ziel in die Luft auf und lässt es in Runde 2 fallen. Das Ziel kann dabei nicht angreifen." + 'skyDrop': { + name: 'Freier Fall', + effect: 'Steigt in Runde 1 mit dem Ziel in die Luft auf und lässt es in Runde 2 fallen. Das Ziel kann dabei nicht angreifen.' }, - "shiftGear": { - name: "Gangwechsel", - effect: "Durch Drehen der Zahnräder erhöht sich nicht nur der Angriffs-Wert, sondern auch die Initiative des Anwenders stark." + 'shiftGear': { + name: 'Gangwechsel', + effect: 'Durch Drehen der Zahnräder erhöht sich nicht nur der Angriffs-Wert, sondern auch die Initiative des Anwenders stark.' }, - "circleThrow": { - name: "Überkopfwurf", - effect: "Schleudert das Ziel davon und bewirkt damit, dass ein anderes Pokémon eingewechselt wird. Beendet Kämpfe gegen wilde Pokémon." + 'circleThrow': { + name: 'Überkopfwurf', + effect: 'Schleudert das Ziel davon und bewirkt damit, dass ein anderes Pokémon eingewechselt wird. Beendet Kämpfe gegen wilde Pokémon.' }, - "incinerate": { - name: "Einäschern", - effect: "Eine Feuer-Attacke. Trägt das Ziel eine Beere oder ein ähnliches Item bei sich, wird dieses von den Flammen verzehrt und geht verloren." + 'incinerate': { + name: 'Einäschern', + effect: 'Eine Feuer-Attacke. Trägt das Ziel eine Beere oder ein ähnliches Item bei sich, wird dieses von den Flammen verzehrt und geht verloren.' }, - "quash": { - name: "Verzögerung", - effect: "Anwender stemmt sich gegen das Ziel und bewirkt, dass dieses erst als Letztes angreift." + 'quash': { + name: 'Verzögerung', + effect: 'Anwender stemmt sich gegen das Ziel und bewirkt, dass dieses erst als Letztes angreift.' }, - "acrobatics": { - name: "Akrobatik", - effect: "Ein graziler Angriff auf das Ziel. Trägt der Anwender kein Item bei sich, richtet die Attacke großen Schaden an." + 'acrobatics': { + name: 'Akrobatik', + effect: 'Ein graziler Angriff auf das Ziel. Trägt der Anwender kein Item bei sich, richtet die Attacke großen Schaden an.' }, - "reflectType": { - name: "Typenspiegel", - effect: "Anwender bildet das Ziel nach und nimmt dabei dessen Typ an." + 'reflectType': { + name: 'Typenspiegel', + effect: 'Anwender bildet das Ziel nach und nimmt dabei dessen Typ an.' }, - "retaliate": { - name: "Heimzahlung", - effect: "Anwender nimmt Rache für einen besiegten Mitstreiter. Wurde in der vorigen Runde ein Mitstreiter besiegt, steigt die Kraft." + 'retaliate': { + name: 'Heimzahlung', + effect: 'Anwender nimmt Rache für einen besiegten Mitstreiter. Wurde in der vorigen Runde ein Mitstreiter besiegt, steigt die Kraft.' }, - "finalGambit": { - name: "Wagemut", - effect: "Ein Angriff, der dem Ziel Schaden in Höhe der aktuellen KP des Anwenders zufügt. Letzterer wird dadurch selbst besiegt." + 'finalGambit': { + name: 'Wagemut', + effect: 'Ein Angriff, der dem Ziel Schaden in Höhe der aktuellen KP des Anwenders zufügt. Letzterer wird dadurch selbst besiegt.' }, - "bestow": { - name: "Offerte", - effect: "Trägt das Ziel gerade kein Item bei sich, erhält es das Item, das sich aktuell im Besitz des Anwenders befindet." + 'bestow': { + name: 'Offerte', + effect: 'Trägt das Ziel gerade kein Item bei sich, erhält es das Item, das sich aktuell im Besitz des Anwenders befindet.' }, - "inferno": { - name: "Inferno", - effect: "Anwender greift das Ziel an, indem er es mit dichten Flammen umhüllt. Ziel erleidet Verbrennungen." + 'inferno': { + name: 'Inferno', + effect: 'Anwender greift das Ziel an, indem er es mit dichten Flammen umhüllt. Ziel erleidet Verbrennungen.' }, - "waterPledge": { - name: "Wassersäulen", - effect: "Ein Angriff mit Wassersäulen. Mit Feuersäulen kombiniert steigt die Wirkung und ein Regenbogen erscheint." + 'waterPledge': { + name: 'Wassersäulen', + effect: 'Ein Angriff mit Wassersäulen. Mit Feuersäulen kombiniert steigt die Wirkung und ein Regenbogen erscheint.' }, - "firePledge": { - name: "Feuersäulen", - effect: "Ein Angriff mit Feuersäulen. Mit Pflanzsäulen kombiniert steigt die Wirkung und die Umgebung wird zu einem Meer aus Feuer." + 'firePledge': { + name: 'Feuersäulen', + effect: 'Ein Angriff mit Feuersäulen. Mit Pflanzsäulen kombiniert steigt die Wirkung und die Umgebung wird zu einem Meer aus Feuer.' }, - "grassPledge": { - name: "Pflanzensäulen", - effect: "Ein Angriff mit Pflanzsäulen. Mit Wassersäulen kombiniert steigt die Wirkung und die Umgebung wird zu einem Sumpf." + 'grassPledge': { + name: 'Pflanzensäulen', + effect: 'Ein Angriff mit Pflanzsäulen. Mit Wassersäulen kombiniert steigt die Wirkung und die Umgebung wird zu einem Sumpf.' }, - "voltSwitch": { - name: "Voltwechsel", - effect: "Anwender kehrt nach dem Angriff mit atemberaubender Geschwindigkeit zurück und tauscht Platz mit einem anderen Pokémon." + 'voltSwitch': { + name: 'Voltwechsel', + effect: 'Anwender kehrt nach dem Angriff mit atemberaubender Geschwindigkeit zurück und tauscht Platz mit einem anderen Pokémon.' }, - "struggleBug": { - name: "Käfertrutz", - effect: "Anwender leistet Widerstand und greift an. Der Spezial-Angriff der Ziele sinkt." + 'struggleBug': { + name: 'Käfertrutz', + effect: 'Anwender leistet Widerstand und greift an. Der Spezial-Angriff der Ziele sinkt.' }, - "bulldoze": { - name: "Dampfwalze", - effect: "Anwender greift an, indem er den Boden um sich herum plattwalzt. Die Initiative aller betroffenen Pokémon sinkt." + 'bulldoze': { + name: 'Dampfwalze', + effect: 'Anwender greift an, indem er den Boden um sich herum plattwalzt. Die Initiative aller betroffenen Pokémon sinkt.' }, - "frostBreath": { - name: "Eisesodem", - effect: "Anwender greift an, indem er dem Ziel eisigen Atem entgegenhaucht. Volltreffergarantie." + 'frostBreath': { + name: 'Eisesodem', + effect: 'Anwender greift an, indem er dem Ziel eisigen Atem entgegenhaucht. Volltreffergarantie.' }, - "dragonTail": { - name: "Drachenrute", - effect: "Putzt das Ziel vom Feld und wechselt es mit einem anderen Pokémon aus. Beendet Kämpfe gegen wilde Pokémon." + 'dragonTail': { + name: 'Drachenrute', + effect: 'Putzt das Ziel vom Feld und wechselt es mit einem anderen Pokémon aus. Beendet Kämpfe gegen wilde Pokémon.' }, - "workUp": { - name: "Kraftschub", - effect: "Anwender erhält einen Kraftschub, der seinen Angriff und Spezial-Angriff erhöht." + 'workUp': { + name: 'Kraftschub', + effect: 'Anwender erhält einen Kraftschub, der seinen Angriff und Spezial-Angriff erhöht.' }, - "electroweb": { - name: "Elektronetz", - effect: "Fängt Ziele mit einem elektrischen Netz und senkt deren Initiative." + 'electroweb': { + name: 'Elektronetz', + effect: 'Fängt Ziele mit einem elektrischen Netz und senkt deren Initiative.' }, - "wildCharge": { - name: "Stromstoß", - effect: "Anwender erzeugt Spannung und greift an, indem er auf Kollisionskurs geht. Er selbst erleidet dabei ebenfalls leichten Schaden." + 'wildCharge': { + name: 'Stromstoß', + effect: 'Anwender erzeugt Spannung und greift an, indem er auf Kollisionskurs geht. Er selbst erleidet dabei ebenfalls leichten Schaden.' }, - "drillRun": { - name: "Schlagbohrer", - effect: "Anwender rammt das Ziel, während er seinen Körper wie einen Bohrer dreht. Hohe Volltrefferquote." + 'drillRun': { + name: 'Schlagbohrer', + effect: 'Anwender rammt das Ziel, während er seinen Körper wie einen Bohrer dreht. Hohe Volltrefferquote.' }, - "dualChop": { - name: "Doppelhieb", - effect: "Versetzt dem Ziel mit massiven Extremitäten Hiebe. Angriff erfolgt zweimal hintereinander." + 'dualChop': { + name: 'Doppelhieb', + effect: 'Versetzt dem Ziel mit massiven Extremitäten Hiebe. Angriff erfolgt zweimal hintereinander.' }, - "heartStamp": { - name: "Herzstempel", - effect: "Verleitet Ziel durch Kokettieren zu Unachtsamkeit und verpasst ihm dann einen harten Schlag. Ziel schreckt eventuell zurück." + 'heartStamp': { + name: 'Herzstempel', + effect: 'Verleitet Ziel durch Kokettieren zu Unachtsamkeit und verpasst ihm dann einen harten Schlag. Ziel schreckt eventuell zurück.' }, - "hornLeech": { - name: "Holzgeweih", - effect: "Greift Ziel mit Astgeweih an und zapft diesem Nährstoffe ab. Anwender wird um die Hälfte des zugefügten Schadens geheilt." + 'hornLeech': { + name: 'Holzgeweih', + effect: 'Greift Ziel mit Astgeweih an und zapft diesem Nährstoffe ab. Anwender wird um die Hälfte des zugefügten Schadens geheilt.' }, - "sacredSword": { - name: "Sanctoklinge", - effect: "Schneideangriff mit langem Horn. Richtet Schaden unabhängig von Statusveränderungen des Zieles an." + 'sacredSword': { + name: 'Sanctoklinge', + effect: 'Schneideangriff mit langem Horn. Richtet Schaden unabhängig von Statusveränderungen des Zieles an.' }, - "razorShell": { - name: "Kalkklinge", - effect: "Schneideangriff mit einer scharfen Muschelschale. Senkt eventuell die Verteidigung des Zieles." + 'razorShell': { + name: 'Kalkklinge', + effect: 'Schneideangriff mit einer scharfen Muschelschale. Senkt eventuell die Verteidigung des Zieles.' }, - "heatCrash": { - name: "Brandstempel", - effect: "Rempelattacke mit brennendem Körper. Je schwerer der Anwender im Vergleich zum Ziel ist, desto stärker die Attacke." + 'heatCrash': { + name: 'Brandstempel', + effect: 'Rempelattacke mit brennendem Körper. Je schwerer der Anwender im Vergleich zum Ziel ist, desto stärker die Attacke.' }, - "leafTornado": { - name: "Grasmixer", - effect: "Anwender greift an, indem er das Ziel in scharfes Blattwerk einwickelt. Kann die Genauigkeit senken." + 'leafTornado': { + name: 'Grasmixer', + effect: 'Anwender greift an, indem er das Ziel in scharfes Blattwerk einwickelt. Kann die Genauigkeit senken.' }, - "steamroller": { - name: "Quetschwalze", - effect: "Anwender rollt mit rundlichem Körper über das Ziel und drückt es platt. Ziel schreckt eventuell zurück." + 'steamroller': { + name: 'Quetschwalze', + effect: 'Anwender rollt mit rundlichem Körper über das Ziel und drückt es platt. Ziel schreckt eventuell zurück.' }, - "cottonGuard": { - name: "Watteschild", - effect: "Anwender schützt sich, indem er sich in einen luftigen Flaum hüllt. Erhöht die Verteidigung drastisch." + 'cottonGuard': { + name: 'Watteschild', + effect: 'Anwender schützt sich, indem er sich in einen luftigen Flaum hüllt. Erhöht die Verteidigung drastisch.' }, - "nightDaze": { - name: "Nachtflut", - effect: "Anwender greift Ziel mit finsteren Schockwellen an. Senkt eventuell die Genauigkeit." + 'nightDaze': { + name: 'Nachtflut', + effect: 'Anwender greift Ziel mit finsteren Schockwellen an. Senkt eventuell die Genauigkeit.' }, - "psystrike": { - name: "Psychostoß", - effect: "Anwender erzeugt seltsame Energiewellen, die dem Ziel physischen Schaden zufügen." + 'psystrike': { + name: 'Psychostoß', + effect: 'Anwender erzeugt seltsame Energiewellen, die dem Ziel physischen Schaden zufügen.' }, - "tailSlap": { - name: "Kehrschelle", - effect: "Anwender greift das Ziel mit seiner schlagfesten Rute zwei- bis fünfmal hintereinander an." + 'tailSlap': { + name: 'Kehrschelle', + effect: 'Anwender greift das Ziel mit seiner schlagfesten Rute zwei- bis fünfmal hintereinander an.' }, - "hurricane": { - name: "Orkan", - effect: "Anwender greift das Ziel an, indem er es mit heftigen Windböen umgibt. Ziel wird eventuell verwirrt." + 'hurricane': { + name: 'Orkan', + effect: 'Anwender greift das Ziel an, indem er es mit heftigen Windböen umgibt. Ziel wird eventuell verwirrt.' }, - "headCharge": { - name: "Steinschädel", - effect: "Rempelattacke mit ausgeflippter Retrofrisur. Anwender nimmt selbst leichten Schaden." + 'headCharge': { + name: 'Steinschädel', + effect: 'Rempelattacke mit ausgeflippter Retrofrisur. Anwender nimmt selbst leichten Schaden.' }, - "gearGrind": { - name: "Klikkdiskus", - effect: "Anwender greift an, indem er stählerne Zahnräder auf das Ziel schleudert. Angriff erfolgt zweimal hintereinander." + 'gearGrind': { + name: 'Klikkdiskus', + effect: 'Anwender greift an, indem er stählerne Zahnräder auf das Ziel schleudert. Angriff erfolgt zweimal hintereinander.' }, - "searingShot": { - name: "Flammenball", - effect: "Greift alles in seiner Umgebung mit tiefroten Flammen an. Ziel kann Verbrennungen erleiden." + 'searingShot': { + name: 'Flammenball', + effect: 'Greift alles in seiner Umgebung mit tiefroten Flammen an. Ziel kann Verbrennungen erleiden.' }, - "technoBlast": { - name: "Techblaster", - effect: "Anwender feuert ein Lichtgeschoss auf das Ziel ab. Der Typ der Attacke hängt von dem des Moduls ab." + 'technoBlast': { + name: 'Techblaster', + effect: 'Anwender feuert ein Lichtgeschoss auf das Ziel ab. Der Typ der Attacke hängt von dem des Moduls ab.' }, - "relicSong": { - name: "Urgesang", - effect: "Anwender greift mit Urgesang an, der Ziele in der Nähe im tiefsten Inneren anspricht. Diese schlafen eventuell ein." + 'relicSong': { + name: 'Urgesang', + effect: 'Anwender greift mit Urgesang an, der Ziele in der Nähe im tiefsten Inneren anspricht. Diese schlafen eventuell ein.' }, - "secretSword": { - name: "Mystoschwert", - effect: "Schneideangriff mit dem langen Schwert des Anwenders. Die mysteriöse Kraft aus dem Horn erzeugt physischen Schaden." + 'secretSword': { + name: 'Mystoschwert', + effect: 'Schneideangriff mit dem langen Schwert des Anwenders. Die mysteriöse Kraft aus dem Horn erzeugt physischen Schaden.' }, - "glaciate": { - name: "Eiszeit", - effect: "Anwender greift an, indem er dem Ziel klirrend kalte Luft entgegenbläst. Senkt die Initiative des Zieles." + 'glaciate': { + name: 'Eiszeit', + effect: 'Anwender greift an, indem er dem Ziel klirrend kalte Luft entgegenbläst. Senkt die Initiative des Zieles.' }, - "boltStrike": { - name: "Blitzschlag", - effect: "Lädt seinen Körper mit einer gewaltigen Menge an Elektrizität auf und rammt damit das Ziel. Ziel wird eventuell paralysiert." + 'boltStrike': { + name: 'Blitzschlag', + effect: 'Lädt seinen Körper mit einer gewaltigen Menge an Elektrizität auf und rammt damit das Ziel. Ziel wird eventuell paralysiert.' }, - "blueFlare": { - name: "Blauflammen", - effect: "Anwender greift an, indem er das Ziel in wunderschöne, intensivblaue Flammen hüllt, die es eventuell verbrennen." + 'blueFlare': { + name: 'Blauflammen', + effect: 'Anwender greift an, indem er das Ziel in wunderschöne, intensivblaue Flammen hüllt, die es eventuell verbrennen.' }, - "fieryDance": { - name: "Feuerreigen", - effect: "Hüllt das Ziel mit einer Feuerhose in Flammen. Kann den Spezial-Angriff des Anwenders erhöhen." + 'fieryDance': { + name: 'Feuerreigen', + effect: 'Hüllt das Ziel mit einer Feuerhose in Flammen. Kann den Spezial-Angriff des Anwenders erhöhen.' }, - "freezeShock": { - name: "Frostvolt", - effect: "Feuert in der zweiten Runde elektrisch geladene Eisklumpen auf das Ziel ab. Paralysiert das Ziel eventuell." + 'freezeShock': { + name: 'Frostvolt', + effect: 'Feuert in der zweiten Runde elektrisch geladene Eisklumpen auf das Ziel ab. Paralysiert das Ziel eventuell.' }, - "iceBurn": { - name: "Frosthauch", - effect: "Umgibt das Ziel in der nächsten Runde mit heftigen, alles gefrierenden Eisböen. Fügt dem Ziel eventuell Verbrennungen zu." + 'iceBurn': { + name: 'Frosthauch', + effect: 'Umgibt das Ziel in der nächsten Runde mit heftigen, alles gefrierenden Eisböen. Fügt dem Ziel eventuell Verbrennungen zu.' }, - "snarl": { - name: "Standpauke", - effect: "Wäscht Zielen in der Nähe mit einer ausführlichen Standpauke den Kopf und senkt dabei deren Spezial-Angriff." + 'snarl': { + name: 'Standpauke', + effect: 'Wäscht Zielen in der Nähe mit einer ausführlichen Standpauke den Kopf und senkt dabei deren Spezial-Angriff.' }, - "icicleCrash": { - name: "Eiszapfhagel", - effect: "Lässt große, schwere Eiszapfen auf das Ziel herabregnen. Ziel schreckt eventuell zurück." + 'icicleCrash': { + name: 'Eiszapfhagel', + effect: 'Lässt große, schwere Eiszapfen auf das Ziel herabregnen. Ziel schreckt eventuell zurück.' }, - "vCreate": { - name: "V-Generator", - effect: "Eine Verzweiflungsattacke. Anwender entfacht glühend heißes Feuer. Senkt dessen Verteidigung, Spezial-Verteidigung und Initiative." + 'vCreate': { + name: 'V-Generator', + effect: 'Eine Verzweiflungsattacke. Anwender entfacht glühend heißes Feuer. Senkt dessen Verteidigung, Spezial-Verteidigung und Initiative.' }, - "fusionFlare": { - name: "Kreuzflamme", - effect: "Feuert eine monströse Flamme ab. Wird die Attacke durch einen gigantischen Blitz modifiziert, steigt die Stärke." + 'fusionFlare': { + name: 'Kreuzflamme', + effect: 'Feuert eine monströse Flamme ab. Wird die Attacke durch einen gigantischen Blitz modifiziert, steigt die Stärke.' }, - "fusionBolt": { - name: "Kreuzdonner", - effect: "Feuert einen monströsen Blitz ab. Wird die Attacke durch eine gigantische Flamme modifiziert, steigt die Stärke." + 'fusionBolt': { + name: 'Kreuzdonner', + effect: 'Feuert einen monströsen Blitz ab. Wird die Attacke durch eine gigantische Flamme modifiziert, steigt die Stärke.' }, - "flyingPress": { - name: "Flying Press", - effect: "Der Anwender stürzt sich aus der Luft auf das Ziel. Die Attacke gehört sowohl dem Typ Kampf als auch dem Typ Flug an." + 'flyingPress': { + name: 'Flying Press', + effect: 'Der Anwender stürzt sich aus der Luft auf das Ziel. Die Attacke gehört sowohl dem Typ Kampf als auch dem Typ Flug an.' }, - "matBlock": { - name: "Tatami-Schild", - effect: "Der Anwender richtet eine Tatami-Matte auf, um sich und sein Team vor Schaden zu schützen. Kein Schutz vor Status-Attacken." + 'matBlock': { + name: 'Tatami-Schild', + effect: 'Der Anwender richtet eine Tatami-Matte auf, um sich und sein Team vor Schaden zu schützen. Kein Schutz vor Status-Attacken.' }, - "belch": { - name: "Rülpser", - effect: "Der Anwender fügt dem Ziel Schaden zu, indem er es anrülpst. Diese Attacke gelingt nur nach dem Konsum einer getragenen Beere." + 'belch': { + name: 'Rülpser', + effect: 'Der Anwender fügt dem Ziel Schaden zu, indem er es anrülpst. Diese Attacke gelingt nur nach dem Konsum einer getragenen Beere.' }, - "rototiller": { - name: "Pflüger", - effect: "Der Anwender pflügt den Boden und macht die Erde fruchtbarer. Erhöht den Angriff und den Spezial-Angriff von Pflanzen-Pokémon." + 'rototiller': { + name: 'Pflüger', + effect: 'Der Anwender pflügt den Boden und macht die Erde fruchtbarer. Erhöht den Angriff und den Spezial-Angriff von Pflanzen-Pokémon.' }, - "stickyWeb": { - name: "Klebenetz", - effect: "Der Anwender spinnt in der Umgebung des gegnerischen Teams ein klebriges Netz und senkt so die Initiative neu eingewechselter Pokémon." + 'stickyWeb': { + name: 'Klebenetz', + effect: 'Der Anwender spinnt in der Umgebung des gegnerischen Teams ein klebriges Netz und senkt so die Initiative neu eingewechselter Pokémon.' }, - "fellStinger": { - name: "Stachelfinale", - effect: "Gelingt es dem Anwender, das Ziel mit dieser Attacke zu besiegen, steigt sein Angriffs-Wert stark." + 'fellStinger': { + name: 'Stachelfinale', + effect: 'Gelingt es dem Anwender, das Ziel mit dieser Attacke zu besiegen, steigt sein Angriffs-Wert stark.' }, - "phantomForce": { - name: "Phantomkraft", - effect: "Der Anwender verschwindet, um eine Runde lang seine Kraft zu sammeln und in der nächsten Runde anzugreifen. Durchbricht die Defensive des Zieles." + 'phantomForce': { + name: 'Phantomkraft', + effect: 'Der Anwender verschwindet, um eine Runde lang seine Kraft zu sammeln und in der nächsten Runde anzugreifen. Durchbricht die Defensive des Zieles.' }, - "trickOrTreat": { - name: "Halloween", - effect: "Der Anwender lehrt das Ziel das Fürchten. Dieses nimmt dadurch zusätzlich den Typ Geist an." + 'trickOrTreat': { + name: 'Halloween', + effect: 'Der Anwender lehrt das Ziel das Fürchten. Dieses nimmt dadurch zusätzlich den Typ Geist an.' }, - "nobleRoar": { - name: "Kampfgebrüll", - effect: "Der Anwender stößt ein Kampfgebrüll aus, das das Ziel einschüchtert und zugleich seinen Angriffs- und Spezial-Angriffs-Wert senkt." + 'nobleRoar': { + name: 'Kampfgebrüll', + effect: 'Der Anwender stößt ein Kampfgebrüll aus, das das Ziel einschüchtert und zugleich seinen Angriffs- und Spezial-Angriffs-Wert senkt.' }, - "ionDeluge": { - name: "Plasmaschauer", - effect: "Versprüht elektrisch geladene Partikel und bewirkt, dass Normal-Attacken den Typ Elektro annehmen." + 'ionDeluge': { + name: 'Plasmaschauer', + effect: 'Versprüht elektrisch geladene Partikel und bewirkt, dass Normal-Attacken den Typ Elektro annehmen.' }, - "parabolicCharge": { - name: "Parabolladung", - effect: "Fügt allen Pokémon in der Umgebung Schaden zu. Der Anwender wird um die Hälfte des insgesamt angerichteten Schadens geheilt." + 'parabolicCharge': { + name: 'Parabolladung', + effect: 'Fügt allen Pokémon in der Umgebung Schaden zu. Der Anwender wird um die Hälfte des insgesamt angerichteten Schadens geheilt.' }, - "forestsCurse": { - name: "Waldesfluch", - effect: "Der Anwender belegt das Ziel mit einem Waldesfluch, durch den dieses zusätzlich den Typ Pflanze annimmt." + 'forestsCurse': { + name: 'Waldesfluch', + effect: 'Der Anwender belegt das Ziel mit einem Waldesfluch, durch den dieses zusätzlich den Typ Pflanze annimmt.' }, - "petalBlizzard": { - name: "Blütenwirbel", - effect: "Der Anwender erzeugt einen turbulenten Blütenwirbel, der alle Pokémon in der Nähe erfasst und ihnen Schaden zufügt." + 'petalBlizzard': { + name: 'Blütenwirbel', + effect: 'Der Anwender erzeugt einen turbulenten Blütenwirbel, der alle Pokémon in der Nähe erfasst und ihnen Schaden zufügt.' }, - "freezeDry": { - name: "Gefriertrockner", - effect: "Das Ziel wird stark abgekühlt und manchmal sogar eingefroren. Die Attacke ist sehr effektiv gegen Wasser-Pokémon." + 'freezeDry': { + name: 'Gefriertrockner', + effect: 'Das Ziel wird stark abgekühlt und manchmal sogar eingefroren. Die Attacke ist sehr effektiv gegen Wasser-Pokémon.' }, - "disarmingVoice": { - name: "Säuselstimme", - effect: "Der Anwender stößt einen bezirzenden Ruf aus, mit dem er das Ziel in seinen Bann schlägt und ihm immer mentalen Schaden zufügt." + 'disarmingVoice': { + name: 'Säuselstimme', + effect: 'Der Anwender stößt einen bezirzenden Ruf aus, mit dem er das Ziel in seinen Bann schlägt und ihm immer mentalen Schaden zufügt.' }, - "partingShot": { - name: "Abgangstirade", - effect: "Schüchtert das Ziel mit einer Abgangstirade ein, sodass dessen Angriffs- und Spezial-Angriffs-Wert sinken. Danach wird der Anwender ausgewechselt." + 'partingShot': { + name: 'Abgangstirade', + effect: 'Schüchtert das Ziel mit einer Abgangstirade ein, sodass dessen Angriffs- und Spezial-Angriffs-Wert sinken. Danach wird der Anwender ausgewechselt.' }, - "topsyTurvy": { - name: "Invertigo", - effect: "Invertiert alle Statusveränderungen des Zieles." + 'topsyTurvy': { + name: 'Invertigo', + effect: 'Invertiert alle Statusveränderungen des Zieles.' }, - "drainingKiss": { - name: "Diebeskuss", - effect: "Der Anwender stiehlt dem Ziel mit einem Kuss KP. Die Höhe der Heilung beträgt mehr als die Hälfte des beim Ziel angerichteten Schadens." + 'drainingKiss': { + name: 'Diebeskuss', + effect: 'Der Anwender stiehlt dem Ziel mit einem Kuss KP. Die Höhe der Heilung beträgt mehr als die Hälfte des beim Ziel angerichteten Schadens.' }, - "craftyShield": { - name: "Trickschutz", - effect: "Schützt sich und Mitstreiter mit einer mysteriösen Macht vor Status-Attacken. Es werden jedoch weiterhin KP-Schäden erlitten." + 'craftyShield': { + name: 'Trickschutz', + effect: 'Schützt sich und Mitstreiter mit einer mysteriösen Macht vor Status-Attacken. Es werden jedoch weiterhin KP-Schäden erlitten.' }, - "flowerShield": { - name: "Floraschutz", - effect: "Erhöht mit einer mysteriösen Macht die Verteidigung aller am Kampf beteiligten Pflanzen-Pokémon." + 'flowerShield': { + name: 'Floraschutz', + effect: 'Erhöht mit einer mysteriösen Macht die Verteidigung aller am Kampf beteiligten Pflanzen-Pokémon.' }, - "grassyTerrain": { - name: "Grasfeld", - effect: "Verwandelt den Untergrund fünf Runden lang in ein Grasfeld und heilt in jeder neuen Runde alle Pokémon, die den Boden berühren." + 'grassyTerrain': { + name: 'Grasfeld', + effect: 'Verwandelt den Untergrund fünf Runden lang in ein Grasfeld und heilt in jeder neuen Runde alle Pokémon, die den Boden berühren.' }, - "mistyTerrain": { - name: "Nebelfeld", - effect: "Verwandelt den Untergrund fünf Runden lang in ein Nebelfeld und schützt alle Pokémon, die den Boden berühren, vor Statusproblemen." + 'mistyTerrain': { + name: 'Nebelfeld', + effect: 'Verwandelt den Untergrund fünf Runden lang in ein Nebelfeld und schützt alle Pokémon, die den Boden berühren, vor Statusproblemen.' }, - "electrify": { - name: "Elektrifizierung", - effect: "Kommt die Attacke zum Einsatz, bevor das Ziel seine Attacke ausführt, nimmt diese für die Dauer dieser Runde den Typ Elektro an." + 'electrify': { + name: 'Elektrifizierung', + effect: 'Kommt die Attacke zum Einsatz, bevor das Ziel seine Attacke ausführt, nimmt diese für die Dauer dieser Runde den Typ Elektro an.' }, - "playRough": { - name: "Knuddler", - effect: "Der Anwender knuddelt das Ziel und greift es an. Gelegentlich sinkt dabei auch dessen Angriffs-Wert." + 'playRough': { + name: 'Knuddler', + effect: 'Der Anwender knuddelt das Ziel und greift es an. Gelegentlich sinkt dabei auch dessen Angriffs-Wert.' }, - "fairyWind": { - name: "Feenbrise", - effect: "Lässt eine Feenbrise aufkommen, die das Ziel erfasst und ihm Schaden zufügt." + 'fairyWind': { + name: 'Feenbrise', + effect: 'Lässt eine Feenbrise aufkommen, die das Ziel erfasst und ihm Schaden zufügt.' }, - "moonblast": { - name: "Mondgewalt", - effect: "Der Anwender macht sich die Kraft des Mondes zunutze, um anzugreifen. Gelegentlich wird dabei der Spezial-Angriff des Zieles gesenkt." + 'moonblast': { + name: 'Mondgewalt', + effect: 'Der Anwender macht sich die Kraft des Mondes zunutze, um anzugreifen. Gelegentlich wird dabei der Spezial-Angriff des Zieles gesenkt.' }, - "boomburst": { - name: "Überschallknall", - effect: "Der Anwender greift alle Pokémon in der Umgebung mit einem gewaltigen Knall an." + 'boomburst': { + name: 'Überschallknall', + effect: 'Der Anwender greift alle Pokémon in der Umgebung mit einem gewaltigen Knall an.' }, - "fairyLock": { - name: "Feenschloss", - effect: "Der Anwender sperrt alle Pokémon ein und hindert sie damit in der nächsten Runde an der Flucht." + 'fairyLock': { + name: 'Feenschloss', + effect: 'Der Anwender sperrt alle Pokémon ein und hindert sie damit in der nächsten Runde an der Flucht.' }, - "kingsShield": { - name: "Königsschild", - effect: "Der Anwender weicht dem gegnerischen Angriff aus und geht in die Defensive. Berührt ihn nun ein Pokémon, sinkt der Angriffs-Wert dieses Gegners." + 'kingsShield': { + name: 'Königsschild', + effect: 'Der Anwender weicht dem gegnerischen Angriff aus und geht in die Defensive. Berührt ihn nun ein Pokémon, sinkt der Angriffs-Wert dieses Gegners.' }, - "playNice": { - name: "Kameradschaft", - effect: "Der Anwender schließt mit dem Ziel Freundschaft und nimmt ihm seine Angriffslust. Der Angriffs-Wert des Zieles sinkt." + 'playNice': { + name: 'Kameradschaft', + effect: 'Der Anwender schließt mit dem Ziel Freundschaft und nimmt ihm seine Angriffslust. Der Angriffs-Wert des Zieles sinkt.' }, - "confide": { - name: "Vertrauenssache", - effect: "Der Anwender vertraut dem Ziel ein Geheimnis an und stört auf diese Weise seine Konzentration. Der Spezial-Angriff des Zieles sinkt." + 'confide': { + name: 'Vertrauenssache', + effect: 'Der Anwender vertraut dem Ziel ein Geheimnis an und stört auf diese Weise seine Konzentration. Der Spezial-Angriff des Zieles sinkt.' }, - "diamondStorm": { - name: "Diamantsturm", - effect: "Der Anwender beschwört einen zerstörerischen Diamantsturm herauf. Kann die Verteidigung des Anwenders erhöhen." + 'diamondStorm': { + name: 'Diamantsturm', + effect: 'Der Anwender beschwört einen zerstörerischen Diamantsturm herauf. Kann die Verteidigung des Anwenders erhöhen.' }, - "steamEruption": { - name: "Dampfschwall", - effect: "Der Anwender feuert einen siedend heißen Dampfschwall auf das Ziel ab. Dieses kann dabei Verbrennungen erleiden." + 'steamEruption': { + name: 'Dampfschwall', + effect: 'Der Anwender feuert einen siedend heißen Dampfschwall auf das Ziel ab. Dieses kann dabei Verbrennungen erleiden.' }, - "hyperspaceHole": { - name: "Dimensionsloch", - effect: "Der Anwender positioniert sich mithilfe eines Dimensionslochs direkt neben dem Ziel und durchbricht selbst Schutzschild und Scanner." + 'hyperspaceHole': { + name: 'Dimensionsloch', + effect: 'Der Anwender positioniert sich mithilfe eines Dimensionslochs direkt neben dem Ziel und durchbricht selbst Schutzschild und Scanner.' }, - "waterShuriken": { - name: "Wasser-Shuriken", - effect: "Der Anwender schleudert dem Ziel Wurfsterne aus einem verdickten Sekret entgegen. Eine Serien-Attacke, die zwei- bis fünfmal trifft." + 'waterShuriken': { + name: 'Wasser-Shuriken', + effect: 'Der Anwender schleudert dem Ziel Wurfsterne aus einem verdickten Sekret entgegen. Eine Serien-Attacke, die zwei- bis fünfmal trifft.' }, - "mysticalFire": { - name: "Magieflamme", - effect: "Der Anwender greift das Ziel an, indem er ihm eine besondere, heiße Flamme entgegenbläst. Der Spezial-Angriff des Zieles sinkt." + 'mysticalFire': { + name: 'Magieflamme', + effect: 'Der Anwender greift das Ziel an, indem er ihm eine besondere, heiße Flamme entgegenbläst. Der Spezial-Angriff des Zieles sinkt.' }, - "spikyShield": { - name: "Schutzstacheln", - effect: "Der Anwender weicht gegnerischen Angriffen aus. Gleichzeitig nehmen alle Pokémon, die mit ihm in Berührung kommen, Schaden." + 'spikyShield': { + name: 'Schutzstacheln', + effect: 'Der Anwender weicht gegnerischen Angriffen aus. Gleichzeitig nehmen alle Pokémon, die mit ihm in Berührung kommen, Schaden.' }, - "aromaticMist": { - name: "Duftwolke", - effect: "Der Anwender erhöht mithilfe eines mysteriösen Duftes die Spezial-Verteidigung eines Mitstreiters." + 'aromaticMist': { + name: 'Duftwolke', + effect: 'Der Anwender erhöht mithilfe eines mysteriösen Duftes die Spezial-Verteidigung eines Mitstreiters.' }, - "eerieImpulse": { - name: "Mystowellen", - effect: "Der Körper des Anwenders erzeugt mysteriöse Wellen und senkt den Spezial-Angriff des Zieles dadurch stark." + 'eerieImpulse': { + name: 'Mystowellen', + effect: 'Der Körper des Anwenders erzeugt mysteriöse Wellen und senkt den Spezial-Angriff des Zieles dadurch stark.' }, - "venomDrench": { - name: "Giftfalle", - effect: "Anwender bespritzt das Ziel mit einer speziellen Giftflüssigkeit. Senkt den Angriff, den Spezial- Angriff und die Initiative von vergifteten Zielen." + 'venomDrench': { + name: 'Giftfalle', + effect: 'Anwender bespritzt das Ziel mit einer speziellen Giftflüssigkeit. Senkt den Angriff, den Spezial- Angriff und die Initiative von vergifteten Zielen.' }, - "powder": { - name: "Pulverschleuder", - effect: "Setzt das Ziel nach Einsatz von Pulverschleuder in derselben Runde eine Feuer-Attacke ein, kommt es zu einer Explosion, die ihm schadet." + 'powder': { + name: 'Pulverschleuder', + effect: 'Setzt das Ziel nach Einsatz von Pulverschleuder in derselben Runde eine Feuer-Attacke ein, kommt es zu einer Explosion, die ihm schadet.' }, - "geomancy": { - name: "Geokontrolle", - effect: "Der Anwender saugt in Runde 1 Energie auf. In Runde 2 steigen folgende Statuswerte stark: Spezial-Angriff, Spezial-Verteidigung und Initiative." + 'geomancy': { + name: 'Geokontrolle', + effect: 'Der Anwender saugt in Runde 1 Energie auf. In Runde 2 steigen folgende Statuswerte stark: Spezial-Angriff, Spezial-Verteidigung und Initiative.' }, - "magneticFlux": { - name: "Magnetregler", - effect: "Das Magnetfeld wird so manipuliert, dass Spezial- Verteidigung und Verteidigung von Team-Pokémon mit der Fähigkeit Plus oder Minus steigen." + 'magneticFlux': { + name: 'Magnetregler', + effect: 'Das Magnetfeld wird so manipuliert, dass Spezial- Verteidigung und Verteidigung von Team-Pokémon mit der Fähigkeit Plus oder Minus steigen.' }, - "happyHour": { - name: "Goldene Zeiten", - effect: "Nach Einsatz der Attacke Goldene Zeiten verdoppelt sich das Preisgeld, das du im Falle eines Sieges erhältst." + 'happyHour': { + name: 'Goldene Zeiten', + effect: 'Nach Einsatz der Attacke Goldene Zeiten verdoppelt sich das Preisgeld, das du im Falle eines Sieges erhältst.' }, - "electricTerrain": { - name: "Elektrofeld", - effect: "Verwandelt den Untergrund fünf Runden lang in ein Elektrofeld und hindert alle Pokémon, die den Boden berühren, am Einschlafen." + 'electricTerrain': { + name: 'Elektrofeld', + effect: 'Verwandelt den Untergrund fünf Runden lang in ein Elektrofeld und hindert alle Pokémon, die den Boden berühren, am Einschlafen.' }, - "dazzlingGleam": { - name: "Zauberschein", - effect: "Der Anwender feuert einen mächtigen Lichtblitz ab, der dem Ziel Schaden zufügt." + 'dazzlingGleam': { + name: 'Zauberschein', + effect: 'Der Anwender feuert einen mächtigen Lichtblitz ab, der dem Ziel Schaden zufügt.' }, - "celebrate": { - name: "Ehrentag", - effect: "Das Pokémon gratuliert dir zu deinem Geburtstag!" + 'celebrate': { + name: 'Ehrentag', + effect: 'Das Pokémon gratuliert dir zu deinem Geburtstag!' }, - "holdHands": { - name: "Händchenhalten", - effect: "Der Anwender und ein Mitstreiter reichen einander die Hände und verfallen in einen Zustand tiefster Zufriedenheit." + 'holdHands': { + name: 'Händchenhalten', + effect: 'Der Anwender und ein Mitstreiter reichen einander die Hände und verfallen in einen Zustand tiefster Zufriedenheit.' }, - "babyDollEyes": { - name: "Kulleraugen", - effect: "Der Anwender erobert das Herz des Zieles, indem er es mit Kulleraugen ansieht. Senkt den Angriffs-Wert. Erstschlaggarantie." + 'babyDollEyes': { + name: 'Kulleraugen', + effect: 'Der Anwender erobert das Herz des Zieles, indem er es mit Kulleraugen ansieht. Senkt den Angriffs-Wert. Erstschlaggarantie.' }, - "nuzzle": { - name: "Wangenrubbler", - effect: "Der Anwender lädt seine Wangen elektrisch auf und greift an, indem er sich damit am Ziel reibt. Das Ziel wird paralysiert." + 'nuzzle': { + name: 'Wangenrubbler', + effect: 'Der Anwender lädt seine Wangen elektrisch auf und greift an, indem er sich damit am Ziel reibt. Das Ziel wird paralysiert.' }, - "holdBack": { - name: "Zurückhaltung", - effect: "Der Anwender hält sich beim Angriff zurück und sorgt auf diese Weise dafür, dass dem Ziel danach mindestens 1 KP verbleibt." + 'holdBack': { + name: 'Zurückhaltung', + effect: 'Der Anwender hält sich beim Angriff zurück und sorgt auf diese Weise dafür, dass dem Ziel danach mindestens 1 KP verbleibt.' }, - "infestation": { - name: "Plage", - effect: "Der Anwender fällt vier bis fünf Runden lang wie eine Plage über das Ziel her und greift es an. In diesem Zeitraum kann es nicht fliehen." + 'infestation': { + name: 'Plage', + effect: 'Der Anwender fällt vier bis fünf Runden lang wie eine Plage über das Ziel her und greift es an. In diesem Zeitraum kann es nicht fliehen.' }, - "powerUpPunch": { - name: "Steigerungshieb", - effect: "Die Fäuste des Anwenders härten durch wiederholtes Zuschlagen ab. Mit jedem Treffer steigt sein Angriffs-Wert." + 'powerUpPunch': { + name: 'Steigerungshieb', + effect: 'Die Fäuste des Anwenders härten durch wiederholtes Zuschlagen ab. Mit jedem Treffer steigt sein Angriffs-Wert.' }, - "oblivionWing": { - name: "Unheilsschwingen", - effect: "Der Anwender raubt dem Ziel KP. Die Höhe der Heilung beträgt mehr als die Hälfte des beim Ziel angerichteten Schadens." + 'oblivionWing': { + name: 'Unheilsschwingen', + effect: 'Der Anwender raubt dem Ziel KP. Die Höhe der Heilung beträgt mehr als die Hälfte des beim Ziel angerichteten Schadens.' }, - "thousandArrows": { - name: "Tausend Pfeile", - effect: "Die Attacke erfasst auch schwebende Pokémon. Erfasst sie ein Pokémon im Schwebe-Zustand, fällt es zu Boden." + 'thousandArrows': { + name: 'Tausend Pfeile', + effect: 'Die Attacke erfasst auch schwebende Pokémon. Erfasst sie ein Pokémon im Schwebe-Zustand, fällt es zu Boden.' }, - "thousandWaves": { - name: "Tausend Wellen", - effect: "Der Anwender greift mit einer Welle an, die dicht über dem Boden verläuft und alle Pokémon, die sie erfasst, an der Flucht hindert." + 'thousandWaves': { + name: 'Tausend Wellen', + effect: 'Der Anwender greift mit einer Welle an, die dicht über dem Boden verläuft und alle Pokémon, die sie erfasst, an der Flucht hindert.' }, - "landsWrath": { - name: "Bodengewalt", - effect: "Der Anwender sammelt die Kraft des weiten Landes und greift an, indem er sie gebündelt auf das Ziel lenkt." + 'landsWrath': { + name: 'Bodengewalt', + effect: 'Der Anwender sammelt die Kraft des weiten Landes und greift an, indem er sie gebündelt auf das Ziel lenkt.' }, - "lightOfRuin": { - name: "Lux Calamitatis", - effect: "Die Attacke basiert auf der Kraft des Ewigblütlers, die als mächtiger Lichtstrahl abgefeuert wird. Der Anwender nimmt dabei selbst großen Schaden." + 'lightOfRuin': { + name: 'Lux Calamitatis', + effect: 'Die Attacke basiert auf der Kraft des Ewigblütlers, die als mächtiger Lichtstrahl abgefeuert wird. Der Anwender nimmt dabei selbst großen Schaden.' }, - "originPulse": { - name: "Ursprungswoge", - effect: "Der Anwender greift das Ziel mit unzähligen blau leuchtenden Strahlen an." + 'originPulse': { + name: 'Ursprungswoge', + effect: 'Der Anwender greift das Ziel mit unzähligen blau leuchtenden Strahlen an.' }, - "precipiceBlades": { - name: "Abgrundsklinge", - effect: "Der Anwender wandelt die Kraft des Erdreichs in Klingen um, mit denen er das Ziel angreift." + 'precipiceBlades': { + name: 'Abgrundsklinge', + effect: 'Der Anwender wandelt die Kraft des Erdreichs in Klingen um, mit denen er das Ziel angreift.' }, - "dragonAscent": { - name: "Zenitstürmer", - effect: "Der Anwender greift das Ziel aus atemberaubender Höhe im Sturzflug an. Senkt Verteidigung und Spezial-Verteidigung des Anwenders." + 'dragonAscent': { + name: 'Zenitstürmer', + effect: 'Der Anwender greift das Ziel aus atemberaubender Höhe im Sturzflug an. Senkt Verteidigung und Spezial-Verteidigung des Anwenders.' }, - "hyperspaceFury": { - name: "Dimensionswahn", - effect: "Eine Angriffsserie mit vielen Armen, die die Wirkung von Schutzschild und Scanner durchbricht. Dabei sinkt die Verteidigung des Anwenders." + 'hyperspaceFury': { + name: 'Dimensionswahn', + effect: 'Eine Angriffsserie mit vielen Armen, die die Wirkung von Schutzschild und Scanner durchbricht. Dabei sinkt die Verteidigung des Anwenders.' }, - "breakneckBlitzPhysical": { - name: "Hyper-Sprintangriff", - effect: "Der durch Z-Kraft energiegeladene Anwender rennt mit ganzer Kraft gegen das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke." + 'breakneckBlitzPhysical': { + name: 'Hyper-Sprintangriff', + effect: 'Der durch Z-Kraft energiegeladene Anwender rennt mit ganzer Kraft gegen das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "breakneckBlitzSpecial": { - name: "Hyper-Sprintangriff", - effect: "Dummy Data" + 'breakneckBlitzSpecial': { + name: 'Hyper-Sprintangriff', + effect: 'Dummy Data' }, - "allOutPummelingPhysical": { - name: "Fulminante Faustschläge", - effect: "Aus Z-Kraft hergestellte Energiebälle prallen mit voller Wucht auf das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke." + 'allOutPummelingPhysical': { + name: 'Fulminante Faustschläge', + effect: 'Aus Z-Kraft hergestellte Energiebälle prallen mit voller Wucht auf das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "allOutPummelingSpecial": { - name: "Fulminante Faustschläge", - effect: "Dummy Data" + 'allOutPummelingSpecial': { + name: 'Fulminante Faustschläge', + effect: 'Dummy Data' }, - "supersonicSkystrikePhysical": { - name: "Finaler Steilflug", - effect: "Der Anwender schwingt sich durch Z-Kraft in die Lüfte und stürzt sich dann auf das Ziel hinab. Die Stärke variiert je nach zugrunde liegender Attacke." + 'supersonicSkystrikePhysical': { + name: 'Finaler Steilflug', + effect: 'Der Anwender schwingt sich durch Z-Kraft in die Lüfte und stürzt sich dann auf das Ziel hinab. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "supersonicSkystrikeSpecial": { - name: "Finaler Steilflug", - effect: "Dummy Data" + 'supersonicSkystrikeSpecial': { + name: 'Finaler Steilflug', + effect: 'Dummy Data' }, - "acidDownpourPhysical": { - name: "Vernichtender Säureregen", - effect: "Der Anwender kreiert mit Z-Kraft ein giftiges Moor, in dem das Ziel versinkt. Die Stärke variiert je nach zugrunde liegender Attacke." + 'acidDownpourPhysical': { + name: 'Vernichtender Säureregen', + effect: 'Der Anwender kreiert mit Z-Kraft ein giftiges Moor, in dem das Ziel versinkt. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "acidDownpourSpecial": { - name: "Vernichtender Säureregen", - effect: "Dummy Data" + 'acidDownpourSpecial': { + name: 'Vernichtender Säureregen', + effect: 'Dummy Data' }, - "tectonicRagePhysical": { - name: "Seismische Eruption", - effect: "Der Anwender zerrt das Ziel mit Z-Kraft tief in den Boden und kollidiert dort mit ihm. Die Stärke variiert je nach zugrunde liegender Attacke." + 'tectonicRagePhysical': { + name: 'Seismische Eruption', + effect: 'Der Anwender zerrt das Ziel mit Z-Kraft tief in den Boden und kollidiert dort mit ihm. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "tectonicRageSpecial": { - name: "Seismische Eruption", - effect: "Dummy Data" + 'tectonicRageSpecial': { + name: 'Seismische Eruption', + effect: 'Dummy Data' }, - "continentalCrushPhysical": { - name: "Apokalyptische Steinpresse", - effect: "Der Anwender beschwört mit Z-Kraft einen großen Felsen herbei und lässt ihn auf das Ziel fallen. Die Stärke variiert je nach zugrunde liegender Attacke." + 'continentalCrushPhysical': { + name: 'Apokalyptische Steinpresse', + effect: 'Der Anwender beschwört mit Z-Kraft einen großen Felsen herbei und lässt ihn auf das Ziel fallen. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "continentalCrushSpecial": { - name: "Apokalyptische Steinpresse", - effect: "Dummy Data" + 'continentalCrushSpecial': { + name: 'Apokalyptische Steinpresse', + effect: 'Dummy Data' }, - "savageSpinOutPhysical": { - name: "Wirbelnder Insektenhieb", - effect: "Mithilfe von Z-Kraft umwickelt der Anwender das Ziel mit Fäden. Die Stärke variiert je nach zugrunde liegender Attacke." + 'savageSpinOutPhysical': { + name: 'Wirbelnder Insektenhieb', + effect: 'Mithilfe von Z-Kraft umwickelt der Anwender das Ziel mit Fäden. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "savageSpinOutSpecial": { - name: "Wirbelnder Insektenhieb", - effect: "Dummy Data" + 'savageSpinOutSpecial': { + name: 'Wirbelnder Insektenhieb', + effect: 'Dummy Data' }, - "neverEndingNightmarePhysical": { - name: "Ewige Nacht", - effect: "Der Anwender beschwört mit Z-Kraft tiefen Groll herbei und lässt diesen auf das Ziel los. Die Stärke variiert je nach zugrunde liegender Attacke." + 'neverEndingNightmarePhysical': { + name: 'Ewige Nacht', + effect: 'Der Anwender beschwört mit Z-Kraft tiefen Groll herbei und lässt diesen auf das Ziel los. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "neverEndingNightmareSpecial": { - name: "Ewige Nacht", - effect: "Dummy Data" + 'neverEndingNightmareSpecial': { + name: 'Ewige Nacht', + effect: 'Dummy Data' }, - "corkscrewCrashPhysical": { - name: "Turbo-Spiralkombo", - effect: "Der Anwender wirbelt durch Z-Kraft sehr schnell umher und prallt mit dem Ziel zusammen. Die Stärke variiert je nach zugrunde liegender Attacke." + 'corkscrewCrashPhysical': { + name: 'Turbo-Spiralkombo', + effect: 'Der Anwender wirbelt durch Z-Kraft sehr schnell umher und prallt mit dem Ziel zusammen. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "corkscrewCrashSpecial": { - name: "Turbo-Spiralkombo", - effect: "Dummy Data" + 'corkscrewCrashSpecial': { + name: 'Turbo-Spiralkombo', + effect: 'Dummy Data' }, - "infernoOverdrivePhysical": { - name: "Dynamische Maxiflamme", - effect: "Der Anwender speit dank Z-Kraft eine gewaltige Kugel aus Flammen auf das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke." + 'infernoOverdrivePhysical': { + name: 'Dynamische Maxiflamme', + effect: 'Der Anwender speit dank Z-Kraft eine gewaltige Kugel aus Flammen auf das Ziel. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "infernoOverdriveSpecial": { - name: "Dynamische Maxiflamme", - effect: "Dummy Data" + 'infernoOverdriveSpecial': { + name: 'Dynamische Maxiflamme', + effect: 'Dummy Data' }, - "hydroVortexPhysical": { - name: "Super-Wassertornado", - effect: "Der Anwender kreiert mit Z-Kraft einen riesigen Wasserstrudel, der das Ziel verschluckt. Die Stärke variiert je nach zugrunde liegender Attacke." + 'hydroVortexPhysical': { + name: 'Super-Wassertornado', + effect: 'Der Anwender kreiert mit Z-Kraft einen riesigen Wasserstrudel, der das Ziel verschluckt. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "hydroVortexSpecial": { - name: "Super-Wassertornado", - effect: "Dummy Data" + 'hydroVortexSpecial': { + name: 'Super-Wassertornado', + effect: 'Dummy Data' }, - "bloomDoomPhysical": { - name: "Brillante Blütenpracht", - effect: "Der Anwender leiht sich durch Z-Kraft die Energie von Wiesenblumen und greift das Ziel damit an. Die Stärke variiert je nach zugrunde liegender Attacke." + 'bloomDoomPhysical': { + name: 'Brillante Blütenpracht', + effect: 'Der Anwender leiht sich durch Z-Kraft die Energie von Wiesenblumen und greift das Ziel damit an. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "bloomDoomSpecial": { - name: "Brillante Blütenpracht", - effect: "Dummy Data" + 'bloomDoomSpecial': { + name: 'Brillante Blütenpracht', + effect: 'Dummy Data' }, - "gigavoltHavocPhysical": { - name: "Gigavolt-Funkensalve", - effect: "Der Anwender greift das Ziel mit durch Z-Kraft gesammelter starker Elektrizität an. Die Stärke variiert je nach zugrunde liegender Attacke." + 'gigavoltHavocPhysical': { + name: 'Gigavolt-Funkensalve', + effect: 'Der Anwender greift das Ziel mit durch Z-Kraft gesammelter starker Elektrizität an. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "gigavoltHavocSpecial": { - name: "Gigavolt-Funkensalve", - effect: "Dummy Data" + 'gigavoltHavocSpecial': { + name: 'Gigavolt-Funkensalve', + effect: 'Dummy Data' }, - "shatteredPsychePhysical": { - name: "Psycho-Schmetterschlag", - effect: "Der Anwender kontrolliert das Ziel mit Z-Kraft und macht ihm so das Leben schwer. Die Stärke variiert je nach zugrunde liegender Attacke." + 'shatteredPsychePhysical': { + name: 'Psycho-Schmetterschlag', + effect: 'Der Anwender kontrolliert das Ziel mit Z-Kraft und macht ihm so das Leben schwer. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "shatteredPsycheSpecial": { - name: "Psycho-Schmetterschlag", - effect: "Dummy Data" + 'shatteredPsycheSpecial': { + name: 'Psycho-Schmetterschlag', + effect: 'Dummy Data' }, - "subzeroSlammerPhysical": { - name: "Tobender Geofrost", - effect: "Der Anwender senkt mit Z-Kraft die Temperatur drastisch und lässt das Ziel einfrieren. Die Stärke variiert je nach zugrunde liegender Attacke." + 'subzeroSlammerPhysical': { + name: 'Tobender Geofrost', + effect: 'Der Anwender senkt mit Z-Kraft die Temperatur drastisch und lässt das Ziel einfrieren. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "subzeroSlammerSpecial": { - name: "Tobender Geofrost", - effect: "Dummy Data" + 'subzeroSlammerSpecial': { + name: 'Tobender Geofrost', + effect: 'Dummy Data' }, - "devastatingDrakePhysical": { - name: "Drastisches Drachendröhnen", - effect: "Der Anwender materialisiert durch Z-Kraft seine Aura und greift damit das Ziel an. Die Stärke variiert je nach zugrunde liegender Attacke." + 'devastatingDrakePhysical': { + name: 'Drastisches Drachendröhnen', + effect: 'Der Anwender materialisiert durch Z-Kraft seine Aura und greift damit das Ziel an. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "devastatingDrakeSpecial": { - name: "Drastisches Drachendröhnen", - effect: "Dummy Data" + 'devastatingDrakeSpecial': { + name: 'Drastisches Drachendröhnen', + effect: 'Dummy Data' }, - "blackHoleEclipsePhysical": { - name: "Schwarzes Loch des Grauens", - effect: "Der Anwender sammelt mit Z-Kraft dunkle Energie an, die das Ziel verschlingt. Die Stärke variiert je nach zugrunde liegender Attacke." + 'blackHoleEclipsePhysical': { + name: 'Schwarzes Loch des Grauens', + effect: 'Der Anwender sammelt mit Z-Kraft dunkle Energie an, die das Ziel verschlingt. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "blackHoleEclipseSpecial": { - name: "Black Hole Eclipse", - effect: "Dummy Data" + 'blackHoleEclipseSpecial': { + name: 'Black Hole Eclipse', + effect: 'Dummy Data' }, - "twinkleTacklePhysical": { - name: "Entzückender Sternenstoß", - effect: "Der Anwender kreiert mit Z-Kraft eine zauberhafte Dimension und treibt dort sein Spiel mit dem Ziel. Die Stärke variiert je nach zugrunde liegender Attacke." + 'twinkleTacklePhysical': { + name: 'Entzückender Sternenstoß', + effect: 'Der Anwender kreiert mit Z-Kraft eine zauberhafte Dimension und treibt dort sein Spiel mit dem Ziel. Die Stärke variiert je nach zugrunde liegender Attacke.' }, - "twinkleTackleSpecial": { - name: "Twinkle Tackle", - effect: "Dummy Data" + 'twinkleTackleSpecial': { + name: 'Twinkle Tackle', + effect: 'Dummy Data' }, - "catastropika": { - name: "Perfektes Pika-Projektil", - effect: "Pikachu umhüllt sich durch Z-Kraft mit gewaltiger elektrischer Energie und stürzt sich mit voller Kraft auf das Ziel." + 'catastropika': { + name: 'Perfektes Pika-Projektil', + effect: 'Pikachu umhüllt sich durch Z-Kraft mit gewaltiger elektrischer Energie und stürzt sich mit voller Kraft auf das Ziel.' }, - "shoreUp": { - name: "Sandsammler", - effect: "KP des Anwenders werden um 50 % der maximalen KP aufgefüllt. Tobt ein Sandsturm, werden noch mehr KP aufgefüllt." + 'shoreUp': { + name: 'Sandsammler', + effect: 'KP des Anwenders werden um 50 % der maximalen KP aufgefüllt. Tobt ein Sandsturm, werden noch mehr KP aufgefüllt.' }, - "firstImpression": { - name: "Überrumpler", - effect: "Eine sehr starke Attacke, die jedoch nur erfolgreich ist, wenn sie sofort eingesetzt wird, nachdem der Anwender das Kampffeld betreten hat." + 'firstImpression': { + name: 'Überrumpler', + effect: 'Eine sehr starke Attacke, die jedoch nur erfolgreich ist, wenn sie sofort eingesetzt wird, nachdem der Anwender das Kampffeld betreten hat.' }, - "banefulBunker": { - name: "Bunker", - effect: "Der Anwender wird vor Angriffen geschützt. Gleichzeitig werden alle Pokémon, die mit ihm in Berührung kommen, vergiftet." + 'banefulBunker': { + name: 'Bunker', + effect: 'Der Anwender wird vor Angriffen geschützt. Gleichzeitig werden alle Pokémon, die mit ihm in Berührung kommen, vergiftet.' }, - "spiritShackle": { - name: "Schattenfessel", - effect: "Der Anwender greift das Ziel an und näht zugleich dessen Schatten am Boden fest, sodass es nicht entkommen kann." + 'spiritShackle': { + name: 'Schattenfessel', + effect: 'Der Anwender greift das Ziel an und näht zugleich dessen Schatten am Boden fest, sodass es nicht entkommen kann.' }, - "darkestLariat": { - name: "Dark Lariat", - effect: "Der Anwender wirbelt mit beiden Armen und prallt so auf das Ziel. Richtet unabhängig von den Statusveränderungen des Zieles Schaden an." + 'darkestLariat': { + name: 'Dark Lariat', + effect: 'Der Anwender wirbelt mit beiden Armen und prallt so auf das Ziel. Richtet unabhängig von den Statusveränderungen des Zieles Schaden an.' }, - "sparklingAria": { - name: "Schaumserenade", - effect: "Durch Gesang erzeugte Blasen werden auf das Ziel geschleudert. Alle Pokémon, die dadurch Schaden erleiden, werden auch von Verbrennungen geheilt." + 'sparklingAria': { + name: 'Schaumserenade', + effect: 'Durch Gesang erzeugte Blasen werden auf das Ziel geschleudert. Alle Pokémon, die dadurch Schaden erleiden, werden auch von Verbrennungen geheilt.' }, - "iceHammer": { - name: "Eishammer", - effect: "Anwender trifft mit einem starken Hieb. Senkt Initiative des Anwenders." + 'iceHammer': { + name: 'Eishammer', + effect: 'Anwender trifft mit einem starken Hieb. Senkt Initiative des Anwenders.' }, - "floralHealing": { - name: "Florakur", - effect: "KP des Zieles werden um 50 % der maximalen KP aufgefüllt. Die Wirkung steigt, wenn der Untergrund in ein Grasfeld verwandelt wurde." + 'floralHealing': { + name: 'Florakur', + effect: 'KP des Zieles werden um 50 % der maximalen KP aufgefüllt. Die Wirkung steigt, wenn der Untergrund in ein Grasfeld verwandelt wurde.' }, - "highHorsepower": { - name: "Pferdestärke", - effect: "Der Anwender greift das Ziel mit einer heftigen Ganzkörper-Attacke an." + 'highHorsepower': { + name: 'Pferdestärke', + effect: 'Der Anwender greift das Ziel mit einer heftigen Ganzkörper-Attacke an.' }, - "strengthSap": { - name: "Kraftabsorber", - effect: "Ein Angriff, der die KP des Anwenders um die Höhe des Angriffs-Werts des Zieles heilt. Anschließend wird der Angriff des Zieles gesenkt." + 'strengthSap': { + name: 'Kraftabsorber', + effect: 'Ein Angriff, der die KP des Anwenders um die Höhe des Angriffs-Werts des Zieles heilt. Anschließend wird der Angriff des Zieles gesenkt.' }, - "solarBlade": { - name: "Solarklinge", - effect: "Der Anwender absorbiert in der 1. Runde Licht, das er in der 2. Runde zu einem Schwert formt, mit dem er angreift." + 'solarBlade': { + name: 'Solarklinge', + effect: 'Der Anwender absorbiert in der 1. Runde Licht, das er in der 2. Runde zu einem Schwert formt, mit dem er angreift.' }, - "leafage": { - name: "Blattwerk", - effect: "Der Anwender greift das Ziel mit Blättern an." + 'leafage': { + name: 'Blattwerk', + effect: 'Der Anwender greift das Ziel mit Blättern an.' }, - "spotlight": { - name: "Rampenlicht", - effect: "Der Anwender lenkt die Aufmerksamkeit auf das Ziel, sodass in dieser Runde nur noch dieses Pokémon angegriffen wird." + 'spotlight': { + name: 'Rampenlicht', + effect: 'Der Anwender lenkt die Aufmerksamkeit auf das Ziel, sodass in dieser Runde nur noch dieses Pokémon angegriffen wird.' }, - "toxicThread": { - name: "Giftfaden", - effect: "Der Anwender schießt giftige Fäden auf das Ziel, das dadurch vergiftet wird. Außerdem sinkt seine Initiative." + 'toxicThread': { + name: 'Giftfaden', + effect: 'Der Anwender schießt giftige Fäden auf das Ziel, das dadurch vergiftet wird. Außerdem sinkt seine Initiative.' }, - "laserFocus": { - name: "Konzentration", - effect: "Der Anwender konzentriert sich, wodurch sein nächster Angriff garantiert ein Volltreffer wird." + 'laserFocus': { + name: 'Konzentration', + effect: 'Der Anwender konzentriert sich, wodurch sein nächster Angriff garantiert ein Volltreffer wird.' }, - "gearUp": { - name: "Hilfsmechanik", - effect: "Der Anwender erhöht mithilfe von Zahnrädern Angriff und Spezial-Angriff von Team-Pokémon mit der Fähigkeit Plus oder Minus." + 'gearUp': { + name: 'Hilfsmechanik', + effect: 'Der Anwender erhöht mithilfe von Zahnrädern Angriff und Spezial-Angriff von Team-Pokémon mit der Fähigkeit Plus oder Minus.' }, - "throatChop": { - name: "Neck Strike", - effect: "Das Pokémon, das von dieser Attacke getroffen wird, erleidet starke Schmerzen und kann deswegen zwei Runden lang keine Lärm-Attacken mehr einsetzen." + 'throatChop': { + name: 'Neck Strike', + effect: 'Das Pokémon, das von dieser Attacke getroffen wird, erleidet starke Schmerzen und kann deswegen zwei Runden lang keine Lärm-Attacken mehr einsetzen.' }, - "pollenPuff": { - name: "Pollenknödel", - effect: "Der Anwender greift mit einem Ball aus Pollen an, der beim Ziel explodiert. Mitstreiter werden von einem Ball getroffen, der ihre KP auffüllt." + 'pollenPuff': { + name: 'Pollenknödel', + effect: 'Der Anwender greift mit einem Ball aus Pollen an, der beim Ziel explodiert. Mitstreiter werden von einem Ball getroffen, der ihre KP auffüllt.' }, - "anchorShot": { - name: "Ankerschuss", - effect: "Der Anwender greift das Ziel an, indem er es mit einer Ankerkette umwickelt. Dadurch wird das Ziel an der Flucht gehindert." + 'anchorShot': { + name: 'Ankerschuss', + effect: 'Der Anwender greift das Ziel an, indem er es mit einer Ankerkette umwickelt. Dadurch wird das Ziel an der Flucht gehindert.' }, - "psychicTerrain": { - name: "Psychofeld", - effect: "Verhindert für fünf Runden, dass Pokémon am Boden von Attacken mit hoher Erstschlagquote getroffen werden. Erhöht die Stärke von Psycho-Attacken." + 'psychicTerrain': { + name: 'Psychofeld', + effect: 'Verhindert für fünf Runden, dass Pokémon am Boden von Attacken mit hoher Erstschlagquote getroffen werden. Erhöht die Stärke von Psycho-Attacken.' }, - "lunge": { - name: "Anfallen", - effect: "Der Anwender greift das Ziel mit ganzer Kraft an, wodurch auch der Angriffs-Wert des Zieles sinkt." + 'lunge': { + name: 'Anfallen', + effect: 'Der Anwender greift das Ziel mit ganzer Kraft an, wodurch auch der Angriffs-Wert des Zieles sinkt.' }, - "fireLash": { - name: "Feuerpeitsche", - effect: "Der Anwender greift das Ziel mit einer brennenden Peitsche an und senkt dabei zusätzlich dessen Verteidigungs-Wert." + 'fireLash': { + name: 'Feuerpeitsche', + effect: 'Der Anwender greift das Ziel mit einer brennenden Peitsche an und senkt dabei zusätzlich dessen Verteidigungs-Wert.' }, - "powerTrip": { - name: "Überheblichkeit", - effect: "Der Anwender prahlt mit seiner Stärke und greift das Ziel an. Dieser Angriff ist umso stärker, je weiter die Statuswerte des Anwenders erhöht sind." + 'powerTrip': { + name: 'Überheblichkeit', + effect: 'Der Anwender prahlt mit seiner Stärke und greift das Ziel an. Dieser Angriff ist umso stärker, je weiter die Statuswerte des Anwenders erhöht sind.' }, - "burnUp": { - name: "Ausbrennen", - effect: "Der Anwender nutzt das gesamte Feuer in seinem Körper, um großen Schaden auszuteilen. Die restliche Kampfdauer gehört er nicht mehr dem Typ Feuer an." + 'burnUp': { + name: 'Ausbrennen', + effect: 'Der Anwender nutzt das gesamte Feuer in seinem Körper, um großen Schaden auszuteilen. Die restliche Kampfdauer gehört er nicht mehr dem Typ Feuer an.' }, - "speedSwap": { - name: "Initiativetausch", - effect: "Der Anwender tauscht seinen Initiative-Wert mit dem des Zieles." + 'speedSwap': { + name: 'Initiativetausch', + effect: 'Der Anwender tauscht seinen Initiative-Wert mit dem des Zieles.' }, - "smartStrike": { - name: "Schmalhorn", - effect: "Der Anwender durchbohrt das Ziel mit seinem spitzen Horn. Diese Attacke trifft immer." + 'smartStrike': { + name: 'Schmalhorn', + effect: 'Der Anwender durchbohrt das Ziel mit seinem spitzen Horn. Diese Attacke trifft immer.' }, - "purify": { - name: "Läuterung", - effect: "Der Anwender heilt das Statusproblem des Zieles und füllt dadurch seine eigenen KP auf." + 'purify': { + name: 'Läuterung', + effect: 'Der Anwender heilt das Statusproblem des Zieles und füllt dadurch seine eigenen KP auf.' }, - "revelationDance": { - name: "Wecktanz", - effect: "Der Anwender tanzt und greift dabei das Ziel mit voller Kraft an. Die Attacke hat denselben Typ wie das Pokémon, das sie einsetzt." + 'revelationDance': { + name: 'Wecktanz', + effect: 'Der Anwender tanzt und greift dabei das Ziel mit voller Kraft an. Die Attacke hat denselben Typ wie das Pokémon, das sie einsetzt.' }, - "coreEnforcer": { - name: "Sanktionskern", - effect: "Hat das Pokémon, das durch diese Attacke Schaden genommen hat, in dieser Runde bereits gehandelt, verliert es seine Fähigkeit." + 'coreEnforcer': { + name: 'Sanktionskern', + effect: 'Hat das Pokémon, das durch diese Attacke Schaden genommen hat, in dieser Runde bereits gehandelt, verliert es seine Fähigkeit.' }, - "tropKick": { - name: "Tropenkick", - effect: "Der Anwender greift den Gegner mit einem heftigen Tritt tropischer Herkunft an. Dabei sinkt auch der Angriffs-Wert des Gegners." + 'tropKick': { + name: 'Tropenkick', + effect: 'Der Anwender greift den Gegner mit einem heftigen Tritt tropischer Herkunft an. Dabei sinkt auch der Angriffs-Wert des Gegners.' }, - "instruct": { - name: "Kommando", - effect: "Der Anwender befiehlt dem Ziel, dessen zuletzt ausgeführte Attacke sofort wieder einzusetzen." + 'instruct': { + name: 'Kommando', + effect: 'Der Anwender befiehlt dem Ziel, dessen zuletzt ausgeführte Attacke sofort wieder einzusetzen.' }, - "beakBlast": { - name: "Schnabelkanone", - effect: "Der Anwender erhitzt zuerst seinen Schnabel und greift dann an. Pokémon, die ihn während des Erhitzens berühren, erleiden Verbrennungen." + 'beakBlast': { + name: 'Schnabelkanone', + effect: 'Der Anwender erhitzt zuerst seinen Schnabel und greift dann an. Pokémon, die ihn während des Erhitzens berühren, erleiden Verbrennungen.' }, - "clangingScales": { - name: "Schuppenrasseln", - effect: "Der Anwender erzeugt durch das Rasseln mit seinen Schuppen ein lautes Geräusch und greift an. Anschließend sinkt seine Verteidigung." + 'clangingScales': { + name: 'Schuppenrasseln', + effect: 'Der Anwender erzeugt durch das Rasseln mit seinen Schuppen ein lautes Geräusch und greift an. Anschließend sinkt seine Verteidigung.' }, - "dragonHammer": { - name: "Drachenhammer", - effect: "Der Anwender nutzt seinen Körper wie einen Hammer und stürzt sich auf das Ziel, wodurch dieses Schaden erleidet." + 'dragonHammer': { + name: 'Drachenhammer', + effect: 'Der Anwender nutzt seinen Körper wie einen Hammer und stürzt sich auf das Ziel, wodurch dieses Schaden erleidet.' }, - "brutalSwing": { - name: "Wirbler", - effect: "Der Anwender dreht schwungvoll seinen Körper und fügt den Pokémon in seiner Nähe dabei Schaden zu." + 'brutalSwing': { + name: 'Wirbler', + effect: 'Der Anwender dreht schwungvoll seinen Körper und fügt den Pokémon in seiner Nähe dabei Schaden zu.' }, - "auroraVeil": { - name: "Auroraschleier", - effect: "Diese Attacke schwächt fünf Runden lang den durch physische sowie durch Spezial-Attacken erhaltenen Schaden. Kann nur bei Hagel eingesetzt werden." + 'auroraVeil': { + name: 'Auroraschleier', + effect: 'Diese Attacke schwächt fünf Runden lang den durch physische sowie durch Spezial-Attacken erhaltenen Schaden. Kann nur bei Hagel eingesetzt werden.' }, - "sinisterArrowRaid": { - name: "Schatten-Pfeilregen", - effect: "Silvarro stellt mit Z-Kraft unzählige Pfeile her und lässt diese auf das Ziel niederprasseln." + 'sinisterArrowRaid': { + name: 'Schatten-Pfeilregen', + effect: 'Silvarro stellt mit Z-Kraft unzählige Pfeile her und lässt diese auf das Ziel niederprasseln.' }, - "maliciousMoonsault": { - name: "Hyper Dark Crusher", - effect: "Mit seinem durch Z-Kraft gestählten Körper stürzt sich Fuegro mit ganzer Kraft auf das Ziel." + 'maliciousMoonsault': { + name: 'Hyper Dark Crusher', + effect: 'Mit seinem durch Z-Kraft gestählten Körper stürzt sich Fuegro mit ganzer Kraft auf das Ziel.' }, - "oceanicOperetta": { - name: "Grandiose Meeressymphonie", - effect: "Primarene ruft mit Z-Kraft große Mengen an Wasser herbei und greift damit das Ziel an." + 'oceanicOperetta': { + name: 'Grandiose Meeressymphonie', + effect: 'Primarene ruft mit Z-Kraft große Mengen an Wasser herbei und greift damit das Ziel an.' }, - "guardianOfAlola": { - name: "Alolas Wächter", - effect: "Ein gewaltiger Angriff des Schutzpatrons, der durch Z-Kraft die Kraft Alolas erlangt hat. Reduziert die verbleibenden KP des Zieles stark." + 'guardianOfAlola': { + name: 'Alolas Wächter', + effect: 'Ein gewaltiger Angriff des Schutzpatrons, der durch Z-Kraft die Kraft Alolas erlangt hat. Reduziert die verbleibenden KP des Zieles stark.' }, - "soulStealing7StarStrike": { - name: "Sternbild des Seelenraubes", - effect: "Marshadow schlägt mit durch Z-Kraft gestärkten Schlägen und Tritten in einer Serien-Attacke auf das Ziel ein." + 'soulStealing7StarStrike': { + name: 'Sternbild des Seelenraubes', + effect: 'Marshadow schlägt mit durch Z-Kraft gestärkten Schlägen und Tritten in einer Serien-Attacke auf das Ziel ein.' }, - "stokedSparksurfer": { - name: "Blitz-Wellenritt", - effect: "Das Alola-Raichu greift das Ziel mithilfe von Z-Kraft mit voller Wucht an und paralysiert es." + 'stokedSparksurfer': { + name: 'Blitz-Wellenritt', + effect: 'Das Alola-Raichu greift das Ziel mithilfe von Z-Kraft mit voller Wucht an und paralysiert es.' }, - "pulverizingPancake": { - name: "Schluss mit lustig", - effect: "Relaxo wird von Z-Kraft erfüllt und macht Ernst. Es bringt seinen riesigen Körper in Schwung und stürzt sich mit ganzer Kraft auf das Ziel." + 'pulverizingPancake': { + name: 'Schluss mit lustig', + effect: 'Relaxo wird von Z-Kraft erfüllt und macht Ernst. Es bringt seinen riesigen Körper in Schwung und stürzt sich mit ganzer Kraft auf das Ziel.' }, - "extremeEvoboost": { - name: "Macht der Neun", - effect: "Evoli macht sich durch Z-Kraft die Stärke seiner Weiterentwicklungen zunutze und erhöht seine Statuswerte stark." + 'extremeEvoboost': { + name: 'Macht der Neun', + effect: 'Evoli macht sich durch Z-Kraft die Stärke seiner Weiterentwicklungen zunutze und erhöht seine Statuswerte stark.' }, - "genesisSupernova": { - name: "Supernova des Ursprungs", - effect: "Mew greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Der Untergrund wird dabei in ein Psychofeld verwandelt." + 'genesisSupernova': { + name: 'Supernova des Ursprungs', + effect: 'Mew greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Der Untergrund wird dabei in ein Psychofeld verwandelt.' }, - "shellTrap": { - name: "Panzerfalle", - effect: "Der Anwender legt eine Panzerfalle. Wird er von einer physischen Attacke getroffen, explodiert die Falle und fügt dem Angreifer Schaden zu." + 'shellTrap': { + name: 'Panzerfalle', + effect: 'Der Anwender legt eine Panzerfalle. Wird er von einer physischen Attacke getroffen, explodiert die Falle und fügt dem Angreifer Schaden zu.' }, - "fleurCannon": { - name: "Kanonenbouquet", - effect: "Der Anwender greift das Ziel mit einem gewaltigen Strahl an. Sein eigener Spezial-Angriff sinkt dadurch stark." + 'fleurCannon': { + name: 'Kanonenbouquet', + effect: 'Der Anwender greift das Ziel mit einem gewaltigen Strahl an. Sein eigener Spezial-Angriff sinkt dadurch stark.' }, - "psychicFangs": { - name: "Psychobeißer", - effect: "Der Anwender beißt das Ziel mithilfe von Psycho-Kräften. Die Attacke durchbricht auch Barrieren wie Lichtschild und Reflektor." + 'psychicFangs': { + name: 'Psychobeißer', + effect: 'Der Anwender beißt das Ziel mithilfe von Psycho-Kräften. Die Attacke durchbricht auch Barrieren wie Lichtschild und Reflektor.' }, - "stompingTantrum": { - name: "Fruststampfer", - effect: "Von Frust getrieben greift der Anwender an. Wenn seine vorige Attacke fehlgeschlagen ist, verdoppelt sich die Stärke der Attacke." + 'stompingTantrum': { + name: 'Fruststampfer', + effect: 'Von Frust getrieben greift der Anwender an. Wenn seine vorige Attacke fehlgeschlagen ist, verdoppelt sich die Stärke der Attacke.' }, - "shadowBone": { - name: "Schattenknochen", - effect: "Der Anwender greift das Ziel mit einem Knochen an, in dem eine Seele haust. Senkt eventuell die Verteidigung des Zieles." + 'shadowBone': { + name: 'Schattenknochen', + effect: 'Der Anwender greift das Ziel mit einem Knochen an, in dem eine Seele haust. Senkt eventuell die Verteidigung des Zieles.' }, - "accelerock": { - name: "Turbofelsen", - effect: "Der Anwender prallt mit großer Geschwindigkeit auf das Ziel. Hohe Erstschlagquote." + 'accelerock': { + name: 'Turbofelsen', + effect: 'Der Anwender prallt mit großer Geschwindigkeit auf das Ziel. Hohe Erstschlagquote.' }, - "liquidation": { - name: "Aquadurchstoß", - effect: "Der Anwender greift das Ziel mit der Kraft des Wassers an. Senkt eventuell die Verteidigung des Zieles." + 'liquidation': { + name: 'Aquadurchstoß', + effect: 'Der Anwender greift das Ziel mit der Kraft des Wassers an. Senkt eventuell die Verteidigung des Zieles.' }, - "prismaticLaser": { - name: "Prisma-Laser", - effect: "Der Anwender feuert mithilfe von Prisma-Kraft mächtige Lichtstrahlen ab. In der nächsten Runde kann er nicht handeln." + 'prismaticLaser': { + name: 'Prisma-Laser', + effect: 'Der Anwender feuert mithilfe von Prisma-Kraft mächtige Lichtstrahlen ab. In der nächsten Runde kann er nicht handeln.' }, - "spectralThief": { - name: "Diebesschatten", - effect: "Der Anwender schleicht sich in den Schatten des Zieles, stiehlt dessen erhöhte Statuswerte und fügt ihm Schaden zu." + 'spectralThief': { + name: 'Diebesschatten', + effect: 'Der Anwender schleicht sich in den Schatten des Zieles, stiehlt dessen erhöhte Statuswerte und fügt ihm Schaden zu.' }, - "sunsteelStrike": { - name: "Stahlgestirn", - effect: "Der Anwender stürzt mit der Gewalt eines Meteors auf das Ziel. Die Fähigkeit des Zieles wird dabei ignoriert." + 'sunsteelStrike': { + name: 'Stahlgestirn', + effect: 'Der Anwender stürzt mit der Gewalt eines Meteors auf das Ziel. Die Fähigkeit des Zieles wird dabei ignoriert.' }, - "moongeistBeam": { - name: "Schattenstrahl", - effect: "Der Anwender greift mit einem unheimlichen Lichtstrahl an. Diese Attacke ignoriert die Fähigkeit des Zieles." + 'moongeistBeam': { + name: 'Schattenstrahl', + effect: 'Der Anwender greift mit einem unheimlichen Lichtstrahl an. Diese Attacke ignoriert die Fähigkeit des Zieles.' }, - "tearfulLook": { - name: "Tränendrüse", - effect: "Dem Anwender stehen Tränen in den Augen, wodurch das Ziel seinen Kampfeswillen verliert. Angriff und Spezial-Angriff des Zieles sinken." + 'tearfulLook': { + name: 'Tränendrüse', + effect: 'Dem Anwender stehen Tränen in den Augen, wodurch das Ziel seinen Kampfeswillen verliert. Angriff und Spezial-Angriff des Zieles sinken.' }, - "zingZap": { - name: "Elektropikser", - effect: "Der Anwender rammt das Ziel und schockt es mit starkem Strom. Das Ziel schreckt eventuell zurück." + 'zingZap': { + name: 'Elektropikser', + effect: 'Der Anwender rammt das Ziel und schockt es mit starkem Strom. Das Ziel schreckt eventuell zurück.' }, - "naturesMadness": { - name: "Naturzorn", - effect: "Das Ziel wird vom Zorn der Natur getroffen und verliert dadurch die Hälfte seiner KP." + 'naturesMadness': { + name: 'Naturzorn', + effect: 'Das Ziel wird vom Zorn der Natur getroffen und verliert dadurch die Hälfte seiner KP.' }, - "multiAttack": { - name: "Multi-Angriff", - effect: "Der Anwender sammelt eine große Menge Energie und greift das Ziel damit an. Der Typ der Attacke hängt von dem der Disc ab." + 'multiAttack': { + name: 'Multi-Angriff', + effect: 'Der Anwender sammelt eine große Menge Energie und greift das Ziel damit an. Der Typ der Attacke hängt von dem der Disc ab.' }, - "tenMillionVoltThunderbolt": { - name: "Tausendfacher Donnerblitz", - effect: "Das eine Kappe tragende Pikachu greift das Ziel mit einem durch Z-Kraft verstärkten Elektroschock an. Hohe Volltrefferquote." + 'tenMillionVoltThunderbolt': { + name: 'Tausendfacher Donnerblitz', + effect: 'Das eine Kappe tragende Pikachu greift das Ziel mit einem durch Z-Kraft verstärkten Elektroschock an. Hohe Volltrefferquote.' }, - "mindBlown": { - name: "Knallkopf", - effect: "Der Anwender greift alle Pokémon in der Umgebung an, indem er seinen Kopf explodieren lässt. Dabei verletzt er sich auch selbst." + 'mindBlown': { + name: 'Knallkopf', + effect: 'Der Anwender greift alle Pokémon in der Umgebung an, indem er seinen Kopf explodieren lässt. Dabei verletzt er sich auch selbst.' }, - "plasmaFists": { - name: "Plasmafäuste", - effect: "Ein Angriff mit elektrisch geladenen Fäusten, der bewirkt, dass Normal-Attacken den Typ Elektro annehmen." + 'plasmaFists': { + name: 'Plasmafäuste', + effect: 'Ein Angriff mit elektrisch geladenen Fäusten, der bewirkt, dass Normal-Attacken den Typ Elektro annehmen.' }, - "photonGeyser": { - name: "Photonen-Geysir", - effect: "Ein Angriff mit einer Lichtsäule. Ist der Angriff höher als der Spezial-Angriff, wird die Höhe des Schadens durch den Angriff bestimmt und umgekehrt." + 'photonGeyser': { + name: 'Photonen-Geysir', + effect: 'Ein Angriff mit einer Lichtsäule. Ist der Angriff höher als der Spezial-Angriff, wird die Höhe des Schadens durch den Angriff bestimmt und umgekehrt.' }, - "lightThatBurnsTheSky": { - name: "Licht des Erlöschens", - effect: "Ist der Angriff höher als der Spezial-Angriff, wird die Höhe des Schadens durch den Angriff bestimmt und umgekehrt. Ignoriert die Fähigkeit des Zieles." + 'lightThatBurnsTheSky': { + name: 'Licht des Erlöschens', + effect: 'Ist der Angriff höher als der Spezial-Angriff, wird die Höhe des Schadens durch den Angriff bestimmt und umgekehrt. Ignoriert die Fähigkeit des Zieles.' }, - "searingSunrazeSmash": { - name: "Schmetternde Sonnenwalze", - effect: "Solgaleo greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Ignoriert die Fähigkeit des Zieles." + 'searingSunrazeSmash': { + name: 'Schmetternde Sonnenwalze', + effect: 'Solgaleo greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Ignoriert die Fähigkeit des Zieles.' }, - "menacingMoonrazeMaelstrom": { - name: "Geballter Mondlaser", - effect: "Lunala greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Ignoriert die Fähigkeit des Zieles." + 'menacingMoonrazeMaelstrom': { + name: 'Geballter Mondlaser', + effect: 'Lunala greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Ignoriert die Fähigkeit des Zieles.' }, - "letsSnuggleForever": { - name: "Herzliche Knuddelkloppe", - effect: "Mimigma greift das Ziel mithilfe von Z-Kraft mit voller Wucht und viel Liebe an." + 'letsSnuggleForever': { + name: 'Herzliche Knuddelkloppe', + effect: 'Mimigma greift das Ziel mithilfe von Z-Kraft mit voller Wucht und viel Liebe an.' }, - "splinteredStormshards": { - name: "Fataler Steinregen", - effect: "Wolwerock greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Herrschen besondere Feldeffekte, werden diese zusätzlich neutralisiert." + 'splinteredStormshards': { + name: 'Fataler Steinregen', + effect: 'Wolwerock greift das Ziel mithilfe von Z-Kraft mit voller Wucht an. Herrschen besondere Feldeffekte, werden diese zusätzlich neutralisiert.' }, - "clangorousSoulblaze": { - name: "Rasselnder Seelentanz", - effect: "Grandiras greift Gegner mithilfe von Z-Kraft mit voller Wucht an. Zusätzlich werden seine Statuswerte erhöht." + 'clangorousSoulblaze': { + name: 'Rasselnder Seelentanz', + effect: 'Grandiras greift Gegner mithilfe von Z-Kraft mit voller Wucht an. Zusätzlich werden seine Statuswerte erhöht.' }, - "zippyZap": { - name: "Britzelturbo", - effect: "The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user's evasiveness." + 'zippyZap': { + name: 'Britzelturbo', + effect: 'The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user\'s evasiveness.' }, - "splishySplash": { - name: "Plätschersurfer", - effect: "Pikachu greift das Ziel mit einer großen, elektrisch aufgeladenen Welle an. Das Ziel wird eventuell paralysiert." + 'splishySplash': { + name: 'Plätschersurfer', + effect: 'Pikachu greift das Ziel mit einer großen, elektrisch aufgeladenen Welle an. Das Ziel wird eventuell paralysiert.' }, - "floatyFall": { - name: "Schwebesturz", - effect: "Pikachu schwebt nach oben und stürzt dann unvermittelt auf das Ziel herab. Das Ziel schreckt eventuell zurück." + 'floatyFall': { + name: 'Schwebesturz', + effect: 'Pikachu schwebt nach oben und stürzt dann unvermittelt auf das Ziel herab. Das Ziel schreckt eventuell zurück.' }, - "pikaPapow": { - name: "Pika-Flash", - effect: "Je größer Pikachus Vertrauen zu seinem Trainer ist, desto stärker fällt dieser Angriff aus. Diese Attacke trifft immer." + 'pikaPapow': { + name: 'Pika-Flash', + effect: 'Je größer Pikachus Vertrauen zu seinem Trainer ist, desto stärker fällt dieser Angriff aus. Diese Attacke trifft immer.' }, - "bouncyBubble": { - name: "Blubbsauger", - effect: "Evoli greift mit Wasserblasen an. Evolis KP werden um die Hälfte des vom Wasser angerichteten Schadens geheilt." + 'bouncyBubble': { + name: 'Blubbsauger', + effect: 'Evoli greift mit Wasserblasen an. Evolis KP werden um die Hälfte des vom Wasser angerichteten Schadens geheilt.' }, - "buzzyBuzz": { - name: "Knisterladung", - effect: "Evoli greift das Ziel mit Elektrizität an, wodurch dieses paralysiert wird." + 'buzzyBuzz': { + name: 'Knisterladung', + effect: 'Evoli greift das Ziel mit Elektrizität an, wodurch dieses paralysiert wird.' }, - "sizzlySlide": { - name: "Flackerbrand", - effect: "Evoli hüllt sich in Flammen und stürzt sich beherzt auf das Ziel, welches dadurch Verbrennungen erleidet." + 'sizzlySlide': { + name: 'Flackerbrand', + effect: 'Evoli hüllt sich in Flammen und stürzt sich beherzt auf das Ziel, welches dadurch Verbrennungen erleidet.' }, - "glitzyGlow": { - name: "Pulsieraura", - effect: "Evoli greift das Ziel gnadenlos mit telekinetischer Energie an. Dabei wird eine geheimnisvolle Wand erzeugt, die Spezial-Attacken des Ziels abschwächt." + 'glitzyGlow': { + name: 'Pulsieraura', + effect: 'Evoli greift das Ziel gnadenlos mit telekinetischer Energie an. Dabei wird eine geheimnisvolle Wand erzeugt, die Spezial-Attacken des Ziels abschwächt.' }, - "baddyBad": { - name: "Quälzone", - effect: "Evoli zeigt sich von seiner dunklen Seite und greift an. Dabei wird eine geheimnisvolle Wand erzeugt, die physische Attacken des Ziels abschwächt." + 'baddyBad': { + name: 'Quälzone', + effect: 'Evoli zeigt sich von seiner dunklen Seite und greift an. Dabei wird eine geheimnisvolle Wand erzeugt, die physische Attacken des Ziels abschwächt.' }, - "sappySeed": { - name: "Sprießbomben", - effect: "Evoli lässt eine riesige Ranke wachsen, von der Samen herabfallen, die dem Ziel schaden und ihm in jeder Runde KP absaugen." + 'sappySeed': { + name: 'Sprießbomben', + effect: 'Evoli lässt eine riesige Ranke wachsen, von der Samen herabfallen, die dem Ziel schaden und ihm in jeder Runde KP absaugen.' }, - "freezyFrost": { - name: "Klirrfrost", - effect: "Evoli greift mit einem schwarzen Kristall aus gefrorenem Nebel an. Die Statusveränderungen aller am Kampf beteiligten Pokémon werden zurückgesetzt." + 'freezyFrost': { + name: 'Klirrfrost', + effect: 'Evoli greift mit einem schwarzen Kristall aus gefrorenem Nebel an. Die Statusveränderungen aller am Kampf beteiligten Pokémon werden zurückgesetzt.' }, - "sparklySwirl": { - name: "Glitzersturm", - effect: "Evoli greift an, indem es das Ziel in einen nahezu erstickend wohlriechenden Wirbelwind hüllt. Das Team des Anwenders wird von Statusproblemen geheilt." + 'sparklySwirl': { + name: 'Glitzersturm', + effect: 'Evoli greift an, indem es das Ziel in einen nahezu erstickend wohlriechenden Wirbelwind hüllt. Das Team des Anwenders wird von Statusproblemen geheilt.' }, - "veeveeVolley": { - name: "Evo-Crash", - effect: "Je größer Evolis Vertrauen zu seinem Trainer ist, desto stärker fällt dieser Angriff aus. Diese Attacke trifft immer." + 'veeveeVolley': { + name: 'Evo-Crash', + effect: 'Je größer Evolis Vertrauen zu seinem Trainer ist, desto stärker fällt dieser Angriff aus. Diese Attacke trifft immer.' }, - "doubleIronBash": { - name: "Panzerfäuste", - effect: "Der Anwender rotiert um die Schraubenmutter in seinem Brustkorb und schlägt zweimal hintereinander mit den Armen zu. Das Ziel schreckt eventuell zurück." + 'doubleIronBash': { + name: 'Panzerfäuste', + effect: 'Der Anwender rotiert um die Schraubenmutter in seinem Brustkorb und schlägt zweimal hintereinander mit den Armen zu. Das Ziel schreckt eventuell zurück.' }, - "maxGuard": { - name: "Dyna-Wall", - effect: "Anwender wehrt jede Attacke ab. Scheitert eventuell bei Wiederholung." + 'maxGuard': { + name: 'Dyna-Wall', + effect: 'Anwender wehrt jede Attacke ab. Scheitert eventuell bei Wiederholung.' }, - "dynamaxCannon": { - name: "Dynamax-Kanone", - effect: "Der Anwender schießt einen Strahl aus seinem Kern ab. Dynamaximierte Ziele erleiden doppelten Schaden." + 'dynamaxCannon': { + name: 'Dynamax-Kanone', + effect: 'Der Anwender schießt einen Strahl aus seinem Kern ab. Dynamaximierte Ziele erleiden doppelten Schaden.' }, - "snipeShot": { - name: "Präzisionsschuss", - effect: "Die Attacke richtet sich gegen das ausgewählte Ziel, unabhängig von Fähigkeiten oder Attacken, die Angriffe auf sich ziehen." + 'snipeShot': { + name: 'Präzisionsschuss', + effect: 'Die Attacke richtet sich gegen das ausgewählte Ziel, unabhängig von Fähigkeiten oder Attacken, die Angriffe auf sich ziehen.' }, - "jawLock": { - name: "Fesselbiss", - effect: "Anwender und Ziel können nicht ausgetauscht werden, bis einer von ihnen kampfunfähig wird. Der Effekt endet, wenn eines der Pokémon das Kampffeld verlässt." + 'jawLock': { + name: 'Fesselbiss', + effect: 'Anwender und Ziel können nicht ausgetauscht werden, bis einer von ihnen kampfunfähig wird. Der Effekt endet, wenn eines der Pokémon das Kampffeld verlässt.' }, - "stuffCheeks": { - name: "Backenstopfer", - effect: "Der Anwender frisst die Beere, die er trägt, wodurch seine Verteidigung stark erhöht wird." + 'stuffCheeks': { + name: 'Backenstopfer', + effect: 'Der Anwender frisst die Beere, die er trägt, wodurch seine Verteidigung stark erhöht wird.' }, - "noRetreat": { - name: "Finalformation", - effect: "Alle Statuswerte des Anwenders werden erhöht, aber dafür kann er weder ausgewechselt werden noch fliehen." + 'noRetreat': { + name: 'Finalformation', + effect: 'Alle Statuswerte des Anwenders werden erhöht, aber dafür kann er weder ausgewechselt werden noch fliehen.' }, - "tarShot": { - name: "Teerschuss", - effect: "Der Anwender übergießt das Ziel mit klebrigem Teer und senkt so dessen Initiative. Dadurch wird es schwach gegenüber Feuer-Attacken." + 'tarShot': { + name: 'Teerschuss', + effect: 'Der Anwender übergießt das Ziel mit klebrigem Teer und senkt so dessen Initiative. Dadurch wird es schwach gegenüber Feuer-Attacken.' }, - "magicPowder": { - name: "Magiepuder", - effect: "Das Ziel wird mit magischem Puder bestreut und nimmt den Typ Psycho an." + 'magicPowder': { + name: 'Magiepuder', + effect: 'Das Ziel wird mit magischem Puder bestreut und nimmt den Typ Psycho an.' }, - "dragonDarts": { - name: "Drachenpfeile", - effect: "Der Anwender greift zweimal mit Grolldra an. Bei zwei Zielen werden beide jeweils einmal angegriffen." + 'dragonDarts': { + name: 'Drachenpfeile', + effect: 'Der Anwender greift zweimal mit Grolldra an. Bei zwei Zielen werden beide jeweils einmal angegriffen.' }, - "teatime": { - name: "Teatime", - effect: "Der Anwender lädt alle am Kampf beteiligten Pokémon zu einem Teekränzchen ein, woraufhin diese die Beeren essen, die sie bei sich tragen." + 'teatime': { + name: 'Teatime', + effect: 'Der Anwender lädt alle am Kampf beteiligten Pokémon zu einem Teekränzchen ein, woraufhin diese die Beeren essen, die sie bei sich tragen.' }, - "octolock": { - name: "Octoklammer", - effect: "Das Ziel wird an der Flucht gehindert und seine Verteidigung und Spezial-Verteidigung sinken jede Runde." + 'octolock': { + name: 'Octoklammer', + effect: 'Das Ziel wird an der Flucht gehindert und seine Verteidigung und Spezial-Verteidigung sinken jede Runde.' }, - "boltBeak": { - name: "Schockschnabel", - effect: "Der Anwender sticht mit einem elektrisch aufgeladenen Schnabel zu. Kommt er vor dem Ziel zum Zug, verdoppelt sich die Stärke der Attacke." + 'boltBeak': { + name: 'Schockschnabel', + effect: 'Der Anwender sticht mit einem elektrisch aufgeladenen Schnabel zu. Kommt er vor dem Ziel zum Zug, verdoppelt sich die Stärke der Attacke.' }, - "fishiousRend": { - name: "Kiemenbiss", - effect: "Der Anwender beißt mit seinen harten Kiemen zu. Kommt er vor dem Ziel zum Zug, verdoppelt sich die Stärke der Attacke." + 'fishiousRend': { + name: 'Kiemenbiss', + effect: 'Der Anwender beißt mit seinen harten Kiemen zu. Kommt er vor dem Ziel zum Zug, verdoppelt sich die Stärke der Attacke.' }, - "courtChange": { - name: "Seitenwechsel", - effect: "Durch eine mysteriöse Macht werden wirksame Effekte auf Mitstreiterseite und gegnerischer Seite getauscht." + 'courtChange': { + name: 'Seitenwechsel', + effect: 'Durch eine mysteriöse Macht werden wirksame Effekte auf Mitstreiterseite und gegnerischer Seite getauscht.' }, - "maxFlare": { - name: "Dyna-Brand", - effect: "Eine Feuer-Attacke, die nur Dynamax-Pokémon einsetzen können. Die Sonne brennt unbarmherzig fünf Runden lang." + 'maxFlare': { + name: 'Dyna-Brand', + effect: 'Eine Feuer-Attacke, die nur Dynamax-Pokémon einsetzen können. Die Sonne brennt unbarmherzig fünf Runden lang.' }, - "maxFlutterby": { - name: "Dyna-Schwarm", - effect: "Eine Käfer-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt den Spezial-Angriff des Zieles." + 'maxFlutterby': { + name: 'Dyna-Schwarm', + effect: 'Eine Käfer-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt den Spezial-Angriff des Zieles.' }, - "maxLightning": { - name: "Dyna-Gewitter", - effect: "Eine Elektro-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Elektrofeld." + 'maxLightning': { + name: 'Dyna-Gewitter', + effect: 'Eine Elektro-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Elektrofeld.' }, - "maxStrike": { - name: "Dyna-Angriff", - effect: "Eine Normal-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Initiative des Zieles." + 'maxStrike': { + name: 'Dyna-Angriff', + effect: 'Eine Normal-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Initiative des Zieles.' }, - "maxKnuckle": { - name: "Dyna-Faust", - effect: "Eine Kampf-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht den Angriff der Mitstreiterseite." + 'maxKnuckle': { + name: 'Dyna-Faust', + effect: 'Eine Kampf-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht den Angriff der Mitstreiterseite.' }, - "maxPhantasm": { - name: "Dyna-Spuk", - effect: "Eine Geister-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Verteidigung des Zieles." + 'maxPhantasm': { + name: 'Dyna-Spuk', + effect: 'Eine Geister-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Verteidigung des Zieles.' }, - "maxHailstorm": { - name: "Dyna-Frost", - effect: "Eine Eis-Attacke, die nur Dynamax-Pokémon einsetzen können. Lässt fünf Runden lang einen Hagelsturm toben." + 'maxHailstorm': { + name: 'Dyna-Frost', + effect: 'Eine Eis-Attacke, die nur Dynamax-Pokémon einsetzen können. Lässt fünf Runden lang einen Hagelsturm toben.' }, - "maxOoze": { - name: "Dyna-Giftschwall", - effect: "Eine Gift-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht den Spezial-Angriff der Mitstreiterseite." + 'maxOoze': { + name: 'Dyna-Giftschwall', + effect: 'Eine Gift-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht den Spezial-Angriff der Mitstreiterseite.' }, - "maxGeyser": { - name: "Dyna-Flut", - effect: "Eine Wasser-Attacke, die nur Dynamax-Pokémon einsetzen können. Löst fünf Runden lang strömenden Regen aus." + 'maxGeyser': { + name: 'Dyna-Flut', + effect: 'Eine Wasser-Attacke, die nur Dynamax-Pokémon einsetzen können. Löst fünf Runden lang strömenden Regen aus.' }, - "maxAirstream": { - name: "Dyna-Düse", - effect: "Eine Flug-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Initiative der Mitstreiterseite." + 'maxAirstream': { + name: 'Dyna-Düse', + effect: 'Eine Flug-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Initiative der Mitstreiterseite.' }, - "maxStarfall": { - name: "Dyna-Zauber", - effect: "Eine Feen-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Nebelfeld." + 'maxStarfall': { + name: 'Dyna-Zauber', + effect: 'Eine Feen-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Nebelfeld.' }, - "maxWyrmwind": { - name: "Dyna-Wyrm", - effect: "Eine Drachen-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt den Angriff des Zieles." + 'maxWyrmwind': { + name: 'Dyna-Wyrm', + effect: 'Eine Drachen-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt den Angriff des Zieles.' }, - "maxMindstorm": { - name: "Dyna-Kinese", - effect: "Eine Psycho-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Psychofeld." + 'maxMindstorm': { + name: 'Dyna-Kinese', + effect: 'Eine Psycho-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Psychofeld.' }, - "maxRockfall": { - name: "Dyna-Brocken", - effect: "Eine Gesteins-Attacke, die nur Dynamax-Pokémon einsetzen können. Lässt fünf Runden lang einen Sandsturm toben." + 'maxRockfall': { + name: 'Dyna-Brocken', + effect: 'Eine Gesteins-Attacke, die nur Dynamax-Pokémon einsetzen können. Lässt fünf Runden lang einen Sandsturm toben.' }, - "maxQuake": { - name: "Dyna-Erdstoß", - effect: "Eine Boden-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Spezial-Verteidigung der Mitstreiterseite." + 'maxQuake': { + name: 'Dyna-Erdstoß', + effect: 'Eine Boden-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Spezial-Verteidigung der Mitstreiterseite.' }, - "maxDarkness": { - name: "Dyna-Dunkel", - effect: "Eine Unlicht-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Spezial-Verteidigung des Zieles." + 'maxDarkness': { + name: 'Dyna-Dunkel', + effect: 'Eine Unlicht-Attacke, die nur Dynamax-Pokémon einsetzen können. Senkt die Spezial-Verteidigung des Zieles.' }, - "maxOvergrowth": { - name: "Dyna-Flora", - effect: "Eine Pflanzen-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Grasfeld." + 'maxOvergrowth': { + name: 'Dyna-Flora', + effect: 'Eine Pflanzen-Attacke, die nur Dynamax-Pokémon einsetzen können. Erzeugt fünf Runden lang ein Grasfeld.' }, - "maxSteelspike": { - name: "Dyna-Stahlzacken", - effect: "Eine Stahl-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Verteidigung der Mitstreiterseite." + 'maxSteelspike': { + name: 'Dyna-Stahlzacken', + effect: 'Eine Stahl-Attacke, die nur Dynamax-Pokémon einsetzen können. Erhöht die Verteidigung der Mitstreiterseite.' }, - "clangorousSoul": { - name: "Seelentanz", - effect: "Der Anwender setzt eine kleine Menge an KP ein, um alle seine Statuswerte zu erhöhen." + 'clangorousSoul': { + name: 'Seelentanz', + effect: 'Der Anwender setzt eine kleine Menge an KP ein, um alle seine Statuswerte zu erhöhen.' }, - "bodyPress": { - name: "Body Press", - effect: "Der Anwender greift mit seinem ganzen Körper an. Je höher seine Verteidigung ist, desto mehr Schaden richtet er an." + 'bodyPress': { + name: 'Body Press', + effect: 'Der Anwender greift mit seinem ganzen Körper an. Je höher seine Verteidigung ist, desto mehr Schaden richtet er an.' }, - "decorate": { - name: "Verzierung", - effect: "Durch Verzierungen werden der Angriff und Spezial-Angriff des Zieles stark erhöht." + 'decorate': { + name: 'Verzierung', + effect: 'Durch Verzierungen werden der Angriff und Spezial-Angriff des Zieles stark erhöht.' }, - "drumBeating": { - name: "Trommelschläge", - effect: "Der Anwender kontrolliert durch Trommeln Wurzeln, die das Ziel angreifen und dessen Initiative senken." + 'drumBeating': { + name: 'Trommelschläge', + effect: 'Der Anwender kontrolliert durch Trommeln Wurzeln, die das Ziel angreifen und dessen Initiative senken.' }, - "snapTrap": { - name: "Fangeisen", - effect: "Das Ziel wird vier bis fünf Runden lang in einem Fangeisen festgehalten und angegriffen." + 'snapTrap': { + name: 'Fangeisen', + effect: 'Das Ziel wird vier bis fünf Runden lang in einem Fangeisen festgehalten und angegriffen.' }, - "pyroBall": { - name: "Feuerball", - effect: "Der Anwender greift mit einem Ball aus Feuer an, den er durch Anzünden eines kleinen Steins erzeugt. Fügt dem Ziel eventuell Verbrennungen zu." + 'pyroBall': { + name: 'Feuerball', + effect: 'Der Anwender greift mit einem Ball aus Feuer an, den er durch Anzünden eines kleinen Steins erzeugt. Fügt dem Ziel eventuell Verbrennungen zu.' }, - "behemothBlade": { - name: "Gigantenhieb", - effect: "Der Anwender wird zu einem riesigen Schwert und greift das Ziel an. Dynamaximierte Ziele erleiden doppelten Schaden." + 'behemothBlade': { + name: 'Gigantenhieb', + effect: 'Der Anwender wird zu einem riesigen Schwert und greift das Ziel an. Dynamaximierte Ziele erleiden doppelten Schaden.' }, - "behemothBash": { - name: "Gigantenstoß", - effect: "Der Anwender wird zu einem riesigen Schild und greift das Ziel an. Dynamaximierte Ziele erleiden doppelten Schaden." + 'behemothBash': { + name: 'Gigantenstoß', + effect: 'Der Anwender wird zu einem riesigen Schild und greift das Ziel an. Dynamaximierte Ziele erleiden doppelten Schaden.' }, - "auraWheel": { - name: "Aura-Rad", - effect: "Mithilfe der in den Backentaschen gespeicherten Energie greift der Anwender an und erhöht seine Initiative. Der Typ der Attacke hängt von Morpekos Form ab." + 'auraWheel': { + name: 'Aura-Rad', + effect: 'Mithilfe der in den Backentaschen gespeicherten Energie greift der Anwender an und erhöht seine Initiative. Der Typ der Attacke hängt von Morpekos Form ab.' }, - "breakingSwipe": { - name: "Breitseite", - effect: "Der Anwender schwingt heftig seinen robusten Schweif, um damit gegnerische Pokémon anzugreifen und ihren Angriffs-Wert zu senken." + 'breakingSwipe': { + name: 'Breitseite', + effect: 'Der Anwender schwingt heftig seinen robusten Schweif, um damit gegnerische Pokémon anzugreifen und ihren Angriffs-Wert zu senken.' }, - "branchPoke": { - name: "Zweigstoß", - effect: "Der Anwender attackiert das Ziel mit einem spitzen Zweig." + 'branchPoke': { + name: 'Zweigstoß', + effect: 'Der Anwender attackiert das Ziel mit einem spitzen Zweig.' }, - "overdrive": { - name: "Overdrive", - effect: "Der Anwender haut in die Saiten seiner Gitarre oder seines Basses und erzeugt dröhnende, kraftvolle Vibrationen, die gegnerischen Pokémon schaden." + 'overdrive': { + name: 'Overdrive', + effect: 'Der Anwender haut in die Saiten seiner Gitarre oder seines Basses und erzeugt dröhnende, kraftvolle Vibrationen, die gegnerischen Pokémon schaden.' }, - "appleAcid": { - name: "Apfelsäure", - effect: "Der Anwender greift mit einer aus einem sauren Apfel hergestellten säurehaltigen Flüssigkeit an. Dabei wird die Spezial-Verteidigung des Zieles gesenkt." + 'appleAcid': { + name: 'Apfelsäure', + effect: 'Der Anwender greift mit einer aus einem sauren Apfel hergestellten säurehaltigen Flüssigkeit an. Dabei wird die Spezial-Verteidigung des Zieles gesenkt.' }, - "gravApple": { - name: "Gravitation", - effect: "Ein Apfel fällt aus großer Höhe herab und richtet Schaden an. Dabei wird die Verteidigung des Zieles gesenkt." + 'gravApple': { + name: 'Gravitation', + effect: 'Ein Apfel fällt aus großer Höhe herab und richtet Schaden an. Dabei wird die Verteidigung des Zieles gesenkt.' }, - "spiritBreak": { - name: "Seelenbruch", - effect: "Die Attacke trifft das Ziel mit so viel Wucht, dass es den Mut verliert. Dabei wird sein Spezial-Angriff gesenkt." + 'spiritBreak': { + name: 'Seelenbruch', + effect: 'Die Attacke trifft das Ziel mit so viel Wucht, dass es den Mut verliert. Dabei wird sein Spezial-Angriff gesenkt.' }, - "strangeSteam": { - name: "Wunderdampf", - effect: "Der Anwender stößt Dampf aus, mit dem er das Ziel angreift. Dieses wird eventuell verwirrt." + 'strangeSteam': { + name: 'Wunderdampf', + effect: 'Der Anwender stößt Dampf aus, mit dem er das Ziel angreift. Dieses wird eventuell verwirrt.' }, - "lifeDew": { - name: "Lebenstropfen", - effect: "Wundersames Wasser heilt die KP des Anwenders und seiner am Kampf beteiligten Mitstreiter." + 'lifeDew': { + name: 'Lebenstropfen', + effect: 'Wundersames Wasser heilt die KP des Anwenders und seiner am Kampf beteiligten Mitstreiter.' }, - "obstruct": { - name: "Abblocker", - effect: "Der Anwender wehrt jede Attacke ab. Berührt ihn währenddessen ein Pokémon, sinkt dessen Verteidigung stark. Scheitert eventuell bei Wiederholung." + 'obstruct': { + name: 'Abblocker', + effect: 'Der Anwender wehrt jede Attacke ab. Berührt ihn währenddessen ein Pokémon, sinkt dessen Verteidigung stark. Scheitert eventuell bei Wiederholung.' }, - "falseSurrender": { - name: "Kniefalltrick", - effect: "Der Anwender tut so, als würde er sich verneigen, und sticht dann mit seinem zerzausten Fell zu. Diese Attacke trifft immer." + 'falseSurrender': { + name: 'Kniefalltrick', + effect: 'Der Anwender tut so, als würde er sich verneigen, und sticht dann mit seinem zerzausten Fell zu. Diese Attacke trifft immer.' }, - "meteorAssault": { - name: "Sternensturm", - effect: "Der Anwender greift mit seiner Lauchstange an. Von der Wucht der Attacke wird ihm jedoch so schwindelig, dass er in der nächsten Runde nicht handeln kann." + 'meteorAssault': { + name: 'Sternensturm', + effect: 'Der Anwender greift mit seiner Lauchstange an. Von der Wucht der Attacke wird ihm jedoch so schwindelig, dass er in der nächsten Runde nicht handeln kann.' }, - "eternabeam": { - name: "Unendynastrahlen", - effect: "Der mächtigste Angriff, über den Endynalos in seiner ursprünglichen Form verfügt. In der nächsten Runde kann der Anwender nicht handeln." + 'eternabeam': { + name: 'Unendynastrahlen', + effect: 'Der mächtigste Angriff, über den Endynalos in seiner ursprünglichen Form verfügt. In der nächsten Runde kann der Anwender nicht handeln.' }, - "steelBeam": { - name: "Stahlstrahl", - effect: "Der Anwender schießt Stahl, den er in seinem ganzen Körper angesammelt hat, in Form eines mächtigen Strahls ab. Dabei verletzt er sich auch selbst." + 'steelBeam': { + name: 'Stahlstrahl', + effect: 'Der Anwender schießt Stahl, den er in seinem ganzen Körper angesammelt hat, in Form eines mächtigen Strahls ab. Dabei verletzt er sich auch selbst.' }, - "expandingForce": { - name: "Flächenmacht", - effect: "Der Anwender greift das Ziel mit Psycho-Kräften an. Wenn ein Psychofeld aktiv ist, steigt die Stärke und es wird allen gegnerischen Pokémon Schaden zugefügt." + 'expandingForce': { + name: 'Flächenmacht', + effect: 'Der Anwender greift das Ziel mit Psycho-Kräften an. Wenn ein Psychofeld aktiv ist, steigt die Stärke und es wird allen gegnerischen Pokémon Schaden zugefügt.' }, - "steelRoller": { - name: "Eisenwalze", - effect: "Der Anwender greift an und zerstört dabei etwaige Felder. Ist kein Feld aktiv, schlägt die Attacke fehl." + 'steelRoller': { + name: 'Eisenwalze', + effect: 'Der Anwender greift an und zerstört dabei etwaige Felder. Ist kein Feld aktiv, schlägt die Attacke fehl.' }, - "scaleShot": { - name: "Schuppenschuss", - effect: "Der Anwender greift das Ziel zwei- bis fünfmal hintereinander mit Schuppen-Geschossen an. Erhöht die eigene Initiative, aber senkt die Verteidigung." + 'scaleShot': { + name: 'Schuppenschuss', + effect: 'Der Anwender greift das Ziel zwei- bis fünfmal hintereinander mit Schuppen-Geschossen an. Erhöht die eigene Initiative, aber senkt die Verteidigung.' }, - "meteorBeam": { - name: "Meteorstrahl", - effect: "Der Anwender sammelt in Runde 1 kosmische Kräfte und erhöht damit seinen Spezial-Angriff, bevor er in Runde 2 das Ziel angreift." + 'meteorBeam': { + name: 'Meteorstrahl', + effect: 'Der Anwender sammelt in Runde 1 kosmische Kräfte und erhöht damit seinen Spezial-Angriff, bevor er in Runde 2 das Ziel angreift.' }, - "shellSideArm": { - name: "Muschelwaffe", - effect: "Je nachdem, was höher ausfällt, richtet diese Attacke entweder physischen oder Spezial-Schaden an. Das Ziel wird eventuell vergiftet." + 'shellSideArm': { + name: 'Muschelwaffe', + effect: 'Je nachdem, was höher ausfällt, richtet diese Attacke entweder physischen oder Spezial-Schaden an. Das Ziel wird eventuell vergiftet.' }, - "mistyExplosion": { - name: "Nebelexplosion", - effect: "Der Anwender greift alle Pokémon im Umkreis an und wird danach kampfunfähig. Die Stärke dieser Attacke steigt, wenn ein Nebelfeld aktiv ist." + 'mistyExplosion': { + name: 'Nebelexplosion', + effect: 'Der Anwender greift alle Pokémon im Umkreis an und wird danach kampfunfähig. Die Stärke dieser Attacke steigt, wenn ein Nebelfeld aktiv ist.' }, - "grassyGlide": { - name: "Grasrutsche", - effect: "Der Anwender rutscht über den Boden und greift das Ziel an. Ermöglicht den Erstschlag, wenn ein Grasfeld aktiv ist." + 'grassyGlide': { + name: 'Grasrutsche', + effect: 'Der Anwender rutscht über den Boden und greift das Ziel an. Ermöglicht den Erstschlag, wenn ein Grasfeld aktiv ist.' }, - "risingVoltage": { - name: "Hochspannung", - effect: "Der Anwender greift mit aus dem Boden aufsteigender Elektrizität an. Die Stärke der Attacke wird verdoppelt, wenn beim Gegner ein Elektrofeld aktiv ist." + 'risingVoltage': { + name: 'Hochspannung', + effect: 'Der Anwender greift mit aus dem Boden aufsteigender Elektrizität an. Die Stärke der Attacke wird verdoppelt, wenn beim Gegner ein Elektrofeld aktiv ist.' }, - "terrainPulse": { - name: "Feldimpuls", - effect: "Der Anwender nutzt die Kraft des aktiven Feldes für seinen Angriff. Der Typ und die Stärke der Attacke ändern sich je nach Art des aktiven Feldes." + 'terrainPulse': { + name: 'Feldimpuls', + effect: 'Der Anwender nutzt die Kraft des aktiven Feldes für seinen Angriff. Der Typ und die Stärke der Attacke ändern sich je nach Art des aktiven Feldes.' }, - "skitterSmack": { - name: "Krabbelkracher", - effect: "Der Anwender kriecht hinter das Ziel, greift es an und senkt dabei dessen Spezial-Angriff." + 'skitterSmack': { + name: 'Krabbelkracher', + effect: 'Der Anwender kriecht hinter das Ziel, greift es an und senkt dabei dessen Spezial-Angriff.' }, - "burningJealousy": { - name: "Neidflammen", - effect: "Der Anwender greift mit der Energie seines Neids an und fügt allen gegnerischen Pokémon, deren Statuswerte in dieser Runde erhöht wurden, Verbrennungen zu." + 'burningJealousy': { + name: 'Neidflammen', + effect: 'Der Anwender greift mit der Energie seines Neids an und fügt allen gegnerischen Pokémon, deren Statuswerte in dieser Runde erhöht wurden, Verbrennungen zu.' }, - "lashOut": { - name: "Frustventil", - effect: "Der Anwender entlädt seinen Frust in einem Angriff. Die Stärke der Attacke wird verdoppelt, wenn seine Statuswerte in dieser Runde gesenkt wurden." + 'lashOut': { + name: 'Frustventil', + effect: 'Der Anwender entlädt seinen Frust in einem Angriff. Die Stärke der Attacke wird verdoppelt, wenn seine Statuswerte in dieser Runde gesenkt wurden.' }, - "poltergeist": { - name: "Poltergeist", - effect: "Der Anwender greift das Ziel mit dessen getragenem Item an. Die Attacke schlägt fehl, wenn das Ziel kein Item trägt." + 'poltergeist': { + name: 'Poltergeist', + effect: 'Der Anwender greift das Ziel mit dessen getragenem Item an. Die Attacke schlägt fehl, wenn das Ziel kein Item trägt.' }, - "corrosiveGas": { - name: "Korrosionsgas", - effect: "Der Anwender greift alle Pokémon im Umkreis mit einem ätzenden Gas an. Getragene Items werden dadurch zersetzt." + 'corrosiveGas': { + name: 'Korrosionsgas', + effect: 'Der Anwender greift alle Pokémon im Umkreis mit einem ätzenden Gas an. Getragene Items werden dadurch zersetzt.' }, - "coaching": { - name: "Coaching", - effect: "Der Anwender sorgt durch geschickte Anweisungen dafür, dass der Angriff und die Verteidigung seiner Mitstreiter steigen." + 'coaching': { + name: 'Coaching', + effect: 'Der Anwender sorgt durch geschickte Anweisungen dafür, dass der Angriff und die Verteidigung seiner Mitstreiter steigen.' }, - "flipTurn": { - name: "Rollwende", - effect: "Nach der Attacke eilt der Anwender zurück und tauscht den Platz mit einem anderen Pokémon." + 'flipTurn': { + name: 'Rollwende', + effect: 'Nach der Attacke eilt der Anwender zurück und tauscht den Platz mit einem anderen Pokémon.' }, - "tripleAxel": { - name: "Dreifach-Axel", - effect: "Tritt das Ziel ein- bis dreimal nacheinander. Die Härte der Tritte nimmt von Treffer zu Treffer zu." + 'tripleAxel': { + name: 'Dreifach-Axel', + effect: 'Tritt das Ziel ein- bis dreimal nacheinander. Die Härte der Tritte nimmt von Treffer zu Treffer zu.' }, - "dualWingbeat": { - name: "Doppelflügel", - effect: "Der Anwender trifft das Ziel zweimal hintereinander mit seinen Flügeln und fügt ihm so Schaden zu." + 'dualWingbeat': { + name: 'Doppelflügel', + effect: 'Der Anwender trifft das Ziel zweimal hintereinander mit seinen Flügeln und fügt ihm so Schaden zu.' }, - "scorchingSands": { - name: "Brandsand", - effect: "Der Anwender greift das Ziel mit brennend heißem Sand an und fügt ihm eventuell Verbrennungen zu." + 'scorchingSands': { + name: 'Brandsand', + effect: 'Der Anwender greift das Ziel mit brennend heißem Sand an und fügt ihm eventuell Verbrennungen zu.' }, - "jungleHealing": { - name: "Dschungelheilung", - effect: "Der Anwender wird eins mit dem Dschungel und heilt bei sich und seinen am Kampf beteiligten Mitstreitern KP und hebt jegliche Statusprobleme auf." + 'jungleHealing': { + name: 'Dschungelheilung', + effect: 'Der Anwender wird eins mit dem Dschungel und heilt bei sich und seinen am Kampf beteiligten Mitstreitern KP und hebt jegliche Statusprobleme auf.' }, - "wickedBlow": { - name: "Finstertreffer", - effect: "Der Anwender hat den Stil des Unlichts gemeistert und führt einen fokussierten, harten Schlag mit Volltreffergarantie aus." + 'wickedBlow': { + name: 'Finstertreffer', + effect: 'Der Anwender hat den Stil des Unlichts gemeistert und führt einen fokussierten, harten Schlag mit Volltreffergarantie aus.' }, - "surgingStrikes": { - name: "Trefferschwall", - effect: "Der Anwender hat den Stil des Wassers gemeistert und führt mit fließenden Bewegungen drei Angriffe in Folge mit Volltreffergarantie aus." + 'surgingStrikes': { + name: 'Trefferschwall', + effect: 'Der Anwender hat den Stil des Wassers gemeistert und führt mit fließenden Bewegungen drei Angriffe in Folge mit Volltreffergarantie aus.' }, - "thunderCage": { - name: "Blitzgefängnis", - effect: "Das Ziel wird für vier bis fünf Runden in einem elektrischen Käfig gefangen." + 'thunderCage': { + name: 'Blitzgefängnis', + effect: 'Das Ziel wird für vier bis fünf Runden in einem elektrischen Käfig gefangen.' }, - "dragonEnergy": { - name: "Drachenkräfte", - effect: "Der Anwender wandelt seine Lebenskraft in Energie um und greift gegnerische Pokémon an. Je höher seine KP sind, desto mehr Schaden wird angerichtet." + 'dragonEnergy': { + name: 'Drachenkräfte', + effect: 'Der Anwender wandelt seine Lebenskraft in Energie um und greift gegnerische Pokémon an. Je höher seine KP sind, desto mehr Schaden wird angerichtet.' }, - "freezingGlare": { - name: "Eisiger Blick", - effect: "Der Anwender greift das Ziel mit Psycho-Kräften an, die er aus seinen Augen abschießt. Das Ziel friert eventuell ein." + 'freezingGlare': { + name: 'Eisiger Blick', + effect: 'Der Anwender greift das Ziel mit Psycho-Kräften an, die er aus seinen Augen abschießt. Das Ziel friert eventuell ein.' }, - "fieryWrath": { - name: "Brennender Zorn", - effect: "Der Anwender wandelt seinen Zorn in eine flammende Aura um und greift damit gegnerische Pokémon an. Diese schrecken eventuell zurück." + 'fieryWrath': { + name: 'Brennender Zorn', + effect: 'Der Anwender wandelt seinen Zorn in eine flammende Aura um und greift damit gegnerische Pokémon an. Diese schrecken eventuell zurück.' }, - "thunderousKick": { - name: "Donnernder Tritt", - effect: "Der Anwender bringt das Ziel mit blitzschnellen Bewegungen durcheinander und tritt dann zu. Senkt die Verteidigung des Zieles." + 'thunderousKick': { + name: 'Donnernder Tritt', + effect: 'Der Anwender bringt das Ziel mit blitzschnellen Bewegungen durcheinander und tritt dann zu. Senkt die Verteidigung des Zieles.' }, - "glacialLance": { - name: "Blizzardlanze", - effect: "Der Anwender wirft eine in einen Blizzard gehüllte Lanze aus Eis auf gegnerische Pokémon." + 'glacialLance': { + name: 'Blizzardlanze', + effect: 'Der Anwender wirft eine in einen Blizzard gehüllte Lanze aus Eis auf gegnerische Pokémon.' }, - "astralBarrage": { - name: "Astralfragmente", - effect: "Der Anwender greift gegnerische Pokémon mit vielen kleinen Spukgestalten an." + 'astralBarrage': { + name: 'Astralfragmente', + effect: 'Der Anwender greift gegnerische Pokémon mit vielen kleinen Spukgestalten an.' }, - "eerieSpell": { - name: "Schauderspruch", - effect: "Der Anwender greift mit gewaltigen Psycho-Kräften an. Die AP der letzten Attacke des Zieles werden um 3 Punkte gesenkt." + 'eerieSpell': { + name: 'Schauderspruch', + effect: 'Der Anwender greift mit gewaltigen Psycho-Kräften an. Die AP der letzten Attacke des Zieles werden um 3 Punkte gesenkt.' }, - "direClaw": { - name: "Unheilsklauen", - effect: "Der Anwender greift mit zerstörerischen Klauen an. Das Ziel wird eventuell vergiftet, paralysiert oder in Schlaf versetzt." + 'direClaw': { + name: 'Unheilsklauen', + effect: 'Der Anwender greift mit zerstörerischen Klauen an. Das Ziel wird eventuell vergiftet, paralysiert oder in Schlaf versetzt.' }, - "psyshieldBash": { - name: "Barrierenstoß", - effect: "Der Anwender hüllt sich in Psycho-Energie und rammt das Ziel. Außerdem steigt seine Verteidigung." + 'psyshieldBash': { + name: 'Barrierenstoß', + effect: 'Der Anwender hüllt sich in Psycho-Energie und rammt das Ziel. Außerdem steigt seine Verteidigung.' }, - "powerShift": { - name: "Kraftwechsel", - effect: "Der Anwender tauscht seinen Angriff mit seiner Verteidigung." + 'powerShift': { + name: 'Kraftwechsel', + effect: 'Der Anwender tauscht seinen Angriff mit seiner Verteidigung.' }, - "stoneAxe": { - name: "Felsaxt", - effect: "Der Anwender greift mit seinen Felsäxten an. Dadurch verstreut er schwebende Felssplitter im Umkreis des Zieles." + 'stoneAxe': { + name: 'Felsaxt', + effect: 'Der Anwender greift mit seinen Felsäxten an. Dadurch verstreut er schwebende Felssplitter im Umkreis des Zieles.' }, - "springtideStorm": { - name: "Frühlingsorkan", - effect: "Der Anwender greift gegnerische Pokémon an, indem er sie mit heftigen Windböen voller Hassliebe umgibt. Eventuell sinkt ihr Angriff." + 'springtideStorm': { + name: 'Frühlingsorkan', + effect: 'Der Anwender greift gegnerische Pokémon an, indem er sie mit heftigen Windböen voller Hassliebe umgibt. Eventuell sinkt ihr Angriff.' }, - "mysticalPower": { - name: "Mythenkraft", - effect: "Der Anwender greift mit einer wundersamen Kraft an. Außerdem steigt sein Spezial-Angriff." + 'mysticalPower': { + name: 'Mythenkraft', + effect: 'Der Anwender greift mit einer wundersamen Kraft an. Außerdem steigt sein Spezial-Angriff.' }, - "ragingFury": { - name: "Flammenwut", - effect: "Der Anwender wütet zwei bis drei Runden lang und speit heftige Flammen aus. Danach wird er verwirrt." + 'ragingFury': { + name: 'Flammenwut', + effect: 'Der Anwender wütet zwei bis drei Runden lang und speit heftige Flammen aus. Danach wird er verwirrt.' }, - "waveCrash": { - name: "Wellentackle", - effect: "Der Anwender hüllt sich in Wasser und stürzt sich mit dem ganzen Körper auf das Ziel, wobei er selbst großen Schaden erleidet." + 'waveCrash': { + name: 'Wellentackle', + effect: 'Der Anwender hüllt sich in Wasser und stürzt sich mit dem ganzen Körper auf das Ziel, wobei er selbst großen Schaden erleidet.' }, - "chloroblast": { - name: "Chlorostrahl", - effect: "Der Anwender greift mit einer hohen Konzentration seines Chlorophylls an, wobei er selbst Schaden erleidet." + 'chloroblast': { + name: 'Chlorostrahl', + effect: 'Der Anwender greift mit einer hohen Konzentration seines Chlorophylls an, wobei er selbst Schaden erleidet.' }, - "mountainGale": { - name: "Frostfallwind", - effect: "Der Anwender wirft gigantische Eisbrocken auf das Ziel. Dieses schreckt eventuell zurück." + 'mountainGale': { + name: 'Frostfallwind', + effect: 'Der Anwender wirft gigantische Eisbrocken auf das Ziel. Dieses schreckt eventuell zurück.' }, - "victoryDance": { - name: "Siegestanz", - effect: "Der Anwender führt einen wilden Tanz auf, der den Sieg herbeiführen soll. Dies erhöht seinen Angriff, seine Verteidigung und seine Initiative." + 'victoryDance': { + name: 'Siegestanz', + effect: 'Der Anwender führt einen wilden Tanz auf, der den Sieg herbeiführen soll. Dies erhöht seinen Angriff, seine Verteidigung und seine Initiative.' }, - "headlongRush": { - name: "Schmetterramme", - effect: "Der Anwender rammt das Ziel mit dem ganzen Körper. Dadurch sinken die Verteidigung und Spezial-Verteidigung des Anwenders." + 'headlongRush': { + name: 'Schmetterramme', + effect: 'Der Anwender rammt das Ziel mit dem ganzen Körper. Dadurch sinken die Verteidigung und Spezial-Verteidigung des Anwenders.' }, - "barbBarrage": { - name: "Giftstachelregen", - effect: "Der Anwender greift mit unzähligen Giftstacheln an und vergiftet das Ziel eventuell. Doppelt so stark gegen vergiftete Ziele." + 'barbBarrage': { + name: 'Giftstachelregen', + effect: 'Der Anwender greift mit unzähligen Giftstacheln an und vergiftet das Ziel eventuell. Doppelt so stark gegen vergiftete Ziele.' }, - "esperWing": { - name: "Auraschwingen", - effect: "Ein schneidender Angriff mit durch eine Aura verstärkten Schwingen, der außerdem die Initiative des Anwenders erhöht. Hohe Volltrefferquote." + 'esperWing': { + name: 'Auraschwingen', + effect: 'Ein schneidender Angriff mit durch eine Aura verstärkten Schwingen, der außerdem die Initiative des Anwenders erhöht. Hohe Volltrefferquote.' }, - "bitterMalice": { - name: "Niedertracht", - effect: "Der Anwender greift mit eiskaltem, schaudererregendem Hass an und senkt dabei den Angriff des Zieles." + 'bitterMalice': { + name: 'Niedertracht', + effect: 'Der Anwender greift mit eiskaltem, schaudererregendem Hass an und senkt dabei den Angriff des Zieles.' }, - "shelter": { - name: "Refugium", - effect: "Der Anwender macht seine Haut so hart wie Eisen und erhöht dadurch seine Verteidigung stark." + 'shelter': { + name: 'Refugium', + effect: 'Der Anwender macht seine Haut so hart wie Eisen und erhöht dadurch seine Verteidigung stark.' }, - "tripleArrows": { - name: "Drillingspfeile", - effect: "Der Anwender tritt zu und schießt dann drei Pfeile ab. Senkt eventuell die Verteidigung des Zieles oder lässt es zurückschrecken. Hohe Volltrefferquote." + 'tripleArrows': { + name: 'Drillingspfeile', + effect: 'Der Anwender tritt zu und schießt dann drei Pfeile ab. Senkt eventuell die Verteidigung des Zieles oder lässt es zurückschrecken. Hohe Volltrefferquote.' }, - "infernalParade": { - name: "Phantomparade", - effect: "Angriff mit unzähligen Feuerkugeln, der dem Ziel eventuell Verbrennungen zufügt. Doppelt so stark gegen Ziele mit Statusproblemen." + 'infernalParade': { + name: 'Phantomparade', + effect: 'Angriff mit unzähligen Feuerkugeln, der dem Ziel eventuell Verbrennungen zufügt. Doppelt so stark gegen Ziele mit Statusproblemen.' }, - "ceaselessEdge": { - name: "Klingenschwall", - effect: "Der Anwender greift mit einer klingengleichen Muschelschale an und verstreut Muschelsplitter, die Stacheln zu Füßen des Zieles werden." + 'ceaselessEdge': { + name: 'Klingenschwall', + effect: 'Der Anwender greift mit einer klingengleichen Muschelschale an und verstreut Muschelsplitter, die Stacheln zu Füßen des Zieles werden.' }, - "bleakwindStorm": { - name: "Polarorkan", - effect: "Der Anwender greift mit starken, kalten Winden an, die Körper und Geist erzittern lassen. Senkt eventuell die Initiative gegnerischer Pokémon." + 'bleakwindStorm': { + name: 'Polarorkan', + effect: 'Der Anwender greift mit starken, kalten Winden an, die Körper und Geist erzittern lassen. Senkt eventuell die Initiative gegnerischer Pokémon.' }, - "wildboltStorm": { - name: "Donnerorkan", - effect: "Der Anwender ruft ein heftiges Unwetter herbei, um mit Wind und Blitzen anzugreifen. Gegnerische Pokémon werden eventuell paralysiert." + 'wildboltStorm': { + name: 'Donnerorkan', + effect: 'Der Anwender ruft ein heftiges Unwetter herbei, um mit Wind und Blitzen anzugreifen. Gegnerische Pokémon werden eventuell paralysiert.' }, - "sandsearStorm": { - name: "Wüstenorkan", - effect: "Der Anwender greift gegnerische Pokémon an, indem er sie mit heftigen Windböen und brennend heißem Sand umgibt. Eventuell erleiden sie Verbrennungen." + 'sandsearStorm': { + name: 'Wüstenorkan', + effect: 'Der Anwender greift gegnerische Pokémon an, indem er sie mit heftigen Windböen und brennend heißem Sand umgibt. Eventuell erleiden sie Verbrennungen.' }, - "lunarBlessing": { - name: "Lunargebet", - effect: "Der Anwender richtet ein Gebet an den Mond und heilt bei sich und seinen am Kampf beteiligten Mitstreitern KP und hebt jegliche Statusprobleme auf." + 'lunarBlessing': { + name: 'Lunargebet', + effect: 'Der Anwender richtet ein Gebet an den Mond und heilt bei sich und seinen am Kampf beteiligten Mitstreitern KP und hebt jegliche Statusprobleme auf.' }, - "takeHeart": { - name: "Mutschub", - effect: "Der Anwender fasst sich ein Herz, befreit sich von Statusproblemen und erhöht außerdem seinen Spezial-Angriff und seine Spezial-Verteidigung." + 'takeHeart': { + name: 'Mutschub', + effect: 'Der Anwender fasst sich ein Herz, befreit sich von Statusproblemen und erhöht außerdem seinen Spezial-Angriff und seine Spezial-Verteidigung.' }, - "gMaxWildfire": { - name: "Giga-Feuerflug", - effect: "Eine Feuer-Attacke, die nur Gigadynamax-Glurak einsetzen kann. Fügt vier Runden lang Schaden zu." + 'gMaxWildfire': { + name: 'Giga-Feuerflug', + effect: 'Eine Feuer-Attacke, die nur Gigadynamax-Glurak einsetzen kann. Fügt vier Runden lang Schaden zu.' }, - "gMaxBefuddle": { - name: "Giga-Benebelung", - effect: "Eine Käfer-Attacke, die nur Gigadynamax-Smettbo einsetzen kann. Gegnerische Pokémon werden entweder vergiftet, paralysiert oder in Schlaf versetzt." + 'gMaxBefuddle': { + name: 'Giga-Benebelung', + effect: 'Eine Käfer-Attacke, die nur Gigadynamax-Smettbo einsetzen kann. Gegnerische Pokémon werden entweder vergiftet, paralysiert oder in Schlaf versetzt.' }, - "gMaxVoltCrash": { - name: "Giga-Blitzhagel", - effect: "Eine Elektro-Attacke, die nur Gigadynamax-Pikachu einsetzen kann. Gegnerische Pokémon werden paralysiert." + 'gMaxVoltCrash': { + name: 'Giga-Blitzhagel', + effect: 'Eine Elektro-Attacke, die nur Gigadynamax-Pikachu einsetzen kann. Gegnerische Pokémon werden paralysiert.' }, - "gMaxGoldRush": { - name: "Giga-Münzregen", - effect: "Eine Normal-Attacke, die nur Gigadynamax-Mauzi einsetzen kann. Verwirrt Gegner und bringt nach dem Kampf Geld ein." + 'gMaxGoldRush': { + name: 'Giga-Münzregen', + effect: 'Eine Normal-Attacke, die nur Gigadynamax-Mauzi einsetzen kann. Verwirrt Gegner und bringt nach dem Kampf Geld ein.' }, - "gMaxChiStrike": { - name: "Giga-Fokusschlag", - effect: "Eine Kampf-Attacke, die nur Gigadynamax-Machomei einsetzen kann. Erhöht die Volltrefferquote auf Mitstreiterseite." + 'gMaxChiStrike': { + name: 'Giga-Fokusschlag', + effect: 'Eine Kampf-Attacke, die nur Gigadynamax-Machomei einsetzen kann. Erhöht die Volltrefferquote auf Mitstreiterseite.' }, - "gMaxTerror": { - name: "Giga-Spuksperre", - effect: "Eine Geister-Attacke, die nur Gigadynamax-Gengar einsetzen kann. Hindert gegnerische Pokémon an der Flucht beziehungsweise am Auswechseln." + 'gMaxTerror': { + name: 'Giga-Spuksperre', + effect: 'Eine Geister-Attacke, die nur Gigadynamax-Gengar einsetzen kann. Hindert gegnerische Pokémon an der Flucht beziehungsweise am Auswechseln.' }, - "gMaxResonance": { - name: "Giga-Melodie", - effect: "Eine Eis-Attacke, die nur Gigadynamax-Lapras einsetzen kann. Reduziert fünf Runden lang den erlittenen Schaden." + 'gMaxResonance': { + name: 'Giga-Melodie', + effect: 'Eine Eis-Attacke, die nur Gigadynamax-Lapras einsetzen kann. Reduziert fünf Runden lang den erlittenen Schaden.' }, - "gMaxCuddle": { - name: "Giga-Gekuschel", - effect: "Eine Normal-Attacke, die nur Gigadynamax-Evoli einsetzen kann. Gegnerische Pokémon verlieben sich in es." + 'gMaxCuddle': { + name: 'Giga-Gekuschel', + effect: 'Eine Normal-Attacke, die nur Gigadynamax-Evoli einsetzen kann. Gegnerische Pokémon verlieben sich in es.' }, - "gMaxReplenish": { - name: "Giga-Recycling", - effect: "Eine Normal-Attacke, die nur Gigadynamax-Relaxo einsetzen kann. Stellt bereits verzehrte Beeren wieder her." + 'gMaxReplenish': { + name: 'Giga-Recycling', + effect: 'Eine Normal-Attacke, die nur Gigadynamax-Relaxo einsetzen kann. Stellt bereits verzehrte Beeren wieder her.' }, - "gMaxMalodor": { - name: "Giga-Gestank", - effect: "Eine Gift-Attacke, die nur Gigadynamax-Deponitox einsetzen kann. Vergiftet gegnerische Pokémon." + 'gMaxMalodor': { + name: 'Giga-Gestank', + effect: 'Eine Gift-Attacke, die nur Gigadynamax-Deponitox einsetzen kann. Vergiftet gegnerische Pokémon.' }, - "gMaxStonesurge": { - name: "Giga-Geröll", - effect: "Eine Wasser-Attacke, die nur Gigadynamax-Kamalm einsetzen kann. Verstreut viele spitze Steinbrocken auf dem Kampffeld." + 'gMaxStonesurge': { + name: 'Giga-Geröll', + effect: 'Eine Wasser-Attacke, die nur Gigadynamax-Kamalm einsetzen kann. Verstreut viele spitze Steinbrocken auf dem Kampffeld.' }, - "gMaxWindRage": { - name: "Giga-Sturmstoß", - effect: "Eine Flug-Attacke, die nur Gigadynamax-Krarmor einsetzen kann. Beseitigt die Effekte von Attacken wie Reflektor und Lichtschild.." + 'gMaxWindRage': { + name: 'Giga-Sturmstoß', + effect: 'Eine Flug-Attacke, die nur Gigadynamax-Krarmor einsetzen kann. Beseitigt die Effekte von Attacken wie Reflektor und Lichtschild..' }, - "gMaxStunShock": { - name: "Giga-Voltschlag", - effect: "Eine Elektro-Attacke, die nur Gigadynamax-Riffex einsetzen kann. Vergiftet oder paralysiert gegnerische Pokémon." + 'gMaxStunShock': { + name: 'Giga-Voltschlag', + effect: 'Eine Elektro-Attacke, die nur Gigadynamax-Riffex einsetzen kann. Vergiftet oder paralysiert gegnerische Pokémon.' }, - "gMaxFinale": { - name: "Giga-Lichtblick", - effect: "Eine Feen-Attacke, die nur Gigadynamax-Pokusan einsetzen kann. Füllt die KP auf Mitstreiterseite auf." + 'gMaxFinale': { + name: 'Giga-Lichtblick', + effect: 'Eine Feen-Attacke, die nur Gigadynamax-Pokusan einsetzen kann. Füllt die KP auf Mitstreiterseite auf.' }, - "gMaxDepletion": { - name: "Giga-Dämpfer", - effect: "Eine Drachen-Attacke, die nur Gigadynamax-Duraludon einsetzen kann. AP der letzten Attacke, die gegnerische Pokémon eingesetzt haben, werden gesenkt." + 'gMaxDepletion': { + name: 'Giga-Dämpfer', + effect: 'Eine Drachen-Attacke, die nur Gigadynamax-Duraludon einsetzen kann. AP der letzten Attacke, die gegnerische Pokémon eingesetzt haben, werden gesenkt.' }, - "gMaxGravitas": { - name: "Giga-Astrowellen", - effect: "Eine Psycho-Attacke, die nur Gigadynamax-Maritellit einsetzen kann. Ändert die Erdanziehung für fünf Runden." + 'gMaxGravitas': { + name: 'Giga-Astrowellen', + effect: 'Eine Psycho-Attacke, die nur Gigadynamax-Maritellit einsetzen kann. Ändert die Erdanziehung für fünf Runden.' }, - "gMaxVolcalith": { - name: "Giga-Schlacke", - effect: "Eine Gesteins-Attacke, die nur Gigadynamax-Montecarbo einsetzen kann. Fügt vier Runden lang Schaden zu." + 'gMaxVolcalith': { + name: 'Giga-Schlacke', + effect: 'Eine Gesteins-Attacke, die nur Gigadynamax-Montecarbo einsetzen kann. Fügt vier Runden lang Schaden zu.' }, - "gMaxSandblast": { - name: "Giga-Sandstoß", - effect: "Eine Boden-Attacke, die nur Gigadynamax-Sanaconda einsetzen kann. Eine Sandhose wütet für vier bis fünf Runden." + 'gMaxSandblast': { + name: 'Giga-Sandstoß', + effect: 'Eine Boden-Attacke, die nur Gigadynamax-Sanaconda einsetzen kann. Eine Sandhose wütet für vier bis fünf Runden.' }, - "gMaxSnooze": { - name: "Giga-Gähnzwang", - effect: "Eine Unlicht-Attacke, die nur Gigadynamax-Olangaar einsetzen kann. Mit einem großen Gähner wird das Ziel müde gemacht und schläft in der nächsten Runde ein." + 'gMaxSnooze': { + name: 'Giga-Gähnzwang', + effect: 'Eine Unlicht-Attacke, die nur Gigadynamax-Olangaar einsetzen kann. Mit einem großen Gähner wird das Ziel müde gemacht und schläft in der nächsten Runde ein.' }, - "gMaxTartness": { - name: "Giga-Säureguss", - effect: "Eine Pflanzen-Attacke, die nur Gigadynamax-Drapfel einsetzen kann. Senkt den Ausweichwert der gegnerischen Pokémon." + 'gMaxTartness': { + name: 'Giga-Säureguss', + effect: 'Eine Pflanzen-Attacke, die nur Gigadynamax-Drapfel einsetzen kann. Senkt den Ausweichwert der gegnerischen Pokémon.' }, - "gMaxSweetness": { - name: "Giga-Nektarflut", - effect: "Eine Pflanzen-Attacke, die nur Gigadynamax-Schlapfel einsetzen kann. Heilt Statusprobleme auf Mitstreiterseite." + 'gMaxSweetness': { + name: 'Giga-Nektarflut', + effect: 'Eine Pflanzen-Attacke, die nur Gigadynamax-Schlapfel einsetzen kann. Heilt Statusprobleme auf Mitstreiterseite.' }, - "gMaxSmite": { - name: "Giga-Sanktion", - effect: "Eine Feen-Attacke, die nur Gigadynamax-Silembrim einsetzen kann. Verwirrt gegnerische Pokémon." + 'gMaxSmite': { + name: 'Giga-Sanktion', + effect: 'Eine Feen-Attacke, die nur Gigadynamax-Silembrim einsetzen kann. Verwirrt gegnerische Pokémon.' }, - "gMaxSteelsurge": { - name: "Giga-Stahlschlag", - effect: "Eine Stahl-Attacke, die nur Gigadynamax-Patinaraja einsetzen kann. Verstreut viele zackige Stahlsplitter auf dem Kampffeld." + 'gMaxSteelsurge': { + name: 'Giga-Stahlschlag', + effect: 'Eine Stahl-Attacke, die nur Gigadynamax-Patinaraja einsetzen kann. Verstreut viele zackige Stahlsplitter auf dem Kampffeld.' }, - "gMaxMeltdown": { - name: "Giga-Schmelze", - effect: "Eine Stahl-Attacke, die nur Gigadynamax-Melmetal einsetzen kann. Hindert Gegner am wiederholten Einsatz derselben Attacke." + 'gMaxMeltdown': { + name: 'Giga-Schmelze', + effect: 'Eine Stahl-Attacke, die nur Gigadynamax-Melmetal einsetzen kann. Hindert Gegner am wiederholten Einsatz derselben Attacke.' }, - "gMaxFoamBurst": { - name: "Giga-Schaumbad", - effect: "Eine Wasser-Attacke, die nur Gigadynamax-Kingler einsetzen kann. Senkt die Initiative der gegnerischen Pokémon stark." + 'gMaxFoamBurst': { + name: 'Giga-Schaumbad', + effect: 'Eine Wasser-Attacke, die nur Gigadynamax-Kingler einsetzen kann. Senkt die Initiative der gegnerischen Pokémon stark.' }, - "gMaxCentiferno": { - name: "Giga-Feuerkessel", - effect: "Eine Feuer-Attacke, die nur Gigadynamax-Infernopod einsetzen kann. Schließt gegnerische Pokémon vier bis fünf Runden in wirbelnden Flammen ein." + 'gMaxCentiferno': { + name: 'Giga-Feuerkessel', + effect: 'Eine Feuer-Attacke, die nur Gigadynamax-Infernopod einsetzen kann. Schließt gegnerische Pokémon vier bis fünf Runden in wirbelnden Flammen ein.' }, - "gMaxVineLash": { - name: "Giga-Geißel", - effect: "Eine Pflanzen-Attacke, die nur Gigadynamax-Bisaflor einsetzen kann. Geißelt gegnerische Pokémon vier Runden lang mit peitschenartigen Ranken." + 'gMaxVineLash': { + name: 'Giga-Geißel', + effect: 'Eine Pflanzen-Attacke, die nur Gigadynamax-Bisaflor einsetzen kann. Geißelt gegnerische Pokémon vier Runden lang mit peitschenartigen Ranken.' }, - "gMaxCannonade": { - name: "Giga-Beschuss", - effect: "Eine Wasser-Attacke, die nur Gigadynamax-Turtok einsetzen kann. Schließt gegnerische Pokémon vier Runden lang in einem Wasserwirbel ein." + 'gMaxCannonade': { + name: 'Giga-Beschuss', + effect: 'Eine Wasser-Attacke, die nur Gigadynamax-Turtok einsetzen kann. Schließt gegnerische Pokémon vier Runden lang in einem Wasserwirbel ein.' }, - "gMaxDrumSolo": { - name: "Giga-Getrommel", - effect: "Eine Pflanzen-Attacke, die nur Gigadynamax-Gortrom einsetzen kann. Ignoriert die Effekte der gegnerischen Fähigkeiten." + 'gMaxDrumSolo': { + name: 'Giga-Getrommel', + effect: 'Eine Pflanzen-Attacke, die nur Gigadynamax-Gortrom einsetzen kann. Ignoriert die Effekte der gegnerischen Fähigkeiten.' }, - "gMaxFireball": { - name: "Giga-Brandball", - effect: "Eine Feuer-Attacke, die nur Gigadynamax-Liberlo einsetzen kann. Ignoriert die Effekte der gegnerischen Fähigkeiten." + 'gMaxFireball': { + name: 'Giga-Brandball', + effect: 'Eine Feuer-Attacke, die nur Gigadynamax-Liberlo einsetzen kann. Ignoriert die Effekte der gegnerischen Fähigkeiten.' }, - "gMaxHydrosnipe": { - name: "Giga-Schütze", - effect: "Eine Wasser-Attacke, die nur Gigadynamax-Intelleon einsetzen kann. Ignoriert die Effekte der gegnerischen Fähigkeiten." + 'gMaxHydrosnipe': { + name: 'Giga-Schütze', + effect: 'Eine Wasser-Attacke, die nur Gigadynamax-Intelleon einsetzen kann. Ignoriert die Effekte der gegnerischen Fähigkeiten.' }, - "gMaxOneBlow": { - name: "Giga-Einzelhieb", - effect: "Eine Unlicht-Attacke, die nur Gigadynamax-Wulaosu einsetzen kann. Dieser Einzelhieb ignoriert die schützende Wirkung von Dyna-Wall." + 'gMaxOneBlow': { + name: 'Giga-Einzelhieb', + effect: 'Eine Unlicht-Attacke, die nur Gigadynamax-Wulaosu einsetzen kann. Dieser Einzelhieb ignoriert die schützende Wirkung von Dyna-Wall.' }, - "gMaxRapidFlow": { - name: "Giga-Multihieb", - effect: "Eine Wasser-Attacke, die nur Gigadynamax-Wulaosu einsetzen kann. Dieser Multihieb ignoriert die schützende Wirkung von Dyna-Wall." + 'gMaxRapidFlow': { + name: 'Giga-Multihieb', + effect: 'Eine Wasser-Attacke, die nur Gigadynamax-Wulaosu einsetzen kann. Dieser Multihieb ignoriert die schützende Wirkung von Dyna-Wall.' }, - "teraBlast": { - name: "Tera-Ausbruch", - effect: "Ist der Anwender terakristallisiert, greift er mit Energie seines Tera-Typs an. Der Schaden hängt vom Angriff oder Spezial-Angriff ab, je nachdem, welcher Wert höher ist." + 'teraBlast': { + name: 'Tera-Ausbruch', + effect: 'Ist der Anwender terakristallisiert, greift er mit Energie seines Tera-Typs an. Der Schaden hängt vom Angriff oder Spezial-Angriff ab, je nachdem, welcher Wert höher ist.' }, - "silkTrap": { - name: "Fadenfalle", - effect: "Der Anwender spannt eine Falle aus Fäden und wird so vor Angriffen geschützt. Berührt ihn nun ein Angreifer, sinkt dessen Initiative." + 'silkTrap': { + name: 'Fadenfalle', + effect: 'Der Anwender spannt eine Falle aus Fäden und wird so vor Angriffen geschützt. Berührt ihn nun ein Angreifer, sinkt dessen Initiative.' }, - "axeKick": { - name: "Fersenkick", - effect: "Der Anwender greift an, indem er seine erhobene Ferse hinunterschnellen lässt. Das Ziel wird eventuell verwirrt. Bei Misserfolg verletzt sich der Anwender selbst." + 'axeKick': { + name: 'Fersenkick', + effect: 'Der Anwender greift an, indem er seine erhobene Ferse hinunterschnellen lässt. Das Ziel wird eventuell verwirrt. Bei Misserfolg verletzt sich der Anwender selbst.' }, - "lastRespects": { - name: "Letzte Ehre", - effect: "Der Anwender rächt gefallene Mitstreiter. Je mehr kampfunfähige Pokémon sich im Team befinden, desto stärker ist die Attacke." + 'lastRespects': { + name: 'Letzte Ehre', + effect: 'Der Anwender rächt gefallene Mitstreiter. Je mehr kampfunfähige Pokémon sich im Team befinden, desto stärker ist die Attacke.' }, - "luminaCrash": { - name: "Lichteinschlag", - effect: "Der Anwender greift an, indem er ein sonderbares Licht freisetzt, das sich auch auf die Psyche auswirkt. Zudem wird die Spezial-Verteidigung des Zieles stark gesenkt." + 'luminaCrash': { + name: 'Lichteinschlag', + effect: 'Der Anwender greift an, indem er ein sonderbares Licht freisetzt, das sich auch auf die Psyche auswirkt. Zudem wird die Spezial-Verteidigung des Zieles stark gesenkt.' }, - "orderUp": { - name: "Auftischen", - effect: "Eine Attacke mit geübten Bewegungen. Trägt der Anwender ein Nigiragi im Maul, erhöht sich je nach dessen Form ein Statuswert des Anwenders." + 'orderUp': { + name: 'Auftischen', + effect: 'Eine Attacke mit geübten Bewegungen. Trägt der Anwender ein Nigiragi im Maul, erhöht sich je nach dessen Form ein Statuswert des Anwenders.' }, - "jetPunch": { - name: "Düsenhieb", - effect: "Bei dieser Erstschlag-Attacke hüllt der Anwender seine Faust in einen Strudel und greift mit einem extrem schnellen Hieb an." + 'jetPunch': { + name: 'Düsenhieb', + effect: 'Bei dieser Erstschlag-Attacke hüllt der Anwender seine Faust in einen Strudel und greift mit einem extrem schnellen Hieb an.' }, - "spicyExtract": { - name: "Chili-Essenz", - effect: "Der Anwender setzt eine unglaublich scharfe Essenz frei, die den Angriff des Zieles stark erhöht, aber seine Verteidigung stark senkt." + 'spicyExtract': { + name: 'Chili-Essenz', + effect: 'Der Anwender setzt eine unglaublich scharfe Essenz frei, die den Angriff des Zieles stark erhöht, aber seine Verteidigung stark senkt.' }, - "spinOut": { - name: "Reifendrehung", - effect: "Der Anwender wirbelt wild umher, indem er sein Gewicht auf seine Extremitäten verlagert, und richtet so Schaden an. Seine eigene Initiative sinkt dadurch stark" + 'spinOut': { + name: 'Reifendrehung', + effect: 'Der Anwender wirbelt wild umher, indem er sein Gewicht auf seine Extremitäten verlagert, und richtet so Schaden an. Seine eigene Initiative sinkt dadurch stark' }, - "populationBomb": { - name: "Mäuseplage", - effect: "Der Anwender versammelt eine Schar von Artgenossen, die dann geschlossen angreift und das Ziel ein- bis zehnmal hintereinander trifft." + 'populationBomb': { + name: 'Mäuseplage', + effect: 'Der Anwender versammelt eine Schar von Artgenossen, die dann geschlossen angreift und das Ziel ein- bis zehnmal hintereinander trifft.' }, - "iceSpinner": { - name: "Eiskreisel", - effect: "Der Anwender hüllt seine Füße in dünnes Eis, wirbelt herum und greift so das Ziel an. Die Drehung zerstört etwaige Felder" + 'iceSpinner': { + name: 'Eiskreisel', + effect: 'Der Anwender hüllt seine Füße in dünnes Eis, wirbelt herum und greift so das Ziel an. Die Drehung zerstört etwaige Felder' }, - "glaiveRush": { - name: "Großklingenstoß", - effect: "Der Anwender stürzt sich waghalsig auf das Ziel. Bis zum nächsten Zug des Anwenders treffen ihn gegnerische Angriffe garantiert und richten doppelten Schaden an." + 'glaiveRush': { + name: 'Großklingenstoß', + effect: 'Der Anwender stürzt sich waghalsig auf das Ziel. Bis zum nächsten Zug des Anwenders treffen ihn gegnerische Angriffe garantiert und richten doppelten Schaden an.' }, - "revivalBlessing": { - name: "Vitalsegen", - effect: "Der Anwender belebt mit einem Wunsch voller Mitgefühl ein kampfunfähiges Team-Mitglied wieder und stellt die Hälfte dessen maximaler KP wieder her." + 'revivalBlessing': { + name: 'Vitalsegen', + effect: 'Der Anwender belebt mit einem Wunsch voller Mitgefühl ein kampfunfähiges Team-Mitglied wieder und stellt die Hälfte dessen maximaler KP wieder her.' }, - "saltCure": { - name: "Pökelsalz", - effect: "Der Anwender pökelt das Ziel mit Salz ein, wodurch dieses jede Runde Schaden erleidet. Stahl- und Wasser-Pokémon leiden besonders darunter." + 'saltCure': { + name: 'Pökelsalz', + effect: 'Der Anwender pökelt das Ziel mit Salz ein, wodurch dieses jede Runde Schaden erleidet. Stahl- und Wasser-Pokémon leiden besonders darunter.' }, - "tripleDive": { - name: "Tauchtriade", - effect: "Der Anwender taucht mit perfekt abgestimmtem Timing ab und trifft das Ziel mit Wasserspritzern. Dabei richtet er dreimal hintereinander Schaden an." + 'tripleDive': { + name: 'Tauchtriade', + effect: 'Der Anwender taucht mit perfekt abgestimmtem Timing ab und trifft das Ziel mit Wasserspritzern. Dabei richtet er dreimal hintereinander Schaden an.' }, - "mortalSpin": { - name: "Letalwirbler", - effect: "Der Anwender greift mit einer wirbelnden Attacke an, die Gegner auch vergiftet. Befreit den Anwender unter anderem von Wickel, Klammergriff und Egelsamen." + 'mortalSpin': { + name: 'Letalwirbler', + effect: 'Der Anwender greift mit einer wirbelnden Attacke an, die Gegner auch vergiftet. Befreit den Anwender unter anderem von Wickel, Klammergriff und Egelsamen.' }, - "doodle": { - name: "Abpausen", - effect: "Der Anwender kopiert die wahre Essenz des Zieles. Dadurch erhalten alle Pokémon auf der Mitstreiterseite die Fähigkeit des Zieles." + 'doodle': { + name: 'Abpausen', + effect: 'Der Anwender kopiert die wahre Essenz des Zieles. Dadurch erhalten alle Pokémon auf der Mitstreiterseite die Fähigkeit des Zieles.' }, - "filletAway": { - name: "Abspaltung", - effect: "Der Anwender setzt seine KP ein, um seinen Angriff, seinen Spezial-Angriff und seine Initiative stark zu erhöhen." + 'filletAway': { + name: 'Abspaltung', + effect: 'Der Anwender setzt seine KP ein, um seinen Angriff, seinen Spezial-Angriff und seine Initiative stark zu erhöhen.' }, - "kowtowCleave": { - name: "Kniefallspalter", - effect: "Der Anwender fällt auf die Knie und verleitet das Ziel zu Unachtsamkeit, bevor er mit einer Klinge zuschlägt. Diese Attacke trifft garantiert." + 'kowtowCleave': { + name: 'Kniefallspalter', + effect: 'Der Anwender fällt auf die Knie und verleitet das Ziel zu Unachtsamkeit, bevor er mit einer Klinge zuschlägt. Diese Attacke trifft garantiert.' }, - "flowerTrick": { - name: "Blumentrick", - effect: "Der Anwender greift an, indem er dem Ziel einen Trick-Strauß zuwirft. Diese Attacke trifft immer und hat zudem Volltreffergarantie." + 'flowerTrick': { + name: 'Blumentrick', + effect: 'Der Anwender greift an, indem er dem Ziel einen Trick-Strauß zuwirft. Diese Attacke trifft immer und hat zudem Volltreffergarantie.' }, - "torchSong": { - name: "Loderlied", - effect: "Der Anwender spuckt inbrünstig lodernde Flammen, als würde er singen, und versengt das Ziel. Dadurch steigt auch der Spezial-Angriff des Anwenders." + 'torchSong': { + name: 'Loderlied', + effect: 'Der Anwender spuckt inbrünstig lodernde Flammen, als würde er singen, und versengt das Ziel. Dadurch steigt auch der Spezial-Angriff des Anwenders.' }, - "aquaStep": { - name: "Wogentanz", - effect: "Der Anwender neckt das Ziel mit flinken, fließenden Tanzschritten und greift es dann an. Dadurch steigt auch die Initiative des Anwenders." + 'aquaStep': { + name: 'Wogentanz', + effect: 'Der Anwender neckt das Ziel mit flinken, fließenden Tanzschritten und greift es dann an. Dadurch steigt auch die Initiative des Anwenders.' }, - "ragingBull": { - name: "Rasender Stier", - effect: "Ein rasender Angriff eines wilden Stiers, der auch Barrieren wie Lichtschild und Reflektor durchbricht. Der Attacken-Typ hängt von der Form des Anwenders ab." + 'ragingBull': { + name: 'Rasender Stier', + effect: 'Ein rasender Angriff eines wilden Stiers, der auch Barrieren wie Lichtschild und Reflektor durchbricht. Der Attacken-Typ hängt von der Form des Anwenders ab.' }, - "makeItRain": { - name: "Goldrausch", - effect: "Der Anwender greift an, indem er Unmengen an Münzen ausschüttet, senkt dabei aber seinen Spezial-Angriff. Das Geld wird nach dem Kampf aufgesammelt." + 'makeItRain': { + name: 'Goldrausch', + effect: 'Der Anwender greift an, indem er Unmengen an Münzen ausschüttet, senkt dabei aber seinen Spezial-Angriff. Das Geld wird nach dem Kampf aufgesammelt.' }, - "psyblade": { - name: "Psychoschneide", - effect: "Das Ziel wird mit einer immateriellen Klinge angegriffen. Die Stärke der Attacke steigt um 50 %, wenn beim Anwender ein Elektrofeld aktiv ist." + 'psyblade': { + name: 'Psychoschneide', + effect: 'Das Ziel wird mit einer immateriellen Klinge angegriffen. Die Stärke der Attacke steigt um 50 %, wenn beim Anwender ein Elektrofeld aktiv ist.' }, - "hydroSteam": { - name: "Hydrodampf", - effect: "Das Ziel wird kraftvoll mit brodelndem Wasser übergossen. Wider Erwarten sinkt die Stärke der Attacke bei starkem Sonnenlicht nicht, sondern steigt um 50 %." + 'hydroSteam': { + name: 'Hydrodampf', + effect: 'Das Ziel wird kraftvoll mit brodelndem Wasser übergossen. Wider Erwarten sinkt die Stärke der Attacke bei starkem Sonnenlicht nicht, sondern steigt um 50 %.' }, - "ruination": { - name: "Verderben", - effect: "Der Anwender beschwört Verderben bringendes Unheil herauf und halbiert die KP des Zieles." + 'ruination': { + name: 'Verderben', + effect: 'Der Anwender beschwört Verderben bringendes Unheil herauf und halbiert die KP des Zieles.' }, - "collisionCourse": { - name: "Kollisionskurs", - effect: "Der Anwender wechselt seine Form, während er sich gen Boden stürzt, und verursacht eine riesige Ur-Explosion. Ist die Attacke sehr effektiv, steigt ihre Stärke noch mehr." + 'collisionCourse': { + name: 'Kollisionskurs', + effect: 'Der Anwender wechselt seine Form, während er sich gen Boden stürzt, und verursacht eine riesige Ur-Explosion. Ist die Attacke sehr effektiv, steigt ihre Stärke noch mehr.' }, - "electroDrift": { - name: "Blitztour", - effect: "Der Anwender wechselt bei rasantem Tempo seine Form und trifft das Ziel mit einem futuristischen Elektroschlag. Ist die Attacke sehr effektiv, steigt ihre Stärke noch mehr." + 'electroDrift': { + name: 'Blitztour', + effect: 'Der Anwender wechselt bei rasantem Tempo seine Form und trifft das Ziel mit einem futuristischen Elektroschlag. Ist die Attacke sehr effektiv, steigt ihre Stärke noch mehr.' }, - "shedTail": { - name: "Schwanzabwurf", - effect: "Der Anwender setzt seine KP ein, um einen Doppelgänger zu erzeugen, und tauscht dann den Platz mit einem anderen Pokémon." + 'shedTail': { + name: 'Schwanzabwurf', + effect: 'Der Anwender setzt seine KP ein, um einen Doppelgänger zu erzeugen, und tauscht dann den Platz mit einem anderen Pokémon.' }, - "chillyReception": { - name: "Eisige Stimmung", - effect: "Der Anwender sorgt mit einem schlechten Witz für eisige Stimmung und tauscht den Platz mit einem anderen Pokémon. Erzeugt fünf Runden lang Schnee." + 'chillyReception': { + name: 'Eisige Stimmung', + effect: 'Der Anwender sorgt mit einem schlechten Witz für eisige Stimmung und tauscht den Platz mit einem anderen Pokémon. Erzeugt fünf Runden lang Schnee.' }, - "tidyUp": { - name: "Aufräumen", - effect: "Die Effekte von Stachler, Tarnsteine, Klebenetz, Giftspitzen und Delegator werden aufgehoben. Zudem steigen der Angriff und die Initiative des Anwenders." + 'tidyUp': { + name: 'Aufräumen', + effect: 'Die Effekte von Stachler, Tarnsteine, Klebenetz, Giftspitzen und Delegator werden aufgehoben. Zudem steigen der Angriff und die Initiative des Anwenders.' }, - "snowscape": { - name: "Schneelandschaft", - effect: "Erzeugt fünf Runden lang Schnee. Dadurch wird die Verteidigung von Eis-Pokémon erhöht." + 'snowscape': { + name: 'Schneelandschaft', + effect: 'Erzeugt fünf Runden lang Schnee. Dadurch wird die Verteidigung von Eis-Pokémon erhöht.' }, - "pounce": { - name: "Anspringen", - effect: "Der Anwender greift an, indem er das Ziel anspringt. Dadurch sinkt auch die Initiative des Zieles." + 'pounce': { + name: 'Anspringen', + effect: 'Der Anwender greift an, indem er das Ziel anspringt. Dadurch sinkt auch die Initiative des Zieles.' }, - "trailblaze": { - name: "Wegbereiter", - effect: "Der Anwender greift an, als würde er aus hohem Gras hervorspringen. Mit wendigen Schritten erhöht er seine Initiative." + 'trailblaze': { + name: 'Wegbereiter', + effect: 'Der Anwender greift an, als würde er aus hohem Gras hervorspringen. Mit wendigen Schritten erhöht er seine Initiative.' }, - "chillingWater": { - name: "Kalte Dusche", - effect: "Der Anwender greift an, indem er das Ziel mit eiskaltem Wasser überschüttet. Das raubt dem Ziel seinen Kampfgeist und senkt so seinen Angriff." + 'chillingWater': { + name: 'Kalte Dusche', + effect: 'Der Anwender greift an, indem er das Ziel mit eiskaltem Wasser überschüttet. Das raubt dem Ziel seinen Kampfgeist und senkt so seinen Angriff.' }, - "hyperDrill": { - name: "Hyperbohrer", - effect: " Der Anwender lässt einen spitzen Teil seines Körpers rasant rotieren, sticht zu und durchbricht dabei auch die Wirkung von Attacken wie Schutzschild und Scanner." + 'hyperDrill': { + name: 'Hyperbohrer', + effect: ' Der Anwender lässt einen spitzen Teil seines Körpers rasant rotieren, sticht zu und durchbricht dabei auch die Wirkung von Attacken wie Schutzschild und Scanner.' }, - "twinBeam": { - name: "Doppelstrahl", - effect: "Der Anwender greift mit übernatürlichen Lichtstrahlen an, die er aus seinen Augen abfeuert, und trifft das Ziel zweimal hintereinander." + 'twinBeam': { + name: 'Doppelstrahl', + effect: 'Der Anwender greift mit übernatürlichen Lichtstrahlen an, die er aus seinen Augen abfeuert, und trifft das Ziel zweimal hintereinander.' }, - "rageFist": { - name: "Zornesfaust", - effect: "Ein Angriff, für den der Anwender seinen Zorn in Energie umwandelt. Je häufiger der Anwender getroffen wurde, desto stärker wird diese Attacke." + 'rageFist': { + name: 'Zornesfaust', + effect: 'Ein Angriff, für den der Anwender seinen Zorn in Energie umwandelt. Je häufiger der Anwender getroffen wurde, desto stärker wird diese Attacke.' }, - "armorCannon": { - name: "Rüstungskanone", - effect: "Der Anwender schießt die eigene Rüstung als glühendes Projektil auf das Ziel. Dadurch sinken die Verteidigung und Spezial-Verteidigung des Anwenders." + 'armorCannon': { + name: 'Rüstungskanone', + effect: 'Der Anwender schießt die eigene Rüstung als glühendes Projektil auf das Ziel. Dadurch sinken die Verteidigung und Spezial-Verteidigung des Anwenders.' }, - "bitterBlade": { - name: "Reueschwert", - effect: "Der Anwender tränkt seine Klinge in Bedauern und Reue und greift damit an. Die Hälfte des zugefügten Schadens wird dem Anwender als KP gutgeschrieben." + 'bitterBlade': { + name: 'Reueschwert', + effect: 'Der Anwender tränkt seine Klinge in Bedauern und Reue und greift damit an. Die Hälfte des zugefügten Schadens wird dem Anwender als KP gutgeschrieben.' }, - "doubleShock": { - name: "Zweifachladung", - effect: "Der Anwender nutzt die gesamte Elektrizität in seinem Körper, um großen Schaden auszuteilen. Die restliche Kampfdauer gehört er nicht mehr dem Typ Elektro an." + 'doubleShock': { + name: 'Zweifachladung', + effect: 'Der Anwender nutzt die gesamte Elektrizität in seinem Körper, um großen Schaden auszuteilen. Die restliche Kampfdauer gehört er nicht mehr dem Typ Elektro an.' }, - "gigatonHammer": { - name: "Riesenhammer", - effect: "Der Anwender greift mit einem großen Hammer an, den er mit vollem Körpereinsatz um sich schwingt. Diese Attacke kann nicht zweimal in Folge eingesetzt werden." + 'gigatonHammer': { + name: 'Riesenhammer', + effect: 'Der Anwender greift mit einem großen Hammer an, den er mit vollem Körpereinsatz um sich schwingt. Diese Attacke kann nicht zweimal in Folge eingesetzt werden.' }, - "comeuppance": { - name: "Vendetta", - effect: "Der Anwender rächt sich an dem Gegner, der ihm zuletzt mit einer Attacke Schaden zugefügt hat, indem er ihm den Schaden mit erhöhter Kraft zurückzahlt." + 'comeuppance': { + name: 'Vendetta', + effect: 'Der Anwender rächt sich an dem Gegner, der ihm zuletzt mit einer Attacke Schaden zugefügt hat, indem er ihm den Schaden mit erhöhter Kraft zurückzahlt.' }, - "aquaCutter": { - name: "Aquaschnitt", - effect: "Der Anwender stößt Wasser unter Druck aus, um das Ziel wie mit einer Klinge anzugreifen. Hohe Volltrefferquote." + 'aquaCutter': { + name: 'Aquaschnitt', + effect: 'Der Anwender stößt Wasser unter Druck aus, um das Ziel wie mit einer Klinge anzugreifen. Hohe Volltrefferquote.' }, - "blazingTorque": { - name: "Hitzeturbo", - effect: "The user revs their blazing engine into the target. This may also leave the target with a burn." + 'blazingTorque': { + name: 'Hitzeturbo', + effect: 'The user revs their blazing engine into the target. This may also leave the target with a burn.' }, - "wickedTorque": { - name: "Finsterturbo", - effect: "The user revs their engine into the target with malicious intent. This may put the target to sleep." + 'wickedTorque': { + name: 'Finsterturbo', + effect: 'The user revs their engine into the target with malicious intent. This may put the target to sleep.' }, - "noxiousTorque": { - name: "Toxiturbo", - effect: "The user revs their poisonous engine into the target. This may also poison the target." + 'noxiousTorque': { + name: 'Toxiturbo', + effect: 'The user revs their poisonous engine into the target. This may also poison the target.' }, - "combatTorque": { - name: "Raufturbo", - effect: "The user revs their engine forcefully into the target. This may also leave the target with paralysis." + 'combatTorque': { + name: 'Raufturbo', + effect: 'The user revs their engine forcefully into the target. This may also leave the target with paralysis.' }, - "magicalTorque": { - name: "Zauberturbo", - effect: "The user revs their fae-like engine into the target. This may also confuse the target." + 'magicalTorque': { + name: 'Zauberturbo', + effect: 'The user revs their fae-like engine into the target. This may also confuse the target.' }, - "bloodMoon": { - name: "Blutmond", - effect: "Der Anwender entfesselt eine gewaltige Energieladung aus einem blutroten Vollmond. Diese Attacke kann nicht zweimal in Folge eingesetzt werden." + 'bloodMoon': { + name: 'Blutmond', + effect: 'Der Anwender entfesselt eine gewaltige Energieladung aus einem blutroten Vollmond. Diese Attacke kann nicht zweimal in Folge eingesetzt werden.' }, - "matchaGotcha": { - name: "Quirlschuss", - effect: "Der Anwender verschießt gequirlten Tee. Die Hälfte des zugefügten Schadens wird ihm als KP gutgeschrieben. Das Ziel erleidet eventuell Verbrennungen." + 'matchaGotcha': { + name: 'Quirlschuss', + effect: 'Der Anwender verschießt gequirlten Tee. Die Hälfte des zugefügten Schadens wird ihm als KP gutgeschrieben. Das Ziel erleidet eventuell Verbrennungen.' }, - "syrupBomb": { - name: "Sirupbombe", - effect: "Der Anwender feuert eine klebrige Sirupbombe auf das Ziel, wodurch es in Sirup gehüllt und seine Initiative drei Runden in Folge gesenkt wird." + 'syrupBomb': { + name: 'Sirupbombe', + effect: 'Der Anwender feuert eine klebrige Sirupbombe auf das Ziel, wodurch es in Sirup gehüllt und seine Initiative drei Runden in Folge gesenkt wird.' }, - "ivyCudgel": { - name: "Rankenkeule", - effect: "Der Anwender schlägt mit einer rankenumschlungenen Keule zu. Der Typ dieser Attacke hängt von der Maske des Anwenders ab. Hohe Volltrefferquote." + 'ivyCudgel': { + name: 'Rankenkeule', + effect: 'Der Anwender schlägt mit einer rankenumschlungenen Keule zu. Der Typ dieser Attacke hängt von der Maske des Anwenders ab. Hohe Volltrefferquote.' }, - "electroShot": { - name: "Stromstrahl", - effect: "Sammelt in Runde 1 Elektrizität, um den Spezial-Angriff zu erhöhen, und greift dann in Runde 2 mit Starkstrom an. Bei Regen erfolgt der Angriff sofort in Runde 1." + 'electroShot': { + name: 'Stromstrahl', + effect: 'Sammelt in Runde 1 Elektrizität, um den Spezial-Angriff zu erhöhen, und greift dann in Runde 2 mit Starkstrom an. Bei Regen erfolgt der Angriff sofort in Runde 1.' }, - "teraStarstorm": { - name: "Tera-Sternhagel", - effect: "Der Anwender greift das Ziel mit gebündelter Kristallenergie an. Wenn Terapagos diese Attacke in seiner Stellarform einsetzt, erleiden alle Gegner Schaden." + 'teraStarstorm': { + name: 'Tera-Sternhagel', + effect: 'Der Anwender greift das Ziel mit gebündelter Kristallenergie an. Wenn Terapagos diese Attacke in seiner Stellarform einsetzt, erleiden alle Gegner Schaden.' }, - "fickleBeam": { - name: "Launenlaser", - effect: "Der Anwender greift mit einem Laserstrahl an. Manchmal feuern mehrere seiner Köpfe Laser ab, wodurch sich die Stärke dieser Attacke verdoppelt." + 'fickleBeam': { + name: 'Launenlaser', + effect: 'Der Anwender greift mit einem Laserstrahl an. Manchmal feuern mehrere seiner Köpfe Laser ab, wodurch sich die Stärke dieser Attacke verdoppelt.' }, - "burningBulwark": { - name: "Flammenschild", - effect: "Das brennend heiße Fell des Anwenders schützt ihn vor Angriffen. Gleichzeitig erleiden alle Pokémon, die mit ihm in Berührung kommen, Verbrennungen." + 'burningBulwark': { + name: 'Flammenschild', + effect: 'Das brennend heiße Fell des Anwenders schützt ihn vor Angriffen. Gleichzeitig erleiden alle Pokémon, die mit ihm in Berührung kommen, Verbrennungen.' }, - "thunderclap": { - name: "Sturmblitz", - effect: "This move enables the user to attack first with a jolt of electricity. This move fails if the target is not readying an attack." + 'thunderclap': { + name: 'Sturmblitz', + effect: 'This move enables the user to attack first with a jolt of electricity. This move fails if the target is not readying an attack.' }, - "mightyCleave": { - name: "Wuchtklinge", - effect: "Der Anwender führt mit dem in seinem Kopf gespeicherten Licht einen Schnitt aus. Diese Attacke trifft auch, wenn das Ziel sich selbst schützt." + 'mightyCleave': { + name: 'Wuchtklinge', + effect: 'Der Anwender führt mit dem in seinem Kopf gespeicherten Licht einen Schnitt aus. Diese Attacke trifft auch, wenn das Ziel sich selbst schützt.' }, - "tachyonCutter": { - name: "Tachyon-Schnitt", - effect: "Der Anwender greift das Ziel zweimal hintereinander mit Partikelklingen an. Der Angriff trifft garantiert." + 'tachyonCutter': { + name: 'Tachyon-Schnitt', + effect: 'Der Anwender greift das Ziel zweimal hintereinander mit Partikelklingen an. Der Angriff trifft garantiert.' }, - "hardPress": { - name: "Stahlpresse", - effect: "Der Anwender nimmt das Ziel mit Armen oder Scheren in die Mangel. Je höher die KP des Zieles, desto stärker die Attacke." + 'hardPress': { + name: 'Stahlpresse', + effect: 'Der Anwender nimmt das Ziel mit Armen oder Scheren in die Mangel. Je höher die KP des Zieles, desto stärker die Attacke.' }, - "dragonCheer": { - name: "Drachenschrei", - effect: "Das anspornende Drachengebrüll hebt die Moral aller Mitstreiter und erhöht ihre Volltrefferquote. Der Effekt ist stärker, wenn sie dem Typ Drache angehören." + 'dragonCheer': { + name: 'Drachenschrei', + effect: 'Das anspornende Drachengebrüll hebt die Moral aller Mitstreiter und erhöht ihre Volltrefferquote. Der Effekt ist stärker, wenn sie dem Typ Drache angehören.' }, - "alluringVoice": { - name: "Lockstimme", - effect: "Der Anwender greift mit engelsgleichem Gesang an. Falls die Statuswerte des Zieles in dieser Runde erhöht wurden, wird es zusätzlich verwirrt." + 'alluringVoice': { + name: 'Lockstimme', + effect: 'Der Anwender greift mit engelsgleichem Gesang an. Falls die Statuswerte des Zieles in dieser Runde erhöht wurden, wird es zusätzlich verwirrt.' }, - "temperFlare": { - name: "Frustflamme", - effect: "Der Anwender greift das Ziel voller Verzweiflung an. Wenn seine vorige Attacke fehlgeschlagen ist, verdoppelt sich die Stärke der Attacke." + 'temperFlare': { + name: 'Frustflamme', + effect: 'Der Anwender greift das Ziel voller Verzweiflung an. Wenn seine vorige Attacke fehlgeschlagen ist, verdoppelt sich die Stärke der Attacke.' }, - "supercellSlam": { - name: "Donnerstoß", - effect: "Der Anwender lädt seinen Körper mit elektrischer Energie auf und stürzt sich auf das Ziel. Bei Misserfolg verletzt sich der Anwender selbst." + 'supercellSlam': { + name: 'Donnerstoß', + effect: 'Der Anwender lädt seinen Körper mit elektrischer Energie auf und stürzt sich auf das Ziel. Bei Misserfolg verletzt sich der Anwender selbst.' }, - "psychicNoise": { - name: "Psycholärm", - effect: "Der Anwender greift mit unerträglichen Schallwellen an, wodurch das Ziel zwei Runden lang nicht durch Attacken, Fähigkeiten oder getragene Items geheilt werden kann." + 'psychicNoise': { + name: 'Psycholärm', + effect: 'Der Anwender greift mit unerträglichen Schallwellen an, wodurch das Ziel zwei Runden lang nicht durch Attacken, Fähigkeiten oder getragene Items geheilt werden kann.' }, - "upperHand": { - name: "Schnellkonter", - effect: "Der Anwender reagiert auf Bewegungen des Zieles und lässt es durch einen Schlag zurückschrecken. Gelingt nur, wenn das Ziel gerade eine Erstschlag-Attacke vorbereitet." + 'upperHand': { + name: 'Schnellkonter', + effect: 'Der Anwender reagiert auf Bewegungen des Zieles und lässt es durch einen Schlag zurückschrecken. Gelingt nur, wenn das Ziel gerade eine Erstschlag-Attacke vorbereitet.' }, - "malignantChain": { - name: "Giftkettung", - effect: "Der Anwender umwickelt das Ziel mit einer Kette aus Toxinen, die in dessen Körper eindringen und ihm schaden. Das Ziel wird eventuell schwer vergiftet." + 'malignantChain': { + name: 'Giftkettung', + effect: 'Der Anwender umwickelt das Ziel mit einer Kette aus Toxinen, die in dessen Körper eindringen und ihm schaden. Das Ziel wird eventuell schwer vergiftet.' } -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/de/nature.ts b/src/locales/de/nature.ts index b6e3d05b8c0..6bc8deade4e 100644 --- a/src/locales/de/nature.ts +++ b/src/locales/de/nature.ts @@ -1,29 +1,29 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const nature: SimpleTranslationEntries = { - "Hardy": "Robust", - "Lonely": "Solo", - "Brave": "Mutig", - "Adamant": "Hart", - "Naughty": "Frech", - "Bold": "Kühn", - "Docile": "Sanft", - "Relaxed": "Locker", - "Impish": "Pfiffig", - "Lax": "Lasch", - "Timid": "Scheu", - "Hasty": "Hastig", - "Serious": "Ernst", - "Jolly": "Froh", - "Naive": "Naiv", - "Modest": "Mäßig", - "Mild": "Mild", - "Quiet": "Ruhig", - "Bashful": "Zaghaft", - "Rash": "Hitzig", - "Calm": "Still", - "Gentle": "Zart", - "Sassy": "Forsch", - "Careful": "Sacht", - "Quirky": "Kauzig" -} as const; \ No newline at end of file + 'Hardy': 'Robust', + 'Lonely': 'Solo', + 'Brave': 'Mutig', + 'Adamant': 'Hart', + 'Naughty': 'Frech', + 'Bold': 'Kühn', + 'Docile': 'Sanft', + 'Relaxed': 'Locker', + 'Impish': 'Pfiffig', + 'Lax': 'Lasch', + 'Timid': 'Scheu', + 'Hasty': 'Hastig', + 'Serious': 'Ernst', + 'Jolly': 'Froh', + 'Naive': 'Naiv', + 'Modest': 'Mäßig', + 'Mild': 'Mild', + 'Quiet': 'Ruhig', + 'Bashful': 'Zaghaft', + 'Rash': 'Hitzig', + 'Calm': 'Still', + 'Gentle': 'Zart', + 'Sassy': 'Forsch', + 'Careful': 'Sacht', + 'Quirky': 'Kauzig' +} as const; diff --git a/src/locales/de/pokeball.ts b/src/locales/de/pokeball.ts index 5f4557f4b63..5b40e83d26c 100644 --- a/src/locales/de/pokeball.ts +++ b/src/locales/de/pokeball.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokeball: SimpleTranslationEntries = { - "pokeBall": "Pokéball", - "greatBall": "Superball", - "ultraBall": "Hyperball", - "rogueBall": "Rogueball", - "masterBall": "Meisterball", - "luxuryBall": "Luxusball", -} as const; \ No newline at end of file + 'pokeBall': 'Pokéball', + 'greatBall': 'Superball', + 'ultraBall': 'Hyperball', + 'rogueBall': 'Rogueball', + 'masterBall': 'Meisterball', + 'luxuryBall': 'Luxusball', +} as const; diff --git a/src/locales/de/pokemon-info.ts b/src/locales/de/pokemon-info.ts index 772a09cb656..c2c50229575 100644 --- a/src/locales/de/pokemon-info.ts +++ b/src/locales/de/pokemon-info.ts @@ -1,41 +1,41 @@ -import { PokemonInfoTranslationEntries } from "#app/plugins/i18n"; +import { PokemonInfoTranslationEntries } from '#app/plugins/i18n'; export const pokemonInfo: PokemonInfoTranslationEntries = { - Stat: { - "HP": "Max. KP", - "HPshortened": "MaxKP", - "ATK": "Angriff", - "ATKshortened": "Ang", - "DEF": "Verteidigung", - "DEFshortened": "Vert", - "SPATK": "Sp. Ang", - "SPATKshortened": "SpAng", - "SPDEF": "Sp. Vert", - "SPDEFshortened": "SpVert", - "SPD": "Initiative", - "SPDshortened": "Init", - }, + Stat: { + 'HP': 'Max. KP', + 'HPshortened': 'MaxKP', + 'ATK': 'Angriff', + 'ATKshortened': 'Ang', + 'DEF': 'Verteidigung', + 'DEFshortened': 'Vert', + 'SPATK': 'Sp. Ang', + 'SPATKshortened': 'SpAng', + 'SPDEF': 'Sp. Vert', + 'SPDEFshortened': 'SpVert', + 'SPD': 'Initiative', + 'SPDshortened': 'Init', + }, - Type: { - "UNKNOWN": "Unbekannt", - "NORMAL": "Normal", - "FIGHTING": "Kampf", - "FLYING": "Flug", - "POISON": "Gift", - "GROUND": "Boden", - "ROCK": "Gestein", - "BUG": "Käfer", - "GHOST": "Geist", - "STEEL": "Stahl", - "FIRE": "Feuer", - "WATER": "Wasser", - "GRASS": "Pflanze", - "ELECTRIC": "Elektro", - "PSYCHIC": "Psycho", - "ICE": "Eis", - "DRAGON": "Drache", - "DARK": "Unlicht", - "FAIRY": "Fee", - "STELLAR": "Stellar", - }, -} as const; \ No newline at end of file + Type: { + 'UNKNOWN': 'Unbekannt', + 'NORMAL': 'Normal', + 'FIGHTING': 'Kampf', + 'FLYING': 'Flug', + 'POISON': 'Gift', + 'GROUND': 'Boden', + 'ROCK': 'Gestein', + 'BUG': 'Käfer', + 'GHOST': 'Geist', + 'STEEL': 'Stahl', + 'FIRE': 'Feuer', + 'WATER': 'Wasser', + 'GRASS': 'Pflanze', + 'ELECTRIC': 'Elektro', + 'PSYCHIC': 'Psycho', + 'ICE': 'Eis', + 'DRAGON': 'Drache', + 'DARK': 'Unlicht', + 'FAIRY': 'Fee', + 'STELLAR': 'Stellar', + }, +} as const; diff --git a/src/locales/de/pokemon.ts b/src/locales/de/pokemon.ts index 69644ff83c3..70b4cdec518 100644 --- a/src/locales/de/pokemon.ts +++ b/src/locales/de/pokemon.ts @@ -1,1086 +1,1086 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokemon: SimpleTranslationEntries = { - "bulbasaur": "Bisasam", - "ivysaur": "Bisaknosp", - "venusaur": "Bisaflor", - "charmander": "Glumanda", - "charmeleon": "Glutexo", - "charizard": "Glurak", - "squirtle": "Schiggy", - "wartortle": "Schillok", - "blastoise": "Turtok", - "caterpie": "Raupy", - "metapod": "Safcon", - "butterfree": "Smettbo", - "weedle": "Hornliu", - "kakuna": "Kokuna", - "beedrill": "Bibor", - "pidgey": "Taubsi", - "pidgeotto": "Tauboga", - "pidgeot": "Tauboss", - "rattata": "Rattfratz", - "raticate": "Rattikarl", - "spearow": "Habitak", - "fearow": "Ibitak", - "ekans": "Rettan", - "arbok": "Arbok", - "pikachu": "Pikachu", - "raichu": "Raichu", - "sandshrew": "Sandan", - "sandslash": "Sandamer", - "nidoran_f": "Nidoran♀", - "nidorina": "Nidorina", - "nidoqueen": "Nidoqueen", - "nidoran_m": "Nidoran♂", - "nidorino": "Nidorino", - "nidoking": "Nidoking", - "clefairy": "Piepi", - "clefable": "Pixi", - "vulpix": "Vulpix", - "ninetales": "Vulnona", - "jigglypuff": "Pummeluff", - "wigglytuff": "Knuddeluff", - "zubat": "Zubat", - "golbat": "Golbat", - "oddish": "Myrapla", - "gloom": "Duflor", - "vileplume": "Giflor", - "paras": "Paras", - "parasect": "Parasek", - "venonat": "Bluzuk", - "venomoth": "Omot", - "diglett": "Digda", - "dugtrio": "Digdri", - "meowth": "Mauzi", - "persian": "Snobilikat", - "psyduck": "Enton", - "golduck": "Entoron", - "mankey": "Menki", - "primeape": "Rasaff", - "growlithe": "Fukano", - "arcanine": "Arkani", - "poliwag": "Quapsel", - "poliwhirl": "Quaputzi", - "poliwrath": "Quappo", - "abra": "Abra", - "kadabra": "Kadabra", - "alakazam": "Simsala", - "machop": "Machollo", - "machoke": "Maschock", - "machamp": "Machomei", - "bellsprout": "Knofensa", - "weepinbell": "Ultrigaria", - "victreebel": "Sarzenia", - "tentacool": "Tentacha", - "tentacruel": "Tentoxa", - "geodude": "Kleinstein", - "graveler": "Georok", - "golem": "Geowaz", - "ponyta": "Ponita", - "rapidash": "Gallopa", - "slowpoke": "Flegmon", - "slowbro": "Lahmus", - "magnemite": "Magnetilo", - "magneton": "Magneton", - "farfetchd": "Porenta", - "doduo": "Dodu", - "dodrio": "Dodri", - "seel": "Jurob", - "dewgong": "Jugong", - "grimer": "Sleima", - "muk": "Sleimok", - "shellder": "Muschas", - "cloyster": "Austos", - "gastly": "Nebulak", - "haunter": "Alpollo", - "gengar": "Gengar", - "onix": "Onix", - "drowzee": "Traumato", - "hypno": "Hypno", - "krabby": "Krabby", - "kingler": "Kingler", - "voltorb": "Voltobal", - "electrode": "Lektrobal", - "exeggcute": "Owei", - "exeggutor": "Kokowei", - "cubone": "Tragosso", - "marowak": "Knogga", - "hitmonlee": "Kicklee", - "hitmonchan": "Nockchan", - "lickitung": "Schlurp", - "koffing": "Smogon", - "weezing": "Smogmog", - "rhyhorn": "Rihorn", - "rhydon": "Rizeros", - "chansey": "Chaneira", - "tangela": "Tangela", - "kangaskhan": "Kangama", - "horsea": "Seeper", - "seadra": "Seemon", - "goldeen": "Goldini", - "seaking": "Golking", - "staryu": "Sterndu", - "starmie": "Starmie", - "mr_mime": "Pantimos", - "scyther": "Sichlor", - "jynx": "Rossana", - "electabuzz": "Elektek", - "magmar": "Magmar", - "pinsir": "Pinsir", - "tauros": "Tauros", - "magikarp": "Karpador", - "gyarados": "Garados", - "lapras": "Lapras", - "ditto": "Ditto", - "eevee": "Evoli", - "vaporeon": "Aquana", - "jolteon": "Blitza", - "flareon": "Flamara", - "porygon": "Porygon", - "omanyte": "Amonitas", - "omastar": "Amoroso", - "kabuto": "Kabuto", - "kabutops": "Kabutops", - "aerodactyl": "Aerodactyl", - "snorlax": "Relaxo", - "articuno": "Arktos", - "zapdos": "Zapdos", - "moltres": "Lavados", - "dratini": "Dratini", - "dragonair": "Dragonir", - "dragonite": "Dragoran", - "mewtwo": "Mewtu", - "mew": "Mew", - "chikorita": "Endivie", - "bayleef": "Lorblatt", - "meganium": "Meganie", - "cyndaquil": "Feurigel", - "quilava": "Igelavar", - "typhlosion": "Tornupto", - "totodile": "Karnimani", - "croconaw": "Tyracroc", - "feraligatr": "Impergator", - "sentret": "Wiesor", - "furret": "Wiesenior", - "hoothoot": "Hoothoot", - "noctowl": "Noctuh", - "ledyba": "Ledyba", - "ledian": "Ledian", - "spinarak": "Webarak", - "ariados": "Ariados", - "crobat": "Iksbat", - "chinchou": "Lampi", - "lanturn": "Lanturn", - "pichu": "Pichu", - "cleffa": "Pii", - "igglybuff": "Fluffeluff", - "togepi": "Togepi", - "togetic": "Togetic", - "natu": "Natu", - "xatu": "Xatu", - "mareep": "Voltilamm", - "flaaffy": "Waaty", - "ampharos": "Ampharos", - "bellossom": "Blubella", - "marill": "Marill", - "azumarill": "Azumarill", - "sudowoodo": "Mogelbaum", - "politoed": "Quaxo", - "hoppip": "Hoppspross", - "skiploom": "Hubelupf", - "jumpluff": "Papungha", - "aipom": "Griffel", - "sunkern": "Sonnkern", - "sunflora": "Sonnflora", - "yanma": "Yanma", - "wooper": "Felino", - "quagsire": "Morlord", - "espeon": "Psiana", - "umbreon": "Nachtara", - "murkrow": "Kramurx", - "slowking": "Laschoking", - "misdreavus": "Traunfugil", - "unown": "Icognito", - "wobbuffet": "Woingenau", - "girafarig": "Girafarig", - "pineco": "Tannza", - "forretress": "Forstellka", - "dunsparce": "Dummisel", - "gligar": "Skorgla", - "steelix": "Stahlos", - "snubbull": "Snubbull", - "granbull": "Granbull", - "qwilfish": "Baldorfish", - "scizor": "Scherox", - "shuckle": "Pottrott", - "heracross": "Skaraborn", - "sneasel": "Sniebel", - "teddiursa": "Teddiursa", - "ursaring": "Ursaring", - "slugma": "Schneckmag", - "magcargo": "Magcargo", - "swinub": "Quiekel", - "piloswine": "Keifel", - "corsola": "Corasonn", - "remoraid": "Remoraid", - "octillery": "Octillery", - "delibird": "Botogel", - "mantine": "Mantax", - "skarmory": "Panzaeron", - "houndour": "Hunduster", - "houndoom": "Hundemon", - "kingdra": "Seedraking", - "phanpy": "Phanpy", - "donphan": "Donphan", - "porygon2": "Porygon2", - "stantler": "Damhirplex", - "smeargle": "Farbeagle", - "tyrogue": "Rabauz", - "hitmontop": "Kapoera", - "smoochum": "Kussilla", - "elekid": "Elekid", - "magby": "Magby", - "miltank": "Miltank", - "blissey": "Heiteira", - "raikou": "Raikou", - "entei": "Entei", - "suicune": "Suicune", - "larvitar": "Larvitar", - "pupitar": "Pupitar", - "tyranitar": "Despotar", - "lugia": "Lugia", - "ho_oh": "Ho-Oh", - "celebi": "Celebi", - "treecko": "Geckarbor", - "grovyle": "Reptain", - "sceptile": "Gewaldro", - "torchic": "Flemmli", - "combusken": "Jungglut", - "blaziken": "Lohgock", - "mudkip": "Hydropi", - "marshtomp": "Moorabbel", - "swampert": "Sumpex", - "poochyena": "Fiffyen", - "mightyena": "Magnayen", - "zigzagoon": "Zigzachs", - "linoone": "Geradaks", - "wurmple": "Waumpel", - "silcoon": "Schaloko", - "beautifly": "Papinella", - "cascoon": "Panekon", - "dustox": "Pudox", - "lotad": "Loturzel", - "lombre": "Lombrero", - "ludicolo": "Kappalores", - "seedot": "Samurzel", - "nuzleaf": "Blanas", - "shiftry": "Tengulist", - "taillow": "Schwalbini", - "swellow": "Schwalboss", - "wingull": "Wingull", - "pelipper": "Pelipper", - "ralts": "Trasla", - "kirlia": "Kirlia", - "gardevoir": "Gardevoir", - "surskit": "Geweiher", - "masquerain": "Maskeregen", - "shroomish": "Knilz", - "breloom": "Kapilz", - "slakoth": "Bummelz", - "vigoroth": "Muntier", - "slaking": "Letarking", - "nincada": "Nincada", - "ninjask": "Ninjask", - "shedinja": "Ninjatom", - "whismur": "Flurmel", - "loudred": "Krakeelo", - "exploud": "Krawumms", - "makuhita": "Makuhita", - "hariyama": "Hariyama", - "azurill": "Azurill", - "nosepass": "Nasgnet", - "skitty": "Eneco", - "delcatty": "Enekoro", - "sableye": "Zobiris", - "mawile": "Flunkifer", - "aron": "Stollunior", - "lairon": "Stollrak", - "aggron": "Stolloss", - "meditite": "Meditite", - "medicham": "Meditalis", - "electrike": "Frizelbliz", - "manectric": "Voltenso", - "plusle": "Plusle", - "minun": "Minun", - "volbeat": "Volbeat", - "illumise": "Illumise", - "roselia": "Roselia", - "gulpin": "Schluppuck", - "swalot": "Schluckwech", - "carvanha": "Kanivanha", - "sharpedo": "Tohaido", - "wailmer": "Wailmer", - "wailord": "Wailord", - "numel": "Camaub", - "camerupt": "Camerupt", - "torkoal": "Qurtel", - "spoink": "Spoink", - "grumpig": "Groink", - "spinda": "Pandir", - "trapinch": "Knacklion", - "vibrava": "Vibrava", - "flygon": "Libelldra", - "cacnea": "Tuska", - "cacturne": "Noktuska", - "swablu": "Wablu", - "altaria": "Altaria", - "zangoose": "Sengo", - "seviper": "Vipitis", - "lunatone": "Lunastein", - "solrock": "Sonnfel", - "barboach": "Schmerbe", - "whiscash": "Welsar", - "corphish": "Krebscorps", - "crawdaunt": "Krebutack", - "baltoy": "Puppance", - "claydol": "Lepumentas", - "lileep": "Liliep", - "cradily": "Wielie", - "anorith": "Anorith", - "armaldo": "Armaldo", - "feebas": "Barschwa", - "milotic": "Milotic", - "castform": "Formeo", - "kecleon": "Kecleon", - "shuppet": "Shuppet", - "banette": "Banette", - "duskull": "Zwirrlicht", - "dusclops": "Zwirrklop", - "tropius": "Tropius", - "chimecho": "Palimpalim", - "absol": "Absol", - "wynaut": "Isso", - "snorunt": "Schneppke", - "glalie": "Firnontor", - "spheal": "Seemops", - "sealeo": "Seejong", - "walrein": "Walraisa", - "clamperl": "Perlu", - "huntail": "Aalabyss", - "gorebyss": "Saganabyss", - "relicanth": "Relicanth", - "luvdisc": "Liebiskus", - "bagon": "Kindwurm", - "shelgon": "Draschel", - "salamence": "Brutalanda", - "beldum": "Tanhel", - "metang": "Metang", - "metagross": "Metagross", - "regirock": "Regirock", - "regice": "Regice", - "registeel": "Registeel", - "latias": "Latias", - "latios": "Latios", - "kyogre": "Kyogre", - "groudon": "Groudon", - "rayquaza": "Rayquaza", - "jirachi": "Jirachi", - "deoxys": "Deoxys", - "turtwig": "Chelast", - "grotle": "Chelcarain", - "torterra": "Chelterrar", - "chimchar": "Panflam", - "monferno": "Panpyro", - "infernape": "Panferno", - "piplup": "Plinfa", - "prinplup": "Pilprin", - "empoleon": "Impoleon", - "starly": "Staralili", - "staravia": "Staravia", - "staraptor": "Staraptor", - "bidoof": "Bidiza", - "bibarel": "Bidifas", - "kricketot": "Zirpurze", - "kricketune": "Zirpeise", - "shinx": "Sheinux", - "luxio": "Luxio", - "luxray": "Luxtra", - "budew": "Knospi", - "roserade": "Roserade", - "cranidos": "Koknodon", - "rampardos": "Rameidon", - "shieldon": "Schilterus", - "bastiodon": "Bollterus", - "burmy": "Burmy", - "wormadam": "Burmadame", - "mothim": "Moterpel", - "combee": "Wadribie", - "vespiquen": "Honweisel", - "pachirisu": "Pachirisu", - "buizel": "Bamelin", - "floatzel": "Bojelin", - "cherubi": "Kikugi", - "cherrim": "Kinoso", - "shellos": "Schalellos", - "gastrodon": "Gastrodon", - "ambipom": "Ambidiffel", - "drifloon": "Driftlon", - "drifblim": "Drifzepeli", - "buneary": "Haspiror", - "lopunny": "Schlapor", - "mismagius": "Traunmagil", - "honchkrow": "Kramshef", - "glameow": "Charmian", - "purugly": "Shnurgarst", - "chingling": "Klingplim", - "stunky": "Skunkapuh", - "skuntank": "Skuntank", - "bronzor": "Bronzel", - "bronzong": "Bronzong", - "bonsly": "Mobai", - "mime_jr": "Pantimimi", - "happiny": "Wonneira", - "chatot": "Plaudagei", - "spiritomb": "Kryppuk", - "gible": "Kaumalat", - "gabite": "Knarksel", - "garchomp": "Knackrack", - "munchlax": "Mampfaxo", - "riolu": "Riolu", - "lucario": "Lucario", - "hippopotas": "Hippopotas", - "hippowdon": "Hippoterus", - "skorupi": "Pionskora", - "drapion": "Piondragi", - "croagunk": "Glibunkel", - "toxicroak": "Toxiquak", - "carnivine": "Venuflibis", - "finneon": "Finneon", - "lumineon": "Lumineon", - "mantyke": "Mantirps", - "snover": "Shnebedeck", - "abomasnow": "Rexblisar", - "weavile": "Snibunna", - "magnezone": "Magnezone", - "lickilicky": "Schlurplek", - "rhyperior": "Rihornior", - "tangrowth": "Tangoloss", - "electivire": "Elevoltek", - "magmortar": "Magbrant", - "togekiss": "Togekiss", - "yanmega": "Yanmega", - "leafeon": "Folipurba", - "glaceon": "Glaziola", - "gliscor": "Skorgro", - "mamoswine": "Mamutel", - "porygon_z": "Porygon-Z", - "gallade": "Galagladi", - "probopass": "Voluminas", - "dusknoir": "Zwirrfinst", - "froslass": "Frosdedje", - "rotom": "Rotom", - "uxie": "Selfe", - "mesprit": "Vesprit", - "azelf": "Tobutz", - "dialga": "Dialga", - "palkia": "Palkia", - "heatran": "Heatran", - "regigigas": "Regigigas", - "giratina": "Giratina", - "cresselia": "Cresselia", - "phione": "Phione", - "manaphy": "Manaphy", - "darkrai": "Darkrai", - "shaymin": "Shaymin", - "arceus": "Arceus", - "victini": "Victini", - "snivy": "Serpifeu", - "servine": "Efoserp", - "serperior": "Serpiroyal", - "tepig": "Floink", - "pignite": "Ferkokel", - "emboar": "Flambirex", - "oshawott": "Ottaro", - "dewott": "Zwottronin", - "samurott": "Admurai", - "patrat": "Nagelotz", - "watchog": "Kukmarda", - "lillipup": "Yorkleff", - "herdier": "Terribark", - "stoutland": "Bissbark", - "purrloin": "Felilou", - "liepard": "Kleoparda", - "pansage": "Vegimak", - "simisage": "Vegichita", - "pansear": "Grillmak", - "simisear": "Grillchita", - "panpour": "Sodamak", - "simipour": "Sodachita", - "munna": "Somniam", - "musharna": "Somnivora", - "pidove": "Dusselgurr", - "tranquill": "Navitaub", - "unfezant": "Fasasnob", - "blitzle": "Elezeba", - "zebstrika": "Zebritz", - "roggenrola": "Kiesling", - "boldore": "Sedimantur", - "gigalith": "Brockoloss", - "woobat": "Fleknoil", - "swoobat": "Fletiamo", - "drilbur": "Rotomurf", - "excadrill": "Stalobor", - "audino": "Ohrdoch", - "timburr": "Praktibalk", - "gurdurr": "Strepoli", - "conkeldurr": "Meistagrif", - "tympole": "Schallquap", - "palpitoad": "Mebrana", - "seismitoad": "Branawarz", - "throh": "Jiutesto", - "sawk": "Karadonis", - "sewaddle": "Strawickl", - "swadloon": "Folikon", - "leavanny": "Matrifol", - "venipede": "Toxiped", - "whirlipede": "Rollum", - "scolipede": "Cerapendra", - "cottonee": "Waumboll", - "whimsicott": "Elfun", - "petilil": "Lilminip", - "lilligant": "Dressella", - "basculin": "Barschuft", - "sandile": "Ganovil", - "krokorok": "Rokkaiman", - "krookodile": "Rabigator", - "darumaka": "Flampion", - "darmanitan": "Flampivian", - "maractus": "Maracamba", - "dwebble": "Lithomith", - "crustle": "Castellith", - "scraggy": "Zurrokex", - "scrafty": "Irokex", - "sigilyph": "Symvolara", - "yamask": "Makabaja", - "cofagrigus": "Echnatoll", - "tirtouga": "Galapaflos", - "carracosta": "Karippas", - "archen": "Flapteryx", - "archeops": "Aeropteryx", - "trubbish": "Unratütox", - "garbodor": "Deponitox", - "zorua": "Zorua", - "zoroark": "Zoroark", - "minccino": "Picochilla", - "cinccino": "Chillabell", - "gothita": "Mollimorba", - "gothorita": "Hypnomorba", - "gothitelle": "Morbitesse", - "solosis": "Monozyto", - "duosion": "Mitodos", - "reuniclus": "Zytomega", - "ducklett": "Piccolente", - "swanna": "Swaroness", - "vanillite": "Gelatini", - "vanillish": "Gelatroppo", - "vanilluxe": "Gelatwino", - "deerling": "Sesokitz", - "sawsbuck": "Kronjuwild", - "emolga": "Emolga", - "karrablast": "Laukaps", - "escavalier": "Cavalanzas", - "foongus": "Tarnpignon", - "amoonguss": "Hutsassa", - "frillish": "Quabbel", - "jellicent": "Apoquallyp", - "alomomola": "Mamolida", - "joltik": "Wattzapf", - "galvantula": "Voltula", - "ferroseed": "Kastadur", - "ferrothorn": "Tentantel", - "klink": "Klikk", - "klang": "Kliklak", - "klinklang": "Klikdiklak", - "tynamo": "Zapplardin", - "eelektrik": "Zapplalek", - "eelektross": "Zapplarang", - "elgyem": "Pygraulon", - "beheeyem": "Megalon", - "litwick": "Lichtel", - "lampent": "Laternecto", - "chandelure": "Skelabra", - "axew": "Milza", - "fraxure": "Sharfax", - "haxorus": "Maxax", - "cubchoo": "Petznief", - "beartic": "Siberio", - "cryogonal": "Frigometri", - "shelmet": "Schnuthelm", - "accelgor": "Hydragil", - "stunfisk": "Flunschlik", - "mienfoo": "Lin-Fu", - "mienshao": "Wie-Shu", - "druddigon": "Shardrago", - "golett": "Golbit", - "golurk": "Golgantes", - "pawniard": "Gladiantri", - "bisharp": "Caesurio", - "bouffalant": "Bisofank", - "rufflet": "Geronimatz", - "braviary": "Washakwil", - "vullaby": "Skallyk", - "mandibuzz": "Grypheldis", - "heatmor": "Furnifraß", - "durant": "Fermicula", - "deino": "Kapuno", - "zweilous": "Duodino", - "hydreigon": "Trikephalo", - "larvesta": "Ignivor", - "volcarona": "Ramoth", - "cobalion": "Kobalium", - "terrakion": "Terrakium", - "virizion": "Viridium", - "tornadus": "Boreos", - "thundurus": "Voltolos", - "reshiram": "Reshiram", - "zekrom": "Zekrom", - "landorus": "Demeteros", - "kyurem": "Kyurem", - "keldeo": "Keldeo", - "meloetta": "Meloetta", - "genesect": "Genesect", - "chespin": "Igamaro", - "quilladin": "Igastarnish", - "chesnaught": "Brigaron", - "fennekin": "Fynx", - "braixen": "Rutena", - "delphox": "Fennexis", - "froakie": "Froxy", - "frogadier": "Amphizel", - "greninja": "Quajutsu", - "bunnelby": "Scoppel", - "diggersby": "Grebbit", - "fletchling": "Dartiri", - "fletchinder": "Dartignis", - "talonflame": "Fiaro", - "scatterbug": "Purmel", - "spewpa": "Puponcho", - "vivillon": "Vivillon", - "litleo": "Leufeo", - "pyroar": "Pyroleo", - "flabebe": "Flabébé", - "floette": "Floette", - "florges": "Florges", - "skiddo": "Mähikel", - "gogoat": "Chevrumm", - "pancham": "Pam-Pam", - "pangoro": "Pandagro", - "furfrou": "Coiffwaff", - "espurr": "Psiau", - "meowstic": "Psiaugon", - "honedge": "Gramokles", - "doublade": "Duokles", - "aegislash": "Durengard", - "spritzee": "Parfi", - "aromatisse": "Parfinesse", - "swirlix": "Flauschling", - "slurpuff": "Sabbaione", - "inkay": "Iscalar", - "malamar": "Calamanero", - "binacle": "Bithora", - "barbaracle": "Thanathora", - "skrelp": "Algitt", - "dragalge": "Tandrak", - "clauncher": "Scampisto", - "clawitzer": "Wummer", - "helioptile": "Eguana", - "heliolisk": "Elezard", - "tyrunt": "Balgoras", - "tyrantrum": "Monargoras", - "amaura": "Amarino", - "aurorus": "Amagarga", - "sylveon": "Feelinara", - "hawlucha": "Resladero", - "dedenne": "Dedenne", - "carbink": "Rocara", - "goomy": "Viscora", - "sliggoo": "Viscargot", - "goodra": "Viscogon", - "klefki": "Clavion", - "phantump": "Paragoni", - "trevenant": "Trombork", - "pumpkaboo": "Irrbis", - "gourgeist": "Pumpdjinn", - "bergmite": "Arktip", - "avalugg": "Arktilas", - "noibat": "eF-eM", - "noivern": "UHaFnir", - "xerneas": "Xerneas", - "yveltal": "Yveltal", - "zygarde": "Zygarde", - "diancie": "Diancie", - "hoopa": "Hoopa", - "volcanion": "Volcanion", - "rowlet": "Bauz", - "dartrix": "Arboretoss", - "decidueye": "Silvarro", - "litten": "Flamiau", - "torracat": "Miezunder", - "incineroar": "Fuegro", - "popplio": "Robball", - "brionne": "Marikeck", - "primarina": "Primarene", - "pikipek": "Peppeck", - "trumbeak": "Trompeck", - "toucannon": "Tukanon", - "yungoos": "Mangunior", - "gumshoos": "Manguspektor", - "grubbin": "Mabula", - "charjabug": "Akkup", - "vikavolt": "Donarion", - "crabrawler": "Krabbox", - "crabominable": "Krawell", - "oricorio": "Choreogel", - "cutiefly": "Wommel", - "ribombee": "Bandelby", - "rockruff": "Wuffels", - "lycanroc": "Wolwerock", - "wishiwashi": "Lusardin", - "mareanie": "Garstella", - "toxapex": "Aggrostella", - "mudbray": "Pampuli", - "mudsdale": "Pampross", - "dewpider": "Araqua", - "araquanid": "Aranestro", - "fomantis": "Imantis", - "lurantis": "Mantidea", - "morelull": "Bubungus", - "shiinotic": "Lamellux", - "salandit": "Molunk", - "salazzle": "Amfira", - "stufful": "Velursi", - "bewear": "Kosturso", - "bounsweet": "Frubberl", - "steenee": "Frubaila", - "tsareena": "Fruyal", - "comfey": "Curelei", - "oranguru": "Kommandutan", - "passimian": "Quartermak", - "wimpod": "Reißlaus", - "golisopod": "Tectass", - "sandygast": "Sankabuh", - "palossand": "Colossand", - "pyukumuku": "Gufa", - "type_null": "Typ:Null", - "silvally": "Amigento", - "minior": "Meteno", - "komala": "Koalelu", - "turtonator": "Tortunator", - "togedemaru": "Togedemaru", - "mimikyu": "Mimigma", - "bruxish": "Knirfish", - "drampa": "Sen-Long", - "dhelmise": "Moruda", - "jangmo_o": "Miniras", - "hakamo_o": "Mediras", - "kommo_o": "Grandiras", - "tapu_koko": "Kapu-Riki", - "tapu_lele": "Kapu-Fala", - "tapu_bulu": "Kapu-Toro", - "tapu_fini": "Kapu-Kime", - "cosmog": "Cosmog", - "cosmoem": "Cosmovum", - "solgaleo": "Solgaleo", - "lunala": "Lunala", - "nihilego": "Anego", - "buzzwole": "Masskito", - "pheromosa": "Schabelle", - "xurkitree": "Voltriant", - "celesteela": "Kaguron", - "kartana": "Katagami", - "guzzlord": "Schlingking", - "necrozma": "Necrozma", - "magearna": "Magearna", - "marshadow": "Marshadow", - "poipole": "Venicro", - "naganadel": "Agoyon", - "stakataka": "Muramura", - "blacephalon": "Kopplosio", - "zeraora": "Zeraora", - "meltan": "Meltan", - "melmetal": "Melmetal", - "grookey": "Chimpep", - "thwackey": "Chimstix", - "rillaboom": "Gortrom", - "scorbunny": "Hopplo", - "raboot": "Kickerlo", - "cinderace": "Liberlo", - "sobble": "Memmeon", - "drizzile": "Phlegleon", - "inteleon": "Intelleon", - "skwovet": "Raffel", - "greedent": "Schlaraffel", - "rookidee": "Meikro", - "corvisquire": "Kranoviz", - "corviknight": "Krarmor", - "blipbug": "Sensect", - "dottler": "Keradar", - "orbeetle": "Maritellit", - "nickit": "Kleptifux", - "thievul": "Gaunux", - "gossifleur": "Cottini", - "eldegoss": "Cottomi", - "wooloo": "Wolly", - "dubwool": "Zwollock", - "chewtle": "Kamehaps", - "drednaw": "Kamalm", - "yamper": "Voldi", - "boltund": "Bellektro", - "rolycoly": "Klonkett", - "carkol": "Wagong", - "coalossal": "Montecarbo", - "applin": "Knapfel", - "flapple": "Drapfel", - "appletun": "Schlapfel", - "silicobra": "Salanga", - "sandaconda": "Sanaconda", - "cramorant": "Urgl", - "arrokuda": "Pikuda", - "barraskewda": "Barrakiefa", - "toxel": "Toxel", - "toxtricity": "Riffex", - "sizzlipede": "Thermopod", - "centiskorch": "Infernopod", - "clobbopus": "Klopptopus", - "grapploct": "Kaocto", - "sinistea": "Fatalitee", - "polteageist": "Mortipot", - "hatenna": "Brimova", - "hattrem": "Brimano", - "hatterene": "Silembrim", - "impidimp": "Bähmon", - "morgrem": "Pelzebub", - "grimmsnarl": "Olangaar", - "obstagoon": "Barrikadax", - "perrserker": "Mauzinger", - "cursola": "Gorgasonn", - "sirfetchd": "Lauchzelot", - "mr_rime": "Pantifrost", - "runerigus": "Oghnatoll", - "milcery": "Hokumil", - "alcremie": "Pokusan", - "falinks": "Legios", - "pincurchin": "Britzigel", - "snom": "Snomnom", - "frosmoth": "Mottineva", - "stonjourner": "Humanolith", - "eiscue": "Kubuin", - "indeedee": "Servol", - "morpeko": "Morpeko", - "cufant": "Kupfanti", - "copperajah": "Patinaraja", - "dracozolt": "Lectragon", - "arctozolt": "Lecryodon", - "dracovish": "Pescragon", - "arctovish": "Pescryodon", - "duraludon": "Duraludon", - "dreepy": "Grolldra", - "drakloak": "Phandra", - "dragapult": "Katapuldra", - "zacian": "Zacian", - "zamazenta": "Zamazenta", - "eternatus": "Endynalos", - "kubfu": "Dakuma", - "urshifu": "Wulaosu", - "zarude": "Zarude", - "regieleki": "Regieleki", - "regidrago": "Regidrago", - "glastrier": "Polaross", - "spectrier": "Phantoross", - "calyrex": "Coronospa", - "wyrdeer": "Damythir", - "kleavor": "Axantor", - "ursaluna": "Ursaluna", - "basculegion": "Salmagnis", - "sneasler": "Snieboss", - "overqwil": "Myriador", - "enamorus": "Cupidos", - "sprigatito": "Felori", - "floragato": "Feliospa", - "meowscarada": "Maskagato", - "fuecoco": "Krokel", - "crocalor": "Lokroko", - "skeledirge": "Skelokrok", - "quaxly": "Kwaks", - "quaxwell": "Fuentente", - "quaquaval": "Bailonda", - "lechonk": "Ferkuli", - "oinkologne": "Fragrunz", - "tarountula": "Tarundel", - "spidops": "Spinsidias", - "nymble": "Micrick", - "lokix": "Lextremo", - "pawmi": "Pamo", - "pawmo": "Pamamo", - "pawmot": "Pamomamo", - "tandemaus": "Zwieps", - "maushold": "Famieps", - "fidough": "Hefel", - "dachsbun": "Backel", - "smoliv": "Olini", - "dolliv": "Olivinio", - "arboliva": "Olithena", - "squawkabilly": "Krawalloro", - "nacli": "Geosali", - "naclstack": "Sedisal", - "garganacl": "Saltigant", - "charcadet": "Knarbon", - "armarouge": "Crimanzo", - "ceruledge": "Azugladis", - "tadbulb": "Blipp", - "bellibolt": "Wampitz", - "wattrel": "Voltrel", - "kilowattrel": "Voltrean", - "maschiff": "Mobtiff", - "mabosstiff": "Mastifioso", - "shroodle": "Sproxi", - "grafaiai": "Affiti", - "bramblin": "Weherba", - "brambleghast": "Horrerba", - "toedscool": "Tentagra", - "toedscruel": "Tenterra", - "klawf": "Klibbe", - "capsakid": "Chilingel", - "scovillain": "Halupenjo", - "rellor": "Relluk", - "rabsca": "Skarabaks", - "flittle": "Flattutu", - "espathra": "Psiopatra", - "tinkatink": "Forgita", - "tinkatuff": "Tafforgita", - "tinkaton": "Granforgita", - "wiglett": "Schligda", - "wugtrio": "Schligdri", - "bombirdier": "Adebom", - "finizen": "Normifin", - "palafin": "Delfinator", - "varoom": "Knattox", - "revavroom": "Knattatox", - "cyclizar": "Mopex", - "orthworm": "Schlurm", - "glimmet": "Lumispross", - "glimmora": "Lumiflora", - "greavard": "Gruff", - "houndstone": "Friedwuff", - "flamigo": "Flaminkno", - "cetoddle": "Flaniwal", - "cetitan": "Kolowal", - "veluza": "Agiluza", - "dondozo": "Heerashai", - "tatsugiri": "Nigiragi", - "annihilape": "Epitaff", - "clodsire": "Suelord", - "farigiraf": "Farigiraf", - "dudunsparce": "Dummimisel", - "kingambit": "Gladimperio", - "great_tusk": "Riesenzahn", - "scream_tail": "Brüllschweif", - "brute_bonnet": "Wutpilz", - "flutter_mane": "Flatterhaar", - "slither_wing": "Kriechflügel", - "sandy_shocks": "Sandfell", - "iron_treads": "Eisenrad", - "iron_bundle": "Eisenbündel", - "iron_hands": "Eisenhand", - "iron_jugulis": "Eisenhals", - "iron_moth": "Eisenfalter", - "iron_thorns": "Eisendorn", - "frigibax": "Frospino", - "arctibax": "Cryospino", - "baxcalibur": "Espinodon", - "gimmighoul": "Gierspenst", - "gholdengo": "Monetigo", - "wo_chien": "Chongjian", - "chien_pao": "Baojian", - "ting_lu": "Dinglu", - "chi_yu": "Yuyu", - "roaring_moon": "Donnersichel", - "iron_valiant": "Eisenkrieger", - "koraidon": "Koraidon", - "miraidon": "Miraidon", - "walking_wake": "Windewoge", - "iron_leaves": "Eisenblatt", - "dipplin": "Sirapfel", - "poltchageist": "Mortcha", - "sinistcha": "Fatalitcha", - "okidogi": "Boninu", - "munkidori": "Benesaru", - "fezandipiti": "Beatori", - "ogerpon": "Ogerpon", - "archaludon": "Briduradon", - "hydrapple": "Hydrapfel", - "gouging_fire": "Keilflamme", - "raging_bolt": "Furienblitz", - "iron_boulder": "Eisenfels", - "iron_crown": "Eisenhaupt", - "terapagos": "Terapagos", - "pecharunt": "Infamomo", - "alola_rattata": "Rattfratz", - "alola_raticate": "Rattikarl", - "alola_raichu": "Raichu", - "alola_sandshrew": "Sandan", - "alola_sandslash": "Sandamer", - "alola_vulpix": "Vulpix", - "alola_ninetales": "Vulnona", - "alola_diglett": "Digda", - "alola_dugtrio": "Digdri", - "alola_meowth": "Mauzi", - "alola_persian": "Snobilikat", - "alola_geodude": "Kleinstein", - "alola_graveler": "Georok", - "alola_golem": "Geowaz", - "alola_grimer": "Sleima", - "alola_muk": "Sleimok", - "alola_exeggutor": "Kokowei", - "alola_marowak": "Knogga", - "eternal_floette": "Floette", - "galar_meowth": "Mauzi", - "galar_ponyta": "Ponita", - "galar_rapidash": "Gallopa", - "galar_slowpoke": "Flegmon", - "galar_slowbro": "Lahmus", - "galar_farfetchd": "Porenta", - "galar_weezing": "Smogmog", - "galar_mr_mime": "Pantimos", - "galar_articuno": "Arktos", - "galar_zapdos": "Zapdos", - "galar_moltres": "Lavados", - "galar_slowking": "Laschoking", - "galar_corsola": "Corasonn", - "galar_zigzagoon": "Zigzachs", - "galar_linoone": "Geradaks", - "galar_darumaka": "Flampion", - "galar_darmanitan": "Flampivian", - "galar_yamask": "Makabaja", - "galar_stunfisk": "Flunschlik", - "hisui_growlithe": "Fukano", - "hisui_arcanine": "Arkani", - "hisui_voltorb": "Voltobal", - "hisui_electrode": "Lektrobal", - "hisui_typhlosion": "Tornupto", - "hisui_qwilfish": "Baldorfish", - "hisui_sneasel": "Sniebel", - "hisui_samurott": "Admurai", - "hisui_lilligant": "Dressella", - "hisui_zorua": "Zorua", - "hisui_zoroark": "Zoroark", - "hisui_braviary": "Washakwil", - "hisui_sliggoo": "Viscargot", - "hisui_goodra": "Viscogon", - "hisui_avalugg": "Arktilas", - "hisui_decidueye": "Silvarro", - "paldea_tauros": "Tauros", - "paldea_wooper": "Felino", - "bloodmoon_ursaluna": "Ursaluna", -} as const; \ No newline at end of file + 'bulbasaur': 'Bisasam', + 'ivysaur': 'Bisaknosp', + 'venusaur': 'Bisaflor', + 'charmander': 'Glumanda', + 'charmeleon': 'Glutexo', + 'charizard': 'Glurak', + 'squirtle': 'Schiggy', + 'wartortle': 'Schillok', + 'blastoise': 'Turtok', + 'caterpie': 'Raupy', + 'metapod': 'Safcon', + 'butterfree': 'Smettbo', + 'weedle': 'Hornliu', + 'kakuna': 'Kokuna', + 'beedrill': 'Bibor', + 'pidgey': 'Taubsi', + 'pidgeotto': 'Tauboga', + 'pidgeot': 'Tauboss', + 'rattata': 'Rattfratz', + 'raticate': 'Rattikarl', + 'spearow': 'Habitak', + 'fearow': 'Ibitak', + 'ekans': 'Rettan', + 'arbok': 'Arbok', + 'pikachu': 'Pikachu', + 'raichu': 'Raichu', + 'sandshrew': 'Sandan', + 'sandslash': 'Sandamer', + 'nidoran_f': 'Nidoran♀', + 'nidorina': 'Nidorina', + 'nidoqueen': 'Nidoqueen', + 'nidoran_m': 'Nidoran♂', + 'nidorino': 'Nidorino', + 'nidoking': 'Nidoking', + 'clefairy': 'Piepi', + 'clefable': 'Pixi', + 'vulpix': 'Vulpix', + 'ninetales': 'Vulnona', + 'jigglypuff': 'Pummeluff', + 'wigglytuff': 'Knuddeluff', + 'zubat': 'Zubat', + 'golbat': 'Golbat', + 'oddish': 'Myrapla', + 'gloom': 'Duflor', + 'vileplume': 'Giflor', + 'paras': 'Paras', + 'parasect': 'Parasek', + 'venonat': 'Bluzuk', + 'venomoth': 'Omot', + 'diglett': 'Digda', + 'dugtrio': 'Digdri', + 'meowth': 'Mauzi', + 'persian': 'Snobilikat', + 'psyduck': 'Enton', + 'golduck': 'Entoron', + 'mankey': 'Menki', + 'primeape': 'Rasaff', + 'growlithe': 'Fukano', + 'arcanine': 'Arkani', + 'poliwag': 'Quapsel', + 'poliwhirl': 'Quaputzi', + 'poliwrath': 'Quappo', + 'abra': 'Abra', + 'kadabra': 'Kadabra', + 'alakazam': 'Simsala', + 'machop': 'Machollo', + 'machoke': 'Maschock', + 'machamp': 'Machomei', + 'bellsprout': 'Knofensa', + 'weepinbell': 'Ultrigaria', + 'victreebel': 'Sarzenia', + 'tentacool': 'Tentacha', + 'tentacruel': 'Tentoxa', + 'geodude': 'Kleinstein', + 'graveler': 'Georok', + 'golem': 'Geowaz', + 'ponyta': 'Ponita', + 'rapidash': 'Gallopa', + 'slowpoke': 'Flegmon', + 'slowbro': 'Lahmus', + 'magnemite': 'Magnetilo', + 'magneton': 'Magneton', + 'farfetchd': 'Porenta', + 'doduo': 'Dodu', + 'dodrio': 'Dodri', + 'seel': 'Jurob', + 'dewgong': 'Jugong', + 'grimer': 'Sleima', + 'muk': 'Sleimok', + 'shellder': 'Muschas', + 'cloyster': 'Austos', + 'gastly': 'Nebulak', + 'haunter': 'Alpollo', + 'gengar': 'Gengar', + 'onix': 'Onix', + 'drowzee': 'Traumato', + 'hypno': 'Hypno', + 'krabby': 'Krabby', + 'kingler': 'Kingler', + 'voltorb': 'Voltobal', + 'electrode': 'Lektrobal', + 'exeggcute': 'Owei', + 'exeggutor': 'Kokowei', + 'cubone': 'Tragosso', + 'marowak': 'Knogga', + 'hitmonlee': 'Kicklee', + 'hitmonchan': 'Nockchan', + 'lickitung': 'Schlurp', + 'koffing': 'Smogon', + 'weezing': 'Smogmog', + 'rhyhorn': 'Rihorn', + 'rhydon': 'Rizeros', + 'chansey': 'Chaneira', + 'tangela': 'Tangela', + 'kangaskhan': 'Kangama', + 'horsea': 'Seeper', + 'seadra': 'Seemon', + 'goldeen': 'Goldini', + 'seaking': 'Golking', + 'staryu': 'Sterndu', + 'starmie': 'Starmie', + 'mr_mime': 'Pantimos', + 'scyther': 'Sichlor', + 'jynx': 'Rossana', + 'electabuzz': 'Elektek', + 'magmar': 'Magmar', + 'pinsir': 'Pinsir', + 'tauros': 'Tauros', + 'magikarp': 'Karpador', + 'gyarados': 'Garados', + 'lapras': 'Lapras', + 'ditto': 'Ditto', + 'eevee': 'Evoli', + 'vaporeon': 'Aquana', + 'jolteon': 'Blitza', + 'flareon': 'Flamara', + 'porygon': 'Porygon', + 'omanyte': 'Amonitas', + 'omastar': 'Amoroso', + 'kabuto': 'Kabuto', + 'kabutops': 'Kabutops', + 'aerodactyl': 'Aerodactyl', + 'snorlax': 'Relaxo', + 'articuno': 'Arktos', + 'zapdos': 'Zapdos', + 'moltres': 'Lavados', + 'dratini': 'Dratini', + 'dragonair': 'Dragonir', + 'dragonite': 'Dragoran', + 'mewtwo': 'Mewtu', + 'mew': 'Mew', + 'chikorita': 'Endivie', + 'bayleef': 'Lorblatt', + 'meganium': 'Meganie', + 'cyndaquil': 'Feurigel', + 'quilava': 'Igelavar', + 'typhlosion': 'Tornupto', + 'totodile': 'Karnimani', + 'croconaw': 'Tyracroc', + 'feraligatr': 'Impergator', + 'sentret': 'Wiesor', + 'furret': 'Wiesenior', + 'hoothoot': 'Hoothoot', + 'noctowl': 'Noctuh', + 'ledyba': 'Ledyba', + 'ledian': 'Ledian', + 'spinarak': 'Webarak', + 'ariados': 'Ariados', + 'crobat': 'Iksbat', + 'chinchou': 'Lampi', + 'lanturn': 'Lanturn', + 'pichu': 'Pichu', + 'cleffa': 'Pii', + 'igglybuff': 'Fluffeluff', + 'togepi': 'Togepi', + 'togetic': 'Togetic', + 'natu': 'Natu', + 'xatu': 'Xatu', + 'mareep': 'Voltilamm', + 'flaaffy': 'Waaty', + 'ampharos': 'Ampharos', + 'bellossom': 'Blubella', + 'marill': 'Marill', + 'azumarill': 'Azumarill', + 'sudowoodo': 'Mogelbaum', + 'politoed': 'Quaxo', + 'hoppip': 'Hoppspross', + 'skiploom': 'Hubelupf', + 'jumpluff': 'Papungha', + 'aipom': 'Griffel', + 'sunkern': 'Sonnkern', + 'sunflora': 'Sonnflora', + 'yanma': 'Yanma', + 'wooper': 'Felino', + 'quagsire': 'Morlord', + 'espeon': 'Psiana', + 'umbreon': 'Nachtara', + 'murkrow': 'Kramurx', + 'slowking': 'Laschoking', + 'misdreavus': 'Traunfugil', + 'unown': 'Icognito', + 'wobbuffet': 'Woingenau', + 'girafarig': 'Girafarig', + 'pineco': 'Tannza', + 'forretress': 'Forstellka', + 'dunsparce': 'Dummisel', + 'gligar': 'Skorgla', + 'steelix': 'Stahlos', + 'snubbull': 'Snubbull', + 'granbull': 'Granbull', + 'qwilfish': 'Baldorfish', + 'scizor': 'Scherox', + 'shuckle': 'Pottrott', + 'heracross': 'Skaraborn', + 'sneasel': 'Sniebel', + 'teddiursa': 'Teddiursa', + 'ursaring': 'Ursaring', + 'slugma': 'Schneckmag', + 'magcargo': 'Magcargo', + 'swinub': 'Quiekel', + 'piloswine': 'Keifel', + 'corsola': 'Corasonn', + 'remoraid': 'Remoraid', + 'octillery': 'Octillery', + 'delibird': 'Botogel', + 'mantine': 'Mantax', + 'skarmory': 'Panzaeron', + 'houndour': 'Hunduster', + 'houndoom': 'Hundemon', + 'kingdra': 'Seedraking', + 'phanpy': 'Phanpy', + 'donphan': 'Donphan', + 'porygon2': 'Porygon2', + 'stantler': 'Damhirplex', + 'smeargle': 'Farbeagle', + 'tyrogue': 'Rabauz', + 'hitmontop': 'Kapoera', + 'smoochum': 'Kussilla', + 'elekid': 'Elekid', + 'magby': 'Magby', + 'miltank': 'Miltank', + 'blissey': 'Heiteira', + 'raikou': 'Raikou', + 'entei': 'Entei', + 'suicune': 'Suicune', + 'larvitar': 'Larvitar', + 'pupitar': 'Pupitar', + 'tyranitar': 'Despotar', + 'lugia': 'Lugia', + 'ho_oh': 'Ho-Oh', + 'celebi': 'Celebi', + 'treecko': 'Geckarbor', + 'grovyle': 'Reptain', + 'sceptile': 'Gewaldro', + 'torchic': 'Flemmli', + 'combusken': 'Jungglut', + 'blaziken': 'Lohgock', + 'mudkip': 'Hydropi', + 'marshtomp': 'Moorabbel', + 'swampert': 'Sumpex', + 'poochyena': 'Fiffyen', + 'mightyena': 'Magnayen', + 'zigzagoon': 'Zigzachs', + 'linoone': 'Geradaks', + 'wurmple': 'Waumpel', + 'silcoon': 'Schaloko', + 'beautifly': 'Papinella', + 'cascoon': 'Panekon', + 'dustox': 'Pudox', + 'lotad': 'Loturzel', + 'lombre': 'Lombrero', + 'ludicolo': 'Kappalores', + 'seedot': 'Samurzel', + 'nuzleaf': 'Blanas', + 'shiftry': 'Tengulist', + 'taillow': 'Schwalbini', + 'swellow': 'Schwalboss', + 'wingull': 'Wingull', + 'pelipper': 'Pelipper', + 'ralts': 'Trasla', + 'kirlia': 'Kirlia', + 'gardevoir': 'Gardevoir', + 'surskit': 'Geweiher', + 'masquerain': 'Maskeregen', + 'shroomish': 'Knilz', + 'breloom': 'Kapilz', + 'slakoth': 'Bummelz', + 'vigoroth': 'Muntier', + 'slaking': 'Letarking', + 'nincada': 'Nincada', + 'ninjask': 'Ninjask', + 'shedinja': 'Ninjatom', + 'whismur': 'Flurmel', + 'loudred': 'Krakeelo', + 'exploud': 'Krawumms', + 'makuhita': 'Makuhita', + 'hariyama': 'Hariyama', + 'azurill': 'Azurill', + 'nosepass': 'Nasgnet', + 'skitty': 'Eneco', + 'delcatty': 'Enekoro', + 'sableye': 'Zobiris', + 'mawile': 'Flunkifer', + 'aron': 'Stollunior', + 'lairon': 'Stollrak', + 'aggron': 'Stolloss', + 'meditite': 'Meditite', + 'medicham': 'Meditalis', + 'electrike': 'Frizelbliz', + 'manectric': 'Voltenso', + 'plusle': 'Plusle', + 'minun': 'Minun', + 'volbeat': 'Volbeat', + 'illumise': 'Illumise', + 'roselia': 'Roselia', + 'gulpin': 'Schluppuck', + 'swalot': 'Schluckwech', + 'carvanha': 'Kanivanha', + 'sharpedo': 'Tohaido', + 'wailmer': 'Wailmer', + 'wailord': 'Wailord', + 'numel': 'Camaub', + 'camerupt': 'Camerupt', + 'torkoal': 'Qurtel', + 'spoink': 'Spoink', + 'grumpig': 'Groink', + 'spinda': 'Pandir', + 'trapinch': 'Knacklion', + 'vibrava': 'Vibrava', + 'flygon': 'Libelldra', + 'cacnea': 'Tuska', + 'cacturne': 'Noktuska', + 'swablu': 'Wablu', + 'altaria': 'Altaria', + 'zangoose': 'Sengo', + 'seviper': 'Vipitis', + 'lunatone': 'Lunastein', + 'solrock': 'Sonnfel', + 'barboach': 'Schmerbe', + 'whiscash': 'Welsar', + 'corphish': 'Krebscorps', + 'crawdaunt': 'Krebutack', + 'baltoy': 'Puppance', + 'claydol': 'Lepumentas', + 'lileep': 'Liliep', + 'cradily': 'Wielie', + 'anorith': 'Anorith', + 'armaldo': 'Armaldo', + 'feebas': 'Barschwa', + 'milotic': 'Milotic', + 'castform': 'Formeo', + 'kecleon': 'Kecleon', + 'shuppet': 'Shuppet', + 'banette': 'Banette', + 'duskull': 'Zwirrlicht', + 'dusclops': 'Zwirrklop', + 'tropius': 'Tropius', + 'chimecho': 'Palimpalim', + 'absol': 'Absol', + 'wynaut': 'Isso', + 'snorunt': 'Schneppke', + 'glalie': 'Firnontor', + 'spheal': 'Seemops', + 'sealeo': 'Seejong', + 'walrein': 'Walraisa', + 'clamperl': 'Perlu', + 'huntail': 'Aalabyss', + 'gorebyss': 'Saganabyss', + 'relicanth': 'Relicanth', + 'luvdisc': 'Liebiskus', + 'bagon': 'Kindwurm', + 'shelgon': 'Draschel', + 'salamence': 'Brutalanda', + 'beldum': 'Tanhel', + 'metang': 'Metang', + 'metagross': 'Metagross', + 'regirock': 'Regirock', + 'regice': 'Regice', + 'registeel': 'Registeel', + 'latias': 'Latias', + 'latios': 'Latios', + 'kyogre': 'Kyogre', + 'groudon': 'Groudon', + 'rayquaza': 'Rayquaza', + 'jirachi': 'Jirachi', + 'deoxys': 'Deoxys', + 'turtwig': 'Chelast', + 'grotle': 'Chelcarain', + 'torterra': 'Chelterrar', + 'chimchar': 'Panflam', + 'monferno': 'Panpyro', + 'infernape': 'Panferno', + 'piplup': 'Plinfa', + 'prinplup': 'Pilprin', + 'empoleon': 'Impoleon', + 'starly': 'Staralili', + 'staravia': 'Staravia', + 'staraptor': 'Staraptor', + 'bidoof': 'Bidiza', + 'bibarel': 'Bidifas', + 'kricketot': 'Zirpurze', + 'kricketune': 'Zirpeise', + 'shinx': 'Sheinux', + 'luxio': 'Luxio', + 'luxray': 'Luxtra', + 'budew': 'Knospi', + 'roserade': 'Roserade', + 'cranidos': 'Koknodon', + 'rampardos': 'Rameidon', + 'shieldon': 'Schilterus', + 'bastiodon': 'Bollterus', + 'burmy': 'Burmy', + 'wormadam': 'Burmadame', + 'mothim': 'Moterpel', + 'combee': 'Wadribie', + 'vespiquen': 'Honweisel', + 'pachirisu': 'Pachirisu', + 'buizel': 'Bamelin', + 'floatzel': 'Bojelin', + 'cherubi': 'Kikugi', + 'cherrim': 'Kinoso', + 'shellos': 'Schalellos', + 'gastrodon': 'Gastrodon', + 'ambipom': 'Ambidiffel', + 'drifloon': 'Driftlon', + 'drifblim': 'Drifzepeli', + 'buneary': 'Haspiror', + 'lopunny': 'Schlapor', + 'mismagius': 'Traunmagil', + 'honchkrow': 'Kramshef', + 'glameow': 'Charmian', + 'purugly': 'Shnurgarst', + 'chingling': 'Klingplim', + 'stunky': 'Skunkapuh', + 'skuntank': 'Skuntank', + 'bronzor': 'Bronzel', + 'bronzong': 'Bronzong', + 'bonsly': 'Mobai', + 'mime_jr': 'Pantimimi', + 'happiny': 'Wonneira', + 'chatot': 'Plaudagei', + 'spiritomb': 'Kryppuk', + 'gible': 'Kaumalat', + 'gabite': 'Knarksel', + 'garchomp': 'Knackrack', + 'munchlax': 'Mampfaxo', + 'riolu': 'Riolu', + 'lucario': 'Lucario', + 'hippopotas': 'Hippopotas', + 'hippowdon': 'Hippoterus', + 'skorupi': 'Pionskora', + 'drapion': 'Piondragi', + 'croagunk': 'Glibunkel', + 'toxicroak': 'Toxiquak', + 'carnivine': 'Venuflibis', + 'finneon': 'Finneon', + 'lumineon': 'Lumineon', + 'mantyke': 'Mantirps', + 'snover': 'Shnebedeck', + 'abomasnow': 'Rexblisar', + 'weavile': 'Snibunna', + 'magnezone': 'Magnezone', + 'lickilicky': 'Schlurplek', + 'rhyperior': 'Rihornior', + 'tangrowth': 'Tangoloss', + 'electivire': 'Elevoltek', + 'magmortar': 'Magbrant', + 'togekiss': 'Togekiss', + 'yanmega': 'Yanmega', + 'leafeon': 'Folipurba', + 'glaceon': 'Glaziola', + 'gliscor': 'Skorgro', + 'mamoswine': 'Mamutel', + 'porygon_z': 'Porygon-Z', + 'gallade': 'Galagladi', + 'probopass': 'Voluminas', + 'dusknoir': 'Zwirrfinst', + 'froslass': 'Frosdedje', + 'rotom': 'Rotom', + 'uxie': 'Selfe', + 'mesprit': 'Vesprit', + 'azelf': 'Tobutz', + 'dialga': 'Dialga', + 'palkia': 'Palkia', + 'heatran': 'Heatran', + 'regigigas': 'Regigigas', + 'giratina': 'Giratina', + 'cresselia': 'Cresselia', + 'phione': 'Phione', + 'manaphy': 'Manaphy', + 'darkrai': 'Darkrai', + 'shaymin': 'Shaymin', + 'arceus': 'Arceus', + 'victini': 'Victini', + 'snivy': 'Serpifeu', + 'servine': 'Efoserp', + 'serperior': 'Serpiroyal', + 'tepig': 'Floink', + 'pignite': 'Ferkokel', + 'emboar': 'Flambirex', + 'oshawott': 'Ottaro', + 'dewott': 'Zwottronin', + 'samurott': 'Admurai', + 'patrat': 'Nagelotz', + 'watchog': 'Kukmarda', + 'lillipup': 'Yorkleff', + 'herdier': 'Terribark', + 'stoutland': 'Bissbark', + 'purrloin': 'Felilou', + 'liepard': 'Kleoparda', + 'pansage': 'Vegimak', + 'simisage': 'Vegichita', + 'pansear': 'Grillmak', + 'simisear': 'Grillchita', + 'panpour': 'Sodamak', + 'simipour': 'Sodachita', + 'munna': 'Somniam', + 'musharna': 'Somnivora', + 'pidove': 'Dusselgurr', + 'tranquill': 'Navitaub', + 'unfezant': 'Fasasnob', + 'blitzle': 'Elezeba', + 'zebstrika': 'Zebritz', + 'roggenrola': 'Kiesling', + 'boldore': 'Sedimantur', + 'gigalith': 'Brockoloss', + 'woobat': 'Fleknoil', + 'swoobat': 'Fletiamo', + 'drilbur': 'Rotomurf', + 'excadrill': 'Stalobor', + 'audino': 'Ohrdoch', + 'timburr': 'Praktibalk', + 'gurdurr': 'Strepoli', + 'conkeldurr': 'Meistagrif', + 'tympole': 'Schallquap', + 'palpitoad': 'Mebrana', + 'seismitoad': 'Branawarz', + 'throh': 'Jiutesto', + 'sawk': 'Karadonis', + 'sewaddle': 'Strawickl', + 'swadloon': 'Folikon', + 'leavanny': 'Matrifol', + 'venipede': 'Toxiped', + 'whirlipede': 'Rollum', + 'scolipede': 'Cerapendra', + 'cottonee': 'Waumboll', + 'whimsicott': 'Elfun', + 'petilil': 'Lilminip', + 'lilligant': 'Dressella', + 'basculin': 'Barschuft', + 'sandile': 'Ganovil', + 'krokorok': 'Rokkaiman', + 'krookodile': 'Rabigator', + 'darumaka': 'Flampion', + 'darmanitan': 'Flampivian', + 'maractus': 'Maracamba', + 'dwebble': 'Lithomith', + 'crustle': 'Castellith', + 'scraggy': 'Zurrokex', + 'scrafty': 'Irokex', + 'sigilyph': 'Symvolara', + 'yamask': 'Makabaja', + 'cofagrigus': 'Echnatoll', + 'tirtouga': 'Galapaflos', + 'carracosta': 'Karippas', + 'archen': 'Flapteryx', + 'archeops': 'Aeropteryx', + 'trubbish': 'Unratütox', + 'garbodor': 'Deponitox', + 'zorua': 'Zorua', + 'zoroark': 'Zoroark', + 'minccino': 'Picochilla', + 'cinccino': 'Chillabell', + 'gothita': 'Mollimorba', + 'gothorita': 'Hypnomorba', + 'gothitelle': 'Morbitesse', + 'solosis': 'Monozyto', + 'duosion': 'Mitodos', + 'reuniclus': 'Zytomega', + 'ducklett': 'Piccolente', + 'swanna': 'Swaroness', + 'vanillite': 'Gelatini', + 'vanillish': 'Gelatroppo', + 'vanilluxe': 'Gelatwino', + 'deerling': 'Sesokitz', + 'sawsbuck': 'Kronjuwild', + 'emolga': 'Emolga', + 'karrablast': 'Laukaps', + 'escavalier': 'Cavalanzas', + 'foongus': 'Tarnpignon', + 'amoonguss': 'Hutsassa', + 'frillish': 'Quabbel', + 'jellicent': 'Apoquallyp', + 'alomomola': 'Mamolida', + 'joltik': 'Wattzapf', + 'galvantula': 'Voltula', + 'ferroseed': 'Kastadur', + 'ferrothorn': 'Tentantel', + 'klink': 'Klikk', + 'klang': 'Kliklak', + 'klinklang': 'Klikdiklak', + 'tynamo': 'Zapplardin', + 'eelektrik': 'Zapplalek', + 'eelektross': 'Zapplarang', + 'elgyem': 'Pygraulon', + 'beheeyem': 'Megalon', + 'litwick': 'Lichtel', + 'lampent': 'Laternecto', + 'chandelure': 'Skelabra', + 'axew': 'Milza', + 'fraxure': 'Sharfax', + 'haxorus': 'Maxax', + 'cubchoo': 'Petznief', + 'beartic': 'Siberio', + 'cryogonal': 'Frigometri', + 'shelmet': 'Schnuthelm', + 'accelgor': 'Hydragil', + 'stunfisk': 'Flunschlik', + 'mienfoo': 'Lin-Fu', + 'mienshao': 'Wie-Shu', + 'druddigon': 'Shardrago', + 'golett': 'Golbit', + 'golurk': 'Golgantes', + 'pawniard': 'Gladiantri', + 'bisharp': 'Caesurio', + 'bouffalant': 'Bisofank', + 'rufflet': 'Geronimatz', + 'braviary': 'Washakwil', + 'vullaby': 'Skallyk', + 'mandibuzz': 'Grypheldis', + 'heatmor': 'Furnifraß', + 'durant': 'Fermicula', + 'deino': 'Kapuno', + 'zweilous': 'Duodino', + 'hydreigon': 'Trikephalo', + 'larvesta': 'Ignivor', + 'volcarona': 'Ramoth', + 'cobalion': 'Kobalium', + 'terrakion': 'Terrakium', + 'virizion': 'Viridium', + 'tornadus': 'Boreos', + 'thundurus': 'Voltolos', + 'reshiram': 'Reshiram', + 'zekrom': 'Zekrom', + 'landorus': 'Demeteros', + 'kyurem': 'Kyurem', + 'keldeo': 'Keldeo', + 'meloetta': 'Meloetta', + 'genesect': 'Genesect', + 'chespin': 'Igamaro', + 'quilladin': 'Igastarnish', + 'chesnaught': 'Brigaron', + 'fennekin': 'Fynx', + 'braixen': 'Rutena', + 'delphox': 'Fennexis', + 'froakie': 'Froxy', + 'frogadier': 'Amphizel', + 'greninja': 'Quajutsu', + 'bunnelby': 'Scoppel', + 'diggersby': 'Grebbit', + 'fletchling': 'Dartiri', + 'fletchinder': 'Dartignis', + 'talonflame': 'Fiaro', + 'scatterbug': 'Purmel', + 'spewpa': 'Puponcho', + 'vivillon': 'Vivillon', + 'litleo': 'Leufeo', + 'pyroar': 'Pyroleo', + 'flabebe': 'Flabébé', + 'floette': 'Floette', + 'florges': 'Florges', + 'skiddo': 'Mähikel', + 'gogoat': 'Chevrumm', + 'pancham': 'Pam-Pam', + 'pangoro': 'Pandagro', + 'furfrou': 'Coiffwaff', + 'espurr': 'Psiau', + 'meowstic': 'Psiaugon', + 'honedge': 'Gramokles', + 'doublade': 'Duokles', + 'aegislash': 'Durengard', + 'spritzee': 'Parfi', + 'aromatisse': 'Parfinesse', + 'swirlix': 'Flauschling', + 'slurpuff': 'Sabbaione', + 'inkay': 'Iscalar', + 'malamar': 'Calamanero', + 'binacle': 'Bithora', + 'barbaracle': 'Thanathora', + 'skrelp': 'Algitt', + 'dragalge': 'Tandrak', + 'clauncher': 'Scampisto', + 'clawitzer': 'Wummer', + 'helioptile': 'Eguana', + 'heliolisk': 'Elezard', + 'tyrunt': 'Balgoras', + 'tyrantrum': 'Monargoras', + 'amaura': 'Amarino', + 'aurorus': 'Amagarga', + 'sylveon': 'Feelinara', + 'hawlucha': 'Resladero', + 'dedenne': 'Dedenne', + 'carbink': 'Rocara', + 'goomy': 'Viscora', + 'sliggoo': 'Viscargot', + 'goodra': 'Viscogon', + 'klefki': 'Clavion', + 'phantump': 'Paragoni', + 'trevenant': 'Trombork', + 'pumpkaboo': 'Irrbis', + 'gourgeist': 'Pumpdjinn', + 'bergmite': 'Arktip', + 'avalugg': 'Arktilas', + 'noibat': 'eF-eM', + 'noivern': 'UHaFnir', + 'xerneas': 'Xerneas', + 'yveltal': 'Yveltal', + 'zygarde': 'Zygarde', + 'diancie': 'Diancie', + 'hoopa': 'Hoopa', + 'volcanion': 'Volcanion', + 'rowlet': 'Bauz', + 'dartrix': 'Arboretoss', + 'decidueye': 'Silvarro', + 'litten': 'Flamiau', + 'torracat': 'Miezunder', + 'incineroar': 'Fuegro', + 'popplio': 'Robball', + 'brionne': 'Marikeck', + 'primarina': 'Primarene', + 'pikipek': 'Peppeck', + 'trumbeak': 'Trompeck', + 'toucannon': 'Tukanon', + 'yungoos': 'Mangunior', + 'gumshoos': 'Manguspektor', + 'grubbin': 'Mabula', + 'charjabug': 'Akkup', + 'vikavolt': 'Donarion', + 'crabrawler': 'Krabbox', + 'crabominable': 'Krawell', + 'oricorio': 'Choreogel', + 'cutiefly': 'Wommel', + 'ribombee': 'Bandelby', + 'rockruff': 'Wuffels', + 'lycanroc': 'Wolwerock', + 'wishiwashi': 'Lusardin', + 'mareanie': 'Garstella', + 'toxapex': 'Aggrostella', + 'mudbray': 'Pampuli', + 'mudsdale': 'Pampross', + 'dewpider': 'Araqua', + 'araquanid': 'Aranestro', + 'fomantis': 'Imantis', + 'lurantis': 'Mantidea', + 'morelull': 'Bubungus', + 'shiinotic': 'Lamellux', + 'salandit': 'Molunk', + 'salazzle': 'Amfira', + 'stufful': 'Velursi', + 'bewear': 'Kosturso', + 'bounsweet': 'Frubberl', + 'steenee': 'Frubaila', + 'tsareena': 'Fruyal', + 'comfey': 'Curelei', + 'oranguru': 'Kommandutan', + 'passimian': 'Quartermak', + 'wimpod': 'Reißlaus', + 'golisopod': 'Tectass', + 'sandygast': 'Sankabuh', + 'palossand': 'Colossand', + 'pyukumuku': 'Gufa', + 'type_null': 'Typ:Null', + 'silvally': 'Amigento', + 'minior': 'Meteno', + 'komala': 'Koalelu', + 'turtonator': 'Tortunator', + 'togedemaru': 'Togedemaru', + 'mimikyu': 'Mimigma', + 'bruxish': 'Knirfish', + 'drampa': 'Sen-Long', + 'dhelmise': 'Moruda', + 'jangmo_o': 'Miniras', + 'hakamo_o': 'Mediras', + 'kommo_o': 'Grandiras', + 'tapu_koko': 'Kapu-Riki', + 'tapu_lele': 'Kapu-Fala', + 'tapu_bulu': 'Kapu-Toro', + 'tapu_fini': 'Kapu-Kime', + 'cosmog': 'Cosmog', + 'cosmoem': 'Cosmovum', + 'solgaleo': 'Solgaleo', + 'lunala': 'Lunala', + 'nihilego': 'Anego', + 'buzzwole': 'Masskito', + 'pheromosa': 'Schabelle', + 'xurkitree': 'Voltriant', + 'celesteela': 'Kaguron', + 'kartana': 'Katagami', + 'guzzlord': 'Schlingking', + 'necrozma': 'Necrozma', + 'magearna': 'Magearna', + 'marshadow': 'Marshadow', + 'poipole': 'Venicro', + 'naganadel': 'Agoyon', + 'stakataka': 'Muramura', + 'blacephalon': 'Kopplosio', + 'zeraora': 'Zeraora', + 'meltan': 'Meltan', + 'melmetal': 'Melmetal', + 'grookey': 'Chimpep', + 'thwackey': 'Chimstix', + 'rillaboom': 'Gortrom', + 'scorbunny': 'Hopplo', + 'raboot': 'Kickerlo', + 'cinderace': 'Liberlo', + 'sobble': 'Memmeon', + 'drizzile': 'Phlegleon', + 'inteleon': 'Intelleon', + 'skwovet': 'Raffel', + 'greedent': 'Schlaraffel', + 'rookidee': 'Meikro', + 'corvisquire': 'Kranoviz', + 'corviknight': 'Krarmor', + 'blipbug': 'Sensect', + 'dottler': 'Keradar', + 'orbeetle': 'Maritellit', + 'nickit': 'Kleptifux', + 'thievul': 'Gaunux', + 'gossifleur': 'Cottini', + 'eldegoss': 'Cottomi', + 'wooloo': 'Wolly', + 'dubwool': 'Zwollock', + 'chewtle': 'Kamehaps', + 'drednaw': 'Kamalm', + 'yamper': 'Voldi', + 'boltund': 'Bellektro', + 'rolycoly': 'Klonkett', + 'carkol': 'Wagong', + 'coalossal': 'Montecarbo', + 'applin': 'Knapfel', + 'flapple': 'Drapfel', + 'appletun': 'Schlapfel', + 'silicobra': 'Salanga', + 'sandaconda': 'Sanaconda', + 'cramorant': 'Urgl', + 'arrokuda': 'Pikuda', + 'barraskewda': 'Barrakiefa', + 'toxel': 'Toxel', + 'toxtricity': 'Riffex', + 'sizzlipede': 'Thermopod', + 'centiskorch': 'Infernopod', + 'clobbopus': 'Klopptopus', + 'grapploct': 'Kaocto', + 'sinistea': 'Fatalitee', + 'polteageist': 'Mortipot', + 'hatenna': 'Brimova', + 'hattrem': 'Brimano', + 'hatterene': 'Silembrim', + 'impidimp': 'Bähmon', + 'morgrem': 'Pelzebub', + 'grimmsnarl': 'Olangaar', + 'obstagoon': 'Barrikadax', + 'perrserker': 'Mauzinger', + 'cursola': 'Gorgasonn', + 'sirfetchd': 'Lauchzelot', + 'mr_rime': 'Pantifrost', + 'runerigus': 'Oghnatoll', + 'milcery': 'Hokumil', + 'alcremie': 'Pokusan', + 'falinks': 'Legios', + 'pincurchin': 'Britzigel', + 'snom': 'Snomnom', + 'frosmoth': 'Mottineva', + 'stonjourner': 'Humanolith', + 'eiscue': 'Kubuin', + 'indeedee': 'Servol', + 'morpeko': 'Morpeko', + 'cufant': 'Kupfanti', + 'copperajah': 'Patinaraja', + 'dracozolt': 'Lectragon', + 'arctozolt': 'Lecryodon', + 'dracovish': 'Pescragon', + 'arctovish': 'Pescryodon', + 'duraludon': 'Duraludon', + 'dreepy': 'Grolldra', + 'drakloak': 'Phandra', + 'dragapult': 'Katapuldra', + 'zacian': 'Zacian', + 'zamazenta': 'Zamazenta', + 'eternatus': 'Endynalos', + 'kubfu': 'Dakuma', + 'urshifu': 'Wulaosu', + 'zarude': 'Zarude', + 'regieleki': 'Regieleki', + 'regidrago': 'Regidrago', + 'glastrier': 'Polaross', + 'spectrier': 'Phantoross', + 'calyrex': 'Coronospa', + 'wyrdeer': 'Damythir', + 'kleavor': 'Axantor', + 'ursaluna': 'Ursaluna', + 'basculegion': 'Salmagnis', + 'sneasler': 'Snieboss', + 'overqwil': 'Myriador', + 'enamorus': 'Cupidos', + 'sprigatito': 'Felori', + 'floragato': 'Feliospa', + 'meowscarada': 'Maskagato', + 'fuecoco': 'Krokel', + 'crocalor': 'Lokroko', + 'skeledirge': 'Skelokrok', + 'quaxly': 'Kwaks', + 'quaxwell': 'Fuentente', + 'quaquaval': 'Bailonda', + 'lechonk': 'Ferkuli', + 'oinkologne': 'Fragrunz', + 'tarountula': 'Tarundel', + 'spidops': 'Spinsidias', + 'nymble': 'Micrick', + 'lokix': 'Lextremo', + 'pawmi': 'Pamo', + 'pawmo': 'Pamamo', + 'pawmot': 'Pamomamo', + 'tandemaus': 'Zwieps', + 'maushold': 'Famieps', + 'fidough': 'Hefel', + 'dachsbun': 'Backel', + 'smoliv': 'Olini', + 'dolliv': 'Olivinio', + 'arboliva': 'Olithena', + 'squawkabilly': 'Krawalloro', + 'nacli': 'Geosali', + 'naclstack': 'Sedisal', + 'garganacl': 'Saltigant', + 'charcadet': 'Knarbon', + 'armarouge': 'Crimanzo', + 'ceruledge': 'Azugladis', + 'tadbulb': 'Blipp', + 'bellibolt': 'Wampitz', + 'wattrel': 'Voltrel', + 'kilowattrel': 'Voltrean', + 'maschiff': 'Mobtiff', + 'mabosstiff': 'Mastifioso', + 'shroodle': 'Sproxi', + 'grafaiai': 'Affiti', + 'bramblin': 'Weherba', + 'brambleghast': 'Horrerba', + 'toedscool': 'Tentagra', + 'toedscruel': 'Tenterra', + 'klawf': 'Klibbe', + 'capsakid': 'Chilingel', + 'scovillain': 'Halupenjo', + 'rellor': 'Relluk', + 'rabsca': 'Skarabaks', + 'flittle': 'Flattutu', + 'espathra': 'Psiopatra', + 'tinkatink': 'Forgita', + 'tinkatuff': 'Tafforgita', + 'tinkaton': 'Granforgita', + 'wiglett': 'Schligda', + 'wugtrio': 'Schligdri', + 'bombirdier': 'Adebom', + 'finizen': 'Normifin', + 'palafin': 'Delfinator', + 'varoom': 'Knattox', + 'revavroom': 'Knattatox', + 'cyclizar': 'Mopex', + 'orthworm': 'Schlurm', + 'glimmet': 'Lumispross', + 'glimmora': 'Lumiflora', + 'greavard': 'Gruff', + 'houndstone': 'Friedwuff', + 'flamigo': 'Flaminkno', + 'cetoddle': 'Flaniwal', + 'cetitan': 'Kolowal', + 'veluza': 'Agiluza', + 'dondozo': 'Heerashai', + 'tatsugiri': 'Nigiragi', + 'annihilape': 'Epitaff', + 'clodsire': 'Suelord', + 'farigiraf': 'Farigiraf', + 'dudunsparce': 'Dummimisel', + 'kingambit': 'Gladimperio', + 'great_tusk': 'Riesenzahn', + 'scream_tail': 'Brüllschweif', + 'brute_bonnet': 'Wutpilz', + 'flutter_mane': 'Flatterhaar', + 'slither_wing': 'Kriechflügel', + 'sandy_shocks': 'Sandfell', + 'iron_treads': 'Eisenrad', + 'iron_bundle': 'Eisenbündel', + 'iron_hands': 'Eisenhand', + 'iron_jugulis': 'Eisenhals', + 'iron_moth': 'Eisenfalter', + 'iron_thorns': 'Eisendorn', + 'frigibax': 'Frospino', + 'arctibax': 'Cryospino', + 'baxcalibur': 'Espinodon', + 'gimmighoul': 'Gierspenst', + 'gholdengo': 'Monetigo', + 'wo_chien': 'Chongjian', + 'chien_pao': 'Baojian', + 'ting_lu': 'Dinglu', + 'chi_yu': 'Yuyu', + 'roaring_moon': 'Donnersichel', + 'iron_valiant': 'Eisenkrieger', + 'koraidon': 'Koraidon', + 'miraidon': 'Miraidon', + 'walking_wake': 'Windewoge', + 'iron_leaves': 'Eisenblatt', + 'dipplin': 'Sirapfel', + 'poltchageist': 'Mortcha', + 'sinistcha': 'Fatalitcha', + 'okidogi': 'Boninu', + 'munkidori': 'Benesaru', + 'fezandipiti': 'Beatori', + 'ogerpon': 'Ogerpon', + 'archaludon': 'Briduradon', + 'hydrapple': 'Hydrapfel', + 'gouging_fire': 'Keilflamme', + 'raging_bolt': 'Furienblitz', + 'iron_boulder': 'Eisenfels', + 'iron_crown': 'Eisenhaupt', + 'terapagos': 'Terapagos', + 'pecharunt': 'Infamomo', + 'alola_rattata': 'Rattfratz', + 'alola_raticate': 'Rattikarl', + 'alola_raichu': 'Raichu', + 'alola_sandshrew': 'Sandan', + 'alola_sandslash': 'Sandamer', + 'alola_vulpix': 'Vulpix', + 'alola_ninetales': 'Vulnona', + 'alola_diglett': 'Digda', + 'alola_dugtrio': 'Digdri', + 'alola_meowth': 'Mauzi', + 'alola_persian': 'Snobilikat', + 'alola_geodude': 'Kleinstein', + 'alola_graveler': 'Georok', + 'alola_golem': 'Geowaz', + 'alola_grimer': 'Sleima', + 'alola_muk': 'Sleimok', + 'alola_exeggutor': 'Kokowei', + 'alola_marowak': 'Knogga', + 'eternal_floette': 'Floette', + 'galar_meowth': 'Mauzi', + 'galar_ponyta': 'Ponita', + 'galar_rapidash': 'Gallopa', + 'galar_slowpoke': 'Flegmon', + 'galar_slowbro': 'Lahmus', + 'galar_farfetchd': 'Porenta', + 'galar_weezing': 'Smogmog', + 'galar_mr_mime': 'Pantimos', + 'galar_articuno': 'Arktos', + 'galar_zapdos': 'Zapdos', + 'galar_moltres': 'Lavados', + 'galar_slowking': 'Laschoking', + 'galar_corsola': 'Corasonn', + 'galar_zigzagoon': 'Zigzachs', + 'galar_linoone': 'Geradaks', + 'galar_darumaka': 'Flampion', + 'galar_darmanitan': 'Flampivian', + 'galar_yamask': 'Makabaja', + 'galar_stunfisk': 'Flunschlik', + 'hisui_growlithe': 'Fukano', + 'hisui_arcanine': 'Arkani', + 'hisui_voltorb': 'Voltobal', + 'hisui_electrode': 'Lektrobal', + 'hisui_typhlosion': 'Tornupto', + 'hisui_qwilfish': 'Baldorfish', + 'hisui_sneasel': 'Sniebel', + 'hisui_samurott': 'Admurai', + 'hisui_lilligant': 'Dressella', + 'hisui_zorua': 'Zorua', + 'hisui_zoroark': 'Zoroark', + 'hisui_braviary': 'Washakwil', + 'hisui_sliggoo': 'Viscargot', + 'hisui_goodra': 'Viscogon', + 'hisui_avalugg': 'Arktilas', + 'hisui_decidueye': 'Silvarro', + 'paldea_tauros': 'Tauros', + 'paldea_wooper': 'Felino', + 'bloodmoon_ursaluna': 'Ursaluna', +} as const; diff --git a/src/locales/de/splash-messages.ts b/src/locales/de/splash-messages.ts index 4bbe9a25492..c961aeed61e 100644 --- a/src/locales/de/splash-messages.ts +++ b/src/locales/de/splash-messages.ts @@ -1,37 +1,37 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const splashMessages: SimpleTranslationEntries = { - "battlesWon": "Kämpfe gewonnen!", - "joinTheDiscord": "Tritt dem Discord bei!", - "infiniteLevels": "Unendliche Level!", - "everythingStacks": "Alles stapelt sich!", - "optionalSaveScumming": "Optionales Save Scumming!", - "biomes": "35 Biome!", - "openSource": "Open Source!", - "playWithSpeed": "Spiele mit fünffacher Geschwindigkeit!", - "liveBugTesting": "Live-Bug-Tests!", - "heavyInfluence": "Starker RoR2-Einfluss!", - "pokemonRiskAndPokemonRain": "Pokémon Risk and Pokémon Rain!", - "nowWithMoreSalt": "Jetzt mit 33% mehr Salz!", - "infiniteFusionAtHome": "Wir haben Infinite Fusionen zu Hause!", - "brokenEggMoves": "Übermächtige Ei-Attacken!", - "magnificent": "Herrlich!", - "mubstitute": "Melegator!", - "thatsCrazy": "Das ist verrückt!", - "oranceJuice": "Orangensaft!", - "questionableBalancing": "Fragwürdiges Balancing!", - "coolShaders": "Coole Shader!", - "aiFree": "Ohne KI!", - "suddenDifficultySpikes": "Plötzliche Schwierigkeitsspitzen!", - "basedOnAnUnfinishedFlashGame": "Basierend auf einem unfertigen Flash-Spiel!", - "moreAddictiveThanIntended": "Süchtig machender als beabsichtigt!", - "mostlyConsistentSeeds": "Meistens konsistente Seeds!", - "achievementPointsDontDoAnything": "Erungenschaftspunkte tun nichts!", - "youDoNotStartAtLevel": "Du startest nicht auf Level 2000!", - "dontTalkAboutTheManaphyEggIncident": "Wir reden nicht über den Manaphy-Ei-Vorfall!", - "alsoTryPokengine": "Versuche auch Pokéngine!", - "alsoTryEmeraldRogue": "Versuche auch Emerald Rogue!", - "alsoTryRadicalRed": "Versuche auch Radical Red!", - "eeveeExpo": "Evoli-Expo!", - "ynoproject": "YNO-Projekt!", -} as const; \ No newline at end of file + 'battlesWon': 'Kämpfe gewonnen!', + 'joinTheDiscord': 'Tritt dem Discord bei!', + 'infiniteLevels': 'Unendliche Level!', + 'everythingStacks': 'Alles stapelt sich!', + 'optionalSaveScumming': 'Optionales Save Scumming!', + 'biomes': '35 Biome!', + 'openSource': 'Open Source!', + 'playWithSpeed': 'Spiele mit fünffacher Geschwindigkeit!', + 'liveBugTesting': 'Live-Bug-Tests!', + 'heavyInfluence': 'Starker RoR2-Einfluss!', + 'pokemonRiskAndPokemonRain': 'Pokémon Risk and Pokémon Rain!', + 'nowWithMoreSalt': 'Jetzt mit 33% mehr Salz!', + 'infiniteFusionAtHome': 'Wir haben Infinite Fusionen zu Hause!', + 'brokenEggMoves': 'Übermächtige Ei-Attacken!', + 'magnificent': 'Herrlich!', + 'mubstitute': 'Melegator!', + 'thatsCrazy': 'Das ist verrückt!', + 'oranceJuice': 'Orangensaft!', + 'questionableBalancing': 'Fragwürdiges Balancing!', + 'coolShaders': 'Coole Shader!', + 'aiFree': 'Ohne KI!', + 'suddenDifficultySpikes': 'Plötzliche Schwierigkeitsspitzen!', + 'basedOnAnUnfinishedFlashGame': 'Basierend auf einem unfertigen Flash-Spiel!', + 'moreAddictiveThanIntended': 'Süchtig machender als beabsichtigt!', + 'mostlyConsistentSeeds': 'Meistens konsistente Seeds!', + 'achievementPointsDontDoAnything': 'Erungenschaftspunkte tun nichts!', + 'youDoNotStartAtLevel': 'Du startest nicht auf Level 2000!', + 'dontTalkAboutTheManaphyEggIncident': 'Wir reden nicht über den Manaphy-Ei-Vorfall!', + 'alsoTryPokengine': 'Versuche auch Pokéngine!', + 'alsoTryEmeraldRogue': 'Versuche auch Emerald Rogue!', + 'alsoTryRadicalRed': 'Versuche auch Radical Red!', + 'eeveeExpo': 'Evoli-Expo!', + 'ynoproject': 'YNO-Projekt!', +} as const; diff --git a/src/locales/de/starter-select-ui-handler.ts b/src/locales/de/starter-select-ui-handler.ts index 0723c14ad82..61ba86828cb 100644 --- a/src/locales/de/starter-select-ui-handler.ts +++ b/src/locales/de/starter-select-ui-handler.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,39 +6,39 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const starterSelectUiHandler: SimpleTranslationEntries = { - "confirmStartTeam": "Mit diesen Pokémon losziehen?", - "gen1": "I", - "gen2": "II", - "gen3": "III", - "gen4": "IV", - "gen5": "V", - "gen6": "VI", - "gen7": "VII", - "gen8": "VIII", - "gen9": "IX", - "growthRate": "Wachstum:", - "ability": "Fähgkeit:", - "passive": "Passiv:", - "nature": "Wesen:", - "eggMoves": "Ei-Attacken", - "start": "Start", - "addToParty": "Zum Team hinzufügen", - "toggleIVs": "DVs anzeigen/verbergen", - "manageMoves": "Attacken ändern", - "useCandies": "Bonbons verwenden", - "selectMoveSwapOut": "Wähle die zu ersetzende Attacke.", - "selectMoveSwapWith": "Wähle die gewünschte Attacke.", - "unlockPassive": "Passiv-Skill freischalten", - "reduceCost": "Preis reduzieren", - "cycleShiny": "R: Schillernd Ja/Nein", - "cycleForm": "F: Form ändern", - "cycleGender": "G: Geschlecht ändern", - "cycleAbility": "E: Fähigkeit ändern", - "cycleNature": "N: Wesen Ändern", - "cycleVariant": "V: Seltenheit ändern", - "enablePassive": "Passiv-Skill aktivieren", - "disablePassive": "Passiv-Skill deaktivieren", - "locked": "Gesperrt", - "disabled": "Deaktiviert", - "uncaught": "Ungefangen" -} + 'confirmStartTeam': 'Mit diesen Pokémon losziehen?', + 'gen1': 'I', + 'gen2': 'II', + 'gen3': 'III', + 'gen4': 'IV', + 'gen5': 'V', + 'gen6': 'VI', + 'gen7': 'VII', + 'gen8': 'VIII', + 'gen9': 'IX', + 'growthRate': 'Wachstum:', + 'ability': 'Fähgkeit:', + 'passive': 'Passiv:', + 'nature': 'Wesen:', + 'eggMoves': 'Ei-Attacken', + 'start': 'Start', + 'addToParty': 'Zum Team hinzufügen', + 'toggleIVs': 'DVs anzeigen/verbergen', + 'manageMoves': 'Attacken ändern', + 'useCandies': 'Bonbons verwenden', + 'selectMoveSwapOut': 'Wähle die zu ersetzende Attacke.', + 'selectMoveSwapWith': 'Wähle die gewünschte Attacke.', + 'unlockPassive': 'Passiv-Skill freischalten', + 'reduceCost': 'Preis reduzieren', + 'cycleShiny': 'R: Schillernd Ja/Nein', + 'cycleForm': 'F: Form ändern', + 'cycleGender': 'G: Geschlecht ändern', + 'cycleAbility': 'E: Fähigkeit ändern', + 'cycleNature': 'N: Wesen Ändern', + 'cycleVariant': 'V: Seltenheit ändern', + 'enablePassive': 'Passiv-Skill aktivieren', + 'disablePassive': 'Passiv-Skill deaktivieren', + 'locked': 'Gesperrt', + 'disabled': 'Deaktiviert', + 'uncaught': 'Ungefangen' +}; diff --git a/src/locales/de/trainers.ts b/src/locales/de/trainers.ts index 93eb04cca67..5bda5f9eb01 100644 --- a/src/locales/de/trainers.ts +++ b/src/locales/de/trainers.ts @@ -1,244 +1,244 @@ -import {SimpleTranslationEntries} from "#app/plugins/i18n"; +import {SimpleTranslationEntries} from '#app/plugins/i18n'; // Titles of special trainers like gym leaders, elite four, and the champion export const titles: SimpleTranslationEntries = { - "elite_four": "Top Vier", - "gym_leader": "Arenaleiter", - "gym_leader_female": "Arenaleiterin", - "champion": "Champion", - "rival": "Rivale", - "professor": "Professor", - "frontier_brain": "Kampfkoryphäen", - // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. + 'elite_four': 'Top Vier', + 'gym_leader': 'Arenaleiter', + 'gym_leader_female': 'Arenaleiterin', + 'champion': 'Champion', + 'rival': 'Rivale', + 'professor': 'Professor', + 'frontier_brain': 'Kampfkoryphäen', + // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. } as const; // Titles of trainers like "Youngster" or "Lass" export const trainerClasses: SimpleTranslationEntries = { - "ace_trainer": "Ass-Trainer", - "ace_trainer_female": "Ass-Trainerin", - "ace_duo": "Ass-Duo", - "artist": "Künstler", - "artist_female": "Künstlerin", - "backers": "Anhänger", - "backpacker": "Backpacker", - "backpacker_female": "Backpackerin", - "backpackers": "Backpacker", - "baker": "Bäckerin", - "battle_girl": "Kämpferin", - "beauty": "Schönheit", - "beginners": "Anfänger", - "biker": "Rowdy", - "black_belt": "Schwarzgurt", - "breeder": "Pokémon Züchter", - "breeder_female": "Pokémon Züchterin", - "breeders": "Pokémon Züchter", - "clerk": "Angestellter", - "clerk_female": "Angestellte", - "colleagues": "Geschäftspartner", - "crush_kin": "Mühlensippe", - "cyclist": "Biker", - "cyclist_female": "Bikerin", - "cyclists": "Biker", - "dancer": "Tänzer", - "dancer_female": "Tänzerin", - "depot_agent": "Bahnangestellter", - "doctor": "Arzt", - "doctor_female": "Ärztin", - "fisherman": "Angler", - "fisherman_female": "Angler", // Seems to be the same in german but exists in other languages like italian - "gentleman": "Gentleman", - "guitarist": "Gitarrist", - "guitarist_female": "Gitarristin", - "harlequin": "Kasper", - "hiker": "Wanderer", - "hooligans": "Rabauken", - "hoopster": "Basketballer", - "infielder": "Baseballer", - "janitor": "Hausmeister", - "lady": "Lady", - "lass": "Göre", - "linebacker": "Footballer", - "maid": "Zofe", - "madame": "Madam", - "medical_team": "Mediziner", - "musician": "Musiker", - "hex_maniac": "Hexe", - "nurse": "Pflegerin", - "nursery_aide": "Erzieherin", - "officer": "Polizist", - "parasol_lady": "Schirmdame", - "pilot": "Pilot", - "pokéfan": "Pokéfan", - "pokéfan_female": "Pokéfan", - "pokéfan_family": "Pokéfan-Pärchen", - "preschooler": "Vorschüler", - "preschooler_female": "Vorschülerin", - "preschoolers": "Vorschüler", - "psychic": "Seher", - "psychic_female": "Seherin", - "psychics": "Seher", - "pokémon_ranger": "Pokémon-Ranger", - "pokémon_ranger_female": "Pokémon-Ranger", - "pokémon_rangers": "Pokémon-Ranger", - "ranger": "Ranger", - "restaurant_staff": "Restaurant Angestellte", - "rich": "Rich", - "rich_female": "Rich", - "rich_boy": "Schnösel", - "rich_couple": "Reiches Paar", - "rich_kid": "Rich Kid", - "rich_kid_female": "Rich Kid", - "rich_kids": "Schnösel", - "roughneck": "Raufbold", - "scientist": "Forscher", - "scientist_female": "Forscherin", - "scientists": "Forscher", - "smasher": "Tennis-Ass", - "snow_worker": "Schneearbeiter", // There is a trainer type for this but no actual trainer class? They seem to be just workers but dressed differently - "snow_worker_female": "Schneearbeiterin", - "striker": "Fußballer", - "school_kid": "Schulkind", - "school_kid_female": "Schulkind", // Same in german but different in italian - "school_kids": "Schüler", - "swimmer": "Schwimmer", - "swimmer_female": "Schwimmerin", - "swimmers": "Schwimmerpaar", - "twins": "Zwillinge", - "veteran": "Veteran", - "veteran_female": "Veteran", // same in german, different in other languages - "veteran_duo": "Veteranen", - "waiter": "Servierer", - "waitress": "Serviererin", - "worker": "Arbeiter", - "worker_female": "Arbeiterin", - "workers": "Arbeiter", - "youngster": "Knirps" + 'ace_trainer': 'Ass-Trainer', + 'ace_trainer_female': 'Ass-Trainerin', + 'ace_duo': 'Ass-Duo', + 'artist': 'Künstler', + 'artist_female': 'Künstlerin', + 'backers': 'Anhänger', + 'backpacker': 'Backpacker', + 'backpacker_female': 'Backpackerin', + 'backpackers': 'Backpacker', + 'baker': 'Bäckerin', + 'battle_girl': 'Kämpferin', + 'beauty': 'Schönheit', + 'beginners': 'Anfänger', + 'biker': 'Rowdy', + 'black_belt': 'Schwarzgurt', + 'breeder': 'Pokémon Züchter', + 'breeder_female': 'Pokémon Züchterin', + 'breeders': 'Pokémon Züchter', + 'clerk': 'Angestellter', + 'clerk_female': 'Angestellte', + 'colleagues': 'Geschäftspartner', + 'crush_kin': 'Mühlensippe', + 'cyclist': 'Biker', + 'cyclist_female': 'Bikerin', + 'cyclists': 'Biker', + 'dancer': 'Tänzer', + 'dancer_female': 'Tänzerin', + 'depot_agent': 'Bahnangestellter', + 'doctor': 'Arzt', + 'doctor_female': 'Ärztin', + 'fisherman': 'Angler', + 'fisherman_female': 'Angler', // Seems to be the same in german but exists in other languages like italian + 'gentleman': 'Gentleman', + 'guitarist': 'Gitarrist', + 'guitarist_female': 'Gitarristin', + 'harlequin': 'Kasper', + 'hiker': 'Wanderer', + 'hooligans': 'Rabauken', + 'hoopster': 'Basketballer', + 'infielder': 'Baseballer', + 'janitor': 'Hausmeister', + 'lady': 'Lady', + 'lass': 'Göre', + 'linebacker': 'Footballer', + 'maid': 'Zofe', + 'madame': 'Madam', + 'medical_team': 'Mediziner', + 'musician': 'Musiker', + 'hex_maniac': 'Hexe', + 'nurse': 'Pflegerin', + 'nursery_aide': 'Erzieherin', + 'officer': 'Polizist', + 'parasol_lady': 'Schirmdame', + 'pilot': 'Pilot', + 'pokéfan': 'Pokéfan', + 'pokéfan_female': 'Pokéfan', + 'pokéfan_family': 'Pokéfan-Pärchen', + 'preschooler': 'Vorschüler', + 'preschooler_female': 'Vorschülerin', + 'preschoolers': 'Vorschüler', + 'psychic': 'Seher', + 'psychic_female': 'Seherin', + 'psychics': 'Seher', + 'pokémon_ranger': 'Pokémon-Ranger', + 'pokémon_ranger_female': 'Pokémon-Ranger', + 'pokémon_rangers': 'Pokémon-Ranger', + 'ranger': 'Ranger', + 'restaurant_staff': 'Restaurant Angestellte', + 'rich': 'Rich', + 'rich_female': 'Rich', + 'rich_boy': 'Schnösel', + 'rich_couple': 'Reiches Paar', + 'rich_kid': 'Rich Kid', + 'rich_kid_female': 'Rich Kid', + 'rich_kids': 'Schnösel', + 'roughneck': 'Raufbold', + 'scientist': 'Forscher', + 'scientist_female': 'Forscherin', + 'scientists': 'Forscher', + 'smasher': 'Tennis-Ass', + 'snow_worker': 'Schneearbeiter', // There is a trainer type for this but no actual trainer class? They seem to be just workers but dressed differently + 'snow_worker_female': 'Schneearbeiterin', + 'striker': 'Fußballer', + 'school_kid': 'Schulkind', + 'school_kid_female': 'Schulkind', // Same in german but different in italian + 'school_kids': 'Schüler', + 'swimmer': 'Schwimmer', + 'swimmer_female': 'Schwimmerin', + 'swimmers': 'Schwimmerpaar', + 'twins': 'Zwillinge', + 'veteran': 'Veteran', + 'veteran_female': 'Veteran', // same in german, different in other languages + 'veteran_duo': 'Veteranen', + 'waiter': 'Servierer', + 'waitress': 'Serviererin', + 'worker': 'Arbeiter', + 'worker_female': 'Arbeiterin', + 'workers': 'Arbeiter', + 'youngster': 'Knirps' } as const; // Names of special trainers like gym leaders, elite four, and the champion export const trainerNames: SimpleTranslationEntries = { - "brock": "Rocko", - "misty": "Misty", - "lt_surge": "Major Bob", - "erika": "Erika", - "janine": "Janina", - "sabrina": "Sabrina", - "blaine": "Pyro", - "giovanni": "Giovanni", - "falkner": "Falk", - "bugsy": "Kai", - "whitney": "Bianka", - "morty": "Jens", - "chuck": "Hartwig", - "jasmine": "Jasmin", - "pryce": "Norbert", - "clair": "Sandra", - "roxanne": "Felizia", - "brawly": "Kamillo", - "wattson": "Walter", - "flannery": "Flavia", - "norman": "Norman", - "winona": "Wibke", - "tate": "Ben", - "liza": "Svenja", - "juan": "Juan", - "roark": "Veit", - "gardenia": "Silvana", - "maylene": "Hilda", - "crasher_wake": "Wellenbrecher Marinus", - "fantina": "Lamina", - "byron": "Adam", - "candice": "Frida", - "volkner": "Volkner", - "cilan": "Benny", - "chili": "Maik", - "cress": "Colin", - "cheren": "Cheren", - "lenora": "Aloe", - "roxie": "Mica", - "burgh": "Artie", - "elesa": "Kamilla", - "clay": "Turner", - "skyla": "Géraldine", - "brycen": "Sandro", - "drayden": "Lysander", - "marlon": "Benson", - "viola": "Viola", - "grant": "Lino", - "korrina": "Connie", - "ramos": "Amaro", - "clemont": "Citro", - "valerie": "Valerie", - "olympia": "Astrid", - "wulfric": "Galantho", - "milo": "Yarro", - "nessa": "Kate", - "kabu": "Kabu", - "bea": "Saida", - "allister": "Nio", - "opal": "Papella", - "bede": "Betys", - "gordie": "Mac", - "melony": "Mel", - "piers": "Nezz", - "marnie": "Mary", - "raihan": "Roy", - "katy": "Ronah", - "brassius": "Colzo", - "iono": "Enigmara", - "kofu": "Kombu", - "larry": "Aoki", - "ryme": "Etta", - "tulip": "Tulia", - "grusha": "Grusha", - "lorelei": "Lorelei", - "bruno": "Bruno", - "agatha": "Agathe", - "lance": "Siegfried", - "will": "Willi", - "koga": "Koga", - "karen": "Melanie", - "sidney": "Ulrich", - "phoebe": "Antonia", - "glacia": "Frosina", - "drake": "Dragan", - "aaron": "Herbaro", - "bertha": "Teresa", - "flint": "Ignaz", - "lucian": "Lucian", - "shauntal": "Anissa", - "marshal": "Eugen", - "grimsley": "Astor", - "caitlin": "Kattlea", - "malva": "Pachira", - "siebold": "Narcisse", - "wikstrom": "Thymelot", - "drasna": "Dracena", - "hala": "Hala", - "molayne": "Marlon", - "olivia": "Mayla", - "acerola": "Lola", - "kahili": "Kahili", - "rika": "Cay", - "poppy": "Poppy", - "hassel": "Sinius", - "crispin": "Matt", - "amarys": "Erin", - "lacey": "Tara", - "drayton": "Levy", - "blue": "Blau", - "red": "Rot", - "steven": "Troy", - "wallace": "Wassili", - "cynthia": "Cynthia", - "alder": "Lauro", - "iris": "Lilia", - "diantha": "Diantha", - "hau": "Tali", - "geeta": "Sagaria", - "nemona": "Nemila", - "kieran": "Jo", - "leon": "Delion", - "rival": "Finn", - "rival_female": "Ivy", -} as const; \ No newline at end of file + 'brock': 'Rocko', + 'misty': 'Misty', + 'lt_surge': 'Major Bob', + 'erika': 'Erika', + 'janine': 'Janina', + 'sabrina': 'Sabrina', + 'blaine': 'Pyro', + 'giovanni': 'Giovanni', + 'falkner': 'Falk', + 'bugsy': 'Kai', + 'whitney': 'Bianka', + 'morty': 'Jens', + 'chuck': 'Hartwig', + 'jasmine': 'Jasmin', + 'pryce': 'Norbert', + 'clair': 'Sandra', + 'roxanne': 'Felizia', + 'brawly': 'Kamillo', + 'wattson': 'Walter', + 'flannery': 'Flavia', + 'norman': 'Norman', + 'winona': 'Wibke', + 'tate': 'Ben', + 'liza': 'Svenja', + 'juan': 'Juan', + 'roark': 'Veit', + 'gardenia': 'Silvana', + 'maylene': 'Hilda', + 'crasher_wake': 'Wellenbrecher Marinus', + 'fantina': 'Lamina', + 'byron': 'Adam', + 'candice': 'Frida', + 'volkner': 'Volkner', + 'cilan': 'Benny', + 'chili': 'Maik', + 'cress': 'Colin', + 'cheren': 'Cheren', + 'lenora': 'Aloe', + 'roxie': 'Mica', + 'burgh': 'Artie', + 'elesa': 'Kamilla', + 'clay': 'Turner', + 'skyla': 'Géraldine', + 'brycen': 'Sandro', + 'drayden': 'Lysander', + 'marlon': 'Benson', + 'viola': 'Viola', + 'grant': 'Lino', + 'korrina': 'Connie', + 'ramos': 'Amaro', + 'clemont': 'Citro', + 'valerie': 'Valerie', + 'olympia': 'Astrid', + 'wulfric': 'Galantho', + 'milo': 'Yarro', + 'nessa': 'Kate', + 'kabu': 'Kabu', + 'bea': 'Saida', + 'allister': 'Nio', + 'opal': 'Papella', + 'bede': 'Betys', + 'gordie': 'Mac', + 'melony': 'Mel', + 'piers': 'Nezz', + 'marnie': 'Mary', + 'raihan': 'Roy', + 'katy': 'Ronah', + 'brassius': 'Colzo', + 'iono': 'Enigmara', + 'kofu': 'Kombu', + 'larry': 'Aoki', + 'ryme': 'Etta', + 'tulip': 'Tulia', + 'grusha': 'Grusha', + 'lorelei': 'Lorelei', + 'bruno': 'Bruno', + 'agatha': 'Agathe', + 'lance': 'Siegfried', + 'will': 'Willi', + 'koga': 'Koga', + 'karen': 'Melanie', + 'sidney': 'Ulrich', + 'phoebe': 'Antonia', + 'glacia': 'Frosina', + 'drake': 'Dragan', + 'aaron': 'Herbaro', + 'bertha': 'Teresa', + 'flint': 'Ignaz', + 'lucian': 'Lucian', + 'shauntal': 'Anissa', + 'marshal': 'Eugen', + 'grimsley': 'Astor', + 'caitlin': 'Kattlea', + 'malva': 'Pachira', + 'siebold': 'Narcisse', + 'wikstrom': 'Thymelot', + 'drasna': 'Dracena', + 'hala': 'Hala', + 'molayne': 'Marlon', + 'olivia': 'Mayla', + 'acerola': 'Lola', + 'kahili': 'Kahili', + 'rika': 'Cay', + 'poppy': 'Poppy', + 'hassel': 'Sinius', + 'crispin': 'Matt', + 'amarys': 'Erin', + 'lacey': 'Tara', + 'drayton': 'Levy', + 'blue': 'Blau', + 'red': 'Rot', + 'steven': 'Troy', + 'wallace': 'Wassili', + 'cynthia': 'Cynthia', + 'alder': 'Lauro', + 'iris': 'Lilia', + 'diantha': 'Diantha', + 'hau': 'Tali', + 'geeta': 'Sagaria', + 'nemona': 'Nemila', + 'kieran': 'Jo', + 'leon': 'Delion', + 'rival': 'Finn', + 'rival_female': 'Ivy', +} as const; diff --git a/src/locales/de/tutorial.ts b/src/locales/de/tutorial.ts index 1c4ada3c149..22e486b414c 100644 --- a/src/locales/de/tutorial.ts +++ b/src/locales/de/tutorial.ts @@ -1,34 +1,34 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const tutorial: SimpleTranslationEntries = { - "intro": `Willkommen bei PokéRogue! Dies ist ein kampforientiertes Pokémon-Fangame mit Roguelite-Elementen. + 'intro': `Willkommen bei PokéRogue! Dies ist ein kampforientiertes Pokémon-Fangame mit Roguelite-Elementen. $Dieses Spiel ist nicht monetarisiert. $Wir erheben keinen Eigentumsanspruch an Pokémon oder\nverwendeten, urheberrechtlich geschützten Inhalten. $Das Spiel befindet sich noch in der Entwicklung, ist aber voll spielbar. $Für Fehlerberichte nutze bitte den PokéRogue Discord-Server. $Sollte das Spiel langsam laufen, überprüfe, ob in deinem Browser "Hardwarebeschleunigung" aktiviert ist.`, - "accessMenu": `Nutze M oder Esc, um das Menü zu öffnen. Dort hast du Zugriff auf die Einstellungen und andere Funktionen.`, + 'accessMenu': 'Nutze M oder Esc, um das Menü zu öffnen. Dort hast du Zugriff auf die Einstellungen und andere Funktionen.', - "menu": `In diesem Menü hast du Zugriff auf die Einstellungen. + 'menu': `In diesem Menü hast du Zugriff auf die Einstellungen. $Dort kannst du u. A. die Spielgeschwin-\ndigkeit und das Fensterdesign ändern. $Das Menü verbirgt noch andere Funktionen - probier' sie gerne aus!`, - "starterSelect": `Hier kannst du deine Starter-Pokémon auswählen.\nSie begleiten dich am Anfang deines Abenteuers. + 'starterSelect': `Hier kannst du deine Starter-Pokémon auswählen.\nSie begleiten dich am Anfang deines Abenteuers. $Jeder Starter hat einen Preis. Dein Team kann bis zu sechs\nMitglieder haben, solange der Gesamtpreis max. 10 beträgt. $Du kannst Geschlecht, Fähigkeit und Form beliebig auswählen,\nsobald du sie mindestens einmal gefangen hast. $Die DVs ergeben sich aus den Höchstwerten aller Pokémon,\ndie du bereits gefangen hast. $Es lohnt sich also, das selbe Pokémon mehrmals zu fangen!`, - "pokerus": `Jeden Tag haben drei zufällige Pokémon einen lila Rahmen. + 'pokerus': `Jeden Tag haben drei zufällige Pokémon einen lila Rahmen. $Wenn du eins von ihnen besitzt, $nimm es doch mal mit und sieh dir seinen Bericht an!`, - "statChange": `Statuswertveränderungen halten solange an, wie dein Pokémon auf dem Feld bleibt. + 'statChange': `Statuswertveränderungen halten solange an, wie dein Pokémon auf dem Feld bleibt. $Pokémon werden am Anfang eines Trainerkampfes oder bei einem Arealwechsel automatisch zurückgerufen. $Nutze C oder Shift, um aktuelle Statuswertveränderungen anzuzeigen.`, - "selectItem": `Nach jedem Kampf kannst du aus 3 zufälligen Items exakt eines auswählen. + 'selectItem': `Nach jedem Kampf kannst du aus 3 zufälligen Items exakt eines auswählen. $Es gibt u. A. Heilitems, tragbare Items und Basis-Items, die dir einen permanenten Vorteil verschaffen. $Die meisten tragbaren und permanenten Items werden stärker, wenn du sie mehrfach sammelst. $Manche Items, wie Entwicklungssteine, tauchen nur auf, wenn du sie auch nutzen kannst. @@ -37,10 +37,10 @@ export const tutorial: SimpleTranslationEntries = { $Du kannst Heilitems auch gegen Geld erwerben. Je weiter du kommst, desto mehr stehen dir zur Auswahl. $Erledige deine Einkäufe als erstes, denn sobald du dein zufälliges Item auswählst, beginnt der nächste Kampf.`, - "eggGacha": `Hier kannst du deine Gutscheine gegen Pokémon-Eier\ntauschen. + 'eggGacha': `Hier kannst du deine Gutscheine gegen Pokémon-Eier\ntauschen. $Eier schlüpfen, nachdem du eine gewisse Anzahl Kämpfe\nabsolviert hast. Je seltener das Ei, desto länger dauert es. $Geschlüpfte Pokémon werden nicht deinem Team hinzugefügt,\nsondern deinen verfügbaren Startern. $In der Regel haben sie bessere DVs als in der Wildnis\ngefangene Pokémon. $Es gibt sogar Pokémon, die du nur aus Eiern erhalten kannst. $Es gibt drei Gacha-Maschinen mit je unterschiedlichen Boni,\nalso such' dir die aus, die dir am besten gefällt!`, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/de/voucher.ts b/src/locales/de/voucher.ts index 7af569e88cb..2df0ccd7a9d 100644 --- a/src/locales/de/voucher.ts +++ b/src/locales/de/voucher.ts @@ -1,11 +1,11 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const voucher: SimpleTranslationEntries = { - "vouchers": "Vouchers", - "eggVoucher": "Egg Voucher", - "eggVoucherPlus": "Egg Voucher Plus", - "eggVoucherPremium": "Egg Voucher Premium", - "eggVoucherGold": "Egg Voucher Gold", - "locked": "Locked", - "defeatTrainer": "Defeat {{trainerName}}" -} as const; \ No newline at end of file + 'vouchers': 'Vouchers', + 'eggVoucher': 'Egg Voucher', + 'eggVoucherPlus': 'Egg Voucher Plus', + 'eggVoucherPremium': 'Egg Voucher Premium', + 'eggVoucherGold': 'Egg Voucher Gold', + 'locked': 'Locked', + 'defeatTrainer': 'Defeat {{trainerName}}' +} as const; diff --git a/src/locales/de/weather.ts b/src/locales/de/weather.ts index 6e40714f88f..a755cfa2eee 100644 --- a/src/locales/de/weather.ts +++ b/src/locales/de/weather.ts @@ -1,44 +1,44 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The weather namespace holds text displayed when weather is active during a battle */ export const weather: SimpleTranslationEntries = { - "sunnyStartMessage": "Die Sonnenlicht wird stärker!", - "sunnyLapseMessage": "Die Sonnenlicht ist stark.", - "sunnyClearMessage": "Die Sonnenlicht verliert wieder an Intensität.", + 'sunnyStartMessage': 'Die Sonnenlicht wird stärker!', + 'sunnyLapseMessage': 'Die Sonnenlicht ist stark.', + 'sunnyClearMessage': 'Die Sonnenlicht verliert wieder an Intensität.', - "rainStartMessage": "Es fängt an zu regnen!", - "rainLapseMessage": "Es regnet weiter.", - "rainClearMessage": "Der Regen lässt nach.", + 'rainStartMessage': 'Es fängt an zu regnen!', + 'rainLapseMessage': 'Es regnet weiter.', + 'rainClearMessage': 'Der Regen lässt nach.', - "sandstormStartMessage": "Ein Sandsturm kommt auf!", - "sandstormLapseMessage": "Der Sandsturm tobt.", - "sandstormClearMessage": "Der Sandsturm legt sich.", - "sandstormDamageMessage": " Der Sandsturm fügt {{pokemonPrefix}}{{pokemonName}} Schaden zu!", + 'sandstormStartMessage': 'Ein Sandsturm kommt auf!', + 'sandstormLapseMessage': 'Der Sandsturm tobt.', + 'sandstormClearMessage': 'Der Sandsturm legt sich.', + 'sandstormDamageMessage': ' Der Sandsturm fügt {{pokemonPrefix}}{{pokemonName}} Schaden zu!', - "hailStartMessage": "Es fängt an zu hageln!", - "hailLapseMessage": "Der Hagelsturm tobt.", - "hailClearMessage": "Der Hagelsturm legt sich.", - "hailDamageMessage": "{{pokemonPrefix}}{{pokemonName}} wird von Hagelkörnern getroffen!", + 'hailStartMessage': 'Es fängt an zu hageln!', + 'hailLapseMessage': 'Der Hagelsturm tobt.', + 'hailClearMessage': 'Der Hagelsturm legt sich.', + 'hailDamageMessage': '{{pokemonPrefix}}{{pokemonName}} wird von Hagelkörnern getroffen!', - "snowStartMessage": "Es fängt an zu schneien!", - "snowLapseMessage": "Der Schneesturm tobt.", - "snowClearMessage": "Der Schneesturm legt sich.", + 'snowStartMessage': 'Es fängt an zu schneien!', + 'snowLapseMessage': 'Der Schneesturm tobt.', + 'snowClearMessage': 'Der Schneesturm legt sich.', - "fogStartMessage": "Am Boden breitet sich dichter Nebel aus!", - "fogLapseMessage": "Der Nebel bleibt dicht.", - "fogClearMessage": "Der Nebel lichtet sich.", + 'fogStartMessage': 'Am Boden breitet sich dichter Nebel aus!', + 'fogLapseMessage': 'Der Nebel bleibt dicht.', + 'fogClearMessage': 'Der Nebel lichtet sich.', - "heavyRainStartMessage": "Es fängt an, in Strömen zu regnen!", - "heavyRainLapseMessage": "Der strömende Regen hält an.", - "heavyRainClearMessage": "Der strömende Regen lässt nach.", + 'heavyRainStartMessage': 'Es fängt an, in Strömen zu regnen!', + 'heavyRainLapseMessage': 'Der strömende Regen hält an.', + 'heavyRainClearMessage': 'Der strömende Regen lässt nach.', - "harshSunStartMessage": "Das Sonnenlicht wird sehr viel stärker!", - "harshSunLapseMessage": "Das Sonnenlicht ist sehr stark.", - "harshSunClearMessage": "Das Sonnenlicht verliert an Intensität.", + 'harshSunStartMessage': 'Das Sonnenlicht wird sehr viel stärker!', + 'harshSunLapseMessage': 'Das Sonnenlicht ist sehr stark.', + 'harshSunClearMessage': 'Das Sonnenlicht verliert an Intensität.', - "strongWindsStartMessage": "Alle Flug-Pokémon werden von rätselhaften Luftströmungen geschützt!", - "strongWindsLapseMessage": "Die rätselhafte Luftströmung hält an.", - "strongWindsClearMessage": "Die rätselhafte Luftströmung hat sich wieder geleget.", -} + 'strongWindsStartMessage': 'Alle Flug-Pokémon werden von rätselhaften Luftströmungen geschützt!', + 'strongWindsLapseMessage': 'Die rätselhafte Luftströmung hält an.', + 'strongWindsClearMessage': 'Die rätselhafte Luftströmung hat sich wieder geleget.', +}; diff --git a/src/locales/en/ability-trigger.ts b/src/locales/en/ability-trigger.ts index 49505217126..b2a4002e699 100644 --- a/src/locales/en/ability-trigger.ts +++ b/src/locales/en/ability-trigger.ts @@ -1,6 +1,6 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const abilityTriggers: SimpleTranslationEntries = { - 'blockRecoilDamage' : `{{pokemonName}}'s {{abilityName}}\nprotected it from recoil!`, - 'badDreams': `{{pokemonName}} is tormented!`, -} as const; \ No newline at end of file + 'blockRecoilDamage' : '{{pokemonName}}\'s {{abilityName}}\nprotected it from recoil!', + 'badDreams': '{{pokemonName}} is tormented!', +} as const; diff --git a/src/locales/en/ability.ts b/src/locales/en/ability.ts index a39208ae926..29e1c66f7cd 100644 --- a/src/locales/en/ability.ts +++ b/src/locales/en/ability.ts @@ -1,1244 +1,1244 @@ -import { AbilityTranslationEntries } from "#app/plugins/i18n.js"; +import { AbilityTranslationEntries } from '#app/plugins/i18n.js'; export const ability: AbilityTranslationEntries = { stench: { - name: "Stench", - description: "By releasing stench when attacking, this Pokémon may cause the target to flinch.", + name: 'Stench', + description: 'By releasing stench when attacking, this Pokémon may cause the target to flinch.', }, drizzle: { - name: "Drizzle", - description: "The Pokémon makes it rain when it enters a battle.", + name: 'Drizzle', + description: 'The Pokémon makes it rain when it enters a battle.', }, speedBoost: { - name: "Speed Boost", - description: "Its Speed stat is boosted every turn.", + name: 'Speed Boost', + description: 'Its Speed stat is boosted every turn.', }, battleArmor: { - name: "Battle Armor", - description: "Hard armor protects the Pokémon from critical hits.", + name: 'Battle Armor', + description: 'Hard armor protects the Pokémon from critical hits.', }, sturdy: { - name: "Sturdy", - description: "It cannot be knocked out with one hit. One-hit KO moves cannot knock it out, either.", + name: 'Sturdy', + description: 'It cannot be knocked out with one hit. One-hit KO moves cannot knock it out, either.', }, damp: { - name: "Damp", - description: "Prevents the use of explosive moves, such as Self-Destruct, by dampening its surroundings.", + name: 'Damp', + description: 'Prevents the use of explosive moves, such as Self-Destruct, by dampening its surroundings.', }, limber: { - name: "Limber", - description: "Its limber body protects the Pokémon from paralysis.", + name: 'Limber', + description: 'Its limber body protects the Pokémon from paralysis.', }, sandVeil: { - name: "Sand Veil", - description: "Boosts the Pokémon's evasiveness in a sandstorm.", + name: 'Sand Veil', + description: 'Boosts the Pokémon\'s evasiveness in a sandstorm.', }, static: { - name: "Static", - description: "The Pokémon is charged with static electricity, so contact with it may cause paralysis.", + name: 'Static', + description: 'The Pokémon is charged with static electricity, so contact with it may cause paralysis.', }, voltAbsorb: { - name: "Volt Absorb", - description: "Restores HP if hit by an Electric-type move instead of taking damage.", + name: 'Volt Absorb', + description: 'Restores HP if hit by an Electric-type move instead of taking damage.', }, waterAbsorb: { - name: "Water Absorb", - description: "Restores HP if hit by a Water-type move instead of taking damage.", + name: 'Water Absorb', + description: 'Restores HP if hit by a Water-type move instead of taking damage.', }, oblivious: { - name: "Oblivious", - description: "The Pokémon is oblivious, and that keeps it from being infatuated or falling for taunts.", + name: 'Oblivious', + description: 'The Pokémon is oblivious, and that keeps it from being infatuated or falling for taunts.', }, cloudNine: { - name: "Cloud Nine", - description: "Eliminates the effects of weather.", + name: 'Cloud Nine', + description: 'Eliminates the effects of weather.', }, compoundEyes: { - name: "Compound Eyes", - description: "The Pokémon's compound eyes boost its accuracy.", + name: 'Compound Eyes', + description: 'The Pokémon\'s compound eyes boost its accuracy.', }, insomnia: { - name: "Insomnia", - description: "The Pokémon is suffering from insomnia and cannot fall asleep.", + name: 'Insomnia', + description: 'The Pokémon is suffering from insomnia and cannot fall asleep.', }, colorChange: { - name: "Color Change", - description: "The Pokémon's type becomes the type of the move used on it.", + name: 'Color Change', + description: 'The Pokémon\'s type becomes the type of the move used on it.', }, immunity: { - name: "Immunity", - description: "The immune system of the Pokémon prevents it from getting poisoned.", + name: 'Immunity', + description: 'The immune system of the Pokémon prevents it from getting poisoned.', }, flashFire: { - name: "Flash Fire", - description: "Powers up the Pokémon's Fire-type moves if it's hit by one.", + name: 'Flash Fire', + description: 'Powers up the Pokémon\'s Fire-type moves if it\'s hit by one.', }, shieldDust: { - name: "Shield Dust", - description: "This Pokémon's dust blocks the additional effects of attacks taken.", + name: 'Shield Dust', + description: 'This Pokémon\'s dust blocks the additional effects of attacks taken.', }, ownTempo: { - name: "Own Tempo", - description: "This Pokémon has its own tempo, and that prevents it from becoming confused.", + name: 'Own Tempo', + description: 'This Pokémon has its own tempo, and that prevents it from becoming confused.', }, suctionCups: { - name: "Suction Cups", - description: "This Pokémon uses suction cups to stay in one spot to negate all moves and items that force switching out.", + name: 'Suction Cups', + description: 'This Pokémon uses suction cups to stay in one spot to negate all moves and items that force switching out.', }, intimidate: { - name: "Intimidate", - description: "The Pokémon intimidates opposing Pokémon upon entering battle, lowering their Attack stat.", + name: 'Intimidate', + description: 'The Pokémon intimidates opposing Pokémon upon entering battle, lowering their Attack stat.', }, shadowTag: { - name: "Shadow Tag", - description: "This Pokémon steps on the opposing Pokémon's shadow to prevent it from escaping.", + name: 'Shadow Tag', + description: 'This Pokémon steps on the opposing Pokémon\'s shadow to prevent it from escaping.', }, roughSkin: { - name: "Rough Skin", - description: "This Pokémon inflicts damage with its rough skin to the attacker on contact.", + name: 'Rough Skin', + description: 'This Pokémon inflicts damage with its rough skin to the attacker on contact.', }, wonderGuard: { - name: "Wonder Guard", - description: "Its mysterious power only lets supereffective moves hit the Pokémon.", + name: 'Wonder Guard', + description: 'Its mysterious power only lets supereffective moves hit the Pokémon.', }, levitate: { - name: "Levitate", - description: "By floating in the air, the Pokémon receives full immunity to all Ground-type moves.", + name: 'Levitate', + description: 'By floating in the air, the Pokémon receives full immunity to all Ground-type moves.', }, effectSpore: { - name: "Effect Spore", - description: "Contact with the Pokémon may inflict poison, sleep, or paralysis on its attacker.", + name: 'Effect Spore', + description: 'Contact with the Pokémon may inflict poison, sleep, or paralysis on its attacker.', }, synchronize: { - name: "Synchronize", - description: "The attacker will receive the same status condition if it inflicts a burn, poison, or paralysis to the Pokémon.", + name: 'Synchronize', + description: 'The attacker will receive the same status condition if it inflicts a burn, poison, or paralysis to the Pokémon.', }, clearBody: { - name: "Clear Body", - description: "Prevents other Pokémon's moves or Abilities from lowering the Pokémon's stats.", + name: 'Clear Body', + description: 'Prevents other Pokémon\'s moves or Abilities from lowering the Pokémon\'s stats.', }, naturalCure: { - name: "Natural Cure", - description: "All status conditions heal when the Pokémon switches out.", + name: 'Natural Cure', + description: 'All status conditions heal when the Pokémon switches out.', }, lightningRod: { - name: "Lightning Rod", - description: "The Pokémon draws in all Electric-type moves. Instead of being hit by Electric-type moves, it boosts its Sp. Atk.", + name: 'Lightning Rod', + description: 'The Pokémon draws in all Electric-type moves. Instead of being hit by Electric-type moves, it boosts its Sp. Atk.', }, sereneGrace: { - name: "Serene Grace", - description: "Boosts the likelihood of additional effects occurring when attacking.", + name: 'Serene Grace', + description: 'Boosts the likelihood of additional effects occurring when attacking.', }, swiftSwim: { - name: "Swift Swim", - description: "Boosts the Pokémon's Speed stat in rain.", + name: 'Swift Swim', + description: 'Boosts the Pokémon\'s Speed stat in rain.', }, chlorophyll: { - name: "Chlorophyll", - description: "Boosts the Pokémon's Speed stat in harsh sunlight.", + name: 'Chlorophyll', + description: 'Boosts the Pokémon\'s Speed stat in harsh sunlight.', }, illuminate: { - name: "Illuminate", - description: "By illuminating its surroundings, the Pokémon raises the likelihood of meeting wild Pokémon and prevents its accuracy from being lowered.", + name: 'Illuminate', + description: 'By illuminating its surroundings, the Pokémon raises the likelihood of meeting wild Pokémon and prevents its accuracy from being lowered.', }, trace: { - name: "Trace", - description: "When it enters a battle, the Pokémon copies an opposing Pokémon's Ability.", + name: 'Trace', + description: 'When it enters a battle, the Pokémon copies an opposing Pokémon\'s Ability.', }, hugePower: { - name: "Huge Power", - description: "Doubles the Pokémon's Attack stat.", + name: 'Huge Power', + description: 'Doubles the Pokémon\'s Attack stat.', }, poisonPoint: { - name: "Poison Point", - description: "Contact with the Pokémon may poison the attacker.", + name: 'Poison Point', + description: 'Contact with the Pokémon may poison the attacker.', }, innerFocus: { - name: "Inner Focus", - description: "The Pokémon's intensely focused, and that protects the Pokémon from flinching.", + name: 'Inner Focus', + description: 'The Pokémon\'s intensely focused, and that protects the Pokémon from flinching.', }, magmaArmor: { - name: "Magma Armor", - description: "The Pokémon is covered with hot magma, which prevents the Pokémon from becoming frozen.", + name: 'Magma Armor', + description: 'The Pokémon is covered with hot magma, which prevents the Pokémon from becoming frozen.', }, waterVeil: { - name: "Water Veil", - description: "The Pokémon is covered with a water veil, which prevents the Pokémon from getting a burn.", + name: 'Water Veil', + description: 'The Pokémon is covered with a water veil, which prevents the Pokémon from getting a burn.', }, magnetPull: { - name: "Magnet Pull", - description: "Prevents Steel-type Pokémon from escaping using its magnetic force.", + name: 'Magnet Pull', + description: 'Prevents Steel-type Pokémon from escaping using its magnetic force.', }, soundproof: { - name: "Soundproof", - description: "Soundproofing gives the Pokémon full immunity to all sound-based moves.", + name: 'Soundproof', + description: 'Soundproofing gives the Pokémon full immunity to all sound-based moves.', }, rainDish: { - name: "Rain Dish", - description: "The Pokémon gradually regains HP in rain.", + name: 'Rain Dish', + description: 'The Pokémon gradually regains HP in rain.', }, sandStream: { - name: "Sand Stream", - description: "The Pokémon summons a sandstorm when it enters a battle.", + name: 'Sand Stream', + description: 'The Pokémon summons a sandstorm when it enters a battle.', }, pressure: { - name: "Pressure", - description: "By putting pressure on the opposing Pokémon, it raises their PP usage.", + name: 'Pressure', + description: 'By putting pressure on the opposing Pokémon, it raises their PP usage.', }, thickFat: { - name: "Thick Fat", - description: "The Pokémon is protected by a layer of thick fat, which halves the damage taken from Fire- and Ice-type moves.", + name: 'Thick Fat', + description: 'The Pokémon is protected by a layer of thick fat, which halves the damage taken from Fire- and Ice-type moves.', }, earlyBird: { - name: "Early Bird", - description: "The Pokémon awakens from sleep twice as fast as other Pokémon.", + name: 'Early Bird', + description: 'The Pokémon awakens from sleep twice as fast as other Pokémon.', }, flameBody: { - name: "Flame Body", - description: "Contact with the Pokémon may burn the attacker.", + name: 'Flame Body', + description: 'Contact with the Pokémon may burn the attacker.', }, runAway: { - name: "Run Away", - description: "Enables a sure getaway from wild Pokémon.", + name: 'Run Away', + description: 'Enables a sure getaway from wild Pokémon.', }, keenEye: { - name: "Keen Eye", - description: "Keen eyes prevent other Pokémon from lowering this Pokémon's accuracy.", + name: 'Keen Eye', + description: 'Keen eyes prevent other Pokémon from lowering this Pokémon\'s accuracy.', }, hyperCutter: { - name: "Hyper Cutter", - description: "The Pokémon's proud of its powerful pincers. They prevent other Pokémon from lowering its Attack stat.", + name: 'Hyper Cutter', + description: 'The Pokémon\'s proud of its powerful pincers. They prevent other Pokémon from lowering its Attack stat.', }, pickup: { - name: "Pickup", - description: "The Pokémon may pick up the item an opposing Pokémon held during a battle.", + name: 'Pickup', + description: 'The Pokémon may pick up the item an opposing Pokémon held during a battle.', }, truant: { - name: "Truant", - description: "The Pokémon can't use a move if it had used a move on the previous turn.", + name: 'Truant', + description: 'The Pokémon can\'t use a move if it had used a move on the previous turn.', }, hustle: { - name: "Hustle", - description: "Boosts the Attack stat, but lowers accuracy.", + name: 'Hustle', + description: 'Boosts the Attack stat, but lowers accuracy.', }, cuteCharm: { - name: "Cute Charm", - description: "Contact with the Pokémon may cause infatuation.", + name: 'Cute Charm', + description: 'Contact with the Pokémon may cause infatuation.', }, plus: { - name: "Plus", - description: "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.", + name: 'Plus', + description: 'Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.', }, minus: { - name: "Minus", - description: "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.", + name: 'Minus', + description: 'Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.', }, forecast: { - name: "Forecast", - description: "The Pokémon transforms with the weather to change its type to Water, Fire, or Ice.", + name: 'Forecast', + description: 'The Pokémon transforms with the weather to change its type to Water, Fire, or Ice.', }, stickyHold: { - name: "Sticky Hold", - description: "Items held by the Pokémon are stuck fast and cannot be removed by other Pokémon.", + name: 'Sticky Hold', + description: 'Items held by the Pokémon are stuck fast and cannot be removed by other Pokémon.', }, shedSkin: { - name: "Shed Skin", - description: "The Pokémon may heal its own status conditions by shedding its skin.", + name: 'Shed Skin', + description: 'The Pokémon may heal its own status conditions by shedding its skin.', }, guts: { - name: "Guts", - description: "It's so gutsy that having a status condition boosts the Pokémon's Attack stat.", + name: 'Guts', + description: 'It\'s so gutsy that having a status condition boosts the Pokémon\'s Attack stat.', }, marvelScale: { - name: "Marvel Scale", - description: "The Pokémon's marvelous scales boost the Defense stat if it has a status condition.", + name: 'Marvel Scale', + description: 'The Pokémon\'s marvelous scales boost the Defense stat if it has a status condition.', }, liquidOoze: { - name: "Liquid Ooze", - description: "The oozed liquid has a strong stench, which damages attackers using any draining move.", + name: 'Liquid Ooze', + description: 'The oozed liquid has a strong stench, which damages attackers using any draining move.', }, overgrow: { - name: "Overgrow", - description: "Powers up Grass-type moves when the Pokémon's HP is low.", + name: 'Overgrow', + description: 'Powers up Grass-type moves when the Pokémon\'s HP is low.', }, blaze: { - name: "Blaze", - description: "Powers up Fire-type moves when the Pokémon's HP is low.", + name: 'Blaze', + description: 'Powers up Fire-type moves when the Pokémon\'s HP is low.', }, torrent: { - name: "Torrent", - description: "Powers up Water-type moves when the Pokémon's HP is low.", + name: 'Torrent', + description: 'Powers up Water-type moves when the Pokémon\'s HP is low.', }, swarm: { - name: "Swarm", - description: "Powers up Bug-type moves when the Pokémon's HP is low.", + name: 'Swarm', + description: 'Powers up Bug-type moves when the Pokémon\'s HP is low.', }, rockHead: { - name: "Rock Head", - description: "Protects the Pokémon from recoil damage.", + name: 'Rock Head', + description: 'Protects the Pokémon from recoil damage.', }, drought: { - name: "Drought", - description: "Turns the sunlight harsh when the Pokémon enters a battle.", + name: 'Drought', + description: 'Turns the sunlight harsh when the Pokémon enters a battle.', }, arenaTrap: { - name: "Arena Trap", - description: "Prevents opposing Pokémon from fleeing.", + name: 'Arena Trap', + description: 'Prevents opposing Pokémon from fleeing.', }, vitalSpirit: { - name: "Vital Spirit", - description: "The Pokémon is full of vitality, and that prevents it from falling asleep.", + name: 'Vital Spirit', + description: 'The Pokémon is full of vitality, and that prevents it from falling asleep.', }, whiteSmoke: { - name: "White Smoke", - description: "The Pokémon is protected by its white smoke, which prevents other Pokémon from lowering its stats.", + name: 'White Smoke', + description: 'The Pokémon is protected by its white smoke, which prevents other Pokémon from lowering its stats.', }, purePower: { - name: "Pure Power", - description: "Using its pure power, the Pokémon doubles its Attack stat.", + name: 'Pure Power', + description: 'Using its pure power, the Pokémon doubles its Attack stat.', }, shellArmor: { - name: "Shell Armor", - description: "A hard shell protects the Pokémon from critical hits.", + name: 'Shell Armor', + description: 'A hard shell protects the Pokémon from critical hits.', }, airLock: { - name: "Air Lock", - description: "Eliminates the effects of weather.", + name: 'Air Lock', + description: 'Eliminates the effects of weather.', }, tangledFeet: { - name: "Tangled Feet", - description: "Raises evasiveness if the Pokémon is confused.", + name: 'Tangled Feet', + description: 'Raises evasiveness if the Pokémon is confused.', }, motorDrive: { - name: "Motor Drive", - description: "Boosts its Speed stat if hit by an Electric-type move instead of taking damage.", + name: 'Motor Drive', + description: 'Boosts its Speed stat if hit by an Electric-type move instead of taking damage.', }, rivalry: { - name: "Rivalry", - description: "Becomes competitive and deals more damage to Pokémon of the same gender, but deals less to Pokémon of the opposite gender.", + name: 'Rivalry', + description: 'Becomes competitive and deals more damage to Pokémon of the same gender, but deals less to Pokémon of the opposite gender.', }, steadfast: { - name: "Steadfast", - description: "The Pokémon's determination boosts the Speed stat each time the Pokémon flinches.", + name: 'Steadfast', + description: 'The Pokémon\'s determination boosts the Speed stat each time the Pokémon flinches.', }, snowCloak: { - name: "Snow Cloak", - description: "Boosts the Pokémon's evasiveness in snow.", + name: 'Snow Cloak', + description: 'Boosts the Pokémon\'s evasiveness in snow.', }, gluttony: { - name: "Gluttony", - description: "Makes the Pokémon eat a held Berry when its HP drops to half or less, which is sooner than usual.", + name: 'Gluttony', + description: 'Makes the Pokémon eat a held Berry when its HP drops to half or less, which is sooner than usual.', }, angerPoint: { - name: "Anger Point", - description: "The Pokémon is angered when it takes a critical hit, and that maxes its Attack stat.", + name: 'Anger Point', + description: 'The Pokémon is angered when it takes a critical hit, and that maxes its Attack stat.', }, unburden: { - name: "Unburden", - description: "Boosts the Speed stat if the Pokémon's held item is used or lost.", + name: 'Unburden', + description: 'Boosts the Speed stat if the Pokémon\'s held item is used or lost.', }, heatproof: { - name: "Heatproof", - description: "The heatproof body of the Pokémon halves the damage from Fire-type moves that hit it.", + name: 'Heatproof', + description: 'The heatproof body of the Pokémon halves the damage from Fire-type moves that hit it.', }, simple: { - name: "Simple", - description: "The stat changes the Pokémon receives are doubled.", + name: 'Simple', + description: 'The stat changes the Pokémon receives are doubled.', }, drySkin: { - name: "Dry Skin", - description: "Restores HP in rain or when hit by Water-type moves. Reduces HP in harsh sunlight, and increases the damage received from Fire-type moves.", + name: 'Dry Skin', + description: 'Restores HP in rain or when hit by Water-type moves. Reduces HP in harsh sunlight, and increases the damage received from Fire-type moves.', }, download: { - name: "Download", - description: "Compares an opposing Pokémon's Defense and Sp. Def stats before raising its own Attack or Sp. Atk stat—whichever will be more effective.", + name: 'Download', + description: 'Compares an opposing Pokémon\'s Defense and Sp. Def stats before raising its own Attack or Sp. Atk stat—whichever will be more effective.', }, ironFist: { - name: "Iron Fist", - description: "Powers up punching moves.", + name: 'Iron Fist', + description: 'Powers up punching moves.', }, poisonHeal: { - name: "Poison Heal", - description: "Restores HP if the Pokémon is poisoned instead of losing HP.", + name: 'Poison Heal', + description: 'Restores HP if the Pokémon is poisoned instead of losing HP.', }, adaptability: { - name: "Adaptability", - description: "Powers up moves of the same type as the Pokémon.", + name: 'Adaptability', + description: 'Powers up moves of the same type as the Pokémon.', }, skillLink: { - name: "Skill Link", - description: "Maximizes the number of times multistrike moves hit.", + name: 'Skill Link', + description: 'Maximizes the number of times multistrike moves hit.', }, hydration: { - name: "Hydration", - description: "Heals status conditions if it's raining.", + name: 'Hydration', + description: 'Heals status conditions if it\'s raining.', }, solarPower: { - name: "Solar Power", - description: "Boosts the Sp. Atk stat in harsh sunlight, but HP decreases every turn.", + name: 'Solar Power', + description: 'Boosts the Sp. Atk stat in harsh sunlight, but HP decreases every turn.', }, quickFeet: { - name: "Quick Feet", - description: "Boosts the Speed stat if the Pokémon has a status condition.", + name: 'Quick Feet', + description: 'Boosts the Speed stat if the Pokémon has a status condition.', }, normalize: { - name: "Normalize", - description: "All the Pokémon's moves become Normal type. The power of those moves is boosted a little.", + name: 'Normalize', + description: 'All the Pokémon\'s moves become Normal type. The power of those moves is boosted a little.', }, sniper: { - name: "Sniper", - description: "Powers up moves if they become critical hits when attacking.", + name: 'Sniper', + description: 'Powers up moves if they become critical hits when attacking.', }, magicGuard: { - name: "Magic Guard", - description: "The Pokémon only takes damage from attacks.", + name: 'Magic Guard', + description: 'The Pokémon only takes damage from attacks.', }, noGuard: { - name: "No Guard", - description: "The Pokémon employs no-guard tactics to ensure incoming and outgoing attacks always land.", + name: 'No Guard', + description: 'The Pokémon employs no-guard tactics to ensure incoming and outgoing attacks always land.', }, stall: { - name: "Stall", - description: "The Pokémon moves after all other Pokémon do.", + name: 'Stall', + description: 'The Pokémon moves after all other Pokémon do.', }, technician: { - name: "Technician", - description: "Powers up the Pokémon's weaker moves.", + name: 'Technician', + description: 'Powers up the Pokémon\'s weaker moves.', }, leafGuard: { - name: "Leaf Guard", - description: "Prevents status conditions in harsh sunlight.", + name: 'Leaf Guard', + description: 'Prevents status conditions in harsh sunlight.', }, klutz: { - name: "Klutz", - description: "The Pokémon can't use any held items.", + name: 'Klutz', + description: 'The Pokémon can\'t use any held items.', }, moldBreaker: { - name: "Mold Breaker", - description: "Moves can be used on the target regardless of its Abilities.", + name: 'Mold Breaker', + description: 'Moves can be used on the target regardless of its Abilities.', }, superLuck: { - name: "Super Luck", - description: "The Pokémon is so lucky that the critical-hit ratios of its moves are boosted.", + name: 'Super Luck', + description: 'The Pokémon is so lucky that the critical-hit ratios of its moves are boosted.', }, aftermath: { - name: "Aftermath", - description: "Damages the attacker if it contacts the Pokémon with a finishing hit.", + name: 'Aftermath', + description: 'Damages the attacker if it contacts the Pokémon with a finishing hit.', }, anticipation: { - name: "Anticipation", - description: "The Pokémon can sense an opposing Pokémon's dangerous moves.", + name: 'Anticipation', + description: 'The Pokémon can sense an opposing Pokémon\'s dangerous moves.', }, forewarn: { - name: "Forewarn", - description: "When it enters a battle, the Pokémon can tell one of the moves an opposing Pokémon has.", + name: 'Forewarn', + description: 'When it enters a battle, the Pokémon can tell one of the moves an opposing Pokémon has.', }, unaware: { - name: "Unaware", - description: "When attacking, the Pokémon ignores the target Pokémon's stat changes.", + name: 'Unaware', + description: 'When attacking, the Pokémon ignores the target Pokémon\'s stat changes.', }, tintedLens: { - name: "Tinted Lens", + name: 'Tinted Lens', description: 'The Pokémon can use "not very effective" moves to deal regular damage.', }, filter: { - name: "Filter", - description: "Reduces the power of supereffective attacks taken.", + name: 'Filter', + description: 'Reduces the power of supereffective attacks taken.', }, slowStart: { - name: "Slow Start", - description: "For five turns, the Pokémon's Attack and Speed stats are halved.", + name: 'Slow Start', + description: 'For five turns, the Pokémon\'s Attack and Speed stats are halved.', }, scrappy: { - name: "Scrappy", - description: "The Pokémon can hit Ghost-type Pokémon with Normal- and Fighting-type moves.", + name: 'Scrappy', + description: 'The Pokémon can hit Ghost-type Pokémon with Normal- and Fighting-type moves.', }, stormDrain: { - name: "Storm Drain", - description: "Draws in all Water-type moves. Instead of being hit by Water-type moves, it boosts its Sp. Atk.", + name: 'Storm Drain', + description: 'Draws in all Water-type moves. Instead of being hit by Water-type moves, it boosts its Sp. Atk.', }, iceBody: { - name: "Ice Body", - description: "The Pokémon gradually regains HP in snow.", + name: 'Ice Body', + description: 'The Pokémon gradually regains HP in snow.', }, solidRock: { - name: "Solid Rock", - description: "Reduces the power of supereffective attacks taken.", + name: 'Solid Rock', + description: 'Reduces the power of supereffective attacks taken.', }, snowWarning: { - name: "Snow Warning", - description: "The Pokémon makes it snow when it enters a battle.", + name: 'Snow Warning', + description: 'The Pokémon makes it snow when it enters a battle.', }, honeyGather: { - name: "Honey Gather", - description: "The Pokémon may gather Honey after a battle.", + name: 'Honey Gather', + description: 'The Pokémon may gather Honey after a battle.', }, frisk: { - name: "Frisk", - description: "When it enters a battle, the Pokémon can check an opposing Pokémon's Ability.", + name: 'Frisk', + description: 'When it enters a battle, the Pokémon can check an opposing Pokémon\'s Ability.', }, reckless: { - name: "Reckless", - description: "Powers up moves that have recoil damage.", + name: 'Reckless', + description: 'Powers up moves that have recoil damage.', }, multitype: { - name: "Multitype", - description: "Changes the Pokémon's type to match the Plate or Z-Crystal it holds.", + name: 'Multitype', + description: 'Changes the Pokémon\'s type to match the Plate or Z-Crystal it holds.', }, flowerGift: { - name: "Flower Gift", - description: "Boosts the Attack and Sp. Def stats of itself and allies in harsh sunlight.", + name: 'Flower Gift', + description: 'Boosts the Attack and Sp. Def stats of itself and allies in harsh sunlight.', }, badDreams: { - name: "Bad Dreams", - description: "Reduces the HP of sleeping opposing Pokémon.", + name: 'Bad Dreams', + description: 'Reduces the HP of sleeping opposing Pokémon.', }, pickpocket: { - name: "Pickpocket", - description: "Steals an item from an attacker that made direct contact.", + name: 'Pickpocket', + description: 'Steals an item from an attacker that made direct contact.', }, sheerForce: { - name: "Sheer Force", - description: "Removes additional effects to increase the power of moves when attacking.", + name: 'Sheer Force', + description: 'Removes additional effects to increase the power of moves when attacking.', }, contrary: { - name: "Contrary", - description: "Makes stat changes have an opposite effect.", + name: 'Contrary', + description: 'Makes stat changes have an opposite effect.', }, unnerve: { - name: "Unnerve", - description: "Unnerves opposing Pokémon and makes them unable to eat Berries.", + name: 'Unnerve', + description: 'Unnerves opposing Pokémon and makes them unable to eat Berries.', }, defiant: { - name: "Defiant", - description: "Boosts the Pokémon's Attack stat sharply when its stats are lowered.", + name: 'Defiant', + description: 'Boosts the Pokémon\'s Attack stat sharply when its stats are lowered.', }, defeatist: { - name: "Defeatist", - description: "Halves the Pokémon's Attack and Sp. Atk stats when its HP becomes half or less.", + name: 'Defeatist', + description: 'Halves the Pokémon\'s Attack and Sp. Atk stats when its HP becomes half or less.', }, cursedBody: { - name: "Cursed Body", - description: "May disable a move used on the Pokémon.", + name: 'Cursed Body', + description: 'May disable a move used on the Pokémon.', }, healer: { - name: "Healer", - description: "Sometimes heals an ally's status condition.", + name: 'Healer', + description: 'Sometimes heals an ally\'s status condition.', }, friendGuard: { - name: "Friend Guard", - description: "Reduces damage done to allies.", + name: 'Friend Guard', + description: 'Reduces damage done to allies.', }, weakArmor: { - name: "Weak Armor", - description: "Physical attacks to the Pokémon lower its Defense stat but sharply raise its Speed stat.", + name: 'Weak Armor', + description: 'Physical attacks to the Pokémon lower its Defense stat but sharply raise its Speed stat.', }, heavyMetal: { - name: "Heavy Metal", - description: "Doubles the Pokémon's weight.", + name: 'Heavy Metal', + description: 'Doubles the Pokémon\'s weight.', }, lightMetal: { - name: "Light Metal", - description: "Halves the Pokémon's weight.", + name: 'Light Metal', + description: 'Halves the Pokémon\'s weight.', }, multiscale: { - name: "Multiscale", - description: "Reduces the amount of damage the Pokémon takes while its HP is full.", + name: 'Multiscale', + description: 'Reduces the amount of damage the Pokémon takes while its HP is full.', }, toxicBoost: { - name: "Toxic Boost", - description: "Powers up physical attacks when the Pokémon is poisoned.", + name: 'Toxic Boost', + description: 'Powers up physical attacks when the Pokémon is poisoned.', }, flareBoost: { - name: "Flare Boost", - description: "Powers up special attacks when the Pokémon is burned.", + name: 'Flare Boost', + description: 'Powers up special attacks when the Pokémon is burned.', }, harvest: { - name: "Harvest", - description: "May create another Berry after one is used.", + name: 'Harvest', + description: 'May create another Berry after one is used.', }, telepathy: { - name: "Telepathy", - description: "Anticipates an ally's attack and dodges it.", + name: 'Telepathy', + description: 'Anticipates an ally\'s attack and dodges it.', }, moody: { - name: "Moody", - description: "Raises one stat sharply and lowers another every turn.", + name: 'Moody', + description: 'Raises one stat sharply and lowers another every turn.', }, overcoat: { - name: "Overcoat", - description: "Protects the Pokémon from things like sand, hail, and powder.", + name: 'Overcoat', + description: 'Protects the Pokémon from things like sand, hail, and powder.', }, poisonTouch: { - name: "Poison Touch", - description: "May poison a target when the Pokémon makes contact.", + name: 'Poison Touch', + description: 'May poison a target when the Pokémon makes contact.', }, regenerator: { - name: "Regenerator", - description: "Restores a little HP when withdrawn from battle.", + name: 'Regenerator', + description: 'Restores a little HP when withdrawn from battle.', }, bigPecks: { - name: "Big Pecks", - description: "Protects the Pokémon from Defense-lowering effects.", + name: 'Big Pecks', + description: 'Protects the Pokémon from Defense-lowering effects.', }, sandRush: { - name: "Sand Rush", - description: "Boosts the Pokémon's Speed stat in a sandstorm.", + name: 'Sand Rush', + description: 'Boosts the Pokémon\'s Speed stat in a sandstorm.', }, wonderSkin: { - name: "Wonder Skin", - description: "Makes status moves more likely to miss.", + name: 'Wonder Skin', + description: 'Makes status moves more likely to miss.', }, analytic: { - name: "Analytic", - description: "Boosts move power when the Pokémon moves last.", + name: 'Analytic', + description: 'Boosts move power when the Pokémon moves last.', }, illusion: { - name: "Illusion", - description: "Comes out disguised as the Pokémon in the party's last spot.", + name: 'Illusion', + description: 'Comes out disguised as the Pokémon in the party\'s last spot.', }, imposter: { - name: "Imposter", - description: "The Pokémon transforms itself into the Pokémon it's facing.", + name: 'Imposter', + description: 'The Pokémon transforms itself into the Pokémon it\'s facing.', }, infiltrator: { - name: "Infiltrator", - description: "Passes through the opposing Pokémon's barrier, substitute, and the like and strikes.", + name: 'Infiltrator', + description: 'Passes through the opposing Pokémon\'s barrier, substitute, and the like and strikes.', }, mummy: { - name: "Mummy", - description: "Contact with the Pokémon changes the attacker's Ability to Mummy.", + name: 'Mummy', + description: 'Contact with the Pokémon changes the attacker\'s Ability to Mummy.', }, moxie: { - name: "Moxie", - description: "The Pokémon shows moxie, and that boosts the Attack stat after knocking out any Pokémon.", + name: 'Moxie', + description: 'The Pokémon shows moxie, and that boosts the Attack stat after knocking out any Pokémon.', }, justified: { - name: "Justified", - description: "Being hit by a Dark-type move boosts the Attack stat of the Pokémon, for justice.", + name: 'Justified', + description: 'Being hit by a Dark-type move boosts the Attack stat of the Pokémon, for justice.', }, rattled: { - name: "Rattled", - description: "Intimidate or being hit by a Dark-, Ghost-, or Bug-type move will scare the Pokémon and boost its Speed stat.", + name: 'Rattled', + description: 'Intimidate or being hit by a Dark-, Ghost-, or Bug-type move will scare the Pokémon and boost its Speed stat.', }, magicBounce: { - name: "Magic Bounce", - description: "Reflects status moves instead of getting hit by them.", + name: 'Magic Bounce', + description: 'Reflects status moves instead of getting hit by them.', }, sapSipper: { - name: "Sap Sipper", - description: "Boosts the Attack stat if hit by a Grass-type move instead of taking damage.", + name: 'Sap Sipper', + description: 'Boosts the Attack stat if hit by a Grass-type move instead of taking damage.', }, prankster: { - name: "Prankster", - description: "Gives priority to a status move.", + name: 'Prankster', + description: 'Gives priority to a status move.', }, sandForce: { - name: "Sand Force", - description: "Boosts the power of Rock-, Ground-, and Steel-type moves in a sandstorm.", + name: 'Sand Force', + description: 'Boosts the power of Rock-, Ground-, and Steel-type moves in a sandstorm.', }, ironBarbs: { - name: "Iron Barbs", - description: "Inflicts damage on the attacker upon contact with iron barbs.", + name: 'Iron Barbs', + description: 'Inflicts damage on the attacker upon contact with iron barbs.', }, zenMode: { - name: "Zen Mode", - description: "Changes the Pokémon's shape when HP is half or less.", + name: 'Zen Mode', + description: 'Changes the Pokémon\'s shape when HP is half or less.', }, victoryStar: { - name: "Victory Star", - description: "Boosts the accuracy of its allies and itself.", + name: 'Victory Star', + description: 'Boosts the accuracy of its allies and itself.', }, turboblaze: { - name: "Turboblaze", - description: "Moves can be used on the target regardless of its Abilities.", + name: 'Turboblaze', + description: 'Moves can be used on the target regardless of its Abilities.', }, teravolt: { - name: "Teravolt", - description: "Moves can be used on the target regardless of its Abilities.", + name: 'Teravolt', + description: 'Moves can be used on the target regardless of its Abilities.', }, aromaVeil: { - name: "Aroma Veil", - description: "Protects itself and its allies from attacks that limit their move choices.", + name: 'Aroma Veil', + description: 'Protects itself and its allies from attacks that limit their move choices.', }, flowerVeil: { - name: "Flower Veil", - description: "Ally Grass-type Pokémon are protected from status conditions and the lowering of their stats.", + name: 'Flower Veil', + description: 'Ally Grass-type Pokémon are protected from status conditions and the lowering of their stats.', }, cheekPouch: { - name: "Cheek Pouch", - description: "Restores HP as well when the Pokémon eats a Berry.", + name: 'Cheek Pouch', + description: 'Restores HP as well when the Pokémon eats a Berry.', }, protean: { - name: "Protean", - description: "Changes the Pokémon's type to the type of the move it's about to use.", + name: 'Protean', + description: 'Changes the Pokémon\'s type to the type of the move it\'s about to use.', }, furCoat: { - name: "Fur Coat", - description: "Halves the damage from physical moves.", + name: 'Fur Coat', + description: 'Halves the damage from physical moves.', }, magician: { - name: "Magician", - description: "The Pokémon steals the held item of a Pokémon it hits with a move.", + name: 'Magician', + description: 'The Pokémon steals the held item of a Pokémon it hits with a move.', }, bulletproof: { - name: "Bulletproof", - description: "Protects the Pokémon from some ball and bomb moves.", + name: 'Bulletproof', + description: 'Protects the Pokémon from some ball and bomb moves.', }, competitive: { - name: "Competitive", - description: "Boosts the Sp. Atk stat sharply when a stat is lowered.", + name: 'Competitive', + description: 'Boosts the Sp. Atk stat sharply when a stat is lowered.', }, strongJaw: { - name: "Strong Jaw", - description: "The Pokémon's strong jaw boosts the power of its biting moves.", + name: 'Strong Jaw', + description: 'The Pokémon\'s strong jaw boosts the power of its biting moves.', }, refrigerate: { - name: "Refrigerate", - description: "Normal-type moves become Ice-type moves. The power of those moves is boosted a little.", + name: 'Refrigerate', + description: 'Normal-type moves become Ice-type moves. The power of those moves is boosted a little.', }, sweetVeil: { - name: "Sweet Veil", - description: "Prevents itself and ally Pokémon from falling asleep.", + name: 'Sweet Veil', + description: 'Prevents itself and ally Pokémon from falling asleep.', }, stanceChange: { - name: "Stance Change", - description: "The Pokémon changes its form to Blade Forme when it uses an attack move and changes to Shield Forme when it uses King's Shield.", + name: 'Stance Change', + description: 'The Pokémon changes its form to Blade Forme when it uses an attack move and changes to Shield Forme when it uses King\'s Shield.', }, galeWings: { - name: "Gale Wings", - description: "Gives priority to Flying-type moves when the Pokémon's HP is full.", + name: 'Gale Wings', + description: 'Gives priority to Flying-type moves when the Pokémon\'s HP is full.', }, megaLauncher: { - name: "Mega Launcher", - description: "Powers up aura and pulse moves.", + name: 'Mega Launcher', + description: 'Powers up aura and pulse moves.', }, grassPelt: { - name: "Grass Pelt", - description: "Boosts the Pokémon's Defense stat on Grassy Terrain.", + name: 'Grass Pelt', + description: 'Boosts the Pokémon\'s Defense stat on Grassy Terrain.', }, symbiosis: { - name: "Symbiosis", - description: "The Pokémon passes its item to an ally that has used up an item.", + name: 'Symbiosis', + description: 'The Pokémon passes its item to an ally that has used up an item.', }, toughClaws: { - name: "Tough Claws", - description: "Powers up moves that make direct contact.", + name: 'Tough Claws', + description: 'Powers up moves that make direct contact.', }, pixilate: { - name: "Pixilate", - description: "Normal-type moves become Fairy-type moves. The power of those moves is boosted a little.", + name: 'Pixilate', + description: 'Normal-type moves become Fairy-type moves. The power of those moves is boosted a little.', }, gooey: { - name: "Gooey", - description: "Contact with the Pokémon lowers the attacker's Speed stat.", + name: 'Gooey', + description: 'Contact with the Pokémon lowers the attacker\'s Speed stat.', }, aerilate: { - name: "Aerilate", - description: "Normal-type moves become Flying-type moves. The power of those moves is boosted a little.", + name: 'Aerilate', + description: 'Normal-type moves become Flying-type moves. The power of those moves is boosted a little.', }, parentalBond: { - name: "Parental Bond", - description: "Parent and child each attacks.", + name: 'Parental Bond', + description: 'Parent and child each attacks.', }, darkAura: { - name: "Dark Aura", - description: "Powers up each Pokémon's Dark-type moves.", + name: 'Dark Aura', + description: 'Powers up each Pokémon\'s Dark-type moves.', }, fairyAura: { - name: "Fairy Aura", - description: "Powers up each Pokémon's Fairy-type moves.", + name: 'Fairy Aura', + description: 'Powers up each Pokémon\'s Fairy-type moves.', }, auraBreak: { - name: "Aura Break", + name: 'Aura Break', description: 'The effects of "Aura" Abilities are reversed to lower the power of affected moves.', }, primordialSea: { - name: "Primordial Sea", - description: "The Pokémon changes the weather to nullify Fire-type attacks.", + name: 'Primordial Sea', + description: 'The Pokémon changes the weather to nullify Fire-type attacks.', }, desolateLand: { - name: "Desolate Land", - description: "The Pokémon changes the weather to nullify Water-type attacks.", + name: 'Desolate Land', + description: 'The Pokémon changes the weather to nullify Water-type attacks.', }, deltaStream: { - name: "Delta Stream", - description: "The Pokémon changes the weather to eliminate all of the Flying type's weaknesses.", + name: 'Delta Stream', + description: 'The Pokémon changes the weather to eliminate all of the Flying type\'s weaknesses.', }, stamina: { - name: "Stamina", - description: "Boosts the Defense stat when hit by an attack.", + name: 'Stamina', + description: 'Boosts the Defense stat when hit by an attack.', }, wimpOut: { - name: "Wimp Out", - description: "The Pokémon cowardly switches out when its HP becomes half or less.", + name: 'Wimp Out', + description: 'The Pokémon cowardly switches out when its HP becomes half or less.', }, emergencyExit: { - name: "Emergency Exit", - description: "The Pokémon, sensing danger, switches out when its HP becomes half or less.", + name: 'Emergency Exit', + description: 'The Pokémon, sensing danger, switches out when its HP becomes half or less.', }, waterCompaction: { - name: "Water Compaction", - description: "Boosts the Pokémon's Defense stat sharply when hit by a Water-type move.", + name: 'Water Compaction', + description: 'Boosts the Pokémon\'s Defense stat sharply when hit by a Water-type move.', }, merciless: { - name: "Merciless", - description: "The Pokémon's attacks become critical hits if the target is poisoned.", + name: 'Merciless', + description: 'The Pokémon\'s attacks become critical hits if the target is poisoned.', }, shieldsDown: { - name: "Shields Down", - description: "When its HP becomes half or less, the Pokémon's shell breaks and it becomes aggressive.", + name: 'Shields Down', + description: 'When its HP becomes half or less, the Pokémon\'s shell breaks and it becomes aggressive.', }, stakeout: { - name: "Stakeout", - description: "Doubles the damage dealt to the target's replacement if the target switches out.", + name: 'Stakeout', + description: 'Doubles the damage dealt to the target\'s replacement if the target switches out.', }, waterBubble: { - name: "Water Bubble", - description: "Lowers the power of Fire-type moves done to the Pokémon and prevents the Pokémon from getting a burn.", + name: 'Water Bubble', + description: 'Lowers the power of Fire-type moves done to the Pokémon and prevents the Pokémon from getting a burn.', }, steelworker: { - name: "Steelworker", - description: "Powers up Steel-type moves.", + name: 'Steelworker', + description: 'Powers up Steel-type moves.', }, berserk: { - name: "Berserk", - description: "Boosts the Pokémon's Sp. Atk stat when it takes a hit that causes its HP to become half or less.", + name: 'Berserk', + description: 'Boosts the Pokémon\'s Sp. Atk stat when it takes a hit that causes its HP to become half or less.', }, slushRush: { - name: "Slush Rush", - description: "Boosts the Pokémon's Speed stat in snow.", + name: 'Slush Rush', + description: 'Boosts the Pokémon\'s Speed stat in snow.', }, longReach: { - name: "Long Reach", - description: "The Pokémon uses its moves without making contact with the target.", + name: 'Long Reach', + description: 'The Pokémon uses its moves without making contact with the target.', }, liquidVoice: { - name: "Liquid Voice", - description: "All sound-based moves become Water-type moves.", + name: 'Liquid Voice', + description: 'All sound-based moves become Water-type moves.', }, triage: { - name: "Triage", - description: "Gives priority to a healing move.", + name: 'Triage', + description: 'Gives priority to a healing move.', }, galvanize: { - name: "Galvanize", - description: "Normal-type moves become Electric-type moves. The power of those moves is boosted a little.", + name: 'Galvanize', + description: 'Normal-type moves become Electric-type moves. The power of those moves is boosted a little.', }, surgeSurfer: { - name: "Surge Surfer", - description: "Doubles the Pokémon's Speed stat on Electric Terrain.", + name: 'Surge Surfer', + description: 'Doubles the Pokémon\'s Speed stat on Electric Terrain.', }, schooling: { - name: "Schooling", - description: "When it has a lot of HP, the Pokémon forms a powerful school. It stops schooling when its HP is low.", + name: 'Schooling', + description: 'When it has a lot of HP, the Pokémon forms a powerful school. It stops schooling when its HP is low.', }, disguise: { - name: "Disguise", - description: "Once per battle, the shroud that covers the Pokémon can protect it from an attack.", + name: 'Disguise', + description: 'Once per battle, the shroud that covers the Pokémon can protect it from an attack.', }, battleBond: { - name: "Battle Bond", - description: "Defeating an opposing Pokémon strengthens the Pokémon's bond with its Trainer, and it becomes Ash-Greninja. Water Shuriken gets more powerful.", + name: 'Battle Bond', + description: 'Defeating an opposing Pokémon strengthens the Pokémon\'s bond with its Trainer, and it becomes Ash-Greninja. Water Shuriken gets more powerful.', }, powerConstruct: { - name: "Power Construct", - description: "Other Cells gather to aid when its HP becomes half or less. Then the Pokémon changes its form to Complete Forme.", + name: 'Power Construct', + description: 'Other Cells gather to aid when its HP becomes half or less. Then the Pokémon changes its form to Complete Forme.', }, corrosion: { - name: "Corrosion", - description: "The Pokémon can poison the target even if it's a Steel or Poison type.", + name: 'Corrosion', + description: 'The Pokémon can poison the target even if it\'s a Steel or Poison type.', }, comatose: { - name: "Comatose", - description: "It's always drowsing and will never wake up. It can attack without waking up.", + name: 'Comatose', + description: 'It\'s always drowsing and will never wake up. It can attack without waking up.', }, queenlyMajesty: { - name: "Queenly Majesty", - description: "Its majesty pressures the opposing Pokémon, making it unable to attack using priority moves.", + name: 'Queenly Majesty', + description: 'Its majesty pressures the opposing Pokémon, making it unable to attack using priority moves.', }, innardsOut: { - name: "Innards Out", - description: "Damages the attacker landing the finishing hit by the amount equal to its last HP.", + name: 'Innards Out', + description: 'Damages the attacker landing the finishing hit by the amount equal to its last HP.', }, dancer: { - name: "Dancer", - description: "When another Pokémon uses a dance move, it can use a dance move following it regardless of its Speed.", + name: 'Dancer', + description: 'When another Pokémon uses a dance move, it can use a dance move following it regardless of its Speed.', }, battery: { - name: "Battery", - description: "Powers up ally Pokémon's special moves.", + name: 'Battery', + description: 'Powers up ally Pokémon\'s special moves.', }, fluffy: { - name: "Fluffy", - description: "Halves the damage taken from moves that make direct contact, but doubles that of Fire-type moves.", + name: 'Fluffy', + description: 'Halves the damage taken from moves that make direct contact, but doubles that of Fire-type moves.', }, dazzling: { - name: "Dazzling", - description: "Surprises the opposing Pokémon, making it unable to attack using priority moves.", + name: 'Dazzling', + description: 'Surprises the opposing Pokémon, making it unable to attack using priority moves.', }, soulHeart: { - name: "Soul-Heart", - description: "Boosts its Sp. Atk stat every time a Pokémon faints.", + name: 'Soul-Heart', + description: 'Boosts its Sp. Atk stat every time a Pokémon faints.', }, tanglingHair: { - name: "Tangling Hair", - description: "Contact with the Pokémon lowers the attacker's Speed stat.", + name: 'Tangling Hair', + description: 'Contact with the Pokémon lowers the attacker\'s Speed stat.', }, receiver: { - name: "Receiver", - description: "The Pokémon copies the Ability of a defeated ally.", + name: 'Receiver', + description: 'The Pokémon copies the Ability of a defeated ally.', }, powerOfAlchemy: { - name: "Power of Alchemy", - description: "The Pokémon copies the Ability of a defeated ally.", + name: 'Power of Alchemy', + description: 'The Pokémon copies the Ability of a defeated ally.', }, beastBoost: { - name: "Beast Boost", - description: "The Pokémon boosts its most proficient stat each time it knocks out a Pokémon.", + name: 'Beast Boost', + description: 'The Pokémon boosts its most proficient stat each time it knocks out a Pokémon.', }, rksSystem: { - name: "RKS System", - description: "Changes the Pokémon's type to match the memory disc it holds.", + name: 'RKS System', + description: 'Changes the Pokémon\'s type to match the memory disc it holds.', }, electricSurge: { - name: "Electric Surge", - description: "Turns the ground into Electric Terrain when the Pokémon enters a battle.", + name: 'Electric Surge', + description: 'Turns the ground into Electric Terrain when the Pokémon enters a battle.', }, psychicSurge: { - name: "Psychic Surge", - description: "Turns the ground into Psychic Terrain when the Pokémon enters a battle.", + name: 'Psychic Surge', + description: 'Turns the ground into Psychic Terrain when the Pokémon enters a battle.', }, mistySurge: { - name: "Misty Surge", - description: "Turns the ground into Misty Terrain when the Pokémon enters a battle.", + name: 'Misty Surge', + description: 'Turns the ground into Misty Terrain when the Pokémon enters a battle.', }, grassySurge: { - name: "Grassy Surge", - description: "Turns the ground into Grassy Terrain when the Pokémon enters a battle.", + name: 'Grassy Surge', + description: 'Turns the ground into Grassy Terrain when the Pokémon enters a battle.', }, fullMetalBody: { - name: "Full Metal Body", - description: "Prevents other Pokémon's moves or Abilities from lowering the Pokémon's stats.", + name: 'Full Metal Body', + description: 'Prevents other Pokémon\'s moves or Abilities from lowering the Pokémon\'s stats.', }, shadowShield: { - name: "Shadow Shield", - description: "Reduces the amount of damage the Pokémon takes while its HP is full.", + name: 'Shadow Shield', + description: 'Reduces the amount of damage the Pokémon takes while its HP is full.', }, prismArmor: { - name: "Prism Armor", - description: "Reduces the power of supereffective attacks taken.", + name: 'Prism Armor', + description: 'Reduces the power of supereffective attacks taken.', }, neuroforce: { - name: "Neuroforce", - description: "Powers up moves that are super effective.", + name: 'Neuroforce', + description: 'Powers up moves that are super effective.', }, intrepidSword: { - name: "Intrepid Sword", - description: "Boosts the Pokémon's Attack stat when the Pokémon enters a battle.", + name: 'Intrepid Sword', + description: 'Boosts the Pokémon\'s Attack stat when the Pokémon enters a battle.', }, dauntlessShield: { - name: "Dauntless Shield", - description: "Boosts the Pokémon's Defense stat when the Pokémon enters a battle.", + name: 'Dauntless Shield', + description: 'Boosts the Pokémon\'s Defense stat when the Pokémon enters a battle.', }, libero: { - name: "Libero", - description: "Changes the Pokémon's type to the type of the move it's about to use.", + name: 'Libero', + description: 'Changes the Pokémon\'s type to the type of the move it\'s about to use.', }, ballFetch: { - name: "Ball Fetch", - description: "The Pokémon will fetch the Poké Ball from the first failed throw of the battle.", + name: 'Ball Fetch', + description: 'The Pokémon will fetch the Poké Ball from the first failed throw of the battle.', }, cottonDown: { - name: "Cotton Down", - description: "When the Pokémon is hit by an attack, it scatters cotton fluff around and lowers the Speed stat of all Pokémon except itself.", + name: 'Cotton Down', + description: 'When the Pokémon is hit by an attack, it scatters cotton fluff around and lowers the Speed stat of all Pokémon except itself.', }, propellerTail: { - name: "Propeller Tail", - description: "Ignores the effects of opposing Pokémon's Abilities and moves that draw in moves.", + name: 'Propeller Tail', + description: 'Ignores the effects of opposing Pokémon\'s Abilities and moves that draw in moves.', }, mirrorArmor: { - name: "Mirror Armor", - description: "Bounces back only the stat-lowering effects that the Pokémon receives.", + name: 'Mirror Armor', + description: 'Bounces back only the stat-lowering effects that the Pokémon receives.', }, gulpMissile: { - name: "Gulp Missile", - description: "When the Pokémon uses Surf or Dive, it will come back with prey. When it takes damage, it will spit out the prey to attack.", + name: 'Gulp Missile', + description: 'When the Pokémon uses Surf or Dive, it will come back with prey. When it takes damage, it will spit out the prey to attack.', }, stalwart: { - name: "Stalwart", - description: "Ignores the effects of opposing Pokémon's Abilities and moves that draw in moves.", + name: 'Stalwart', + description: 'Ignores the effects of opposing Pokémon\'s Abilities and moves that draw in moves.', }, steamEngine: { - name: "Steam Engine", - description: "Boosts the Pokémon's Speed stat drastically if hit by a Fire- or Water-type move.", + name: 'Steam Engine', + description: 'Boosts the Pokémon\'s Speed stat drastically if hit by a Fire- or Water-type move.', }, punkRock: { - name: "Punk Rock", - description: "Boosts the power of sound-based moves. The Pokémon also takes half the damage from these kinds of moves.", + name: 'Punk Rock', + description: 'Boosts the power of sound-based moves. The Pokémon also takes half the damage from these kinds of moves.', }, sandSpit: { - name: "Sand Spit", - description: "The Pokémon creates a sandstorm when it's hit by an attack.", + name: 'Sand Spit', + description: 'The Pokémon creates a sandstorm when it\'s hit by an attack.', }, iceScales: { - name: "Ice Scales", - description: "The Pokémon is protected by ice scales, which halve the damage taken from special moves.", + name: 'Ice Scales', + description: 'The Pokémon is protected by ice scales, which halve the damage taken from special moves.', }, ripen: { - name: "Ripen", - description: "Ripens Berries and doubles their effect.", + name: 'Ripen', + description: 'Ripens Berries and doubles their effect.', }, iceFace: { - name: "Ice Face", - description: "The Pokémon's ice head can take a physical attack as a substitute, but the attack also changes the Pokémon's appearance. The ice will be restored when it hails.", + name: 'Ice Face', + description: 'The Pokémon\'s ice head can take a physical attack as a substitute, but the attack also changes the Pokémon\'s appearance. The ice will be restored when it hails.', }, powerSpot: { - name: "Power Spot", - description: "Just being next to the Pokémon powers up moves.", + name: 'Power Spot', + description: 'Just being next to the Pokémon powers up moves.', }, mimicry: { - name: "Mimicry", - description: "Changes the Pokémon's type depending on the terrain.", + name: 'Mimicry', + description: 'Changes the Pokémon\'s type depending on the terrain.', }, screenCleaner: { - name: "Screen Cleaner", - description: "When the Pokémon enters a battle, the effects of Light Screen, Reflect, and Aurora Veil are nullified for both opposing and ally Pokémon.", + name: 'Screen Cleaner', + description: 'When the Pokémon enters a battle, the effects of Light Screen, Reflect, and Aurora Veil are nullified for both opposing and ally Pokémon.', }, steelySpirit: { - name: "Steely Spirit", - description: "Powers up ally Pokémon's Steel-type moves.", + name: 'Steely Spirit', + description: 'Powers up ally Pokémon\'s Steel-type moves.', }, perishBody: { - name: "Perish Body", - description: "When hit by a move that makes direct contact, the Pokémon and the attacker will faint after three turns unless they switch out of battle.", + name: 'Perish Body', + description: 'When hit by a move that makes direct contact, the Pokémon and the attacker will faint after three turns unless they switch out of battle.', }, wanderingSpirit: { - name: "Wandering Spirit", - description: "The Pokémon exchanges Abilities with a Pokémon that hits it with a move that makes direct contact.", + name: 'Wandering Spirit', + description: 'The Pokémon exchanges Abilities with a Pokémon that hits it with a move that makes direct contact.', }, gorillaTactics: { - name: "Gorilla Tactics", - description: "Boosts the Pokémon's Attack stat but only allows the use of the first selected move.", + name: 'Gorilla Tactics', + description: 'Boosts the Pokémon\'s Attack stat but only allows the use of the first selected move.', }, neutralizingGas: { - name: "Neutralizing Gas", - description: "If the Pokémon with Neutralizing Gas is in the battle, the effects of all Pokémon's Abilities will be nullified or will not be triggered.", + name: 'Neutralizing Gas', + description: 'If the Pokémon with Neutralizing Gas is in the battle, the effects of all Pokémon\'s Abilities will be nullified or will not be triggered.', }, pastelVeil: { - name: "Pastel Veil", - description: "Protects the Pokémon and its ally Pokémon from being poisoned.", + name: 'Pastel Veil', + description: 'Protects the Pokémon and its ally Pokémon from being poisoned.', }, hungerSwitch: { - name: "Hunger Switch", - description: "The Pokémon changes its form, alternating between its Full Belly Mode and Hangry Mode after the end of each turn.", + name: 'Hunger Switch', + description: 'The Pokémon changes its form, alternating between its Full Belly Mode and Hangry Mode after the end of each turn.', }, quickDraw: { - name: "Quick Draw", - description: "Enables the Pokémon to move first occasionally.", + name: 'Quick Draw', + description: 'Enables the Pokémon to move first occasionally.', }, unseenFist: { - name: "Unseen Fist", - description: "If the Pokémon uses moves that make direct contact, it can attack the target even if the target protects itself.", + name: 'Unseen Fist', + description: 'If the Pokémon uses moves that make direct contact, it can attack the target even if the target protects itself.', }, curiousMedicine: { - name: "Curious Medicine", - description: "When the Pokémon enters a battle, it scatters medicine from its shell, which removes all stat changes from allies.", + name: 'Curious Medicine', + description: 'When the Pokémon enters a battle, it scatters medicine from its shell, which removes all stat changes from allies.', }, transistor: { - name: "Transistor", - description: "Powers up Electric-type moves.", + name: 'Transistor', + description: 'Powers up Electric-type moves.', }, dragonsMaw: { - name: "Dragon's Maw", - description: "Powers up Dragon-type moves.", + name: 'Dragon\'s Maw', + description: 'Powers up Dragon-type moves.', }, chillingNeigh: { - name: "Chilling Neigh", - description: "When the Pokémon knocks out a target, it utters a chilling neigh, which boosts its Attack stat.", + name: 'Chilling Neigh', + description: 'When the Pokémon knocks out a target, it utters a chilling neigh, which boosts its Attack stat.', }, grimNeigh: { - name: "Grim Neigh", - description: "When the Pokémon knocks out a target, it utters a terrifying neigh, which boosts its Sp. Atk stat.", + name: 'Grim Neigh', + description: 'When the Pokémon knocks out a target, it utters a terrifying neigh, which boosts its Sp. Atk stat.', }, asOneGlastrier: { - name: "As One", - description: "This Ability combines the effects of both Calyrex's Unnerve Ability and Glastrier's Chilling Neigh Ability.", + name: 'As One', + description: 'This Ability combines the effects of both Calyrex\'s Unnerve Ability and Glastrier\'s Chilling Neigh Ability.', }, asOneSpectrier: { - name: "As One", - description: "This Ability combines the effects of both Calyrex's Unnerve Ability and Spectrier's Grim Neigh Ability.", + name: 'As One', + description: 'This Ability combines the effects of both Calyrex\'s Unnerve Ability and Spectrier\'s Grim Neigh Ability.', }, lingeringAroma: { - name: "Lingering Aroma", - description: "Contact with the Pokémon changes the attacker's Ability to Lingering Aroma.", + name: 'Lingering Aroma', + description: 'Contact with the Pokémon changes the attacker\'s Ability to Lingering Aroma.', }, seedSower: { - name: "Seed Sower", - description: "Turns the ground into Grassy Terrain when the Pokémon is hit by an attack.", + name: 'Seed Sower', + description: 'Turns the ground into Grassy Terrain when the Pokémon is hit by an attack.', }, thermalExchange: { - name: "Thermal Exchange", - description: "Boosts the Attack stat when the Pokémon is hit by a Fire-type move. The Pokémon also cannot be burned.", + name: 'Thermal Exchange', + description: 'Boosts the Attack stat when the Pokémon is hit by a Fire-type move. The Pokémon also cannot be burned.', }, angerShell: { - name: "Anger Shell", - description: "When an attack causes its HP to drop to half or less, the Pokémon gets angry. This lowers its Defense and Sp. Def stats but boosts its Attack, Sp. Atk, and Speed stats.", + name: 'Anger Shell', + description: 'When an attack causes its HP to drop to half or less, the Pokémon gets angry. This lowers its Defense and Sp. Def stats but boosts its Attack, Sp. Atk, and Speed stats.', }, purifyingSalt: { - name: "Purifying Salt", - description: "The Pokémon's pure salt protects it from status conditions and halves the damage taken from Ghost-type moves.", + name: 'Purifying Salt', + description: 'The Pokémon\'s pure salt protects it from status conditions and halves the damage taken from Ghost-type moves.', }, wellBakedBody: { - name: "Well-Baked Body", - description: "The Pokémon takes no damage when hit by Fire-type moves. Instead, its Defense stat is sharply boosted.", + name: 'Well-Baked Body', + description: 'The Pokémon takes no damage when hit by Fire-type moves. Instead, its Defense stat is sharply boosted.', }, windRider: { - name: "Wind Rider", - description: "Boosts the Pokémon's Attack stat if Tailwind takes effect or if the Pokémon is hit by a wind move. The Pokémon also takes no damage from wind moves.", + name: 'Wind Rider', + description: 'Boosts the Pokémon\'s Attack stat if Tailwind takes effect or if the Pokémon is hit by a wind move. The Pokémon also takes no damage from wind moves.', }, guardDog: { - name: "Guard Dog", - description: "Boosts the Pokémon's Attack stat if intimidated. Moves and items that would force the Pokémon to switch out also fail to work.", + name: 'Guard Dog', + description: 'Boosts the Pokémon\'s Attack stat if intimidated. Moves and items that would force the Pokémon to switch out also fail to work.', }, rockyPayload: { - name: "Rocky Payload", - description: "Powers up Rock-type moves.", + name: 'Rocky Payload', + description: 'Powers up Rock-type moves.', }, windPower: { - name: "Wind Power", - description: "The Pokémon becomes charged when it is hit by a wind move, boosting the power of the next Electric-type move the Pokémon uses.", + name: 'Wind Power', + description: 'The Pokémon becomes charged when it is hit by a wind move, boosting the power of the next Electric-type move the Pokémon uses.', }, zeroToHero: { - name: "Zero to Hero", - description: "The Pokémon transforms into its Hero Form when it switches out.", + name: 'Zero to Hero', + description: 'The Pokémon transforms into its Hero Form when it switches out.', }, commander: { - name: "Commander", - description: "When the Pokémon enters a battle, it goes inside the mouth of an ally Dondozo if one is on the field. The Pokémon then issues commands from there.", + name: 'Commander', + description: 'When the Pokémon enters a battle, it goes inside the mouth of an ally Dondozo if one is on the field. The Pokémon then issues commands from there.', }, electromorphosis: { - name: "Electromorphosis", - description: "The Pokémon becomes charged when it takes damage, boosting the power of the next Electric-type move the Pokémon uses.", + name: 'Electromorphosis', + description: 'The Pokémon becomes charged when it takes damage, boosting the power of the next Electric-type move the Pokémon uses.', }, protosynthesis: { - name: "Protosynthesis", - description: "Boosts the Pokémon's most proficient stat in harsh sunlight or if the Pokémon is holding Booster Energy.", + name: 'Protosynthesis', + description: 'Boosts the Pokémon\'s most proficient stat in harsh sunlight or if the Pokémon is holding Booster Energy.', }, quarkDrive: { - name: "Quark Drive", - description: "Boosts the Pokémon's most proficient stat on Electric Terrain or if the Pokémon is holding Booster Energy.", + name: 'Quark Drive', + description: 'Boosts the Pokémon\'s most proficient stat on Electric Terrain or if the Pokémon is holding Booster Energy.', }, goodAsGold: { - name: "Good as Gold", - description: "A body of pure, solid gold gives the Pokémon full immunity to other Pokémon's status moves.", + name: 'Good as Gold', + description: 'A body of pure, solid gold gives the Pokémon full immunity to other Pokémon\'s status moves.', }, vesselOfRuin: { - name: "Vessel of Ruin", - description: "The power of the Pokémon's ruinous vessel lowers the Sp. Atk stats of all Pokémon except itself.", + name: 'Vessel of Ruin', + description: 'The power of the Pokémon\'s ruinous vessel lowers the Sp. Atk stats of all Pokémon except itself.', }, swordOfRuin: { - name: "Sword of Ruin", - description: "The power of the Pokémon's ruinous sword lowers the Defense stats of all Pokémon except itself.", + name: 'Sword of Ruin', + description: 'The power of the Pokémon\'s ruinous sword lowers the Defense stats of all Pokémon except itself.', }, tabletsOfRuin: { - name: "Tablets of Ruin", - description: "The power of the Pokémon's ruinous wooden tablets lowers the Attack stats of all Pokémon except itself.", + name: 'Tablets of Ruin', + description: 'The power of the Pokémon\'s ruinous wooden tablets lowers the Attack stats of all Pokémon except itself.', }, beadsOfRuin: { - name: "Beads of Ruin", - description: "The power of the Pokémon's ruinous beads lowers the Sp. Def stats of all Pokémon except itself.", + name: 'Beads of Ruin', + description: 'The power of the Pokémon\'s ruinous beads lowers the Sp. Def stats of all Pokémon except itself.', }, orichalcumPulse: { - name: "Orichalcum Pulse", - description: "Turns the sunlight harsh when the Pokémon enters a battle. The ancient pulse thrumming through the Pokémon also boosts its Attack stat in harsh sunlight.", + name: 'Orichalcum Pulse', + description: 'Turns the sunlight harsh when the Pokémon enters a battle. The ancient pulse thrumming through the Pokémon also boosts its Attack stat in harsh sunlight.', }, hadronEngine: { - name: "Hadron Engine", - description: "Turns the ground into Electric Terrain when the Pokémon enters a battle. The futuristic engine within the Pokémon also boosts its Sp. Atk stat on Electric Terrain.", + name: 'Hadron Engine', + description: 'Turns the ground into Electric Terrain when the Pokémon enters a battle. The futuristic engine within the Pokémon also boosts its Sp. Atk stat on Electric Terrain.', }, opportunist: { - name: "Opportunist", - description: "If an opponent's stat is boosted, the Pokémon seizes the opportunity to boost the same stat for itself.", + name: 'Opportunist', + description: 'If an opponent\'s stat is boosted, the Pokémon seizes the opportunity to boost the same stat for itself.', }, cudChew: { - name: "Cud Chew", - description: "When the Pokémon eats a Berry, it will regurgitate that Berry at the end of the next turn and eat it one more time.", + name: 'Cud Chew', + description: 'When the Pokémon eats a Berry, it will regurgitate that Berry at the end of the next turn and eat it one more time.', }, sharpness: { - name: "Sharpness", - description: "Powers up slicing moves.", + name: 'Sharpness', + description: 'Powers up slicing moves.', }, supremeOverlord: { - name: "Supreme Overlord", - description: "When the Pokémon enters a battle, its Attack and Sp. Atk stats are slightly boosted for each of the allies in its party that have already been defeated.", + name: 'Supreme Overlord', + description: 'When the Pokémon enters a battle, its Attack and Sp. Atk stats are slightly boosted for each of the allies in its party that have already been defeated.', }, costar: { - name: "Costar", - description: "When the Pokémon enters a battle, it copies an ally's stat changes.", + name: 'Costar', + description: 'When the Pokémon enters a battle, it copies an ally\'s stat changes.', }, toxicDebris: { - name: "Toxic Debris", - description: "Scatters poison spikes at the feet of the opposing team when the Pokémon takes damage from physical moves.", + name: 'Toxic Debris', + description: 'Scatters poison spikes at the feet of the opposing team when the Pokémon takes damage from physical moves.', }, armorTail: { - name: "Armor Tail", - description: "The mysterious tail covering the Pokémon's head makes opponents unable to use priority moves against the Pokémon or its allies.", + name: 'Armor Tail', + description: 'The mysterious tail covering the Pokémon\'s head makes opponents unable to use priority moves against the Pokémon or its allies.', }, earthEater: { - name: "Earth Eater", - description: "If hit by a Ground-type move, the Pokémon has its HP restored instead of taking damage.", + name: 'Earth Eater', + description: 'If hit by a Ground-type move, the Pokémon has its HP restored instead of taking damage.', }, myceliumMight: { - name: "Mycelium Might", - description: "The Pokémon will always act more slowly when using status moves, but these moves will be unimpeded by the Ability of the target.", + name: 'Mycelium Might', + description: 'The Pokémon will always act more slowly when using status moves, but these moves will be unimpeded by the Ability of the target.', }, mindsEye: { - name: "Mind's Eye", - description: "The Pokémon ignores changes to opponents' evasiveness, its accuracy can't be lowered, and it can hit Ghost types with Normal- and Fighting-type moves.", + name: 'Mind\'s Eye', + description: 'The Pokémon ignores changes to opponents\' evasiveness, its accuracy can\'t be lowered, and it can hit Ghost types with Normal- and Fighting-type moves.', }, supersweetSyrup: { - name: "Supersweet Syrup", - description: "A sickly sweet scent spreads across the field the first time the Pokémon enters a battle, lowering the evasiveness of opposing Pokémon.", + name: 'Supersweet Syrup', + description: 'A sickly sweet scent spreads across the field the first time the Pokémon enters a battle, lowering the evasiveness of opposing Pokémon.', }, hospitality: { - name: "Hospitality", - description: "When the Pokémon enters a battle, it showers its ally with hospitality, restoring a small amount of the ally's HP.", + name: 'Hospitality', + description: 'When the Pokémon enters a battle, it showers its ally with hospitality, restoring a small amount of the ally\'s HP.', }, toxicChain: { - name: "Toxic Chain", - description: "The power of the Pokémon's toxic chain may badly poison any target the Pokémon hits with a move.", + name: 'Toxic Chain', + description: 'The power of the Pokémon\'s toxic chain may badly poison any target the Pokémon hits with a move.', }, embodyAspectTeal: { - name: "Embody Aspect", - description: "The Pokémon's heart fills with memories, causing the Teal Mask to shine and the Pokémon's Speed stat to be boosted.", + name: 'Embody Aspect', + description: 'The Pokémon\'s heart fills with memories, causing the Teal Mask to shine and the Pokémon\'s Speed stat to be boosted.', }, embodyAspectWellspring: { - name: "Embody Aspect", - description: "The Pokémon's heart fills with memories, causing the Wellspring Mask to shine and the Pokémon's Sp. Def stat to be boosted.", + name: 'Embody Aspect', + description: 'The Pokémon\'s heart fills with memories, causing the Wellspring Mask to shine and the Pokémon\'s Sp. Def stat to be boosted.', }, embodyAspectHearthflame: { - name: "Embody Aspect", - description: "The Pokémon's heart fills with memories, causing the Hearthflame Mask to shine and the Pokémon's Attack stat to be boosted.", + name: 'Embody Aspect', + description: 'The Pokémon\'s heart fills with memories, causing the Hearthflame Mask to shine and the Pokémon\'s Attack stat to be boosted.', }, embodyAspectCornerstone: { - name: "Embody Aspect", - description: "The Pokémon's heart fills with memories, causing the Cornerstone Mask to shine and the Pokémon's Defense stat to be boosted.", + name: 'Embody Aspect', + description: 'The Pokémon\'s heart fills with memories, causing the Cornerstone Mask to shine and the Pokémon\'s Defense stat to be boosted.', }, teraShift: { - name: "Tera Shift", - description: "When the Pokémon enters a battle, it absorbs the energy around itself and transforms into its Terastal Form.", + name: 'Tera Shift', + description: 'When the Pokémon enters a battle, it absorbs the energy around itself and transforms into its Terastal Form.', }, teraShell: { - name: "Tera Shell", - description: "The Pokémon's shell contains the powers of each type. All damage-dealing moves that hit the Pokémon when its HP is full will not be very effective.", + name: 'Tera Shell', + description: 'The Pokémon\'s shell contains the powers of each type. All damage-dealing moves that hit the Pokémon when its HP is full will not be very effective.', }, teraformZero: { - name: "Teraform Zero", - description: "When Terapagos changes into its Stellar Form, it uses its hidden powers to eliminate all effects of weather and terrain, reducing them to zero.", + name: 'Teraform Zero', + description: 'When Terapagos changes into its Stellar Form, it uses its hidden powers to eliminate all effects of weather and terrain, reducing them to zero.', }, poisonPuppeteer: { - name: "Poison Puppeteer", - description: "Pokémon poisoned by Pecharunt's moves will also become confused.", + name: 'Poison Puppeteer', + description: 'Pokémon poisoned by Pecharunt\'s moves will also become confused.', }, } as const; diff --git a/src/locales/en/battle-message-ui-handler.ts b/src/locales/en/battle-message-ui-handler.ts index 346f856872c..8cd57a56e49 100644 --- a/src/locales/en/battle-message-ui-handler.ts +++ b/src/locales/en/battle-message-ui-handler.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battleMessageUiHandler: SimpleTranslationEntries = { - "ivBest": "Best", - "ivFantastic": "Fantastic", - "ivVeryGood": "Very Good", - "ivPrettyGood": "Pretty Good", - "ivDecent": "Decent", - "ivNoGood": "No Good", -} as const; \ No newline at end of file + 'ivBest': 'Best', + 'ivFantastic': 'Fantastic', + 'ivVeryGood': 'Very Good', + 'ivPrettyGood': 'Pretty Good', + 'ivDecent': 'Decent', + 'ivNoGood': 'No Good', +} as const; diff --git a/src/locales/en/battle.ts b/src/locales/en/battle.ts index a6ed2fabc64..943a0e76d74 100644 --- a/src/locales/en/battle.ts +++ b/src/locales/en/battle.ts @@ -1,56 +1,56 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battle: SimpleTranslationEntries = { - "bossAppeared": "{{bossName}} appeared.", - "trainerAppeared": "{{trainerName}}\nwould like to battle!", - "trainerAppearedDouble": "{{trainerName}}\nwould like to battle!", - "singleWildAppeared": "A wild {{pokemonName}} appeared!", - "multiWildAppeared": "A wild {{pokemonName1}}\nand {{pokemonName2}} appeared!", - "playerComeBack": "Come back, {{pokemonName}}!", - "trainerComeBack": "{{trainerName}} withdrew {{pokemonName}}!", - "playerGo": "Go! {{pokemonName}}!", - "trainerGo": "{{trainerName}} sent out {{pokemonName}}!", - "switchQuestion": "Will you switch\n{{pokemonName}}?", - "trainerDefeated": `You defeated\n{{trainerName}}!`, - "pokemonCaught": "{{pokemonName}} was caught!", - "pokemon": "Pokémon", - "sendOutPokemon": "Go! {{pokemonName}}!", - "hitResultCriticalHit": "A critical hit!", - "hitResultSuperEffective": "It's super effective!", - "hitResultNotVeryEffective": "It's not very effective…", - "hitResultNoEffect": "It doesn't affect {{pokemonName}}!", - "hitResultOneHitKO": "It's a one-hit KO!", - "attackFailed": "But it failed!", - "attackHitsCount": `Hit {{count}} time(s)!`, - "expGain": "{{pokemonName}} gained\n{{exp}} EXP. Points!", - "levelUp": "{{pokemonName}} grew to\nLv. {{level}}!", - "learnMove": "{{pokemonName}} learned\n{{moveName}}!", - "learnMovePrompt": "{{pokemonName}} wants to learn the\nmove {{moveName}}.", - "learnMoveLimitReached": "However, {{pokemonName}} already\nknows four moves.", - "learnMoveReplaceQuestion": "Should a move be forgotten and\nreplaced with {{moveName}}?", - "learnMoveStopTeaching": "Stop trying to teach\n{{moveName}}?", - "learnMoveNotLearned": "{{pokemonName}} did not learn the\nmove {{moveName}}.", - "learnMoveForgetQuestion": "Which move should be forgotten?", - "learnMoveForgetSuccess": "{{pokemonName}} forgot how to\nuse {{moveName}}.", - "countdownPoof": "@d{32}1, @d{15}2, and@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}Poof!", - "learnMoveAnd": "And…", - "levelCapUp": "The level cap\nhas increased to {{levelCap}}!", - "moveNotImplemented": "{{moveName}} is not yet implemented and cannot be selected.", - "moveNoPP": "There's no PP left for\nthis move!", - "moveDisabled": "{{moveName}} is disabled!", - "noPokeballForce": "An unseen force\nprevents using Poké Balls.", - "noPokeballTrainer": "You can't catch\nanother trainer's Pokémon!", - "noPokeballMulti": "You can only throw a Poké Ball\nwhen there is one Pokémon remaining!", - "noPokeballStrong": "The target Pokémon is too strong to be caught!\nYou need to weaken it first!", - "noEscapeForce": "An unseen force\nprevents escape.", - "noEscapeTrainer": "You can't run\nfrom a trainer battle!", - "noEscapePokemon": "{{pokemonName}}'s {{moveName}}\nprevents {{escapeVerb}}!", - "runAwaySuccess": "You got away safely!", - "runAwayCannotEscape": 'You can\'t escape!', - "escapeVerbSwitch": "switching", - "escapeVerbFlee": "fleeing", - "notDisabled": "{{pokemonName}}'s {{moveName}} is disabled\nno more!", - "skipItemQuestion": "Are you sure you want to skip taking an item?", - "eggHatching": "Oh?", - "ivScannerUseQuestion": "Use IV Scanner on {{pokemonName}}?" -} as const; \ No newline at end of file + 'bossAppeared': '{{bossName}} appeared.', + 'trainerAppeared': '{{trainerName}}\nwould like to battle!', + 'trainerAppearedDouble': '{{trainerName}}\nwould like to battle!', + 'singleWildAppeared': 'A wild {{pokemonName}} appeared!', + 'multiWildAppeared': 'A wild {{pokemonName1}}\nand {{pokemonName2}} appeared!', + 'playerComeBack': 'Come back, {{pokemonName}}!', + 'trainerComeBack': '{{trainerName}} withdrew {{pokemonName}}!', + 'playerGo': 'Go! {{pokemonName}}!', + 'trainerGo': '{{trainerName}} sent out {{pokemonName}}!', + 'switchQuestion': 'Will you switch\n{{pokemonName}}?', + 'trainerDefeated': 'You defeated\n{{trainerName}}!', + 'pokemonCaught': '{{pokemonName}} was caught!', + 'pokemon': 'Pokémon', + 'sendOutPokemon': 'Go! {{pokemonName}}!', + 'hitResultCriticalHit': 'A critical hit!', + 'hitResultSuperEffective': 'It\'s super effective!', + 'hitResultNotVeryEffective': 'It\'s not very effective…', + 'hitResultNoEffect': 'It doesn\'t affect {{pokemonName}}!', + 'hitResultOneHitKO': 'It\'s a one-hit KO!', + 'attackFailed': 'But it failed!', + 'attackHitsCount': 'Hit {{count}} time(s)!', + 'expGain': '{{pokemonName}} gained\n{{exp}} EXP. Points!', + 'levelUp': '{{pokemonName}} grew to\nLv. {{level}}!', + 'learnMove': '{{pokemonName}} learned\n{{moveName}}!', + 'learnMovePrompt': '{{pokemonName}} wants to learn the\nmove {{moveName}}.', + 'learnMoveLimitReached': 'However, {{pokemonName}} already\nknows four moves.', + 'learnMoveReplaceQuestion': 'Should a move be forgotten and\nreplaced with {{moveName}}?', + 'learnMoveStopTeaching': 'Stop trying to teach\n{{moveName}}?', + 'learnMoveNotLearned': '{{pokemonName}} did not learn the\nmove {{moveName}}.', + 'learnMoveForgetQuestion': 'Which move should be forgotten?', + 'learnMoveForgetSuccess': '{{pokemonName}} forgot how to\nuse {{moveName}}.', + 'countdownPoof': '@d{32}1, @d{15}2, and@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}Poof!', + 'learnMoveAnd': 'And…', + 'levelCapUp': 'The level cap\nhas increased to {{levelCap}}!', + 'moveNotImplemented': '{{moveName}} is not yet implemented and cannot be selected.', + 'moveNoPP': 'There\'s no PP left for\nthis move!', + 'moveDisabled': '{{moveName}} is disabled!', + 'noPokeballForce': 'An unseen force\nprevents using Poké Balls.', + 'noPokeballTrainer': 'You can\'t catch\nanother trainer\'s Pokémon!', + 'noPokeballMulti': 'You can only throw a Poké Ball\nwhen there is one Pokémon remaining!', + 'noPokeballStrong': 'The target Pokémon is too strong to be caught!\nYou need to weaken it first!', + 'noEscapeForce': 'An unseen force\nprevents escape.', + 'noEscapeTrainer': 'You can\'t run\nfrom a trainer battle!', + 'noEscapePokemon': '{{pokemonName}}\'s {{moveName}}\nprevents {{escapeVerb}}!', + 'runAwaySuccess': 'You got away safely!', + 'runAwayCannotEscape': 'You can\'t escape!', + 'escapeVerbSwitch': 'switching', + 'escapeVerbFlee': 'fleeing', + 'notDisabled': '{{pokemonName}}\'s {{moveName}} is disabled\nno more!', + 'skipItemQuestion': 'Are you sure you want to skip taking an item?', + 'eggHatching': 'Oh?', + 'ivScannerUseQuestion': 'Use IV Scanner on {{pokemonName}}?' +} as const; diff --git a/src/locales/en/berry.ts b/src/locales/en/berry.ts index 8c8bc5ee280..2edefd6b96e 100644 --- a/src/locales/en/berry.ts +++ b/src/locales/en/berry.ts @@ -1,48 +1,48 @@ -import { BerryTranslationEntries } from "#app/plugins/i18n"; +import { BerryTranslationEntries } from '#app/plugins/i18n'; export const berry: BerryTranslationEntries = { - "SITRUS": { - name: "Sitrus Berry", - effect: "Restores 25% HP if HP is below 50%", + 'SITRUS': { + name: 'Sitrus Berry', + effect: 'Restores 25% HP if HP is below 50%', }, - "LUM": { - name: "Lum Berry", - effect: "Cures any non-volatile status condition and confusion", + 'LUM': { + name: 'Lum Berry', + effect: 'Cures any non-volatile status condition and confusion', }, - "ENIGMA": { - name: "Enigma Berry", - effect: "Restores 25% HP if hit by a super effective move", + 'ENIGMA': { + name: 'Enigma Berry', + effect: 'Restores 25% HP if hit by a super effective move', }, - "LIECHI": { - name: "Liechi Berry", - effect: "Raises Attack if HP is below 25%", + 'LIECHI': { + name: 'Liechi Berry', + effect: 'Raises Attack if HP is below 25%', }, - "GANLON": { - name: "Ganlon Berry", - effect: "Raises Defense if HP is below 25%", + 'GANLON': { + name: 'Ganlon Berry', + effect: 'Raises Defense if HP is below 25%', }, - "PETAYA": { - name: "Petaya Berry", - effect: "Raises Sp. Atk if HP is below 25%", + 'PETAYA': { + name: 'Petaya Berry', + effect: 'Raises Sp. Atk if HP is below 25%', }, - "APICOT": { - name: "Apicot Berry", - effect: "Raises Sp. Def if HP is below 25%", + 'APICOT': { + name: 'Apicot Berry', + effect: 'Raises Sp. Def if HP is below 25%', }, - "SALAC": { - name: "Salac Berry", - effect: "Raises Speed if HP is below 25%", + 'SALAC': { + name: 'Salac Berry', + effect: 'Raises Speed if HP is below 25%', }, - "LANSAT": { - name: "Lansat Berry", - effect: "Raises critical hit ratio if HP is below 25%", + 'LANSAT': { + name: 'Lansat Berry', + effect: 'Raises critical hit ratio if HP is below 25%', }, - "STARF": { - name: "Starf Berry", - effect: "Sharply raises a random stat if HP is below 25%", + 'STARF': { + name: 'Starf Berry', + effect: 'Sharply raises a random stat if HP is below 25%', }, - "LEPPA": { - name: "Leppa Berry", - effect: "Restores 10 PP to a move if its PP reaches 0", + 'LEPPA': { + name: 'Leppa Berry', + effect: 'Restores 10 PP to a move if its PP reaches 0', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/en/command-ui-handler.ts b/src/locales/en/command-ui-handler.ts index 889c1378b08..e7c2a2d57d6 100644 --- a/src/locales/en/command-ui-handler.ts +++ b/src/locales/en/command-ui-handler.ts @@ -1,9 +1,9 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const commandUiHandler: SimpleTranslationEntries = { - "fight": "Fight", - "ball": "Ball", - "pokemon": "Pokémon", - "run": "Run", - "actionMessage": "What will\n{{pokemonName}} do?", -} as const; \ No newline at end of file + 'fight': 'Fight', + 'ball': 'Ball', + 'pokemon': 'Pokémon', + 'run': 'Run', + 'actionMessage': 'What will\n{{pokemonName}} do?', +} as const; diff --git a/src/locales/en/config.ts b/src/locales/en/config.ts index f25c0b5e278..b66a7833e44 100644 --- a/src/locales/en/config.ts +++ b/src/locales/en/config.ts @@ -1,51 +1,51 @@ -import { ability } from "./ability"; -import { abilityTriggers } from "./ability-trigger"; -import { battle } from "./battle"; -import { commandUiHandler } from "./command-ui-handler"; -import { egg } from "./egg"; -import { fightUiHandler } from "./fight-ui-handler"; -import { growth } from "./growth"; -import { menu } from "./menu"; -import { menuUiHandler } from "./menu-ui-handler"; -import { modifierType } from "./modifier-type"; -import { move } from "./move"; -import { nature } from "./nature"; -import { pokeball } from "./pokeball"; -import { pokemon } from "./pokemon"; -import { pokemonInfo } from "./pokemon-info"; -import { splashMessages } from "./splash-messages"; -import { starterSelectUiHandler } from "./starter-select-ui-handler"; -import { titles, trainerClasses, trainerNames } from "./trainers"; -import { tutorial } from "./tutorial"; -import { weather } from "./weather"; -import { battleMessageUiHandler } from "./battle-message-ui-handler"; -import { berry } from "./berry"; -import { voucher } from "./voucher"; +import { ability } from './ability'; +import { abilityTriggers } from './ability-trigger'; +import { battle } from './battle'; +import { commandUiHandler } from './command-ui-handler'; +import { egg } from './egg'; +import { fightUiHandler } from './fight-ui-handler'; +import { growth } from './growth'; +import { menu } from './menu'; +import { menuUiHandler } from './menu-ui-handler'; +import { modifierType } from './modifier-type'; +import { move } from './move'; +import { nature } from './nature'; +import { pokeball } from './pokeball'; +import { pokemon } from './pokemon'; +import { pokemonInfo } from './pokemon-info'; +import { splashMessages } from './splash-messages'; +import { starterSelectUiHandler } from './starter-select-ui-handler'; +import { titles, trainerClasses, trainerNames } from './trainers'; +import { tutorial } from './tutorial'; +import { weather } from './weather'; +import { battleMessageUiHandler } from './battle-message-ui-handler'; +import { berry } from './berry'; +import { voucher } from './voucher'; export const enConfig = { - ability: ability, - abilityTriggers: abilityTriggers, - battle: battle, - commandUiHandler: commandUiHandler, - egg: egg, - fightUiHandler: fightUiHandler, - growth: growth, - menu: menu, - menuUiHandler: menuUiHandler, - modifierType: modifierType, - move: move, - nature: nature, - pokeball: pokeball, - pokemon: pokemon, - pokemonInfo: pokemonInfo, - splashMessages: splashMessages, - starterSelectUiHandler: starterSelectUiHandler, - titles: titles, - trainerClasses: trainerClasses, - trainerNames: trainerNames, - tutorial: tutorial, - weather: weather, - battleMessageUiHandler: battleMessageUiHandler, - berry: berry, - voucher: voucher, -} + ability: ability, + abilityTriggers: abilityTriggers, + battle: battle, + commandUiHandler: commandUiHandler, + egg: egg, + fightUiHandler: fightUiHandler, + growth: growth, + menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, + move: move, + nature: nature, + pokeball: pokeball, + pokemon: pokemon, + pokemonInfo: pokemonInfo, + splashMessages: splashMessages, + starterSelectUiHandler: starterSelectUiHandler, + titles: titles, + trainerClasses: trainerClasses, + trainerNames: trainerNames, + tutorial: tutorial, + weather: weather, + battleMessageUiHandler: battleMessageUiHandler, + berry: berry, + voucher: voucher, +}; diff --git a/src/locales/en/egg.ts b/src/locales/en/egg.ts index 358c1b4a503..67cc11a85b1 100644 --- a/src/locales/en/egg.ts +++ b/src/locales/en/egg.ts @@ -1,21 +1,21 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const egg: SimpleTranslationEntries = { - "egg": "Egg", - "greatTier": "Rare", - "ultraTier": "Epic", - "masterTier": "Legendary", - "defaultTier": "Common", - "hatchWavesMessageSoon": "Sounds can be heard coming from inside! It will hatch soon!", - "hatchWavesMessageClose": "It appears to move occasionally. It may be close to hatching.", - "hatchWavesMessageNotClose": "What will hatch from this? It doesn't seem close to hatching.", - "hatchWavesMessageLongTime": "It looks like this Egg will take a long time to hatch.", - "gachaTypeLegendary": "Legendary Rate Up", - "gachaTypeMove": "Rare Egg Move Rate Up", - "gachaTypeShiny": "Shiny Rate Up", - "selectMachine": "Select a machine.", - "notEnoughVouchers": "You don't have enough vouchers!", - "tooManyEggs": "You have too many eggs!", - "pull": "Pull", - "pulls": "Pulls" -} as const; \ No newline at end of file + 'egg': 'Egg', + 'greatTier': 'Rare', + 'ultraTier': 'Epic', + 'masterTier': 'Legendary', + 'defaultTier': 'Common', + 'hatchWavesMessageSoon': 'Sounds can be heard coming from inside! It will hatch soon!', + 'hatchWavesMessageClose': 'It appears to move occasionally. It may be close to hatching.', + 'hatchWavesMessageNotClose': 'What will hatch from this? It doesn\'t seem close to hatching.', + 'hatchWavesMessageLongTime': 'It looks like this Egg will take a long time to hatch.', + 'gachaTypeLegendary': 'Legendary Rate Up', + 'gachaTypeMove': 'Rare Egg Move Rate Up', + 'gachaTypeShiny': 'Shiny Rate Up', + 'selectMachine': 'Select a machine.', + 'notEnoughVouchers': 'You don\'t have enough vouchers!', + 'tooManyEggs': 'You have too many eggs!', + 'pull': 'Pull', + 'pulls': 'Pulls' +} as const; diff --git a/src/locales/en/fight-ui-handler.ts b/src/locales/en/fight-ui-handler.ts index 7546e9af66a..fef483b1290 100644 --- a/src/locales/en/fight-ui-handler.ts +++ b/src/locales/en/fight-ui-handler.ts @@ -1,7 +1,7 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const fightUiHandler: SimpleTranslationEntries = { - "pp": "PP", - "power": "Power", - "accuracy": "Accuracy", -} as const; \ No newline at end of file + 'pp': 'PP', + 'power': 'Power', + 'accuracy': 'Accuracy', +} as const; diff --git a/src/locales/en/growth.ts b/src/locales/en/growth.ts index a0d1cb5eeaa..13a442f4925 100644 --- a/src/locales/en/growth.ts +++ b/src/locales/en/growth.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const growth: SimpleTranslationEntries = { - "Erratic": "Erratic", - "Fast": "Fast", - "Medium_Fast": "Medium Fast", - "Medium_Slow": "Medium Slow", - "Slow": "Slow", - "Fluctuating": "Fluctuating" -} as const; \ No newline at end of file + 'Erratic': 'Erratic', + 'Fast': 'Fast', + 'Medium_Fast': 'Medium Fast', + 'Medium_Slow': 'Medium Slow', + 'Slow': 'Slow', + 'Fluctuating': 'Fluctuating' +} as const; diff --git a/src/locales/en/menu-ui-handler.ts b/src/locales/en/menu-ui-handler.ts index eb8e474ee60..54f6e13b710 100644 --- a/src/locales/en/menu-ui-handler.ts +++ b/src/locales/en/menu-ui-handler.ts @@ -1,23 +1,23 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const menuUiHandler: SimpleTranslationEntries = { - "GAME_SETTINGS": 'Game Settings', - "ACHIEVEMENTS": "Achievements", - "STATS": "Stats", - "VOUCHERS": "Vouchers", - "EGG_LIST": "Egg List", - "EGG_GACHA": "Egg Gacha", - "MANAGE_DATA": "Manage Data", - "COMMUNITY": "Community", - "SAVE_AND_QUIT": "Save and Quit", - "LOG_OUT": "Log Out", - "slot": "Slot {{slotNumber}}", - "importSession": "Import Session", - "importSlotSelect": "Select a slot to import to.", - "exportSession": "Export Session", - "exportSlotSelect": "Select a slot to export from.", - "importData": "Import Data", - "exportData": "Export Data", - "cancel": "Cancel", - "losingProgressionWarning": "You will lose any progress since the beginning of the battle. Proceed?" -} as const; \ No newline at end of file + 'GAME_SETTINGS': 'Game Settings', + 'ACHIEVEMENTS': 'Achievements', + 'STATS': 'Stats', + 'VOUCHERS': 'Vouchers', + 'EGG_LIST': 'Egg List', + 'EGG_GACHA': 'Egg Gacha', + 'MANAGE_DATA': 'Manage Data', + 'COMMUNITY': 'Community', + 'SAVE_AND_QUIT': 'Save and Quit', + 'LOG_OUT': 'Log Out', + 'slot': 'Slot {{slotNumber}}', + 'importSession': 'Import Session', + 'importSlotSelect': 'Select a slot to import to.', + 'exportSession': 'Export Session', + 'exportSlotSelect': 'Select a slot to export from.', + 'importData': 'Import Data', + 'exportData': 'Export Data', + 'cancel': 'Cancel', + 'losingProgressionWarning': 'You will lose any progress since the beginning of the battle. Proceed?' +} as const; diff --git a/src/locales/en/menu.ts b/src/locales/en/menu.ts index 7db9ea3aa6a..5a1d9f624f6 100644 --- a/src/locales/en/menu.ts +++ b/src/locales/en/menu.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,46 +6,46 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const menu: SimpleTranslationEntries = { - "cancel": "Cancel", - "continue": "Continue", - "dailyRun": "Daily Run (Beta)", - "loadGame": "Load Game", - "newGame": "New Game", - "selectGameMode": "Select a game mode.", - "logInOrCreateAccount": "Log in or create an account to start. No email required!", - "username": "Username", - "password": "Password", - "login": "Login", - "register": "Register", - "emptyUsername": "Username must not be empty", - "invalidLoginUsername": "The provided username is invalid", - "invalidRegisterUsername": "Username must only contain letters, numbers, or underscores", - "invalidLoginPassword": "The provided password is invalid", - "invalidRegisterPassword": "Password must be 6 characters or longer", - "usernameAlreadyUsed": "The provided username is already in use", - "accountNonExistent": "The provided user does not exist", - "unmatchingPassword": "The provided password does not match", - "passwordNotMatchingConfirmPassword": "Password must match confirm password", - "confirmPassword": "Confirm Password", - "registrationAgeWarning": "By registering, you confirm you are of 13 years of age or older.", - "backToLogin": "Back to Login", - "failedToLoadSaveData": "Failed to load save data. Please reload the page.\nIf this continues, please contact the administrator.", - "sessionSuccess": "Session loaded successfully.", - "failedToLoadSession": "Your session data could not be loaded.\nIt may be corrupted.", - "boyOrGirl": "Are you a boy or a girl?", - "boy": "Boy", - "girl": "Girl", - "evolving": "What?\n{{pokemonName}} is evolving!", - "stoppedEvolving": "{{pokemonName}} stopped evolving.", - "pauseEvolutionsQuestion": "Would you like to pause evolutions for {{pokemonName}}?\nEvolutions can be re-enabled from the party screen.", - "evolutionsPaused": "Evolutions have been paused for {{pokemonName}}.", - "evolutionDone": "Congratulations!\nYour {{pokemonName}} evolved into {{evolvedPokemonName}}!", - "dailyRankings": "Daily Rankings", - "weeklyRankings": "Weekly Rankings", - "noRankings": "No Rankings", - "loading": "Loading…", - "playersOnline": "Players Online", - "empty":"Empty", - "yes":"Yes", - "no":"No", -} as const; \ No newline at end of file + 'cancel': 'Cancel', + 'continue': 'Continue', + 'dailyRun': 'Daily Run (Beta)', + 'loadGame': 'Load Game', + 'newGame': 'New Game', + 'selectGameMode': 'Select a game mode.', + 'logInOrCreateAccount': 'Log in or create an account to start. No email required!', + 'username': 'Username', + 'password': 'Password', + 'login': 'Login', + 'register': 'Register', + 'emptyUsername': 'Username must not be empty', + 'invalidLoginUsername': 'The provided username is invalid', + 'invalidRegisterUsername': 'Username must only contain letters, numbers, or underscores', + 'invalidLoginPassword': 'The provided password is invalid', + 'invalidRegisterPassword': 'Password must be 6 characters or longer', + 'usernameAlreadyUsed': 'The provided username is already in use', + 'accountNonExistent': 'The provided user does not exist', + 'unmatchingPassword': 'The provided password does not match', + 'passwordNotMatchingConfirmPassword': 'Password must match confirm password', + 'confirmPassword': 'Confirm Password', + 'registrationAgeWarning': 'By registering, you confirm you are of 13 years of age or older.', + 'backToLogin': 'Back to Login', + 'failedToLoadSaveData': 'Failed to load save data. Please reload the page.\nIf this continues, please contact the administrator.', + 'sessionSuccess': 'Session loaded successfully.', + 'failedToLoadSession': 'Your session data could not be loaded.\nIt may be corrupted.', + 'boyOrGirl': 'Are you a boy or a girl?', + 'boy': 'Boy', + 'girl': 'Girl', + 'evolving': 'What?\n{{pokemonName}} is evolving!', + 'stoppedEvolving': '{{pokemonName}} stopped evolving.', + 'pauseEvolutionsQuestion': 'Would you like to pause evolutions for {{pokemonName}}?\nEvolutions can be re-enabled from the party screen.', + 'evolutionsPaused': 'Evolutions have been paused for {{pokemonName}}.', + 'evolutionDone': 'Congratulations!\nYour {{pokemonName}} evolved into {{evolvedPokemonName}}!', + 'dailyRankings': 'Daily Rankings', + 'weeklyRankings': 'Weekly Rankings', + 'noRankings': 'No Rankings', + 'loading': 'Loading…', + 'playersOnline': 'Players Online', + 'empty':'Empty', + 'yes':'Yes', + 'no':'No', +} as const; diff --git a/src/locales/en/modifier-type.ts b/src/locales/en/modifier-type.ts index 31d4abbce29..35f0d17dec6 100644 --- a/src/locales/en/modifier-type.ts +++ b/src/locales/en/modifier-type.ts @@ -1,387 +1,387 @@ -import { ModifierTypeTranslationEntries } from "#app/plugins/i18n"; +import { ModifierTypeTranslationEntries } from '#app/plugins/i18n'; export const modifierType: ModifierTypeTranslationEntries = { ModifierType: { - "AddPokeballModifierType": { - name: "{{modifierCount}}x {{pokeballName}}", - description: "Receive {{pokeballName}} x{{modifierCount}} (Inventory: {{pokeballAmount}}) \nCatch Rate: {{catchRate}}", + 'AddPokeballModifierType': { + name: '{{modifierCount}}x {{pokeballName}}', + description: 'Receive {{pokeballName}} x{{modifierCount}} (Inventory: {{pokeballAmount}}) \nCatch Rate: {{catchRate}}', }, - "AddVoucherModifierType": { - name: "{{modifierCount}}x {{voucherTypeName}}", - description: "Receive {{voucherTypeName}} x{{modifierCount}}", + 'AddVoucherModifierType': { + name: '{{modifierCount}}x {{voucherTypeName}}', + description: 'Receive {{voucherTypeName}} x{{modifierCount}}', }, - "PokemonHeldItemModifierType": { + 'PokemonHeldItemModifierType': { extra: { - "inoperable": "{{pokemonName}} can't take\nthis item!", - "tooMany": "{{pokemonName}} has too many\nof this item!", + 'inoperable': '{{pokemonName}} can\'t take\nthis item!', + 'tooMany': '{{pokemonName}} has too many\nof this item!', } }, - "PokemonHpRestoreModifierType": { - description: "Restores {{restorePoints}} HP or {{restorePercent}}% HP for one Pokémon, whichever is higher", + 'PokemonHpRestoreModifierType': { + description: 'Restores {{restorePoints}} HP or {{restorePercent}}% HP for one Pokémon, whichever is higher', extra: { - "fully": "Fully restores HP for one Pokémon", - "fullyWithStatus": "Fully restores HP for one Pokémon and heals any status ailment", + 'fully': 'Fully restores HP for one Pokémon', + 'fullyWithStatus': 'Fully restores HP for one Pokémon and heals any status ailment', } }, - "PokemonReviveModifierType": { - description: "Revives one Pokémon and restores {{restorePercent}}% HP", + 'PokemonReviveModifierType': { + description: 'Revives one Pokémon and restores {{restorePercent}}% HP', }, - "PokemonStatusHealModifierType": { - description: "Heals any status ailment for one Pokémon", + 'PokemonStatusHealModifierType': { + description: 'Heals any status ailment for one Pokémon', }, - "PokemonPpRestoreModifierType": { - description: "Restores {{restorePoints}} PP for one Pokémon move", + 'PokemonPpRestoreModifierType': { + description: 'Restores {{restorePoints}} PP for one Pokémon move', extra: { - "fully": "Restores all PP for one Pokémon move", + 'fully': 'Restores all PP for one Pokémon move', } }, - "PokemonAllMovePpRestoreModifierType": { - description: "Restores {{restorePoints}} PP for all of one Pokémon's moves", + 'PokemonAllMovePpRestoreModifierType': { + description: 'Restores {{restorePoints}} PP for all of one Pokémon\'s moves', extra: { - "fully": "Restores all PP for all of one Pokémon's moves", + 'fully': 'Restores all PP for all of one Pokémon\'s moves', } }, - "PokemonPpUpModifierType": { - description: "Permanently increases PP for one Pokémon move by {{upPoints}} for every 5 maximum PP (maximum 3)", + 'PokemonPpUpModifierType': { + description: 'Permanently increases PP for one Pokémon move by {{upPoints}} for every 5 maximum PP (maximum 3)', }, - "PokemonNatureChangeModifierType": { - name: "{{natureName}} Mint", - description: "Changes a Pokémon's nature to {{natureName}} and permanently unlocks the nature for the starter.", + 'PokemonNatureChangeModifierType': { + name: '{{natureName}} Mint', + description: 'Changes a Pokémon\'s nature to {{natureName}} and permanently unlocks the nature for the starter.', }, - "DoubleBattleChanceBoosterModifierType": { - description: "Doubles the chance of an encounter being a double battle for {{battleCount}} battles", + 'DoubleBattleChanceBoosterModifierType': { + description: 'Doubles the chance of an encounter being a double battle for {{battleCount}} battles', }, - "TempBattleStatBoosterModifierType": { - description: "Increases the {{tempBattleStatName}} of all party members by 1 stage for 5 battles", + 'TempBattleStatBoosterModifierType': { + description: 'Increases the {{tempBattleStatName}} of all party members by 1 stage for 5 battles', }, - "AttackTypeBoosterModifierType": { - description: "Increases the power of a Pokémon's {{moveType}}-type moves by 20%", + 'AttackTypeBoosterModifierType': { + description: 'Increases the power of a Pokémon\'s {{moveType}}-type moves by 20%', }, - "PokemonLevelIncrementModifierType": { - description: "Increases a Pokémon's level by 1", + 'PokemonLevelIncrementModifierType': { + description: 'Increases a Pokémon\'s level by 1', }, - "AllPokemonLevelIncrementModifierType": { - description: "Increases all party members' level by 1", + 'AllPokemonLevelIncrementModifierType': { + description: 'Increases all party members\' level by 1', }, - "PokemonBaseStatBoosterModifierType": { - description: "Increases the holder's base {{statName}} by 10%. The higher your IVs, the higher the stack limit.", + 'PokemonBaseStatBoosterModifierType': { + description: 'Increases the holder\'s base {{statName}} by 10%. The higher your IVs, the higher the stack limit.', }, - "AllPokemonFullHpRestoreModifierType": { - description: "Restores 100% HP for all Pokémon", + 'AllPokemonFullHpRestoreModifierType': { + description: 'Restores 100% HP for all Pokémon', }, - "AllPokemonFullReviveModifierType": { - description: "Revives all fainted Pokémon, fully restoring HP", + 'AllPokemonFullReviveModifierType': { + description: 'Revives all fainted Pokémon, fully restoring HP', }, - "MoneyRewardModifierType": { - description: "Grants a {{moneyMultiplier}} amount of money (₽{{moneyAmount}})", + 'MoneyRewardModifierType': { + description: 'Grants a {{moneyMultiplier}} amount of money (₽{{moneyAmount}})', extra: { - "small": "small", - "moderate": "moderate", - "large": "large", + 'small': 'small', + 'moderate': 'moderate', + 'large': 'large', }, }, - "ExpBoosterModifierType": { - description: "Increases gain of EXP. Points by {{boostPercent}}%", + 'ExpBoosterModifierType': { + description: 'Increases gain of EXP. Points by {{boostPercent}}%', }, - "PokemonExpBoosterModifierType": { - description: "Increases the holder's gain of EXP. Points by {{boostPercent}}%", + 'PokemonExpBoosterModifierType': { + description: 'Increases the holder\'s gain of EXP. Points by {{boostPercent}}%', }, - "PokemonFriendshipBoosterModifierType": { - description: "Increases friendship gain per victory by 50%", + 'PokemonFriendshipBoosterModifierType': { + description: 'Increases friendship gain per victory by 50%', }, - "PokemonMoveAccuracyBoosterModifierType": { - description: "Increases move accuracy by {{accuracyAmount}} (maximum 100)", + 'PokemonMoveAccuracyBoosterModifierType': { + description: 'Increases move accuracy by {{accuracyAmount}} (maximum 100)', }, - "PokemonMultiHitModifierType": { - description: "Attacks hit one additional time at the cost of a 60/75/82.5% power reduction per stack respectively", + 'PokemonMultiHitModifierType': { + description: 'Attacks hit one additional time at the cost of a 60/75/82.5% power reduction per stack respectively', }, - "TmModifierType": { - name: "TM{{moveId}} - {{moveName}}", - description: "Teach {{moveName}} to a Pokémon", + 'TmModifierType': { + name: 'TM{{moveId}} - {{moveName}}', + description: 'Teach {{moveName}} to a Pokémon', }, - "EvolutionItemModifierType": { - description: "Causes certain Pokémon to evolve", + 'EvolutionItemModifierType': { + description: 'Causes certain Pokémon to evolve', }, - "FormChangeItemModifierType": { - description: "Causes certain Pokémon to change form", + 'FormChangeItemModifierType': { + description: 'Causes certain Pokémon to change form', }, - "FusePokemonModifierType": { - description: "Combines two Pokémon (transfers Ability, splits base stats and types, shares move pool)", + 'FusePokemonModifierType': { + description: 'Combines two Pokémon (transfers Ability, splits base stats and types, shares move pool)', }, - "TerastallizeModifierType": { - name: "{{teraType}} Tera Shard", - description: "{{teraType}} Terastallizes the holder for up to 10 battles", + 'TerastallizeModifierType': { + name: '{{teraType}} Tera Shard', + description: '{{teraType}} Terastallizes the holder for up to 10 battles', }, - "ContactHeldItemTransferChanceModifierType": { - description: "Upon attacking, there is a {{chancePercent}}% chance the foe's held item will be stolen", + 'ContactHeldItemTransferChanceModifierType': { + description: 'Upon attacking, there is a {{chancePercent}}% chance the foe\'s held item will be stolen', }, - "TurnHeldItemTransferModifierType": { - description: "Every turn, the holder acquires one held item from the foe", + 'TurnHeldItemTransferModifierType': { + description: 'Every turn, the holder acquires one held item from the foe', }, - "EnemyAttackStatusEffectChanceModifierType": { - description: "Adds a {{chancePercent}}% chance to inflict {{statusEffect}} with attack moves", + 'EnemyAttackStatusEffectChanceModifierType': { + description: 'Adds a {{chancePercent}}% chance to inflict {{statusEffect}} with attack moves', }, - "EnemyEndureChanceModifierType": { - description: "Adds a {{chancePercent}}% chance of enduring a hit", + 'EnemyEndureChanceModifierType': { + description: 'Adds a {{chancePercent}}% chance of enduring a hit', }, - "RARE_CANDY": { name: "Rare Candy" }, - "RARER_CANDY": { name: "Rarer Candy" }, + 'RARE_CANDY': { name: 'Rare Candy' }, + 'RARER_CANDY': { name: 'Rarer Candy' }, - "MEGA_BRACELET": { name: "Mega Bracelet", description: "Mega Stones become available" }, - "DYNAMAX_BAND": { name: "Dynamax Band", description: "Max Mushrooms become available" }, - "TERA_ORB": { name: "Tera Orb", description: "Tera Shards become available" }, + 'MEGA_BRACELET': { name: 'Mega Bracelet', description: 'Mega Stones become available' }, + 'DYNAMAX_BAND': { name: 'Dynamax Band', description: 'Max Mushrooms become available' }, + 'TERA_ORB': { name: 'Tera Orb', description: 'Tera Shards become available' }, - "MAP": { name: "Map", description: "Allows you to choose your destination at a crossroads" }, + 'MAP': { name: 'Map', description: 'Allows you to choose your destination at a crossroads' }, - "POTION": { name: "Potion" }, - "SUPER_POTION": { name: "Super Potion" }, - "HYPER_POTION": { name: "Hyper Potion" }, - "MAX_POTION": { name: "Max Potion" }, - "FULL_RESTORE": { name: "Full Restore" }, + 'POTION': { name: 'Potion' }, + 'SUPER_POTION': { name: 'Super Potion' }, + 'HYPER_POTION': { name: 'Hyper Potion' }, + 'MAX_POTION': { name: 'Max Potion' }, + 'FULL_RESTORE': { name: 'Full Restore' }, - "REVIVE": { name: "Revive" }, - "MAX_REVIVE": { name: "Max Revive" }, + 'REVIVE': { name: 'Revive' }, + 'MAX_REVIVE': { name: 'Max Revive' }, - "FULL_HEAL": { name: "Full Heal" }, + 'FULL_HEAL': { name: 'Full Heal' }, - "SACRED_ASH": { name: "Sacred Ash" }, + 'SACRED_ASH': { name: 'Sacred Ash' }, - "REVIVER_SEED": { name: "Reviver Seed", description: "Revives the holder for 1/2 HP upon fainting" }, + 'REVIVER_SEED': { name: 'Reviver Seed', description: 'Revives the holder for 1/2 HP upon fainting' }, - "ETHER": { name: "Ether" }, - "MAX_ETHER": { name: "Max Ether" }, + 'ETHER': { name: 'Ether' }, + 'MAX_ETHER': { name: 'Max Ether' }, - "ELIXIR": { name: "Elixir" }, - "MAX_ELIXIR": { name: "Max Elixir" }, + 'ELIXIR': { name: 'Elixir' }, + 'MAX_ELIXIR': { name: 'Max Elixir' }, - "PP_UP": { name: "PP Up" }, - "PP_MAX": { name: "PP Max" }, + 'PP_UP': { name: 'PP Up' }, + 'PP_MAX': { name: 'PP Max' }, - "LURE": { name: "Lure" }, - "SUPER_LURE": { name: "Super Lure" }, - "MAX_LURE": { name: "Max Lure" }, + 'LURE': { name: 'Lure' }, + 'SUPER_LURE': { name: 'Super Lure' }, + 'MAX_LURE': { name: 'Max Lure' }, - "MEMORY_MUSHROOM": { name: "Memory Mushroom", description: "Recall one Pokémon's forgotten move" }, + 'MEMORY_MUSHROOM': { name: 'Memory Mushroom', description: 'Recall one Pokémon\'s forgotten move' }, - "EXP_SHARE": { name: "EXP. All", description: "Non-participants receive 20% of a single participant's EXP. Points" }, - "EXP_BALANCE": { name: "EXP. Balance", description: "Weighs EXP. Points received from battles towards lower-leveled party members" }, + 'EXP_SHARE': { name: 'EXP. All', description: 'Non-participants receive 20% of a single participant\'s EXP. Points' }, + 'EXP_BALANCE': { name: 'EXP. Balance', description: 'Weighs EXP. Points received from battles towards lower-leveled party members' }, - "OVAL_CHARM": { name: "Oval Charm", description: "When multiple Pokémon participate in a battle, each gets an extra 10% of the total EXP" }, + 'OVAL_CHARM': { name: 'Oval Charm', description: 'When multiple Pokémon participate in a battle, each gets an extra 10% of the total EXP' }, - "EXP_CHARM": { name: "EXP. Charm" }, - "SUPER_EXP_CHARM": { name: "Super EXP. Charm" }, - "GOLDEN_EXP_CHARM": { name: "Golden EXP. Charm" }, + 'EXP_CHARM': { name: 'EXP. Charm' }, + 'SUPER_EXP_CHARM': { name: 'Super EXP. Charm' }, + 'GOLDEN_EXP_CHARM': { name: 'Golden EXP. Charm' }, - "LUCKY_EGG": { name: "Lucky Egg" }, - "GOLDEN_EGG": { name: "Golden Egg" }, + 'LUCKY_EGG': { name: 'Lucky Egg' }, + 'GOLDEN_EGG': { name: 'Golden Egg' }, - "SOOTHE_BELL": { name: "Soothe Bell" }, + 'SOOTHE_BELL': { name: 'Soothe Bell' }, - "SOUL_DEW": { name: "Soul Dew", description: "Increases the influence of a Pokémon's nature on its stats by 10% (additive)" }, + 'SOUL_DEW': { name: 'Soul Dew', description: 'Increases the influence of a Pokémon\'s nature on its stats by 10% (additive)' }, - "NUGGET": { name: "Nugget" }, - "BIG_NUGGET": { name: "Big Nugget" }, - "RELIC_GOLD": { name: "Relic Gold" }, + 'NUGGET': { name: 'Nugget' }, + 'BIG_NUGGET': { name: 'Big Nugget' }, + 'RELIC_GOLD': { name: 'Relic Gold' }, - "AMULET_COIN": { name: "Amulet Coin", description: "Increases money rewards by 20%" }, - "GOLDEN_PUNCH": { name: "Golden Punch", description: "Grants 50% of damage inflicted as money" }, - "COIN_CASE": { name: "Coin Case", description: "After every 10th battle, receive 10% of your money in interest" }, + 'AMULET_COIN': { name: 'Amulet Coin', description: 'Increases money rewards by 20%' }, + 'GOLDEN_PUNCH': { name: 'Golden Punch', description: 'Grants 50% of damage inflicted as money' }, + 'COIN_CASE': { name: 'Coin Case', description: 'After every 10th battle, receive 10% of your money in interest' }, - "LOCK_CAPSULE": { name: "Lock Capsule", description: "Allows you to lock item rarities when rerolling items" }, + 'LOCK_CAPSULE': { name: 'Lock Capsule', description: 'Allows you to lock item rarities when rerolling items' }, - "GRIP_CLAW": { name: "Grip Claw" }, - "WIDE_LENS": { name: "Wide Lens" }, + 'GRIP_CLAW': { name: 'Grip Claw' }, + 'WIDE_LENS': { name: 'Wide Lens' }, - "MULTI_LENS": { name: "Multi Lens" }, + 'MULTI_LENS': { name: 'Multi Lens' }, - "HEALING_CHARM": { name: "Healing Charm", description: "Increases the effectiveness of HP restoring moves and items by 10% (excludes Revives)" }, - "CANDY_JAR": { name: "Candy Jar", description: "Increases the number of levels added by Rare Candy items by 1" }, + 'HEALING_CHARM': { name: 'Healing Charm', description: 'Increases the effectiveness of HP restoring moves and items by 10% (excludes Revives)' }, + 'CANDY_JAR': { name: 'Candy Jar', description: 'Increases the number of levels added by Rare Candy items by 1' }, - "BERRY_POUCH": { name: "Berry Pouch", description: "Adds a 25% chance that a used berry will not be consumed" }, + 'BERRY_POUCH': { name: 'Berry Pouch', description: 'Adds a 25% chance that a used berry will not be consumed' }, - "FOCUS_BAND": { name: "Focus Band", description: "Adds a 10% chance to survive with 1 HP after being damaged enough to faint" }, + 'FOCUS_BAND': { name: 'Focus Band', description: 'Adds a 10% chance to survive with 1 HP after being damaged enough to faint' }, - "QUICK_CLAW": { name: "Quick Claw", description: "Adds a 10% chance to move first regardless of speed (after priority)" }, + 'QUICK_CLAW': { name: 'Quick Claw', description: 'Adds a 10% chance to move first regardless of speed (after priority)' }, - "KINGS_ROCK": { name: "King's Rock", description: "Adds a 10% chance an attack move will cause the opponent to flinch" }, + 'KINGS_ROCK': { name: 'King\'s Rock', description: 'Adds a 10% chance an attack move will cause the opponent to flinch' }, - "LEFTOVERS": { name: "Leftovers", description: "Heals 1/16 of a Pokémon's maximum HP every turn" }, - "SHELL_BELL": { name: "Shell Bell", description: "Heals 1/8 of a Pokémon's dealt damage" }, + 'LEFTOVERS': { name: 'Leftovers', description: 'Heals 1/16 of a Pokémon\'s maximum HP every turn' }, + 'SHELL_BELL': { name: 'Shell Bell', description: 'Heals 1/8 of a Pokémon\'s dealt damage' }, - "BATON": { name: "Baton", description: "Allows passing along effects when switching Pokémon, which also bypasses traps" }, + 'BATON': { name: 'Baton', description: 'Allows passing along effects when switching Pokémon, which also bypasses traps' }, - "SHINY_CHARM": { name: "Shiny Charm", description: "Dramatically increases the chance of a wild Pokémon being Shiny" }, - "ABILITY_CHARM": { name: "Ability Charm", description: "Dramatically increases the chance of a wild Pokémon having a Hidden Ability" }, + 'SHINY_CHARM': { name: 'Shiny Charm', description: 'Dramatically increases the chance of a wild Pokémon being Shiny' }, + 'ABILITY_CHARM': { name: 'Ability Charm', description: 'Dramatically increases the chance of a wild Pokémon having a Hidden Ability' }, - "IV_SCANNER": { name: "IV Scanner", description: "Allows scanning the IVs of wild Pokémon. 2 IVs are revealed per stack. The best IVs are shown first" }, + 'IV_SCANNER': { name: 'IV Scanner', description: 'Allows scanning the IVs of wild Pokémon. 2 IVs are revealed per stack. The best IVs are shown first' }, - "DNA_SPLICERS": { name: "DNA Splicers" }, + 'DNA_SPLICERS': { name: 'DNA Splicers' }, - "MINI_BLACK_HOLE": { name: "Mini Black Hole" }, + 'MINI_BLACK_HOLE': { name: 'Mini Black Hole' }, - "GOLDEN_POKEBALL": { name: "Golden Poké Ball", description: "Adds 1 extra item option at the end of every battle" }, + 'GOLDEN_POKEBALL': { name: 'Golden Poké Ball', description: 'Adds 1 extra item option at the end of every battle' }, - "ENEMY_DAMAGE_BOOSTER": { name: "Damage Token", description: "Increases damage by 5%" }, - "ENEMY_DAMAGE_REDUCTION": { name: "Protection Token", description: "Reduces incoming damage by 2.5%" }, - "ENEMY_HEAL": { name: "Recovery Token", description: "Heals 2% of max HP every turn" }, - "ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" }, - "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Sleep Token" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Freeze Token" }, - "ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Adds a 10% chance every turn to heal a status condition" }, - "ENEMY_ENDURE_CHANCE": { name: "Endure Token" }, - "ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Adds a 1% chance that a wild Pokémon will be a fusion" }, + 'ENEMY_DAMAGE_BOOSTER': { name: 'Damage Token', description: 'Increases damage by 5%' }, + 'ENEMY_DAMAGE_REDUCTION': { name: 'Protection Token', description: 'Reduces incoming damage by 2.5%' }, + 'ENEMY_HEAL': { name: 'Recovery Token', description: 'Heals 2% of max HP every turn' }, + 'ENEMY_ATTACK_POISON_CHANCE': { name: 'Poison Token' }, + 'ENEMY_ATTACK_PARALYZE_CHANCE': { name: 'Paralyze Token' }, + 'ENEMY_ATTACK_SLEEP_CHANCE': { name: 'Sleep Token' }, + 'ENEMY_ATTACK_FREEZE_CHANCE': { name: 'Freeze Token' }, + 'ENEMY_ATTACK_BURN_CHANCE': { name: 'Burn Token' }, + 'ENEMY_STATUS_EFFECT_HEAL_CHANCE': { name: 'Full Heal Token', description: 'Adds a 10% chance every turn to heal a status condition' }, + 'ENEMY_ENDURE_CHANCE': { name: 'Endure Token' }, + 'ENEMY_FUSED_CHANCE': { name: 'Fusion Token', description: 'Adds a 1% chance that a wild Pokémon will be a fusion' }, }, TempBattleStatBoosterItem: { - "x_attack": "X Attack", - "x_defense": "X Defense", - "x_sp_atk": "X Sp. Atk", - "x_sp_def": "X Sp. Def", - "x_speed": "X Speed", - "x_accuracy": "X Accuracy", - "dire_hit": "Dire Hit", + 'x_attack': 'X Attack', + 'x_defense': 'X Defense', + 'x_sp_atk': 'X Sp. Atk', + 'x_sp_def': 'X Sp. Def', + 'x_speed': 'X Speed', + 'x_accuracy': 'X Accuracy', + 'dire_hit': 'Dire Hit', }, AttackTypeBoosterItem: { - "silk_scarf": "Silk Scarf", - "black_belt": "Black Belt", - "sharp_beak": "Sharp Beak", - "poison_barb": "Poison Barb", - "soft_sand": "Soft Sand", - "hard_stone": "Hard Stone", - "silver_powder": "Silver Powder", - "spell_tag": "Spell Tag", - "metal_coat": "Metal Coat", - "charcoal": "Charcoal", - "mystic_water": "Mystic Water", - "miracle_seed": "Miracle Seed", - "magnet": "Magnet", - "twisted_spoon": "Twisted Spoon", - "never_melt_ice": "Never-Melt Ice", - "dragon_fang": "Dragon Fang", - "black_glasses": "Black Glasses", - "fairy_feather": "Fairy Feather", + 'silk_scarf': 'Silk Scarf', + 'black_belt': 'Black Belt', + 'sharp_beak': 'Sharp Beak', + 'poison_barb': 'Poison Barb', + 'soft_sand': 'Soft Sand', + 'hard_stone': 'Hard Stone', + 'silver_powder': 'Silver Powder', + 'spell_tag': 'Spell Tag', + 'metal_coat': 'Metal Coat', + 'charcoal': 'Charcoal', + 'mystic_water': 'Mystic Water', + 'miracle_seed': 'Miracle Seed', + 'magnet': 'Magnet', + 'twisted_spoon': 'Twisted Spoon', + 'never_melt_ice': 'Never-Melt Ice', + 'dragon_fang': 'Dragon Fang', + 'black_glasses': 'Black Glasses', + 'fairy_feather': 'Fairy Feather', }, BaseStatBoosterItem: { - "hp_up": "HP Up", - "protein": "Protein", - "iron": "Iron", - "calcium": "Calcium", - "zinc": "Zinc", - "carbos": "Carbos", + 'hp_up': 'HP Up', + 'protein': 'Protein', + 'iron': 'Iron', + 'calcium': 'Calcium', + 'zinc': 'Zinc', + 'carbos': 'Carbos', }, EvolutionItem: { - "NONE": "None", + 'NONE': 'None', - "LINKING_CORD": "Linking Cord", - "SUN_STONE": "Sun Stone", - "MOON_STONE": "Moon Stone", - "LEAF_STONE": "Leaf Stone", - "FIRE_STONE": "Fire Stone", - "WATER_STONE": "Water Stone", - "THUNDER_STONE": "Thunder Stone", - "ICE_STONE": "Ice Stone", - "DUSK_STONE": "Dusk Stone", - "DAWN_STONE": "Dawn Stone", - "SHINY_STONE": "Shiny Stone", - "CRACKED_POT": "Cracked Pot", - "SWEET_APPLE": "Sweet Apple", - "TART_APPLE": "Tart Apple", - "STRAWBERRY_SWEET": "Strawberry Sweet", - "UNREMARKABLE_TEACUP": "Unremarkable Teacup", + 'LINKING_CORD': 'Linking Cord', + 'SUN_STONE': 'Sun Stone', + 'MOON_STONE': 'Moon Stone', + 'LEAF_STONE': 'Leaf Stone', + 'FIRE_STONE': 'Fire Stone', + 'WATER_STONE': 'Water Stone', + 'THUNDER_STONE': 'Thunder Stone', + 'ICE_STONE': 'Ice Stone', + 'DUSK_STONE': 'Dusk Stone', + 'DAWN_STONE': 'Dawn Stone', + 'SHINY_STONE': 'Shiny Stone', + 'CRACKED_POT': 'Cracked Pot', + 'SWEET_APPLE': 'Sweet Apple', + 'TART_APPLE': 'Tart Apple', + 'STRAWBERRY_SWEET': 'Strawberry Sweet', + 'UNREMARKABLE_TEACUP': 'Unremarkable Teacup', - "CHIPPED_POT": "Chipped Pot", - "BLACK_AUGURITE": "Black Augurite", - "GALARICA_CUFF": "Galarica Cuff", - "GALARICA_WREATH": "Galarica Wreath", - "PEAT_BLOCK": "Peat Block", - "AUSPICIOUS_ARMOR": "Auspicious Armor", - "MALICIOUS_ARMOR": "Malicious Armor", - "MASTERPIECE_TEACUP": "Masterpiece Teacup", - "METAL_ALLOY": "Metal Alloy", - "SCROLL_OF_DARKNESS": "Scroll Of Darkness", - "SCROLL_OF_WATERS": "Scroll Of Waters", - "SYRUPY_APPLE": "Syrupy Apple", + 'CHIPPED_POT': 'Chipped Pot', + 'BLACK_AUGURITE': 'Black Augurite', + 'GALARICA_CUFF': 'Galarica Cuff', + 'GALARICA_WREATH': 'Galarica Wreath', + 'PEAT_BLOCK': 'Peat Block', + 'AUSPICIOUS_ARMOR': 'Auspicious Armor', + 'MALICIOUS_ARMOR': 'Malicious Armor', + 'MASTERPIECE_TEACUP': 'Masterpiece Teacup', + 'METAL_ALLOY': 'Metal Alloy', + 'SCROLL_OF_DARKNESS': 'Scroll Of Darkness', + 'SCROLL_OF_WATERS': 'Scroll Of Waters', + 'SYRUPY_APPLE': 'Syrupy Apple', }, FormChangeItem: { - "NONE": "None", + 'NONE': 'None', - "ABOMASITE": "Abomasite", - "ABSOLITE": "Absolite", - "AERODACTYLITE": "Aerodactylite", - "AGGRONITE": "Aggronite", - "ALAKAZITE": "Alakazite", - "ALTARIANITE": "Altarianite", - "AMPHAROSITE": "Ampharosite", - "AUDINITE": "Audinite", - "BANETTITE": "Banettite", - "BEEDRILLITE": "Beedrillite", - "BLASTOISINITE": "Blastoisinite", - "BLAZIKENITE": "Blazikenite", - "CAMERUPTITE": "Cameruptite", - "CHARIZARDITE_X": "Charizardite X", - "CHARIZARDITE_Y": "Charizardite Y", - "DIANCITE": "Diancite", - "GALLADITE": "Galladite", - "GARCHOMPITE": "Garchompite", - "GARDEVOIRITE": "Gardevoirite", - "GENGARITE": "Gengarite", - "GLALITITE": "Glalitite", - "GYARADOSITE": "Gyaradosite", - "HERACRONITE": "Heracronite", - "HOUNDOOMINITE": "Houndoominite", - "KANGASKHANITE": "Kangaskhanite", - "LATIASITE": "Latiasite", - "LATIOSITE": "Latiosite", - "LOPUNNITE": "Lopunnite", - "LUCARIONITE": "Lucarionite", - "MANECTITE": "Manectite", - "MAWILITE": "Mawilite", - "MEDICHAMITE": "Medichamite", - "METAGROSSITE": "Metagrossite", - "MEWTWONITE_X": "Mewtwonite X", - "MEWTWONITE_Y": "Mewtwonite Y", - "PIDGEOTITE": "Pidgeotite", - "PINSIRITE": "Pinsirite", - "RAYQUAZITE": "Rayquazite", - "SABLENITE": "Sablenite", - "SALAMENCITE": "Salamencite", - "SCEPTILITE": "Sceptilite", - "SCIZORITE": "Scizorite", - "SHARPEDONITE": "Sharpedonite", - "SLOWBRONITE": "Slowbronite", - "STEELIXITE": "Steelixite", - "SWAMPERTITE": "Swampertite", - "TYRANITARITE": "Tyranitarite", - "VENUSAURITE": "Venusaurite", + 'ABOMASITE': 'Abomasite', + 'ABSOLITE': 'Absolite', + 'AERODACTYLITE': 'Aerodactylite', + 'AGGRONITE': 'Aggronite', + 'ALAKAZITE': 'Alakazite', + 'ALTARIANITE': 'Altarianite', + 'AMPHAROSITE': 'Ampharosite', + 'AUDINITE': 'Audinite', + 'BANETTITE': 'Banettite', + 'BEEDRILLITE': 'Beedrillite', + 'BLASTOISINITE': 'Blastoisinite', + 'BLAZIKENITE': 'Blazikenite', + 'CAMERUPTITE': 'Cameruptite', + 'CHARIZARDITE_X': 'Charizardite X', + 'CHARIZARDITE_Y': 'Charizardite Y', + 'DIANCITE': 'Diancite', + 'GALLADITE': 'Galladite', + 'GARCHOMPITE': 'Garchompite', + 'GARDEVOIRITE': 'Gardevoirite', + 'GENGARITE': 'Gengarite', + 'GLALITITE': 'Glalitite', + 'GYARADOSITE': 'Gyaradosite', + 'HERACRONITE': 'Heracronite', + 'HOUNDOOMINITE': 'Houndoominite', + 'KANGASKHANITE': 'Kangaskhanite', + 'LATIASITE': 'Latiasite', + 'LATIOSITE': 'Latiosite', + 'LOPUNNITE': 'Lopunnite', + 'LUCARIONITE': 'Lucarionite', + 'MANECTITE': 'Manectite', + 'MAWILITE': 'Mawilite', + 'MEDICHAMITE': 'Medichamite', + 'METAGROSSITE': 'Metagrossite', + 'MEWTWONITE_X': 'Mewtwonite X', + 'MEWTWONITE_Y': 'Mewtwonite Y', + 'PIDGEOTITE': 'Pidgeotite', + 'PINSIRITE': 'Pinsirite', + 'RAYQUAZITE': 'Rayquazite', + 'SABLENITE': 'Sablenite', + 'SALAMENCITE': 'Salamencite', + 'SCEPTILITE': 'Sceptilite', + 'SCIZORITE': 'Scizorite', + 'SHARPEDONITE': 'Sharpedonite', + 'SLOWBRONITE': 'Slowbronite', + 'STEELIXITE': 'Steelixite', + 'SWAMPERTITE': 'Swampertite', + 'TYRANITARITE': 'Tyranitarite', + 'VENUSAURITE': 'Venusaurite', - "BLUE_ORB": "Blue Orb", - "RED_ORB": "Red Orb", - "SHARP_METEORITE": "Sharp Meteorite", - "HARD_METEORITE": "Hard Meteorite", - "SMOOTH_METEORITE": "Smooth Meteorite", - "ADAMANT_CRYSTAL": "Adamant Crystal", - "LUSTROUS_ORB": "Lustrous Orb", - "GRISEOUS_CORE": "Griseous Core", - "REVEAL_GLASS": "Reveal Glass", - "GRACIDEA": "Gracidea", - "MAX_MUSHROOMS": "Max Mushrooms", - "DARK_STONE": "Dark Stone", - "LIGHT_STONE": "Light Stone", - "PRISON_BOTTLE": "Prison Bottle", - "N_LUNARIZER": "N Lunarizer", - "N_SOLARIZER": "N Solarizer", - "RUSTED_SWORD": "Rusted Sword", - "RUSTED_SHIELD": "Rusted Shield", - "ICY_REINS_OF_UNITY": "Icy Reins Of Unity", - "SHADOW_REINS_OF_UNITY": "Shadow Reins Of Unity", - "WELLSPRING_MASK": "Wellspring Mask", - "HEARTHFLAME_MASK": "Hearthflame Mask", - "CORNERSTONE_MASK": "Cornerstone Mask", - "SHOCK_DRIVE": "Shock Drive", - "BURN_DRIVE": "Burn Drive", - "CHILL_DRIVE": "Chill Drive", - "DOUSE_DRIVE": "Douse Drive", + 'BLUE_ORB': 'Blue Orb', + 'RED_ORB': 'Red Orb', + 'SHARP_METEORITE': 'Sharp Meteorite', + 'HARD_METEORITE': 'Hard Meteorite', + 'SMOOTH_METEORITE': 'Smooth Meteorite', + 'ADAMANT_CRYSTAL': 'Adamant Crystal', + 'LUSTROUS_ORB': 'Lustrous Orb', + 'GRISEOUS_CORE': 'Griseous Core', + 'REVEAL_GLASS': 'Reveal Glass', + 'GRACIDEA': 'Gracidea', + 'MAX_MUSHROOMS': 'Max Mushrooms', + 'DARK_STONE': 'Dark Stone', + 'LIGHT_STONE': 'Light Stone', + 'PRISON_BOTTLE': 'Prison Bottle', + 'N_LUNARIZER': 'N Lunarizer', + 'N_SOLARIZER': 'N Solarizer', + 'RUSTED_SWORD': 'Rusted Sword', + 'RUSTED_SHIELD': 'Rusted Shield', + 'ICY_REINS_OF_UNITY': 'Icy Reins Of Unity', + 'SHADOW_REINS_OF_UNITY': 'Shadow Reins Of Unity', + 'WELLSPRING_MASK': 'Wellspring Mask', + 'HEARTHFLAME_MASK': 'Hearthflame Mask', + 'CORNERSTONE_MASK': 'Cornerstone Mask', + 'SHOCK_DRIVE': 'Shock Drive', + 'BURN_DRIVE': 'Burn Drive', + 'CHILL_DRIVE': 'Chill Drive', + 'DOUSE_DRIVE': 'Douse Drive', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/en/move.ts b/src/locales/en/move.ts index 11f92dda5a6..2c5e6245618 100644 --- a/src/locales/en/move.ts +++ b/src/locales/en/move.ts @@ -1,3812 +1,3812 @@ -import { MoveTranslationEntries } from "#app/plugins/i18n"; +import { MoveTranslationEntries } from '#app/plugins/i18n'; export const move: MoveTranslationEntries = { - "pound": { - name: "Pound", - effect: "The target is physically pounded with a long tail, a foreleg, or the like." + 'pound': { + name: 'Pound', + effect: 'The target is physically pounded with a long tail, a foreleg, or the like.' }, - "karateChop": { - name: "Karate Chop", - effect: "The target is attacked with a sharp chop. Critical hits land more easily." + 'karateChop': { + name: 'Karate Chop', + effect: 'The target is attacked with a sharp chop. Critical hits land more easily.' }, - "doubleSlap": { - name: "Double Slap", - effect: "The target is slapped repeatedly, back and forth, two to five times in a row." + 'doubleSlap': { + name: 'Double Slap', + effect: 'The target is slapped repeatedly, back and forth, two to five times in a row.' }, - "cometPunch": { - name: "Comet Punch", - effect: "The target is hit with a flurry of punches that strike two to five times in a row." + 'cometPunch': { + name: 'Comet Punch', + effect: 'The target is hit with a flurry of punches that strike two to five times in a row.' }, - "megaPunch": { - name: "Mega Punch", - effect: "The target is slugged by a punch thrown with muscle-packed power." + 'megaPunch': { + name: 'Mega Punch', + effect: 'The target is slugged by a punch thrown with muscle-packed power.' }, - "payDay": { - name: "Pay Day", - effect: "Numerous coins are hurled at the target to inflict damage. Money is earned after the battle." + 'payDay': { + name: 'Pay Day', + effect: 'Numerous coins are hurled at the target to inflict damage. Money is earned after the battle.' }, - "firePunch": { - name: "Fire Punch", - effect: "The target is punched with a fiery fist. This may also leave the target with a burn." + 'firePunch': { + name: 'Fire Punch', + effect: 'The target is punched with a fiery fist. This may also leave the target with a burn.' }, - "icePunch": { - name: "Ice Punch", - effect: "The target is punched with an icy fist. This may also leave the target frozen." + 'icePunch': { + name: 'Ice Punch', + effect: 'The target is punched with an icy fist. This may also leave the target frozen.' }, - "thunderPunch": { - name: "Thunder Punch", - effect: "The target is punched with an electrified fist. This may also leave the target with paralysis." + 'thunderPunch': { + name: 'Thunder Punch', + effect: 'The target is punched with an electrified fist. This may also leave the target with paralysis.' }, - "scratch": { - name: "Scratch", - effect: "Hard, pointed, sharp claws rake the target to inflict damage." + 'scratch': { + name: 'Scratch', + effect: 'Hard, pointed, sharp claws rake the target to inflict damage.' }, - "viseGrip": { - name: "Vise Grip", - effect: "The target is gripped and squeezed from both sides to inflict damage." + 'viseGrip': { + name: 'Vise Grip', + effect: 'The target is gripped and squeezed from both sides to inflict damage.' }, - "guillotine": { - name: "Guillotine", - effect: "A vicious, tearing attack with big pincers. The target faints instantly if this attack hits." + 'guillotine': { + name: 'Guillotine', + effect: 'A vicious, tearing attack with big pincers. The target faints instantly if this attack hits.' }, - "razorWind": { - name: "Razor Wind", - effect: "In this two-turn attack, blades of wind hit opposing Pokémon on the second turn. Critical hits land more easily." + 'razorWind': { + name: 'Razor Wind', + effect: 'In this two-turn attack, blades of wind hit opposing Pokémon on the second turn. Critical hits land more easily.' }, - "swordsDance": { - name: "Swords Dance", - effect: "A frenetic dance to uplift the fighting spirit. This sharply raises the user's Attack stat." + 'swordsDance': { + name: 'Swords Dance', + effect: 'A frenetic dance to uplift the fighting spirit. This sharply raises the user\'s Attack stat.' }, - "cut": { - name: "Cut", - effect: "The target is cut with a scythe or claw." + 'cut': { + name: 'Cut', + effect: 'The target is cut with a scythe or claw.' }, - "gust": { - name: "Gust", - effect: "A gust of wind is whipped up by wings and launched at the target to inflict damage." + 'gust': { + name: 'Gust', + effect: 'A gust of wind is whipped up by wings and launched at the target to inflict damage.' }, - "wingAttack": { - name: "Wing Attack", - effect: "The target is struck with large, imposing wings spread wide to inflict damage." + 'wingAttack': { + name: 'Wing Attack', + effect: 'The target is struck with large, imposing wings spread wide to inflict damage.' }, - "whirlwind": { - name: "Whirlwind", - effect: "The target is blown away, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon." + 'whirlwind': { + name: 'Whirlwind', + effect: 'The target is blown away, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon.' }, - "fly": { - name: "Fly", - effect: "The user flies up into the sky and then strikes its target on the next turn." + 'fly': { + name: 'Fly', + effect: 'The user flies up into the sky and then strikes its target on the next turn.' }, - "bind": { - name: "Bind", - effect: "Things such as long bodies or tentacles are used to bind and squeeze the target for four to five turns." + 'bind': { + name: 'Bind', + effect: 'Things such as long bodies or tentacles are used to bind and squeeze the target for four to five turns.' }, - "slam": { - name: "Slam", - effect: "The target is slammed with a long tail, vines, or the like to inflict damage." + 'slam': { + name: 'Slam', + effect: 'The target is slammed with a long tail, vines, or the like to inflict damage.' }, - "vineWhip": { - name: "Vine Whip", - effect: "The target is struck with slender, whiplike vines to inflict damage." + 'vineWhip': { + name: 'Vine Whip', + effect: 'The target is struck with slender, whiplike vines to inflict damage.' }, - "stomp": { - name: "Stomp", - effect: "The target is stomped with a big foot. This may also make the target flinch." + 'stomp': { + name: 'Stomp', + effect: 'The target is stomped with a big foot. This may also make the target flinch.' }, - "doubleKick": { - name: "Double Kick", - effect: "The target is quickly kicked twice in succession using both feet." + 'doubleKick': { + name: 'Double Kick', + effect: 'The target is quickly kicked twice in succession using both feet.' }, - "megaKick": { - name: "Mega Kick", - effect: "The target is attacked by a kick launched with muscle-packed power." + 'megaKick': { + name: 'Mega Kick', + effect: 'The target is attacked by a kick launched with muscle-packed power.' }, - "jumpKick": { - name: "Jump Kick", - effect: "The user jumps up high, then strikes with a kick. If the kick misses, the user hurts itself." + 'jumpKick': { + name: 'Jump Kick', + effect: 'The user jumps up high, then strikes with a kick. If the kick misses, the user hurts itself.' }, - "rollingKick": { - name: "Rolling Kick", - effect: "The user lashes out with a quick, spinning kick. This may also make the target flinch." + 'rollingKick': { + name: 'Rolling Kick', + effect: 'The user lashes out with a quick, spinning kick. This may also make the target flinch.' }, - "sandAttack": { - name: "Sand Attack", - effect: "Sand is hurled in the target's face, reducing the target's accuracy." + 'sandAttack': { + name: 'Sand Attack', + effect: 'Sand is hurled in the target\'s face, reducing the target\'s accuracy.' }, - "headbutt": { - name: "Headbutt", - effect: "The user sticks out its head and attacks by charging straight into the target. This may also make the target flinch." + 'headbutt': { + name: 'Headbutt', + effect: 'The user sticks out its head and attacks by charging straight into the target. This may also make the target flinch.' }, - "hornAttack": { - name: "Horn Attack", - effect: "The target is jabbed with a sharply pointed horn to inflict damage." + 'hornAttack': { + name: 'Horn Attack', + effect: 'The target is jabbed with a sharply pointed horn to inflict damage.' }, - "furyAttack": { - name: "Fury Attack", - effect: "The target is jabbed repeatedly with a horn or beak two to five times in a row." + 'furyAttack': { + name: 'Fury Attack', + effect: 'The target is jabbed repeatedly with a horn or beak two to five times in a row.' }, - "hornDrill": { - name: "Horn Drill", - effect: "The user stabs the target with a horn that rotates like a drill. The target faints instantly if this attack hits." + 'hornDrill': { + name: 'Horn Drill', + effect: 'The user stabs the target with a horn that rotates like a drill. The target faints instantly if this attack hits.' }, - "tackle": { - name: "Tackle", - effect: "A physical attack in which the user charges and slams into the target with its whole body." + 'tackle': { + name: 'Tackle', + effect: 'A physical attack in which the user charges and slams into the target with its whole body.' }, - "bodySlam": { - name: "Body Slam", - effect: "The user drops onto the target with its full body weight. This may also leave the target with paralysis." + 'bodySlam': { + name: 'Body Slam', + effect: 'The user drops onto the target with its full body weight. This may also leave the target with paralysis.' }, - "wrap": { - name: "Wrap", - effect: "A long body, vines, or the like are used to wrap and squeeze the target for four to five turns." + 'wrap': { + name: 'Wrap', + effect: 'A long body, vines, or the like are used to wrap and squeeze the target for four to five turns.' }, - "takeDown": { - name: "Take Down", - effect: "A reckless, full-body charge attack for slamming into the target. This also damages the user a little." + 'takeDown': { + name: 'Take Down', + effect: 'A reckless, full-body charge attack for slamming into the target. This also damages the user a little.' }, - "thrash": { - name: "Thrash", - effect: "The user rampages and attacks for two to three turns. The user then becomes confused." + 'thrash': { + name: 'Thrash', + effect: 'The user rampages and attacks for two to three turns. The user then becomes confused.' }, - "doubleEdge": { - name: "Double-Edge", - effect: "A reckless, life-risking tackle in which the user rushes the target. This also damages the user quite a lot." + 'doubleEdge': { + name: 'Double-Edge', + effect: 'A reckless, life-risking tackle in which the user rushes the target. This also damages the user quite a lot.' }, - "tailWhip": { - name: "Tail Whip", - effect: "The user wags its tail cutely, making opposing Pokémon less wary and lowering their Defense stats." + 'tailWhip': { + name: 'Tail Whip', + effect: 'The user wags its tail cutely, making opposing Pokémon less wary and lowering their Defense stats.' }, - "poisonSting": { - name: "Poison Sting", - effect: "The user stabs the target with a poisonous stinger. This may also poison the target." + 'poisonSting': { + name: 'Poison Sting', + effect: 'The user stabs the target with a poisonous stinger. This may also poison the target.' }, - "twineedle": { - name: "Twineedle", - effect: "The user damages the target twice in succession by jabbing it with two spikes. This may also poison the target." + 'twineedle': { + name: 'Twineedle', + effect: 'The user damages the target twice in succession by jabbing it with two spikes. This may also poison the target.' }, - "pinMissile": { - name: "Pin Missile", - effect: "Sharp spikes are shot at the target in rapid succession. They hit two to five times in a row." + 'pinMissile': { + name: 'Pin Missile', + effect: 'Sharp spikes are shot at the target in rapid succession. They hit two to five times in a row.' }, - "leer": { - name: "Leer", - effect: "The user gives opposing Pokémon an intimidating leer that lowers the Defense stat." + 'leer': { + name: 'Leer', + effect: 'The user gives opposing Pokémon an intimidating leer that lowers the Defense stat.' }, - "bite": { - name: "Bite", - effect: "The target is bitten with viciously sharp fangs. This may also make the target flinch." + 'bite': { + name: 'Bite', + effect: 'The target is bitten with viciously sharp fangs. This may also make the target flinch.' }, - "growl": { - name: "Growl", - effect: "The user growls in an endearing way, making opposing Pokémon less wary. This lowers their Attack stats." + 'growl': { + name: 'Growl', + effect: 'The user growls in an endearing way, making opposing Pokémon less wary. This lowers their Attack stats.' }, - "roar": { - name: "Roar", - effect: "The target is scared off, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon." + 'roar': { + name: 'Roar', + effect: 'The target is scared off, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon.' }, - "sing": { - name: "Sing", - effect: "A soothing lullaby is sung in a calming voice that puts the target into a deep slumber." + 'sing': { + name: 'Sing', + effect: 'A soothing lullaby is sung in a calming voice that puts the target into a deep slumber.' }, - "supersonic": { - name: "Supersonic", - effect: "The user generates odd sound waves from its body that confuse the target." + 'supersonic': { + name: 'Supersonic', + effect: 'The user generates odd sound waves from its body that confuse the target.' }, - "sonicBoom": { - name: "Sonic Boom", - effect: "The target is hit with a destructive shock wave that always inflicts 20 HP damage." + 'sonicBoom': { + name: 'Sonic Boom', + effect: 'The target is hit with a destructive shock wave that always inflicts 20 HP damage.' }, - "disable": { - name: "Disable", - effect: "For four turns, this move prevents the target from using the move it last used." + 'disable': { + name: 'Disable', + effect: 'For four turns, this move prevents the target from using the move it last used.' }, - "acid": { - name: "Acid", - effect: "Opposing Pokémon are attacked with a spray of harsh acid. This may also lower their Sp. Def stats." + 'acid': { + name: 'Acid', + effect: 'Opposing Pokémon are attacked with a spray of harsh acid. This may also lower their Sp. Def stats.' }, - "ember": { - name: "Ember", - effect: "The target is attacked with small flames. This may also leave the target with a burn." + 'ember': { + name: 'Ember', + effect: 'The target is attacked with small flames. This may also leave the target with a burn.' }, - "flamethrower": { - name: "Flamethrower", - effect: "The target is scorched with an intense blast of fire. This may also leave the target with a burn." + 'flamethrower': { + name: 'Flamethrower', + effect: 'The target is scorched with an intense blast of fire. This may also leave the target with a burn.' }, - "mist": { - name: "Mist", - effect: "The user cloaks itself and its allies in a white mist that prevents any of their stats from being lowered for five turns." + 'mist': { + name: 'Mist', + effect: 'The user cloaks itself and its allies in a white mist that prevents any of their stats from being lowered for five turns.' }, - "waterGun": { - name: "Water Gun", - effect: "The target is blasted with a forceful shot of water." + 'waterGun': { + name: 'Water Gun', + effect: 'The target is blasted with a forceful shot of water.' }, - "hydroPump": { - name: "Hydro Pump", - effect: "The target is blasted by a huge volume of water launched under great pressure." + 'hydroPump': { + name: 'Hydro Pump', + effect: 'The target is blasted by a huge volume of water launched under great pressure.' }, - "surf": { - name: "Surf", - effect: "The user attacks everything around it by swamping its surroundings with a giant wave." + 'surf': { + name: 'Surf', + effect: 'The user attacks everything around it by swamping its surroundings with a giant wave.' }, - "iceBeam": { - name: "Ice Beam", - effect: "The target is struck with an icy-cold beam of energy. This may also leave the target frozen." + 'iceBeam': { + name: 'Ice Beam', + effect: 'The target is struck with an icy-cold beam of energy. This may also leave the target frozen.' }, - "blizzard": { - name: "Blizzard", - effect: "A howling blizzard is summoned to strike opposing Pokémon. This may also leave the opposing Pokémon frozen." + 'blizzard': { + name: 'Blizzard', + effect: 'A howling blizzard is summoned to strike opposing Pokémon. This may also leave the opposing Pokémon frozen.' }, - "psybeam": { - name: "Psybeam", - effect: "The target is attacked with a peculiar ray. This may also leave the target confused." + 'psybeam': { + name: 'Psybeam', + effect: 'The target is attacked with a peculiar ray. This may also leave the target confused.' }, - "bubbleBeam": { - name: "Bubble Beam", - effect: "A spray of bubbles is forcefully ejected at the target. This may also lower the target's Speed stat." + 'bubbleBeam': { + name: 'Bubble Beam', + effect: 'A spray of bubbles is forcefully ejected at the target. This may also lower the target\'s Speed stat.' }, - "auroraBeam": { - name: "Aurora Beam", - effect: "The target is hit with a rainbow-colored beam. This may also lower the target's Attack stat." + 'auroraBeam': { + name: 'Aurora Beam', + effect: 'The target is hit with a rainbow-colored beam. This may also lower the target\'s Attack stat.' }, - "hyperBeam": { - name: "Hyper Beam", - effect: "The target is attacked with a powerful beam. The user can't move on the next turn." + 'hyperBeam': { + name: 'Hyper Beam', + effect: 'The target is attacked with a powerful beam. The user can\'t move on the next turn.' }, - "peck": { - name: "Peck", - effect: "The target is jabbed with a sharply pointed beak or horn." + 'peck': { + name: 'Peck', + effect: 'The target is jabbed with a sharply pointed beak or horn.' }, - "drillPeck": { - name: "Drill Peck", - effect: "A corkscrewing attack that strikes the target with a sharp beak acting as a drill." + 'drillPeck': { + name: 'Drill Peck', + effect: 'A corkscrewing attack that strikes the target with a sharp beak acting as a drill.' }, - "submission": { - name: "Submission", - effect: "The user grabs the target and recklessly dives for the ground. This also damages the user a little." + 'submission': { + name: 'Submission', + effect: 'The user grabs the target and recklessly dives for the ground. This also damages the user a little.' }, - "lowKick": { - name: "Low Kick", - effect: "A powerful low kick that makes the target fall over. The heavier the target, the greater the move's power." + 'lowKick': { + name: 'Low Kick', + effect: 'A powerful low kick that makes the target fall over. The heavier the target, the greater the move\'s power.' }, - "counter": { - name: "Counter", - effect: "A retaliation move that counters any physical attack, inflicting double the damage taken." + 'counter': { + name: 'Counter', + effect: 'A retaliation move that counters any physical attack, inflicting double the damage taken.' }, - "seismicToss": { - name: "Seismic Toss", - effect: "The target is thrown using the power of gravity. It inflicts damage equal to the user's level." + 'seismicToss': { + name: 'Seismic Toss', + effect: 'The target is thrown using the power of gravity. It inflicts damage equal to the user\'s level.' }, - "strength": { - name: "Strength", - effect: "The target is slugged with a punch thrown at maximum power." + 'strength': { + name: 'Strength', + effect: 'The target is slugged with a punch thrown at maximum power.' }, - "absorb": { - name: "Absorb", - effect: "A nutrient-draining attack. The user's HP is restored by half the damage taken by the target." + 'absorb': { + name: 'Absorb', + effect: 'A nutrient-draining attack. The user\'s HP is restored by half the damage taken by the target.' }, - "megaDrain": { - name: "Mega Drain", - effect: "A nutrient-draining attack. The user's HP is restored by half the damage taken by the target." + 'megaDrain': { + name: 'Mega Drain', + effect: 'A nutrient-draining attack. The user\'s HP is restored by half the damage taken by the target.' }, - "leechSeed": { - name: "Leech Seed", - effect: "A seed is planted on the target. It steals some HP from the target every turn." + 'leechSeed': { + name: 'Leech Seed', + effect: 'A seed is planted on the target. It steals some HP from the target every turn.' }, - "growth": { - name: "Growth", - effect: "The user's body grows all at once, raising the Attack and Sp. Atk stats." + 'growth': { + name: 'Growth', + effect: 'The user\'s body grows all at once, raising the Attack and Sp. Atk stats.' }, - "razorLeaf": { - name: "Razor Leaf", - effect: "Sharp-edged leaves are launched to slash at opposing Pokémon. Critical hits land more easily." + 'razorLeaf': { + name: 'Razor Leaf', + effect: 'Sharp-edged leaves are launched to slash at opposing Pokémon. Critical hits land more easily.' }, - "solarBeam": { - name: "Solar Beam", - effect: "In this two-turn attack, the user gathers light, then blasts a bundled beam on the next turn." + 'solarBeam': { + name: 'Solar Beam', + effect: 'In this two-turn attack, the user gathers light, then blasts a bundled beam on the next turn.' }, - "poisonPowder": { - name: "Poison Powder", - effect: "The user scatters a cloud of poisonous dust that poisons the target." + 'poisonPowder': { + name: 'Poison Powder', + effect: 'The user scatters a cloud of poisonous dust that poisons the target.' }, - "stunSpore": { - name: "Stun Spore", - effect: "The user scatters a cloud of numbing powder that paralyzes the target." + 'stunSpore': { + name: 'Stun Spore', + effect: 'The user scatters a cloud of numbing powder that paralyzes the target.' }, - "sleepPowder": { - name: "Sleep Powder", - effect: "The user scatters a big cloud of sleep-inducing dust around the target." + 'sleepPowder': { + name: 'Sleep Powder', + effect: 'The user scatters a big cloud of sleep-inducing dust around the target.' }, - "petalDance": { - name: "Petal Dance", - effect: "The user attacks the target by scattering petals for two to three turns. The user then becomes confused." + 'petalDance': { + name: 'Petal Dance', + effect: 'The user attacks the target by scattering petals for two to three turns. The user then becomes confused.' }, - "stringShot": { - name: "String Shot", - effect: "Opposing Pokémon are bound with silk blown from the user's mouth that harshly lowers the Speed stat." + 'stringShot': { + name: 'String Shot', + effect: 'Opposing Pokémon are bound with silk blown from the user\'s mouth that harshly lowers the Speed stat.' }, - "dragonRage": { - name: "Dragon Rage", - effect: "This attack hits the target with a shock wave of pure rage. This attack always inflicts 40 HP damage." + 'dragonRage': { + name: 'Dragon Rage', + effect: 'This attack hits the target with a shock wave of pure rage. This attack always inflicts 40 HP damage.' }, - "fireSpin": { - name: "Fire Spin", - effect: "The target becomes trapped within a fierce vortex of fire that rages for four to five turns." + 'fireSpin': { + name: 'Fire Spin', + effect: 'The target becomes trapped within a fierce vortex of fire that rages for four to five turns.' }, - "thunderShock": { - name: "Thunder Shock", - effect: "A jolt of electricity crashes down on the target to inflict damage. This may also leave the target with paralysis." + 'thunderShock': { + name: 'Thunder Shock', + effect: 'A jolt of electricity crashes down on the target to inflict damage. This may also leave the target with paralysis.' }, - "thunderbolt": { - name: "Thunderbolt", - effect: "A strong electric blast crashes down on the target. This may also leave the target with paralysis." + 'thunderbolt': { + name: 'Thunderbolt', + effect: 'A strong electric blast crashes down on the target. This may also leave the target with paralysis.' }, - "thunderWave": { - name: "Thunder Wave", - effect: "The user launches a weak jolt of electricity that paralyzes the target." + 'thunderWave': { + name: 'Thunder Wave', + effect: 'The user launches a weak jolt of electricity that paralyzes the target.' }, - "thunder": { - name: "Thunder", - effect: "A wicked thunderbolt is dropped on the target to inflict damage. This may also leave the target with paralysis." + 'thunder': { + name: 'Thunder', + effect: 'A wicked thunderbolt is dropped on the target to inflict damage. This may also leave the target with paralysis.' }, - "rockThrow": { - name: "Rock Throw", - effect: "The user picks up and throws a small rock at the target to attack." + 'rockThrow': { + name: 'Rock Throw', + effect: 'The user picks up and throws a small rock at the target to attack.' }, - "earthquake": { - name: "Earthquake", - effect: "The user sets off an earthquake that strikes every Pokémon around it." + 'earthquake': { + name: 'Earthquake', + effect: 'The user sets off an earthquake that strikes every Pokémon around it.' }, - "fissure": { - name: "Fissure", - effect: "The user opens up a fissure in the ground and drops the target in. The target faints instantly if this attack hits." + 'fissure': { + name: 'Fissure', + effect: 'The user opens up a fissure in the ground and drops the target in. The target faints instantly if this attack hits.' }, - "dig": { - name: "Dig", - effect: "The user burrows into the ground, then attacks on the next turn." + 'dig': { + name: 'Dig', + effect: 'The user burrows into the ground, then attacks on the next turn.' }, - "toxic": { - name: "Toxic", - effect: "A move that leaves the target badly poisoned. Its poison damage worsens every turn." + 'toxic': { + name: 'Toxic', + effect: 'A move that leaves the target badly poisoned. Its poison damage worsens every turn.' }, - "confusion": { - name: "Confusion", - effect: "The target is hit by a weak telekinetic force. This may also confuse the target." + 'confusion': { + name: 'Confusion', + effect: 'The target is hit by a weak telekinetic force. This may also confuse the target.' }, - "psychic": { - name: "Psychic", - effect: "The target is hit by a strong telekinetic force. This may also lower the target's Sp. Def stat." + 'psychic': { + name: 'Psychic', + effect: 'The target is hit by a strong telekinetic force. This may also lower the target\'s Sp. Def stat.' }, - "hypnosis": { - name: "Hypnosis", - effect: "The user employs hypnotic suggestion to make the target fall into a deep sleep." + 'hypnosis': { + name: 'Hypnosis', + effect: 'The user employs hypnotic suggestion to make the target fall into a deep sleep.' }, - "meditate": { - name: "Meditate", - effect: "The user meditates to awaken the power deep within its body and raise its Attack stat." + 'meditate': { + name: 'Meditate', + effect: 'The user meditates to awaken the power deep within its body and raise its Attack stat.' }, - "agility": { - name: "Agility", - effect: "The user relaxes and lightens its body to move faster. This sharply raises the Speed stat." + 'agility': { + name: 'Agility', + effect: 'The user relaxes and lightens its body to move faster. This sharply raises the Speed stat.' }, - "quickAttack": { - name: "Quick Attack", - effect: "The user lunges at the target at a speed that makes it almost invisible. This move always goes first." + 'quickAttack': { + name: 'Quick Attack', + effect: 'The user lunges at the target at a speed that makes it almost invisible. This move always goes first.' }, - "rage": { - name: "Rage", - effect: "As long as this move is in use, the power of rage raises the Attack stat each time the user is hit in battle." + 'rage': { + name: 'Rage', + effect: 'As long as this move is in use, the power of rage raises the Attack stat each time the user is hit in battle.' }, - "teleport": { - name: "Teleport", - effect: "The user switches places with a party Pokémon in waiting, if any. If a wild Pokémon uses this move, it flees." + 'teleport': { + name: 'Teleport', + effect: 'The user switches places with a party Pokémon in waiting, if any. If a wild Pokémon uses this move, it flees.' }, - "nightShade": { - name: "Night Shade", - effect: "The user makes the target see a frightening mirage. It inflicts damage equal to the user's level." + 'nightShade': { + name: 'Night Shade', + effect: 'The user makes the target see a frightening mirage. It inflicts damage equal to the user\'s level.' }, - "mimic": { - name: "Mimic", - effect: "The user copies the target's last move. The move can be used during battle until the Pokémon is switched out." + 'mimic': { + name: 'Mimic', + effect: 'The user copies the target\'s last move. The move can be used during battle until the Pokémon is switched out.' }, - "screech": { - name: "Screech", - effect: "An earsplitting screech harshly lowers the target's Defense stat." + 'screech': { + name: 'Screech', + effect: 'An earsplitting screech harshly lowers the target\'s Defense stat.' }, - "doubleTeam": { - name: "Double Team", - effect: "By moving rapidly, the user makes illusory copies of itself to raise its evasiveness." + 'doubleTeam': { + name: 'Double Team', + effect: 'By moving rapidly, the user makes illusory copies of itself to raise its evasiveness.' }, - "recover": { - name: "Recover", - effect: "Restoring its own cells, the user restores its own HP by half of its max HP." + 'recover': { + name: 'Recover', + effect: 'Restoring its own cells, the user restores its own HP by half of its max HP.' }, - "harden": { - name: "Harden", - effect: "The user stiffens all the muscles in its body to raise its Defense stat." + 'harden': { + name: 'Harden', + effect: 'The user stiffens all the muscles in its body to raise its Defense stat.' }, - "minimize": { - name: "Minimize", - effect: "The user compresses its body to make itself look smaller, which sharply raises its evasiveness." + 'minimize': { + name: 'Minimize', + effect: 'The user compresses its body to make itself look smaller, which sharply raises its evasiveness.' }, - "smokescreen": { - name: "Smokescreen", - effect: "The user releases an obscuring cloud of smoke or ink. This lowers the target's accuracy." + 'smokescreen': { + name: 'Smokescreen', + effect: 'The user releases an obscuring cloud of smoke or ink. This lowers the target\'s accuracy.' }, - "confuseRay": { - name: "Confuse Ray", - effect: "The target is exposed to a sinister ray that triggers confusion." + 'confuseRay': { + name: 'Confuse Ray', + effect: 'The target is exposed to a sinister ray that triggers confusion.' }, - "withdraw": { - name: "Withdraw", - effect: "The user withdraws its body into its hard shell, raising its Defense stat." + 'withdraw': { + name: 'Withdraw', + effect: 'The user withdraws its body into its hard shell, raising its Defense stat.' }, - "defenseCurl": { - name: "Defense Curl", - effect: "The user curls up to conceal weak spots and raise its Defense stat." + 'defenseCurl': { + name: 'Defense Curl', + effect: 'The user curls up to conceal weak spots and raise its Defense stat.' }, - "barrier": { - name: "Barrier", - effect: "The user throws up a sturdy wall that sharply raises its Defense stat." + 'barrier': { + name: 'Barrier', + effect: 'The user throws up a sturdy wall that sharply raises its Defense stat.' }, - "lightScreen": { - name: "Light Screen", - effect: "A wondrous wall of light is put up to reduce damage from special attacks for five turns." + 'lightScreen': { + name: 'Light Screen', + effect: 'A wondrous wall of light is put up to reduce damage from special attacks for five turns.' }, - "haze": { - name: "Haze", - effect: "The user creates a haze that eliminates every stat change among all the Pokémon engaged in battle." + 'haze': { + name: 'Haze', + effect: 'The user creates a haze that eliminates every stat change among all the Pokémon engaged in battle.' }, - "reflect": { - name: "Reflect", - effect: "A wondrous wall of light is put up to reduce damage from physical attacks for five turns." + 'reflect': { + name: 'Reflect', + effect: 'A wondrous wall of light is put up to reduce damage from physical attacks for five turns.' }, - "focusEnergy": { - name: "Focus Energy", - effect: "The user takes a deep breath and focuses so that critical hits land more easily." + 'focusEnergy': { + name: 'Focus Energy', + effect: 'The user takes a deep breath and focuses so that critical hits land more easily.' }, - "bide": { - name: "Bide", - effect: "The user endures attacks for two turns, then strikes back to cause double the damage taken." + 'bide': { + name: 'Bide', + effect: 'The user endures attacks for two turns, then strikes back to cause double the damage taken.' }, - "metronome": { - name: "Metronome", - effect: "The user waggles a finger and stimulates its brain into randomly using nearly any move." + 'metronome': { + name: 'Metronome', + effect: 'The user waggles a finger and stimulates its brain into randomly using nearly any move.' }, - "mirrorMove": { - name: "Mirror Move", - effect: "The user counters the target by mimicking the target's last move." + 'mirrorMove': { + name: 'Mirror Move', + effect: 'The user counters the target by mimicking the target\'s last move.' }, - "selfDestruct": { - name: "Self-Destruct", - effect: "The user attacks everything around it by causing an explosion. The user faints upon using this move." + 'selfDestruct': { + name: 'Self-Destruct', + effect: 'The user attacks everything around it by causing an explosion. The user faints upon using this move.' }, - "eggBomb": { - name: "Egg Bomb", - effect: "A large egg is hurled at the target with maximum force to inflict damage." + 'eggBomb': { + name: 'Egg Bomb', + effect: 'A large egg is hurled at the target with maximum force to inflict damage.' }, - "lick": { - name: "Lick", - effect: "The target is licked with a long tongue, causing damage. This may also leave the target with paralysis." + 'lick': { + name: 'Lick', + effect: 'The target is licked with a long tongue, causing damage. This may also leave the target with paralysis.' }, - "smog": { - name: "Smog", - effect: "The target is attacked with a discharge of filthy gases. This may also poison the target." + 'smog': { + name: 'Smog', + effect: 'The target is attacked with a discharge of filthy gases. This may also poison the target.' }, - "sludge": { - name: "Sludge", - effect: "Unsanitary sludge is hurled at the target. This may also poison the target." + 'sludge': { + name: 'Sludge', + effect: 'Unsanitary sludge is hurled at the target. This may also poison the target.' }, - "boneClub": { - name: "Bone Club", - effect: "The user clubs the target with a bone. This may also make the target flinch." + 'boneClub': { + name: 'Bone Club', + effect: 'The user clubs the target with a bone. This may also make the target flinch.' }, - "fireBlast": { - name: "Fire Blast", - effect: "The target is attacked with an intense blast of all-consuming fire. This may also leave the target with a burn." + 'fireBlast': { + name: 'Fire Blast', + effect: 'The target is attacked with an intense blast of all-consuming fire. This may also leave the target with a burn.' }, - "waterfall": { - name: "Waterfall", - effect: "The user charges at the target and may make it flinch." + 'waterfall': { + name: 'Waterfall', + effect: 'The user charges at the target and may make it flinch.' }, - "clamp": { - name: "Clamp", - effect: "The target is clamped and squeezed by the user's very thick and sturdy shell for four to five turns." + 'clamp': { + name: 'Clamp', + effect: 'The target is clamped and squeezed by the user\'s very thick and sturdy shell for four to five turns.' }, - "swift": { - name: "Swift", - effect: "Star-shaped rays are shot at opposing Pokémon. This attack never misses." + 'swift': { + name: 'Swift', + effect: 'Star-shaped rays are shot at opposing Pokémon. This attack never misses.' }, - "skullBash": { - name: "Skull Bash", - effect: "The user tucks in its head to raise its Defense stat on the first turn, then rams the target on the next turn." + 'skullBash': { + name: 'Skull Bash', + effect: 'The user tucks in its head to raise its Defense stat on the first turn, then rams the target on the next turn.' }, - "spikeCannon": { - name: "Spike Cannon", - effect: "Sharp spikes are shot at the target in rapid succession. They hit two to five times in a row." + 'spikeCannon': { + name: 'Spike Cannon', + effect: 'Sharp spikes are shot at the target in rapid succession. They hit two to five times in a row.' }, - "constrict": { - name: "Constrict", - effect: "The target is attacked with long, creeping tentacles, vines, or the like. This may also lower the target's Speed stat." + 'constrict': { + name: 'Constrict', + effect: 'The target is attacked with long, creeping tentacles, vines, or the like. This may also lower the target\'s Speed stat.' }, - "amnesia": { - name: "Amnesia", - effect: "The user temporarily empties its mind to forget its concerns. This sharply raises the user's Sp. Def stat." + 'amnesia': { + name: 'Amnesia', + effect: 'The user temporarily empties its mind to forget its concerns. This sharply raises the user\'s Sp. Def stat.' }, - "kinesis": { - name: "Kinesis", - effect: "The user distracts the target by bending a spoon. This lowers the target's accuracy." + 'kinesis': { + name: 'Kinesis', + effect: 'The user distracts the target by bending a spoon. This lowers the target\'s accuracy.' }, - "softBoiled": { - name: "Soft-Boiled", - effect: "The user restores its own HP by up to half of its max HP." + 'softBoiled': { + name: 'Soft-Boiled', + effect: 'The user restores its own HP by up to half of its max HP.' }, - "highJumpKick": { - name: "High Jump Kick", - effect: "The target is attacked with a knee kick from a jump. If it misses, the user is hurt instead." + 'highJumpKick': { + name: 'High Jump Kick', + effect: 'The target is attacked with a knee kick from a jump. If it misses, the user is hurt instead.' }, - "glare": { - name: "Glare", - effect: "The user intimidates the target with the pattern on its belly to cause paralysis." + 'glare': { + name: 'Glare', + effect: 'The user intimidates the target with the pattern on its belly to cause paralysis.' }, - "dreamEater": { - name: "Dream Eater", - effect: "The user eats the dreams of a sleeping target. The user's HP is restored by half the damage taken by the target." + 'dreamEater': { + name: 'Dream Eater', + effect: 'The user eats the dreams of a sleeping target. The user\'s HP is restored by half the damage taken by the target.' }, - "poisonGas": { - name: "Poison Gas", - effect: "A cloud of poison gas is sprayed in the face of opposing Pokémon, poisoning those it hits." + 'poisonGas': { + name: 'Poison Gas', + effect: 'A cloud of poison gas is sprayed in the face of opposing Pokémon, poisoning those it hits.' }, - "barrage": { - name: "Barrage", - effect: "Round objects are hurled at the target to strike two to five times in a row." + 'barrage': { + name: 'Barrage', + effect: 'Round objects are hurled at the target to strike two to five times in a row.' }, - "leechLife": { - name: "Leech Life", - effect: "The user drains the target's blood. The user's HP is restored by half the damage taken by the target." + 'leechLife': { + name: 'Leech Life', + effect: 'The user drains the target\'s blood. The user\'s HP is restored by half the damage taken by the target.' }, - "lovelyKiss": { - name: "Lovely Kiss", - effect: "With a scary face, the user tries to force a kiss on the target. If it succeeds, the target falls asleep." + 'lovelyKiss': { + name: 'Lovely Kiss', + effect: 'With a scary face, the user tries to force a kiss on the target. If it succeeds, the target falls asleep.' }, - "skyAttack": { - name: "Sky Attack", - effect: "A second-turn attack move where critical hits land more easily. This may also make the target flinch." + 'skyAttack': { + name: 'Sky Attack', + effect: 'A second-turn attack move where critical hits land more easily. This may also make the target flinch.' }, - "transform": { - name: "Transform", - effect: "The user transforms into a copy of the target right down to having the same move set." + 'transform': { + name: 'Transform', + effect: 'The user transforms into a copy of the target right down to having the same move set.' }, - "bubble": { - name: "Bubble", - effect: "A spray of countless bubbles is jetted at the opposing Pokémon. This may also lower their Speed stat." + 'bubble': { + name: 'Bubble', + effect: 'A spray of countless bubbles is jetted at the opposing Pokémon. This may also lower their Speed stat.' }, - "dizzyPunch": { - name: "Dizzy Punch", - effect: "The target is hit with rhythmically launched punches. This may also leave the target confused." + 'dizzyPunch': { + name: 'Dizzy Punch', + effect: 'The target is hit with rhythmically launched punches. This may also leave the target confused.' }, - "spore": { - name: "Spore", - effect: "The user scatters bursts of spores that induce sleep." + 'spore': { + name: 'Spore', + effect: 'The user scatters bursts of spores that induce sleep.' }, - "flash": { - name: "Flash", - effect: "The user flashes a bright light that cuts the target's accuracy." + 'flash': { + name: 'Flash', + effect: 'The user flashes a bright light that cuts the target\'s accuracy.' }, - "psywave": { - name: "Psywave", - effect: "The target is attacked with an odd psychic wave. The attack varies in intensity." + 'psywave': { + name: 'Psywave', + effect: 'The target is attacked with an odd psychic wave. The attack varies in intensity.' }, - "splash": { - name: "Splash", - effect: "The user just flops and splashes around to no effect at all..." + 'splash': { + name: 'Splash', + effect: 'The user just flops and splashes around to no effect at all...' }, - "acidArmor": { - name: "Acid Armor", - effect: "The user alters its cellular structure to liquefy itself, sharply raising its Defense stat." + 'acidArmor': { + name: 'Acid Armor', + effect: 'The user alters its cellular structure to liquefy itself, sharply raising its Defense stat.' }, - "crabhammer": { - name: "Crabhammer", - effect: "The target is hammered with a large pincer. Critical hits land more easily." + 'crabhammer': { + name: 'Crabhammer', + effect: 'The target is hammered with a large pincer. Critical hits land more easily.' }, - "explosion": { - name: "Explosion", - effect: "The user attacks everything around it by causing a tremendous explosion. The user faints upon using this move." + 'explosion': { + name: 'Explosion', + effect: 'The user attacks everything around it by causing a tremendous explosion. The user faints upon using this move.' }, - "furySwipes": { - name: "Fury Swipes", - effect: "The target is raked with sharp claws or scythes quickly two to five times in a row." + 'furySwipes': { + name: 'Fury Swipes', + effect: 'The target is raked with sharp claws or scythes quickly two to five times in a row.' }, - "bonemerang": { - name: "Bonemerang", - effect: "The user throws the bone it holds. The bone loops around to hit the target twice—coming and going." + 'bonemerang': { + name: 'Bonemerang', + effect: 'The user throws the bone it holds. The bone loops around to hit the target twice—coming and going.' }, - "rest": { - name: "Rest", - effect: "The user goes to sleep for two turns. This fully restores the user's HP and heals any status conditions." + 'rest': { + name: 'Rest', + effect: 'The user goes to sleep for two turns. This fully restores the user\'s HP and heals any status conditions.' }, - "rockSlide": { - name: "Rock Slide", - effect: "Large boulders are hurled at opposing Pokémon to inflict damage. This may also make the opposing Pokémon flinch." + 'rockSlide': { + name: 'Rock Slide', + effect: 'Large boulders are hurled at opposing Pokémon to inflict damage. This may also make the opposing Pokémon flinch.' }, - "hyperFang": { - name: "Hyper Fang", - effect: "The user bites hard on the target with its sharp front fangs. This may also make the target flinch." + 'hyperFang': { + name: 'Hyper Fang', + effect: 'The user bites hard on the target with its sharp front fangs. This may also make the target flinch.' }, - "sharpen": { - name: "Sharpen", - effect: "The user makes its edges more jagged, which raises its Attack stat." + 'sharpen': { + name: 'Sharpen', + effect: 'The user makes its edges more jagged, which raises its Attack stat.' }, - "conversion": { - name: "Conversion", - effect: "The user changes its type to become the same type as the move at the top of the list of moves it knows." + 'conversion': { + name: 'Conversion', + effect: 'The user changes its type to become the same type as the move at the top of the list of moves it knows.' }, - "triAttack": { - name: "Tri Attack", - effect: "The user strikes with a simultaneous three-beam attack. This may also burn, freeze, or paralyze the target." + 'triAttack': { + name: 'Tri Attack', + effect: 'The user strikes with a simultaneous three-beam attack. This may also burn, freeze, or paralyze the target.' }, - "superFang": { - name: "Super Fang", - effect: "The user chomps hard on the target with its sharp front fangs. This cuts the target's HP in half." + 'superFang': { + name: 'Super Fang', + effect: 'The user chomps hard on the target with its sharp front fangs. This cuts the target\'s HP in half.' }, - "slash": { - name: "Slash", - effect: "The target is attacked with a slash of claws or blades. Critical hits land more easily." + 'slash': { + name: 'Slash', + effect: 'The target is attacked with a slash of claws or blades. Critical hits land more easily.' }, - "substitute": { - name: "Substitute", - effect: "The user creates a substitute for itself using some of its HP. The substitute serves as the user's decoy." + 'substitute': { + name: 'Substitute', + effect: 'The user creates a substitute for itself using some of its HP. The substitute serves as the user\'s decoy.' }, - "struggle": { - name: "Struggle", - effect: "This attack is used in desperation only if the user has no PP. It also damages the user a little." + 'struggle': { + name: 'Struggle', + effect: 'This attack is used in desperation only if the user has no PP. It also damages the user a little.' }, - "sketch": { - name: "Sketch", - effect: "It enables the user to permanently learn the move last used by the target. Once used, Sketch disappears." + 'sketch': { + name: 'Sketch', + effect: 'It enables the user to permanently learn the move last used by the target. Once used, Sketch disappears.' }, - "tripleKick": { - name: "Triple Kick", - effect: "A consecutive three-kick attack that becomes more powerful with each successful hit." + 'tripleKick': { + name: 'Triple Kick', + effect: 'A consecutive three-kick attack that becomes more powerful with each successful hit.' }, - "thief": { - name: "Thief", - effect: "The user attacks and has a 30% chance to steal the target's held item simultaneously." + 'thief': { + name: 'Thief', + effect: 'The user attacks and has a 30% chance to steal the target\'s held item simultaneously.' }, - "spiderWeb": { - name: "Spider Web", - effect: "The user ensnares the target with thin, gooey silk so it can't flee from battle." + 'spiderWeb': { + name: 'Spider Web', + effect: 'The user ensnares the target with thin, gooey silk so it can\'t flee from battle.' }, - "mindReader": { - name: "Mind Reader", - effect: "The user senses the target's movements with its mind to ensure its next attack does not miss the target." + 'mindReader': { + name: 'Mind Reader', + effect: 'The user senses the target\'s movements with its mind to ensure its next attack does not miss the target.' }, - "nightmare": { - name: "Nightmare", - effect: "A sleeping target sees a nightmare that inflicts some damage every turn." + 'nightmare': { + name: 'Nightmare', + effect: 'A sleeping target sees a nightmare that inflicts some damage every turn.' }, - "flameWheel": { - name: "Flame Wheel", - effect: "The user cloaks itself in fire and charges at the target. This may also leave the target with a burn." + 'flameWheel': { + name: 'Flame Wheel', + effect: 'The user cloaks itself in fire and charges at the target. This may also leave the target with a burn.' }, - "snore": { - name: "Snore", - effect: "This attack can be used only if the user is asleep. The harsh noise may also make the target flinch." + 'snore': { + name: 'Snore', + effect: 'This attack can be used only if the user is asleep. The harsh noise may also make the target flinch.' }, - "curse": { - name: "Curse", - effect: "A move that works differently for the Ghost type than for all other types." + 'curse': { + name: 'Curse', + effect: 'A move that works differently for the Ghost type than for all other types.' }, - "flail": { - name: "Flail", - effect: "The user flails about aimlessly to attack. The less HP the user has, the greater the move's power." + 'flail': { + name: 'Flail', + effect: 'The user flails about aimlessly to attack. The less HP the user has, the greater the move\'s power.' }, - "conversion2": { - name: "Conversion 2", - effect: "The user changes its type to make itself resistant to the type of the attack the target used last." + 'conversion2': { + name: 'Conversion 2', + effect: 'The user changes its type to make itself resistant to the type of the attack the target used last.' }, - "aeroblast": { - name: "Aeroblast", - effect: "A vortex of air is shot at the target to inflict damage. Critical hits land more easily." + 'aeroblast': { + name: 'Aeroblast', + effect: 'A vortex of air is shot at the target to inflict damage. Critical hits land more easily.' }, - "cottonSpore": { - name: "Cotton Spore", - effect: "The user releases cotton-like spores that cling to opposing Pokémon, which harshly lowers their Speed stats." + 'cottonSpore': { + name: 'Cotton Spore', + effect: 'The user releases cotton-like spores that cling to opposing Pokémon, which harshly lowers their Speed stats.' }, - "reversal": { - name: "Reversal", - effect: "An all-out attack that becomes more powerful the less HP the user has." + 'reversal': { + name: 'Reversal', + effect: 'An all-out attack that becomes more powerful the less HP the user has.' }, - "spite": { - name: "Spite", - effect: "The user unleashes its grudge on the move last used by the target by cutting 4 PP from it." + 'spite': { + name: 'Spite', + effect: 'The user unleashes its grudge on the move last used by the target by cutting 4 PP from it.' }, - "powderSnow": { - name: "Powder Snow", - effect: "The user attacks with a chilling gust of powdery snow. This may also freeze opposing Pokémon." + 'powderSnow': { + name: 'Powder Snow', + effect: 'The user attacks with a chilling gust of powdery snow. This may also freeze opposing Pokémon.' }, - "protect": { - name: "Protect", - effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession." + 'protect': { + name: 'Protect', + effect: 'This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession.' }, - "machPunch": { - name: "Mach Punch", - effect: "The user throws a punch at blinding speed. This move always goes first." + 'machPunch': { + name: 'Mach Punch', + effect: 'The user throws a punch at blinding speed. This move always goes first.' }, - "scaryFace": { - name: "Scary Face", - effect: "The user frightens the target with a scary face to harshly lower its Speed stat." + 'scaryFace': { + name: 'Scary Face', + effect: 'The user frightens the target with a scary face to harshly lower its Speed stat.' }, - "feintAttack": { - name: "Feint Attack", - effect: "The user approaches the target disarmingly, then throws a sucker punch. This attack never misses." + 'feintAttack': { + name: 'Feint Attack', + effect: 'The user approaches the target disarmingly, then throws a sucker punch. This attack never misses.' }, - "sweetKiss": { - name: "Sweet Kiss", - effect: "The user kisses the target with a sweet, angelic cuteness that causes confusion." + 'sweetKiss': { + name: 'Sweet Kiss', + effect: 'The user kisses the target with a sweet, angelic cuteness that causes confusion.' }, - "bellyDrum": { - name: "Belly Drum", - effect: "The user maximizes its Attack stat in exchange for HP equal to half its max HP." + 'bellyDrum': { + name: 'Belly Drum', + effect: 'The user maximizes its Attack stat in exchange for HP equal to half its max HP.' }, - "sludgeBomb": { - name: "Sludge Bomb", - effect: "Unsanitary sludge is hurled at the target. This may also poison the target." + 'sludgeBomb': { + name: 'Sludge Bomb', + effect: 'Unsanitary sludge is hurled at the target. This may also poison the target.' }, - "mudSlap": { - name: "Mud-Slap", - effect: "The user hurls mud in the target's face to inflict damage and lower its accuracy." + 'mudSlap': { + name: 'Mud-Slap', + effect: 'The user hurls mud in the target\'s face to inflict damage and lower its accuracy.' }, - "octazooka": { - name: "Octazooka", - effect: "The user attacks by spraying ink in the target's face or eyes. This may also lower the target's accuracy." + 'octazooka': { + name: 'Octazooka', + effect: 'The user attacks by spraying ink in the target\'s face or eyes. This may also lower the target\'s accuracy.' }, - "spikes": { - name: "Spikes", - effect: "The user lays a trap of spikes at the opposing team's feet. The trap hurts Pokémon that switch into battle." + 'spikes': { + name: 'Spikes', + effect: 'The user lays a trap of spikes at the opposing team\'s feet. The trap hurts Pokémon that switch into battle.' }, - "zapCannon": { - name: "Zap Cannon", - effect: "The user fires an electric blast like a cannon to inflict damage and cause paralysis." + 'zapCannon': { + name: 'Zap Cannon', + effect: 'The user fires an electric blast like a cannon to inflict damage and cause paralysis.' }, - "foresight": { - name: "Foresight", - effect: "Enables a Ghost-type target to be hit by Normal- and Fighting-type attacks. This also enables an evasive target to be hit." + 'foresight': { + name: 'Foresight', + effect: 'Enables a Ghost-type target to be hit by Normal- and Fighting-type attacks. This also enables an evasive target to be hit.' }, - "destinyBond": { - name: "Destiny Bond", - effect: "After using this move, if the user faints, the Pokémon that landed the knockout hit also faints. Its chance of failing rises if it is used in succession." + 'destinyBond': { + name: 'Destiny Bond', + effect: 'After using this move, if the user faints, the Pokémon that landed the knockout hit also faints. Its chance of failing rises if it is used in succession.' }, - "perishSong": { - name: "Perish Song", - effect: "Any Pokémon that hears this song faints in three turns, unless it switches out of battle." + 'perishSong': { + name: 'Perish Song', + effect: 'Any Pokémon that hears this song faints in three turns, unless it switches out of battle.' }, - "icyWind": { - name: "Icy Wind", - effect: "The user attacks with a gust of chilled air. This also lowers opposing Pokémon's Speed stats." + 'icyWind': { + name: 'Icy Wind', + effect: 'The user attacks with a gust of chilled air. This also lowers opposing Pokémon\'s Speed stats.' }, - "detect": { - name: "Detect", - effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession." + 'detect': { + name: 'Detect', + effect: 'This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession.' }, - "boneRush": { - name: "Bone Rush", - effect: "The user strikes the target with a hard bone two to five times in a row." + 'boneRush': { + name: 'Bone Rush', + effect: 'The user strikes the target with a hard bone two to five times in a row.' }, - "lockOn": { - name: "Lock-On", - effect: "The user takes sure aim at the target. This ensures the next attack does not miss the target." + 'lockOn': { + name: 'Lock-On', + effect: 'The user takes sure aim at the target. This ensures the next attack does not miss the target.' }, - "outrage": { - name: "Outrage", - effect: "The user rampages and attacks for two to three turns. The user then becomes confused." + 'outrage': { + name: 'Outrage', + effect: 'The user rampages and attacks for two to three turns. The user then becomes confused.' }, - "sandstorm": { - name: "Sandstorm", - effect: "A five-turn sandstorm is summoned to hurt all combatants except Rock, Ground, and Steel types. It raises the Sp. Def stat of Rock types." + 'sandstorm': { + name: 'Sandstorm', + effect: 'A five-turn sandstorm is summoned to hurt all combatants except Rock, Ground, and Steel types. It raises the Sp. Def stat of Rock types.' }, - "gigaDrain": { - name: "Giga Drain", - effect: "A nutrient-draining attack. The user's HP is restored by half the damage taken by the target." + 'gigaDrain': { + name: 'Giga Drain', + effect: 'A nutrient-draining attack. The user\'s HP is restored by half the damage taken by the target.' }, - "endure": { - name: "Endure", - effect: "The user endures any attack with at least 1 HP. Its chance of failing rises if it is used in succession." + 'endure': { + name: 'Endure', + effect: 'The user endures any attack with at least 1 HP. Its chance of failing rises if it is used in succession.' }, - "charm": { - name: "Charm", - effect: "The user gazes at the target rather charmingly, making it less wary. This harshly lowers the target's Attack stat." + 'charm': { + name: 'Charm', + effect: 'The user gazes at the target rather charmingly, making it less wary. This harshly lowers the target\'s Attack stat.' }, - "rollout": { - name: "Rollout", - effect: "The user continually rolls into the target over five turns. It becomes more powerful each time it hits." + 'rollout': { + name: 'Rollout', + effect: 'The user continually rolls into the target over five turns. It becomes more powerful each time it hits.' }, - "falseSwipe": { - name: "False Swipe", - effect: "A restrained attack that prevents the target from fainting. The target is left with at least 1 HP." + 'falseSwipe': { + name: 'False Swipe', + effect: 'A restrained attack that prevents the target from fainting. The target is left with at least 1 HP.' }, - "swagger": { - name: "Swagger", - effect: "The user enrages and confuses the target. However, this also sharply raises the target's Attack stat." + 'swagger': { + name: 'Swagger', + effect: 'The user enrages and confuses the target. However, this also sharply raises the target\'s Attack stat.' }, - "milkDrink": { - name: "Milk Drink", - effect: "The user restores its own HP by up to half of its max HP." + 'milkDrink': { + name: 'Milk Drink', + effect: 'The user restores its own HP by up to half of its max HP.' }, - "spark": { - name: "Spark", - effect: "The user throws an electrically charged tackle at the target. This may also leave the target with paralysis." + 'spark': { + name: 'Spark', + effect: 'The user throws an electrically charged tackle at the target. This may also leave the target with paralysis.' }, - "furyCutter": { - name: "Fury Cutter", - effect: "The target is slashed with scythes or claws. This attack becomes more powerful if it hits in succession." + 'furyCutter': { + name: 'Fury Cutter', + effect: 'The target is slashed with scythes or claws. This attack becomes more powerful if it hits in succession.' }, - "steelWing": { - name: "Steel Wing", - effect: "The target is hit with wings of steel. This may also raise the user's Defense stat." + 'steelWing': { + name: 'Steel Wing', + effect: 'The target is hit with wings of steel. This may also raise the user\'s Defense stat.' }, - "meanLook": { - name: "Mean Look", - effect: "The user pins the target with a dark, arresting look. The target becomes unable to flee." + 'meanLook': { + name: 'Mean Look', + effect: 'The user pins the target with a dark, arresting look. The target becomes unable to flee.' }, - "attract": { - name: "Attract", - effect: "If it is the opposite gender of the user, the target becomes infatuated and less likely to attack." + 'attract': { + name: 'Attract', + effect: 'If it is the opposite gender of the user, the target becomes infatuated and less likely to attack.' }, - "sleepTalk": { - name: "Sleep Talk", - effect: "While it is asleep, the user randomly uses one of the moves it knows." + 'sleepTalk': { + name: 'Sleep Talk', + effect: 'While it is asleep, the user randomly uses one of the moves it knows.' }, - "healBell": { - name: "Heal Bell", - effect: "The user makes a soothing bell chime to heal the status conditions of all the party Pokémon." + 'healBell': { + name: 'Heal Bell', + effect: 'The user makes a soothing bell chime to heal the status conditions of all the party Pokémon.' }, - "return": { - name: "Return", - effect: "This full-power attack grows more powerful the more the user likes its Trainer." + 'return': { + name: 'Return', + effect: 'This full-power attack grows more powerful the more the user likes its Trainer.' }, - "present": { - name: "Present", - effect: "The user attacks by giving the target a gift with a hidden trap. It restores HP sometimes, however." + 'present': { + name: 'Present', + effect: 'The user attacks by giving the target a gift with a hidden trap. It restores HP sometimes, however.' }, - "frustration": { - name: "Frustration", - effect: "This full-power attack grows more powerful the less the user likes its Trainer." + 'frustration': { + name: 'Frustration', + effect: 'This full-power attack grows more powerful the less the user likes its Trainer.' }, - "safeguard": { - name: "Safeguard", - effect: "The user creates a protective field that prevents status conditions for five turns." + 'safeguard': { + name: 'Safeguard', + effect: 'The user creates a protective field that prevents status conditions for five turns.' }, - "painSplit": { - name: "Pain Split", - effect: "The user adds its HP to the target's HP, then equally shares the combined HP with the target." + 'painSplit': { + name: 'Pain Split', + effect: 'The user adds its HP to the target\'s HP, then equally shares the combined HP with the target.' }, - "sacredFire": { - name: "Sacred Fire", - effect: "The target is razed with a mystical fire of great intensity. This may also leave the target with a burn." + 'sacredFire': { + name: 'Sacred Fire', + effect: 'The target is razed with a mystical fire of great intensity. This may also leave the target with a burn.' }, - "magnitude": { - name: "Magnitude", - effect: "The user attacks everything around it with a ground-shaking quake. Its power varies." + 'magnitude': { + name: 'Magnitude', + effect: 'The user attacks everything around it with a ground-shaking quake. Its power varies.' }, - "dynamicPunch": { - name: "Dynamic Punch", - effect: "The user punches the target with full, concentrated power. This confuses the target if it hits." + 'dynamicPunch': { + name: 'Dynamic Punch', + effect: 'The user punches the target with full, concentrated power. This confuses the target if it hits.' }, - "megahorn": { - name: "Megahorn", - effect: "Using its tough and impressive horn, the user rams into the target with no letup." + 'megahorn': { + name: 'Megahorn', + effect: 'Using its tough and impressive horn, the user rams into the target with no letup.' }, - "dragonBreath": { - name: "Dragon Breath", - effect: "The user exhales a mighty gust that inflicts damage. This may also leave the target with paralysis." + 'dragonBreath': { + name: 'Dragon Breath', + effect: 'The user exhales a mighty gust that inflicts damage. This may also leave the target with paralysis.' }, - "batonPass": { - name: "Baton Pass", - effect: "The user switches places with a party Pokémon in waiting and passes along any stat changes." + 'batonPass': { + name: 'Baton Pass', + effect: 'The user switches places with a party Pokémon in waiting and passes along any stat changes.' }, - "encore": { - name: "Encore", - effect: "The user compels the target to keep using the move it encored for three turns." + 'encore': { + name: 'Encore', + effect: 'The user compels the target to keep using the move it encored for three turns.' }, - "pursuit": { - name: "Pursuit", - effect: "The power of this attack move is doubled if it's used on a target that's switching out of battle." + 'pursuit': { + name: 'Pursuit', + effect: 'The power of this attack move is doubled if it\'s used on a target that\'s switching out of battle.' }, - "rapidSpin": { - name: "Rapid Spin", - effect: "A spin attack that can also eliminate such moves as Bind, Wrap, and Leech Seed. This also raises the user's Speed stat." + 'rapidSpin': { + name: 'Rapid Spin', + effect: 'A spin attack that can also eliminate such moves as Bind, Wrap, and Leech Seed. This also raises the user\'s Speed stat.' }, - "sweetScent": { - name: "Sweet Scent", - effect: "A sweet scent that harshly lowers opposing Pokémon's evasiveness." + 'sweetScent': { + name: 'Sweet Scent', + effect: 'A sweet scent that harshly lowers opposing Pokémon\'s evasiveness.' }, - "ironTail": { - name: "Iron Tail", - effect: "The target is slammed with a steel-hard tail. This may also lower the target's Defense stat." + 'ironTail': { + name: 'Iron Tail', + effect: 'The target is slammed with a steel-hard tail. This may also lower the target\'s Defense stat.' }, - "metalClaw": { - name: "Metal Claw", - effect: "The target is raked with steel claws. This may also raise the user's Attack stat." + 'metalClaw': { + name: 'Metal Claw', + effect: 'The target is raked with steel claws. This may also raise the user\'s Attack stat.' }, - "vitalThrow": { - name: "Vital Throw", - effect: "The user attacks last. In return, this throw move never misses." + 'vitalThrow': { + name: 'Vital Throw', + effect: 'The user attacks last. In return, this throw move never misses.' }, - "morningSun": { - name: "Morning Sun", - effect: "The user restores its own HP. The amount of HP regained varies with the weather." + 'morningSun': { + name: 'Morning Sun', + effect: 'The user restores its own HP. The amount of HP regained varies with the weather.' }, - "synthesis": { - name: "Synthesis", - effect: "The user restores its own HP. The amount of HP regained varies with the weather." + 'synthesis': { + name: 'Synthesis', + effect: 'The user restores its own HP. The amount of HP regained varies with the weather.' }, - "moonlight": { - name: "Moonlight", - effect: "The user restores its own HP. The amount of HP regained varies with the weather." + 'moonlight': { + name: 'Moonlight', + effect: 'The user restores its own HP. The amount of HP regained varies with the weather.' }, - "hiddenPower": { - name: "Hidden Power", - effect: "A unique attack that varies in type depending on the Pokémon using it." + 'hiddenPower': { + name: 'Hidden Power', + effect: 'A unique attack that varies in type depending on the Pokémon using it.' }, - "crossChop": { - name: "Cross Chop", - effect: "The user delivers a double chop with its forearms crossed. Critical hits land more easily." + 'crossChop': { + name: 'Cross Chop', + effect: 'The user delivers a double chop with its forearms crossed. Critical hits land more easily.' }, - "twister": { - name: "Twister", - effect: "The user whips up a vicious tornado to tear at opposing Pokémon. This may also make them flinch." + 'twister': { + name: 'Twister', + effect: 'The user whips up a vicious tornado to tear at opposing Pokémon. This may also make them flinch.' }, - "rainDance": { - name: "Rain Dance", - effect: "The user summons a heavy rain that falls for five turns, powering up Water-type moves. It lowers the power of Fire-type moves." + 'rainDance': { + name: 'Rain Dance', + effect: 'The user summons a heavy rain that falls for five turns, powering up Water-type moves. It lowers the power of Fire-type moves.' }, - "sunnyDay": { - name: "Sunny Day", - effect: "The user intensifies the sun for five turns, powering up Fire-type moves. It lowers the power of Water-type moves." + 'sunnyDay': { + name: 'Sunny Day', + effect: 'The user intensifies the sun for five turns, powering up Fire-type moves. It lowers the power of Water-type moves.' }, - "crunch": { - name: "Crunch", - effect: "The user crunches up the target with sharp fangs. This may also lower the target's Defense stat." + 'crunch': { + name: 'Crunch', + effect: 'The user crunches up the target with sharp fangs. This may also lower the target\'s Defense stat.' }, - "mirrorCoat": { - name: "Mirror Coat", - effect: "A retaliation move that counters any special attack, inflicting double the damage taken." + 'mirrorCoat': { + name: 'Mirror Coat', + effect: 'A retaliation move that counters any special attack, inflicting double the damage taken.' }, - "psychUp": { - name: "Psych Up", - effect: "The user hypnotizes itself into copying any stat change made by the target." + 'psychUp': { + name: 'Psych Up', + effect: 'The user hypnotizes itself into copying any stat change made by the target.' }, - "extremeSpeed": { - name: "Extreme Speed", - effect: "The user charges the target at blinding speed. This move always goes first." + 'extremeSpeed': { + name: 'Extreme Speed', + effect: 'The user charges the target at blinding speed. This move always goes first.' }, - "ancientPower": { - name: "Ancient Power", - effect: "The user attacks with a prehistoric power. This may also raise all the user's stats at once." + 'ancientPower': { + name: 'Ancient Power', + effect: 'The user attacks with a prehistoric power. This may also raise all the user\'s stats at once.' }, - "shadowBall": { - name: "Shadow Ball", - effect: "The user hurls a shadowy blob at the target. This may also lower the target's Sp. Def stat." + 'shadowBall': { + name: 'Shadow Ball', + effect: 'The user hurls a shadowy blob at the target. This may also lower the target\'s Sp. Def stat.' }, - "futureSight": { - name: "Future Sight", - effect: "Two turns after this move is used, a hunk of psychic energy attacks the target." + 'futureSight': { + name: 'Future Sight', + effect: 'Two turns after this move is used, a hunk of psychic energy attacks the target.' }, - "rockSmash": { - name: "Rock Smash", - effect: "The user attacks with a punch. This may also lower the target's Defense stat." + 'rockSmash': { + name: 'Rock Smash', + effect: 'The user attacks with a punch. This may also lower the target\'s Defense stat.' }, - "whirlpool": { - name: "Whirlpool", - effect: "The user traps the target in a violent swirling whirlpool for four to five turns." + 'whirlpool': { + name: 'Whirlpool', + effect: 'The user traps the target in a violent swirling whirlpool for four to five turns.' }, - "beatUp": { - name: "Beat Up", - effect: "The user gets all party Pokémon to attack the target. The more party Pokémon, the greater the number of attacks." + 'beatUp': { + name: 'Beat Up', + effect: 'The user gets all party Pokémon to attack the target. The more party Pokémon, the greater the number of attacks.' }, - "fakeOut": { - name: "Fake Out", - effect: "This attack hits first and makes the target flinch. It only works the first turn each time the user enters battle." + 'fakeOut': { + name: 'Fake Out', + effect: 'This attack hits first and makes the target flinch. It only works the first turn each time the user enters battle.' }, - "uproar": { - name: "Uproar", - effect: "The user attacks in an uproar for three turns. During that time, no Pokémon can fall asleep." + 'uproar': { + name: 'Uproar', + effect: 'The user attacks in an uproar for three turns. During that time, no Pokémon can fall asleep.' }, - "stockpile": { - name: "Stockpile", - effect: "The user charges up power and raises both its Defense and Sp. Def stats. The move can be used three times." + 'stockpile': { + name: 'Stockpile', + effect: 'The user charges up power and raises both its Defense and Sp. Def stats. The move can be used three times.' }, - "spitUp": { - name: "Spit Up", - effect: "The power stored using the move Stockpile is released at once in an attack. The more power is stored, the greater the move's power." + 'spitUp': { + name: 'Spit Up', + effect: 'The power stored using the move Stockpile is released at once in an attack. The more power is stored, the greater the move\'s power.' }, - "swallow": { - name: "Swallow", - effect: "The power stored using the move Stockpile is absorbed by the user to heal its HP. Storing more power heals more HP." + 'swallow': { + name: 'Swallow', + effect: 'The power stored using the move Stockpile is absorbed by the user to heal its HP. Storing more power heals more HP.' }, - "heatWave": { - name: "Heat Wave", - effect: "The user attacks by exhaling hot breath on opposing Pokémon. This may also leave those Pokémon with a burn." + 'heatWave': { + name: 'Heat Wave', + effect: 'The user attacks by exhaling hot breath on opposing Pokémon. This may also leave those Pokémon with a burn.' }, - "hail": { - name: "Hail", - effect: "The user summons a hailstorm lasting five turns. It damages all Pokémon except Ice types." + 'hail': { + name: 'Hail', + effect: 'The user summons a hailstorm lasting five turns. It damages all Pokémon except Ice types.' }, - "torment": { - name: "Torment", - effect: "The user torments and enrages the target, making it incapable of using the same move twice in a row." + 'torment': { + name: 'Torment', + effect: 'The user torments and enrages the target, making it incapable of using the same move twice in a row.' }, - "flatter": { - name: "Flatter", - effect: "Flattery is used to confuse the target. However, this also raises the target's Sp. Atk stat." + 'flatter': { + name: 'Flatter', + effect: 'Flattery is used to confuse the target. However, this also raises the target\'s Sp. Atk stat.' }, - "willOWisp": { - name: "Will-O-Wisp", - effect: "The user shoots a sinister flame at the target to inflict a burn." + 'willOWisp': { + name: 'Will-O-Wisp', + effect: 'The user shoots a sinister flame at the target to inflict a burn.' }, - "memento": { - name: "Memento", - effect: "The user faints when using this move. In return, this harshly lowers the target's Attack and Sp. Atk stats." + 'memento': { + name: 'Memento', + effect: 'The user faints when using this move. In return, this harshly lowers the target\'s Attack and Sp. Atk stats.' }, - "facade": { - name: "Facade", - effect: "This attack move doubles its power if the user is poisoned, burned, or paralyzed." + 'facade': { + name: 'Facade', + effect: 'This attack move doubles its power if the user is poisoned, burned, or paralyzed.' }, - "focusPunch": { - name: "Focus Punch", - effect: "The user focuses its mind before launching a punch. This move fails if the user is hit before it is used." + 'focusPunch': { + name: 'Focus Punch', + effect: 'The user focuses its mind before launching a punch. This move fails if the user is hit before it is used.' }, - "smellingSalts": { - name: "Smelling Salts", - effect: "This attack's power is doubled when used on a target with paralysis. This also cures the target's paralysis, however." + 'smellingSalts': { + name: 'Smelling Salts', + effect: 'This attack\'s power is doubled when used on a target with paralysis. This also cures the target\'s paralysis, however.' }, - "followMe": { - name: "Follow Me", - effect: "The user draws attention to itself, making all targets take aim only at the user." + 'followMe': { + name: 'Follow Me', + effect: 'The user draws attention to itself, making all targets take aim only at the user.' }, - "naturePower": { - name: "Nature Power", - effect: "This attack makes use of nature's power. Its effects vary depending on the user's environment." + 'naturePower': { + name: 'Nature Power', + effect: 'This attack makes use of nature\'s power. Its effects vary depending on the user\'s environment.' }, - "charge": { - name: "Charge", - effect: "The user boosts the power of the Electric move it uses on the next turn. This also raises the user's Sp. Def stat." + 'charge': { + name: 'Charge', + effect: 'The user boosts the power of the Electric move it uses on the next turn. This also raises the user\'s Sp. Def stat.' }, - "taunt": { - name: "Taunt", - effect: "The target is taunted into a rage that allows it to use only attack moves for three turns." + 'taunt': { + name: 'Taunt', + effect: 'The target is taunted into a rage that allows it to use only attack moves for three turns.' }, - "helpingHand": { - name: "Helping Hand", - effect: "The user assists an ally by boosting the power of that ally's attack." + 'helpingHand': { + name: 'Helping Hand', + effect: 'The user assists an ally by boosting the power of that ally\'s attack.' }, - "trick": { - name: "Trick", - effect: "The user catches the target off guard and swaps its held item with its own." + 'trick': { + name: 'Trick', + effect: 'The user catches the target off guard and swaps its held item with its own.' }, - "rolePlay": { - name: "Role Play", - effect: "The user mimics the target completely, copying the target's Ability." + 'rolePlay': { + name: 'Role Play', + effect: 'The user mimics the target completely, copying the target\'s Ability.' }, - "wish": { - name: "Wish", - effect: "One turn after this move is used, the user's or its replacement's HP is restored by half the user's max HP." + 'wish': { + name: 'Wish', + effect: 'One turn after this move is used, the user\'s or its replacement\'s HP is restored by half the user\'s max HP.' }, - "assist": { - name: "Assist", - effect: "The user hurriedly and randomly uses a move among those known by ally Pokémon." + 'assist': { + name: 'Assist', + effect: 'The user hurriedly and randomly uses a move among those known by ally Pokémon.' }, - "ingrain": { - name: "Ingrain", - effect: "The user lays roots that restore its HP on every turn. Because it's rooted, it can't switch out." + 'ingrain': { + name: 'Ingrain', + effect: 'The user lays roots that restore its HP on every turn. Because it\'s rooted, it can\'t switch out.' }, - "superpower": { - name: "Superpower", - effect: "The user attacks the target with great power. However, this also lowers the user's Attack and Defense stats." + 'superpower': { + name: 'Superpower', + effect: 'The user attacks the target with great power. However, this also lowers the user\'s Attack and Defense stats.' }, - "magicCoat": { - name: "Magic Coat", - effect: "Moves like Leech Seed and moves that inflict status conditions are blocked by a barrier and reflected back to the user of those moves." + 'magicCoat': { + name: 'Magic Coat', + effect: 'Moves like Leech Seed and moves that inflict status conditions are blocked by a barrier and reflected back to the user of those moves.' }, - "recycle": { - name: "Recycle", - effect: "The user recycles a held item that has been used in battle so it can be used again." + 'recycle': { + name: 'Recycle', + effect: 'The user recycles a held item that has been used in battle so it can be used again.' }, - "revenge": { - name: "Revenge", - effect: "This attack move's power is doubled if the user has been hurt by the opponent in the same turn." + 'revenge': { + name: 'Revenge', + effect: 'This attack move\'s power is doubled if the user has been hurt by the opponent in the same turn.' }, - "brickBreak": { - name: "Brick Break", - effect: "The user attacks with a swift chop. It can also break barriers, such as Light Screen and Reflect." + 'brickBreak': { + name: 'Brick Break', + effect: 'The user attacks with a swift chop. It can also break barriers, such as Light Screen and Reflect.' }, - "yawn": { - name: "Yawn", - effect: "The user lets loose a huge yawn that lulls the target into falling asleep on the next turn." + 'yawn': { + name: 'Yawn', + effect: 'The user lets loose a huge yawn that lulls the target into falling asleep on the next turn.' }, - "knockOff": { - name: "Knock Off", - effect: "The user slaps down the target's held item, and that item can't be used in that battle. The move does more damage if the target has a held item." + 'knockOff': { + name: 'Knock Off', + effect: 'The user slaps down the target\'s held item, and that item can\'t be used in that battle. The move does more damage if the target has a held item.' }, - "endeavor": { - name: "Endeavor", - effect: "This attack move cuts down the target's HP to equal the user's HP." + 'endeavor': { + name: 'Endeavor', + effect: 'This attack move cuts down the target\'s HP to equal the user\'s HP.' }, - "eruption": { - name: "Eruption", - effect: "The user attacks opposing Pokémon with explosive fury. The lower the user's HP, the lower the move's power." + 'eruption': { + name: 'Eruption', + effect: 'The user attacks opposing Pokémon with explosive fury. The lower the user\'s HP, the lower the move\'s power.' }, - "skillSwap": { - name: "Skill Swap", - effect: "The user employs its psychic power to exchange Abilities with the target." + 'skillSwap': { + name: 'Skill Swap', + effect: 'The user employs its psychic power to exchange Abilities with the target.' }, - "imprison": { - name: "Imprison", - effect: "If opposing Pokémon know any move also known by the user, they are prevented from using it." + 'imprison': { + name: 'Imprison', + effect: 'If opposing Pokémon know any move also known by the user, they are prevented from using it.' }, - "refresh": { - name: "Refresh", - effect: "The user rests to cure itself of poisoning, a burn, or paralysis." + 'refresh': { + name: 'Refresh', + effect: 'The user rests to cure itself of poisoning, a burn, or paralysis.' }, - "grudge": { - name: "Grudge", - effect: "If the user faints, the user's grudge fully depletes the PP of the opponent's move that knocked it out." + 'grudge': { + name: 'Grudge', + effect: 'If the user faints, the user\'s grudge fully depletes the PP of the opponent\'s move that knocked it out.' }, - "snatch": { - name: "Snatch", - effect: "The user steals the effects of any attempts to use a healing or stat-changing move." + 'snatch': { + name: 'Snatch', + effect: 'The user steals the effects of any attempts to use a healing or stat-changing move.' }, - "secretPower": { - name: "Secret Power", - effect: "The additional effects of this attack depend upon where it was used." + 'secretPower': { + name: 'Secret Power', + effect: 'The additional effects of this attack depend upon where it was used.' }, - "dive": { - name: "Dive", - effect: "Diving on the first turn, the user floats up and attacks on the next turn." + 'dive': { + name: 'Dive', + effect: 'Diving on the first turn, the user floats up and attacks on the next turn.' }, - "armThrust": { - name: "Arm Thrust", - effect: "The user lets loose a flurry of open-palmed arm thrusts that hit two to five times in a row." + 'armThrust': { + name: 'Arm Thrust', + effect: 'The user lets loose a flurry of open-palmed arm thrusts that hit two to five times in a row.' }, - "camouflage": { - name: "Camouflage", - effect: "The user's type is changed depending on its environment, such as at water's edge, in grass, or in a cave." + 'camouflage': { + name: 'Camouflage', + effect: 'The user\'s type is changed depending on its environment, such as at water\'s edge, in grass, or in a cave.' }, - "tailGlow": { - name: "Tail Glow", - effect: "The user stares at flashing lights to focus its mind, drastically raising its Sp. Atk stat." + 'tailGlow': { + name: 'Tail Glow', + effect: 'The user stares at flashing lights to focus its mind, drastically raising its Sp. Atk stat.' }, - "lusterPurge": { - name: "Luster Purge", - effect: "The user lets loose a damaging burst of light. This may also lower the target's Sp. Def stat." + 'lusterPurge': { + name: 'Luster Purge', + effect: 'The user lets loose a damaging burst of light. This may also lower the target\'s Sp. Def stat.' }, - "mistBall": { - name: "Mist Ball", - effect: "A mist-like flurry of down envelops and damages the target. This may also lower the target's Sp. Atk stat." + 'mistBall': { + name: 'Mist Ball', + effect: 'A mist-like flurry of down envelops and damages the target. This may also lower the target\'s Sp. Atk stat.' }, - "featherDance": { - name: "Feather Dance", - effect: "The user covers the target's body with a mass of down that harshly lowers its Attack stat." + 'featherDance': { + name: 'Feather Dance', + effect: 'The user covers the target\'s body with a mass of down that harshly lowers its Attack stat.' }, - "teeterDance": { - name: "Teeter Dance", - effect: "The user performs a wobbly dance that confuses the Pokémon around it." + 'teeterDance': { + name: 'Teeter Dance', + effect: 'The user performs a wobbly dance that confuses the Pokémon around it.' }, - "blazeKick": { - name: "Blaze Kick", - effect: "The user launches a kick that lands a critical hit more easily. This may also leave the target with a burn." + 'blazeKick': { + name: 'Blaze Kick', + effect: 'The user launches a kick that lands a critical hit more easily. This may also leave the target with a burn.' }, - "mudSport": { - name: "Mud Sport", - effect: "The user kicks up mud on the battlefield. This weakens Electric-type moves for five turns." + 'mudSport': { + name: 'Mud Sport', + effect: 'The user kicks up mud on the battlefield. This weakens Electric-type moves for five turns.' }, - "iceBall": { - name: "Ice Ball", - effect: "The user attacks the target for five turns. The move's power increases each time it hits." + 'iceBall': { + name: 'Ice Ball', + effect: 'The user attacks the target for five turns. The move\'s power increases each time it hits.' }, - "needleArm": { - name: "Needle Arm", - effect: "The user attacks by wildly swinging its thorny arms. This may also make the target flinch." + 'needleArm': { + name: 'Needle Arm', + effect: 'The user attacks by wildly swinging its thorny arms. This may also make the target flinch.' }, - "slackOff": { - name: "Slack Off", - effect: "The user slacks off, restoring its own HP by up to half of its max HP." + 'slackOff': { + name: 'Slack Off', + effect: 'The user slacks off, restoring its own HP by up to half of its max HP.' }, - "hyperVoice": { - name: "Hyper Voice", - effect: "The user lets loose a horribly echoing shout with the power to inflict damage." + 'hyperVoice': { + name: 'Hyper Voice', + effect: 'The user lets loose a horribly echoing shout with the power to inflict damage.' }, - "poisonFang": { - name: "Poison Fang", - effect: "The user bites the target with toxic fangs. This may also leave the target badly poisoned." + 'poisonFang': { + name: 'Poison Fang', + effect: 'The user bites the target with toxic fangs. This may also leave the target badly poisoned.' }, - "crushClaw": { - name: "Crush Claw", - effect: "The user slashes the target with hard and sharp claws. This may also lower the target's Defense stat." + 'crushClaw': { + name: 'Crush Claw', + effect: 'The user slashes the target with hard and sharp claws. This may also lower the target\'s Defense stat.' }, - "blastBurn": { - name: "Blast Burn", - effect: "The target is razed by a fiery explosion. The user can't move on the next turn." + 'blastBurn': { + name: 'Blast Burn', + effect: 'The target is razed by a fiery explosion. The user can\'t move on the next turn.' }, - "hydroCannon": { - name: "Hydro Cannon", - effect: "The target is hit with a watery blast. The user can't move on the next turn." + 'hydroCannon': { + name: 'Hydro Cannon', + effect: 'The target is hit with a watery blast. The user can\'t move on the next turn.' }, - "meteorMash": { - name: "Meteor Mash", - effect: "The target is hit with a hard punch fired like a meteor. This may also raise the user's Attack stat." + 'meteorMash': { + name: 'Meteor Mash', + effect: 'The target is hit with a hard punch fired like a meteor. This may also raise the user\'s Attack stat.' }, - "astonish": { - name: "Astonish", - effect: "The user attacks the target while shouting in a startling fashion. This may also make the target flinch." + 'astonish': { + name: 'Astonish', + effect: 'The user attacks the target while shouting in a startling fashion. This may also make the target flinch.' }, - "weatherBall": { - name: "Weather Ball", - effect: "This attack move varies in power and type depending on the weather." + 'weatherBall': { + name: 'Weather Ball', + effect: 'This attack move varies in power and type depending on the weather.' }, - "aromatherapy": { - name: "Aromatherapy", - effect: "The user releases a soothing scent that heals all status conditions affecting the user's party." + 'aromatherapy': { + name: 'Aromatherapy', + effect: 'The user releases a soothing scent that heals all status conditions affecting the user\'s party.' }, - "fakeTears": { - name: "Fake Tears", - effect: "The user feigns crying to fluster the target, harshly lowering its Sp. Def stat." + 'fakeTears': { + name: 'Fake Tears', + effect: 'The user feigns crying to fluster the target, harshly lowering its Sp. Def stat.' }, - "airCutter": { - name: "Air Cutter", - effect: "The user launches razor-like wind to slash opposing Pokémon. Critical hits land more easily." + 'airCutter': { + name: 'Air Cutter', + effect: 'The user launches razor-like wind to slash opposing Pokémon. Critical hits land more easily.' }, - "overheat": { - name: "Overheat", - effect: "The user attacks the target at full power. The attack's recoil harshly lowers the user's Sp. Atk stat." + 'overheat': { + name: 'Overheat', + effect: 'The user attacks the target at full power. The attack\'s recoil harshly lowers the user\'s Sp. Atk stat.' }, - "odorSleuth": { - name: "Odor Sleuth", - effect: "Enables a Ghost-type target to be hit by Normal- and Fighting-type attacks. This also enables an evasive target to be hit." + 'odorSleuth': { + name: 'Odor Sleuth', + effect: 'Enables a Ghost-type target to be hit by Normal- and Fighting-type attacks. This also enables an evasive target to be hit.' }, - "rockTomb": { - name: "Rock Tomb", - effect: "Boulders are hurled at the target. This also lowers the target's Speed stat by preventing its movement." + 'rockTomb': { + name: 'Rock Tomb', + effect: 'Boulders are hurled at the target. This also lowers the target\'s Speed stat by preventing its movement.' }, - "silverWind": { - name: "Silver Wind", - effect: "The target is attacked with powdery scales blown by the wind. This may also raise all the user's stats." + 'silverWind': { + name: 'Silver Wind', + effect: 'The target is attacked with powdery scales blown by the wind. This may also raise all the user\'s stats.' }, - "metalSound": { - name: "Metal Sound", - effect: "A horrible sound like scraping metal harshly lowers the target's Sp. Def stat." + 'metalSound': { + name: 'Metal Sound', + effect: 'A horrible sound like scraping metal harshly lowers the target\'s Sp. Def stat.' }, - "grassWhistle": { - name: "Grass Whistle", - effect: "The user plays a pleasant melody that lulls the target into a deep sleep." + 'grassWhistle': { + name: 'Grass Whistle', + effect: 'The user plays a pleasant melody that lulls the target into a deep sleep.' }, - "tickle": { - name: "Tickle", - effect: "The user tickles the target into laughing, reducing its Attack and Defense stats." + 'tickle': { + name: 'Tickle', + effect: 'The user tickles the target into laughing, reducing its Attack and Defense stats.' }, - "cosmicPower": { - name: "Cosmic Power", - effect: "The user absorbs a mystical power from space to raise its Defense and Sp. Def stats." + 'cosmicPower': { + name: 'Cosmic Power', + effect: 'The user absorbs a mystical power from space to raise its Defense and Sp. Def stats.' }, - "waterSpout": { - name: "Water Spout", - effect: "The user spouts water to damage opposing Pokémon. The lower the user's HP, the lower the move's power." + 'waterSpout': { + name: 'Water Spout', + effect: 'The user spouts water to damage opposing Pokémon. The lower the user\'s HP, the lower the move\'s power.' }, - "signalBeam": { - name: "Signal Beam", - effect: "The user attacks with a sinister beam of light. This may also confuse the target." + 'signalBeam': { + name: 'Signal Beam', + effect: 'The user attacks with a sinister beam of light. This may also confuse the target.' }, - "shadowPunch": { - name: "Shadow Punch", - effect: "The user throws a punch from the shadows. This attack never misses." + 'shadowPunch': { + name: 'Shadow Punch', + effect: 'The user throws a punch from the shadows. This attack never misses.' }, - "extrasensory": { - name: "Extrasensory", - effect: "The user attacks with an odd, unseeable power. This may also make the target flinch." + 'extrasensory': { + name: 'Extrasensory', + effect: 'The user attacks with an odd, unseeable power. This may also make the target flinch.' }, - "skyUppercut": { - name: "Sky Uppercut", - effect: "The user attacks the target with an uppercut thrown skyward with force." + 'skyUppercut': { + name: 'Sky Uppercut', + effect: 'The user attacks the target with an uppercut thrown skyward with force.' }, - "sandTomb": { - name: "Sand Tomb", - effect: "The user traps the target inside a harshly raging sandstorm for four to five turns." + 'sandTomb': { + name: 'Sand Tomb', + effect: 'The user traps the target inside a harshly raging sandstorm for four to five turns.' }, - "sheerCold": { - name: "Sheer Cold", - effect: "The target faints instantly. It's less likely to hit the target if it's used by Pokémon other than Ice types." + 'sheerCold': { + name: 'Sheer Cold', + effect: 'The target faints instantly. It\'s less likely to hit the target if it\'s used by Pokémon other than Ice types.' }, - "muddyWater": { - name: "Muddy Water", - effect: "The user attacks by shooting muddy water at opposing Pokémon. This may also lower their accuracy." + 'muddyWater': { + name: 'Muddy Water', + effect: 'The user attacks by shooting muddy water at opposing Pokémon. This may also lower their accuracy.' }, - "bulletSeed": { - name: "Bullet Seed", - effect: "The user forcefully shoots seeds at the target two to five times in a row." + 'bulletSeed': { + name: 'Bullet Seed', + effect: 'The user forcefully shoots seeds at the target two to five times in a row.' }, - "aerialAce": { - name: "Aerial Ace", - effect: "The user confounds the target with speed, then slashes. This attack never misses." + 'aerialAce': { + name: 'Aerial Ace', + effect: 'The user confounds the target with speed, then slashes. This attack never misses.' }, - "icicleSpear": { - name: "Icicle Spear", - effect: "The user launches sharp icicles at the target two to five times in a row." + 'icicleSpear': { + name: 'Icicle Spear', + effect: 'The user launches sharp icicles at the target two to five times in a row.' }, - "ironDefense": { - name: "Iron Defense", - effect: "The user hardens its body's surface like iron, sharply raising its Defense stat." + 'ironDefense': { + name: 'Iron Defense', + effect: 'The user hardens its body\'s surface like iron, sharply raising its Defense stat.' }, - "block": { - name: "Block", - effect: "The user blocks the target's way with arms spread wide to prevent escape." + 'block': { + name: 'Block', + effect: 'The user blocks the target\'s way with arms spread wide to prevent escape.' }, - "howl": { - name: "Howl", - effect: "The user howls loudly to raise the spirit of itself and allies. This raises their Attack stats." + 'howl': { + name: 'Howl', + effect: 'The user howls loudly to raise the spirit of itself and allies. This raises their Attack stats.' }, - "dragonClaw": { - name: "Dragon Claw", - effect: "The user slashes the target with huge sharp claws." + 'dragonClaw': { + name: 'Dragon Claw', + effect: 'The user slashes the target with huge sharp claws.' }, - "frenzyPlant": { - name: "Frenzy Plant", - effect: "The user slams the target with the roots of an enormous tree. The user can't move on the next turn." + 'frenzyPlant': { + name: 'Frenzy Plant', + effect: 'The user slams the target with the roots of an enormous tree. The user can\'t move on the next turn.' }, - "bulkUp": { - name: "Bulk Up", - effect: "The user tenses its muscles to bulk up its body, raising both its Attack and Defense stats." + 'bulkUp': { + name: 'Bulk Up', + effect: 'The user tenses its muscles to bulk up its body, raising both its Attack and Defense stats.' }, - "bounce": { - name: "Bounce", - effect: "The user bounces up high, then drops on the target on the second turn. This may also leave the target with paralysis." + 'bounce': { + name: 'Bounce', + effect: 'The user bounces up high, then drops on the target on the second turn. This may also leave the target with paralysis.' }, - "mudShot": { - name: "Mud Shot", - effect: "The user attacks by hurling a blob of mud at the target. This also lowers the target's Speed stat." + 'mudShot': { + name: 'Mud Shot', + effect: 'The user attacks by hurling a blob of mud at the target. This also lowers the target\'s Speed stat.' }, - "poisonTail": { - name: "Poison Tail", - effect: "The user hits the target with its tail. This may also poison the target. Critical hits land more easily." + 'poisonTail': { + name: 'Poison Tail', + effect: 'The user hits the target with its tail. This may also poison the target. Critical hits land more easily.' }, - "covet": { - name: "Covet", - effect: "The user endearingly approaches the target, then has a 30% chance to steal the target's held item." + 'covet': { + name: 'Covet', + effect: 'The user endearingly approaches the target, then has a 30% chance to steal the target\'s held item.' }, - "voltTackle": { - name: "Volt Tackle", - effect: "The user electrifies itself and charges the target. This also damages the user quite a lot. This attack may leave the target with paralysis." + 'voltTackle': { + name: 'Volt Tackle', + effect: 'The user electrifies itself and charges the target. This also damages the user quite a lot. This attack may leave the target with paralysis.' }, - "magicalLeaf": { - name: "Magical Leaf", - effect: "The user scatters curious leaves that chase the target. This attack never misses." + 'magicalLeaf': { + name: 'Magical Leaf', + effect: 'The user scatters curious leaves that chase the target. This attack never misses.' }, - "waterSport": { - name: "Water Sport", - effect: "The user soaks the battlefield with water. This weakens Fire-type moves for five turns." + 'waterSport': { + name: 'Water Sport', + effect: 'The user soaks the battlefield with water. This weakens Fire-type moves for five turns.' }, - "calmMind": { - name: "Calm Mind", - effect: "The user quietly focuses its mind and calms its spirit to raise its Sp. Atk and Sp. Def stats." + 'calmMind': { + name: 'Calm Mind', + effect: 'The user quietly focuses its mind and calms its spirit to raise its Sp. Atk and Sp. Def stats.' }, - "leafBlade": { - name: "Leaf Blade", - effect: "The user handles a sharp leaf like a sword and attacks by cutting its target. Critical hits land more easily." + 'leafBlade': { + name: 'Leaf Blade', + effect: 'The user handles a sharp leaf like a sword and attacks by cutting its target. Critical hits land more easily.' }, - "dragonDance": { - name: "Dragon Dance", - effect: "The user vigorously performs a mystic, powerful dance that raises its Attack and Speed stats." + 'dragonDance': { + name: 'Dragon Dance', + effect: 'The user vigorously performs a mystic, powerful dance that raises its Attack and Speed stats.' }, - "rockBlast": { - name: "Rock Blast", - effect: "The user hurls hard rocks at the target. Two to five rocks are launched in a row." + 'rockBlast': { + name: 'Rock Blast', + effect: 'The user hurls hard rocks at the target. Two to five rocks are launched in a row.' }, - "shockWave": { - name: "Shock Wave", - effect: "The user strikes the target with a quick jolt of electricity. This attack never misses." + 'shockWave': { + name: 'Shock Wave', + effect: 'The user strikes the target with a quick jolt of electricity. This attack never misses.' }, - "waterPulse": { - name: "Water Pulse", - effect: "The user attacks the target with a pulsing blast of water. This may also confuse the target." + 'waterPulse': { + name: 'Water Pulse', + effect: 'The user attacks the target with a pulsing blast of water. This may also confuse the target.' }, - "doomDesire": { - name: "Doom Desire", - effect: "Two turns after this move is used, a concentrated bundle of light blasts the target." + 'doomDesire': { + name: 'Doom Desire', + effect: 'Two turns after this move is used, a concentrated bundle of light blasts the target.' }, - "psychoBoost": { - name: "Psycho Boost", - effect: "The user attacks the target at full power. The attack's recoil harshly lowers the user's Sp. Atk stat." + 'psychoBoost': { + name: 'Psycho Boost', + effect: 'The user attacks the target at full power. The attack\'s recoil harshly lowers the user\'s Sp. Atk stat.' }, - "roost": { - name: "Roost", - effect: "The user lands and rests its body. This move restores the user's HP by up to half of its max HP." + 'roost': { + name: 'Roost', + effect: 'The user lands and rests its body. This move restores the user\'s HP by up to half of its max HP.' }, - "gravity": { - name: "Gravity", - effect: "This move enables Flying-type Pokémon or Pokémon with the Levitate Ability to be hit by Ground-type moves. Moves that involve flying can't be used." + 'gravity': { + name: 'Gravity', + effect: 'This move enables Flying-type Pokémon or Pokémon with the Levitate Ability to be hit by Ground-type moves. Moves that involve flying can\'t be used.' }, - "miracleEye": { - name: "Miracle Eye", - effect: "Enables a Dark-type target to be hit by Psychic-type attacks. This also enables an evasive target to be hit." + 'miracleEye': { + name: 'Miracle Eye', + effect: 'Enables a Dark-type target to be hit by Psychic-type attacks. This also enables an evasive target to be hit.' }, - "wakeUpSlap": { - name: "Wake-Up Slap", - effect: "This attack inflicts big damage on a sleeping target. This also wakes the target up, however." + 'wakeUpSlap': { + name: 'Wake-Up Slap', + effect: 'This attack inflicts big damage on a sleeping target. This also wakes the target up, however.' }, - "hammerArm": { - name: "Hammer Arm", - effect: "The user swings and hits with its strong, heavy fist. It lowers the user's Speed, however." + 'hammerArm': { + name: 'Hammer Arm', + effect: 'The user swings and hits with its strong, heavy fist. It lowers the user\'s Speed, however.' }, - "gyroBall": { - name: "Gyro Ball", - effect: "The user tackles the target with a high-speed spin. The slower the user compared to the target, the greater the move's power." + 'gyroBall': { + name: 'Gyro Ball', + effect: 'The user tackles the target with a high-speed spin. The slower the user compared to the target, the greater the move\'s power.' }, - "healingWish": { - name: "Healing Wish", - effect: "The user faints. In return, the Pokémon taking its place will have its HP restored and status conditions cured." + 'healingWish': { + name: 'Healing Wish', + effect: 'The user faints. In return, the Pokémon taking its place will have its HP restored and status conditions cured.' }, - "brine": { - name: "Brine", - effect: "If the target's HP is half or less, this attack will hit with double the power." + 'brine': { + name: 'Brine', + effect: 'If the target\'s HP is half or less, this attack will hit with double the power.' }, - "naturalGift": { - name: "Natural Gift", - effect: "The user draws power to attack by using its held Berry. The Berry determines the move's type and power." + 'naturalGift': { + name: 'Natural Gift', + effect: 'The user draws power to attack by using its held Berry. The Berry determines the move\'s type and power.' }, - "feint": { - name: "Feint", - effect: "This attack hits a target using a move such as Protect or Detect. This also lifts the effects of those moves." + 'feint': { + name: 'Feint', + effect: 'This attack hits a target using a move such as Protect or Detect. This also lifts the effects of those moves.' }, - "pluck": { - name: "Pluck", - effect: "The user pecks the target. If the target is holding a Berry, the user eats it and gains its effect." + 'pluck': { + name: 'Pluck', + effect: 'The user pecks the target. If the target is holding a Berry, the user eats it and gains its effect.' }, - "tailwind": { - name: "Tailwind", - effect: "The user whips up a turbulent whirlwind that ups the Speed stats of the user and its allies for four turns." + 'tailwind': { + name: 'Tailwind', + effect: 'The user whips up a turbulent whirlwind that ups the Speed stats of the user and its allies for four turns.' }, - "acupressure": { - name: "Acupressure", - effect: "The user applies pressure to stress points, sharply boosting one of its or its allies' stats." + 'acupressure': { + name: 'Acupressure', + effect: 'The user applies pressure to stress points, sharply boosting one of its or its allies\' stats.' }, - "metalBurst": { - name: "Metal Burst", - effect: "The user retaliates with much greater force against the opponent that last inflicted damage on it." + 'metalBurst': { + name: 'Metal Burst', + effect: 'The user retaliates with much greater force against the opponent that last inflicted damage on it.' }, - "uTurn": { - name: "U-turn", - effect: "After making its attack, the user rushes back to switch places with a party Pokémon in waiting." + 'uTurn': { + name: 'U-turn', + effect: 'After making its attack, the user rushes back to switch places with a party Pokémon in waiting.' }, - "closeCombat": { - name: "Close Combat", - effect: "The user fights the target up close without guarding itself. This also lowers the user's Defense and Sp. Def stats." + 'closeCombat': { + name: 'Close Combat', + effect: 'The user fights the target up close without guarding itself. This also lowers the user\'s Defense and Sp. Def stats.' }, - "payback": { - name: "Payback", - effect: "The user stores power, then attacks. If the user moves after the target, this attack's power will be doubled." + 'payback': { + name: 'Payback', + effect: 'The user stores power, then attacks. If the user moves after the target, this attack\'s power will be doubled.' }, - "assurance": { - name: "Assurance", - effect: "If the target has already taken some damage in the same turn, this attack's power is doubled." + 'assurance': { + name: 'Assurance', + effect: 'If the target has already taken some damage in the same turn, this attack\'s power is doubled.' }, - "embargo": { - name: "Embargo", - effect: "This move prevents the target from using its held item for five turns. Its Trainer is also prevented from using items on it." + 'embargo': { + name: 'Embargo', + effect: 'This move prevents the target from using its held item for five turns. Its Trainer is also prevented from using items on it.' }, - "fling": { - name: "Fling", - effect: "The user flings its held item at the target to attack. This move's power and effects depend on the item." + 'fling': { + name: 'Fling', + effect: 'The user flings its held item at the target to attack. This move\'s power and effects depend on the item.' }, - "psychoShift": { - name: "Psycho Shift", - effect: "Using its psychic power of suggestion, the user transfers its status conditions to the target." + 'psychoShift': { + name: 'Psycho Shift', + effect: 'Using its psychic power of suggestion, the user transfers its status conditions to the target.' }, - "trumpCard": { - name: "Trump Card", - effect: "The fewer PP this move has, the greater its power." + 'trumpCard': { + name: 'Trump Card', + effect: 'The fewer PP this move has, the greater its power.' }, - "healBlock": { - name: "Heal Block", - effect: "For five turns, the user prevents the opposing team from using any moves, Abilities, or held items that recover HP." + 'healBlock': { + name: 'Heal Block', + effect: 'For five turns, the user prevents the opposing team from using any moves, Abilities, or held items that recover HP.' }, - "wringOut": { - name: "Wring Out", - effect: "The user powerfully wrings the target. The more HP the target has, the greater the move's power." + 'wringOut': { + name: 'Wring Out', + effect: 'The user powerfully wrings the target. The more HP the target has, the greater the move\'s power.' }, - "powerTrick": { - name: "Power Trick", - effect: "The user employs its psychic power to switch its Attack stat with its Defense stat." + 'powerTrick': { + name: 'Power Trick', + effect: 'The user employs its psychic power to switch its Attack stat with its Defense stat.' }, - "gastroAcid": { - name: "Gastro Acid", - effect: "The user hurls up its stomach acids on the target. The fluid eliminates the effect of the target's Ability." + 'gastroAcid': { + name: 'Gastro Acid', + effect: 'The user hurls up its stomach acids on the target. The fluid eliminates the effect of the target\'s Ability.' }, - "luckyChant": { - name: "Lucky Chant", - effect: "The user chants an incantation toward the sky, preventing opposing Pokémon from landing critical hits for five turns." + 'luckyChant': { + name: 'Lucky Chant', + effect: 'The user chants an incantation toward the sky, preventing opposing Pokémon from landing critical hits for five turns.' }, - "meFirst": { - name: "Me First", - effect: "The user cuts ahead of the target to copy and use the target's intended move with greater power. This move fails if it isn't used first." + 'meFirst': { + name: 'Me First', + effect: 'The user cuts ahead of the target to copy and use the target\'s intended move with greater power. This move fails if it isn\'t used first.' }, - "copycat": { - name: "Copycat", - effect: "The user mimics the move used immediately before it. The move fails if no other move has been used yet." + 'copycat': { + name: 'Copycat', + effect: 'The user mimics the move used immediately before it. The move fails if no other move has been used yet.' }, - "powerSwap": { - name: "Power Swap", - effect: "The user employs its psychic power to switch changes to its Attack and Sp. Atk stats with the target." + 'powerSwap': { + name: 'Power Swap', + effect: 'The user employs its psychic power to switch changes to its Attack and Sp. Atk stats with the target.' }, - "guardSwap": { - name: "Guard Swap", - effect: "The user employs its psychic power to switch changes to its Defense and Sp. Def stats with the target." + 'guardSwap': { + name: 'Guard Swap', + effect: 'The user employs its psychic power to switch changes to its Defense and Sp. Def stats with the target.' }, - "punishment": { - name: "Punishment", - effect: "The more the target has powered up with stat changes, the greater the move's power." + 'punishment': { + name: 'Punishment', + effect: 'The more the target has powered up with stat changes, the greater the move\'s power.' }, - "lastResort": { - name: "Last Resort", - effect: "This move can be used only after the user has used all the other moves it knows in the battle." + 'lastResort': { + name: 'Last Resort', + effect: 'This move can be used only after the user has used all the other moves it knows in the battle.' }, - "worrySeed": { - name: "Worry Seed", - effect: "A seed that causes worry is planted on the target. It prevents sleep by making the target's Ability Insomnia." + 'worrySeed': { + name: 'Worry Seed', + effect: 'A seed that causes worry is planted on the target. It prevents sleep by making the target\'s Ability Insomnia.' }, - "suckerPunch": { - name: "Sucker Punch", - effect: "This move enables the user to attack first. This move fails if the target is not readying an attack." + 'suckerPunch': { + name: 'Sucker Punch', + effect: 'This move enables the user to attack first. This move fails if the target is not readying an attack.' }, - "toxicSpikes": { - name: "Toxic Spikes", - effect: "The user lays a trap of poison spikes at the feet of the opposing team. The spikes will poison opposing Pokémon that switch into battle." + 'toxicSpikes': { + name: 'Toxic Spikes', + effect: 'The user lays a trap of poison spikes at the feet of the opposing team. The spikes will poison opposing Pokémon that switch into battle.' }, - "heartSwap": { - name: "Heart Swap", - effect: "The user employs its psychic power to switch stat changes with the target." + 'heartSwap': { + name: 'Heart Swap', + effect: 'The user employs its psychic power to switch stat changes with the target.' }, - "aquaRing": { - name: "Aqua Ring", - effect: "The user envelops itself in a veil made of water. It regains some HP every turn." + 'aquaRing': { + name: 'Aqua Ring', + effect: 'The user envelops itself in a veil made of water. It regains some HP every turn.' }, - "magnetRise": { - name: "Magnet Rise", - effect: "The user levitates using electrically generated magnetism for five turns." + 'magnetRise': { + name: 'Magnet Rise', + effect: 'The user levitates using electrically generated magnetism for five turns.' }, - "flareBlitz": { - name: "Flare Blitz", - effect: "The user cloaks itself in fire and charges the target. This also damages the user quite a lot. This attack may leave the target with a burn." + 'flareBlitz': { + name: 'Flare Blitz', + effect: 'The user cloaks itself in fire and charges the target. This also damages the user quite a lot. This attack may leave the target with a burn.' }, - "forcePalm": { - name: "Force Palm", - effect: "The target is attacked with a shock wave. This may also leave the target with paralysis." + 'forcePalm': { + name: 'Force Palm', + effect: 'The target is attacked with a shock wave. This may also leave the target with paralysis.' }, - "auraSphere": { - name: "Aura Sphere", - effect: "The user lets loose a blast of aura power from deep within its body at the target. This attack never misses." + 'auraSphere': { + name: 'Aura Sphere', + effect: 'The user lets loose a blast of aura power from deep within its body at the target. This attack never misses.' }, - "rockPolish": { - name: "Rock Polish", - effect: "The user polishes its body to reduce drag. This sharply raises the Speed stat." + 'rockPolish': { + name: 'Rock Polish', + effect: 'The user polishes its body to reduce drag. This sharply raises the Speed stat.' }, - "poisonJab": { - name: "Poison Jab", - effect: "The target is stabbed with a tentacle, arm, or the like steeped in poison. This may also poison the target." + 'poisonJab': { + name: 'Poison Jab', + effect: 'The target is stabbed with a tentacle, arm, or the like steeped in poison. This may also poison the target.' }, - "darkPulse": { - name: "Dark Pulse", - effect: "The user releases a horrible aura imbued with dark thoughts. This may also make the target flinch." + 'darkPulse': { + name: 'Dark Pulse', + effect: 'The user releases a horrible aura imbued with dark thoughts. This may also make the target flinch.' }, - "nightSlash": { - name: "Night Slash", - effect: "The user slashes the target the instant an opportunity arises. Critical hits land more easily." + 'nightSlash': { + name: 'Night Slash', + effect: 'The user slashes the target the instant an opportunity arises. Critical hits land more easily.' }, - "aquaTail": { - name: "Aqua Tail", - effect: "The user attacks by swinging its tail as if it were a vicious wave in a raging storm." + 'aquaTail': { + name: 'Aqua Tail', + effect: 'The user attacks by swinging its tail as if it were a vicious wave in a raging storm.' }, - "seedBomb": { - name: "Seed Bomb", - effect: "The user slams a barrage of hard-shelled seeds down on the target from above." + 'seedBomb': { + name: 'Seed Bomb', + effect: 'The user slams a barrage of hard-shelled seeds down on the target from above.' }, - "airSlash": { - name: "Air Slash", - effect: "The user attacks with a blade of air that slices even the sky. This may also make the target flinch." + 'airSlash': { + name: 'Air Slash', + effect: 'The user attacks with a blade of air that slices even the sky. This may also make the target flinch.' }, - "xScissor": { - name: "X-Scissor", - effect: "The user slashes at the target by crossing its scythes or claws as if they were a pair of scissors." + 'xScissor': { + name: 'X-Scissor', + effect: 'The user slashes at the target by crossing its scythes or claws as if they were a pair of scissors.' }, - "bugBuzz": { - name: "Bug Buzz", - effect: "The user generates a damaging sound wave by vibration. This may also lower the target's Sp. Def stat." + 'bugBuzz': { + name: 'Bug Buzz', + effect: 'The user generates a damaging sound wave by vibration. This may also lower the target\'s Sp. Def stat.' }, - "dragonPulse": { - name: "Dragon Pulse", - effect: "The target is attacked with a shock wave generated by the user's gaping mouth." + 'dragonPulse': { + name: 'Dragon Pulse', + effect: 'The target is attacked with a shock wave generated by the user\'s gaping mouth.' }, - "dragonRush": { - name: "Dragon Rush", - effect: "The user tackles the target while exhibiting overwhelming menace. This may also make the target flinch." + 'dragonRush': { + name: 'Dragon Rush', + effect: 'The user tackles the target while exhibiting overwhelming menace. This may also make the target flinch.' }, - "powerGem": { - name: "Power Gem", - effect: "The user attacks with a ray of light that sparkles as if it were made of gemstones." + 'powerGem': { + name: 'Power Gem', + effect: 'The user attacks with a ray of light that sparkles as if it were made of gemstones.' }, - "drainPunch": { - name: "Drain Punch", - effect: "An energy-draining punch. The user's HP is restored by half the damage taken by the target." + 'drainPunch': { + name: 'Drain Punch', + effect: 'An energy-draining punch. The user\'s HP is restored by half the damage taken by the target.' }, - "vacuumWave": { - name: "Vacuum Wave", - effect: "The user whirls its fists to send a wave of pure vacuum at the target. This move always goes first." + 'vacuumWave': { + name: 'Vacuum Wave', + effect: 'The user whirls its fists to send a wave of pure vacuum at the target. This move always goes first.' }, - "focusBlast": { - name: "Focus Blast", - effect: "The user heightens its mental focus and unleashes its power. This may also lower the target's Sp. Def stat." + 'focusBlast': { + name: 'Focus Blast', + effect: 'The user heightens its mental focus and unleashes its power. This may also lower the target\'s Sp. Def stat.' }, - "energyBall": { - name: "Energy Ball", - effect: "The user draws power from nature and fires it at the target. This may also lower the target's Sp. Def stat." + 'energyBall': { + name: 'Energy Ball', + effect: 'The user draws power from nature and fires it at the target. This may also lower the target\'s Sp. Def stat.' }, - "braveBird": { - name: "Brave Bird", - effect: "The user tucks in its wings and charges from a low altitude. This also damages the user quite a lot." + 'braveBird': { + name: 'Brave Bird', + effect: 'The user tucks in its wings and charges from a low altitude. This also damages the user quite a lot.' }, - "earthPower": { - name: "Earth Power", - effect: "The user makes the ground under the target erupt with power. This may also lower the target's Sp. Def stat." + 'earthPower': { + name: 'Earth Power', + effect: 'The user makes the ground under the target erupt with power. This may also lower the target\'s Sp. Def stat.' }, - "switcheroo": { - name: "Switcheroo", - effect: "The user trades held items with the target faster than the eye can follow." + 'switcheroo': { + name: 'Switcheroo', + effect: 'The user trades held items with the target faster than the eye can follow.' }, - "gigaImpact": { - name: "Giga Impact", - effect: "The user charges at the target using every bit of its power. The user can't move on the next turn." + 'gigaImpact': { + name: 'Giga Impact', + effect: 'The user charges at the target using every bit of its power. The user can\'t move on the next turn.' }, - "nastyPlot": { - name: "Nasty Plot", - effect: "The user stimulates its brain by thinking bad thoughts. This sharply raises the user's Sp. Atk stat." + 'nastyPlot': { + name: 'Nasty Plot', + effect: 'The user stimulates its brain by thinking bad thoughts. This sharply raises the user\'s Sp. Atk stat.' }, - "bulletPunch": { - name: "Bullet Punch", - effect: "The user strikes the target with tough punches as fast as bullets. This move always goes first." + 'bulletPunch': { + name: 'Bullet Punch', + effect: 'The user strikes the target with tough punches as fast as bullets. This move always goes first.' }, - "avalanche": { - name: "Avalanche", - effect: "The power of this attack move is doubled if the user has been hurt by the target in the same turn." + 'avalanche': { + name: 'Avalanche', + effect: 'The power of this attack move is doubled if the user has been hurt by the target in the same turn.' }, - "iceShard": { - name: "Ice Shard", - effect: "The user flash-freezes chunks of ice and hurls them at the target. This move always goes first." + 'iceShard': { + name: 'Ice Shard', + effect: 'The user flash-freezes chunks of ice and hurls them at the target. This move always goes first.' }, - "shadowClaw": { - name: "Shadow Claw", - effect: "The user slashes with a sharp claw made from shadows. Critical hits land more easily." + 'shadowClaw': { + name: 'Shadow Claw', + effect: 'The user slashes with a sharp claw made from shadows. Critical hits land more easily.' }, - "thunderFang": { - name: "Thunder Fang", - effect: "The user bites with electrified fangs. This may also make the target flinch or leave it with paralysis." + 'thunderFang': { + name: 'Thunder Fang', + effect: 'The user bites with electrified fangs. This may also make the target flinch or leave it with paralysis.' }, - "iceFang": { - name: "Ice Fang", - effect: "The user bites with cold-infused fangs. This may also make the target flinch or leave it frozen." + 'iceFang': { + name: 'Ice Fang', + effect: 'The user bites with cold-infused fangs. This may also make the target flinch or leave it frozen.' }, - "fireFang": { - name: "Fire Fang", - effect: "The user bites with flame-cloaked fangs. This may also make the target flinch or leave it with a burn." + 'fireFang': { + name: 'Fire Fang', + effect: 'The user bites with flame-cloaked fangs. This may also make the target flinch or leave it with a burn.' }, - "shadowSneak": { - name: "Shadow Sneak", - effect: "The user extends its shadow and attacks the target from behind. This move always goes first." + 'shadowSneak': { + name: 'Shadow Sneak', + effect: 'The user extends its shadow and attacks the target from behind. This move always goes first.' }, - "mudBomb": { - name: "Mud Bomb", - effect: "The user launches a hard-packed mud ball to attack. This may also lower the target's accuracy." + 'mudBomb': { + name: 'Mud Bomb', + effect: 'The user launches a hard-packed mud ball to attack. This may also lower the target\'s accuracy.' }, - "psychoCut": { - name: "Psycho Cut", - effect: "The user tears at the target with blades formed by psychic power. Critical hits land more easily." + 'psychoCut': { + name: 'Psycho Cut', + effect: 'The user tears at the target with blades formed by psychic power. Critical hits land more easily.' }, - "zenHeadbutt": { - name: "Zen Headbutt", - effect: "The user focuses its willpower to its head and attacks the target. This may also make the target flinch." + 'zenHeadbutt': { + name: 'Zen Headbutt', + effect: 'The user focuses its willpower to its head and attacks the target. This may also make the target flinch.' }, - "mirrorShot": { - name: "Mirror Shot", - effect: "The user lets loose a flash of energy at the target from its polished body. This may also lower the target's accuracy." + 'mirrorShot': { + name: 'Mirror Shot', + effect: 'The user lets loose a flash of energy at the target from its polished body. This may also lower the target\'s accuracy.' }, - "flashCannon": { - name: "Flash Cannon", - effect: "The user gathers all its light energy and releases it all at once. This may also lower the target's Sp. Def stat." + 'flashCannon': { + name: 'Flash Cannon', + effect: 'The user gathers all its light energy and releases it all at once. This may also lower the target\'s Sp. Def stat.' }, - "rockClimb": { - name: "Rock Climb", - effect: "The user attacks the target by smashing into it with incredible force. This may also confuse the target." + 'rockClimb': { + name: 'Rock Climb', + effect: 'The user attacks the target by smashing into it with incredible force. This may also confuse the target.' }, - "defog": { - name: "Defog", - effect: "A strong wind blows away the target's barriers such as Reflect or Light Screen. This also lowers the target's evasiveness." + 'defog': { + name: 'Defog', + effect: 'A strong wind blows away the target\'s barriers such as Reflect or Light Screen. This also lowers the target\'s evasiveness.' }, - "trickRoom": { - name: "Trick Room", - effect: "The user creates a bizarre area in which slower Pokémon get to move first for five turns." + 'trickRoom': { + name: 'Trick Room', + effect: 'The user creates a bizarre area in which slower Pokémon get to move first for five turns.' }, - "dracoMeteor": { - name: "Draco Meteor", - effect: "Comets are summoned down from the sky onto the target. The attack's recoil harshly lowers the user's Sp. Atk stat." + 'dracoMeteor': { + name: 'Draco Meteor', + effect: 'Comets are summoned down from the sky onto the target. The attack\'s recoil harshly lowers the user\'s Sp. Atk stat.' }, - "discharge": { - name: "Discharge", - effect: "The user strikes everything around it by letting loose a flare of electricity. This may also cause paralysis." + 'discharge': { + name: 'Discharge', + effect: 'The user strikes everything around it by letting loose a flare of electricity. This may also cause paralysis.' }, - "lavaPlume": { - name: "Lava Plume", - effect: "The user torches everything around it in an inferno of scarlet flames. This may also leave those it hits with a burn." + 'lavaPlume': { + name: 'Lava Plume', + effect: 'The user torches everything around it in an inferno of scarlet flames. This may also leave those it hits with a burn.' }, - "leafStorm": { - name: "Leaf Storm", - effect: "The user whips up a storm of leaves around the target. The attack's recoil harshly lowers the user's Sp. Atk stat." + 'leafStorm': { + name: 'Leaf Storm', + effect: 'The user whips up a storm of leaves around the target. The attack\'s recoil harshly lowers the user\'s Sp. Atk stat.' }, - "powerWhip": { - name: "Power Whip", - effect: "The user violently whirls its vines, tentacles, or the like to harshly lash the target." + 'powerWhip': { + name: 'Power Whip', + effect: 'The user violently whirls its vines, tentacles, or the like to harshly lash the target.' }, - "rockWrecker": { - name: "Rock Wrecker", - effect: "The user launches a huge boulder at the target to attack. The user can't move on the next turn." + 'rockWrecker': { + name: 'Rock Wrecker', + effect: 'The user launches a huge boulder at the target to attack. The user can\'t move on the next turn.' }, - "crossPoison": { - name: "Cross Poison", - effect: "A slashing attack with a poisonous blade that may also poison the target. Critical hits land more easily." + 'crossPoison': { + name: 'Cross Poison', + effect: 'A slashing attack with a poisonous blade that may also poison the target. Critical hits land more easily.' }, - "gunkShot": { - name: "Gunk Shot", - effect: "The user shoots filthy garbage at the target to attack. This may also poison the target." + 'gunkShot': { + name: 'Gunk Shot', + effect: 'The user shoots filthy garbage at the target to attack. This may also poison the target.' }, - "ironHead": { - name: "Iron Head", - effect: "The user slams the target with its steel-hard head. This may also make the target flinch." + 'ironHead': { + name: 'Iron Head', + effect: 'The user slams the target with its steel-hard head. This may also make the target flinch.' }, - "magnetBomb": { - name: "Magnet Bomb", - effect: "The user launches steel bombs that stick to the target. This attack never misses." + 'magnetBomb': { + name: 'Magnet Bomb', + effect: 'The user launches steel bombs that stick to the target. This attack never misses.' }, - "stoneEdge": { - name: "Stone Edge", - effect: "The user stabs the target from below with sharpened stones. Critical hits land more easily." + 'stoneEdge': { + name: 'Stone Edge', + effect: 'The user stabs the target from below with sharpened stones. Critical hits land more easily.' }, - "captivate": { - name: "Captivate", - effect: "If any opposing Pokémon is the opposite gender of the user, it is charmed, which harshly lowers its Sp. Atk stat." + 'captivate': { + name: 'Captivate', + effect: 'If any opposing Pokémon is the opposite gender of the user, it is charmed, which harshly lowers its Sp. Atk stat.' }, - "stealthRock": { - name: "Stealth Rock", - effect: "The user lays a trap of levitating stones around the opposing team. The trap hurts opposing Pokémon that switch into battle." + 'stealthRock': { + name: 'Stealth Rock', + effect: 'The user lays a trap of levitating stones around the opposing team. The trap hurts opposing Pokémon that switch into battle.' }, - "grassKnot": { - name: "Grass Knot", - effect: "The user snares the target with grass and trips it. The heavier the target, the greater the move's power." + 'grassKnot': { + name: 'Grass Knot', + effect: 'The user snares the target with grass and trips it. The heavier the target, the greater the move\'s power.' }, - "chatter": { - name: "Chatter", - effect: "The user attacks the target with sound waves of deafening chatter. This confuses the target." + 'chatter': { + name: 'Chatter', + effect: 'The user attacks the target with sound waves of deafening chatter. This confuses the target.' }, - "judgment": { - name: "Judgment", - effect: "The user releases countless shots of light at the target. This move's type varies depending on the kind of Plate the user is holding." + 'judgment': { + name: 'Judgment', + effect: 'The user releases countless shots of light at the target. This move\'s type varies depending on the kind of Plate the user is holding.' }, - "bugBite": { - name: "Bug Bite", - effect: "The user bites the target. If the target is holding a Berry, the user eats it and gains its effect." + 'bugBite': { + name: 'Bug Bite', + effect: 'The user bites the target. If the target is holding a Berry, the user eats it and gains its effect.' }, - "chargeBeam": { - name: "Charge Beam", - effect: "The user attacks the target with an electric charge. The user may use any remaining electricity to raise its Sp. Atk stat." + 'chargeBeam': { + name: 'Charge Beam', + effect: 'The user attacks the target with an electric charge. The user may use any remaining electricity to raise its Sp. Atk stat.' }, - "woodHammer": { - name: "Wood Hammer", - effect: "The user slams its rugged body into the target to attack. This also damages the user quite a lot." + 'woodHammer': { + name: 'Wood Hammer', + effect: 'The user slams its rugged body into the target to attack. This also damages the user quite a lot.' }, - "aquaJet": { - name: "Aqua Jet", - effect: "The user lunges at the target at a speed that makes it almost invisible. This move always goes first." + 'aquaJet': { + name: 'Aqua Jet', + effect: 'The user lunges at the target at a speed that makes it almost invisible. This move always goes first.' }, - "attackOrder": { - name: "Attack Order", - effect: "The user calls out its underlings to pummel the target. Critical hits land more easily." + 'attackOrder': { + name: 'Attack Order', + effect: 'The user calls out its underlings to pummel the target. Critical hits land more easily.' }, - "defendOrder": { - name: "Defend Order", - effect: "The user calls out its underlings to shield its body, raising its Defense and Sp. Def stats." + 'defendOrder': { + name: 'Defend Order', + effect: 'The user calls out its underlings to shield its body, raising its Defense and Sp. Def stats.' }, - "healOrder": { - name: "Heal Order", - effect: "The user calls out its underlings to heal it. The user regains up to half of its max HP." + 'healOrder': { + name: 'Heal Order', + effect: 'The user calls out its underlings to heal it. The user regains up to half of its max HP.' }, - "headSmash": { - name: "Head Smash", - effect: "The user attacks the target with a hazardous, full-power headbutt. This also damages the user terribly." + 'headSmash': { + name: 'Head Smash', + effect: 'The user attacks the target with a hazardous, full-power headbutt. This also damages the user terribly.' }, - "doubleHit": { - name: "Double Hit", - effect: "The user slams the target with a long tail, vines, or a tentacle. The target is hit twice in a row." + 'doubleHit': { + name: 'Double Hit', + effect: 'The user slams the target with a long tail, vines, or a tentacle. The target is hit twice in a row.' }, - "roarOfTime": { - name: "Roar of Time", - effect: "The user blasts the target with power that distorts even time. The user can't move on the next turn." + 'roarOfTime': { + name: 'Roar of Time', + effect: 'The user blasts the target with power that distorts even time. The user can\'t move on the next turn.' }, - "spacialRend": { - name: "Spacial Rend", - effect: "The user tears the target along with the space around it. Critical hits land more easily." + 'spacialRend': { + name: 'Spacial Rend', + effect: 'The user tears the target along with the space around it. Critical hits land more easily.' }, - "lunarDance": { - name: "Lunar Dance", - effect: "The user faints. In return, the Pokémon taking its place will have its status and HP fully restored." + 'lunarDance': { + name: 'Lunar Dance', + effect: 'The user faints. In return, the Pokémon taking its place will have its status and HP fully restored.' }, - "crushGrip": { - name: "Crush Grip", - effect: "The target is crushed with great force. The more HP the target has left, the greater this move's power." + 'crushGrip': { + name: 'Crush Grip', + effect: 'The target is crushed with great force. The more HP the target has left, the greater this move\'s power.' }, - "magmaStorm": { - name: "Magma Storm", - effect: "The target becomes trapped within a maelstrom of fire that rages for four to five turns." + 'magmaStorm': { + name: 'Magma Storm', + effect: 'The target becomes trapped within a maelstrom of fire that rages for four to five turns.' }, - "darkVoid": { - name: "Dark Void", - effect: "Opposing Pokémon are dragged into a world of total darkness that makes them sleep." + 'darkVoid': { + name: 'Dark Void', + effect: 'Opposing Pokémon are dragged into a world of total darkness that makes them sleep.' }, - "seedFlare": { - name: "Seed Flare", - effect: "The user emits a shock wave from its body to attack its target. This may also harshly lower the target's Sp. Def stat." + 'seedFlare': { + name: 'Seed Flare', + effect: 'The user emits a shock wave from its body to attack its target. This may also harshly lower the target\'s Sp. Def stat.' }, - "ominousWind": { - name: "Ominous Wind", - effect: "The user blasts the target with a gust of repulsive wind. This may also raise all the user's stats at once." + 'ominousWind': { + name: 'Ominous Wind', + effect: 'The user blasts the target with a gust of repulsive wind. This may also raise all the user\'s stats at once.' }, - "shadowForce": { - name: "Shadow Force", - effect: "The user disappears, then strikes the target on the next turn. This move hits even if the target protects itself." + 'shadowForce': { + name: 'Shadow Force', + effect: 'The user disappears, then strikes the target on the next turn. This move hits even if the target protects itself.' }, - "honeClaws": { - name: "Hone Claws", - effect: "The user sharpens its claws to boost its Attack stat and accuracy." + 'honeClaws': { + name: 'Hone Claws', + effect: 'The user sharpens its claws to boost its Attack stat and accuracy.' }, - "wideGuard": { - name: "Wide Guard", - effect: "The user and its allies are protected from wide-ranging attacks for one turn." + 'wideGuard': { + name: 'Wide Guard', + effect: 'The user and its allies are protected from wide-ranging attacks for one turn.' }, - "guardSplit": { - name: "Guard Split", - effect: "The user employs its psychic power to average its Defense and Sp. Def stats with those of the target." + 'guardSplit': { + name: 'Guard Split', + effect: 'The user employs its psychic power to average its Defense and Sp. Def stats with those of the target.' }, - "powerSplit": { - name: "Power Split", - effect: "The user employs its psychic power to average its Attack and Sp. Atk stats with those of the target." + 'powerSplit': { + name: 'Power Split', + effect: 'The user employs its psychic power to average its Attack and Sp. Atk stats with those of the target.' }, - "wonderRoom": { - name: "Wonder Room", - effect: "The user creates a bizarre area in which Pokémon's Defense and Sp. Def stats are swapped for five turns." + 'wonderRoom': { + name: 'Wonder Room', + effect: 'The user creates a bizarre area in which Pokémon\'s Defense and Sp. Def stats are swapped for five turns.' }, - "psyshock": { - name: "Psyshock", - effect: "The user materializes an odd psychic wave to attack the target. This attack does physical damage." + 'psyshock': { + name: 'Psyshock', + effect: 'The user materializes an odd psychic wave to attack the target. This attack does physical damage.' }, - "venoshock": { - name: "Venoshock", - effect: "The user drenches the target in a special poisonous liquid. This move's power is doubled if the target is poisoned." + 'venoshock': { + name: 'Venoshock', + effect: 'The user drenches the target in a special poisonous liquid. This move\'s power is doubled if the target is poisoned.' }, - "autotomize": { - name: "Autotomize", - effect: "The user sheds part of its body to make itself lighter and sharply raise its Speed stat." + 'autotomize': { + name: 'Autotomize', + effect: 'The user sheds part of its body to make itself lighter and sharply raise its Speed stat.' }, - "ragePowder": { - name: "Rage Powder", - effect: "The user scatters a cloud of irritating powder to draw attention to itself. Opposing Pokémon aim only at the user." + 'ragePowder': { + name: 'Rage Powder', + effect: 'The user scatters a cloud of irritating powder to draw attention to itself. Opposing Pokémon aim only at the user.' }, - "telekinesis": { - name: "Telekinesis", - effect: "The user makes the target float with its psychic power. The target is easier to hit for three turns." + 'telekinesis': { + name: 'Telekinesis', + effect: 'The user makes the target float with its psychic power. The target is easier to hit for three turns.' }, - "magicRoom": { - name: "Magic Room", - effect: "The user creates a bizarre area in which Pokémon's held items lose their effects for five turns." + 'magicRoom': { + name: 'Magic Room', + effect: 'The user creates a bizarre area in which Pokémon\'s held items lose their effects for five turns.' }, - "smackDown": { - name: "Smack Down", - effect: "The user throws a stone or similar projectile to attack the target. A flying Pokémon will fall to the ground when it's hit." + 'smackDown': { + name: 'Smack Down', + effect: 'The user throws a stone or similar projectile to attack the target. A flying Pokémon will fall to the ground when it\'s hit.' }, - "stormThrow": { - name: "Storm Throw", - effect: "The user strikes the target with a fierce blow. This attack always results in a critical hit." + 'stormThrow': { + name: 'Storm Throw', + effect: 'The user strikes the target with a fierce blow. This attack always results in a critical hit.' }, - "flameBurst": { - name: "Flame Burst", - effect: "The user attacks the target with a bursting flame. The bursting flame damages Pokémon next to the target as well." + 'flameBurst': { + name: 'Flame Burst', + effect: 'The user attacks the target with a bursting flame. The bursting flame damages Pokémon next to the target as well.' }, - "sludgeWave": { - name: "Sludge Wave", - effect: "The user strikes everything around it by swamping the area with a giant sludge wave. This may also poison those hit." + 'sludgeWave': { + name: 'Sludge Wave', + effect: 'The user strikes everything around it by swamping the area with a giant sludge wave. This may also poison those hit.' }, - "quiverDance": { - name: "Quiver Dance", - effect: "The user lightly performs a beautiful, mystic dance. This boosts the user's Sp. Atk, Sp. Def, and Speed stats." + 'quiverDance': { + name: 'Quiver Dance', + effect: 'The user lightly performs a beautiful, mystic dance. This boosts the user\'s Sp. Atk, Sp. Def, and Speed stats.' }, - "heavySlam": { - name: "Heavy Slam", - effect: "The user slams into the target with its heavy body. The more the user outweighs the target, the greater the move's power." + 'heavySlam': { + name: 'Heavy Slam', + effect: 'The user slams into the target with its heavy body. The more the user outweighs the target, the greater the move\'s power.' }, - "synchronoise": { - name: "Synchronoise", - effect: "Using an odd shock wave, the user inflicts damage on any Pokémon of the same type in the area around it." + 'synchronoise': { + name: 'Synchronoise', + effect: 'Using an odd shock wave, the user inflicts damage on any Pokémon of the same type in the area around it.' }, - "electroBall": { - name: "Electro Ball", - effect: "The user hurls an electric orb at the target. The faster the user is than the target, the greater the move's power." + 'electroBall': { + name: 'Electro Ball', + effect: 'The user hurls an electric orb at the target. The faster the user is than the target, the greater the move\'s power.' }, - "soak": { - name: "Soak", - effect: "The user shoots a torrent of water at the target and changes the target's type to Water." + 'soak': { + name: 'Soak', + effect: 'The user shoots a torrent of water at the target and changes the target\'s type to Water.' }, - "flameCharge": { - name: "Flame Charge", - effect: "Cloaking itself in flame, the user attacks the target. Then, building up more power, the user raises its Speed stat." + 'flameCharge': { + name: 'Flame Charge', + effect: 'Cloaking itself in flame, the user attacks the target. Then, building up more power, the user raises its Speed stat.' }, - "coil": { - name: "Coil", - effect: "The user coils up and concentrates. This raises its Attack and Defense stats as well as its accuracy." + 'coil': { + name: 'Coil', + effect: 'The user coils up and concentrates. This raises its Attack and Defense stats as well as its accuracy.' }, - "lowSweep": { - name: "Low Sweep", - effect: "The user makes a swift attack on the target's legs, which lowers the target's Speed stat." + 'lowSweep': { + name: 'Low Sweep', + effect: 'The user makes a swift attack on the target\'s legs, which lowers the target\'s Speed stat.' }, - "acidSpray": { - name: "Acid Spray", - effect: "The user spits fluid that works to melt the target. This harshly lowers the target's Sp. Def stat." + 'acidSpray': { + name: 'Acid Spray', + effect: 'The user spits fluid that works to melt the target. This harshly lowers the target\'s Sp. Def stat.' }, - "foulPlay": { - name: "Foul Play", - effect: "The user turns the target's power against it. The higher the target's Attack stat, the greater the damage it deals." + 'foulPlay': { + name: 'Foul Play', + effect: 'The user turns the target\'s power against it. The higher the target\'s Attack stat, the greater the damage it deals.' }, - "simpleBeam": { - name: "Simple Beam", - effect: "The user's mysterious psychic wave changes the target's Ability to Simple." + 'simpleBeam': { + name: 'Simple Beam', + effect: 'The user\'s mysterious psychic wave changes the target\'s Ability to Simple.' }, - "entrainment": { - name: "Entrainment", - effect: "The user dances with an odd rhythm that compels the target to mimic it, making the target's Ability the same as the user's." + 'entrainment': { + name: 'Entrainment', + effect: 'The user dances with an odd rhythm that compels the target to mimic it, making the target\'s Ability the same as the user\'s.' }, - "afterYou": { - name: "After You", - effect: "The user helps the target and makes it use its move right after the user." + 'afterYou': { + name: 'After You', + effect: 'The user helps the target and makes it use its move right after the user.' }, - "round": { - name: "Round", - effect: "The user attacks the target with a song. Others can join in the Round to increase the power of the attack." + 'round': { + name: 'Round', + effect: 'The user attacks the target with a song. Others can join in the Round to increase the power of the attack.' }, - "echoedVoice": { - name: "Echoed Voice", - effect: "The user attacks the target with an echoing voice. If this move is used every turn, its power is increased." + 'echoedVoice': { + name: 'Echoed Voice', + effect: 'The user attacks the target with an echoing voice. If this move is used every turn, its power is increased.' }, - "chipAway": { - name: "Chip Away", - effect: "Looking for an opening, the user strikes consistently. The target's stat changes don't affect this attack's damage." + 'chipAway': { + name: 'Chip Away', + effect: 'Looking for an opening, the user strikes consistently. The target\'s stat changes don\'t affect this attack\'s damage.' }, - "clearSmog": { - name: "Clear Smog", - effect: "The user attacks the target by throwing a clump of special mud. All stat changes are returned to normal." + 'clearSmog': { + name: 'Clear Smog', + effect: 'The user attacks the target by throwing a clump of special mud. All stat changes are returned to normal.' }, - "storedPower": { - name: "Stored Power", - effect: "The user attacks the target with stored power. The more the user's stats are raised, the greater the move's power." + 'storedPower': { + name: 'Stored Power', + effect: 'The user attacks the target with stored power. The more the user\'s stats are raised, the greater the move\'s power.' }, - "quickGuard": { - name: "Quick Guard", - effect: "The user protects itself and its allies from priority moves." + 'quickGuard': { + name: 'Quick Guard', + effect: 'The user protects itself and its allies from priority moves.' }, - "allySwitch": { - name: "Ally Switch", - effect: "The user teleports using a strange power and switches places with one of its allies." + 'allySwitch': { + name: 'Ally Switch', + effect: 'The user teleports using a strange power and switches places with one of its allies.' }, - "scald": { - name: "Scald", - effect: "The user shoots boiling hot water at its target. This may also leave the target with a burn." + 'scald': { + name: 'Scald', + effect: 'The user shoots boiling hot water at its target. This may also leave the target with a burn.' }, - "shellSmash": { - name: "Shell Smash", - effect: "The user breaks its shell, which lowers Defense and Sp. Def stats but sharply raises its Attack, Sp. Atk, and Speed stats." + 'shellSmash': { + name: 'Shell Smash', + effect: 'The user breaks its shell, which lowers Defense and Sp. Def stats but sharply raises its Attack, Sp. Atk, and Speed stats.' }, - "healPulse": { - name: "Heal Pulse", - effect: "The user emits a healing pulse that restores the target's HP by up to half of its max HP." + 'healPulse': { + name: 'Heal Pulse', + effect: 'The user emits a healing pulse that restores the target\'s HP by up to half of its max HP.' }, - "hex": { - name: "Hex", - effect: "This relentless attack does massive damage to a target affected by status conditions." + 'hex': { + name: 'Hex', + effect: 'This relentless attack does massive damage to a target affected by status conditions.' }, - "skyDrop": { - name: "Sky Drop", - effect: "The user takes the target into the sky, then drops it during the next turn. The target cannot attack while in the sky." + 'skyDrop': { + name: 'Sky Drop', + effect: 'The user takes the target into the sky, then drops it during the next turn. The target cannot attack while in the sky.' }, - "shiftGear": { - name: "Shift Gear", - effect: "The user rotates its gears, raising its Attack stat and sharply raising its Speed stat." + 'shiftGear': { + name: 'Shift Gear', + effect: 'The user rotates its gears, raising its Attack stat and sharply raising its Speed stat.' }, - "circleThrow": { - name: "Circle Throw", - effect: "The target is thrown, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon." + 'circleThrow': { + name: 'Circle Throw', + effect: 'The target is thrown, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon.' }, - "incinerate": { - name: "Incinerate", - effect: "The user attacks opposing Pokémon with fire. If a Pokémon is holding a certain item, such as a Berry, the item becomes burned up and unusable." + 'incinerate': { + name: 'Incinerate', + effect: 'The user attacks opposing Pokémon with fire. If a Pokémon is holding a certain item, such as a Berry, the item becomes burned up and unusable.' }, - "quash": { - name: "Quash", - effect: "The user suppresses the target and makes its move go last." + 'quash': { + name: 'Quash', + effect: 'The user suppresses the target and makes its move go last.' }, - "acrobatics": { - name: "Acrobatics", - effect: "The user nimbly strikes the target. If the user is not holding an item, this attack inflicts massive damage." + 'acrobatics': { + name: 'Acrobatics', + effect: 'The user nimbly strikes the target. If the user is not holding an item, this attack inflicts massive damage.' }, - "reflectType": { - name: "Reflect Type", - effect: "The user reflects the target's type, making the user the same type as the target." + 'reflectType': { + name: 'Reflect Type', + effect: 'The user reflects the target\'s type, making the user the same type as the target.' }, - "retaliate": { - name: "Retaliate", - effect: "The user gets revenge for a fainted ally. If an ally fainted in the previous turn, this move's power is increased." + 'retaliate': { + name: 'Retaliate', + effect: 'The user gets revenge for a fainted ally. If an ally fainted in the previous turn, this move\'s power is increased.' }, - "finalGambit": { - name: "Final Gambit", - effect: "The user risks everything to attack its target. The user faints but does damage equal to its HP." + 'finalGambit': { + name: 'Final Gambit', + effect: 'The user risks everything to attack its target. The user faints but does damage equal to its HP.' }, - "bestow": { - name: "Bestow", - effect: "The user passes its held item to the target when the target isn't holding an item." + 'bestow': { + name: 'Bestow', + effect: 'The user passes its held item to the target when the target isn\'t holding an item.' }, - "inferno": { - name: "Inferno", - effect: "The user attacks by engulfing the target in an intense fire. This leaves the target with a burn." + 'inferno': { + name: 'Inferno', + effect: 'The user attacks by engulfing the target in an intense fire. This leaves the target with a burn.' }, - "waterPledge": { - name: "Water Pledge", - effect: "A column of water hits the target. When used with its fire equivalent, its power increases and a rainbow appears." + 'waterPledge': { + name: 'Water Pledge', + effect: 'A column of water hits the target. When used with its fire equivalent, its power increases and a rainbow appears.' }, - "firePledge": { - name: "Fire Pledge", - effect: "A column of fire hits the target. When used with its grass equivalent, its power increases and a vast sea of fire appears." + 'firePledge': { + name: 'Fire Pledge', + effect: 'A column of fire hits the target. When used with its grass equivalent, its power increases and a vast sea of fire appears.' }, - "grassPledge": { - name: "Grass Pledge", - effect: "A column of grass hits the target. When used with its water equivalent, its power increases and a vast swamp appears." + 'grassPledge': { + name: 'Grass Pledge', + effect: 'A column of grass hits the target. When used with its water equivalent, its power increases and a vast swamp appears.' }, - "voltSwitch": { - name: "Volt Switch", - effect: "After making its attack, the user rushes back to switch places with a party Pokémon in waiting." + 'voltSwitch': { + name: 'Volt Switch', + effect: 'After making its attack, the user rushes back to switch places with a party Pokémon in waiting.' }, - "struggleBug": { - name: "Struggle Bug", - effect: "While resisting, the user attacks opposing Pokémon. This lowers the Sp. Atk stats of those hit." + 'struggleBug': { + name: 'Struggle Bug', + effect: 'While resisting, the user attacks opposing Pokémon. This lowers the Sp. Atk stats of those hit.' }, - "bulldoze": { - name: "Bulldoze", - effect: "The user strikes everything around it by stomping down on the ground. This lowers the Speed stats of those hit." + 'bulldoze': { + name: 'Bulldoze', + effect: 'The user strikes everything around it by stomping down on the ground. This lowers the Speed stats of those hit.' }, - "frostBreath": { - name: "Frost Breath", - effect: "The user blows its cold breath on the target. This attack always results in a critical hit." + 'frostBreath': { + name: 'Frost Breath', + effect: 'The user blows its cold breath on the target. This attack always results in a critical hit.' }, - "dragonTail": { - name: "Dragon Tail", - effect: "The target is knocked away, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon." + 'dragonTail': { + name: 'Dragon Tail', + effect: 'The target is knocked away, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon.' }, - "workUp": { - name: "Work Up", - effect: "The user is roused, and its Attack and Sp. Atk stats increase." + 'workUp': { + name: 'Work Up', + effect: 'The user is roused, and its Attack and Sp. Atk stats increase.' }, - "electroweb": { - name: "Electroweb", - effect: "The user attacks and captures opposing Pokémon using an electric net. This lowers their Speed stats." + 'electroweb': { + name: 'Electroweb', + effect: 'The user attacks and captures opposing Pokémon using an electric net. This lowers their Speed stats.' }, - "wildCharge": { - name: "Wild Charge", - effect: "The user shrouds itself in electricity and smashes into its target. This also damages the user a little." + 'wildCharge': { + name: 'Wild Charge', + effect: 'The user shrouds itself in electricity and smashes into its target. This also damages the user a little.' }, - "drillRun": { - name: "Drill Run", - effect: "The user crashes into its target while rotating its body like a drill. Critical hits land more easily." + 'drillRun': { + name: 'Drill Run', + effect: 'The user crashes into its target while rotating its body like a drill. Critical hits land more easily.' }, - "dualChop": { - name: "Dual Chop", - effect: "The user attacks its target by hitting it with brutal strikes. The target is hit twice in a row." + 'dualChop': { + name: 'Dual Chop', + effect: 'The user attacks its target by hitting it with brutal strikes. The target is hit twice in a row.' }, - "heartStamp": { - name: "Heart Stamp", - effect: "The user unleashes a vicious blow after its cute act makes the target less wary. This may also make the target flinch." + 'heartStamp': { + name: 'Heart Stamp', + effect: 'The user unleashes a vicious blow after its cute act makes the target less wary. This may also make the target flinch.' }, - "hornLeech": { - name: "Horn Leech", - effect: "The user drains the target's energy with its horns. The user's HP is restored by half the damage taken by the target." + 'hornLeech': { + name: 'Horn Leech', + effect: 'The user drains the target\'s energy with its horns. The user\'s HP is restored by half the damage taken by the target.' }, - "sacredSword": { - name: "Sacred Sword", - effect: "The user attacks by slicing with a long horn. The target's stat changes don't affect this attack's damage." + 'sacredSword': { + name: 'Sacred Sword', + effect: 'The user attacks by slicing with a long horn. The target\'s stat changes don\'t affect this attack\'s damage.' }, - "razorShell": { - name: "Razor Shell", - effect: "The user cuts its target with sharp shells. This may also lower the target's Defense stat." + 'razorShell': { + name: 'Razor Shell', + effect: 'The user cuts its target with sharp shells. This may also lower the target\'s Defense stat.' }, - "heatCrash": { - name: "Heat Crash", - effect: "The user slams its target with its flame-covered body. The more the user outweighs the target, the greater the move's power." + 'heatCrash': { + name: 'Heat Crash', + effect: 'The user slams its target with its flame-covered body. The more the user outweighs the target, the greater the move\'s power.' }, - "leafTornado": { - name: "Leaf Tornado", - effect: "The user attacks its target by encircling it in sharp leaves. This attack may also lower the target's accuracy." + 'leafTornado': { + name: 'Leaf Tornado', + effect: 'The user attacks its target by encircling it in sharp leaves. This attack may also lower the target\'s accuracy.' }, - "steamroller": { - name: "Steamroller", - effect: "The user crushes its target by rolling over the target with its rolled-up body. This may also make the target flinch." + 'steamroller': { + name: 'Steamroller', + effect: 'The user crushes its target by rolling over the target with its rolled-up body. This may also make the target flinch.' }, - "cottonGuard": { - name: "Cotton Guard", - effect: "The user protects itself by wrapping its body in soft cotton, which drastically raises the user's Defense stat." + 'cottonGuard': { + name: 'Cotton Guard', + effect: 'The user protects itself by wrapping its body in soft cotton, which drastically raises the user\'s Defense stat.' }, - "nightDaze": { - name: "Night Daze", - effect: "The user lets loose a pitch-black shock wave at its target. This may also lower the target's accuracy." + 'nightDaze': { + name: 'Night Daze', + effect: 'The user lets loose a pitch-black shock wave at its target. This may also lower the target\'s accuracy.' }, - "psystrike": { - name: "Psystrike", - effect: "The user materializes an odd psychic wave to attack the target. This attack does physical damage." + 'psystrike': { + name: 'Psystrike', + effect: 'The user materializes an odd psychic wave to attack the target. This attack does physical damage.' }, - "tailSlap": { - name: "Tail Slap", - effect: "The user attacks by striking the target with its hard tail. It hits the target two to five times in a row." + 'tailSlap': { + name: 'Tail Slap', + effect: 'The user attacks by striking the target with its hard tail. It hits the target two to five times in a row.' }, - "hurricane": { - name: "Hurricane", - effect: "The user attacks by wrapping its opponent in a fierce wind that flies up into the sky. This may also confuse the target." + 'hurricane': { + name: 'Hurricane', + effect: 'The user attacks by wrapping its opponent in a fierce wind that flies up into the sky. This may also confuse the target.' }, - "headCharge": { - name: "Head Charge", - effect: "The user charges its head into its target, using its powerful guard hair. This also damages the user a little." + 'headCharge': { + name: 'Head Charge', + effect: 'The user charges its head into its target, using its powerful guard hair. This also damages the user a little.' }, - "gearGrind": { - name: "Gear Grind", - effect: "The user attacks by throwing steel gears at its target twice." + 'gearGrind': { + name: 'Gear Grind', + effect: 'The user attacks by throwing steel gears at its target twice.' }, - "searingShot": { - name: "Searing Shot", - effect: "The user torches everything around it in an inferno of scarlet flames. This may also leave those it hits with a burn." + 'searingShot': { + name: 'Searing Shot', + effect: 'The user torches everything around it in an inferno of scarlet flames. This may also leave those it hits with a burn.' }, - "technoBlast": { - name: "Techno Blast", - effect: "The user fires a beam of light at its target. The move's type changes depending on the Drive the user holds." + 'technoBlast': { + name: 'Techno Blast', + effect: 'The user fires a beam of light at its target. The move\'s type changes depending on the Drive the user holds.' }, - "relicSong": { - name: "Relic Song", - effect: "The user sings an ancient song and attacks by appealing to the hearts of the listening opposing Pokémon. This may also induce sleep." + 'relicSong': { + name: 'Relic Song', + effect: 'The user sings an ancient song and attacks by appealing to the hearts of the listening opposing Pokémon. This may also induce sleep.' }, - "secretSword": { - name: "Secret Sword", - effect: "The user cuts with its long horn. The odd power contained in the horn does physical damage to the target." + 'secretSword': { + name: 'Secret Sword', + effect: 'The user cuts with its long horn. The odd power contained in the horn does physical damage to the target.' }, - "glaciate": { - name: "Glaciate", - effect: "The user attacks by blowing freezing cold air at opposing Pokémon. This lowers their Speed stats." + 'glaciate': { + name: 'Glaciate', + effect: 'The user attacks by blowing freezing cold air at opposing Pokémon. This lowers their Speed stats.' }, - "boltStrike": { - name: "Bolt Strike", - effect: "The user surrounds itself with a great amount of electricity and charges its target. This may also leave the target with paralysis." + 'boltStrike': { + name: 'Bolt Strike', + effect: 'The user surrounds itself with a great amount of electricity and charges its target. This may also leave the target with paralysis.' }, - "blueFlare": { - name: "Blue Flare", - effect: "The user attacks by engulfing the target in an intense, yet beautiful, blue flame. This may also leave the target with a burn." + 'blueFlare': { + name: 'Blue Flare', + effect: 'The user attacks by engulfing the target in an intense, yet beautiful, blue flame. This may also leave the target with a burn.' }, - "fieryDance": { - name: "Fiery Dance", - effect: "Cloaked in flames, the user attacks the target by dancing and flapping its wings. This may also raise the user's Sp. Atk stat." + 'fieryDance': { + name: 'Fiery Dance', + effect: 'Cloaked in flames, the user attacks the target by dancing and flapping its wings. This may also raise the user\'s Sp. Atk stat.' }, - "freezeShock": { - name: "Freeze Shock", - effect: "On the second turn, the user hits the target with electrically charged ice. This may also leave the target with paralysis." + 'freezeShock': { + name: 'Freeze Shock', + effect: 'On the second turn, the user hits the target with electrically charged ice. This may also leave the target with paralysis.' }, - "iceBurn": { - name: "Ice Burn", - effect: "On the second turn, an ultracold, freezing wind surrounds the target. This may leave the target with a burn." + 'iceBurn': { + name: 'Ice Burn', + effect: 'On the second turn, an ultracold, freezing wind surrounds the target. This may leave the target with a burn.' }, - "snarl": { - name: "Snarl", - effect: "The user yells as if it's ranting about something, which lowers the Sp. Atk stats of opposing Pokémon." + 'snarl': { + name: 'Snarl', + effect: 'The user yells as if it\'s ranting about something, which lowers the Sp. Atk stats of opposing Pokémon.' }, - "icicleCrash": { - name: "Icicle Crash", - effect: "The user attacks by harshly dropping large icicles onto the target. This may also make the target flinch." + 'icicleCrash': { + name: 'Icicle Crash', + effect: 'The user attacks by harshly dropping large icicles onto the target. This may also make the target flinch.' }, - "vCreate": { - name: "V-create", - effect: "With a hot flame on its forehead, the user hurls itself at its target. This lowers the user's Defense, Sp. Def, and Speed stats." + 'vCreate': { + name: 'V-create', + effect: 'With a hot flame on its forehead, the user hurls itself at its target. This lowers the user\'s Defense, Sp. Def, and Speed stats.' }, - "fusionFlare": { - name: "Fusion Flare", - effect: "The user brings down a giant flame. This move's power is increased when influenced by an enormous lightning bolt." + 'fusionFlare': { + name: 'Fusion Flare', + effect: 'The user brings down a giant flame. This move\'s power is increased when influenced by an enormous lightning bolt.' }, - "fusionBolt": { - name: "Fusion Bolt", - effect: "The user throws down a giant lightning bolt. This move's power is increased when influenced by an enormous flame." + 'fusionBolt': { + name: 'Fusion Bolt', + effect: 'The user throws down a giant lightning bolt. This move\'s power is increased when influenced by an enormous flame.' }, - "flyingPress": { - name: "Flying Press", - effect: "The user dives down onto the target from the sky. This move is Fighting and Flying type simultaneously." + 'flyingPress': { + name: 'Flying Press', + effect: 'The user dives down onto the target from the sky. This move is Fighting and Flying type simultaneously.' }, - "matBlock": { - name: "Mat Block", - effect: "Using a pulled-up mat as a shield, the user protects itself and its allies from damaging moves. This does not stop status moves." + 'matBlock': { + name: 'Mat Block', + effect: 'Using a pulled-up mat as a shield, the user protects itself and its allies from damaging moves. This does not stop status moves.' }, - "belch": { - name: "Belch", - effect: "The user lets out a damaging belch at the target. The user must eat a held Berry to use this move." + 'belch': { + name: 'Belch', + effect: 'The user lets out a damaging belch at the target. The user must eat a held Berry to use this move.' }, - "rototiller": { - name: "Rototiller", - effect: "Tilling the soil, the user makes it easier for plants to grow. This raises the Attack and Sp. Atk stats of Grass-type Pokémon." + 'rototiller': { + name: 'Rototiller', + effect: 'Tilling the soil, the user makes it easier for plants to grow. This raises the Attack and Sp. Atk stats of Grass-type Pokémon.' }, - "stickyWeb": { - name: "Sticky Web", - effect: "The user weaves a sticky net around the opposing team, which lowers their Speed stats upon switching into battle." + 'stickyWeb': { + name: 'Sticky Web', + effect: 'The user weaves a sticky net around the opposing team, which lowers their Speed stats upon switching into battle.' }, - "fellStinger": { - name: "Fell Stinger", - effect: "When the user knocks out a target with this move, the user's Attack stat rises drastically." + 'fellStinger': { + name: 'Fell Stinger', + effect: 'When the user knocks out a target with this move, the user\'s Attack stat rises drastically.' }, - "phantomForce": { - name: "Phantom Force", - effect: "The user vanishes somewhere, then strikes the target on the next turn. This move hits even if the target protects itself." + 'phantomForce': { + name: 'Phantom Force', + effect: 'The user vanishes somewhere, then strikes the target on the next turn. This move hits even if the target protects itself.' }, - "trickOrTreat": { - name: "Trick-or-Treat", - effect: "The user takes the target trick-or-treating. This adds Ghost type to the target's type." + 'trickOrTreat': { + name: 'Trick-or-Treat', + effect: 'The user takes the target trick-or-treating. This adds Ghost type to the target\'s type.' }, - "nobleRoar": { - name: "Noble Roar", - effect: "Letting out a noble roar, the user intimidates the target and lowers its Attack and Sp. Atk stats." + 'nobleRoar': { + name: 'Noble Roar', + effect: 'Letting out a noble roar, the user intimidates the target and lowers its Attack and Sp. Atk stats.' }, - "ionDeluge": { - name: "Ion Deluge", - effect: "The user disperses electrically charged particles, which changes Normal-type moves to Electric-type moves." + 'ionDeluge': { + name: 'Ion Deluge', + effect: 'The user disperses electrically charged particles, which changes Normal-type moves to Electric-type moves.' }, - "parabolicCharge": { - name: "Parabolic Charge", - effect: "The user attacks everything around it. The user's HP is restored by half the damage taken by those hit." + 'parabolicCharge': { + name: 'Parabolic Charge', + effect: 'The user attacks everything around it. The user\'s HP is restored by half the damage taken by those hit.' }, - "forestsCurse": { - name: "Forest's Curse", - effect: "The user puts a forest curse on the target. The target is now Grass type as well." + 'forestsCurse': { + name: 'Forest\'s Curse', + effect: 'The user puts a forest curse on the target. The target is now Grass type as well.' }, - "petalBlizzard": { - name: "Petal Blizzard", - effect: "The user stirs up a violent petal blizzard and attacks everything around it." + 'petalBlizzard': { + name: 'Petal Blizzard', + effect: 'The user stirs up a violent petal blizzard and attacks everything around it.' }, - "freezeDry": { - name: "Freeze-Dry", - effect: "The user rapidly cools the target. This may also leave the target frozen. This move is super effective on Water types." + 'freezeDry': { + name: 'Freeze-Dry', + effect: 'The user rapidly cools the target. This may also leave the target frozen. This move is super effective on Water types.' }, - "disarmingVoice": { - name: "Disarming Voice", - effect: "Letting out a charming cry, the user does emotional damage to opposing Pokémon. This attack never misses." + 'disarmingVoice': { + name: 'Disarming Voice', + effect: 'Letting out a charming cry, the user does emotional damage to opposing Pokémon. This attack never misses.' }, - "partingShot": { - name: "Parting Shot", - effect: "With a parting threat, the user lowers the target's Attack and Sp. Atk stats. Then it switches with a party Pokémon." + 'partingShot': { + name: 'Parting Shot', + effect: 'With a parting threat, the user lowers the target\'s Attack and Sp. Atk stats. Then it switches with a party Pokémon.' }, - "topsyTurvy": { - name: "Topsy-Turvy", - effect: "All stat changes affecting the target turn topsy-turvy and become the opposite of what they were." + 'topsyTurvy': { + name: 'Topsy-Turvy', + effect: 'All stat changes affecting the target turn topsy-turvy and become the opposite of what they were.' }, - "drainingKiss": { - name: "Draining Kiss", - effect: "The user steals the target's HP with a kiss. The user's HP is restored by over half of the damage taken by the target." + 'drainingKiss': { + name: 'Draining Kiss', + effect: 'The user steals the target\'s HP with a kiss. The user\'s HP is restored by over half of the damage taken by the target.' }, - "craftyShield": { - name: "Crafty Shield", - effect: "The user protects itself and its allies from status moves with a mysterious power. This does not stop moves that do damage." + 'craftyShield': { + name: 'Crafty Shield', + effect: 'The user protects itself and its allies from status moves with a mysterious power. This does not stop moves that do damage.' }, - "flowerShield": { - name: "Flower Shield", - effect: "The user raises the Defense stats of all Grass-type Pokémon in battle with a mysterious power." + 'flowerShield': { + name: 'Flower Shield', + effect: 'The user raises the Defense stats of all Grass-type Pokémon in battle with a mysterious power.' }, - "grassyTerrain": { - name: "Grassy Terrain", - effect: "The user turns the ground to grass for five turns. This restores the HP of Pokémon on the ground a little every turn and powers up Grass-type moves." + 'grassyTerrain': { + name: 'Grassy Terrain', + effect: 'The user turns the ground to grass for five turns. This restores the HP of Pokémon on the ground a little every turn and powers up Grass-type moves.' }, - "mistyTerrain": { - name: "Misty Terrain", - effect: "This protects Pokémon on the ground from status conditions and halves damage from Dragon-type moves for five turns." + 'mistyTerrain': { + name: 'Misty Terrain', + effect: 'This protects Pokémon on the ground from status conditions and halves damage from Dragon-type moves for five turns.' }, - "electrify": { - name: "Electrify", - effect: "If the target is electrified before it uses a move during that turn, the target's move becomes Electric type." + 'electrify': { + name: 'Electrify', + effect: 'If the target is electrified before it uses a move during that turn, the target\'s move becomes Electric type.' }, - "playRough": { - name: "Play Rough", - effect: "The user plays rough with the target and attacks it. This may also lower the target's Attack stat." + 'playRough': { + name: 'Play Rough', + effect: 'The user plays rough with the target and attacks it. This may also lower the target\'s Attack stat.' }, - "fairyWind": { - name: "Fairy Wind", - effect: "The user stirs up a fairy wind and strikes the target with it." + 'fairyWind': { + name: 'Fairy Wind', + effect: 'The user stirs up a fairy wind and strikes the target with it.' }, - "moonblast": { - name: "Moonblast", - effect: "Borrowing the power of the moon, the user attacks the target. This may also lower the target's Sp. Atk stat." + 'moonblast': { + name: 'Moonblast', + effect: 'Borrowing the power of the moon, the user attacks the target. This may also lower the target\'s Sp. Atk stat.' }, - "boomburst": { - name: "Boomburst", - effect: "The user attacks everything around it with the destructive power of a terrible, explosive sound." + 'boomburst': { + name: 'Boomburst', + effect: 'The user attacks everything around it with the destructive power of a terrible, explosive sound.' }, - "fairyLock": { - name: "Fairy Lock", - effect: "By locking down the battlefield, the user keeps all Pokémon from fleeing during the next turn." + 'fairyLock': { + name: 'Fairy Lock', + effect: 'By locking down the battlefield, the user keeps all Pokémon from fleeing during the next turn.' }, - "kingsShield": { - name: "King's Shield", - effect: "The user takes a defensive stance while it protects itself from damage. It also lowers the Attack stat of any attacker that makes direct contact." + 'kingsShield': { + name: 'King\'s Shield', + effect: 'The user takes a defensive stance while it protects itself from damage. It also lowers the Attack stat of any attacker that makes direct contact.' }, - "playNice": { - name: "Play Nice", - effect: "The user and the target become friends, and the target loses its will to fight. This lowers the target's Attack stat." + 'playNice': { + name: 'Play Nice', + effect: 'The user and the target become friends, and the target loses its will to fight. This lowers the target\'s Attack stat.' }, - "confide": { - name: "Confide", - effect: "The user tells the target a secret, and the target loses its ability to concentrate. This lowers the target's Sp. Atk stat." + 'confide': { + name: 'Confide', + effect: 'The user tells the target a secret, and the target loses its ability to concentrate. This lowers the target\'s Sp. Atk stat.' }, - "diamondStorm": { - name: "Diamond Storm", - effect: "The user whips up a storm of diamonds to damage opposing Pokémon. This may also sharply raise the user's Defense stat." + 'diamondStorm': { + name: 'Diamond Storm', + effect: 'The user whips up a storm of diamonds to damage opposing Pokémon. This may also sharply raise the user\'s Defense stat.' }, - "steamEruption": { - name: "Steam Eruption", - effect: "The user immerses the target in superheated steam. This may also leave the target with a burn." + 'steamEruption': { + name: 'Steam Eruption', + effect: 'The user immerses the target in superheated steam. This may also leave the target with a burn.' }, - "hyperspaceHole": { - name: "Hyperspace Hole", - effect: "Using a hyperspace hole, the user appears right next to the target and strikes. This also hits a target using a move such as Protect or Detect." + 'hyperspaceHole': { + name: 'Hyperspace Hole', + effect: 'Using a hyperspace hole, the user appears right next to the target and strikes. This also hits a target using a move such as Protect or Detect.' }, - "waterShuriken": { - name: "Water Shuriken", - effect: "The user hits the target with throwing stars two to five times in a row. This move always goes first." + 'waterShuriken': { + name: 'Water Shuriken', + effect: 'The user hits the target with throwing stars two to five times in a row. This move always goes first.' }, - "mysticalFire": { - name: "Mystical Fire", - effect: "The user attacks by breathing a special, hot fire. This also lowers the target's Sp. Atk stat." + 'mysticalFire': { + name: 'Mystical Fire', + effect: 'The user attacks by breathing a special, hot fire. This also lowers the target\'s Sp. Atk stat.' }, - "spikyShield": { - name: "Spiky Shield", - effect: "In addition to protecting the user from attacks, this move also damages any attacker that makes direct contact." + 'spikyShield': { + name: 'Spiky Shield', + effect: 'In addition to protecting the user from attacks, this move also damages any attacker that makes direct contact.' }, - "aromaticMist": { - name: "Aromatic Mist", - effect: "The user raises the Sp. Def stat of an ally Pokémon by using a mysterious aroma." + 'aromaticMist': { + name: 'Aromatic Mist', + effect: 'The user raises the Sp. Def stat of an ally Pokémon by using a mysterious aroma.' }, - "eerieImpulse": { - name: "Eerie Impulse", - effect: "The user's body generates an eerie impulse. Exposing the target to it harshly lowers the target's Sp. Atk stat." + 'eerieImpulse': { + name: 'Eerie Impulse', + effect: 'The user\'s body generates an eerie impulse. Exposing the target to it harshly lowers the target\'s Sp. Atk stat.' }, - "venomDrench": { - name: "Venom Drench", - effect: "Opposing Pokémon are drenched in an odd poisonous liquid. This lowers the Attack, Sp. Atk, and Speed stats of a poisoned target." + 'venomDrench': { + name: 'Venom Drench', + effect: 'Opposing Pokémon are drenched in an odd poisonous liquid. This lowers the Attack, Sp. Atk, and Speed stats of a poisoned target.' }, - "powder": { - name: "Powder", - effect: "The user covers the target in a combustible powder. If the target uses a Fire-type move, the powder explodes and damages the target." + 'powder': { + name: 'Powder', + effect: 'The user covers the target in a combustible powder. If the target uses a Fire-type move, the powder explodes and damages the target.' }, - "geomancy": { - name: "Geomancy", - effect: "The user absorbs energy and sharply raises its Sp. Atk, Sp. Def, and Speed stats on the next turn." + 'geomancy': { + name: 'Geomancy', + effect: 'The user absorbs energy and sharply raises its Sp. Atk, Sp. Def, and Speed stats on the next turn.' }, - "magneticFlux": { - name: "Magnetic Flux", - effect: "The user manipulates magnetic fields, which raises the Defense and Sp. Def stats of ally Pokémon with the Plus or Minus Ability." + 'magneticFlux': { + name: 'Magnetic Flux', + effect: 'The user manipulates magnetic fields, which raises the Defense and Sp. Def stats of ally Pokémon with the Plus or Minus Ability.' }, - "happyHour": { - name: "Happy Hour", - effect: "Using Happy Hour doubles the amount of prize money received after battle." + 'happyHour': { + name: 'Happy Hour', + effect: 'Using Happy Hour doubles the amount of prize money received after battle.' }, - "electricTerrain": { - name: "Electric Terrain", - effect: "The user electrifies the ground for five turns, powering up Electric-type moves. Pokémon on the ground no longer fall asleep." + 'electricTerrain': { + name: 'Electric Terrain', + effect: 'The user electrifies the ground for five turns, powering up Electric-type moves. Pokémon on the ground no longer fall asleep.' }, - "dazzlingGleam": { - name: "Dazzling Gleam", - effect: "The user damages opposing Pokémon by emitting a powerful flash." + 'dazzlingGleam': { + name: 'Dazzling Gleam', + effect: 'The user damages opposing Pokémon by emitting a powerful flash.' }, - "celebrate": { - name: "Celebrate", - effect: "The Pokémon congratulates you on your special day!" + 'celebrate': { + name: 'Celebrate', + effect: 'The Pokémon congratulates you on your special day!' }, - "holdHands": { - name: "Hold Hands", - effect: "The user and an ally hold hands. This makes them very happy." + 'holdHands': { + name: 'Hold Hands', + effect: 'The user and an ally hold hands. This makes them very happy.' }, - "babyDollEyes": { - name: "Baby-Doll Eyes", - effect: "The user stares at the target with its baby-doll eyes, which lowers the target's Attack stat. This move always goes first." + 'babyDollEyes': { + name: 'Baby-Doll Eyes', + effect: 'The user stares at the target with its baby-doll eyes, which lowers the target\'s Attack stat. This move always goes first.' }, - "nuzzle": { - name: "Nuzzle", - effect: "The user attacks by nuzzling its electrified cheeks against the target. This also leaves the target with paralysis." + 'nuzzle': { + name: 'Nuzzle', + effect: 'The user attacks by nuzzling its electrified cheeks against the target. This also leaves the target with paralysis.' }, - "holdBack": { - name: "Hold Back", - effect: "The user holds back when it attacks, and the target is left with at least 1 HP." + 'holdBack': { + name: 'Hold Back', + effect: 'The user holds back when it attacks, and the target is left with at least 1 HP.' }, - "infestation": { - name: "Infestation", - effect: "The target is infested and attacked for four to five turns. The target can't flee during this time." + 'infestation': { + name: 'Infestation', + effect: 'The target is infested and attacked for four to five turns. The target can\'t flee during this time.' }, - "powerUpPunch": { - name: "Power-Up Punch", - effect: "Striking opponents over and over makes the user's fists harder. Hitting a target raises the Attack stat." + 'powerUpPunch': { + name: 'Power-Up Punch', + effect: 'Striking opponents over and over makes the user\'s fists harder. Hitting a target raises the Attack stat.' }, - "oblivionWing": { - name: "Oblivion Wing", - effect: "The user absorbs its target's HP. The user's HP is restored by over half of the damage taken by the target." + 'oblivionWing': { + name: 'Oblivion Wing', + effect: 'The user absorbs its target\'s HP. The user\'s HP is restored by over half of the damage taken by the target.' }, - "thousandArrows": { - name: "Thousand Arrows", - effect: "This move also hits opposing Pokémon that are in the air. Those Pokémon are knocked down to the ground." + 'thousandArrows': { + name: 'Thousand Arrows', + effect: 'This move also hits opposing Pokémon that are in the air. Those Pokémon are knocked down to the ground.' }, - "thousandWaves": { - name: "Thousand Waves", - effect: "The user attacks with a wave that crawls along the ground. Those it hits can't flee from battle." + 'thousandWaves': { + name: 'Thousand Waves', + effect: 'The user attacks with a wave that crawls along the ground. Those it hits can\'t flee from battle.' }, - "landsWrath": { - name: "Land's Wrath", - effect: "The user gathers the energy of the land and focuses that power on opposing Pokémon to damage them." + 'landsWrath': { + name: 'Land\'s Wrath', + effect: 'The user gathers the energy of the land and focuses that power on opposing Pokémon to damage them.' }, - "lightOfRuin": { - name: "Light of Ruin", - effect: "Drawing power from the Eternal Flower, the user fires a powerful beam of light. This also damages the user quite a lot." + 'lightOfRuin': { + name: 'Light of Ruin', + effect: 'Drawing power from the Eternal Flower, the user fires a powerful beam of light. This also damages the user quite a lot.' }, - "originPulse": { - name: "Origin Pulse", - effect: "The user attacks opposing Pokémon with countless beams of light that glow a deep and brilliant blue." + 'originPulse': { + name: 'Origin Pulse', + effect: 'The user attacks opposing Pokémon with countless beams of light that glow a deep and brilliant blue.' }, - "precipiceBlades": { - name: "Precipice Blades", - effect: "The user attacks opposing Pokémon by manifesting the power of the land in fearsome blades of stone." + 'precipiceBlades': { + name: 'Precipice Blades', + effect: 'The user attacks opposing Pokémon by manifesting the power of the land in fearsome blades of stone.' }, - "dragonAscent": { - name: "Dragon Ascent", - effect: "After soaring upward, the user attacks its target by dropping out of the sky at high speeds. But it lowers its own Defense and Sp. Def stats in the process." + 'dragonAscent': { + name: 'Dragon Ascent', + effect: 'After soaring upward, the user attacks its target by dropping out of the sky at high speeds. But it lowers its own Defense and Sp. Def stats in the process.' }, - "hyperspaceFury": { - name: "Hyperspace Fury", - effect: "Using its many arms, the user unleashes a barrage of attacks that ignore the effects of moves like Protect and Detect. But the user's Defense stat falls." + 'hyperspaceFury': { + name: 'Hyperspace Fury', + effect: 'Using its many arms, the user unleashes a barrage of attacks that ignore the effects of moves like Protect and Detect. But the user\'s Defense stat falls.' }, - "breakneckBlitzPhysical": { - name: "Breakneck Blitz", - effect: "The user builds up its momentum using its Z-Power and crashes into the target at full speed. The power varies, depending on the original move." + 'breakneckBlitzPhysical': { + name: 'Breakneck Blitz', + effect: 'The user builds up its momentum using its Z-Power and crashes into the target at full speed. The power varies, depending on the original move.' }, - "breakneckBlitzSpecial": { - name: "Breakneck Blitz", - effect: "Dummy Data" + 'breakneckBlitzSpecial': { + name: 'Breakneck Blitz', + effect: 'Dummy Data' }, - "allOutPummelingPhysical": { - name: "All-Out Pummeling", - effect: "The user rams an energy orb created by its Z-Power into the target with full force. The power varies, depending on the original move." + 'allOutPummelingPhysical': { + name: 'All-Out Pummeling', + effect: 'The user rams an energy orb created by its Z-Power into the target with full force. The power varies, depending on the original move.' }, - "allOutPummelingSpecial": { - name: "All-Out Pummeling", - effect: "Dummy Data" + 'allOutPummelingSpecial': { + name: 'All-Out Pummeling', + effect: 'Dummy Data' }, - "supersonicSkystrikePhysical": { - name: "Supersonic Skystrike", - effect: "The user soars up with its Z-Power and plummets toward the target at full speed. The power varies, depending on the original move." + 'supersonicSkystrikePhysical': { + name: 'Supersonic Skystrike', + effect: 'The user soars up with its Z-Power and plummets toward the target at full speed. The power varies, depending on the original move.' }, - "supersonicSkystrikeSpecial": { - name: "Supersonic Skystrike", - effect: "Dummy Data" + 'supersonicSkystrikeSpecial': { + name: 'Supersonic Skystrike', + effect: 'Dummy Data' }, - "acidDownpourPhysical": { - name: "Acid Downpour", - effect: "The user creates a poisonous swamp using its Z-Power and sinks the target into it at full force. The power varies, depending on the original move." + 'acidDownpourPhysical': { + name: 'Acid Downpour', + effect: 'The user creates a poisonous swamp using its Z-Power and sinks the target into it at full force. The power varies, depending on the original move.' }, - "acidDownpourSpecial": { - name: "Acid Downpour", - effect: "Dummy Data" + 'acidDownpourSpecial': { + name: 'Acid Downpour', + effect: 'Dummy Data' }, - "tectonicRagePhysical": { - name: "Tectonic Rage", - effect: "The user burrows deep into the ground and slams into the target with the full force of its Z-Power. The power varies, depending on the original move." + 'tectonicRagePhysical': { + name: 'Tectonic Rage', + effect: 'The user burrows deep into the ground and slams into the target with the full force of its Z-Power. The power varies, depending on the original move.' }, - "tectonicRageSpecial": { - name: "Tectonic Rage", - effect: "Dummy Data" + 'tectonicRageSpecial': { + name: 'Tectonic Rage', + effect: 'Dummy Data' }, - "continentalCrushPhysical": { - name: "Continental Crush", - effect: "The user summons a huge rock mountain using its Z-Power and drops it onto the target with full force. The power varies, depending on the original move." + 'continentalCrushPhysical': { + name: 'Continental Crush', + effect: 'The user summons a huge rock mountain using its Z-Power and drops it onto the target with full force. The power varies, depending on the original move.' }, - "continentalCrushSpecial": { - name: "Continental Crush", - effect: "Dummy Data" + 'continentalCrushSpecial': { + name: 'Continental Crush', + effect: 'Dummy Data' }, - "savageSpinOutPhysical": { - name: "Savage Spin-Out", - effect: "The user binds the target with full force with threads of silk that the user spits using its Z-Power. The power varies, depending on the original move." + 'savageSpinOutPhysical': { + name: 'Savage Spin-Out', + effect: 'The user binds the target with full force with threads of silk that the user spits using its Z-Power. The power varies, depending on the original move.' }, - "savageSpinOutSpecial": { - name: "Savage Spin-Out", - effect: "Dummy Data" + 'savageSpinOutSpecial': { + name: 'Savage Spin-Out', + effect: 'Dummy Data' }, - "neverEndingNightmarePhysical": { - name: "Never-Ending Nightmare", - effect: "Deep-seated grudges summoned by the user's Z-Power trap the target. The power varies, depending on the original move." + 'neverEndingNightmarePhysical': { + name: 'Never-Ending Nightmare', + effect: 'Deep-seated grudges summoned by the user\'s Z-Power trap the target. The power varies, depending on the original move.' }, - "neverEndingNightmareSpecial": { - name: "Never-Ending Nightmare", - effect: "Dummy Data" + 'neverEndingNightmareSpecial': { + name: 'Never-Ending Nightmare', + effect: 'Dummy Data' }, - "corkscrewCrashPhysical": { - name: "Corkscrew Crash", - effect: "The user spins very fast and rams into the target with the full force of its Z-Power. The power varies, depending on the original move." + 'corkscrewCrashPhysical': { + name: 'Corkscrew Crash', + effect: 'The user spins very fast and rams into the target with the full force of its Z-Power. The power varies, depending on the original move.' }, - "corkscrewCrashSpecial": { - name: "Corkscrew Crash", - effect: "Dummy Data" + 'corkscrewCrashSpecial': { + name: 'Corkscrew Crash', + effect: 'Dummy Data' }, - "infernoOverdrivePhysical": { - name: "Inferno Overdrive", - effect: "The user breathes a stream of intense fire toward the target with the full force of its Z-Power. The power varies depending on the original move." + 'infernoOverdrivePhysical': { + name: 'Inferno Overdrive', + effect: 'The user breathes a stream of intense fire toward the target with the full force of its Z-Power. The power varies depending on the original move.' }, - "infernoOverdriveSpecial": { - name: "Inferno Overdrive", - effect: "Dummy Data" + 'infernoOverdriveSpecial': { + name: 'Inferno Overdrive', + effect: 'Dummy Data' }, - "hydroVortexPhysical": { - name: "Hydro Vortex", - effect: "The user creates a huge whirling current using its Z-Power to swallow the target with full force. The power varies, depending on the original move." + 'hydroVortexPhysical': { + name: 'Hydro Vortex', + effect: 'The user creates a huge whirling current using its Z-Power to swallow the target with full force. The power varies, depending on the original move.' }, - "hydroVortexSpecial": { - name: "Hydro Vortex", - effect: "Dummy Data" + 'hydroVortexSpecial': { + name: 'Hydro Vortex', + effect: 'Dummy Data' }, - "bloomDoomPhysical": { - name: "Bloom Doom", - effect: "The user collects energy from plants using its Z-Power and attacks the target with full force. The power varies, depending on the original move." + 'bloomDoomPhysical': { + name: 'Bloom Doom', + effect: 'The user collects energy from plants using its Z-Power and attacks the target with full force. The power varies, depending on the original move.' }, - "bloomDoomSpecial": { - name: "Bloom Doom", - effect: "Dummy Data" + 'bloomDoomSpecial': { + name: 'Bloom Doom', + effect: 'Dummy Data' }, - "gigavoltHavocPhysical": { - name: "Gigavolt Havoc", - effect: "The user hits the target with a powerful electric current collected by its Z-Power. The power varies, depending on the original move." + 'gigavoltHavocPhysical': { + name: 'Gigavolt Havoc', + effect: 'The user hits the target with a powerful electric current collected by its Z-Power. The power varies, depending on the original move.' }, - "gigavoltHavocSpecial": { - name: "Gigavolt Havoc", - effect: "Dummy Data" + 'gigavoltHavocSpecial': { + name: 'Gigavolt Havoc', + effect: 'Dummy Data' }, - "shatteredPsychePhysical": { - name: "Shattered Psyche", - effect: "The user controls the target with its Z-Power and hurts the target with full force. The power varies, depending on the original move." + 'shatteredPsychePhysical': { + name: 'Shattered Psyche', + effect: 'The user controls the target with its Z-Power and hurts the target with full force. The power varies, depending on the original move.' }, - "shatteredPsycheSpecial": { - name: "Shattered Psyche", - effect: "Dummy Data" + 'shatteredPsycheSpecial': { + name: 'Shattered Psyche', + effect: 'Dummy Data' }, - "subzeroSlammerPhysical": { - name: "Subzero Slammer", - effect: "The user dramatically drops the temperature using its Z-Power and freezes the target with full force. The power varies, depending on the original move." + 'subzeroSlammerPhysical': { + name: 'Subzero Slammer', + effect: 'The user dramatically drops the temperature using its Z-Power and freezes the target with full force. The power varies, depending on the original move.' }, - "subzeroSlammerSpecial": { - name: "Subzero Slammer", - effect: "Dummy Data" + 'subzeroSlammerSpecial': { + name: 'Subzero Slammer', + effect: 'Dummy Data' }, - "devastatingDrakePhysical": { - name: "Devastating Drake", - effect: "The user materializes its aura using its Z-Power and attacks the target with full force. The power varies, depending on the original move." + 'devastatingDrakePhysical': { + name: 'Devastating Drake', + effect: 'The user materializes its aura using its Z-Power and attacks the target with full force. The power varies, depending on the original move.' }, - "devastatingDrakeSpecial": { - name: "Devastating Drake", - effect: "Dummy Data" + 'devastatingDrakeSpecial': { + name: 'Devastating Drake', + effect: 'Dummy Data' }, - "blackHoleEclipsePhysical": { - name: "Black Hole Eclipse", - effect: "The user gathers dark energy using its Z-Power and sucks the target into it. The power varies, depending on the original move." + 'blackHoleEclipsePhysical': { + name: 'Black Hole Eclipse', + effect: 'The user gathers dark energy using its Z-Power and sucks the target into it. The power varies, depending on the original move.' }, - "blackHoleEclipseSpecial": { - name: "Black Hole Eclipse", - effect: "Dummy Data" + 'blackHoleEclipseSpecial': { + name: 'Black Hole Eclipse', + effect: 'Dummy Data' }, - "twinkleTacklePhysical": { - name: "Twinkle Tackle", - effect: "The user creates a very charming space using its Z-Power and totally toys with the target. The power varies, depending on the original move." + 'twinkleTacklePhysical': { + name: 'Twinkle Tackle', + effect: 'The user creates a very charming space using its Z-Power and totally toys with the target. The power varies, depending on the original move.' }, - "twinkleTackleSpecial": { - name: "Twinkle Tackle", - effect: "Dummy Data" + 'twinkleTackleSpecial': { + name: 'Twinkle Tackle', + effect: 'Dummy Data' }, - "catastropika": { - name: "Catastropika", - effect: "The user, Pikachu, surrounds itself with the maximum amount of electricity using its Z-Power and pounces on its target with full force." + 'catastropika': { + name: 'Catastropika', + effect: 'The user, Pikachu, surrounds itself with the maximum amount of electricity using its Z-Power and pounces on its target with full force.' }, - "shoreUp": { - name: "Shore Up", - effect: "The user regains up to half of its max HP. It restores more HP in a sandstorm." + 'shoreUp': { + name: 'Shore Up', + effect: 'The user regains up to half of its max HP. It restores more HP in a sandstorm.' }, - "firstImpression": { - name: "First Impression", - effect: "Although this move has great power, it only works the first turn each time the user enters battle." + 'firstImpression': { + name: 'First Impression', + effect: 'Although this move has great power, it only works the first turn each time the user enters battle.' }, - "banefulBunker": { - name: "Baneful Bunker", - effect: "In addition to protecting the user from attacks, this move also poisons any attacker that makes direct contact." + 'banefulBunker': { + name: 'Baneful Bunker', + effect: 'In addition to protecting the user from attacks, this move also poisons any attacker that makes direct contact.' }, - "spiritShackle": { - name: "Spirit Shackle", - effect: "The user attacks while simultaneously stitching the target's shadow to the ground to prevent the target from escaping." + 'spiritShackle': { + name: 'Spirit Shackle', + effect: 'The user attacks while simultaneously stitching the target\'s shadow to the ground to prevent the target from escaping.' }, - "darkestLariat": { - name: "Darkest Lariat", - effect: "The user swings both arms and hits the target. The target's stat changes don't affect this attack's damage." + 'darkestLariat': { + name: 'Darkest Lariat', + effect: 'The user swings both arms and hits the target. The target\'s stat changes don\'t affect this attack\'s damage.' }, - "sparklingAria": { - name: "Sparkling Aria", - effect: "The user bursts into song, emitting many bubbles. Any Pokémon suffering from a burn will be healed by the touch of these bubbles." + 'sparklingAria': { + name: 'Sparkling Aria', + effect: 'The user bursts into song, emitting many bubbles. Any Pokémon suffering from a burn will be healed by the touch of these bubbles.' }, - "iceHammer": { - name: "Ice Hammer", - effect: "The user swings and hits with its strong, heavy fist. It lowers the user's Speed, however." + 'iceHammer': { + name: 'Ice Hammer', + effect: 'The user swings and hits with its strong, heavy fist. It lowers the user\'s Speed, however.' }, - "floralHealing": { - name: "Floral Healing", - effect: "The user restores the target's HP by up to half of its max HP. It restores more HP when the terrain is grass." + 'floralHealing': { + name: 'Floral Healing', + effect: 'The user restores the target\'s HP by up to half of its max HP. It restores more HP when the terrain is grass.' }, - "highHorsepower": { - name: "High Horsepower", - effect: "The user fiercely attacks the target using its entire body." + 'highHorsepower': { + name: 'High Horsepower', + effect: 'The user fiercely attacks the target using its entire body.' }, - "strengthSap": { - name: "Strength Sap", - effect: "The user restores its HP by the same amount as the target's Attack stat. It also lowers the target's Attack stat." + 'strengthSap': { + name: 'Strength Sap', + effect: 'The user restores its HP by the same amount as the target\'s Attack stat. It also lowers the target\'s Attack stat.' }, - "solarBlade": { - name: "Solar Blade", - effect: "In this two-turn attack, the user gathers light and fills a blade with the light's energy, attacking the target on the next turn." + 'solarBlade': { + name: 'Solar Blade', + effect: 'In this two-turn attack, the user gathers light and fills a blade with the light\'s energy, attacking the target on the next turn.' }, - "leafage": { - name: "Leafage", - effect: "The user attacks by pelting the target with leaves." + 'leafage': { + name: 'Leafage', + effect: 'The user attacks by pelting the target with leaves.' }, - "spotlight": { - name: "Spotlight", - effect: "The user shines a spotlight on the target so that only the target will be attacked during the turn." + 'spotlight': { + name: 'Spotlight', + effect: 'The user shines a spotlight on the target so that only the target will be attacked during the turn.' }, - "toxicThread": { - name: "Toxic Thread", - effect: "The user shoots poisonous threads to poison the target and lower the target's Speed stat." + 'toxicThread': { + name: 'Toxic Thread', + effect: 'The user shoots poisonous threads to poison the target and lower the target\'s Speed stat.' }, - "laserFocus": { - name: "Laser Focus", - effect: "The user concentrates intensely. The attack on the next turn always results in a critical hit." + 'laserFocus': { + name: 'Laser Focus', + effect: 'The user concentrates intensely. The attack on the next turn always results in a critical hit.' }, - "gearUp": { - name: "Gear Up", - effect: "The user engages its gears to raise the Attack and Sp. Atk stats of ally Pokémon with the Plus or Minus Ability." + 'gearUp': { + name: 'Gear Up', + effect: 'The user engages its gears to raise the Attack and Sp. Atk stats of ally Pokémon with the Plus or Minus Ability.' }, - "throatChop": { - name: "Throat Chop", - effect: "The user attacks the target's throat, and the resultant suffering prevents the target from using moves that emit sound for two turns." + 'throatChop': { + name: 'Throat Chop', + effect: 'The user attacks the target\'s throat, and the resultant suffering prevents the target from using moves that emit sound for two turns.' }, - "pollenPuff": { - name: "Pollen Puff", - effect: "The user attacks the enemy with a pollen puff that explodes. If the target is an ally, it gives the ally a pollen puff that restores its HP instead." + 'pollenPuff': { + name: 'Pollen Puff', + effect: 'The user attacks the enemy with a pollen puff that explodes. If the target is an ally, it gives the ally a pollen puff that restores its HP instead.' }, - "anchorShot": { - name: "Anchor Shot", - effect: "The user entangles the target with its anchor chain while attacking. The target becomes unable to flee." + 'anchorShot': { + name: 'Anchor Shot', + effect: 'The user entangles the target with its anchor chain while attacking. The target becomes unable to flee.' }, - "psychicTerrain": { - name: "Psychic Terrain", - effect: "This protects Pokémon on the ground from priority moves and powers up Psychic-type moves for five turns." + 'psychicTerrain': { + name: 'Psychic Terrain', + effect: 'This protects Pokémon on the ground from priority moves and powers up Psychic-type moves for five turns.' }, - "lunge": { - name: "Lunge", - effect: "The user makes a lunge at the target, attacking with full force. This also lowers the target's Attack stat." + 'lunge': { + name: 'Lunge', + effect: 'The user makes a lunge at the target, attacking with full force. This also lowers the target\'s Attack stat.' }, - "fireLash": { - name: "Fire Lash", - effect: "The user strikes the target with a burning lash. This also lowers the target's Defense stat." + 'fireLash': { + name: 'Fire Lash', + effect: 'The user strikes the target with a burning lash. This also lowers the target\'s Defense stat.' }, - "powerTrip": { - name: "Power Trip", - effect: "The user boasts its strength and attacks the target. The more the user's stats are raised, the greater the move's power." + 'powerTrip': { + name: 'Power Trip', + effect: 'The user boasts its strength and attacks the target. The more the user\'s stats are raised, the greater the move\'s power.' }, - "burnUp": { - name: "Burn Up", - effect: "To inflict massive damage, the user burns itself out. After using this move, the user will no longer be Fire type." + 'burnUp': { + name: 'Burn Up', + effect: 'To inflict massive damage, the user burns itself out. After using this move, the user will no longer be Fire type.' }, - "speedSwap": { - name: "Speed Swap", - effect: "The user exchanges Speed stats with the target." + 'speedSwap': { + name: 'Speed Swap', + effect: 'The user exchanges Speed stats with the target.' }, - "smartStrike": { - name: "Smart Strike", - effect: "The user stabs the target with a sharp horn. This attack never misses." + 'smartStrike': { + name: 'Smart Strike', + effect: 'The user stabs the target with a sharp horn. This attack never misses.' }, - "purify": { - name: "Purify", - effect: "The user heals the target's status condition. If the move succeeds, it also restores the user's own HP." + 'purify': { + name: 'Purify', + effect: 'The user heals the target\'s status condition. If the move succeeds, it also restores the user\'s own HP.' }, - "revelationDance": { - name: "Revelation Dance", - effect: "The user attacks the target by dancing very hard. The user's type determines the type of this move." + 'revelationDance': { + name: 'Revelation Dance', + effect: 'The user attacks the target by dancing very hard. The user\'s type determines the type of this move.' }, - "coreEnforcer": { - name: "Core Enforcer", - effect: "If the Pokémon the user has inflicted damage on have already used their moves, this move eliminates the effect of the target's Ability." + 'coreEnforcer': { + name: 'Core Enforcer', + effect: 'If the Pokémon the user has inflicted damage on have already used their moves, this move eliminates the effect of the target\'s Ability.' }, - "tropKick": { - name: "Trop Kick", - effect: "The user lands an intense kick of tropical origins on the target. This also lowers the target's Attack stat." + 'tropKick': { + name: 'Trop Kick', + effect: 'The user lands an intense kick of tropical origins on the target. This also lowers the target\'s Attack stat.' }, - "instruct": { - name: "Instruct", - effect: "The user instructs the target to use the target's last move again." + 'instruct': { + name: 'Instruct', + effect: 'The user instructs the target to use the target\'s last move again.' }, - "beakBlast": { - name: "Beak Blast", - effect: "The user first heats up its beak, and then it attacks the target. Making direct contact with the Pokémon while it's heating up its beak results in a burn." + 'beakBlast': { + name: 'Beak Blast', + effect: 'The user first heats up its beak, and then it attacks the target. Making direct contact with the Pokémon while it\'s heating up its beak results in a burn.' }, - "clangingScales": { - name: "Clanging Scales", - effect: "The user rubs the scales on its entire body and makes a huge noise to attack opposing Pokémon. The user's Defense stat goes down after the attack." + 'clangingScales': { + name: 'Clanging Scales', + effect: 'The user rubs the scales on its entire body and makes a huge noise to attack opposing Pokémon. The user\'s Defense stat goes down after the attack.' }, - "dragonHammer": { - name: "Dragon Hammer", - effect: "The user uses its body like a hammer to attack the target and inflict damage." + 'dragonHammer': { + name: 'Dragon Hammer', + effect: 'The user uses its body like a hammer to attack the target and inflict damage.' }, - "brutalSwing": { - name: "Brutal Swing", - effect: "The user swings its body around violently to inflict damage on everything in its vicinity." + 'brutalSwing': { + name: 'Brutal Swing', + effect: 'The user swings its body around violently to inflict damage on everything in its vicinity.' }, - "auroraVeil": { - name: "Aurora Veil", - effect: "This move reduces damage from physical and special moves for five turns. This can be used only when it is snowing." + 'auroraVeil': { + name: 'Aurora Veil', + effect: 'This move reduces damage from physical and special moves for five turns. This can be used only when it is snowing.' }, - "sinisterArrowRaid": { - name: "Sinister Arrow Raid", - effect: "The user, Decidueye, creates countless arrows using its Z-Power and shoots the target with full force." + 'sinisterArrowRaid': { + name: 'Sinister Arrow Raid', + effect: 'The user, Decidueye, creates countless arrows using its Z-Power and shoots the target with full force.' }, - "maliciousMoonsault": { - name: "Malicious Moonsault", - effect: "The user, Incineroar, strengthens its body using its Z-Power and crashes into the target with full force." + 'maliciousMoonsault': { + name: 'Malicious Moonsault', + effect: 'The user, Incineroar, strengthens its body using its Z-Power and crashes into the target with full force.' }, - "oceanicOperetta": { - name: "Oceanic Operetta", - effect: "The user, Primarina, summons a massive amount of water using its Z-Power and attacks the target with full force." + 'oceanicOperetta': { + name: 'Oceanic Operetta', + effect: 'The user, Primarina, summons a massive amount of water using its Z-Power and attacks the target with full force.' }, - "guardianOfAlola": { - name: "Guardian of Alola", - effect: "The user, the Land Spirit Pokémon, obtains Alola's energy using its Z-Power and attacks the target with full force. This reduces the target's HP greatly." + 'guardianOfAlola': { + name: 'Guardian of Alola', + effect: 'The user, the Land Spirit Pokémon, obtains Alola\'s energy using its Z-Power and attacks the target with full force. This reduces the target\'s HP greatly.' }, - "soulStealing7StarStrike": { - name: "Soul-Stealing 7-Star Strike", - effect: "After obtaining Z-Power, the user, Marshadow, punches and kicks the target consecutively with full force." + 'soulStealing7StarStrike': { + name: 'Soul-Stealing 7-Star Strike', + effect: 'After obtaining Z-Power, the user, Marshadow, punches and kicks the target consecutively with full force.' }, - "stokedSparksurfer": { - name: "Stoked Sparksurfer", - effect: "After obtaining Z-Power, the user, Alolan Raichu, attacks the target with full force. This move leaves the target with paralysis." + 'stokedSparksurfer': { + name: 'Stoked Sparksurfer', + effect: 'After obtaining Z-Power, the user, Alolan Raichu, attacks the target with full force. This move leaves the target with paralysis.' }, - "pulverizingPancake": { - name: "Pulverizing Pancake", - effect: "Z-Power brings out the true capabilities of the user, Snorlax. The Pokémon moves its enormous body energetically and attacks the target with full force." + 'pulverizingPancake': { + name: 'Pulverizing Pancake', + effect: 'Z-Power brings out the true capabilities of the user, Snorlax. The Pokémon moves its enormous body energetically and attacks the target with full force.' }, - "extremeEvoboost": { - name: "Extreme Evoboost", - effect: "After obtaining Z-Power, the user, Eevee, gets energy from its evolved friends and boosts its stats sharply." + 'extremeEvoboost': { + name: 'Extreme Evoboost', + effect: 'After obtaining Z-Power, the user, Eevee, gets energy from its evolved friends and boosts its stats sharply.' }, - "genesisSupernova": { - name: "Genesis Supernova", - effect: "After obtaining Z-Power, the user, Mew, attacks the target with full force. The terrain will be charged with psychic energy." + 'genesisSupernova': { + name: 'Genesis Supernova', + effect: 'After obtaining Z-Power, the user, Mew, attacks the target with full force. The terrain will be charged with psychic energy.' }, - "shellTrap": { - name: "Shell Trap", - effect: "The user sets a shell trap. If the user is hit by a physical move, the trap will explode and inflict damage on opposing Pokémon." + 'shellTrap': { + name: 'Shell Trap', + effect: 'The user sets a shell trap. If the user is hit by a physical move, the trap will explode and inflict damage on opposing Pokémon.' }, - "fleurCannon": { - name: "Fleur Cannon", - effect: "The user unleashes a strong beam. The attack's recoil harshly lowers the user's Sp. Atk stat." + 'fleurCannon': { + name: 'Fleur Cannon', + effect: 'The user unleashes a strong beam. The attack\'s recoil harshly lowers the user\'s Sp. Atk stat.' }, - "psychicFangs": { - name: "Psychic Fangs", - effect: "The user bites the target with its psychic capabilities. This can also destroy Light Screen and Reflect." + 'psychicFangs': { + name: 'Psychic Fangs', + effect: 'The user bites the target with its psychic capabilities. This can also destroy Light Screen and Reflect.' }, - "stompingTantrum": { - name: "Stomping Tantrum", - effect: "Driven by frustration, the user attacks the target. If the user's previous move has failed, the power of this move doubles." + 'stompingTantrum': { + name: 'Stomping Tantrum', + effect: 'Driven by frustration, the user attacks the target. If the user\'s previous move has failed, the power of this move doubles.' }, - "shadowBone": { - name: "Shadow Bone", - effect: "The user attacks by beating the target with a bone that contains a spirit. This may also lower the target's Defense stat." + 'shadowBone': { + name: 'Shadow Bone', + effect: 'The user attacks by beating the target with a bone that contains a spirit. This may also lower the target\'s Defense stat.' }, - "accelerock": { - name: "Accelerock", - effect: "The user smashes into the target at high speed. This move always goes first." + 'accelerock': { + name: 'Accelerock', + effect: 'The user smashes into the target at high speed. This move always goes first.' }, - "liquidation": { - name: "Liquidation", - effect: "The user slams into the target using a full-force blast of water. This may also lower the target's Defense stat." + 'liquidation': { + name: 'Liquidation', + effect: 'The user slams into the target using a full-force blast of water. This may also lower the target\'s Defense stat.' }, - "prismaticLaser": { - name: "Prismatic Laser", - effect: "The user shoots powerful lasers using the power of a prism. The user can't move on the next turn." + 'prismaticLaser': { + name: 'Prismatic Laser', + effect: 'The user shoots powerful lasers using the power of a prism. The user can\'t move on the next turn.' }, - "spectralThief": { - name: "Spectral Thief", - effect: "The user hides in the target's shadow, steals the target's stat boosts, and then attacks." + 'spectralThief': { + name: 'Spectral Thief', + effect: 'The user hides in the target\'s shadow, steals the target\'s stat boosts, and then attacks.' }, - "sunsteelStrike": { - name: "Sunsteel Strike", - effect: "The user slams into the target with the force of a meteor. This move can be used on the target regardless of its Abilities." + 'sunsteelStrike': { + name: 'Sunsteel Strike', + effect: 'The user slams into the target with the force of a meteor. This move can be used on the target regardless of its Abilities.' }, - "moongeistBeam": { - name: "Moongeist Beam", - effect: "The user emits a sinister ray to attack the target. This move can be used on the target regardless of its Abilities." + 'moongeistBeam': { + name: 'Moongeist Beam', + effect: 'The user emits a sinister ray to attack the target. This move can be used on the target regardless of its Abilities.' }, - "tearfulLook": { - name: "Tearful Look", - effect: "The user gets teary eyed to make the target lose its combative spirit. This lowers the target's Attack and Sp. Atk stats." + 'tearfulLook': { + name: 'Tearful Look', + effect: 'The user gets teary eyed to make the target lose its combative spirit. This lowers the target\'s Attack and Sp. Atk stats.' }, - "zingZap": { - name: "Zing Zap", - effect: "A strong electric blast crashes down on the target, giving it an electric shock. This may also make the target flinch." + 'zingZap': { + name: 'Zing Zap', + effect: 'A strong electric blast crashes down on the target, giving it an electric shock. This may also make the target flinch.' }, - "naturesMadness": { - name: "Nature's Madness", - effect: "The user hits the target with the force of nature. It halves the target's HP." + 'naturesMadness': { + name: 'Nature\'s Madness', + effect: 'The user hits the target with the force of nature. It halves the target\'s HP.' }, - "multiAttack": { - name: "Multi-Attack", - effect: "Cloaking itself in high energy, the user slams into the target. The memory held determines the move's type." + 'multiAttack': { + name: 'Multi-Attack', + effect: 'Cloaking itself in high energy, the user slams into the target. The memory held determines the move\'s type.' }, - "tenMillionVoltThunderbolt": { - name: "10,000,000 Volt Thunderbolt", - effect: "The user, Pikachu wearing a cap, powers up a jolt of electricity using its Z-Power and unleashes it. Critical hits land more easily." + 'tenMillionVoltThunderbolt': { + name: '10,000,000 Volt Thunderbolt', + effect: 'The user, Pikachu wearing a cap, powers up a jolt of electricity using its Z-Power and unleashes it. Critical hits land more easily.' }, - "mindBlown": { - name: "Mind Blown", - effect: "The user attacks everything around it by causing its own head to explode. This also damages the user." + 'mindBlown': { + name: 'Mind Blown', + effect: 'The user attacks everything around it by causing its own head to explode. This also damages the user.' }, - "plasmaFists": { - name: "Plasma Fists", - effect: "The user attacks with electrically charged fists. This move changes Normal-type moves to Electric-type moves." + 'plasmaFists': { + name: 'Plasma Fists', + effect: 'The user attacks with electrically charged fists. This move changes Normal-type moves to Electric-type moves.' }, - "photonGeyser": { - name: "Photon Geyser", - effect: "The user attacks a target with a pillar of light. This move inflicts Attack or Sp. Atk damage—whichever stat is higher for the user." + 'photonGeyser': { + name: 'Photon Geyser', + effect: 'The user attacks a target with a pillar of light. This move inflicts Attack or Sp. Atk damage—whichever stat is higher for the user.' }, - "lightThatBurnsTheSky": { - name: "Light That Burns the Sky", - effect: "This attack inflicts Attack or Sp. Atk damage—whichever stat is higher for the user, Necrozma. This move ignores the target's Ability." + 'lightThatBurnsTheSky': { + name: 'Light That Burns the Sky', + effect: 'This attack inflicts Attack or Sp. Atk damage—whichever stat is higher for the user, Necrozma. This move ignores the target\'s Ability.' }, - "searingSunrazeSmash": { - name: "Searing Sunraze Smash", - effect: "After obtaining Z-Power, the user, Solgaleo, attacks the target with full force. This move can ignore the effect of the target's Ability." + 'searingSunrazeSmash': { + name: 'Searing Sunraze Smash', + effect: 'After obtaining Z-Power, the user, Solgaleo, attacks the target with full force. This move can ignore the effect of the target\'s Ability.' }, - "menacingMoonrazeMaelstrom": { - name: "Menacing Moonraze Maelstrom", - effect: "After obtaining Z-Power, the user, Lunala, attacks the target with full force. This move can ignore the effect of the target's Ability." + 'menacingMoonrazeMaelstrom': { + name: 'Menacing Moonraze Maelstrom', + effect: 'After obtaining Z-Power, the user, Lunala, attacks the target with full force. This move can ignore the effect of the target\'s Ability.' }, - "letsSnuggleForever": { - name: "Let's Snuggle Forever", - effect: "After obtaining Z-Power, the user, Mimikyu, punches the target with full force." + 'letsSnuggleForever': { + name: 'Let\'s Snuggle Forever', + effect: 'After obtaining Z-Power, the user, Mimikyu, punches the target with full force.' }, - "splinteredStormshards": { - name: "Splintered Stormshards", - effect: "After obtaining Z-Power, the user, Lycanroc, attacks the target with full force. This move negates the effect on the battlefield." + 'splinteredStormshards': { + name: 'Splintered Stormshards', + effect: 'After obtaining Z-Power, the user, Lycanroc, attacks the target with full force. This move negates the effect on the battlefield.' }, - "clangorousSoulblaze": { - name: "Clangorous Soulblaze", - effect: "After obtaining Z-Power, the user, Kommo-o, attacks the opposing Pokémon with full force. This move boosts the user's stats." + 'clangorousSoulblaze': { + name: 'Clangorous Soulblaze', + effect: 'After obtaining Z-Power, the user, Kommo-o, attacks the opposing Pokémon with full force. This move boosts the user\'s stats.' }, - "zippyZap": { - name: "Zippy Zap", - effect: "The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user's evasiveness." + 'zippyZap': { + name: 'Zippy Zap', + effect: 'The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user\'s evasiveness.' }, - "splishySplash": { - name: "Splishy Splash", - effect: "The user charges a huge wave with electricity and hits the opposing Pokémon with the wave. This may also leave the opposing Pokémon with paralysis." + 'splishySplash': { + name: 'Splishy Splash', + effect: 'The user charges a huge wave with electricity and hits the opposing Pokémon with the wave. This may also leave the opposing Pokémon with paralysis.' }, - "floatyFall": { - name: "Floaty Fall", - effect: "The user floats in the air, and then dives at a steep angle to attack the target. This may also make the target flinch." + 'floatyFall': { + name: 'Floaty Fall', + effect: 'The user floats in the air, and then dives at a steep angle to attack the target. This may also make the target flinch.' }, - "pikaPapow": { - name: "Pika Papow", - effect: "The more Pikachu loves its Trainer, the greater the move's power. It never misses." + 'pikaPapow': { + name: 'Pika Papow', + effect: 'The more Pikachu loves its Trainer, the greater the move\'s power. It never misses.' }, - "bouncyBubble": { - name: "Bouncy Bubble", - effect: "The user attacks by shooting water bubbles at the target. It then absorbs water and restores its HP by half the damage taken by the target." + 'bouncyBubble': { + name: 'Bouncy Bubble', + effect: 'The user attacks by shooting water bubbles at the target. It then absorbs water and restores its HP by half the damage taken by the target.' }, - "buzzyBuzz": { - name: "Buzzy Buzz", - effect: "The user shoots a jolt of electricity to attack the target. This also leaves the target with paralysis." + 'buzzyBuzz': { + name: 'Buzzy Buzz', + effect: 'The user shoots a jolt of electricity to attack the target. This also leaves the target with paralysis.' }, - "sizzlySlide": { - name: "Sizzly Slide", - effect: "The user cloaks itself in fire and charges at the target. This also leaves the target with a burn." + 'sizzlySlide': { + name: 'Sizzly Slide', + effect: 'The user cloaks itself in fire and charges at the target. This also leaves the target with a burn.' }, - "glitzyGlow": { - name: "Glitzy Glow", - effect: "The user bombards the target with telekinetic force. A wondrous wall of light is put up to weaken the power of the opposing Pokémon's special moves." + 'glitzyGlow': { + name: 'Glitzy Glow', + effect: 'The user bombards the target with telekinetic force. A wondrous wall of light is put up to weaken the power of the opposing Pokémon\'s special moves.' }, - "baddyBad": { - name: "Baddy Bad", - effect: "The user acts bad and attacks the target. A wondrous wall of light is put up to weaken the power of the opposing Pokémon's physical moves." + 'baddyBad': { + name: 'Baddy Bad', + effect: 'The user acts bad and attacks the target. A wondrous wall of light is put up to weaken the power of the opposing Pokémon\'s physical moves.' }, - "sappySeed": { - name: "Sappy Seed", - effect: "The user grows a gigantic stalk that scatters seeds to attack the target. The seeds drain the target's HP every turn." + 'sappySeed': { + name: 'Sappy Seed', + effect: 'The user grows a gigantic stalk that scatters seeds to attack the target. The seeds drain the target\'s HP every turn.' }, - "freezyFrost": { - name: "Freezy Frost", - effect: "The user attacks with a crystal made of cold frozen haze. It eliminates every stat change among all the Pokémon engaged in battle." + 'freezyFrost': { + name: 'Freezy Frost', + effect: 'The user attacks with a crystal made of cold frozen haze. It eliminates every stat change among all the Pokémon engaged in battle.' }, - "sparklySwirl": { - name: "Sparkly Swirl", - effect: "The user attacks the target by wrapping it with a whirlwind of an overpowering scent. This also heals all status conditions of the user's party." + 'sparklySwirl': { + name: 'Sparkly Swirl', + effect: 'The user attacks the target by wrapping it with a whirlwind of an overpowering scent. This also heals all status conditions of the user\'s party.' }, - "veeveeVolley": { - name: "Veevee Volley", - effect: "The more Eevee loves its Trainer, the greater the move's power. It never misses." + 'veeveeVolley': { + name: 'Veevee Volley', + effect: 'The more Eevee loves its Trainer, the greater the move\'s power. It never misses.' }, - "doubleIronBash": { - name: "Double Iron Bash", - effect: "The user rotates, centering the hex nut in its chest, and then strikes with its arms twice in a row. This may also make the target flinch." + 'doubleIronBash': { + name: 'Double Iron Bash', + effect: 'The user rotates, centering the hex nut in its chest, and then strikes with its arms twice in a row. This may also make the target flinch.' }, - "maxGuard": { - name: "Max Guard", - effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession." + 'maxGuard': { + name: 'Max Guard', + effect: 'This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession.' }, - "dynamaxCannon": { - name: "Dynamax Cannon", - effect: "The user unleashes a strong beam from its core. This move deals twice the damage if the target is over level 200." + 'dynamaxCannon': { + name: 'Dynamax Cannon', + effect: 'The user unleashes a strong beam from its core. This move deals twice the damage if the target is over level 200.' }, - "snipeShot": { - name: "Snipe Shot", - effect: "The user ignores the effects of opposing Pokémon's moves and Abilities that draw in moves, allowing this move to hit the chosen target." + 'snipeShot': { + name: 'Snipe Shot', + effect: 'The user ignores the effects of opposing Pokémon\'s moves and Abilities that draw in moves, allowing this move to hit the chosen target.' }, - "jawLock": { - name: "Jaw Lock", - effect: "This move prevents the user and the target from switching out until either of them faints. The effect goes away if either of the Pokémon leaves the field." + 'jawLock': { + name: 'Jaw Lock', + effect: 'This move prevents the user and the target from switching out until either of them faints. The effect goes away if either of the Pokémon leaves the field.' }, - "stuffCheeks": { - name: "Stuff Cheeks", - effect: "The user eats its held Berry, then sharply raises its Defense stat." + 'stuffCheeks': { + name: 'Stuff Cheeks', + effect: 'The user eats its held Berry, then sharply raises its Defense stat.' }, - "noRetreat": { - name: "No Retreat", - effect: "This move raises all the user's stats but prevents the user from switching out or fleeing." + 'noRetreat': { + name: 'No Retreat', + effect: 'This move raises all the user\'s stats but prevents the user from switching out or fleeing.' }, - "tarShot": { - name: "Tar Shot", - effect: "The user pours sticky tar over the target, lowering the target's Speed stat. The target becomes weaker to Fire-type moves." + 'tarShot': { + name: 'Tar Shot', + effect: 'The user pours sticky tar over the target, lowering the target\'s Speed stat. The target becomes weaker to Fire-type moves.' }, - "magicPowder": { - name: "Magic Powder", - effect: "The user scatters a cloud of magic powder that changes the target to Psychic type." + 'magicPowder': { + name: 'Magic Powder', + effect: 'The user scatters a cloud of magic powder that changes the target to Psychic type.' }, - "dragonDarts": { - name: "Dragon Darts", - effect: "The user attacks twice using Dreepy. If there are two targets, this move hits each target once." + 'dragonDarts': { + name: 'Dragon Darts', + effect: 'The user attacks twice using Dreepy. If there are two targets, this move hits each target once.' }, - "teatime": { - name: "Teatime", - effect: "The user has teatime with all the Pokémon in the battle. Each Pokémon eats its held Berry." + 'teatime': { + name: 'Teatime', + effect: 'The user has teatime with all the Pokémon in the battle. Each Pokémon eats its held Berry.' }, - "octolock": { - name: "Octolock", - effect: "The user locks the target in and prevents it from fleeing. This move also lowers the target's Defense and Sp. Def every turn." + 'octolock': { + name: 'Octolock', + effect: 'The user locks the target in and prevents it from fleeing. This move also lowers the target\'s Defense and Sp. Def every turn.' }, - "boltBeak": { - name: "Bolt Beak", - effect: "The user stabs the target with its electrified beak. If the user attacks before the target, the power of this move is doubled." + 'boltBeak': { + name: 'Bolt Beak', + effect: 'The user stabs the target with its electrified beak. If the user attacks before the target, the power of this move is doubled.' }, - "fishiousRend": { - name: "Fishious Rend", - effect: "The user rends the target with its hard gills. If the user attacks before the target, the power of this move is doubled." + 'fishiousRend': { + name: 'Fishious Rend', + effect: 'The user rends the target with its hard gills. If the user attacks before the target, the power of this move is doubled.' }, - "courtChange": { - name: "Court Change", - effect: "With its mysterious power, the user swaps the effects on either side of the field." + 'courtChange': { + name: 'Court Change', + effect: 'With its mysterious power, the user swaps the effects on either side of the field.' }, - "maxFlare": { - name: "Max Flare", - effect: "This is a Fire-type attack Dynamax Pokémon use. The user intensifies the sun for five turns." + 'maxFlare': { + name: 'Max Flare', + effect: 'This is a Fire-type attack Dynamax Pokémon use. The user intensifies the sun for five turns.' }, - "maxFlutterby": { - name: "Max Flutterby", - effect: "This is a Bug-type attack Dynamax Pokémon use. This lowers the target's Sp. Atk stat." + 'maxFlutterby': { + name: 'Max Flutterby', + effect: 'This is a Bug-type attack Dynamax Pokémon use. This lowers the target\'s Sp. Atk stat.' }, - "maxLightning": { - name: "Max Lightning", - effect: "This is an Electric-type attack Dynamax Pokémon use. The user turns the ground into Electric Terrain for five turns." + 'maxLightning': { + name: 'Max Lightning', + effect: 'This is an Electric-type attack Dynamax Pokémon use. The user turns the ground into Electric Terrain for five turns.' }, - "maxStrike": { - name: "Max Strike", - effect: "This is a Normal-type attack Dynamax Pokémon use. This lowers the target's Speed stat." + 'maxStrike': { + name: 'Max Strike', + effect: 'This is a Normal-type attack Dynamax Pokémon use. This lowers the target\'s Speed stat.' }, - "maxKnuckle": { - name: "Max Knuckle", - effect: "This is a Fighting-type attack Dynamax Pokémon use. This raises ally Pokémon's Attack stats." + 'maxKnuckle': { + name: 'Max Knuckle', + effect: 'This is a Fighting-type attack Dynamax Pokémon use. This raises ally Pokémon\'s Attack stats.' }, - "maxPhantasm": { - name: "Max Phantasm", - effect: "This is a Ghost-type attack Dynamax Pokémon use. This lowers the target's Defense stat." + 'maxPhantasm': { + name: 'Max Phantasm', + effect: 'This is a Ghost-type attack Dynamax Pokémon use. This lowers the target\'s Defense stat.' }, - "maxHailstorm": { - name: "Max Hailstorm", - effect: "This is an Ice-type attack Dynamax Pokémon use. The user summons a hailstorm lasting five turns." + 'maxHailstorm': { + name: 'Max Hailstorm', + effect: 'This is an Ice-type attack Dynamax Pokémon use. The user summons a hailstorm lasting five turns.' }, - "maxOoze": { - name: "Max Ooze", - effect: "This is a Poison-type attack Dynamax Pokémon use. This raises ally Pokémon's Sp. Atk stats." + 'maxOoze': { + name: 'Max Ooze', + effect: 'This is a Poison-type attack Dynamax Pokémon use. This raises ally Pokémon\'s Sp. Atk stats.' }, - "maxGeyser": { - name: "Max Geyser", - effect: "This is a Water-type attack Dynamax Pokémon use. The user summons a heavy rain that falls for five turns." + 'maxGeyser': { + name: 'Max Geyser', + effect: 'This is a Water-type attack Dynamax Pokémon use. The user summons a heavy rain that falls for five turns.' }, - "maxAirstream": { - name: "Max Airstream", - effect: "This is a Flying-type attack Dynamax Pokémon use. This raises ally Pokémon's Speed stats." + 'maxAirstream': { + name: 'Max Airstream', + effect: 'This is a Flying-type attack Dynamax Pokémon use. This raises ally Pokémon\'s Speed stats.' }, - "maxStarfall": { - name: "Max Starfall", - effect: "This is a Fairy-type attack Dynamax Pokémon use. The user turns the ground into Misty Terrain for five turns." + 'maxStarfall': { + name: 'Max Starfall', + effect: 'This is a Fairy-type attack Dynamax Pokémon use. The user turns the ground into Misty Terrain for five turns.' }, - "maxWyrmwind": { - name: "Max Wyrmwind", - effect: "This is a Dragon-type attack Dynamax Pokémon use. This lowers the target's Attack stat." + 'maxWyrmwind': { + name: 'Max Wyrmwind', + effect: 'This is a Dragon-type attack Dynamax Pokémon use. This lowers the target\'s Attack stat.' }, - "maxMindstorm": { - name: "Max Mindstorm", - effect: "This is a Psychic-type attack Dynamax Pokémon use. The user turns the ground into Psychic Terrain for five turns." + 'maxMindstorm': { + name: 'Max Mindstorm', + effect: 'This is a Psychic-type attack Dynamax Pokémon use. The user turns the ground into Psychic Terrain for five turns.' }, - "maxRockfall": { - name: "Max Rockfall", - effect: "This is a Rock-type attack Dynamax Pokémon use. The user summons a sandstorm lasting five turns." + 'maxRockfall': { + name: 'Max Rockfall', + effect: 'This is a Rock-type attack Dynamax Pokémon use. The user summons a sandstorm lasting five turns.' }, - "maxQuake": { - name: "Max Quake", - effect: "This is a Ground-type attack Dynamax Pokémon use. This raises ally Pokémon's Sp. Def stats." + 'maxQuake': { + name: 'Max Quake', + effect: 'This is a Ground-type attack Dynamax Pokémon use. This raises ally Pokémon\'s Sp. Def stats.' }, - "maxDarkness": { - name: "Max Darkness", - effect: "This is a Dark-type attack Dynamax Pokémon use. This lowers the target's Sp. Def stat." + 'maxDarkness': { + name: 'Max Darkness', + effect: 'This is a Dark-type attack Dynamax Pokémon use. This lowers the target\'s Sp. Def stat.' }, - "maxOvergrowth": { - name: "Max Overgrowth", - effect: "This is a Grass-type attack Dynamax Pokémon use. The user turns the ground into Grassy Terrain for five turns." + 'maxOvergrowth': { + name: 'Max Overgrowth', + effect: 'This is a Grass-type attack Dynamax Pokémon use. The user turns the ground into Grassy Terrain for five turns.' }, - "maxSteelspike": { - name: "Max Steelspike", - effect: "This is a Steel-type attack Dynamax Pokémon use. This raises ally Pokémon's Defense stats." + 'maxSteelspike': { + name: 'Max Steelspike', + effect: 'This is a Steel-type attack Dynamax Pokémon use. This raises ally Pokémon\'s Defense stats.' }, - "clangorousSoul": { - name: "Clangorous Soul", - effect: "The user raises all its stats by using some of its HP." + 'clangorousSoul': { + name: 'Clangorous Soul', + effect: 'The user raises all its stats by using some of its HP.' }, - "bodyPress": { - name: "Body Press", - effect: "The user attacks by slamming its body into the target. The higher the user's Defense, the more damage it can inflict on the target." + 'bodyPress': { + name: 'Body Press', + effect: 'The user attacks by slamming its body into the target. The higher the user\'s Defense, the more damage it can inflict on the target.' }, - "decorate": { - name: "Decorate", - effect: "The user sharply raises the target's Attack and Sp. Atk stats by decorating the target." + 'decorate': { + name: 'Decorate', + effect: 'The user sharply raises the target\'s Attack and Sp. Atk stats by decorating the target.' }, - "drumBeating": { - name: "Drum Beating", - effect: "The user plays its drum, controlling the drum's roots to attack the target. This also lowers the target's Speed stat." + 'drumBeating': { + name: 'Drum Beating', + effect: 'The user plays its drum, controlling the drum\'s roots to attack the target. This also lowers the target\'s Speed stat.' }, - "snapTrap": { - name: "Snap Trap", - effect: "The user snares the target in a snap trap for four to five turns." + 'snapTrap': { + name: 'Snap Trap', + effect: 'The user snares the target in a snap trap for four to five turns.' }, - "pyroBall": { - name: "Pyro Ball", - effect: "The user attacks by igniting a small stone and launching it as a fiery ball at the target. This may also leave the target with a burn." + 'pyroBall': { + name: 'Pyro Ball', + effect: 'The user attacks by igniting a small stone and launching it as a fiery ball at the target. This may also leave the target with a burn.' }, - "behemothBlade": { - name: "Behemoth Blade", - effect: "The user wields a large, powerful sword using its whole body and cuts the target in a vigorous attack." + 'behemothBlade': { + name: 'Behemoth Blade', + effect: 'The user wields a large, powerful sword using its whole body and cuts the target in a vigorous attack.' }, - "behemothBash": { - name: "Behemoth Bash", - effect: "The user's body becomes a firm shield and slams into the target fiercely." + 'behemothBash': { + name: 'Behemoth Bash', + effect: 'The user\'s body becomes a firm shield and slams into the target fiercely.' }, - "auraWheel": { - name: "Aura Wheel", - effect: "Morpeko attacks and raises its Speed with the energy stored in its cheeks. This move's type changes depending on the user's form." + 'auraWheel': { + name: 'Aura Wheel', + effect: 'Morpeko attacks and raises its Speed with the energy stored in its cheeks. This move\'s type changes depending on the user\'s form.' }, - "breakingSwipe": { - name: "Breaking Swipe", - effect: "The user swings its tough tail wildly and attacks opposing Pokémon. This also lowers their Attack stats." + 'breakingSwipe': { + name: 'Breaking Swipe', + effect: 'The user swings its tough tail wildly and attacks opposing Pokémon. This also lowers their Attack stats.' }, - "branchPoke": { - name: "Branch Poke", - effect: "The user attacks the target by poking it with a sharply pointed branch." + 'branchPoke': { + name: 'Branch Poke', + effect: 'The user attacks the target by poking it with a sharply pointed branch.' }, - "overdrive": { - name: "Overdrive", - effect: "The user attacks opposing Pokémon by twanging a guitar or bass guitar, causing a huge echo and strong vibration." + 'overdrive': { + name: 'Overdrive', + effect: 'The user attacks opposing Pokémon by twanging a guitar or bass guitar, causing a huge echo and strong vibration.' }, - "appleAcid": { - name: "Apple Acid", - effect: "The user attacks the target with an acidic liquid created from tart apples. This also lowers the target's Sp. Def stat." + 'appleAcid': { + name: 'Apple Acid', + effect: 'The user attacks the target with an acidic liquid created from tart apples. This also lowers the target\'s Sp. Def stat.' }, - "gravApple": { - name: "Grav Apple", - effect: "The user inflicts damage by dropping an apple from high above. This also lowers the target's Defense stat." + 'gravApple': { + name: 'Grav Apple', + effect: 'The user inflicts damage by dropping an apple from high above. This also lowers the target\'s Defense stat.' }, - "spiritBreak": { - name: "Spirit Break", - effect: "The user attacks the target with so much force that it could break the target's spirit. This also lowers the target's Sp. Atk stat." + 'spiritBreak': { + name: 'Spirit Break', + effect: 'The user attacks the target with so much force that it could break the target\'s spirit. This also lowers the target\'s Sp. Atk stat.' }, - "strangeSteam": { - name: "Strange Steam", - effect: "The user attacks the target by emitting steam. This may also confuse the target." + 'strangeSteam': { + name: 'Strange Steam', + effect: 'The user attacks the target by emitting steam. This may also confuse the target.' }, - "lifeDew": { - name: "Life Dew", - effect: "The user scatters mysterious water around and restores the HP of itself and its ally Pokémon in the battle." + 'lifeDew': { + name: 'Life Dew', + effect: 'The user scatters mysterious water around and restores the HP of itself and its ally Pokémon in the battle.' }, - "obstruct": { - name: "Obstruct", - effect: "This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession. Direct contact harshly lowers the attacker's Defense stat." + 'obstruct': { + name: 'Obstruct', + effect: 'This move enables the user to protect itself from all attacks. Its chance of failing rises if it is used in succession. Direct contact harshly lowers the attacker\'s Defense stat.' }, - "falseSurrender": { - name: "False Surrender", - effect: "The user pretends to bow its head, but then it stabs the target with its disheveled hair. This attack never misses." + 'falseSurrender': { + name: 'False Surrender', + effect: 'The user pretends to bow its head, but then it stabs the target with its disheveled hair. This attack never misses.' }, - "meteorAssault": { - name: "Meteor Assault", - effect: "The user attacks wildly with its thick leek. The user can't move on the next turn, because the force of this move makes it stagger." + 'meteorAssault': { + name: 'Meteor Assault', + effect: 'The user attacks wildly with its thick leek. The user can\'t move on the next turn, because the force of this move makes it stagger.' }, - "eternabeam": { - name: "Eternabeam", - effect: "This is Eternatus's most powerful attack in its original form. The user can't move on the next turn." + 'eternabeam': { + name: 'Eternabeam', + effect: 'This is Eternatus\'s most powerful attack in its original form. The user can\'t move on the next turn.' }, - "steelBeam": { - name: "Steel Beam", - effect: "The user fires a beam of steel that it collected from its entire body. This also damages the user." + 'steelBeam': { + name: 'Steel Beam', + effect: 'The user fires a beam of steel that it collected from its entire body. This also damages the user.' }, - "expandingForce": { - name: "Expanding Force", - effect: "The user attacks the target with its psychic power. This move's power goes up and damages all opposing Pokémon on Psychic Terrain." + 'expandingForce': { + name: 'Expanding Force', + effect: 'The user attacks the target with its psychic power. This move\'s power goes up and damages all opposing Pokémon on Psychic Terrain.' }, - "steelRoller": { - name: "Steel Roller", - effect: "The user attacks while destroying the terrain. This move fails when the ground hasn't turned into a terrain." + 'steelRoller': { + name: 'Steel Roller', + effect: 'The user attacks while destroying the terrain. This move fails when the ground hasn\'t turned into a terrain.' }, - "scaleShot": { - name: "Scale Shot", - effect: "The user attacks by shooting scales two to five times in a row. This move boosts the user's Speed stat but lowers its Defense stat." + 'scaleShot': { + name: 'Scale Shot', + effect: 'The user attacks by shooting scales two to five times in a row. This move boosts the user\'s Speed stat but lowers its Defense stat.' }, - "meteorBeam": { - name: "Meteor Beam", - effect: "In this two-turn attack, the user gathers space power and boosts its Sp. Atk stat, then attacks the target on the next turn." + 'meteorBeam': { + name: 'Meteor Beam', + effect: 'In this two-turn attack, the user gathers space power and boosts its Sp. Atk stat, then attacks the target on the next turn.' }, - "shellSideArm": { - name: "Shell Side Arm", - effect: "This move inflicts physical or special damage, whichever will be more effective. This may also poison the target." + 'shellSideArm': { + name: 'Shell Side Arm', + effect: 'This move inflicts physical or special damage, whichever will be more effective. This may also poison the target.' }, - "mistyExplosion": { - name: "Misty Explosion", - effect: "The user attacks everything around it and faints upon using this move. This move's power is increased on Misty Terrain." + 'mistyExplosion': { + name: 'Misty Explosion', + effect: 'The user attacks everything around it and faints upon using this move. This move\'s power is increased on Misty Terrain.' }, - "grassyGlide": { - name: "Grassy Glide", - effect: "Gliding on the ground, the user attacks the target. This move always goes first on Grassy Terrain." + 'grassyGlide': { + name: 'Grassy Glide', + effect: 'Gliding on the ground, the user attacks the target. This move always goes first on Grassy Terrain.' }, - "risingVoltage": { - name: "Rising Voltage", - effect: "The user attacks with electric voltage rising from the ground. This move's power doubles when the target is on Electric Terrain." + 'risingVoltage': { + name: 'Rising Voltage', + effect: 'The user attacks with electric voltage rising from the ground. This move\'s power doubles when the target is on Electric Terrain.' }, - "terrainPulse": { - name: "Terrain Pulse", - effect: "The user utilizes the power of the terrain to attack. This move's type and power changes depending on the terrain when it's used." + 'terrainPulse': { + name: 'Terrain Pulse', + effect: 'The user utilizes the power of the terrain to attack. This move\'s type and power changes depending on the terrain when it\'s used.' }, - "skitterSmack": { - name: "Skitter Smack", - effect: "The user skitters behind the target to attack. This also lowers the target's Sp. Atk stat." + 'skitterSmack': { + name: 'Skitter Smack', + effect: 'The user skitters behind the target to attack. This also lowers the target\'s Sp. Atk stat.' }, - "burningJealousy": { - name: "Burning Jealousy", - effect: "The user attacks with energy from jealousy. This leaves all opposing Pokémon that have had their stats boosted during the turn with a burn." + 'burningJealousy': { + name: 'Burning Jealousy', + effect: 'The user attacks with energy from jealousy. This leaves all opposing Pokémon that have had their stats boosted during the turn with a burn.' }, - "lashOut": { - name: "Lash Out", - effect: "The user lashes out to vent its frustration toward the target. If the user's stats were lowered during this turn, the power of this move is doubled." + 'lashOut': { + name: 'Lash Out', + effect: 'The user lashes out to vent its frustration toward the target. If the user\'s stats were lowered during this turn, the power of this move is doubled.' }, - "poltergeist": { - name: "Poltergeist", - effect: "The user attacks the target by controlling the target's item. The move fails if the target doesn't have an item." + 'poltergeist': { + name: 'Poltergeist', + effect: 'The user attacks the target by controlling the target\'s item. The move fails if the target doesn\'t have an item.' }, - "corrosiveGas": { - name: "Corrosive Gas", - effect: "The user surrounds everything around it with highly acidic gas and melts away items they hold." + 'corrosiveGas': { + name: 'Corrosive Gas', + effect: 'The user surrounds everything around it with highly acidic gas and melts away items they hold.' }, - "coaching": { - name: "Coaching", - effect: "The user properly coaches its ally Pokémon, boosting their Attack and Defense stats." + 'coaching': { + name: 'Coaching', + effect: 'The user properly coaches its ally Pokémon, boosting their Attack and Defense stats.' }, - "flipTurn": { - name: "Flip Turn", - effect: "After making its attack, the user rushes back to switch places with a party Pokémon in waiting." + 'flipTurn': { + name: 'Flip Turn', + effect: 'After making its attack, the user rushes back to switch places with a party Pokémon in waiting.' }, - "tripleAxel": { - name: "Triple Axel", - effect: "A consecutive three-kick attack that becomes more powerful with each successful hit." + 'tripleAxel': { + name: 'Triple Axel', + effect: 'A consecutive three-kick attack that becomes more powerful with each successful hit.' }, - "dualWingbeat": { - name: "Dual Wingbeat", - effect: "The user slams the target with its wings. The target is hit twice in a row." + 'dualWingbeat': { + name: 'Dual Wingbeat', + effect: 'The user slams the target with its wings. The target is hit twice in a row.' }, - "scorchingSands": { - name: "Scorching Sands", - effect: "The user throws scorching sand at the target to attack. This may also leave the target with a burn." + 'scorchingSands': { + name: 'Scorching Sands', + effect: 'The user throws scorching sand at the target to attack. This may also leave the target with a burn.' }, - "jungleHealing": { - name: "Jungle Healing", - effect: "The user becomes one with the jungle, restoring HP and healing any status conditions of itself and its ally Pokémon in battle." + 'jungleHealing': { + name: 'Jungle Healing', + effect: 'The user becomes one with the jungle, restoring HP and healing any status conditions of itself and its ally Pokémon in battle.' }, - "wickedBlow": { - name: "Wicked Blow", - effect: "The user, having mastered the Dark style, strikes the target with a fierce blow. This attack always results in a critical hit." + 'wickedBlow': { + name: 'Wicked Blow', + effect: 'The user, having mastered the Dark style, strikes the target with a fierce blow. This attack always results in a critical hit.' }, - "surgingStrikes": { - name: "Surging Strikes", - effect: "The user, having mastered the Water style, strikes the target with a flowing motion three times in a row. This attack always results in a critical hit." + 'surgingStrikes': { + name: 'Surging Strikes', + effect: 'The user, having mastered the Water style, strikes the target with a flowing motion three times in a row. This attack always results in a critical hit.' }, - "thunderCage": { - name: "Thunder Cage", - effect: "The user traps the target in a cage of sparking electricity for four to five turns." + 'thunderCage': { + name: 'Thunder Cage', + effect: 'The user traps the target in a cage of sparking electricity for four to five turns.' }, - "dragonEnergy": { - name: "Dragon Energy", - effect: "Converting its life-force into power, the user attacks opposing Pokémon. The lower the user's HP, the lower the move's power." + 'dragonEnergy': { + name: 'Dragon Energy', + effect: 'Converting its life-force into power, the user attacks opposing Pokémon. The lower the user\'s HP, the lower the move\'s power.' }, - "freezingGlare": { - name: "Freezing Glare", - effect: "The user shoots its psychic power from its eyes to attack. This may also leave the target frozen." + 'freezingGlare': { + name: 'Freezing Glare', + effect: 'The user shoots its psychic power from its eyes to attack. This may also leave the target frozen.' }, - "fieryWrath": { - name: "Fiery Wrath", - effect: "The user transforms its wrath into a fire-like aura to attack. This may also make opposing Pokémon flinch." + 'fieryWrath': { + name: 'Fiery Wrath', + effect: 'The user transforms its wrath into a fire-like aura to attack. This may also make opposing Pokémon flinch.' }, - "thunderousKick": { - name: "Thunderous Kick", - effect: "The user overwhelms the target with lightning-like movement before delivering a kick. This also lowers the target's Defense stat." + 'thunderousKick': { + name: 'Thunderous Kick', + effect: 'The user overwhelms the target with lightning-like movement before delivering a kick. This also lowers the target\'s Defense stat.' }, - "glacialLance": { - name: "Glacial Lance", - effect: "The user attacks by hurling a blizzard-cloaked icicle lance at opposing Pokémon." + 'glacialLance': { + name: 'Glacial Lance', + effect: 'The user attacks by hurling a blizzard-cloaked icicle lance at opposing Pokémon.' }, - "astralBarrage": { - name: "Astral Barrage", - effect: "The user attacks by sending a frightful amount of small ghosts at opposing Pokémon." + 'astralBarrage': { + name: 'Astral Barrage', + effect: 'The user attacks by sending a frightful amount of small ghosts at opposing Pokémon.' }, - "eerieSpell": { - name: "Eerie Spell", - effect: "The user attacks with its tremendous psychic power. This also removes 3 PP from the target's last move." + 'eerieSpell': { + name: 'Eerie Spell', + effect: 'The user attacks with its tremendous psychic power. This also removes 3 PP from the target\'s last move.' }, - "direClaw": { - name: "Dire Claw", - effect: "The user lashes out at the target with ruinous claws. This may also leave the target poisoned, paralyzed, or asleep." + 'direClaw': { + name: 'Dire Claw', + effect: 'The user lashes out at the target with ruinous claws. This may also leave the target poisoned, paralyzed, or asleep.' }, - "psyshieldBash": { - name: "Psyshield Bash", - effect: "Cloaking itself in psychic energy, the user slams into the target. This also boosts the user's Defense stat." + 'psyshieldBash': { + name: 'Psyshield Bash', + effect: 'Cloaking itself in psychic energy, the user slams into the target. This also boosts the user\'s Defense stat.' }, - "powerShift": { - name: "Power Shift", - effect: "The user swaps its Attack and Defense stats." + 'powerShift': { + name: 'Power Shift', + effect: 'The user swaps its Attack and Defense stats.' }, - "stoneAxe": { - name: "Stone Axe", - effect: "The user swings its stone axes at the target. Stone splinters left behind by this attack float around the target." + 'stoneAxe': { + name: 'Stone Axe', + effect: 'The user swings its stone axes at the target. Stone splinters left behind by this attack float around the target.' }, - "springtideStorm": { - name: "Springtide Storm", - effect: "The user attacks by wrapping opposing Pokémon in fierce winds brimming with love and hate. This may also lower their Attack stats." + 'springtideStorm': { + name: 'Springtide Storm', + effect: 'The user attacks by wrapping opposing Pokémon in fierce winds brimming with love and hate. This may also lower their Attack stats.' }, - "mysticalPower": { - name: "Mystical Power", - effect: "The user attacks by emitting a mysterious power. This also boosts the user's Sp. Atk stat." + 'mysticalPower': { + name: 'Mystical Power', + effect: 'The user attacks by emitting a mysterious power. This also boosts the user\'s Sp. Atk stat.' }, - "ragingFury": { - name: "Raging Fury", - effect: "The user rampages around spewing flames for two to three turns. The user then becomes confused." + 'ragingFury': { + name: 'Raging Fury', + effect: 'The user rampages around spewing flames for two to three turns. The user then becomes confused.' }, - "waveCrash": { - name: "Wave Crash", - effect: "The user shrouds itself in water and slams into the target with its whole body to inflict damage. This also damages the user quite a lot." + 'waveCrash': { + name: 'Wave Crash', + effect: 'The user shrouds itself in water and slams into the target with its whole body to inflict damage. This also damages the user quite a lot.' }, - "chloroblast": { - name: "Chloroblast", - effect: "The user launches its amassed chlorophyll to inflict damage on the target. This also damages the user." + 'chloroblast': { + name: 'Chloroblast', + effect: 'The user launches its amassed chlorophyll to inflict damage on the target. This also damages the user.' }, - "mountainGale": { - name: "Mountain Gale", - effect: "The user hurls giant chunks of ice at the target to inflict damage. This may also make the target flinch." + 'mountainGale': { + name: 'Mountain Gale', + effect: 'The user hurls giant chunks of ice at the target to inflict damage. This may also make the target flinch.' }, - "victoryDance": { - name: "Victory Dance", - effect: "The user performs an intense dance to usher in victory, boosting its Attack, Defense, and Speed stats." + 'victoryDance': { + name: 'Victory Dance', + effect: 'The user performs an intense dance to usher in victory, boosting its Attack, Defense, and Speed stats.' }, - "headlongRush": { - name: "Headlong Rush", - effect: "The user smashes into the target in a full-body tackle. This also lowers the user's Defense and Sp. Def stats." + 'headlongRush': { + name: 'Headlong Rush', + effect: 'The user smashes into the target in a full-body tackle. This also lowers the user\'s Defense and Sp. Def stats.' }, - "barbBarrage": { - name: "Barb Barrage", - effect: "The user launches countless toxic barbs to inflict damage. This may also poison the target. This move's power is doubled if the target is already poisoned." + 'barbBarrage': { + name: 'Barb Barrage', + effect: 'The user launches countless toxic barbs to inflict damage. This may also poison the target. This move\'s power is doubled if the target is already poisoned.' }, - "esperWing": { - name: "Esper Wing", - effect: "The user slashes the target with aura-enriched wings. This also boosts the user's Speed stat. This move has a heightened chance of landing a critical hit." + 'esperWing': { + name: 'Esper Wing', + effect: 'The user slashes the target with aura-enriched wings. This also boosts the user\'s Speed stat. This move has a heightened chance of landing a critical hit.' }, - "bitterMalice": { - name: "Bitter Malice", - effect: "The user attacks the target with spine-chilling resentment. This also lowers the target's Attack stat." + 'bitterMalice': { + name: 'Bitter Malice', + effect: 'The user attacks the target with spine-chilling resentment. This also lowers the target\'s Attack stat.' }, - "shelter": { - name: "Shelter", - effect: "The user makes its skin as hard as an iron shield, sharply boosting its Defense stat." + 'shelter': { + name: 'Shelter', + effect: 'The user makes its skin as hard as an iron shield, sharply boosting its Defense stat.' }, - "tripleArrows": { - name: "Triple Arrows", - effect: "The user kicks, then fires three arrows. This move has a heightened chance of landing a critical hit and may also lower the target's Defense stat or make it flinch." + 'tripleArrows': { + name: 'Triple Arrows', + effect: 'The user kicks, then fires three arrows. This move has a heightened chance of landing a critical hit and may also lower the target\'s Defense stat or make it flinch.' }, - "infernalParade": { - name: "Infernal Parade", - effect: "The user attacks with myriad fireballs. This may also leave the target with a burn. This move's power is doubled if the target has a status condition." + 'infernalParade': { + name: 'Infernal Parade', + effect: 'The user attacks with myriad fireballs. This may also leave the target with a burn. This move\'s power is doubled if the target has a status condition.' }, - "ceaselessEdge": { - name: "Ceaseless Edge", - effect: "The user slashes its shell blade at the target. Shell splinters left behind by this attack remain scattered under the target as spikes." + 'ceaselessEdge': { + name: 'Ceaseless Edge', + effect: 'The user slashes its shell blade at the target. Shell splinters left behind by this attack remain scattered under the target as spikes.' }, - "bleakwindStorm": { - name: "Bleakwind Storm", - effect: "The user attacks with savagely cold winds that cause both body and spirit to tremble. This may also lower the Speed stats of opposing Pokémon." + 'bleakwindStorm': { + name: 'Bleakwind Storm', + effect: 'The user attacks with savagely cold winds that cause both body and spirit to tremble. This may also lower the Speed stats of opposing Pokémon.' }, - "wildboltStorm": { - name: "Wildbolt Storm", - effect: "The user summons a thunderous tempest and savagely attacks with lightning and wind. This may also leave opposing Pokémon with paralysis." + 'wildboltStorm': { + name: 'Wildbolt Storm', + effect: 'The user summons a thunderous tempest and savagely attacks with lightning and wind. This may also leave opposing Pokémon with paralysis.' }, - "sandsearStorm": { - name: "Sandsear Storm", - effect: "The user attacks by wrapping opposing Pokémon in fierce winds and searingly hot sand. This may also leave them with a burn." + 'sandsearStorm': { + name: 'Sandsear Storm', + effect: 'The user attacks by wrapping opposing Pokémon in fierce winds and searingly hot sand. This may also leave them with a burn.' }, - "lunarBlessing": { - name: "Lunar Blessing", - effect: "The user receives a blessing from the crescent moon, restoring HP and curing status conditions for itself and its ally Pokémon currently in the battle." + 'lunarBlessing': { + name: 'Lunar Blessing', + effect: 'The user receives a blessing from the crescent moon, restoring HP and curing status conditions for itself and its ally Pokémon currently in the battle.' }, - "takeHeart": { - name: "Take Heart", - effect: "The user lifts its spirits, curing its own status conditions and boosting its Sp. Atk and Sp. Def stats." + 'takeHeart': { + name: 'Take Heart', + effect: 'The user lifts its spirits, curing its own status conditions and boosting its Sp. Atk and Sp. Def stats.' }, - "gMaxWildfire": { - name: "G-Max Wildfire", - effect: "A Fire-type attack that Gigantamax Charizard use. This move continues to deal damage to opponents for four turns." + 'gMaxWildfire': { + name: 'G-Max Wildfire', + effect: 'A Fire-type attack that Gigantamax Charizard use. This move continues to deal damage to opponents for four turns.' }, - "gMaxBefuddle": { - name: "G-Max Befuddle", - effect: "A Bug-type attack that Gigantamax Butterfree use. This move inflicts the poisoned, paralyzed, or asleep status condition on opponents." + 'gMaxBefuddle': { + name: 'G-Max Befuddle', + effect: 'A Bug-type attack that Gigantamax Butterfree use. This move inflicts the poisoned, paralyzed, or asleep status condition on opponents.' }, - "gMaxVoltCrash": { - name: "G-Max Volt Crash", - effect: "An Electric-type attack that Gigantamax Pikachu use. This move paralyzes opponents." + 'gMaxVoltCrash': { + name: 'G-Max Volt Crash', + effect: 'An Electric-type attack that Gigantamax Pikachu use. This move paralyzes opponents.' }, - "gMaxGoldRush": { - name: "G-Max Gold Rush", - effect: "A Normal-type attack that Gigantamax Meowth use. This move confuses opponents and also earns extra money." + 'gMaxGoldRush': { + name: 'G-Max Gold Rush', + effect: 'A Normal-type attack that Gigantamax Meowth use. This move confuses opponents and also earns extra money.' }, - "gMaxChiStrike": { - name: "G-Max Chi Strike", - effect: "A Fighting-type attack that Gigantamax Machamp use. This move raises the chance of critical hits." + 'gMaxChiStrike': { + name: 'G-Max Chi Strike', + effect: 'A Fighting-type attack that Gigantamax Machamp use. This move raises the chance of critical hits.' }, - "gMaxTerror": { - name: "G-Max Terror", - effect: "A Ghost-type attack that Gigantamax Gengar use. This Pokémon steps on the opposing Pokémon's shadow to prevent them from escaping." + 'gMaxTerror': { + name: 'G-Max Terror', + effect: 'A Ghost-type attack that Gigantamax Gengar use. This Pokémon steps on the opposing Pokémon\'s shadow to prevent them from escaping.' }, - "gMaxResonance": { - name: "G-Max Resonance", - effect: "An Ice-type attack that Gigantamax Lapras use. This move reduces the damage received for five turns." + 'gMaxResonance': { + name: 'G-Max Resonance', + effect: 'An Ice-type attack that Gigantamax Lapras use. This move reduces the damage received for five turns.' }, - "gMaxCuddle": { - name: "G-Max Cuddle", - effect: "A Normal-type attack that Gigantamax Eevee use. This move infatuates opponents." + 'gMaxCuddle': { + name: 'G-Max Cuddle', + effect: 'A Normal-type attack that Gigantamax Eevee use. This move infatuates opponents.' }, - "gMaxReplenish": { - name: "G-Max Replenish", - effect: "A Normal-type attack that Gigantamax Snorlax use. This move restores Berries that have been eaten." + 'gMaxReplenish': { + name: 'G-Max Replenish', + effect: 'A Normal-type attack that Gigantamax Snorlax use. This move restores Berries that have been eaten.' }, - "gMaxMalodor": { - name: "G-Max Malodor", - effect: "A Poison-type attack that Gigantamax Garbodor use. This move poisons opponents." + 'gMaxMalodor': { + name: 'G-Max Malodor', + effect: 'A Poison-type attack that Gigantamax Garbodor use. This move poisons opponents.' }, - "gMaxStonesurge": { - name: "G-Max Stonesurge", - effect: "A Water-type attack that Gigantamax Drednaw use. This move scatters sharp rocks around the field." + 'gMaxStonesurge': { + name: 'G-Max Stonesurge', + effect: 'A Water-type attack that Gigantamax Drednaw use. This move scatters sharp rocks around the field.' }, - "gMaxWindRage": { - name: "G-Max Wind Rage", - effect: "A Flying-type attack that Gigantamax Corviknight use. This move removes the effects of moves like Reflect and Light Screen." + 'gMaxWindRage': { + name: 'G-Max Wind Rage', + effect: 'A Flying-type attack that Gigantamax Corviknight use. This move removes the effects of moves like Reflect and Light Screen.' }, - "gMaxStunShock": { - name: "G-Max Stun Shock", - effect: "An Electric-type attack that Gigantamax Toxtricity use. This move poisons or paralyzes opponents." + 'gMaxStunShock': { + name: 'G-Max Stun Shock', + effect: 'An Electric-type attack that Gigantamax Toxtricity use. This move poisons or paralyzes opponents.' }, - "gMaxFinale": { - name: "G-Max Finale", - effect: "A Fairy-type attack that Gigantamax Alcremie use. This move heals the HP of allies." + 'gMaxFinale': { + name: 'G-Max Finale', + effect: 'A Fairy-type attack that Gigantamax Alcremie use. This move heals the HP of allies.' }, - "gMaxDepletion": { - name: "G-Max Depletion", - effect: "A Dragon-type attack that Gigantamax Duraludon use. Reduces the PP of the last move used." + 'gMaxDepletion': { + name: 'G-Max Depletion', + effect: 'A Dragon-type attack that Gigantamax Duraludon use. Reduces the PP of the last move used.' }, - "gMaxGravitas": { - name: "G-Max Gravitas", - effect: "A Psychic-type attack that Gigantamax Orbeetle use. This move changes gravity for five turns." + 'gMaxGravitas': { + name: 'G-Max Gravitas', + effect: 'A Psychic-type attack that Gigantamax Orbeetle use. This move changes gravity for five turns.' }, - "gMaxVolcalith": { - name: "G-Max Volcalith", - effect: "A Rock-type attack that Gigantamax Coalossal use. This move continues to deal damage to opponents for four turns." + 'gMaxVolcalith': { + name: 'G-Max Volcalith', + effect: 'A Rock-type attack that Gigantamax Coalossal use. This move continues to deal damage to opponents for four turns.' }, - "gMaxSandblast": { - name: "G-Max Sandblast", - effect: "A Ground-type attack that Gigantamax Sandaconda use. Opponents are trapped in a raging sandstorm for four to five turns." + 'gMaxSandblast': { + name: 'G-Max Sandblast', + effect: 'A Ground-type attack that Gigantamax Sandaconda use. Opponents are trapped in a raging sandstorm for four to five turns.' }, - "gMaxSnooze": { - name: "G-Max Snooze", - effect: "A Dark-type attack that Gigantamax Grimmsnarl use. The user lets loose a huge yawn that lulls the targets into falling asleep on the next turn." + 'gMaxSnooze': { + name: 'G-Max Snooze', + effect: 'A Dark-type attack that Gigantamax Grimmsnarl use. The user lets loose a huge yawn that lulls the targets into falling asleep on the next turn.' }, - "gMaxTartness": { - name: "G-Max Tartness", - effect: "A Grass-type attack that Gigantamax Flapple use. This move reduces the opponents' evasiveness." + 'gMaxTartness': { + name: 'G-Max Tartness', + effect: 'A Grass-type attack that Gigantamax Flapple use. This move reduces the opponents\' evasiveness.' }, - "gMaxSweetness": { - name: "G-Max Sweetness", - effect: "A Grass-type attack that Gigantamax Appletun use. This move heals the status conditions of allies." + 'gMaxSweetness': { + name: 'G-Max Sweetness', + effect: 'A Grass-type attack that Gigantamax Appletun use. This move heals the status conditions of allies.' }, - "gMaxSmite": { - name: "G-Max Smite", - effect: "A Fairy-type attack that Gigantamax Hatterene use. This move confuses opponents." + 'gMaxSmite': { + name: 'G-Max Smite', + effect: 'A Fairy-type attack that Gigantamax Hatterene use. This move confuses opponents.' }, - "gMaxSteelsurge": { - name: "G-Max Steelsurge", - effect: "A Steel-type attack that Gigantamax Copperajah use. This move scatters sharp spikes around the field." + 'gMaxSteelsurge': { + name: 'G-Max Steelsurge', + effect: 'A Steel-type attack that Gigantamax Copperajah use. This move scatters sharp spikes around the field.' }, - "gMaxMeltdown": { - name: "G-Max Meltdown", - effect: "A Steel-type attack that Gigantamax Melmetal use. This move makes opponents incapable of using the same move twice in a row." + 'gMaxMeltdown': { + name: 'G-Max Meltdown', + effect: 'A Steel-type attack that Gigantamax Melmetal use. This move makes opponents incapable of using the same move twice in a row.' }, - "gMaxFoamBurst": { - name: "G-Max Foam Burst", - effect: "A Water-type attack that Gigantamax Kingler use. This move harshly lowers the Speed of opponents." + 'gMaxFoamBurst': { + name: 'G-Max Foam Burst', + effect: 'A Water-type attack that Gigantamax Kingler use. This move harshly lowers the Speed of opponents.' }, - "gMaxCentiferno": { - name: "G-Max Centiferno", - effect: "A Fire-type attack that Gigantamax Centiskorch use. This move traps opponents in flames for four to five turns." + 'gMaxCentiferno': { + name: 'G-Max Centiferno', + effect: 'A Fire-type attack that Gigantamax Centiskorch use. This move traps opponents in flames for four to five turns.' }, - "gMaxVineLash": { - name: "G-Max Vine Lash", - effect: "A Grass-type attack that Gigantamax Venusaur use. This move continues to deal damage to opponents for four turns." + 'gMaxVineLash': { + name: 'G-Max Vine Lash', + effect: 'A Grass-type attack that Gigantamax Venusaur use. This move continues to deal damage to opponents for four turns.' }, - "gMaxCannonade": { - name: "G-Max Cannonade", - effect: "A Water-type attack that Gigantamax Blastoise use. This move continues to deal damage to opponents for four turns." + 'gMaxCannonade': { + name: 'G-Max Cannonade', + effect: 'A Water-type attack that Gigantamax Blastoise use. This move continues to deal damage to opponents for four turns.' }, - "gMaxDrumSolo": { - name: "G-Max Drum Solo", - effect: "A Grass-type attack that Gigantamax Rillaboom use. This move can be used on the target regardless of its Abilities." + 'gMaxDrumSolo': { + name: 'G-Max Drum Solo', + effect: 'A Grass-type attack that Gigantamax Rillaboom use. This move can be used on the target regardless of its Abilities.' }, - "gMaxFireball": { - name: "G-Max Fireball", - effect: "A Fire-type attack that Gigantamax Cinderace use. This move can be used on the target regardless of its Abilities." + 'gMaxFireball': { + name: 'G-Max Fireball', + effect: 'A Fire-type attack that Gigantamax Cinderace use. This move can be used on the target regardless of its Abilities.' }, - "gMaxHydrosnipe": { - name: "G-Max Hydrosnipe", - effect: "A Water-type attack that Gigantamax Inteleon use. This move can be used on the target regardless of its Abilities." + 'gMaxHydrosnipe': { + name: 'G-Max Hydrosnipe', + effect: 'A Water-type attack that Gigantamax Inteleon use. This move can be used on the target regardless of its Abilities.' }, - "gMaxOneBlow": { - name: "G-Max One Blow", - effect: "A Dark-type attack that Gigantamax Urshifu use. This single-strike move can ignore Max Guard." + 'gMaxOneBlow': { + name: 'G-Max One Blow', + effect: 'A Dark-type attack that Gigantamax Urshifu use. This single-strike move can ignore Max Guard.' }, - "gMaxRapidFlow": { - name: "G-Max Rapid Flow", - effect: "A Water-type attack that Gigantamax Urshifu use. This rapid-strike move can ignore Max Guard." + 'gMaxRapidFlow': { + name: 'G-Max Rapid Flow', + effect: 'A Water-type attack that Gigantamax Urshifu use. This rapid-strike move can ignore Max Guard.' }, - "teraBlast": { - name: "Tera Blast", - effect: "If the user has Terastallized, it unleashes energy of its Tera Type. This move inflicts damage using the Attack or Sp. Atk stat-whichever is higher for the user." + 'teraBlast': { + name: 'Tera Blast', + effect: 'If the user has Terastallized, it unleashes energy of its Tera Type. This move inflicts damage using the Attack or Sp. Atk stat-whichever is higher for the user.' }, - "silkTrap": { - name: "Silk Trap", - effect: "The user spins a silken trap, protecting itself from damage while lowering the Speed stat of any attacker that makes direct contact." + 'silkTrap': { + name: 'Silk Trap', + effect: 'The user spins a silken trap, protecting itself from damage while lowering the Speed stat of any attacker that makes direct contact.' }, - "axeKick": { - name: "Axe Kick", - effect: "The user attacks by kicking up into the air and slamming its heel down upon the target. This may also confuse the target. If it misses, the user takes damage instead." + 'axeKick': { + name: 'Axe Kick', + effect: 'The user attacks by kicking up into the air and slamming its heel down upon the target. This may also confuse the target. If it misses, the user takes damage instead.' }, - "lastRespects": { - name: "Last Respects", - effect: "The user attacks to avenge its allies. The more defeated allies there are in the user's party, the greater the move's power." + 'lastRespects': { + name: 'Last Respects', + effect: 'The user attacks to avenge its allies. The more defeated allies there are in the user\'s party, the greater the move\'s power.' }, - "luminaCrash": { - name: "Lumina Crash", - effect: "The user attacks by unleashing a peculiar light that even affects the mind. This also harshly lowers the target's Sp. Def stat." + 'luminaCrash': { + name: 'Lumina Crash', + effect: 'The user attacks by unleashing a peculiar light that even affects the mind. This also harshly lowers the target\'s Sp. Def stat.' }, - "orderUp": { - name: "Order Up", - effect: "The user attacks with elegant poise. If the user has a Tatsugiri in its mouth, this move boosts one of the user's stats based on the Tatsugiri's form." + 'orderUp': { + name: 'Order Up', + effect: 'The user attacks with elegant poise. If the user has a Tatsugiri in its mouth, this move boosts one of the user\'s stats based on the Tatsugiri\'s form.' }, - "jetPunch": { - name: "Jet Punch", - effect: "The user summons a torrent around its fist and punches at blinding speed. This move always goes first." + 'jetPunch': { + name: 'Jet Punch', + effect: 'The user summons a torrent around its fist and punches at blinding speed. This move always goes first.' }, - "spicyExtract": { - name: "Spicy Extract", - effect: "The user emits an incredibly spicy extract, sharply boosting the target's Attack stat and harshly lowering the target's Defense stat." + 'spicyExtract': { + name: 'Spicy Extract', + effect: 'The user emits an incredibly spicy extract, sharply boosting the target\'s Attack stat and harshly lowering the target\'s Defense stat.' }, - "spinOut": { - name: "Spin Out", - effect: "The user spins furiously by straining its legs, inflicting damage on the target. This also harshly lowers the user's Speed stat." + 'spinOut': { + name: 'Spin Out', + effect: 'The user spins furiously by straining its legs, inflicting damage on the target. This also harshly lowers the user\'s Speed stat.' }, - "populationBomb": { - name: "Population Bomb", - effect: "The user's fellows gather in droves to perform a combo attack that hits the target one to ten times in a row." + 'populationBomb': { + name: 'Population Bomb', + effect: 'The user\'s fellows gather in droves to perform a combo attack that hits the target one to ten times in a row.' }, - "iceSpinner": { - name: "Ice Spinner", - effect: "The user covers its feet in thin ice and twirls around, slamming into the target. This move's spinning motion also destroys the terrain." + 'iceSpinner': { + name: 'Ice Spinner', + effect: 'The user covers its feet in thin ice and twirls around, slamming into the target. This move\'s spinning motion also destroys the terrain.' }, - "glaiveRush": { - name: "Glaive Rush", - effect: "The user throws its entire body into a reckless charge. After this move is used, attacks on the user cannot miss and will inflict double damage until the user's next turn." + 'glaiveRush': { + name: 'Glaive Rush', + effect: 'The user throws its entire body into a reckless charge. After this move is used, attacks on the user cannot miss and will inflict double damage until the user\'s next turn.' }, - "revivalBlessing": { - name: "Revival Blessing", - effect: "The user bestows a loving blessing, reviving a party Pokémon that has fainted and restoring half that Pokémon's max HP." + 'revivalBlessing': { + name: 'Revival Blessing', + effect: 'The user bestows a loving blessing, reviving a party Pokémon that has fainted and restoring half that Pokémon\'s max HP.' }, - "saltCure": { - name: "Salt Cure", - effect: "The user salt cures the target, inflicting damage every turn. Steel and Water types are more strongly affected by this move." + 'saltCure': { + name: 'Salt Cure', + effect: 'The user salt cures the target, inflicting damage every turn. Steel and Water types are more strongly affected by this move.' }, - "tripleDive": { - name: "Triple Dive", - effect: "The user performs a perfectly timed triple dive, hitting the target with splashes of water three times in a row." + 'tripleDive': { + name: 'Triple Dive', + effect: 'The user performs a perfectly timed triple dive, hitting the target with splashes of water three times in a row.' }, - "mortalSpin": { - name: "Mortal Spin", - effect: "The user performs a spin attack that can also eliminate the effects of such moves as Bind, Wrap, and Leech Seed. This also poisons opposing Pokémon." + 'mortalSpin': { + name: 'Mortal Spin', + effect: 'The user performs a spin attack that can also eliminate the effects of such moves as Bind, Wrap, and Leech Seed. This also poisons opposing Pokémon.' }, - "doodle": { - name: "Doodle", - effect: "The user captures the very essence of the target in a sketch. This changes the Abilities of the user and its ally Pokémon to that of the target." + 'doodle': { + name: 'Doodle', + effect: 'The user captures the very essence of the target in a sketch. This changes the Abilities of the user and its ally Pokémon to that of the target.' }, - "filletAway": { - name: "Fillet Away", - effect: "The user sharply boosts its Attack, Sp. Atk, and Speed stats by using its own HP." + 'filletAway': { + name: 'Fillet Away', + effect: 'The user sharply boosts its Attack, Sp. Atk, and Speed stats by using its own HP.' }, - "kowtowCleave": { - name: "Kowtow Cleave", - effect: "The user slashes at the target after kowtowing to make the target let down its guard. This attack never misses." + 'kowtowCleave': { + name: 'Kowtow Cleave', + effect: 'The user slashes at the target after kowtowing to make the target let down its guard. This attack never misses.' }, - "flowerTrick": { - name: "Flower Trick", - effect: "The user throws a rigged bouquet of flowers at the target. This attack never misses and always lands a critical hit." + 'flowerTrick': { + name: 'Flower Trick', + effect: 'The user throws a rigged bouquet of flowers at the target. This attack never misses and always lands a critical hit.' }, - "torchSong": { - name: "Torch Song", - effect: "The user blows out raging flames as if singing a song, scorching the target. This also boosts the user's Sp. Atk stat." + 'torchSong': { + name: 'Torch Song', + effect: 'The user blows out raging flames as if singing a song, scorching the target. This also boosts the user\'s Sp. Atk stat.' }, - "aquaStep": { - name: "Aqua Step", - effect: "The user toys with the target and attacks it using light and fluid dance steps. This also boosts the user's Speed stat." + 'aquaStep': { + name: 'Aqua Step', + effect: 'The user toys with the target and attacks it using light and fluid dance steps. This also boosts the user\'s Speed stat.' }, - "ragingBull": { - name: "Raging Bull", - effect: "The user performs a tackle like a raging bull. This move's type depends on the user's form. It can also break barriers, such as Light Screen and Reflect." + 'ragingBull': { + name: 'Raging Bull', + effect: 'The user performs a tackle like a raging bull. This move\'s type depends on the user\'s form. It can also break barriers, such as Light Screen and Reflect.' }, - "makeItRain": { - name: "Make It Rain", - effect: "The user attacks by throwing out a mass of coins. This also lowers the user's Sp. Atk stat. Money is earned after the battle." + 'makeItRain': { + name: 'Make It Rain', + effect: 'The user attacks by throwing out a mass of coins. This also lowers the user\'s Sp. Atk stat. Money is earned after the battle.' }, - "psyblade": { - name: "Psyblade", - effect: "The user rends the target with an ethereal blade. This move's power is boosted by 50 percent if the user is on Electric Terrain." + 'psyblade': { + name: 'Psyblade', + effect: 'The user rends the target with an ethereal blade. This move\'s power is boosted by 50 percent if the user is on Electric Terrain.' }, - "hydroSteam": { - name: "Hydro Steam", - effect: "The user blasts the target with boiling-hot water. This move's power is not lowered in harsh sunlight but rather boosted by 50 percent." + 'hydroSteam': { + name: 'Hydro Steam', + effect: 'The user blasts the target with boiling-hot water. This move\'s power is not lowered in harsh sunlight but rather boosted by 50 percent.' }, - "ruination": { - name: "Ruination", - effect: "The user summons a ruinous disaster. This cuts the target's HP in half." + 'ruination': { + name: 'Ruination', + effect: 'The user summons a ruinous disaster. This cuts the target\'s HP in half.' }, - "collisionCourse": { - name: "Collision Course", - effect: "The user transforms and crashes to the ground, causing a massive prehistoric explosion. This move's power is boosted more than usual if it's a supereffective hit." + 'collisionCourse': { + name: 'Collision Course', + effect: 'The user transforms and crashes to the ground, causing a massive prehistoric explosion. This move\'s power is boosted more than usual if it\'s a supereffective hit.' }, - "electroDrift": { - name: "Electro Drift", - effect: "The user races forward at ultrafast speeds, piercing its target with futuristic electricity. This move's power is boosted more than usual if it's a supereffective hit." + 'electroDrift': { + name: 'Electro Drift', + effect: 'The user races forward at ultrafast speeds, piercing its target with futuristic electricity. This move\'s power is boosted more than usual if it\'s a supereffective hit.' }, - "shedTail": { - name: "Shed Tail", - effect: "The user creates a substitute for itself using its own HP before switching places with a party Pokémon in waiting." + 'shedTail': { + name: 'Shed Tail', + effect: 'The user creates a substitute for itself using its own HP before switching places with a party Pokémon in waiting.' }, - "chillyReception": { - name: "Chilly Reception", - effect: "The user tells a chillingly bad joke before switching places with a party Pokémon in waiting. This summons a snowstorm lasting five turns." + 'chillyReception': { + name: 'Chilly Reception', + effect: 'The user tells a chillingly bad joke before switching places with a party Pokémon in waiting. This summons a snowstorm lasting five turns.' }, - "tidyUp": { - name: "Tidy Up", - effect: "The user tidies up and removes the effects of Spikes, Stealth Rock, Sticky Web, Toxic Spikes, and Substitute. This also boosts the user's Attack and Speed stats." + 'tidyUp': { + name: 'Tidy Up', + effect: 'The user tidies up and removes the effects of Spikes, Stealth Rock, Sticky Web, Toxic Spikes, and Substitute. This also boosts the user\'s Attack and Speed stats.' }, - "snowscape": { - name: "Snowscape", - effect: "The user summons a snowstorm lasting five turns. This boosts the Defense stats of Ice types." + 'snowscape': { + name: 'Snowscape', + effect: 'The user summons a snowstorm lasting five turns. This boosts the Defense stats of Ice types.' }, - "pounce": { - name: "Pounce", - effect: "The user attacks by pouncing on the target. This also lowers the target's Speed stat." + 'pounce': { + name: 'Pounce', + effect: 'The user attacks by pouncing on the target. This also lowers the target\'s Speed stat.' }, - "trailblaze": { - name: "Trailblaze", - effect: "The user attacks suddenly as if leaping out from tall grass. The user's nimble footwork boosts its Speed stat." + 'trailblaze': { + name: 'Trailblaze', + effect: 'The user attacks suddenly as if leaping out from tall grass. The user\'s nimble footwork boosts its Speed stat.' }, - "chillingWater": { - name: "Chilling Water", - effect: "The user attacks the target by showering it with water that's so cold it saps the target's power. This also lowers the target's Attack stat." + 'chillingWater': { + name: 'Chilling Water', + effect: 'The user attacks the target by showering it with water that\'s so cold it saps the target\'s power. This also lowers the target\'s Attack stat.' }, - "hyperDrill": { - name: "Hyper Drill", - effect: "The user spins the pointed part of its body at high speed to pierce the target. This attack can hit a target using a move such as Protect or Detect." + 'hyperDrill': { + name: 'Hyper Drill', + effect: 'The user spins the pointed part of its body at high speed to pierce the target. This attack can hit a target using a move such as Protect or Detect.' }, - "twinBeam": { - name: "Twin Beam", - effect: "The user shoots mystical beams from its eyes to inflict damage. The target is hit twice in a row." + 'twinBeam': { + name: 'Twin Beam', + effect: 'The user shoots mystical beams from its eyes to inflict damage. The target is hit twice in a row.' }, - "rageFist": { - name: "Rage Fist", - effect: "The user converts its rage into energy to attack. The more times the user has been hit by attacks, the greater the move's power." + 'rageFist': { + name: 'Rage Fist', + effect: 'The user converts its rage into energy to attack. The more times the user has been hit by attacks, the greater the move\'s power.' }, - "armorCannon": { - name: "Armor Cannon", - effect: "The user shoots its own armor out as blazing projectiles. This also lowers the user's Defense and Sp. Def stats." + 'armorCannon': { + name: 'Armor Cannon', + effect: 'The user shoots its own armor out as blazing projectiles. This also lowers the user\'s Defense and Sp. Def stats.' }, - "bitterBlade": { - name: "Bitter Blade", - effect: "The user focuses its bitter feelings toward the world of the living into a slashing attack. The user's HP is restored by up to half the damage taken by the target." + 'bitterBlade': { + name: 'Bitter Blade', + effect: 'The user focuses its bitter feelings toward the world of the living into a slashing attack. The user\'s HP is restored by up to half the damage taken by the target.' }, - "doubleShock": { - name: "Double Shock", - effect: "The user discharges all the electricity from its body to perform a high-damage attack. After using this move, the user will no longer be Electric type." + 'doubleShock': { + name: 'Double Shock', + effect: 'The user discharges all the electricity from its body to perform a high-damage attack. After using this move, the user will no longer be Electric type.' }, - "gigatonHammer": { - name: "Gigaton Hammer", - effect: "The user swings its whole body around to attack with its huge hammer. This move can't be used twice in a row." + 'gigatonHammer': { + name: 'Gigaton Hammer', + effect: 'The user swings its whole body around to attack with its huge hammer. This move can\'t be used twice in a row.' }, - "comeuppance": { - name: "Comeuppance", - effect: "The user retaliates with much greater force against the opponent that last inflicted damage on it." + 'comeuppance': { + name: 'Comeuppance', + effect: 'The user retaliates with much greater force against the opponent that last inflicted damage on it.' }, - "aquaCutter": { - name: "Aqua Cutter", - effect: "The user expels pressurized water to cut at the target like a blade. This move has a heightened chance of landing a critical hit." + 'aquaCutter': { + name: 'Aqua Cutter', + effect: 'The user expels pressurized water to cut at the target like a blade. This move has a heightened chance of landing a critical hit.' }, - "blazingTorque": { - name: "Blazing Torque", - effect: "The user revs their blazing engine into the target. This may also leave the target with a burn." + 'blazingTorque': { + name: 'Blazing Torque', + effect: 'The user revs their blazing engine into the target. This may also leave the target with a burn.' }, - "wickedTorque": { - name: "Wicked Torque", - effect: "The user revs their engine into the target with malicious intent. This may put the target to sleep." + 'wickedTorque': { + name: 'Wicked Torque', + effect: 'The user revs their engine into the target with malicious intent. This may put the target to sleep.' }, - "noxiousTorque": { - name: "Noxious Torque", - effect: "The user revs their poisonous engine into the target. This may also poison the target." + 'noxiousTorque': { + name: 'Noxious Torque', + effect: 'The user revs their poisonous engine into the target. This may also poison the target.' }, - "combatTorque": { - name: "Combat Torque", - effect: "The user revs their engine forcefully into the target. This may also leave the target with paralysis." + 'combatTorque': { + name: 'Combat Torque', + effect: 'The user revs their engine forcefully into the target. This may also leave the target with paralysis.' }, - "magicalTorque": { - name: "Magical Torque", - effect: "The user revs their fae-like engine into the target. This may also confuse the target." + 'magicalTorque': { + name: 'Magical Torque', + effect: 'The user revs their fae-like engine into the target. This may also confuse the target.' }, - "bloodMoon": { - name: "Blood Moon", - effect: "The user unleashes the full brunt of its spirit from a full moon that shines as red as blood. This move can't be used twice in a row." + 'bloodMoon': { + name: 'Blood Moon', + effect: 'The user unleashes the full brunt of its spirit from a full moon that shines as red as blood. This move can\'t be used twice in a row.' }, - "matchaGotcha": { - name: "Matcha Gotcha", - effect: "The user fires a blast of tea that it mixed. The user's HP is restored by up to half the damage taken by the target. This may also leave the target with a burn." + 'matchaGotcha': { + name: 'Matcha Gotcha', + effect: 'The user fires a blast of tea that it mixed. The user\'s HP is restored by up to half the damage taken by the target. This may also leave the target with a burn.' }, - "syrupBomb": { - name: "Syrup Bomb", - effect: "The user sets off an explosion of sticky candy syrup, which coats the target and causes the target's Speed stat to drop each turn for three turns." + 'syrupBomb': { + name: 'Syrup Bomb', + effect: 'The user sets off an explosion of sticky candy syrup, which coats the target and causes the target\'s Speed stat to drop each turn for three turns.' }, - "ivyCudgel": { - name: "Ivy Cudgel", - effect: "The user strikes with an ivy-wrapped cudgel. This move's type changes depending on the mask worn by the user, and it has a heightened chance of landing a critical hit." + 'ivyCudgel': { + name: 'Ivy Cudgel', + effect: 'The user strikes with an ivy-wrapped cudgel. This move\'s type changes depending on the mask worn by the user, and it has a heightened chance of landing a critical hit.' }, - "electroShot": { - name: "Electro Shot", - effect: "The user gathers electricity on the first turn, boosting its Sp. Atk stat, then fires a high-voltage shot on the next turn. The shot will be fired immediately in rain." + 'electroShot': { + name: 'Electro Shot', + effect: 'The user gathers electricity on the first turn, boosting its Sp. Atk stat, then fires a high-voltage shot on the next turn. The shot will be fired immediately in rain.' }, - "teraStarstorm": { - name: "Tera Starstorm", - effect: "With the power of its crystals, the user bombards and eliminates the target. When used by Terapagos in its Stellar Form, this move damages all opposing Pokémon." + 'teraStarstorm': { + name: 'Tera Starstorm', + effect: 'With the power of its crystals, the user bombards and eliminates the target. When used by Terapagos in its Stellar Form, this move damages all opposing Pokémon.' }, - "fickleBeam": { - name: "Fickle Beam", - effect: "The user shoots a beam of light to inflict damage. Sometimes all the user's heads shoot beams in unison, doubling the move's power." + 'fickleBeam': { + name: 'Fickle Beam', + effect: 'The user shoots a beam of light to inflict damage. Sometimes all the user\'s heads shoot beams in unison, doubling the move\'s power.' }, - "burningBulwark": { - name: "Burning Bulwark", - effect: "The user's intensely hot fur protects it from attacks and also burns any attacker that makes direct contact with it." + 'burningBulwark': { + name: 'Burning Bulwark', + effect: 'The user\'s intensely hot fur protects it from attacks and also burns any attacker that makes direct contact with it.' }, - "thunderclap": { - name: "Thunderclap", - effect: "This move enables the user to attack first with a jolt of electricity. This move fails if the target is not readying an attack." + 'thunderclap': { + name: 'Thunderclap', + effect: 'This move enables the user to attack first with a jolt of electricity. This move fails if the target is not readying an attack.' }, - "mightyCleave": { - name: "Mighty Cleave", - effect: "The user wields the light that has accumulated atop its head to cleave the target. This move hits even if the target protects itself." + 'mightyCleave': { + name: 'Mighty Cleave', + effect: 'The user wields the light that has accumulated atop its head to cleave the target. This move hits even if the target protects itself.' }, - "tachyonCutter": { - name: "Tachyon Cutter", - effect: "The user attacks by launching particle blades at the target twice in a row. This attack never misses." + 'tachyonCutter': { + name: 'Tachyon Cutter', + effect: 'The user attacks by launching particle blades at the target twice in a row. This attack never misses.' }, - "hardPress": { - name: "Hard Press", - effect: "The target is crushed with an arm, a claw, or the like to inflict damage. The more HP the target has left, the greater the move's power." + 'hardPress': { + name: 'Hard Press', + effect: 'The target is crushed with an arm, a claw, or the like to inflict damage. The more HP the target has left, the greater the move\'s power.' }, - "dragonCheer": { - name: "Dragon Cheer", - effect: "The user raises its allies' morale with a draconic cry so that their future attacks have a heightened chance of landing critical hits. This rouses Dragon types more." + 'dragonCheer': { + name: 'Dragon Cheer', + effect: 'The user raises its allies\' morale with a draconic cry so that their future attacks have a heightened chance of landing critical hits. This rouses Dragon types more.' }, - "alluringVoice": { - name: "Alluring Voice", - effect: "The user attacks the target using its angelic voice. This also confuses the target if its stats have been boosted during the turn." + 'alluringVoice': { + name: 'Alluring Voice', + effect: 'The user attacks the target using its angelic voice. This also confuses the target if its stats have been boosted during the turn.' }, - "temperFlare": { - name: "Temper Flare", - effect: "Spurred by desperation, the user attacks the target. This move's power is doubled if the user's previous move failed." + 'temperFlare': { + name: 'Temper Flare', + effect: 'Spurred by desperation, the user attacks the target. This move\'s power is doubled if the user\'s previous move failed.' }, - "supercellSlam": { - name: "Supercell Slam", - effect: "The user electrifies its body and drops onto the target to inflict damage. If this move misses, the user takes damage instead." + 'supercellSlam': { + name: 'Supercell Slam', + effect: 'The user electrifies its body and drops onto the target to inflict damage. If this move misses, the user takes damage instead.' }, - "psychicNoise": { - name: "Psychic Noise", - effect: "The user attacks the target with unpleasant sound waves. For two turns, the target is prevented from recovering HP through moves, Abilities, or held items." + 'psychicNoise': { + name: 'Psychic Noise', + effect: 'The user attacks the target with unpleasant sound waves. For two turns, the target is prevented from recovering HP through moves, Abilities, or held items.' }, - "upperHand": { - name: "Upper Hand", - effect: "The user reacts to the target's movement and strikes with the heel of its palm, making the target flinch. This move fails if the target is not readying a priority move." + 'upperHand': { + name: 'Upper Hand', + effect: 'The user reacts to the target\'s movement and strikes with the heel of its palm, making the target flinch. This move fails if the target is not readying a priority move.' }, - "malignantChain": { - name: "Malignant Chain", - effect: "The user pours toxins into the target by wrapping them in a toxic, corrosive chain. This may also leave the target badly poisoned." + 'malignantChain': { + name: 'Malignant Chain', + effect: 'The user pours toxins into the target by wrapping them in a toxic, corrosive chain. This may also leave the target badly poisoned.' } -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/en/nature.ts b/src/locales/en/nature.ts index f29917ff60d..597f7822073 100644 --- a/src/locales/en/nature.ts +++ b/src/locales/en/nature.ts @@ -1,29 +1,29 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const nature: SimpleTranslationEntries = { - "Hardy": "Hardy", - "Lonely": "Lonely", - "Brave": "Brave", - "Adamant": "Adamant", - "Naughty": "Naughty", - "Bold": "Bold", - "Docile": "Docile", - "Relaxed": "Relaxed", - "Impish": "Impish", - "Lax": "Lax", - "Timid": "Timid", - "Hasty": "Hasty", - "Serious": "Serious", - "Jolly": "Jolly", - "Naive": "Naive", - "Modest": "Modest", - "Mild": "Mild", - "Quiet": "Quiet", - "Bashful": "Bashful", - "Rash": "Rash", - "Calm": "Calm", - "Gentle": "Gentle", - "Sassy": "Sassy", - "Careful": "Careful", - "Quirky": "Quirky" -} as const; \ No newline at end of file + 'Hardy': 'Hardy', + 'Lonely': 'Lonely', + 'Brave': 'Brave', + 'Adamant': 'Adamant', + 'Naughty': 'Naughty', + 'Bold': 'Bold', + 'Docile': 'Docile', + 'Relaxed': 'Relaxed', + 'Impish': 'Impish', + 'Lax': 'Lax', + 'Timid': 'Timid', + 'Hasty': 'Hasty', + 'Serious': 'Serious', + 'Jolly': 'Jolly', + 'Naive': 'Naive', + 'Modest': 'Modest', + 'Mild': 'Mild', + 'Quiet': 'Quiet', + 'Bashful': 'Bashful', + 'Rash': 'Rash', + 'Calm': 'Calm', + 'Gentle': 'Gentle', + 'Sassy': 'Sassy', + 'Careful': 'Careful', + 'Quirky': 'Quirky' +} as const; diff --git a/src/locales/en/pokeball.ts b/src/locales/en/pokeball.ts index 2bd7f603085..eaf9b7fe526 100644 --- a/src/locales/en/pokeball.ts +++ b/src/locales/en/pokeball.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokeball: SimpleTranslationEntries = { - "pokeBall": "Poké Ball", - "greatBall": "Great Ball", - "ultraBall": "Ultra Ball", - "rogueBall": "Rogue Ball", - "masterBall": "Master Ball", - "luxuryBall": "Luxury Ball", -} as const; \ No newline at end of file + 'pokeBall': 'Poké Ball', + 'greatBall': 'Great Ball', + 'ultraBall': 'Ultra Ball', + 'rogueBall': 'Rogue Ball', + 'masterBall': 'Master Ball', + 'luxuryBall': 'Luxury Ball', +} as const; diff --git a/src/locales/en/pokemon-info.ts b/src/locales/en/pokemon-info.ts index 2c7ee78f07a..2df4ca65905 100644 --- a/src/locales/en/pokemon-info.ts +++ b/src/locales/en/pokemon-info.ts @@ -1,41 +1,41 @@ -import { PokemonInfoTranslationEntries } from "#app/plugins/i18n"; +import { PokemonInfoTranslationEntries } from '#app/plugins/i18n'; export const pokemonInfo: PokemonInfoTranslationEntries = { - Stat: { - "HP": "Max. HP", - "HPshortened": "MaxHP", - "ATK": "Attack", - "ATKshortened": "Atk", - "DEF": "Defense", - "DEFshortened": "Def", - "SPATK": "Sp. Atk", - "SPATKshortened": "SpAtk", - "SPDEF": "Sp. Def", - "SPDEFshortened": "SpDef", - "SPD": "Speed", - "SPDshortened": "Spd" - }, + Stat: { + 'HP': 'Max. HP', + 'HPshortened': 'MaxHP', + 'ATK': 'Attack', + 'ATKshortened': 'Atk', + 'DEF': 'Defense', + 'DEFshortened': 'Def', + 'SPATK': 'Sp. Atk', + 'SPATKshortened': 'SpAtk', + 'SPDEF': 'Sp. Def', + 'SPDEFshortened': 'SpDef', + 'SPD': 'Speed', + 'SPDshortened': 'Spd' + }, - Type: { - "UNKNOWN": "Unknown", - "NORMAL": "Normal", - "FIGHTING": "Fighting", - "FLYING": "Flying", - "POISON": "Poison", - "GROUND": "Ground", - "ROCK": "Rock", - "BUG": "Bug", - "GHOST": "Ghost", - "STEEL": "Steel", - "FIRE": "Fire", - "WATER": "Water", - "GRASS": "Grass", - "ELECTRIC": "Electric", - "PSYCHIC": "Psychic", - "ICE": "Ice", - "DRAGON": "Dragon", - "DARK": "Dark", - "FAIRY": "Fairy", - "STELLAR": "Stellar", - }, -} as const; \ No newline at end of file + Type: { + 'UNKNOWN': 'Unknown', + 'NORMAL': 'Normal', + 'FIGHTING': 'Fighting', + 'FLYING': 'Flying', + 'POISON': 'Poison', + 'GROUND': 'Ground', + 'ROCK': 'Rock', + 'BUG': 'Bug', + 'GHOST': 'Ghost', + 'STEEL': 'Steel', + 'FIRE': 'Fire', + 'WATER': 'Water', + 'GRASS': 'Grass', + 'ELECTRIC': 'Electric', + 'PSYCHIC': 'Psychic', + 'ICE': 'Ice', + 'DRAGON': 'Dragon', + 'DARK': 'Dark', + 'FAIRY': 'Fairy', + 'STELLAR': 'Stellar', + }, +} as const; diff --git a/src/locales/en/pokemon.ts b/src/locales/en/pokemon.ts index 09be8894eb4..965c9b750e1 100644 --- a/src/locales/en/pokemon.ts +++ b/src/locales/en/pokemon.ts @@ -1,1086 +1,1086 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokemon: SimpleTranslationEntries = { - "bulbasaur": "Bulbasaur", - "ivysaur": "Ivysaur", - "venusaur": "Venusaur", - "charmander": "Charmander", - "charmeleon": "Charmeleon", - "charizard": "Charizard", - "squirtle": "Squirtle", - "wartortle": "Wartortle", - "blastoise": "Blastoise", - "caterpie": "Caterpie", - "metapod": "Metapod", - "butterfree": "Butterfree", - "weedle": "Weedle", - "kakuna": "Kakuna", - "beedrill": "Beedrill", - "pidgey": "Pidgey", - "pidgeotto": "Pidgeotto", - "pidgeot": "Pidgeot", - "rattata": "Rattata", - "raticate": "Raticate", - "spearow": "Spearow", - "fearow": "Fearow", - "ekans": "Ekans", - "arbok": "Arbok", - "pikachu": "Pikachu", - "raichu": "Raichu", - "sandshrew": "Sandshrew", - "sandslash": "Sandslash", - "nidoran_f": "Nidoran♀", - "nidorina": "Nidorina", - "nidoqueen": "Nidoqueen", - "nidoran_m": "Nidoran♂", - "nidorino": "Nidorino", - "nidoking": "Nidoking", - "clefairy": "Clefairy", - "clefable": "Clefable", - "vulpix": "Vulpix", - "ninetales": "Ninetales", - "jigglypuff": "Jigglypuff", - "wigglytuff": "Wigglytuff", - "zubat": "Zubat", - "golbat": "Golbat", - "oddish": "Oddish", - "gloom": "Gloom", - "vileplume": "Vileplume", - "paras": "Paras", - "parasect": "Parasect", - "venonat": "Venonat", - "venomoth": "Venomoth", - "diglett": "Diglett", - "dugtrio": "Dugtrio", - "meowth": "Meowth", - "persian": "Persian", - "psyduck": "Psyduck", - "golduck": "Golduck", - "mankey": "Mankey", - "primeape": "Primeape", - "growlithe": "Growlithe", - "arcanine": "Arcanine", - "poliwag": "Poliwag", - "poliwhirl": "Poliwhirl", - "poliwrath": "Poliwrath", - "abra": "Abra", - "kadabra": "Kadabra", - "alakazam": "Alakazam", - "machop": "Machop", - "machoke": "Machoke", - "machamp": "Machamp", - "bellsprout": "Bellsprout", - "weepinbell": "Weepinbell", - "victreebel": "Victreebel", - "tentacool": "Tentacool", - "tentacruel": "Tentacruel", - "geodude": "Geodude", - "graveler": "Graveler", - "golem": "Golem", - "ponyta": "Ponyta", - "rapidash": "Rapidash", - "slowpoke": "Slowpoke", - "slowbro": "Slowbro", - "magnemite": "Magnemite", - "magneton": "Magneton", - "farfetchd": "Farfetch'd", - "doduo": "Doduo", - "dodrio": "Dodrio", - "seel": "Seel", - "dewgong": "Dewgong", - "grimer": "Grimer", - "muk": "Muk", - "shellder": "Shellder", - "cloyster": "Cloyster", - "gastly": "Gastly", - "haunter": "Haunter", - "gengar": "Gengar", - "onix": "Onix", - "drowzee": "Drowzee", - "hypno": "Hypno", - "krabby": "Krabby", - "kingler": "Kingler", - "voltorb": "Voltorb", - "electrode": "Electrode", - "exeggcute": "Exeggcute", - "exeggutor": "Exeggutor", - "cubone": "Cubone", - "marowak": "Marowak", - "hitmonlee": "Hitmonlee", - "hitmonchan": "Hitmonchan", - "lickitung": "Lickitung", - "koffing": "Koffing", - "weezing": "Weezing", - "rhyhorn": "Rhyhorn", - "rhydon": "Rhydon", - "chansey": "Chansey", - "tangela": "Tangela", - "kangaskhan": "Kangaskhan", - "horsea": "Horsea", - "seadra": "Seadra", - "goldeen": "Goldeen", - "seaking": "Seaking", - "staryu": "Staryu", - "starmie": "Starmie", - "mr_mime": "Mr. Mime", - "scyther": "Scyther", - "jynx": "Jynx", - "electabuzz": "Electabuzz", - "magmar": "Magmar", - "pinsir": "Pinsir", - "tauros": "Tauros", - "magikarp": "Magikarp", - "gyarados": "Gyarados", - "lapras": "Lapras", - "ditto": "Ditto", - "eevee": "Eevee", - "vaporeon": "Vaporeon", - "jolteon": "Jolteon", - "flareon": "Flareon", - "porygon": "Porygon", - "omanyte": "Omanyte", - "omastar": "Omastar", - "kabuto": "Kabuto", - "kabutops": "Kabutops", - "aerodactyl": "Aerodactyl", - "snorlax": "Snorlax", - "articuno": "Articuno", - "zapdos": "Zapdos", - "moltres": "Moltres", - "dratini": "Dratini", - "dragonair": "Dragonair", - "dragonite": "Dragonite", - "mewtwo": "Mewtwo", - "mew": "Mew", - "chikorita": "Chikorita", - "bayleef": "Bayleef", - "meganium": "Meganium", - "cyndaquil": "Cyndaquil", - "quilava": "Quilava", - "typhlosion": "Typhlosion", - "totodile": "Totodile", - "croconaw": "Croconaw", - "feraligatr": "Feraligatr", - "sentret": "Sentret", - "furret": "Furret", - "hoothoot": "Hoothoot", - "noctowl": "Noctowl", - "ledyba": "Ledyba", - "ledian": "Ledian", - "spinarak": "Spinarak", - "ariados": "Ariados", - "crobat": "Crobat", - "chinchou": "Chinchou", - "lanturn": "Lanturn", - "pichu": "Pichu", - "cleffa": "Cleffa", - "igglybuff": "Igglybuff", - "togepi": "Togepi", - "togetic": "Togetic", - "natu": "Natu", - "xatu": "Xatu", - "mareep": "Mareep", - "flaaffy": "Flaaffy", - "ampharos": "Ampharos", - "bellossom": "Bellossom", - "marill": "Marill", - "azumarill": "Azumarill", - "sudowoodo": "Sudowoodo", - "politoed": "Politoed", - "hoppip": "Hoppip", - "skiploom": "Skiploom", - "jumpluff": "Jumpluff", - "aipom": "Aipom", - "sunkern": "Sunkern", - "sunflora": "Sunflora", - "yanma": "Yanma", - "wooper": "Wooper", - "quagsire": "Quagsire", - "espeon": "Espeon", - "umbreon": "Umbreon", - "murkrow": "Murkrow", - "slowking": "Slowking", - "misdreavus": "Misdreavus", - "unown": "Unown", - "wobbuffet": "Wobbuffet", - "girafarig": "Girafarig", - "pineco": "Pineco", - "forretress": "Forretress", - "dunsparce": "Dunsparce", - "gligar": "Gligar", - "steelix": "Steelix", - "snubbull": "Snubbull", - "granbull": "Granbull", - "qwilfish": "Qwilfish", - "scizor": "Scizor", - "shuckle": "Shuckle", - "heracross": "Heracross", - "sneasel": "Sneasel", - "teddiursa": "Teddiursa", - "ursaring": "Ursaring", - "slugma": "Slugma", - "magcargo": "Magcargo", - "swinub": "Swinub", - "piloswine": "Piloswine", - "corsola": "Corsola", - "remoraid": "Remoraid", - "octillery": "Octillery", - "delibird": "Delibird", - "mantine": "Mantine", - "skarmory": "Skarmory", - "houndour": "Houndour", - "houndoom": "Houndoom", - "kingdra": "Kingdra", - "phanpy": "Phanpy", - "donphan": "Donphan", - "porygon2": "Porygon2", - "stantler": "Stantler", - "smeargle": "Smeargle", - "tyrogue": "Tyrogue", - "hitmontop": "Hitmontop", - "smoochum": "Smoochum", - "elekid": "Elekid", - "magby": "Magby", - "miltank": "Miltank", - "blissey": "Blissey", - "raikou": "Raikou", - "entei": "Entei", - "suicune": "Suicune", - "larvitar": "Larvitar", - "pupitar": "Pupitar", - "tyranitar": "Tyranitar", - "lugia": "Lugia", - "ho_oh": "Ho-Oh", - "celebi": "Celebi", - "treecko": "Treecko", - "grovyle": "Grovyle", - "sceptile": "Sceptile", - "torchic": "Torchic", - "combusken": "Combusken", - "blaziken": "Blaziken", - "mudkip": "Mudkip", - "marshtomp": "Marshtomp", - "swampert": "Swampert", - "poochyena": "Poochyena", - "mightyena": "Mightyena", - "zigzagoon": "Zigzagoon", - "linoone": "Linoone", - "wurmple": "Wurmple", - "silcoon": "Silcoon", - "beautifly": "Beautifly", - "cascoon": "Cascoon", - "dustox": "Dustox", - "lotad": "Lotad", - "lombre": "Lombre", - "ludicolo": "Ludicolo", - "seedot": "Seedot", - "nuzleaf": "Nuzleaf", - "shiftry": "Shiftry", - "taillow": "Taillow", - "swellow": "Swellow", - "wingull": "Wingull", - "pelipper": "Pelipper", - "ralts": "Ralts", - "kirlia": "Kirlia", - "gardevoir": "Gardevoir", - "surskit": "Surskit", - "masquerain": "Masquerain", - "shroomish": "Shroomish", - "breloom": "Breloom", - "slakoth": "Slakoth", - "vigoroth": "Vigoroth", - "slaking": "Slaking", - "nincada": "Nincada", - "ninjask": "Ninjask", - "shedinja": "Shedinja", - "whismur": "Whismur", - "loudred": "Loudred", - "exploud": "Exploud", - "makuhita": "Makuhita", - "hariyama": "Hariyama", - "azurill": "Azurill", - "nosepass": "Nosepass", - "skitty": "Skitty", - "delcatty": "Delcatty", - "sableye": "Sableye", - "mawile": "Mawile", - "aron": "Aron", - "lairon": "Lairon", - "aggron": "Aggron", - "meditite": "Meditite", - "medicham": "Medicham", - "electrike": "Electrike", - "manectric": "Manectric", - "plusle": "Plusle", - "minun": "Minun", - "volbeat": "Volbeat", - "illumise": "Illumise", - "roselia": "Roselia", - "gulpin": "Gulpin", - "swalot": "Swalot", - "carvanha": "Carvanha", - "sharpedo": "Sharpedo", - "wailmer": "Wailmer", - "wailord": "Wailord", - "numel": "Numel", - "camerupt": "Camerupt", - "torkoal": "Torkoal", - "spoink": "Spoink", - "grumpig": "Grumpig", - "spinda": "Spinda", - "trapinch": "Trapinch", - "vibrava": "Vibrava", - "flygon": "Flygon", - "cacnea": "Cacnea", - "cacturne": "Cacturne", - "swablu": "Swablu", - "altaria": "Altaria", - "zangoose": "Zangoose", - "seviper": "Seviper", - "lunatone": "Lunatone", - "solrock": "Solrock", - "barboach": "Barboach", - "whiscash": "Whiscash", - "corphish": "Corphish", - "crawdaunt": "Crawdaunt", - "baltoy": "Baltoy", - "claydol": "Claydol", - "lileep": "Lileep", - "cradily": "Cradily", - "anorith": "Anorith", - "armaldo": "Armaldo", - "feebas": "Feebas", - "milotic": "Milotic", - "castform": "Castform", - "kecleon": "Kecleon", - "shuppet": "Shuppet", - "banette": "Banette", - "duskull": "Duskull", - "dusclops": "Dusclops", - "tropius": "Tropius", - "chimecho": "Chimecho", - "absol": "Absol", - "wynaut": "Wynaut", - "snorunt": "Snorunt", - "glalie": "Glalie", - "spheal": "Spheal", - "sealeo": "Sealeo", - "walrein": "Walrein", - "clamperl": "Clamperl", - "huntail": "Huntail", - "gorebyss": "Gorebyss", - "relicanth": "Relicanth", - "luvdisc": "Luvdisc", - "bagon": "Bagon", - "shelgon": "Shelgon", - "salamence": "Salamence", - "beldum": "Beldum", - "metang": "Metang", - "metagross": "Metagross", - "regirock": "Regirock", - "regice": "Regice", - "registeel": "Registeel", - "latias": "Latias", - "latios": "Latios", - "kyogre": "Kyogre", - "groudon": "Groudon", - "rayquaza": "Rayquaza", - "jirachi": "Jirachi", - "deoxys": "Deoxys", - "turtwig": "Turtwig", - "grotle": "Grotle", - "torterra": "Torterra", - "chimchar": "Chimchar", - "monferno": "Monferno", - "infernape": "Infernape", - "piplup": "Piplup", - "prinplup": "Prinplup", - "empoleon": "Empoleon", - "starly": "Starly", - "staravia": "Staravia", - "staraptor": "Staraptor", - "bidoof": "Bidoof", - "bibarel": "Bibarel", - "kricketot": "Kricketot", - "kricketune": "Kricketune", - "shinx": "Shinx", - "luxio": "Luxio", - "luxray": "Luxray", - "budew": "Budew", - "roserade": "Roserade", - "cranidos": "Cranidos", - "rampardos": "Rampardos", - "shieldon": "Shieldon", - "bastiodon": "Bastiodon", - "burmy": "Burmy", - "wormadam": "Wormadam", - "mothim": "Mothim", - "combee": "Combee", - "vespiquen": "Vespiquen", - "pachirisu": "Pachirisu", - "buizel": "Buizel", - "floatzel": "Floatzel", - "cherubi": "Cherubi", - "cherrim": "Cherrim", - "shellos": "Shellos", - "gastrodon": "Gastrodon", - "ambipom": "Ambipom", - "drifloon": "Drifloon", - "drifblim": "Drifblim", - "buneary": "Buneary", - "lopunny": "Lopunny", - "mismagius": "Mismagius", - "honchkrow": "Honchkrow", - "glameow": "Glameow", - "purugly": "Purugly", - "chingling": "Chingling", - "stunky": "Stunky", - "skuntank": "Skuntank", - "bronzor": "Bronzor", - "bronzong": "Bronzong", - "bonsly": "Bonsly", - "mime_jr": "Mime Jr.", - "happiny": "Happiny", - "chatot": "Chatot", - "spiritomb": "Spiritomb", - "gible": "Gible", - "gabite": "Gabite", - "garchomp": "Garchomp", - "munchlax": "Munchlax", - "riolu": "Riolu", - "lucario": "Lucario", - "hippopotas": "Hippopotas", - "hippowdon": "Hippowdon", - "skorupi": "Skorupi", - "drapion": "Drapion", - "croagunk": "Croagunk", - "toxicroak": "Toxicroak", - "carnivine": "Carnivine", - "finneon": "Finneon", - "lumineon": "Lumineon", - "mantyke": "Mantyke", - "snover": "Snover", - "abomasnow": "Abomasnow", - "weavile": "Weavile", - "magnezone": "Magnezone", - "lickilicky": "Lickilicky", - "rhyperior": "Rhyperior", - "tangrowth": "Tangrowth", - "electivire": "Electivire", - "magmortar": "Magmortar", - "togekiss": "Togekiss", - "yanmega": "Yanmega", - "leafeon": "Leafeon", - "glaceon": "Glaceon", - "gliscor": "Gliscor", - "mamoswine": "Mamoswine", - "porygon_z": "Porygon-Z", - "gallade": "Gallade", - "probopass": "Probopass", - "dusknoir": "Dusknoir", - "froslass": "Froslass", - "rotom": "Rotom", - "uxie": "Uxie", - "mesprit": "Mesprit", - "azelf": "Azelf", - "dialga": "Dialga", - "palkia": "Palkia", - "heatran": "Heatran", - "regigigas": "Regigigas", - "giratina": "Giratina", - "cresselia": "Cresselia", - "phione": "Phione", - "manaphy": "Manaphy", - "darkrai": "Darkrai", - "shaymin": "Shaymin", - "arceus": "Arceus", - "victini": "Victini", - "snivy": "Snivy", - "servine": "Servine", - "serperior": "Serperior", - "tepig": "Tepig", - "pignite": "Pignite", - "emboar": "Emboar", - "oshawott": "Oshawott", - "dewott": "Dewott", - "samurott": "Samurott", - "patrat": "Patrat", - "watchog": "Watchog", - "lillipup": "Lillipup", - "herdier": "Herdier", - "stoutland": "Stoutland", - "purrloin": "Purrloin", - "liepard": "Liepard", - "pansage": "Pansage", - "simisage": "Simisage", - "pansear": "Pansear", - "simisear": "Simisear", - "panpour": "Panpour", - "simipour": "Simipour", - "munna": "Munna", - "musharna": "Musharna", - "pidove": "Pidove", - "tranquill": "Tranquill", - "unfezant": "Unfezant", - "blitzle": "Blitzle", - "zebstrika": "Zebstrika", - "roggenrola": "Roggenrola", - "boldore": "Boldore", - "gigalith": "Gigalith", - "woobat": "Woobat", - "swoobat": "Swoobat", - "drilbur": "Drilbur", - "excadrill": "Excadrill", - "audino": "Audino", - "timburr": "Timburr", - "gurdurr": "Gurdurr", - "conkeldurr": "Conkeldurr", - "tympole": "Tympole", - "palpitoad": "Palpitoad", - "seismitoad": "Seismitoad", - "throh": "Throh", - "sawk": "Sawk", - "sewaddle": "Sewaddle", - "swadloon": "Swadloon", - "leavanny": "Leavanny", - "venipede": "Venipede", - "whirlipede": "Whirlipede", - "scolipede": "Scolipede", - "cottonee": "Cottonee", - "whimsicott": "Whimsicott", - "petilil": "Petilil", - "lilligant": "Lilligant", - "basculin": "Basculin", - "sandile": "Sandile", - "krokorok": "Krokorok", - "krookodile": "Krookodile", - "darumaka": "Darumaka", - "darmanitan": "Darmanitan", - "maractus": "Maractus", - "dwebble": "Dwebble", - "crustle": "Crustle", - "scraggy": "Scraggy", - "scrafty": "Scrafty", - "sigilyph": "Sigilyph", - "yamask": "Yamask", - "cofagrigus": "Cofagrigus", - "tirtouga": "Tirtouga", - "carracosta": "Carracosta", - "archen": "Archen", - "archeops": "Archeops", - "trubbish": "Trubbish", - "garbodor": "Garbodor", - "zorua": "Zorua", - "zoroark": "Zoroark", - "minccino": "Minccino", - "cinccino": "Cinccino", - "gothita": "Gothita", - "gothorita": "Gothorita", - "gothitelle": "Gothitelle", - "solosis": "Solosis", - "duosion": "Duosion", - "reuniclus": "Reuniclus", - "ducklett": "Ducklett", - "swanna": "Swanna", - "vanillite": "Vanillite", - "vanillish": "Vanillish", - "vanilluxe": "Vanilluxe", - "deerling": "Deerling", - "sawsbuck": "Sawsbuck", - "emolga": "Emolga", - "karrablast": "Karrablast", - "escavalier": "Escavalier", - "foongus": "Foongus", - "amoonguss": "Amoonguss", - "frillish": "Frillish", - "jellicent": "Jellicent", - "alomomola": "Alomomola", - "joltik": "Joltik", - "galvantula": "Galvantula", - "ferroseed": "Ferroseed", - "ferrothorn": "Ferrothorn", - "klink": "Klink", - "klang": "Klang", - "klinklang": "Klinklang", - "tynamo": "Tynamo", - "eelektrik": "Eelektrik", - "eelektross": "Eelektross", - "elgyem": "Elgyem", - "beheeyem": "Beheeyem", - "litwick": "Litwick", - "lampent": "Lampent", - "chandelure": "Chandelure", - "axew": "Axew", - "fraxure": "Fraxure", - "haxorus": "Haxorus", - "cubchoo": "Cubchoo", - "beartic": "Beartic", - "cryogonal": "Cryogonal", - "shelmet": "Shelmet", - "accelgor": "Accelgor", - "stunfisk": "Stunfisk", - "mienfoo": "Mienfoo", - "mienshao": "Mienshao", - "druddigon": "Druddigon", - "golett": "Golett", - "golurk": "Golurk", - "pawniard": "Pawniard", - "bisharp": "Bisharp", - "bouffalant": "Bouffalant", - "rufflet": "Rufflet", - "braviary": "Braviary", - "vullaby": "Vullaby", - "mandibuzz": "Mandibuzz", - "heatmor": "Heatmor", - "durant": "Durant", - "deino": "Deino", - "zweilous": "Zweilous", - "hydreigon": "Hydreigon", - "larvesta": "Larvesta", - "volcarona": "Volcarona", - "cobalion": "Cobalion", - "terrakion": "Terrakion", - "virizion": "Virizion", - "tornadus": "Tornadus", - "thundurus": "Thundurus", - "reshiram": "Reshiram", - "zekrom": "Zekrom", - "landorus": "Landorus", - "kyurem": "Kyurem", - "keldeo": "Keldeo", - "meloetta": "Meloetta", - "genesect": "Genesect", - "chespin": "Chespin", - "quilladin": "Quilladin", - "chesnaught": "Chesnaught", - "fennekin": "Fennekin", - "braixen": "Braixen", - "delphox": "Delphox", - "froakie": "Froakie", - "frogadier": "Frogadier", - "greninja": "Greninja", - "bunnelby": "Bunnelby", - "diggersby": "Diggersby", - "fletchling": "Fletchling", - "fletchinder": "Fletchinder", - "talonflame": "Talonflame", - "scatterbug": "Scatterbug", - "spewpa": "Spewpa", - "vivillon": "Vivillon", - "litleo": "Litleo", - "pyroar": "Pyroar", - "flabebe": "Flabébé", - "floette": "Floette", - "florges": "Florges", - "skiddo": "Skiddo", - "gogoat": "Gogoat", - "pancham": "Pancham", - "pangoro": "Pangoro", - "furfrou": "Furfrou", - "espurr": "Espurr", - "meowstic": "Meowstic", - "honedge": "Honedge", - "doublade": "Doublade", - "aegislash": "Aegislash", - "spritzee": "Spritzee", - "aromatisse": "Aromatisse", - "swirlix": "Swirlix", - "slurpuff": "Slurpuff", - "inkay": "Inkay", - "malamar": "Malamar", - "binacle": "Binacle", - "barbaracle": "Barbaracle", - "skrelp": "Skrelp", - "dragalge": "Dragalge", - "clauncher": "Clauncher", - "clawitzer": "Clawitzer", - "helioptile": "Helioptile", - "heliolisk": "Heliolisk", - "tyrunt": "Tyrunt", - "tyrantrum": "Tyrantrum", - "amaura": "Amaura", - "aurorus": "Aurorus", - "sylveon": "Sylveon", - "hawlucha": "Hawlucha", - "dedenne": "Dedenne", - "carbink": "Carbink", - "goomy": "Goomy", - "sliggoo": "Sliggoo", - "goodra": "Goodra", - "klefki": "Klefki", - "phantump": "Phantump", - "trevenant": "Trevenant", - "pumpkaboo": "Pumpkaboo", - "gourgeist": "Gourgeist", - "bergmite": "Bergmite", - "avalugg": "Avalugg", - "noibat": "Noibat", - "noivern": "Noivern", - "xerneas": "Xerneas", - "yveltal": "Yveltal", - "zygarde": "Zygarde", - "diancie": "Diancie", - "hoopa": "Hoopa", - "volcanion": "Volcanion", - "rowlet": "Rowlet", - "dartrix": "Dartrix", - "decidueye": "Decidueye", - "litten": "Litten", - "torracat": "Torracat", - "incineroar": "Incineroar", - "popplio": "Popplio", - "brionne": "Brionne", - "primarina": "Primarina", - "pikipek": "Pikipek", - "trumbeak": "Trumbeak", - "toucannon": "Toucannon", - "yungoos": "Yungoos", - "gumshoos": "Gumshoos", - "grubbin": "Grubbin", - "charjabug": "Charjabug", - "vikavolt": "Vikavolt", - "crabrawler": "Crabrawler", - "crabominable": "Crabominable", - "oricorio": "Oricorio", - "cutiefly": "Cutiefly", - "ribombee": "Ribombee", - "rockruff": "Rockruff", - "lycanroc": "Lycanroc", - "wishiwashi": "Wishiwashi", - "mareanie": "Mareanie", - "toxapex": "Toxapex", - "mudbray": "Mudbray", - "mudsdale": "Mudsdale", - "dewpider": "Dewpider", - "araquanid": "Araquanid", - "fomantis": "Fomantis", - "lurantis": "Lurantis", - "morelull": "Morelull", - "shiinotic": "Shiinotic", - "salandit": "Salandit", - "salazzle": "Salazzle", - "stufful": "Stufful", - "bewear": "Bewear", - "bounsweet": "Bounsweet", - "steenee": "Steenee", - "tsareena": "Tsareena", - "comfey": "Comfey", - "oranguru": "Oranguru", - "passimian": "Passimian", - "wimpod": "Wimpod", - "golisopod": "Golisopod", - "sandygast": "Sandygast", - "palossand": "Palossand", - "pyukumuku": "Pyukumuku", - "type_null": "Type: Null", - "silvally": "Silvally", - "minior": "Minior", - "komala": "Komala", - "turtonator": "Turtonator", - "togedemaru": "Togedemaru", - "mimikyu": "Mimikyu", - "bruxish": "Bruxish", - "drampa": "Drampa", - "dhelmise": "Dhelmise", - "jangmo_o": "Jangmo-o", - "hakamo_o": "Hakamo-o", - "kommo_o": "Kommo-o", - "tapu_koko": "Tapu Koko", - "tapu_lele": "Tapu Lele", - "tapu_bulu": "Tapu Bulu", - "tapu_fini": "Tapu Fini", - "cosmog": "Cosmog", - "cosmoem": "Cosmoem", - "solgaleo": "Solgaleo", - "lunala": "Lunala", - "nihilego": "Nihilego", - "buzzwole": "Buzzwole", - "pheromosa": "Pheromosa", - "xurkitree": "Xurkitree", - "celesteela": "Celesteela", - "kartana": "Kartana", - "guzzlord": "Guzzlord", - "necrozma": "Necrozma", - "magearna": "Magearna", - "marshadow": "Marshadow", - "poipole": "Poipole", - "naganadel": "Naganadel", - "stakataka": "Stakataka", - "blacephalon": "Blacephalon", - "zeraora": "Zeraora", - "meltan": "Meltan", - "melmetal": "Melmetal", - "grookey": "Grookey", - "thwackey": "Thwackey", - "rillaboom": "Rillaboom", - "scorbunny": "Scorbunny", - "raboot": "Raboot", - "cinderace": "Cinderace", - "sobble": "Sobble", - "drizzile": "Drizzile", - "inteleon": "Inteleon", - "skwovet": "Skwovet", - "greedent": "Greedent", - "rookidee": "Rookidee", - "corvisquire": "Corvisquire", - "corviknight": "Corviknight", - "blipbug": "Blipbug", - "dottler": "Dottler", - "orbeetle": "Orbeetle", - "nickit": "Nickit", - "thievul": "Thievul", - "gossifleur": "Gossifleur", - "eldegoss": "Eldegoss", - "wooloo": "Wooloo", - "dubwool": "Dubwool", - "chewtle": "Chewtle", - "drednaw": "Drednaw", - "yamper": "Yamper", - "boltund": "Boltund", - "rolycoly": "Rolycoly", - "carkol": "Carkol", - "coalossal": "Coalossal", - "applin": "Applin", - "flapple": "Flapple", - "appletun": "Appletun", - "silicobra": "Silicobra", - "sandaconda": "Sandaconda", - "cramorant": "Cramorant", - "arrokuda": "Arrokuda", - "barraskewda": "Barraskewda", - "toxel": "Toxel", - "toxtricity": "Toxtricity", - "sizzlipede": "Sizzlipede", - "centiskorch": "Centiskorch", - "clobbopus": "Clobbopus", - "grapploct": "Grapploct", - "sinistea": "Sinistea", - "polteageist": "Polteageist", - "hatenna": "Hatenna", - "hattrem": "Hattrem", - "hatterene": "Hatterene", - "impidimp": "Impidimp", - "morgrem": "Morgrem", - "grimmsnarl": "Grimmsnarl", - "obstagoon": "Obstagoon", - "perrserker": "Perrserker", - "cursola": "Cursola", - "sirfetchd": "Sirfetch'd", - "mr_rime": "Mr. Rime", - "runerigus": "Runerigus", - "milcery": "Milcery", - "alcremie": "Alcremie", - "falinks": "Falinks", - "pincurchin": "Pincurchin", - "snom": "Snom", - "frosmoth": "Frosmoth", - "stonjourner": "Stonjourner", - "eiscue": "Eiscue", - "indeedee": "Indeedee", - "morpeko": "Morpeko", - "cufant": "Cufant", - "copperajah": "Copperajah", - "dracozolt": "Dracozolt", - "arctozolt": "Arctozolt", - "dracovish": "Dracovish", - "arctovish": "Arctovish", - "duraludon": "Duraludon", - "dreepy": "Dreepy", - "drakloak": "Drakloak", - "dragapult": "Dragapult", - "zacian": "Zacian", - "zamazenta": "Zamazenta", - "eternatus": "Eternatus", - "kubfu": "Kubfu", - "urshifu": "Urshifu", - "zarude": "Zarude", - "regieleki": "Regieleki", - "regidrago": "Regidrago", - "glastrier": "Glastrier", - "spectrier": "Spectrier", - "calyrex": "Calyrex", - "wyrdeer": "Wyrdeer", - "kleavor": "Kleavor", - "ursaluna": "Ursaluna", - "basculegion": "Basculegion", - "sneasler": "Sneasler", - "overqwil": "Overqwil", - "enamorus": "Enamorus", - "sprigatito": "Sprigatito", - "floragato": "Floragato", - "meowscarada": "Meowscarada", - "fuecoco": "Fuecoco", - "crocalor": "Crocalor", - "skeledirge": "Skeledirge", - "quaxly": "Quaxly", - "quaxwell": "Quaxwell", - "quaquaval": "Quaquaval", - "lechonk": "Lechonk", - "oinkologne": "Oinkologne", - "tarountula": "Tarountula", - "spidops": "Spidops", - "nymble": "Nymble", - "lokix": "Lokix", - "pawmi": "Pawmi", - "pawmo": "Pawmo", - "pawmot": "Pawmot", - "tandemaus": "Tandemaus", - "maushold": "Maushold", - "fidough": "Fidough", - "dachsbun": "Dachsbun", - "smoliv": "Smoliv", - "dolliv": "Dolliv", - "arboliva": "Arboliva", - "squawkabilly": "Squawkabilly", - "nacli": "Nacli", - "naclstack": "Naclstack", - "garganacl": "Garganacl", - "charcadet": "Charcadet", - "armarouge": "Armarouge", - "ceruledge": "Ceruledge", - "tadbulb": "Tadbulb", - "bellibolt": "Bellibolt", - "wattrel": "Wattrel", - "kilowattrel": "Kilowattrel", - "maschiff": "Maschiff", - "mabosstiff": "Mabosstiff", - "shroodle": "Shroodle", - "grafaiai": "Grafaiai", - "bramblin": "Bramblin", - "brambleghast": "Brambleghast", - "toedscool": "Toedscool", - "toedscruel": "Toedscruel", - "klawf": "Klawf", - "capsakid": "Capsakid", - "scovillain": "Scovillain", - "rellor": "Rellor", - "rabsca": "Rabsca", - "flittle": "Flittle", - "espathra": "Espathra", - "tinkatink": "Tinkatink", - "tinkatuff": "Tinkatuff", - "tinkaton": "Tinkaton", - "wiglett": "Wiglett", - "wugtrio": "Wugtrio", - "bombirdier": "Bombirdier", - "finizen": "Finizen", - "palafin": "Palafin", - "varoom": "Varoom", - "revavroom": "Revavroom", - "cyclizar": "Cyclizar", - "orthworm": "Orthworm", - "glimmet": "Glimmet", - "glimmora": "Glimmora", - "greavard": "Greavard", - "houndstone": "Houndstone", - "flamigo": "Flamigo", - "cetoddle": "Cetoddle", - "cetitan": "Cetitan", - "veluza": "Veluza", - "dondozo": "Dondozo", - "tatsugiri": "Tatsugiri", - "annihilape": "Annihilape", - "clodsire": "Clodsire", - "farigiraf": "Farigiraf", - "dudunsparce": "Dudunsparce", - "kingambit": "Kingambit", - "great_tusk": "Great Tusk", - "scream_tail": "Scream Tail", - "brute_bonnet": "Brute Bonnet", - "flutter_mane": "Flutter Mane", - "slither_wing": "Slither Wing", - "sandy_shocks": "Sandy Shocks", - "iron_treads": "Iron Treads", - "iron_bundle": "Iron Bundle", - "iron_hands": "Iron Hands", - "iron_jugulis": "Iron Jugulis", - "iron_moth": "Iron Moth", - "iron_thorns": "Iron Thorns", - "frigibax": "Frigibax", - "arctibax": "Arctibax", - "baxcalibur": "Baxcalibur", - "gimmighoul": "Gimmighoul", - "gholdengo": "Gholdengo", - "wo_chien": "Wo-Chien", - "chien_pao": "Chien-Pao", - "ting_lu": "Ting-Lu", - "chi_yu": "Chi-Yu", - "roaring_moon": "Roaring Moon", - "iron_valiant": "Iron Valiant", - "koraidon": "Koraidon", - "miraidon": "Miraidon", - "walking_wake": "Walking Wake", - "iron_leaves": "Iron Leaves", - "dipplin": "Dipplin", - "poltchageist": "Poltchageist", - "sinistcha": "Sinistcha", - "okidogi": "Okidogi", - "munkidori": "Munkidori", - "fezandipiti": "Fezandipiti", - "ogerpon": "Ogerpon", - "archaludon": "Archaludon", - "hydrapple": "Hydrapple", - "gouging_fire": "Gouging Fire", - "raging_bolt": "Raging Bolt", - "iron_boulder": "Iron Boulder", - "iron_crown": "Iron Crown", - "terapagos": "Terapagos", - "pecharunt": "Pecharunt", - "alola_rattata": "Rattata", - "alola_raticate": "Raticate", - "alola_raichu": "Raichu", - "alola_sandshrew": "Sandshrew", - "alola_sandslash": "Sandslash", - "alola_vulpix": "Vulpix", - "alola_ninetales": "Ninetales", - "alola_diglett": "Diglett", - "alola_dugtrio": "Dugtrio", - "alola_meowth": "Meowth", - "alola_persian": "Persian", - "alola_geodude": "Geodude", - "alola_graveler": "Graveler", - "alola_golem": "Golem", - "alola_grimer": "Grimer", - "alola_muk": "Muk", - "alola_exeggutor": "Exeggutor", - "alola_marowak": "Marowak", - "eternal_floette": "Floette", - "galar_meowth": "Meowth", - "galar_ponyta": "Ponyta", - "galar_rapidash": "Rapidash", - "galar_slowpoke": "Slowpoke", - "galar_slowbro": "Slowbro", - "galar_farfetchd": "Farfetch'd", - "galar_weezing": "Weezing", - "galar_mr_mime": "Mr. Mime", - "galar_articuno": "Articuno", - "galar_zapdos": "Zapdos", - "galar_moltres": "Moltres", - "galar_slowking": "Slowking", - "galar_corsola": "Corsola", - "galar_zigzagoon": "Zigzagoon", - "galar_linoone": "Linoone", - "galar_darumaka": "Darumaka", - "galar_darmanitan": "Darmanitan", - "galar_yamask": "Yamask", - "galar_stunfisk": "Stunfisk", - "hisui_growlithe": "Growlithe", - "hisui_arcanine": "Arcanine", - "hisui_voltorb": "Voltorb", - "hisui_electrode": "Electrode", - "hisui_typhlosion": "Typhlosion", - "hisui_qwilfish": "Qwilfish", - "hisui_sneasel": "Sneasel", - "hisui_samurott": "Samurott", - "hisui_lilligant": "Lilligant", - "hisui_zorua": "Zorua", - "hisui_zoroark": "Zoroark", - "hisui_braviary": "Braviary", - "hisui_sliggoo": "Sliggoo", - "hisui_goodra": "Goodra", - "hisui_avalugg": "Avalugg", - "hisui_decidueye": "Decidueye", - "paldea_tauros": "Tauros", - "paldea_wooper": "Wooper", - "bloodmoon_ursaluna": "Ursaluna", -} as const; \ No newline at end of file + 'bulbasaur': 'Bulbasaur', + 'ivysaur': 'Ivysaur', + 'venusaur': 'Venusaur', + 'charmander': 'Charmander', + 'charmeleon': 'Charmeleon', + 'charizard': 'Charizard', + 'squirtle': 'Squirtle', + 'wartortle': 'Wartortle', + 'blastoise': 'Blastoise', + 'caterpie': 'Caterpie', + 'metapod': 'Metapod', + 'butterfree': 'Butterfree', + 'weedle': 'Weedle', + 'kakuna': 'Kakuna', + 'beedrill': 'Beedrill', + 'pidgey': 'Pidgey', + 'pidgeotto': 'Pidgeotto', + 'pidgeot': 'Pidgeot', + 'rattata': 'Rattata', + 'raticate': 'Raticate', + 'spearow': 'Spearow', + 'fearow': 'Fearow', + 'ekans': 'Ekans', + 'arbok': 'Arbok', + 'pikachu': 'Pikachu', + 'raichu': 'Raichu', + 'sandshrew': 'Sandshrew', + 'sandslash': 'Sandslash', + 'nidoran_f': 'Nidoran♀', + 'nidorina': 'Nidorina', + 'nidoqueen': 'Nidoqueen', + 'nidoran_m': 'Nidoran♂', + 'nidorino': 'Nidorino', + 'nidoking': 'Nidoking', + 'clefairy': 'Clefairy', + 'clefable': 'Clefable', + 'vulpix': 'Vulpix', + 'ninetales': 'Ninetales', + 'jigglypuff': 'Jigglypuff', + 'wigglytuff': 'Wigglytuff', + 'zubat': 'Zubat', + 'golbat': 'Golbat', + 'oddish': 'Oddish', + 'gloom': 'Gloom', + 'vileplume': 'Vileplume', + 'paras': 'Paras', + 'parasect': 'Parasect', + 'venonat': 'Venonat', + 'venomoth': 'Venomoth', + 'diglett': 'Diglett', + 'dugtrio': 'Dugtrio', + 'meowth': 'Meowth', + 'persian': 'Persian', + 'psyduck': 'Psyduck', + 'golduck': 'Golduck', + 'mankey': 'Mankey', + 'primeape': 'Primeape', + 'growlithe': 'Growlithe', + 'arcanine': 'Arcanine', + 'poliwag': 'Poliwag', + 'poliwhirl': 'Poliwhirl', + 'poliwrath': 'Poliwrath', + 'abra': 'Abra', + 'kadabra': 'Kadabra', + 'alakazam': 'Alakazam', + 'machop': 'Machop', + 'machoke': 'Machoke', + 'machamp': 'Machamp', + 'bellsprout': 'Bellsprout', + 'weepinbell': 'Weepinbell', + 'victreebel': 'Victreebel', + 'tentacool': 'Tentacool', + 'tentacruel': 'Tentacruel', + 'geodude': 'Geodude', + 'graveler': 'Graveler', + 'golem': 'Golem', + 'ponyta': 'Ponyta', + 'rapidash': 'Rapidash', + 'slowpoke': 'Slowpoke', + 'slowbro': 'Slowbro', + 'magnemite': 'Magnemite', + 'magneton': 'Magneton', + 'farfetchd': 'Farfetch\'d', + 'doduo': 'Doduo', + 'dodrio': 'Dodrio', + 'seel': 'Seel', + 'dewgong': 'Dewgong', + 'grimer': 'Grimer', + 'muk': 'Muk', + 'shellder': 'Shellder', + 'cloyster': 'Cloyster', + 'gastly': 'Gastly', + 'haunter': 'Haunter', + 'gengar': 'Gengar', + 'onix': 'Onix', + 'drowzee': 'Drowzee', + 'hypno': 'Hypno', + 'krabby': 'Krabby', + 'kingler': 'Kingler', + 'voltorb': 'Voltorb', + 'electrode': 'Electrode', + 'exeggcute': 'Exeggcute', + 'exeggutor': 'Exeggutor', + 'cubone': 'Cubone', + 'marowak': 'Marowak', + 'hitmonlee': 'Hitmonlee', + 'hitmonchan': 'Hitmonchan', + 'lickitung': 'Lickitung', + 'koffing': 'Koffing', + 'weezing': 'Weezing', + 'rhyhorn': 'Rhyhorn', + 'rhydon': 'Rhydon', + 'chansey': 'Chansey', + 'tangela': 'Tangela', + 'kangaskhan': 'Kangaskhan', + 'horsea': 'Horsea', + 'seadra': 'Seadra', + 'goldeen': 'Goldeen', + 'seaking': 'Seaking', + 'staryu': 'Staryu', + 'starmie': 'Starmie', + 'mr_mime': 'Mr. Mime', + 'scyther': 'Scyther', + 'jynx': 'Jynx', + 'electabuzz': 'Electabuzz', + 'magmar': 'Magmar', + 'pinsir': 'Pinsir', + 'tauros': 'Tauros', + 'magikarp': 'Magikarp', + 'gyarados': 'Gyarados', + 'lapras': 'Lapras', + 'ditto': 'Ditto', + 'eevee': 'Eevee', + 'vaporeon': 'Vaporeon', + 'jolteon': 'Jolteon', + 'flareon': 'Flareon', + 'porygon': 'Porygon', + 'omanyte': 'Omanyte', + 'omastar': 'Omastar', + 'kabuto': 'Kabuto', + 'kabutops': 'Kabutops', + 'aerodactyl': 'Aerodactyl', + 'snorlax': 'Snorlax', + 'articuno': 'Articuno', + 'zapdos': 'Zapdos', + 'moltres': 'Moltres', + 'dratini': 'Dratini', + 'dragonair': 'Dragonair', + 'dragonite': 'Dragonite', + 'mewtwo': 'Mewtwo', + 'mew': 'Mew', + 'chikorita': 'Chikorita', + 'bayleef': 'Bayleef', + 'meganium': 'Meganium', + 'cyndaquil': 'Cyndaquil', + 'quilava': 'Quilava', + 'typhlosion': 'Typhlosion', + 'totodile': 'Totodile', + 'croconaw': 'Croconaw', + 'feraligatr': 'Feraligatr', + 'sentret': 'Sentret', + 'furret': 'Furret', + 'hoothoot': 'Hoothoot', + 'noctowl': 'Noctowl', + 'ledyba': 'Ledyba', + 'ledian': 'Ledian', + 'spinarak': 'Spinarak', + 'ariados': 'Ariados', + 'crobat': 'Crobat', + 'chinchou': 'Chinchou', + 'lanturn': 'Lanturn', + 'pichu': 'Pichu', + 'cleffa': 'Cleffa', + 'igglybuff': 'Igglybuff', + 'togepi': 'Togepi', + 'togetic': 'Togetic', + 'natu': 'Natu', + 'xatu': 'Xatu', + 'mareep': 'Mareep', + 'flaaffy': 'Flaaffy', + 'ampharos': 'Ampharos', + 'bellossom': 'Bellossom', + 'marill': 'Marill', + 'azumarill': 'Azumarill', + 'sudowoodo': 'Sudowoodo', + 'politoed': 'Politoed', + 'hoppip': 'Hoppip', + 'skiploom': 'Skiploom', + 'jumpluff': 'Jumpluff', + 'aipom': 'Aipom', + 'sunkern': 'Sunkern', + 'sunflora': 'Sunflora', + 'yanma': 'Yanma', + 'wooper': 'Wooper', + 'quagsire': 'Quagsire', + 'espeon': 'Espeon', + 'umbreon': 'Umbreon', + 'murkrow': 'Murkrow', + 'slowking': 'Slowking', + 'misdreavus': 'Misdreavus', + 'unown': 'Unown', + 'wobbuffet': 'Wobbuffet', + 'girafarig': 'Girafarig', + 'pineco': 'Pineco', + 'forretress': 'Forretress', + 'dunsparce': 'Dunsparce', + 'gligar': 'Gligar', + 'steelix': 'Steelix', + 'snubbull': 'Snubbull', + 'granbull': 'Granbull', + 'qwilfish': 'Qwilfish', + 'scizor': 'Scizor', + 'shuckle': 'Shuckle', + 'heracross': 'Heracross', + 'sneasel': 'Sneasel', + 'teddiursa': 'Teddiursa', + 'ursaring': 'Ursaring', + 'slugma': 'Slugma', + 'magcargo': 'Magcargo', + 'swinub': 'Swinub', + 'piloswine': 'Piloswine', + 'corsola': 'Corsola', + 'remoraid': 'Remoraid', + 'octillery': 'Octillery', + 'delibird': 'Delibird', + 'mantine': 'Mantine', + 'skarmory': 'Skarmory', + 'houndour': 'Houndour', + 'houndoom': 'Houndoom', + 'kingdra': 'Kingdra', + 'phanpy': 'Phanpy', + 'donphan': 'Donphan', + 'porygon2': 'Porygon2', + 'stantler': 'Stantler', + 'smeargle': 'Smeargle', + 'tyrogue': 'Tyrogue', + 'hitmontop': 'Hitmontop', + 'smoochum': 'Smoochum', + 'elekid': 'Elekid', + 'magby': 'Magby', + 'miltank': 'Miltank', + 'blissey': 'Blissey', + 'raikou': 'Raikou', + 'entei': 'Entei', + 'suicune': 'Suicune', + 'larvitar': 'Larvitar', + 'pupitar': 'Pupitar', + 'tyranitar': 'Tyranitar', + 'lugia': 'Lugia', + 'ho_oh': 'Ho-Oh', + 'celebi': 'Celebi', + 'treecko': 'Treecko', + 'grovyle': 'Grovyle', + 'sceptile': 'Sceptile', + 'torchic': 'Torchic', + 'combusken': 'Combusken', + 'blaziken': 'Blaziken', + 'mudkip': 'Mudkip', + 'marshtomp': 'Marshtomp', + 'swampert': 'Swampert', + 'poochyena': 'Poochyena', + 'mightyena': 'Mightyena', + 'zigzagoon': 'Zigzagoon', + 'linoone': 'Linoone', + 'wurmple': 'Wurmple', + 'silcoon': 'Silcoon', + 'beautifly': 'Beautifly', + 'cascoon': 'Cascoon', + 'dustox': 'Dustox', + 'lotad': 'Lotad', + 'lombre': 'Lombre', + 'ludicolo': 'Ludicolo', + 'seedot': 'Seedot', + 'nuzleaf': 'Nuzleaf', + 'shiftry': 'Shiftry', + 'taillow': 'Taillow', + 'swellow': 'Swellow', + 'wingull': 'Wingull', + 'pelipper': 'Pelipper', + 'ralts': 'Ralts', + 'kirlia': 'Kirlia', + 'gardevoir': 'Gardevoir', + 'surskit': 'Surskit', + 'masquerain': 'Masquerain', + 'shroomish': 'Shroomish', + 'breloom': 'Breloom', + 'slakoth': 'Slakoth', + 'vigoroth': 'Vigoroth', + 'slaking': 'Slaking', + 'nincada': 'Nincada', + 'ninjask': 'Ninjask', + 'shedinja': 'Shedinja', + 'whismur': 'Whismur', + 'loudred': 'Loudred', + 'exploud': 'Exploud', + 'makuhita': 'Makuhita', + 'hariyama': 'Hariyama', + 'azurill': 'Azurill', + 'nosepass': 'Nosepass', + 'skitty': 'Skitty', + 'delcatty': 'Delcatty', + 'sableye': 'Sableye', + 'mawile': 'Mawile', + 'aron': 'Aron', + 'lairon': 'Lairon', + 'aggron': 'Aggron', + 'meditite': 'Meditite', + 'medicham': 'Medicham', + 'electrike': 'Electrike', + 'manectric': 'Manectric', + 'plusle': 'Plusle', + 'minun': 'Minun', + 'volbeat': 'Volbeat', + 'illumise': 'Illumise', + 'roselia': 'Roselia', + 'gulpin': 'Gulpin', + 'swalot': 'Swalot', + 'carvanha': 'Carvanha', + 'sharpedo': 'Sharpedo', + 'wailmer': 'Wailmer', + 'wailord': 'Wailord', + 'numel': 'Numel', + 'camerupt': 'Camerupt', + 'torkoal': 'Torkoal', + 'spoink': 'Spoink', + 'grumpig': 'Grumpig', + 'spinda': 'Spinda', + 'trapinch': 'Trapinch', + 'vibrava': 'Vibrava', + 'flygon': 'Flygon', + 'cacnea': 'Cacnea', + 'cacturne': 'Cacturne', + 'swablu': 'Swablu', + 'altaria': 'Altaria', + 'zangoose': 'Zangoose', + 'seviper': 'Seviper', + 'lunatone': 'Lunatone', + 'solrock': 'Solrock', + 'barboach': 'Barboach', + 'whiscash': 'Whiscash', + 'corphish': 'Corphish', + 'crawdaunt': 'Crawdaunt', + 'baltoy': 'Baltoy', + 'claydol': 'Claydol', + 'lileep': 'Lileep', + 'cradily': 'Cradily', + 'anorith': 'Anorith', + 'armaldo': 'Armaldo', + 'feebas': 'Feebas', + 'milotic': 'Milotic', + 'castform': 'Castform', + 'kecleon': 'Kecleon', + 'shuppet': 'Shuppet', + 'banette': 'Banette', + 'duskull': 'Duskull', + 'dusclops': 'Dusclops', + 'tropius': 'Tropius', + 'chimecho': 'Chimecho', + 'absol': 'Absol', + 'wynaut': 'Wynaut', + 'snorunt': 'Snorunt', + 'glalie': 'Glalie', + 'spheal': 'Spheal', + 'sealeo': 'Sealeo', + 'walrein': 'Walrein', + 'clamperl': 'Clamperl', + 'huntail': 'Huntail', + 'gorebyss': 'Gorebyss', + 'relicanth': 'Relicanth', + 'luvdisc': 'Luvdisc', + 'bagon': 'Bagon', + 'shelgon': 'Shelgon', + 'salamence': 'Salamence', + 'beldum': 'Beldum', + 'metang': 'Metang', + 'metagross': 'Metagross', + 'regirock': 'Regirock', + 'regice': 'Regice', + 'registeel': 'Registeel', + 'latias': 'Latias', + 'latios': 'Latios', + 'kyogre': 'Kyogre', + 'groudon': 'Groudon', + 'rayquaza': 'Rayquaza', + 'jirachi': 'Jirachi', + 'deoxys': 'Deoxys', + 'turtwig': 'Turtwig', + 'grotle': 'Grotle', + 'torterra': 'Torterra', + 'chimchar': 'Chimchar', + 'monferno': 'Monferno', + 'infernape': 'Infernape', + 'piplup': 'Piplup', + 'prinplup': 'Prinplup', + 'empoleon': 'Empoleon', + 'starly': 'Starly', + 'staravia': 'Staravia', + 'staraptor': 'Staraptor', + 'bidoof': 'Bidoof', + 'bibarel': 'Bibarel', + 'kricketot': 'Kricketot', + 'kricketune': 'Kricketune', + 'shinx': 'Shinx', + 'luxio': 'Luxio', + 'luxray': 'Luxray', + 'budew': 'Budew', + 'roserade': 'Roserade', + 'cranidos': 'Cranidos', + 'rampardos': 'Rampardos', + 'shieldon': 'Shieldon', + 'bastiodon': 'Bastiodon', + 'burmy': 'Burmy', + 'wormadam': 'Wormadam', + 'mothim': 'Mothim', + 'combee': 'Combee', + 'vespiquen': 'Vespiquen', + 'pachirisu': 'Pachirisu', + 'buizel': 'Buizel', + 'floatzel': 'Floatzel', + 'cherubi': 'Cherubi', + 'cherrim': 'Cherrim', + 'shellos': 'Shellos', + 'gastrodon': 'Gastrodon', + 'ambipom': 'Ambipom', + 'drifloon': 'Drifloon', + 'drifblim': 'Drifblim', + 'buneary': 'Buneary', + 'lopunny': 'Lopunny', + 'mismagius': 'Mismagius', + 'honchkrow': 'Honchkrow', + 'glameow': 'Glameow', + 'purugly': 'Purugly', + 'chingling': 'Chingling', + 'stunky': 'Stunky', + 'skuntank': 'Skuntank', + 'bronzor': 'Bronzor', + 'bronzong': 'Bronzong', + 'bonsly': 'Bonsly', + 'mime_jr': 'Mime Jr.', + 'happiny': 'Happiny', + 'chatot': 'Chatot', + 'spiritomb': 'Spiritomb', + 'gible': 'Gible', + 'gabite': 'Gabite', + 'garchomp': 'Garchomp', + 'munchlax': 'Munchlax', + 'riolu': 'Riolu', + 'lucario': 'Lucario', + 'hippopotas': 'Hippopotas', + 'hippowdon': 'Hippowdon', + 'skorupi': 'Skorupi', + 'drapion': 'Drapion', + 'croagunk': 'Croagunk', + 'toxicroak': 'Toxicroak', + 'carnivine': 'Carnivine', + 'finneon': 'Finneon', + 'lumineon': 'Lumineon', + 'mantyke': 'Mantyke', + 'snover': 'Snover', + 'abomasnow': 'Abomasnow', + 'weavile': 'Weavile', + 'magnezone': 'Magnezone', + 'lickilicky': 'Lickilicky', + 'rhyperior': 'Rhyperior', + 'tangrowth': 'Tangrowth', + 'electivire': 'Electivire', + 'magmortar': 'Magmortar', + 'togekiss': 'Togekiss', + 'yanmega': 'Yanmega', + 'leafeon': 'Leafeon', + 'glaceon': 'Glaceon', + 'gliscor': 'Gliscor', + 'mamoswine': 'Mamoswine', + 'porygon_z': 'Porygon-Z', + 'gallade': 'Gallade', + 'probopass': 'Probopass', + 'dusknoir': 'Dusknoir', + 'froslass': 'Froslass', + 'rotom': 'Rotom', + 'uxie': 'Uxie', + 'mesprit': 'Mesprit', + 'azelf': 'Azelf', + 'dialga': 'Dialga', + 'palkia': 'Palkia', + 'heatran': 'Heatran', + 'regigigas': 'Regigigas', + 'giratina': 'Giratina', + 'cresselia': 'Cresselia', + 'phione': 'Phione', + 'manaphy': 'Manaphy', + 'darkrai': 'Darkrai', + 'shaymin': 'Shaymin', + 'arceus': 'Arceus', + 'victini': 'Victini', + 'snivy': 'Snivy', + 'servine': 'Servine', + 'serperior': 'Serperior', + 'tepig': 'Tepig', + 'pignite': 'Pignite', + 'emboar': 'Emboar', + 'oshawott': 'Oshawott', + 'dewott': 'Dewott', + 'samurott': 'Samurott', + 'patrat': 'Patrat', + 'watchog': 'Watchog', + 'lillipup': 'Lillipup', + 'herdier': 'Herdier', + 'stoutland': 'Stoutland', + 'purrloin': 'Purrloin', + 'liepard': 'Liepard', + 'pansage': 'Pansage', + 'simisage': 'Simisage', + 'pansear': 'Pansear', + 'simisear': 'Simisear', + 'panpour': 'Panpour', + 'simipour': 'Simipour', + 'munna': 'Munna', + 'musharna': 'Musharna', + 'pidove': 'Pidove', + 'tranquill': 'Tranquill', + 'unfezant': 'Unfezant', + 'blitzle': 'Blitzle', + 'zebstrika': 'Zebstrika', + 'roggenrola': 'Roggenrola', + 'boldore': 'Boldore', + 'gigalith': 'Gigalith', + 'woobat': 'Woobat', + 'swoobat': 'Swoobat', + 'drilbur': 'Drilbur', + 'excadrill': 'Excadrill', + 'audino': 'Audino', + 'timburr': 'Timburr', + 'gurdurr': 'Gurdurr', + 'conkeldurr': 'Conkeldurr', + 'tympole': 'Tympole', + 'palpitoad': 'Palpitoad', + 'seismitoad': 'Seismitoad', + 'throh': 'Throh', + 'sawk': 'Sawk', + 'sewaddle': 'Sewaddle', + 'swadloon': 'Swadloon', + 'leavanny': 'Leavanny', + 'venipede': 'Venipede', + 'whirlipede': 'Whirlipede', + 'scolipede': 'Scolipede', + 'cottonee': 'Cottonee', + 'whimsicott': 'Whimsicott', + 'petilil': 'Petilil', + 'lilligant': 'Lilligant', + 'basculin': 'Basculin', + 'sandile': 'Sandile', + 'krokorok': 'Krokorok', + 'krookodile': 'Krookodile', + 'darumaka': 'Darumaka', + 'darmanitan': 'Darmanitan', + 'maractus': 'Maractus', + 'dwebble': 'Dwebble', + 'crustle': 'Crustle', + 'scraggy': 'Scraggy', + 'scrafty': 'Scrafty', + 'sigilyph': 'Sigilyph', + 'yamask': 'Yamask', + 'cofagrigus': 'Cofagrigus', + 'tirtouga': 'Tirtouga', + 'carracosta': 'Carracosta', + 'archen': 'Archen', + 'archeops': 'Archeops', + 'trubbish': 'Trubbish', + 'garbodor': 'Garbodor', + 'zorua': 'Zorua', + 'zoroark': 'Zoroark', + 'minccino': 'Minccino', + 'cinccino': 'Cinccino', + 'gothita': 'Gothita', + 'gothorita': 'Gothorita', + 'gothitelle': 'Gothitelle', + 'solosis': 'Solosis', + 'duosion': 'Duosion', + 'reuniclus': 'Reuniclus', + 'ducklett': 'Ducklett', + 'swanna': 'Swanna', + 'vanillite': 'Vanillite', + 'vanillish': 'Vanillish', + 'vanilluxe': 'Vanilluxe', + 'deerling': 'Deerling', + 'sawsbuck': 'Sawsbuck', + 'emolga': 'Emolga', + 'karrablast': 'Karrablast', + 'escavalier': 'Escavalier', + 'foongus': 'Foongus', + 'amoonguss': 'Amoonguss', + 'frillish': 'Frillish', + 'jellicent': 'Jellicent', + 'alomomola': 'Alomomola', + 'joltik': 'Joltik', + 'galvantula': 'Galvantula', + 'ferroseed': 'Ferroseed', + 'ferrothorn': 'Ferrothorn', + 'klink': 'Klink', + 'klang': 'Klang', + 'klinklang': 'Klinklang', + 'tynamo': 'Tynamo', + 'eelektrik': 'Eelektrik', + 'eelektross': 'Eelektross', + 'elgyem': 'Elgyem', + 'beheeyem': 'Beheeyem', + 'litwick': 'Litwick', + 'lampent': 'Lampent', + 'chandelure': 'Chandelure', + 'axew': 'Axew', + 'fraxure': 'Fraxure', + 'haxorus': 'Haxorus', + 'cubchoo': 'Cubchoo', + 'beartic': 'Beartic', + 'cryogonal': 'Cryogonal', + 'shelmet': 'Shelmet', + 'accelgor': 'Accelgor', + 'stunfisk': 'Stunfisk', + 'mienfoo': 'Mienfoo', + 'mienshao': 'Mienshao', + 'druddigon': 'Druddigon', + 'golett': 'Golett', + 'golurk': 'Golurk', + 'pawniard': 'Pawniard', + 'bisharp': 'Bisharp', + 'bouffalant': 'Bouffalant', + 'rufflet': 'Rufflet', + 'braviary': 'Braviary', + 'vullaby': 'Vullaby', + 'mandibuzz': 'Mandibuzz', + 'heatmor': 'Heatmor', + 'durant': 'Durant', + 'deino': 'Deino', + 'zweilous': 'Zweilous', + 'hydreigon': 'Hydreigon', + 'larvesta': 'Larvesta', + 'volcarona': 'Volcarona', + 'cobalion': 'Cobalion', + 'terrakion': 'Terrakion', + 'virizion': 'Virizion', + 'tornadus': 'Tornadus', + 'thundurus': 'Thundurus', + 'reshiram': 'Reshiram', + 'zekrom': 'Zekrom', + 'landorus': 'Landorus', + 'kyurem': 'Kyurem', + 'keldeo': 'Keldeo', + 'meloetta': 'Meloetta', + 'genesect': 'Genesect', + 'chespin': 'Chespin', + 'quilladin': 'Quilladin', + 'chesnaught': 'Chesnaught', + 'fennekin': 'Fennekin', + 'braixen': 'Braixen', + 'delphox': 'Delphox', + 'froakie': 'Froakie', + 'frogadier': 'Frogadier', + 'greninja': 'Greninja', + 'bunnelby': 'Bunnelby', + 'diggersby': 'Diggersby', + 'fletchling': 'Fletchling', + 'fletchinder': 'Fletchinder', + 'talonflame': 'Talonflame', + 'scatterbug': 'Scatterbug', + 'spewpa': 'Spewpa', + 'vivillon': 'Vivillon', + 'litleo': 'Litleo', + 'pyroar': 'Pyroar', + 'flabebe': 'Flabébé', + 'floette': 'Floette', + 'florges': 'Florges', + 'skiddo': 'Skiddo', + 'gogoat': 'Gogoat', + 'pancham': 'Pancham', + 'pangoro': 'Pangoro', + 'furfrou': 'Furfrou', + 'espurr': 'Espurr', + 'meowstic': 'Meowstic', + 'honedge': 'Honedge', + 'doublade': 'Doublade', + 'aegislash': 'Aegislash', + 'spritzee': 'Spritzee', + 'aromatisse': 'Aromatisse', + 'swirlix': 'Swirlix', + 'slurpuff': 'Slurpuff', + 'inkay': 'Inkay', + 'malamar': 'Malamar', + 'binacle': 'Binacle', + 'barbaracle': 'Barbaracle', + 'skrelp': 'Skrelp', + 'dragalge': 'Dragalge', + 'clauncher': 'Clauncher', + 'clawitzer': 'Clawitzer', + 'helioptile': 'Helioptile', + 'heliolisk': 'Heliolisk', + 'tyrunt': 'Tyrunt', + 'tyrantrum': 'Tyrantrum', + 'amaura': 'Amaura', + 'aurorus': 'Aurorus', + 'sylveon': 'Sylveon', + 'hawlucha': 'Hawlucha', + 'dedenne': 'Dedenne', + 'carbink': 'Carbink', + 'goomy': 'Goomy', + 'sliggoo': 'Sliggoo', + 'goodra': 'Goodra', + 'klefki': 'Klefki', + 'phantump': 'Phantump', + 'trevenant': 'Trevenant', + 'pumpkaboo': 'Pumpkaboo', + 'gourgeist': 'Gourgeist', + 'bergmite': 'Bergmite', + 'avalugg': 'Avalugg', + 'noibat': 'Noibat', + 'noivern': 'Noivern', + 'xerneas': 'Xerneas', + 'yveltal': 'Yveltal', + 'zygarde': 'Zygarde', + 'diancie': 'Diancie', + 'hoopa': 'Hoopa', + 'volcanion': 'Volcanion', + 'rowlet': 'Rowlet', + 'dartrix': 'Dartrix', + 'decidueye': 'Decidueye', + 'litten': 'Litten', + 'torracat': 'Torracat', + 'incineroar': 'Incineroar', + 'popplio': 'Popplio', + 'brionne': 'Brionne', + 'primarina': 'Primarina', + 'pikipek': 'Pikipek', + 'trumbeak': 'Trumbeak', + 'toucannon': 'Toucannon', + 'yungoos': 'Yungoos', + 'gumshoos': 'Gumshoos', + 'grubbin': 'Grubbin', + 'charjabug': 'Charjabug', + 'vikavolt': 'Vikavolt', + 'crabrawler': 'Crabrawler', + 'crabominable': 'Crabominable', + 'oricorio': 'Oricorio', + 'cutiefly': 'Cutiefly', + 'ribombee': 'Ribombee', + 'rockruff': 'Rockruff', + 'lycanroc': 'Lycanroc', + 'wishiwashi': 'Wishiwashi', + 'mareanie': 'Mareanie', + 'toxapex': 'Toxapex', + 'mudbray': 'Mudbray', + 'mudsdale': 'Mudsdale', + 'dewpider': 'Dewpider', + 'araquanid': 'Araquanid', + 'fomantis': 'Fomantis', + 'lurantis': 'Lurantis', + 'morelull': 'Morelull', + 'shiinotic': 'Shiinotic', + 'salandit': 'Salandit', + 'salazzle': 'Salazzle', + 'stufful': 'Stufful', + 'bewear': 'Bewear', + 'bounsweet': 'Bounsweet', + 'steenee': 'Steenee', + 'tsareena': 'Tsareena', + 'comfey': 'Comfey', + 'oranguru': 'Oranguru', + 'passimian': 'Passimian', + 'wimpod': 'Wimpod', + 'golisopod': 'Golisopod', + 'sandygast': 'Sandygast', + 'palossand': 'Palossand', + 'pyukumuku': 'Pyukumuku', + 'type_null': 'Type: Null', + 'silvally': 'Silvally', + 'minior': 'Minior', + 'komala': 'Komala', + 'turtonator': 'Turtonator', + 'togedemaru': 'Togedemaru', + 'mimikyu': 'Mimikyu', + 'bruxish': 'Bruxish', + 'drampa': 'Drampa', + 'dhelmise': 'Dhelmise', + 'jangmo_o': 'Jangmo-o', + 'hakamo_o': 'Hakamo-o', + 'kommo_o': 'Kommo-o', + 'tapu_koko': 'Tapu Koko', + 'tapu_lele': 'Tapu Lele', + 'tapu_bulu': 'Tapu Bulu', + 'tapu_fini': 'Tapu Fini', + 'cosmog': 'Cosmog', + 'cosmoem': 'Cosmoem', + 'solgaleo': 'Solgaleo', + 'lunala': 'Lunala', + 'nihilego': 'Nihilego', + 'buzzwole': 'Buzzwole', + 'pheromosa': 'Pheromosa', + 'xurkitree': 'Xurkitree', + 'celesteela': 'Celesteela', + 'kartana': 'Kartana', + 'guzzlord': 'Guzzlord', + 'necrozma': 'Necrozma', + 'magearna': 'Magearna', + 'marshadow': 'Marshadow', + 'poipole': 'Poipole', + 'naganadel': 'Naganadel', + 'stakataka': 'Stakataka', + 'blacephalon': 'Blacephalon', + 'zeraora': 'Zeraora', + 'meltan': 'Meltan', + 'melmetal': 'Melmetal', + 'grookey': 'Grookey', + 'thwackey': 'Thwackey', + 'rillaboom': 'Rillaboom', + 'scorbunny': 'Scorbunny', + 'raboot': 'Raboot', + 'cinderace': 'Cinderace', + 'sobble': 'Sobble', + 'drizzile': 'Drizzile', + 'inteleon': 'Inteleon', + 'skwovet': 'Skwovet', + 'greedent': 'Greedent', + 'rookidee': 'Rookidee', + 'corvisquire': 'Corvisquire', + 'corviknight': 'Corviknight', + 'blipbug': 'Blipbug', + 'dottler': 'Dottler', + 'orbeetle': 'Orbeetle', + 'nickit': 'Nickit', + 'thievul': 'Thievul', + 'gossifleur': 'Gossifleur', + 'eldegoss': 'Eldegoss', + 'wooloo': 'Wooloo', + 'dubwool': 'Dubwool', + 'chewtle': 'Chewtle', + 'drednaw': 'Drednaw', + 'yamper': 'Yamper', + 'boltund': 'Boltund', + 'rolycoly': 'Rolycoly', + 'carkol': 'Carkol', + 'coalossal': 'Coalossal', + 'applin': 'Applin', + 'flapple': 'Flapple', + 'appletun': 'Appletun', + 'silicobra': 'Silicobra', + 'sandaconda': 'Sandaconda', + 'cramorant': 'Cramorant', + 'arrokuda': 'Arrokuda', + 'barraskewda': 'Barraskewda', + 'toxel': 'Toxel', + 'toxtricity': 'Toxtricity', + 'sizzlipede': 'Sizzlipede', + 'centiskorch': 'Centiskorch', + 'clobbopus': 'Clobbopus', + 'grapploct': 'Grapploct', + 'sinistea': 'Sinistea', + 'polteageist': 'Polteageist', + 'hatenna': 'Hatenna', + 'hattrem': 'Hattrem', + 'hatterene': 'Hatterene', + 'impidimp': 'Impidimp', + 'morgrem': 'Morgrem', + 'grimmsnarl': 'Grimmsnarl', + 'obstagoon': 'Obstagoon', + 'perrserker': 'Perrserker', + 'cursola': 'Cursola', + 'sirfetchd': 'Sirfetch\'d', + 'mr_rime': 'Mr. Rime', + 'runerigus': 'Runerigus', + 'milcery': 'Milcery', + 'alcremie': 'Alcremie', + 'falinks': 'Falinks', + 'pincurchin': 'Pincurchin', + 'snom': 'Snom', + 'frosmoth': 'Frosmoth', + 'stonjourner': 'Stonjourner', + 'eiscue': 'Eiscue', + 'indeedee': 'Indeedee', + 'morpeko': 'Morpeko', + 'cufant': 'Cufant', + 'copperajah': 'Copperajah', + 'dracozolt': 'Dracozolt', + 'arctozolt': 'Arctozolt', + 'dracovish': 'Dracovish', + 'arctovish': 'Arctovish', + 'duraludon': 'Duraludon', + 'dreepy': 'Dreepy', + 'drakloak': 'Drakloak', + 'dragapult': 'Dragapult', + 'zacian': 'Zacian', + 'zamazenta': 'Zamazenta', + 'eternatus': 'Eternatus', + 'kubfu': 'Kubfu', + 'urshifu': 'Urshifu', + 'zarude': 'Zarude', + 'regieleki': 'Regieleki', + 'regidrago': 'Regidrago', + 'glastrier': 'Glastrier', + 'spectrier': 'Spectrier', + 'calyrex': 'Calyrex', + 'wyrdeer': 'Wyrdeer', + 'kleavor': 'Kleavor', + 'ursaluna': 'Ursaluna', + 'basculegion': 'Basculegion', + 'sneasler': 'Sneasler', + 'overqwil': 'Overqwil', + 'enamorus': 'Enamorus', + 'sprigatito': 'Sprigatito', + 'floragato': 'Floragato', + 'meowscarada': 'Meowscarada', + 'fuecoco': 'Fuecoco', + 'crocalor': 'Crocalor', + 'skeledirge': 'Skeledirge', + 'quaxly': 'Quaxly', + 'quaxwell': 'Quaxwell', + 'quaquaval': 'Quaquaval', + 'lechonk': 'Lechonk', + 'oinkologne': 'Oinkologne', + 'tarountula': 'Tarountula', + 'spidops': 'Spidops', + 'nymble': 'Nymble', + 'lokix': 'Lokix', + 'pawmi': 'Pawmi', + 'pawmo': 'Pawmo', + 'pawmot': 'Pawmot', + 'tandemaus': 'Tandemaus', + 'maushold': 'Maushold', + 'fidough': 'Fidough', + 'dachsbun': 'Dachsbun', + 'smoliv': 'Smoliv', + 'dolliv': 'Dolliv', + 'arboliva': 'Arboliva', + 'squawkabilly': 'Squawkabilly', + 'nacli': 'Nacli', + 'naclstack': 'Naclstack', + 'garganacl': 'Garganacl', + 'charcadet': 'Charcadet', + 'armarouge': 'Armarouge', + 'ceruledge': 'Ceruledge', + 'tadbulb': 'Tadbulb', + 'bellibolt': 'Bellibolt', + 'wattrel': 'Wattrel', + 'kilowattrel': 'Kilowattrel', + 'maschiff': 'Maschiff', + 'mabosstiff': 'Mabosstiff', + 'shroodle': 'Shroodle', + 'grafaiai': 'Grafaiai', + 'bramblin': 'Bramblin', + 'brambleghast': 'Brambleghast', + 'toedscool': 'Toedscool', + 'toedscruel': 'Toedscruel', + 'klawf': 'Klawf', + 'capsakid': 'Capsakid', + 'scovillain': 'Scovillain', + 'rellor': 'Rellor', + 'rabsca': 'Rabsca', + 'flittle': 'Flittle', + 'espathra': 'Espathra', + 'tinkatink': 'Tinkatink', + 'tinkatuff': 'Tinkatuff', + 'tinkaton': 'Tinkaton', + 'wiglett': 'Wiglett', + 'wugtrio': 'Wugtrio', + 'bombirdier': 'Bombirdier', + 'finizen': 'Finizen', + 'palafin': 'Palafin', + 'varoom': 'Varoom', + 'revavroom': 'Revavroom', + 'cyclizar': 'Cyclizar', + 'orthworm': 'Orthworm', + 'glimmet': 'Glimmet', + 'glimmora': 'Glimmora', + 'greavard': 'Greavard', + 'houndstone': 'Houndstone', + 'flamigo': 'Flamigo', + 'cetoddle': 'Cetoddle', + 'cetitan': 'Cetitan', + 'veluza': 'Veluza', + 'dondozo': 'Dondozo', + 'tatsugiri': 'Tatsugiri', + 'annihilape': 'Annihilape', + 'clodsire': 'Clodsire', + 'farigiraf': 'Farigiraf', + 'dudunsparce': 'Dudunsparce', + 'kingambit': 'Kingambit', + 'great_tusk': 'Great Tusk', + 'scream_tail': 'Scream Tail', + 'brute_bonnet': 'Brute Bonnet', + 'flutter_mane': 'Flutter Mane', + 'slither_wing': 'Slither Wing', + 'sandy_shocks': 'Sandy Shocks', + 'iron_treads': 'Iron Treads', + 'iron_bundle': 'Iron Bundle', + 'iron_hands': 'Iron Hands', + 'iron_jugulis': 'Iron Jugulis', + 'iron_moth': 'Iron Moth', + 'iron_thorns': 'Iron Thorns', + 'frigibax': 'Frigibax', + 'arctibax': 'Arctibax', + 'baxcalibur': 'Baxcalibur', + 'gimmighoul': 'Gimmighoul', + 'gholdengo': 'Gholdengo', + 'wo_chien': 'Wo-Chien', + 'chien_pao': 'Chien-Pao', + 'ting_lu': 'Ting-Lu', + 'chi_yu': 'Chi-Yu', + 'roaring_moon': 'Roaring Moon', + 'iron_valiant': 'Iron Valiant', + 'koraidon': 'Koraidon', + 'miraidon': 'Miraidon', + 'walking_wake': 'Walking Wake', + 'iron_leaves': 'Iron Leaves', + 'dipplin': 'Dipplin', + 'poltchageist': 'Poltchageist', + 'sinistcha': 'Sinistcha', + 'okidogi': 'Okidogi', + 'munkidori': 'Munkidori', + 'fezandipiti': 'Fezandipiti', + 'ogerpon': 'Ogerpon', + 'archaludon': 'Archaludon', + 'hydrapple': 'Hydrapple', + 'gouging_fire': 'Gouging Fire', + 'raging_bolt': 'Raging Bolt', + 'iron_boulder': 'Iron Boulder', + 'iron_crown': 'Iron Crown', + 'terapagos': 'Terapagos', + 'pecharunt': 'Pecharunt', + 'alola_rattata': 'Rattata', + 'alola_raticate': 'Raticate', + 'alola_raichu': 'Raichu', + 'alola_sandshrew': 'Sandshrew', + 'alola_sandslash': 'Sandslash', + 'alola_vulpix': 'Vulpix', + 'alola_ninetales': 'Ninetales', + 'alola_diglett': 'Diglett', + 'alola_dugtrio': 'Dugtrio', + 'alola_meowth': 'Meowth', + 'alola_persian': 'Persian', + 'alola_geodude': 'Geodude', + 'alola_graveler': 'Graveler', + 'alola_golem': 'Golem', + 'alola_grimer': 'Grimer', + 'alola_muk': 'Muk', + 'alola_exeggutor': 'Exeggutor', + 'alola_marowak': 'Marowak', + 'eternal_floette': 'Floette', + 'galar_meowth': 'Meowth', + 'galar_ponyta': 'Ponyta', + 'galar_rapidash': 'Rapidash', + 'galar_slowpoke': 'Slowpoke', + 'galar_slowbro': 'Slowbro', + 'galar_farfetchd': 'Farfetch\'d', + 'galar_weezing': 'Weezing', + 'galar_mr_mime': 'Mr. Mime', + 'galar_articuno': 'Articuno', + 'galar_zapdos': 'Zapdos', + 'galar_moltres': 'Moltres', + 'galar_slowking': 'Slowking', + 'galar_corsola': 'Corsola', + 'galar_zigzagoon': 'Zigzagoon', + 'galar_linoone': 'Linoone', + 'galar_darumaka': 'Darumaka', + 'galar_darmanitan': 'Darmanitan', + 'galar_yamask': 'Yamask', + 'galar_stunfisk': 'Stunfisk', + 'hisui_growlithe': 'Growlithe', + 'hisui_arcanine': 'Arcanine', + 'hisui_voltorb': 'Voltorb', + 'hisui_electrode': 'Electrode', + 'hisui_typhlosion': 'Typhlosion', + 'hisui_qwilfish': 'Qwilfish', + 'hisui_sneasel': 'Sneasel', + 'hisui_samurott': 'Samurott', + 'hisui_lilligant': 'Lilligant', + 'hisui_zorua': 'Zorua', + 'hisui_zoroark': 'Zoroark', + 'hisui_braviary': 'Braviary', + 'hisui_sliggoo': 'Sliggoo', + 'hisui_goodra': 'Goodra', + 'hisui_avalugg': 'Avalugg', + 'hisui_decidueye': 'Decidueye', + 'paldea_tauros': 'Tauros', + 'paldea_wooper': 'Wooper', + 'bloodmoon_ursaluna': 'Ursaluna', +} as const; diff --git a/src/locales/en/splash-messages.ts b/src/locales/en/splash-messages.ts index 6815d7f1824..cd62b989c64 100644 --- a/src/locales/en/splash-messages.ts +++ b/src/locales/en/splash-messages.ts @@ -1,37 +1,37 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const splashMessages: SimpleTranslationEntries = { - "battlesWon": "Battles Won!", - "joinTheDiscord": "Join the Discord!", - "infiniteLevels": "Infinite Levels!", - "everythingStacks": "Everything Stacks!", - "optionalSaveScumming": "Optional Save Scumming!", - "biomes": "35 Biomes!", - "openSource": "Open Source!", - "playWithSpeed": "Play with 5x Speed!", - "liveBugTesting": "Live Bug Testing!", - "heavyInfluence": "Heavy RoR2 Influence!", - "pokemonRiskAndPokemonRain": "Pokémon Risk and Pokémon Rain!", - "nowWithMoreSalt": "Now with 33% More Salt!", - "infiniteFusionAtHome": "Infinite Fusion at Home!", - "brokenEggMoves": "Broken Egg Moves!", - "magnificent": "Magnificent!", - "mubstitute": "Mubstitute!", - "thatsCrazy": "That\'s Crazy!", - "oranceJuice": "Orance Juice!", - "questionableBalancing": "Questionable Balancing!", - "coolShaders": "Cool Shaders!", - "aiFree": "AI-Free!", - "suddenDifficultySpikes": "Sudden Difficulty Spikes!", - "basedOnAnUnfinishedFlashGame": "Based on an Unfinished Flash Game!", - "moreAddictiveThanIntended": "More Addictive than Intended!", - "mostlyConsistentSeeds": "Mostly Consistent Seeds!", - "achievementPointsDontDoAnything": "Achievement Points Don\'t Do Anything!", - "youDoNotStartAtLevel": "You Do Not Start at Level 2000!", - "dontTalkAboutTheManaphyEggIncident": "Don\'t Talk About the Manaphy Egg Incident!", - "alsoTryPokengine": "Also Try Pokéngine!", - "alsoTryEmeraldRogue": "Also Try Emerald Rogue!", - "alsoTryRadicalRed": "Also Try Radical Red!", - "eeveeExpo": "Eevee Expo!", - "ynoproject": "YNOproject!", -} as const; \ No newline at end of file + 'battlesWon': 'Battles Won!', + 'joinTheDiscord': 'Join the Discord!', + 'infiniteLevels': 'Infinite Levels!', + 'everythingStacks': 'Everything Stacks!', + 'optionalSaveScumming': 'Optional Save Scumming!', + 'biomes': '35 Biomes!', + 'openSource': 'Open Source!', + 'playWithSpeed': 'Play with 5x Speed!', + 'liveBugTesting': 'Live Bug Testing!', + 'heavyInfluence': 'Heavy RoR2 Influence!', + 'pokemonRiskAndPokemonRain': 'Pokémon Risk and Pokémon Rain!', + 'nowWithMoreSalt': 'Now with 33% More Salt!', + 'infiniteFusionAtHome': 'Infinite Fusion at Home!', + 'brokenEggMoves': 'Broken Egg Moves!', + 'magnificent': 'Magnificent!', + 'mubstitute': 'Mubstitute!', + 'thatsCrazy': 'That\'s Crazy!', + 'oranceJuice': 'Orance Juice!', + 'questionableBalancing': 'Questionable Balancing!', + 'coolShaders': 'Cool Shaders!', + 'aiFree': 'AI-Free!', + 'suddenDifficultySpikes': 'Sudden Difficulty Spikes!', + 'basedOnAnUnfinishedFlashGame': 'Based on an Unfinished Flash Game!', + 'moreAddictiveThanIntended': 'More Addictive than Intended!', + 'mostlyConsistentSeeds': 'Mostly Consistent Seeds!', + 'achievementPointsDontDoAnything': 'Achievement Points Don\'t Do Anything!', + 'youDoNotStartAtLevel': 'You Do Not Start at Level 2000!', + 'dontTalkAboutTheManaphyEggIncident': 'Don\'t Talk About the Manaphy Egg Incident!', + 'alsoTryPokengine': 'Also Try Pokéngine!', + 'alsoTryEmeraldRogue': 'Also Try Emerald Rogue!', + 'alsoTryRadicalRed': 'Also Try Radical Red!', + 'eeveeExpo': 'Eevee Expo!', + 'ynoproject': 'YNOproject!', +} as const; diff --git a/src/locales/en/starter-select-ui-handler.ts b/src/locales/en/starter-select-ui-handler.ts index 19f8649dcc3..b33f05b30d2 100644 --- a/src/locales/en/starter-select-ui-handler.ts +++ b/src/locales/en/starter-select-ui-handler.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,39 +6,39 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const starterSelectUiHandler: SimpleTranslationEntries = { - "confirmStartTeam":'Begin with these Pokémon?', - "gen1": "I", - "gen2": "II", - "gen3": "III", - "gen4": "IV", - "gen5": "V", - "gen6": "VI", - "gen7": "VII", - "gen8": "VIII", - "gen9": "IX", - "growthRate": "Growth Rate:", - "ability": "Ability:", - "passive": "Passive:", - "nature": "Nature:", - "eggMoves": 'Egg Moves', - "start": "Start", - "addToParty": "Add to Party", - "toggleIVs": 'Toggle IVs', - "manageMoves": 'Manage Moves', - "useCandies": 'Use Candies', - "selectMoveSwapOut": "Select a move to swap out.", - "selectMoveSwapWith": "Select a move to swap with", - "unlockPassive": "Unlock Passive", - "reduceCost": "Reduce Cost", - "cycleShiny": "R: Cycle Shiny", - "cycleForm": 'F: Cycle Form', - "cycleGender": 'G: Cycle Gender', - "cycleAbility": 'E: Cycle Ability', - "cycleNature": 'N: Cycle Nature', - "cycleVariant": 'V: Cycle Variant', - "enablePassive": "Enable Passive", - "disablePassive": "Disable Passive", - "locked": "Locked", - "disabled": "Disabled", - "uncaught": "Uncaught" -} + 'confirmStartTeam':'Begin with these Pokémon?', + 'gen1': 'I', + 'gen2': 'II', + 'gen3': 'III', + 'gen4': 'IV', + 'gen5': 'V', + 'gen6': 'VI', + 'gen7': 'VII', + 'gen8': 'VIII', + 'gen9': 'IX', + 'growthRate': 'Growth Rate:', + 'ability': 'Ability:', + 'passive': 'Passive:', + 'nature': 'Nature:', + 'eggMoves': 'Egg Moves', + 'start': 'Start', + 'addToParty': 'Add to Party', + 'toggleIVs': 'Toggle IVs', + 'manageMoves': 'Manage Moves', + 'useCandies': 'Use Candies', + 'selectMoveSwapOut': 'Select a move to swap out.', + 'selectMoveSwapWith': 'Select a move to swap with', + 'unlockPassive': 'Unlock Passive', + 'reduceCost': 'Reduce Cost', + 'cycleShiny': 'R: Cycle Shiny', + 'cycleForm': 'F: Cycle Form', + 'cycleGender': 'G: Cycle Gender', + 'cycleAbility': 'E: Cycle Ability', + 'cycleNature': 'N: Cycle Nature', + 'cycleVariant': 'V: Cycle Variant', + 'enablePassive': 'Enable Passive', + 'disablePassive': 'Disable Passive', + 'locked': 'Locked', + 'disabled': 'Disabled', + 'uncaught': 'Uncaught' +}; diff --git a/src/locales/en/trainers.ts b/src/locales/en/trainers.ts index 1eff742e23a..c6f20f2c7a5 100644 --- a/src/locales/en/trainers.ts +++ b/src/locales/en/trainers.ts @@ -1,244 +1,244 @@ -import {SimpleTranslationEntries} from "#app/plugins/i18n"; +import {SimpleTranslationEntries} from '#app/plugins/i18n'; // Titles of special trainers like gym leaders, elite four, and the champion export const titles: SimpleTranslationEntries = { - "elite_four": "Elite Four", - "gym_leader": "Gym Leader", - "gym_leader_female": "Gym Leader", - "champion": "Champion", - "rival": "Rival", - "professor": "Professor", - "frontier_brain": "Frontier Brain", - // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. + 'elite_four': 'Elite Four', + 'gym_leader': 'Gym Leader', + 'gym_leader_female': 'Gym Leader', + 'champion': 'Champion', + 'rival': 'Rival', + 'professor': 'Professor', + 'frontier_brain': 'Frontier Brain', + // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. } as const; // Titles of trainers like "Youngster" or "Lass" export const trainerClasses: SimpleTranslationEntries = { - "ace_trainer": "Ace Trainer", - "ace_trainer_female": "Ace Trainer", - "ace_duo": "Ace Duo", - "artist": "Artist", - "artist_female": "Artist", - "backers": "Backers", - "backpacker": "Backpacker", - "backpacker_female": "Backpacker", - "backpackers": "Backpackers", - "baker": "Baker", - "battle_girl": "Battle Girl", - "beauty": "Beauty", - "beginners": "Beginners", - "biker": "Biker", - "black_belt": "Black Belt", - "breeder": "Breeder", - "breeder_female": "Breeder", - "breeders": "Breeders", - "clerk": "Clerk", - "clerk_female": "Clerk", - "colleagues": "Colleagues", - "crush_kin": "Crush Kin", - "cyclist": "Cyclist", - "cyclist_female": "Cyclist", - "cyclists": "Cyclists", - "dancer": "Dancer", - "dancer_female": "Dancer", - "depot_agent": "Depot Agent", - "doctor": "Doctor", - "doctor_female": "Doctor", - "fisherman": "Fisherman", - "fisherman_female": "Fisherman", - "gentleman": "Gentleman", - "guitarist": "Guitarist", - "guitarist_female": "Guitarist", - "harlequin": "Harlequin", - "hiker": "Hiker", - "hooligans": "Hooligans", - "hoopster": "Hoopster", - "infielder": "Infielder", - "janitor": "Janitor", - "lady": "Lady", - "lass": "Lass", - "linebacker": "Linebacker", - "maid": "Maid", - "madame": "Madame", - "medical_team": "Medical Team", - "musician": "Musician", - "hex_maniac": "Hex Maniac", - "nurse": "Nurse", - "nursery_aide": "Nursery Aide", - "officer": "Officer", - "parasol_lady": "Parasol Lady", - "pilot": "Pilot", - "pokéfan": "Poké Fan", - "pokéfan_female": "Poké Fan", - "pokéfan_family": "Poké Fan Family", - "preschooler": "Preschooler", - "preschooler_female": "Preschooler", - "preschoolers": "Preschoolers", - "psychic": "Psychic", - "psychic_female": "Psychic", - "psychics": "Psychics", - "pokémon_ranger": "Pokémon Ranger", - "pokémon_ranger_female": "Pokémon Ranger", - "pokémon_rangers": "Pokémon Ranger", - "ranger": "Ranger", - "restaurant_staff": "Restaurant Staff", - "rich": "Rich", - "rich_female": "Rich", - "rich_boy": "Rich Boy", - "rich_couple": "Rich Couple", - "rich_kid": "Rich Kid", - "rich_kid_female": "Rich Kid", - "rich_kids": "Rich Kids", - "roughneck": "Roughneck", - "scientist": "Scientist", - "scientist_female": "Scientist", - "scientists": "Scientists", - "smasher": "Smasher", - "snow_worker": "Snow Worker", - "snow_worker_female": "Snow Worker", - "striker": "Striker", - "school_kid": "School Kid", - "school_kid_female": "School Kid", - "school_kids": "School Kids", - "swimmer": "Swimmer", - "swimmer_female": "Swimmer", - "swimmers": "Swimmers", - "twins": "Twins", - "veteran": "Veteran", - "veteran_female": "Veteran", - "veteran_duo": "Veteran Duo", - "waiter": "Waiter", - "waitress": "Waitress", - "worker": "Worker", - "worker_female": "Worker", - "workers": "Workers", - "youngster": "Youngster" + 'ace_trainer': 'Ace Trainer', + 'ace_trainer_female': 'Ace Trainer', + 'ace_duo': 'Ace Duo', + 'artist': 'Artist', + 'artist_female': 'Artist', + 'backers': 'Backers', + 'backpacker': 'Backpacker', + 'backpacker_female': 'Backpacker', + 'backpackers': 'Backpackers', + 'baker': 'Baker', + 'battle_girl': 'Battle Girl', + 'beauty': 'Beauty', + 'beginners': 'Beginners', + 'biker': 'Biker', + 'black_belt': 'Black Belt', + 'breeder': 'Breeder', + 'breeder_female': 'Breeder', + 'breeders': 'Breeders', + 'clerk': 'Clerk', + 'clerk_female': 'Clerk', + 'colleagues': 'Colleagues', + 'crush_kin': 'Crush Kin', + 'cyclist': 'Cyclist', + 'cyclist_female': 'Cyclist', + 'cyclists': 'Cyclists', + 'dancer': 'Dancer', + 'dancer_female': 'Dancer', + 'depot_agent': 'Depot Agent', + 'doctor': 'Doctor', + 'doctor_female': 'Doctor', + 'fisherman': 'Fisherman', + 'fisherman_female': 'Fisherman', + 'gentleman': 'Gentleman', + 'guitarist': 'Guitarist', + 'guitarist_female': 'Guitarist', + 'harlequin': 'Harlequin', + 'hiker': 'Hiker', + 'hooligans': 'Hooligans', + 'hoopster': 'Hoopster', + 'infielder': 'Infielder', + 'janitor': 'Janitor', + 'lady': 'Lady', + 'lass': 'Lass', + 'linebacker': 'Linebacker', + 'maid': 'Maid', + 'madame': 'Madame', + 'medical_team': 'Medical Team', + 'musician': 'Musician', + 'hex_maniac': 'Hex Maniac', + 'nurse': 'Nurse', + 'nursery_aide': 'Nursery Aide', + 'officer': 'Officer', + 'parasol_lady': 'Parasol Lady', + 'pilot': 'Pilot', + 'pokéfan': 'Poké Fan', + 'pokéfan_female': 'Poké Fan', + 'pokéfan_family': 'Poké Fan Family', + 'preschooler': 'Preschooler', + 'preschooler_female': 'Preschooler', + 'preschoolers': 'Preschoolers', + 'psychic': 'Psychic', + 'psychic_female': 'Psychic', + 'psychics': 'Psychics', + 'pokémon_ranger': 'Pokémon Ranger', + 'pokémon_ranger_female': 'Pokémon Ranger', + 'pokémon_rangers': 'Pokémon Ranger', + 'ranger': 'Ranger', + 'restaurant_staff': 'Restaurant Staff', + 'rich': 'Rich', + 'rich_female': 'Rich', + 'rich_boy': 'Rich Boy', + 'rich_couple': 'Rich Couple', + 'rich_kid': 'Rich Kid', + 'rich_kid_female': 'Rich Kid', + 'rich_kids': 'Rich Kids', + 'roughneck': 'Roughneck', + 'scientist': 'Scientist', + 'scientist_female': 'Scientist', + 'scientists': 'Scientists', + 'smasher': 'Smasher', + 'snow_worker': 'Snow Worker', + 'snow_worker_female': 'Snow Worker', + 'striker': 'Striker', + 'school_kid': 'School Kid', + 'school_kid_female': 'School Kid', + 'school_kids': 'School Kids', + 'swimmer': 'Swimmer', + 'swimmer_female': 'Swimmer', + 'swimmers': 'Swimmers', + 'twins': 'Twins', + 'veteran': 'Veteran', + 'veteran_female': 'Veteran', + 'veteran_duo': 'Veteran Duo', + 'waiter': 'Waiter', + 'waitress': 'Waitress', + 'worker': 'Worker', + 'worker_female': 'Worker', + 'workers': 'Workers', + 'youngster': 'Youngster' } as const; // Names of special trainers like gym leaders, elite four, and the champion export const trainerNames: SimpleTranslationEntries = { - "brock": "Brock", - "misty": "Misty", - "lt_surge": "Lt Surge", - "erika": "Erika", - "janine": "Janine", - "sabrina": "Sabrina", - "blaine": "Blaine", - "giovanni": "Giovanni", - "falkner": "Falkner", - "bugsy": "Bugsy", - "whitney": "Whitney", - "morty": "Morty", - "chuck": "Chuck", - "jasmine": "Jasmine", - "pryce": "Pryce", - "clair": "Clair", - "roxanne": "Roxanne", - "brawly": "Brawly", - "wattson": "Wattson", - "flannery": "Flannery", - "norman": "Norman", - "winona": "Winona", - "tate": "Tate", - "liza": "Liza", - "juan": "Juan", - "roark": "Roark", - "gardenia": "Gardenia", - "maylene": "Maylene", - "crasher_wake": "Crasher Wake", - "fantina": "Fantina", - "byron": "Byron", - "candice": "Candice", - "volkner": "Volkner", - "cilan": "Cilan", - "chili": "Chili", - "cress": "Cress", - "cheren": "Cheren", - "lenora": "Lenora", - "roxie": "Roxie", - "burgh": "Burgh", - "elesa": "Elesa", - "clay": "Clay", - "skyla": "Skyla", - "brycen": "Brycen", - "drayden": "Drayden", - "marlon": "Marlon", - "viola": "Viola", - "grant": "Grant", - "korrina": "Korrina", - "ramos": "Ramos", - "clemont": "Clemont", - "valerie": "Valerie", - "olympia": "Olympia", - "wulfric": "Wulfric", - "milo": "Milo", - "nessa": "Nessa", - "kabu": "Kabu", - "bea": "Bea", - "allister": "Allister", - "opal": "Opal", - "bede": "Bede", - "gordie": "Gordie", - "melony": "Melony", - "piers": "Piers", - "marnie": "Marnie", - "raihan": "Raihan", - "katy": "Katy", - "brassius": "Brassius", - "iono": "Iono", - "kofu": "Kofu", - "larry": "Larry", - "ryme": "Ryme", - "tulip": "Tulip", - "grusha": "Grusha", - "lorelei": "Lorelei", - "bruno": "Bruno", - "agatha": "Agatha", - "lance": "Lance", - "will": "Will", - "koga": "Koga", - "karen": "Karen", - "sidney": "Sidney", - "phoebe": "Phoebe", - "glacia": "Glacia", - "drake": "Drake", - "aaron": "Aaron", - "bertha": "Bertha", - "flint": "Flint", - "lucian": "Lucian", - "shauntal": "Shauntal", - "marshal": "Marshal", - "grimsley": "Grimsley", - "caitlin": "Caitlin", - "malva": "Malva", - "siebold": "Siebold", - "wikstrom": "Wikstrom", - "drasna": "Drasna", - "hala": "Hala", - "molayne": "Molayne", - "olivia": "Olivia", - "acerola": "Acerola", - "kahili": "Kahili", - "rika": "Rika", - "poppy": "Poppy", - "hassel": "Hassel", - "crispin": "Crispin", - "amarys": "Amarys", - "lacey": "Lacey", - "drayton": "Drayton", - "blue": "Blue", - "red": "Red", - "steven": "Steven", - "wallace": "Wallace", - "cynthia": "Cynthia", - "alder": "Alder", - "iris": "Iris", - "diantha": "Diantha", - "hau": "Hau", - "geeta": "Geeta", - "nemona": "Nemona", - "kieran": "Kieran", - "leon": "Leon", - "rival": "Finn", - "rival_female": "Ivy", + 'brock': 'Brock', + 'misty': 'Misty', + 'lt_surge': 'Lt Surge', + 'erika': 'Erika', + 'janine': 'Janine', + 'sabrina': 'Sabrina', + 'blaine': 'Blaine', + 'giovanni': 'Giovanni', + 'falkner': 'Falkner', + 'bugsy': 'Bugsy', + 'whitney': 'Whitney', + 'morty': 'Morty', + 'chuck': 'Chuck', + 'jasmine': 'Jasmine', + 'pryce': 'Pryce', + 'clair': 'Clair', + 'roxanne': 'Roxanne', + 'brawly': 'Brawly', + 'wattson': 'Wattson', + 'flannery': 'Flannery', + 'norman': 'Norman', + 'winona': 'Winona', + 'tate': 'Tate', + 'liza': 'Liza', + 'juan': 'Juan', + 'roark': 'Roark', + 'gardenia': 'Gardenia', + 'maylene': 'Maylene', + 'crasher_wake': 'Crasher Wake', + 'fantina': 'Fantina', + 'byron': 'Byron', + 'candice': 'Candice', + 'volkner': 'Volkner', + 'cilan': 'Cilan', + 'chili': 'Chili', + 'cress': 'Cress', + 'cheren': 'Cheren', + 'lenora': 'Lenora', + 'roxie': 'Roxie', + 'burgh': 'Burgh', + 'elesa': 'Elesa', + 'clay': 'Clay', + 'skyla': 'Skyla', + 'brycen': 'Brycen', + 'drayden': 'Drayden', + 'marlon': 'Marlon', + 'viola': 'Viola', + 'grant': 'Grant', + 'korrina': 'Korrina', + 'ramos': 'Ramos', + 'clemont': 'Clemont', + 'valerie': 'Valerie', + 'olympia': 'Olympia', + 'wulfric': 'Wulfric', + 'milo': 'Milo', + 'nessa': 'Nessa', + 'kabu': 'Kabu', + 'bea': 'Bea', + 'allister': 'Allister', + 'opal': 'Opal', + 'bede': 'Bede', + 'gordie': 'Gordie', + 'melony': 'Melony', + 'piers': 'Piers', + 'marnie': 'Marnie', + 'raihan': 'Raihan', + 'katy': 'Katy', + 'brassius': 'Brassius', + 'iono': 'Iono', + 'kofu': 'Kofu', + 'larry': 'Larry', + 'ryme': 'Ryme', + 'tulip': 'Tulip', + 'grusha': 'Grusha', + 'lorelei': 'Lorelei', + 'bruno': 'Bruno', + 'agatha': 'Agatha', + 'lance': 'Lance', + 'will': 'Will', + 'koga': 'Koga', + 'karen': 'Karen', + 'sidney': 'Sidney', + 'phoebe': 'Phoebe', + 'glacia': 'Glacia', + 'drake': 'Drake', + 'aaron': 'Aaron', + 'bertha': 'Bertha', + 'flint': 'Flint', + 'lucian': 'Lucian', + 'shauntal': 'Shauntal', + 'marshal': 'Marshal', + 'grimsley': 'Grimsley', + 'caitlin': 'Caitlin', + 'malva': 'Malva', + 'siebold': 'Siebold', + 'wikstrom': 'Wikstrom', + 'drasna': 'Drasna', + 'hala': 'Hala', + 'molayne': 'Molayne', + 'olivia': 'Olivia', + 'acerola': 'Acerola', + 'kahili': 'Kahili', + 'rika': 'Rika', + 'poppy': 'Poppy', + 'hassel': 'Hassel', + 'crispin': 'Crispin', + 'amarys': 'Amarys', + 'lacey': 'Lacey', + 'drayton': 'Drayton', + 'blue': 'Blue', + 'red': 'Red', + 'steven': 'Steven', + 'wallace': 'Wallace', + 'cynthia': 'Cynthia', + 'alder': 'Alder', + 'iris': 'Iris', + 'diantha': 'Diantha', + 'hau': 'Hau', + 'geeta': 'Geeta', + 'nemona': 'Nemona', + 'kieran': 'Kieran', + 'leon': 'Leon', + 'rival': 'Finn', + 'rival_female': 'Ivy', } as const; diff --git a/src/locales/en/tutorial.ts b/src/locales/en/tutorial.ts index 2773b6710ba..90383b8975c 100644 --- a/src/locales/en/tutorial.ts +++ b/src/locales/en/tutorial.ts @@ -1,30 +1,30 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const tutorial: SimpleTranslationEntries = { - "intro": `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements. + 'intro': `Welcome to PokéRogue! This is a battle-focused Pokémon fangame with roguelite elements. $This game is not monetized and we claim no ownership of Pokémon nor of the copyrighted assets used. $The game is a work in progress, but fully playable.\nFor bug reports, please use the Discord community. $If the game runs slowly, please ensure 'Hardware Acceleration' is turned on in your browser settings.`, - "accessMenu": `To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.`, + 'accessMenu': 'To access the menu, press M or Escape while awaiting input.\nThe menu contains settings and various features.', - "menu": `From this menu you can access the settings. + 'menu': `From this menu you can access the settings. $From the settings you can change game speed, window style, and other options. $There are also various other features here, so be sure to check them all!`, - "starterSelect": `From this screen, you can select your starters.\nThese are your initial party members. + 'starterSelect': `From this screen, you can select your starters.\nThese are your initial party members. $Each starter has a value. Your party can have up to\n6 members as long as the total does not exceed 10. $You can also select gender, ability, and form depending on\nthe variants you've caught or hatched. $The IVs for a species are also the best of every one you've\ncaught or hatched, so try to get lots of the same species!`, - "pokerus": `A daily random 3 selectable starters have a purple border. + 'pokerus': `A daily random 3 selectable starters have a purple border. $If you see a starter you own with one of these,\ntry adding it to your party. Be sure to check its summary!`, - "statChange": `Stat changes persist across battles as long as your Pokémon aren't recalled. + 'statChange': `Stat changes persist across battles as long as your Pokémon aren't recalled. $Your Pokémon are recalled before a trainer battle and before entering a new biome. $You can also view the stat changes for the Pokémon on the field by holding C or Shift.`, - "selectItem": `After every battle, you are given a choice of 3 random items.\nYou may only pick one. + 'selectItem': `After every battle, you are given a choice of 3 random items.\nYou may only pick one. $These range from consumables, to Pokémon held items, to passive permanent items. $Most non-consumable item effects will stack in various ways. $Some items will only show up if they can be used, such as evolution items. @@ -33,10 +33,10 @@ export const tutorial: SimpleTranslationEntries = { $You may purchase consumable items with money, and a larger variety will be available the further you get. $Be sure to buy these before you pick your random item, as it will progress to the next battle once you do.`, - "eggGacha": `From this screen, you can redeem your vouchers for\nPokémon eggs. + 'eggGacha': `From this screen, you can redeem your vouchers for\nPokémon eggs. $Eggs have to be hatched and get closer to hatching after\nevery battle. Rarer eggs take longer to hatch. $Hatched Pokémon also won't be added to your party, they will\nbe added to your starters. $Pokémon hatched from eggs generally have better IVs than\nwild Pokémon. $Some Pokémon can only even be obtained from eggs. $There are 3 different machines to pull from with different\nbonuses, so pick the one that suits you best!`, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/en/voucher.ts b/src/locales/en/voucher.ts index 7af569e88cb..2df0ccd7a9d 100644 --- a/src/locales/en/voucher.ts +++ b/src/locales/en/voucher.ts @@ -1,11 +1,11 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const voucher: SimpleTranslationEntries = { - "vouchers": "Vouchers", - "eggVoucher": "Egg Voucher", - "eggVoucherPlus": "Egg Voucher Plus", - "eggVoucherPremium": "Egg Voucher Premium", - "eggVoucherGold": "Egg Voucher Gold", - "locked": "Locked", - "defeatTrainer": "Defeat {{trainerName}}" -} as const; \ No newline at end of file + 'vouchers': 'Vouchers', + 'eggVoucher': 'Egg Voucher', + 'eggVoucherPlus': 'Egg Voucher Plus', + 'eggVoucherPremium': 'Egg Voucher Premium', + 'eggVoucherGold': 'Egg Voucher Gold', + 'locked': 'Locked', + 'defeatTrainer': 'Defeat {{trainerName}}' +} as const; diff --git a/src/locales/en/weather.ts b/src/locales/en/weather.ts index 999613f1566..40f5db4e981 100644 --- a/src/locales/en/weather.ts +++ b/src/locales/en/weather.ts @@ -1,44 +1,44 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The weather namespace holds text displayed when weather is active during a battle */ export const weather: SimpleTranslationEntries = { - "sunnyStartMessage": "The sunlight got bright!", - "sunnyLapseMessage": "The sunlight is strong.", - "sunnyClearMessage": "The sunlight faded.", + 'sunnyStartMessage': 'The sunlight got bright!', + 'sunnyLapseMessage': 'The sunlight is strong.', + 'sunnyClearMessage': 'The sunlight faded.', - "rainStartMessage": "A downpour started!", - "rainLapseMessage": "The downpour continues.", - "rainClearMessage": "The rain stopped.", + 'rainStartMessage': 'A downpour started!', + 'rainLapseMessage': 'The downpour continues.', + 'rainClearMessage': 'The rain stopped.', - "sandstormStartMessage": "A sandstorm brewed!", - "sandstormLapseMessage": "The sandstorm rages.", - "sandstormClearMessage": "The sandstorm subsided.", - "sandstormDamageMessage": "{{pokemonPrefix}}{{pokemonName}} is buffeted\nby the sandstorm!", + 'sandstormStartMessage': 'A sandstorm brewed!', + 'sandstormLapseMessage': 'The sandstorm rages.', + 'sandstormClearMessage': 'The sandstorm subsided.', + 'sandstormDamageMessage': '{{pokemonPrefix}}{{pokemonName}} is buffeted\nby the sandstorm!', - "hailStartMessage": "It started to hail!", - "hailLapseMessage": "Hail continues to fall.", - "hailClearMessage": "The hail stopped.", - "hailDamageMessage": "{{pokemonPrefix}}{{pokemonName}} is pelted\nby the hail!", + 'hailStartMessage': 'It started to hail!', + 'hailLapseMessage': 'Hail continues to fall.', + 'hailClearMessage': 'The hail stopped.', + 'hailDamageMessage': '{{pokemonPrefix}}{{pokemonName}} is pelted\nby the hail!', - "snowStartMessage": "It started to snow!", - "snowLapseMessage": "The snow is falling down.", - "snowClearMessage": "The snow stopped.", + 'snowStartMessage': 'It started to snow!', + 'snowLapseMessage': 'The snow is falling down.', + 'snowClearMessage': 'The snow stopped.', - "fogStartMessage": "A thick fog emerged!", - "fogLapseMessage": "The fog continues.", - "fogClearMessage": "The fog disappeared.", + 'fogStartMessage': 'A thick fog emerged!', + 'fogLapseMessage': 'The fog continues.', + 'fogClearMessage': 'The fog disappeared.', - "heavyRainStartMessage": "A heavy downpour started!", - "heavyRainLapseMessage": "The heavy downpour continues.", - "heavyRainClearMessage": "The heavy rain stopped.", + 'heavyRainStartMessage': 'A heavy downpour started!', + 'heavyRainLapseMessage': 'The heavy downpour continues.', + 'heavyRainClearMessage': 'The heavy rain stopped.', - "harshSunStartMessage": "The sunlight got hot!", - "harshSunLapseMessage": "The sun is scorching hot.", - "harshSunClearMessage": "The harsh sunlight faded.", + 'harshSunStartMessage': 'The sunlight got hot!', + 'harshSunLapseMessage': 'The sun is scorching hot.', + 'harshSunClearMessage': 'The harsh sunlight faded.', - "strongWindsStartMessage": "A heavy wind began!", - "strongWindsLapseMessage": "The wind blows intensely.", - "strongWindsClearMessage": "The heavy wind stopped." -} \ No newline at end of file + 'strongWindsStartMessage': 'A heavy wind began!', + 'strongWindsLapseMessage': 'The wind blows intensely.', + 'strongWindsClearMessage': 'The heavy wind stopped.' +}; diff --git a/src/locales/es/ability-trigger.ts b/src/locales/es/ability-trigger.ts index cd6def4c628..98f64e4215a 100644 --- a/src/locales/es/ability-trigger.ts +++ b/src/locales/es/ability-trigger.ts @@ -1,6 +1,6 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const abilityTriggers: SimpleTranslationEntries = { - 'blockRecoilDamage' : `{{pokemonName}}'s {{abilityName}}\nprotected it from recoil!`, - 'badDreams': `{{pokemonName}} Está atormentado!` + 'blockRecoilDamage' : '{{pokemonName}}\'s {{abilityName}}\nprotected it from recoil!', + 'badDreams': '{{pokemonName}} Está atormentado!' } as const; diff --git a/src/locales/es/ability.ts b/src/locales/es/ability.ts index cb6e4836ed5..86147d8af53 100644 --- a/src/locales/es/ability.ts +++ b/src/locales/es/ability.ts @@ -1,1244 +1,1244 @@ -import { AbilityTranslationEntries } from "#app/plugins/i18n.js"; +import { AbilityTranslationEntries } from '#app/plugins/i18n.js'; export const ability: AbilityTranslationEntries = { - "stench": { - name: "Hedor", - description: "Puede amedrentar a un Pokémon al atacarlo debido al mal olor que emana." + 'stench': { + name: 'Hedor', + description: 'Puede amedrentar a un Pokémon al atacarlo debido al mal olor que emana.' }, - "drizzle": { - name: "Llovizna", - description: "Hace que llueva al entrar en combate." + 'drizzle': { + name: 'Llovizna', + description: 'Hace que llueva al entrar en combate.' }, - "speedBoost": { - name: "Impulso", - description: "Aumenta su Velocidad en cada turno." + 'speedBoost': { + name: 'Impulso', + description: 'Aumenta su Velocidad en cada turno.' }, - "battleArmor": { - name: "Armadura Batalla", - description: "La robusta coraza que lo protege bloquea los golpes críticos." + 'battleArmor': { + name: 'Armadura Batalla', + description: 'La robusta coraza que lo protege bloquea los golpes críticos.' }, - "sturdy": { - name: "Robustez", - description: "El Pokémon no puede debilitarse de un solo golpe cuando tiene los PS al máximo. También evita los movimientos fulminantes." + 'sturdy': { + name: 'Robustez', + description: 'El Pokémon no puede debilitarse de un solo golpe cuando tiene los PS al máximo. También evita los movimientos fulminantes.' }, - "damp": { - name: "Humedad", - description: "Aumenta la humedad del entorno y evita que se puedan utilizar movimientos explosivos, tales como Autodestrucción." + 'damp': { + name: 'Humedad', + description: 'Aumenta la humedad del entorno y evita que se puedan utilizar movimientos explosivos, tales como Autodestrucción.' }, - "limber": { - name: "Flexibilidad", - description: "Evita ser paralizado gracias a la flexibilidad de su cuerpo." + 'limber': { + name: 'Flexibilidad', + description: 'Evita ser paralizado gracias a la flexibilidad de su cuerpo.' }, - "sandVeil": { - name: "Velo Arena", - description: "Aumenta su Evasión durante las tormentas de arena." + 'sandVeil': { + name: 'Velo Arena', + description: 'Aumenta su Evasión durante las tormentas de arena.' }, - "static": { - name: "Elec. Estática", - description: "La electricidad estática que lo envuelve puede paralizar al Pokémon que lo ataque con un movimiento de contacto." + 'static': { + name: 'Elec. Estática', + description: 'La electricidad estática que lo envuelve puede paralizar al Pokémon que lo ataque con un movimiento de contacto.' }, - "voltAbsorb": { - name: "Absorbe Elec", - description: "Si lo alcanza un movimiento de tipo Eléctrico, recupera PS en vez de sufrir daño." + 'voltAbsorb': { + name: 'Absorbe Elec', + description: 'Si lo alcanza un movimiento de tipo Eléctrico, recupera PS en vez de sufrir daño.' }, - "waterAbsorb": { - name: "Absorbe Agua", - description: "Si lo alcanza un movimiento de tipo Agua, recupera PS en vez de sufrir daño." + 'waterAbsorb': { + name: 'Absorbe Agua', + description: 'Si lo alcanza un movimiento de tipo Agua, recupera PS en vez de sufrir daño.' }, - "oblivious": { - name: "Despiste", - description: "Su indiferencia evita que sea provocado, caiga presa del enamoramiento o sufra los efectos de Intimidación." + 'oblivious': { + name: 'Despiste', + description: 'Su indiferencia evita que sea provocado, caiga presa del enamoramiento o sufra los efectos de Intimidación.' }, - "cloudNine": { - name: "Aclimatación", - description: "Anula todos los efectos del tiempo atmosférico." + 'cloudNine': { + name: 'Aclimatación', + description: 'Anula todos los efectos del tiempo atmosférico.' }, - "compoundEyes": { - name: "Ojo Compuesto", - description: "Aumenta la precisión de sus movimientos." + 'compoundEyes': { + name: 'Ojo Compuesto', + description: 'Aumenta la precisión de sus movimientos.' }, - "insomnia": { - name: "Insomnio", - description: "Su resistencia al sueño le impide quedarse dormido." + 'insomnia': { + name: 'Insomnio', + description: 'Su resistencia al sueño le impide quedarse dormido.' }, - "colorChange": { - name: "Cambio Color", - description: "Adopta el tipo del último movimiento del que es blanco." + 'colorChange': { + name: 'Cambio Color', + description: 'Adopta el tipo del último movimiento del que es blanco.' }, - "immunity": { - name: "Inmunidad", - description: "Su sistema inmunitario evita el envenenamiento." + 'immunity': { + name: 'Inmunidad', + description: 'Su sistema inmunitario evita el envenenamiento.' }, - "flashFire": { - name: "Absorbe Fuego", - description: "Si lo alcanza algún movimiento de tipo Fuego, potencia sus propios movimientos de dicho tipo." + 'flashFire': { + name: 'Absorbe Fuego', + description: 'Si lo alcanza algún movimiento de tipo Fuego, potencia sus propios movimientos de dicho tipo.' }, - "shieldDust": { - name: "Polvo Escudo", - description: "El polvo de escamas que lo envuelve lo protege de los efectos secundarios de los ataques recibidos." + 'shieldDust': { + name: 'Polvo Escudo', + description: 'El polvo de escamas que lo envuelve lo protege de los efectos secundarios de los ataques recibidos.' }, - "ownTempo": { - name: "Ritmo Propio", - description: "Como le gusta hacer las cosas a su manera, no le afecta la confusión ni sufre los efectos de Intimidación." + 'ownTempo': { + name: 'Ritmo Propio', + description: 'Como le gusta hacer las cosas a su manera, no le afecta la confusión ni sufre los efectos de Intimidación.' }, - "suctionCups": { - name: "Ventosas", - description: "Sus ventosas se aferran al suelo, con lo cual anula movimientos y objetos que fuercen el cambio de Pokémon." + 'suctionCups': { + name: 'Ventosas', + description: 'Sus ventosas se aferran al suelo, con lo cual anula movimientos y objetos que fuercen el cambio de Pokémon.' }, - "intimidate": { - name: "Intimidación", - description: "Al entrar en combate, amilana al rival de tal manera que reduce su Ataque." + 'intimidate': { + name: 'Intimidación', + description: 'Al entrar en combate, amilana al rival de tal manera que reduce su Ataque.' }, - "shadowTag": { - name: "Sombra Trampa", - description: "Pisa la sombra del rival para impedir que huya o lo cambien por otro." + 'shadowTag': { + name: 'Sombra Trampa', + description: 'Pisa la sombra del rival para impedir que huya o lo cambien por otro.' }, - "roughSkin": { - name: "Piel Tosca", - description: "Hiere con su piel áspera al Pokémon que lo ataque con un movimiento de contacto." + 'roughSkin': { + name: 'Piel Tosca', + description: 'Hiere con su piel áspera al Pokémon que lo ataque con un movimiento de contacto.' }, - "wonderGuard": { - name: "Superguarda", - description: "Gracias a un poder misterioso, solo le hacen daño los movimientos supereficaces." + 'wonderGuard': { + name: 'Superguarda', + description: 'Gracias a un poder misterioso, solo le hacen daño los movimientos supereficaces.' }, - "levitate": { - name: "Levitación", - description: "Su capacidad de flotar sobre el suelo le proporciona inmunidad frente a los movimientos de tipo Tierra." + 'levitate': { + name: 'Levitación', + description: 'Su capacidad de flotar sobre el suelo le proporciona inmunidad frente a los movimientos de tipo Tierra.' }, - "effectSpore": { - name: "Efecto Espora", - description: "Puede dormir, envenenar o paralizar al Pokémon que lo ataque con un movimiento de contacto." + 'effectSpore': { + name: 'Efecto Espora', + description: 'Puede dormir, envenenar o paralizar al Pokémon que lo ataque con un movimiento de contacto.' }, - "synchronize": { - name: "Sincronía", - description: "Contagia el envenenamiento, las quemaduras o la parálisis al Pokémon que le cause ese estado." + 'synchronize': { + name: 'Sincronía', + description: 'Contagia el envenenamiento, las quemaduras o la parálisis al Pokémon que le cause ese estado.' }, - "clearBody": { - name: "Cuerpo Puro", - description: "Evita que se reduzcan sus características a causa de movimientos o habilidades de otros Pokémon." + 'clearBody': { + name: 'Cuerpo Puro', + description: 'Evita que se reduzcan sus características a causa de movimientos o habilidades de otros Pokémon.' }, - "naturalCure": { - name: "Cura Natural", - description: "Sus problemas de estado desaparecen cuando se retira del combate." + 'naturalCure': { + name: 'Cura Natural', + description: 'Sus problemas de estado desaparecen cuando se retira del combate.' }, - "lightningRod": { - name: "Pararrayos", - description: "Atrae y neutraliza los movimientos de tipo Eléctrico, que además le aumentan el Ataque Especial." + 'lightningRod': { + name: 'Pararrayos', + description: 'Atrae y neutraliza los movimientos de tipo Eléctrico, que además le aumentan el Ataque Especial.' }, - "sereneGrace": { - name: "Dicha", - description: "Aumenta la probabilidad de que los movimientos causen efectos secundarios." + 'sereneGrace': { + name: 'Dicha', + description: 'Aumenta la probabilidad de que los movimientos causen efectos secundarios.' }, - "swiftSwim": { - name: "Nado Rápido", - description: "Aumenta su Velocidad cuando llueve." + 'swiftSwim': { + name: 'Nado Rápido', + description: 'Aumenta su Velocidad cuando llueve.' }, - "chlorophyll": { - name: "Clorofila", - description: "Aumenta su Velocidad cuando hace sol." + 'chlorophyll': { + name: 'Clorofila', + description: 'Aumenta su Velocidad cuando hace sol.' }, - "illuminate": { - name: "Iluminación", - description: "Al iluminar el entorno, evita que su Precisión se reduzca." + 'illuminate': { + name: 'Iluminación', + description: 'Al iluminar el entorno, evita que su Precisión se reduzca.' }, - "trace": { - name: "Calco", - description: "Copia la habilidad del rival al entrar en combate." + 'trace': { + name: 'Calco', + description: 'Copia la habilidad del rival al entrar en combate.' }, - "hugePower": { - name: "Potencia", - description: "Duplica la potencia de sus ataques físicos." + 'hugePower': { + name: 'Potencia', + description: 'Duplica la potencia de sus ataques físicos.' }, - "poisonPoint": { - name: "Punto Tóxico", - description: "Puede envenenar al Pokémon que lo ataque con un movimiento de contacto." + 'poisonPoint': { + name: 'Punto Tóxico', + description: 'Puede envenenar al Pokémon que lo ataque con un movimiento de contacto.' }, - "innerFocus": { - name: "Fuerza Mental", - description: "Gracias a su profunda concentración, no se amedrenta ante los ataques de otros Pokémon ni sufre los efectos de Intimidación." + 'innerFocus': { + name: 'Fuerza Mental', + description: 'Gracias a su profunda concentración, no se amedrenta ante los ataques de otros Pokémon ni sufre los efectos de Intimidación.' }, - "magmaArmor": { - name: "Escudo Magma", - description: "Gracias al magma candente que lo envuelve, no puede ser congelado." + 'magmaArmor': { + name: 'Escudo Magma', + description: 'Gracias al magma candente que lo envuelve, no puede ser congelado.' }, - "waterVeil": { - name: "Velo Agua", - description: "Evita las quemaduras gracias a la capa de agua que lo envuelve." + 'waterVeil': { + name: 'Velo Agua', + description: 'Evita las quemaduras gracias a la capa de agua que lo envuelve.' }, - "magnetPull": { - name: "Imán", - description: "Su magnetismo atrae a los Pokémon de tipo Acero y les impide huir o ser cambiados por otros." + 'magnetPull': { + name: 'Imán', + description: 'Su magnetismo atrae a los Pokémon de tipo Acero y les impide huir o ser cambiados por otros.' }, - "soundproof": { - name: "Insonorizar", - description: "Su aislamiento acústico lo protege de movimientos que usan sonido." + 'soundproof': { + name: 'Insonorizar', + description: 'Su aislamiento acústico lo protege de movimientos que usan sonido.' }, - "rainDish": { - name: "Cura Lluvia", - description: "Recupera PS de forma gradual cuando llueve." + 'rainDish': { + name: 'Cura Lluvia', + description: 'Recupera PS de forma gradual cuando llueve.' }, - "sandStream": { - name: "Chorro Arena", - description: "Crea una tormenta de arena al entrar en combate." + 'sandStream': { + name: 'Chorro Arena', + description: 'Crea una tormenta de arena al entrar en combate.' }, - "pressure": { - name: "Presión", - description: "Presiona al rival de tal manera que este consume más PP al usar sus movimientos." + 'pressure': { + name: 'Presión', + description: 'Presiona al rival de tal manera que este consume más PP al usar sus movimientos.' }, - "thickFat": { - name: "Sebo", - description: "Gracias a la gruesa capa de grasa que lo protege, reduce a la mitad el daño que recibe de ataques de tipo Fuego o Hielo." + 'thickFat': { + name: 'Sebo', + description: 'Gracias a la gruesa capa de grasa que lo protege, reduce a la mitad el daño que recibe de ataques de tipo Fuego o Hielo.' }, - "earlyBird": { - name: "Madrugar", - description: "Si se duerme, tardará la mitad de tiempo en despertarse." + 'earlyBird': { + name: 'Madrugar', + description: 'Si se duerme, tardará la mitad de tiempo en despertarse.' }, - "flameBody": { - name: "Cuerpo Llama", - description: "Puede quemar al Pokémon que lo ataque con un movimiento de contacto." + 'flameBody': { + name: 'Cuerpo Llama', + description: 'Puede quemar al Pokémon que lo ataque con un movimiento de contacto.' }, - "runAway": { - name: "Fuga", - description: "Puede escapar de cualquier Pokémon salvaje." + 'runAway': { + name: 'Fuga', + description: 'Puede escapar de cualquier Pokémon salvaje.' }, - "keenEye": { - name: "Vista Lince", - description: "Su aguda vista evita que su Precisión se reduzca." + 'keenEye': { + name: 'Vista Lince', + description: 'Su aguda vista evita que su Precisión se reduzca.' }, - "hyperCutter": { - name: "Corte Fuerte", - description: "Evita que otros Pokémon le reduzcan el Ataque." + 'hyperCutter': { + name: 'Corte Fuerte', + description: 'Evita que otros Pokémon le reduzcan el Ataque.' }, - "pickup": { - name: "Recogida", - description: "Puede recoger objetos que otros Pokémon hayan usado, o bien aquellos que encuentre en plena aventura." + 'pickup': { + name: 'Recogida', + description: 'Puede recoger objetos que otros Pokémon hayan usado, o bien aquellos que encuentre en plena aventura.' }, - "truant": { - name: "Pereza", - description: "Al ejecutar un movimiento, descansará en el turno siguiente." + 'truant': { + name: 'Pereza', + description: 'Al ejecutar un movimiento, descansará en el turno siguiente.' }, - "hustle": { - name: "Entusiasmo", - description: "Aumenta su Ataque, pero reduce su Precisión." + 'hustle': { + name: 'Entusiasmo', + description: 'Aumenta su Ataque, pero reduce su Precisión.' }, - "cuteCharm": { - name: "Gran Encanto", - description: "Puede causar enamoramiento al Pokémon que lo ataque con un movimiento de contacto." + 'cuteCharm': { + name: 'Gran Encanto', + description: 'Puede causar enamoramiento al Pokémon que lo ataque con un movimiento de contacto.' }, - "plus": { - name: "Más", - description: "Aumenta su Ataque Especial si un Pokémon aliado tiene la habilidad Más o la habilidad Menos." + 'plus': { + name: 'Más', + description: 'Aumenta su Ataque Especial si un Pokémon aliado tiene la habilidad Más o la habilidad Menos.' }, - "minus": { - name: "Menos", - description: "Aumenta su Ataque Especial si un Pokémon aliado tiene la habilidad Más o la habilidad Menos." + 'minus': { + name: 'Menos', + description: 'Aumenta su Ataque Especial si un Pokémon aliado tiene la habilidad Más o la habilidad Menos.' }, - "forecast": { - name: "Predicción", - description: "Cambia a tipo Agua, Fuego o Hielo en función del tiempo atmosférico." + 'forecast': { + name: 'Predicción', + description: 'Cambia a tipo Agua, Fuego o Hielo en función del tiempo atmosférico.' }, - "stickyHold": { - name: "Viscosidad", - description: "Los objetos se quedan pegados a su cuerpo, por lo que no pueden robárselos." + 'stickyHold': { + name: 'Viscosidad', + description: 'Los objetos se quedan pegados a su cuerpo, por lo que no pueden robárselos.' }, - "shedSkin": { - name: "Mudar", - description: "Puede curar sus problemas de estado al mudar la piel." + 'shedSkin': { + name: 'Mudar', + description: 'Puede curar sus problemas de estado al mudar la piel.' }, - "guts": { - name: "Agallas", - description: "Si sufre un problema de estado, se arma de valor y aumenta su Ataque." + 'guts': { + name: 'Agallas', + description: 'Si sufre un problema de estado, se arma de valor y aumenta su Ataque.' }, - "marvelScale": { - name: "Escama Especial", - description: "Si sufre un problema de estado, sus escamas especiales reaccionan y aumenta su Defensa." + 'marvelScale': { + name: 'Escama Especial', + description: 'Si sufre un problema de estado, sus escamas especiales reaccionan y aumenta su Defensa.' }, - "liquidOoze": { - name: "Viscosecreción", - description: "Exuda una secreción viscosa y tóxica de intenso hedor que hiere a quienes intentan drenarle PS." + 'liquidOoze': { + name: 'Viscosecreción', + description: 'Exuda una secreción viscosa y tóxica de intenso hedor que hiere a quienes intentan drenarle PS.' }, - "overgrow": { - name: "Espesura", - description: "Potencia sus movimientos de tipo Planta cuando le quedan pocos PS." + 'overgrow': { + name: 'Espesura', + description: 'Potencia sus movimientos de tipo Planta cuando le quedan pocos PS.' }, - "blaze": { - name: "Mar Llamas", - description: "Potencia sus movimientos de tipo Fuego cuando le quedan pocos PS." + 'blaze': { + name: 'Mar Llamas', + description: 'Potencia sus movimientos de tipo Fuego cuando le quedan pocos PS.' }, - "torrent": { - name: "Torrente", - description: "Potencia sus movimientos de tipo Agua cuando le quedan pocos PS." + 'torrent': { + name: 'Torrente', + description: 'Potencia sus movimientos de tipo Agua cuando le quedan pocos PS.' }, - "swarm": { - name: "Enjambre", - description: "Potencia sus movimientos de tipo Bicho cuando le quedan pocos PS." + 'swarm': { + name: 'Enjambre', + description: 'Potencia sus movimientos de tipo Bicho cuando le quedan pocos PS.' }, - "rockHead": { - name: "Cabeza Roca", - description: "No pierde PS al usar movimientos que también hieren al usuario." + 'rockHead': { + name: 'Cabeza Roca', + description: 'No pierde PS al usar movimientos que también hieren al usuario.' }, - "drought": { - name: "Sequía", - description: "El tiempo pasa a ser soleado al entrar en combate." + 'drought': { + name: 'Sequía', + description: 'El tiempo pasa a ser soleado al entrar en combate.' }, - "arenaTrap": { - name: "Trampa Arena", - description: "Evita que el rival huya o sea cambiado por otro." + 'arenaTrap': { + name: 'Trampa Arena', + description: 'Evita que el rival huya o sea cambiado por otro.' }, - "vitalSpirit": { - name: "Espíritu Vital", - description: "Su determinación le impide quedarse dormido." + 'vitalSpirit': { + name: 'Espíritu Vital', + description: 'Su determinación le impide quedarse dormido.' }, - "whiteSmoke": { - name: "Humo Blanco", - description: "El humo blanco que lo protege evita que otros Pokémon le reduzcan las características." + 'whiteSmoke': { + name: 'Humo Blanco', + description: 'El humo blanco que lo protege evita que otros Pokémon le reduzcan las características.' }, - "purePower": { - name: "Energía Pura", - description: "Duplica la potencia de sus ataques físicos gracias al yoga." + 'purePower': { + name: 'Energía Pura', + description: 'Duplica la potencia de sus ataques físicos gracias al yoga.' }, - "shellArmor": { - name: "Caparazón", - description: "La robusta coraza que lo protege bloquea los golpes críticos." + 'shellArmor': { + name: 'Caparazón', + description: 'La robusta coraza que lo protege bloquea los golpes críticos.' }, - "airLock": { - name: "Esclusa de Aire", - description: "Neutraliza todos los efectos del tiempo atmosférico." + 'airLock': { + name: 'Esclusa de Aire', + description: 'Neutraliza todos los efectos del tiempo atmosférico.' }, - "tangledFeet": { - name: "Tumbos", - description: "Aumenta su Evasión si está confuso." + 'tangledFeet': { + name: 'Tumbos', + description: 'Aumenta su Evasión si está confuso.' }, - "motorDrive": { - name: "Electromotor", - description: "Si lo alcanza un movimiento de tipo Eléctrico, aumenta su Velocidad en vez de sufrir daño." + 'motorDrive': { + name: 'Electromotor', + description: 'Si lo alcanza un movimiento de tipo Eléctrico, aumenta su Velocidad en vez de sufrir daño.' }, - "rivalry": { - name: "Rivalidad", - description: "Si el objetivo es del mismo sexo, su competitividad le lleva a infligir más daño. Si es del sexo contrario, en cambio, el daño será menor." + 'rivalry': { + name: 'Rivalidad', + description: 'Si el objetivo es del mismo sexo, su competitividad le lleva a infligir más daño. Si es del sexo contrario, en cambio, el daño será menor.' }, - "steadfast": { - name: "Impasible", - description: "Cada vez que se amedrenta, aumenta su Velocidad debido a su voluntad inquebrantable." + 'steadfast': { + name: 'Impasible', + description: 'Cada vez que se amedrenta, aumenta su Velocidad debido a su voluntad inquebrantable.' }, - "snowCloak": { - name: "Manto Níveo", - description: "Aumenta su Evasión cuando nieva." + 'snowCloak': { + name: 'Manto Níveo', + description: 'Aumenta su Evasión cuando nieva.' }, - "gluttony": { - name: "Gula", - description: "Cuando sus PS se ven reducidos a la mitad, engulle la baya que normalmente solo se comería cuando le quedasen pocos PS." + 'gluttony': { + name: 'Gula', + description: 'Cuando sus PS se ven reducidos a la mitad, engulle la baya que normalmente solo se comería cuando le quedasen pocos PS.' }, - "angerPoint": { - name: "Irascible", - description: "Si recibe un golpe crítico, monta en cólera y su Ataque aumenta al máximo." + 'angerPoint': { + name: 'Irascible', + description: 'Si recibe un golpe crítico, monta en cólera y su Ataque aumenta al máximo.' }, - "unburden": { - name: "Liviano", - description: "Aumenta su Velocidad si usa o pierde el objeto que lleva." + 'unburden': { + name: 'Liviano', + description: 'Aumenta su Velocidad si usa o pierde el objeto que lleva.' }, - "heatproof": { - name: "Ignífugo", - description: "Su cuerpo, resistente al calor, reduce a la mitad el daño recibido por movimientos de tipo Fuego." + 'heatproof': { + name: 'Ignífugo', + description: 'Su cuerpo, resistente al calor, reduce a la mitad el daño recibido por movimientos de tipo Fuego.' }, - "simple": { - name: "Simple", - description: "Duplica los cambios en las características." + 'simple': { + name: 'Simple', + description: 'Duplica los cambios en las características.' }, - "drySkin": { - name: "Piel Seca", - description: "Pierde PS si hace sol y los recupera si llueve o recibe un movimiento de tipo Agua. Los movimientos de tipo Fuego, por su parte, le hacen más daño de lo normal." + 'drySkin': { + name: 'Piel Seca', + description: 'Pierde PS si hace sol y los recupera si llueve o recibe un movimiento de tipo Agua. Los movimientos de tipo Fuego, por su parte, le hacen más daño de lo normal.' }, - "download": { - name: "Descarga", - description: "Compara la Defensa y la Defensa Especial del rival para ver cuál es inferior y aumenta su propio Ataque o Ataque Especial según sea lo más eficaz." + 'download': { + name: 'Descarga', + description: 'Compara la Defensa y la Defensa Especial del rival para ver cuál es inferior y aumenta su propio Ataque o Ataque Especial según sea lo más eficaz.' }, - "ironFist": { - name: "Puño Férreo", - description: "Aumenta la potencia de los movimientos con los puños." + 'ironFist': { + name: 'Puño Férreo', + description: 'Aumenta la potencia de los movimientos con los puños.' }, - "poisonHeal": { - name: "Antídoto", - description: "Si resulta envenenado, recupera PS en vez de perderlos." + 'poisonHeal': { + name: 'Antídoto', + description: 'Si resulta envenenado, recupera PS en vez de perderlos.' }, - "adaptability": { - name: "Adaptable", - description: "Potencia aún más los movimientos cuyo tipo coincida con el suyo." + 'adaptability': { + name: 'Adaptable', + description: 'Potencia aún más los movimientos cuyo tipo coincida con el suyo.' }, - "skillLink": { - name: "Encadenado", - description: "Ejecuta siempre los movimientos de ataque múltiple con el número máximo de golpes." + 'skillLink': { + name: 'Encadenado', + description: 'Ejecuta siempre los movimientos de ataque múltiple con el número máximo de golpes.' }, - "hydration": { - name: "Hidratación", - description: "Cura los problemas de estado si está lloviendo." + 'hydration': { + name: 'Hidratación', + description: 'Cura los problemas de estado si está lloviendo.' }, - "solarPower": { - name: "Poder Solar", - description: "Si hace sol, aumenta su Ataque Especial, pero pierde PS en cada turno." + 'solarPower': { + name: 'Poder Solar', + description: 'Si hace sol, aumenta su Ataque Especial, pero pierde PS en cada turno.' }, - "quickFeet": { - name: "Pies Rápidos", - description: "Aumenta su Velocidad si sufre problemas de estado." + 'quickFeet': { + name: 'Pies Rápidos', + description: 'Aumenta su Velocidad si sufre problemas de estado.' }, - "normalize": { - name: "Normalidad", - description: "Hace que todos sus movimientos se vuelvan de tipo Normal y aumenta ligeramente su potencia." + 'normalize': { + name: 'Normalidad', + description: 'Hace que todos sus movimientos se vuelvan de tipo Normal y aumenta ligeramente su potencia.' }, - "sniper": { - name: "Francotirador", - description: "Potencia los golpes críticos que asesta aún más de lo normal." + 'sniper': { + name: 'Francotirador', + description: 'Potencia los golpes críticos que asesta aún más de lo normal.' }, - "magicGuard": { - name: "Muro Mágico", - description: "Solo recibe daño de ataques." + 'magicGuard': { + name: 'Muro Mágico', + description: 'Solo recibe daño de ataques.' }, - "noGuard": { - name: "Indefenso", - description: "Al quedar ambos expuestos, tanto sus movimientos como los del Pokémon que lo ataque acertarán siempre." + 'noGuard': { + name: 'Indefenso', + description: 'Al quedar ambos expuestos, tanto sus movimientos como los del Pokémon que lo ataque acertarán siempre.' }, - "stall": { - name: "Rezagado", - description: "Ejecuta su movimiento tras todos los demás." + 'stall': { + name: 'Rezagado', + description: 'Ejecuta su movimiento tras todos los demás.' }, - "technician": { - name: "Experto", - description: "Aumenta la potencia de sus movimientos débiles." + 'technician': { + name: 'Experto', + description: 'Aumenta la potencia de sus movimientos débiles.' }, - "leafGuard": { - name: "Defensa Hoja", - description: "Evita los problemas de estado si hace sol." + 'leafGuard': { + name: 'Defensa Hoja', + description: 'Evita los problemas de estado si hace sol.' }, - "klutz": { - name: "Zoquete", - description: "No puede usar objetos equipados." + 'klutz': { + name: 'Zoquete', + description: 'No puede usar objetos equipados.' }, - "moldBreaker": { - name: "Rompemoldes", - description: "Sus movimientos no se ven afectados por la habilidad del objetivo." + 'moldBreaker': { + name: 'Rompemoldes', + description: 'Sus movimientos no se ven afectados por la habilidad del objetivo.' }, - "superLuck": { - name: "Afortunado", - description: "Su buena suerte aumenta la probabilidad de asestar golpes críticos." + 'superLuck': { + name: 'Afortunado', + description: 'Su buena suerte aumenta la probabilidad de asestar golpes críticos.' }, - "aftermath": { - name: "Detonación", - description: "Daña al Pokémon que le ha dado el golpe de gracia con un movimiento de contacto." + 'aftermath': { + name: 'Detonación', + description: 'Daña al Pokémon que le ha dado el golpe de gracia con un movimiento de contacto.' }, - "anticipation": { - name: "Anticipación", - description: "Prevé los movimientos peligrosos del rival." + 'anticipation': { + name: 'Anticipación', + description: 'Prevé los movimientos peligrosos del rival.' }, - "forewarn": { - name: "Alerta", - description: "Revela uno de los movimientos del rival al entrar en combate." + 'forewarn': { + name: 'Alerta', + description: 'Revela uno de los movimientos del rival al entrar en combate.' }, - "unaware": { - name: "Ignorante", - description: "Pasa por alto los cambios en las características de un Pokémon al atacarlo o recibir daño." + 'unaware': { + name: 'Ignorante', + description: 'Pasa por alto los cambios en las características de un Pokémon al atacarlo o recibir daño.' }, - "tintedLens": { - name: "Cromolente", - description: "Potencia los movimientos que no son muy eficaces, que infligen ahora un daño normal." + 'tintedLens': { + name: 'Cromolente', + description: 'Potencia los movimientos que no son muy eficaces, que infligen ahora un daño normal.' }, - "filter": { - name: "Filtro", - description: "Mitiga el daño que le infligen los movimientos supereficaces." + 'filter': { + name: 'Filtro', + description: 'Mitiga el daño que le infligen los movimientos supereficaces.' }, - "slowStart": { - name: "Inicio Lento", - description: "Reduce a la mitad su Ataque y su Velocidad durante cinco turnos." + 'slowStart': { + name: 'Inicio Lento', + description: 'Reduce a la mitad su Ataque y su Velocidad durante cinco turnos.' }, - "scrappy": { - name: "Intrépido", - description: "Alcanza a Pokémon de tipo Fantasma con movimientos de tipo Normal o Lucha. Además, no sufre los efectos de Intimidación." + 'scrappy': { + name: 'Intrépido', + description: 'Alcanza a Pokémon de tipo Fantasma con movimientos de tipo Normal o Lucha. Además, no sufre los efectos de Intimidación.' }, - "stormDrain": { - name: "Colector", - description: "Atrae y neutraliza los movimientos de tipo Agua, que además le aumentan el Ataque Especial." + 'stormDrain': { + name: 'Colector', + description: 'Atrae y neutraliza los movimientos de tipo Agua, que además le aumentan el Ataque Especial.' }, - "iceBody": { - name: "Gélido", - description: "Recupera PS de forma gradual cuando nieva." + 'iceBody': { + name: 'Gélido', + description: 'Recupera PS de forma gradual cuando nieva.' }, - "solidRock": { - name: "Roca Sólida", - description: "Mitiga el daño que le infligen los movimientos supereficaces." + 'solidRock': { + name: 'Roca Sólida', + description: 'Mitiga el daño que le infligen los movimientos supereficaces.' }, - "snowWarning": { - name: "Nevada", - description: "Invoca una nevada al entrar en combate." + 'snowWarning': { + name: 'Nevada', + description: 'Invoca una nevada al entrar en combate.' }, - "honeyGather": { - name: "Recogemiel", - description: "Puede que encuentre Miel una vez concluido el combate." + 'honeyGather': { + name: 'Recogemiel', + description: 'Puede que encuentre Miel una vez concluido el combate.' }, - "frisk": { - name: "Cacheo", - description: "Cuando entra en combate, el Pokémon puede comprobar la habilidad de un Pokémon rival." + 'frisk': { + name: 'Cacheo', + description: 'Cuando entra en combate, el Pokémon puede comprobar la habilidad de un Pokémon rival.' }, - "reckless": { - name: "Audaz", - description: "Potencia los movimientos que también dañan al usuario." + 'reckless': { + name: 'Audaz', + description: 'Potencia los movimientos que también dañan al usuario.' }, - "multitype": { - name: "Multitipo", - description: "Cambia su tipo al de la tabla que lleve." + 'multitype': { + name: 'Multitipo', + description: 'Cambia su tipo al de la tabla que lleve.' }, - "flowerGift": { - name: "Don Floral", - description: "Si hace sol, aumenta su Ataque y su Defensa Especial, así como los de sus aliados." + 'flowerGift': { + name: 'Don Floral', + description: 'Si hace sol, aumenta su Ataque y su Defensa Especial, así como los de sus aliados.' }, - "badDreams": { - name: "Mal Sueño", - description: "Inflige daño a cualquier rival que esté dormido." + 'badDreams': { + name: 'Mal Sueño', + description: 'Inflige daño a cualquier rival que esté dormido.' }, - "pickpocket": { - name: "Hurto", - description: "Roba el objeto del Pokémon que lo ataque con un movimiento de contacto." + 'pickpocket': { + name: 'Hurto', + description: 'Roba el objeto del Pokémon que lo ataque con un movimiento de contacto.' }, - "sheerForce": { - name: "Potencia Bruta", - description: "Aumenta la potencia de sus movimientos en detrimento de los efectos secundarios, que se ven anulados." + 'sheerForce': { + name: 'Potencia Bruta', + description: 'Aumenta la potencia de sus movimientos en detrimento de los efectos secundarios, que se ven anulados.' }, - "contrary": { - name: "Respondón", - description: "Invierte los cambios en las características: bajan cuando les toca subir y suben cuando les toca bajar." + 'contrary': { + name: 'Respondón', + description: 'Invierte los cambios en las características: bajan cuando les toca subir y suben cuando les toca bajar.' }, - "unnerve": { - name: "Nerviosismo", - description: "Pone nervioso al rival y le impide comer bayas." + 'unnerve': { + name: 'Nerviosismo', + description: 'Pone nervioso al rival y le impide comer bayas.' }, - "defiant": { - name: "Competitivo", - description: "Aumenta mucho su Ataque cuando el rival le reduce cualquiera de sus características." + 'defiant': { + name: 'Competitivo', + description: 'Aumenta mucho su Ataque cuando el rival le reduce cualquiera de sus características.' }, - "defeatist": { - name: "Flaqueza", - description: "Cuando sus PS se ven reducidos a la mitad, se cansa tanto que su Ataque y su Ataque Especial también se ven reducidos a la mitad." + 'defeatist': { + name: 'Flaqueza', + description: 'Cuando sus PS se ven reducidos a la mitad, se cansa tanto que su Ataque y su Ataque Especial también se ven reducidos a la mitad.' }, - "cursedBody": { - name: "Cuerpo Maldito", - description: "Puede anular el movimiento usado en su contra." + 'cursedBody': { + name: 'Cuerpo Maldito', + description: 'Puede anular el movimiento usado en su contra.' }, - "healer": { - name: "Alma Cura", - description: "A veces cura los problemas de estado de un aliado." + 'healer': { + name: 'Alma Cura', + description: 'A veces cura los problemas de estado de un aliado.' }, - "friendGuard": { - name: "Compiescolta", - description: "Reduce el daño que sufren los aliados." + 'friendGuard': { + name: 'Compiescolta', + description: 'Reduce el daño que sufren los aliados.' }, - "weakArmor": { - name: "Armadura Frágil", - description: "Al recibir daño de un ataque físico, se reduce su Defensa, pero aumenta mucho su Velocidad." + 'weakArmor': { + name: 'Armadura Frágil', + description: 'Al recibir daño de un ataque físico, se reduce su Defensa, pero aumenta mucho su Velocidad.' }, - "heavyMetal": { - name: "Metal Pesado", - description: "Duplica su peso." + 'heavyMetal': { + name: 'Metal Pesado', + description: 'Duplica su peso.' }, - "lightMetal": { - name: "Metal Liviano", - description: "Reduce a la mitad su peso." + 'lightMetal': { + name: 'Metal Liviano', + description: 'Reduce a la mitad su peso.' }, - "multiscale": { - name: "Multiescamas", - description: "Reduce el daño que sufre si sus PS están al máximo." + 'multiscale': { + name: 'Multiescamas', + description: 'Reduce el daño que sufre si sus PS están al máximo.' }, - "toxicBoost": { - name: "Ímpetu Tóxico", - description: "Aumenta la potencia de sus ataques físicos cuando está envenenado." + 'toxicBoost': { + name: 'Ímpetu Tóxico', + description: 'Aumenta la potencia de sus ataques físicos cuando está envenenado.' }, - "flareBoost": { - name: "Ímpetu Ardiente", - description: "Aumenta la potencia de sus ataques especiales cuando sufre quemaduras." + 'flareBoost': { + name: 'Ímpetu Ardiente', + description: 'Aumenta la potencia de sus ataques especiales cuando sufre quemaduras.' }, - "harvest": { - name: "Cosecha", - description: "Puede reutilizar varias veces una misma baya." + 'harvest': { + name: 'Cosecha', + description: 'Puede reutilizar varias veces una misma baya.' }, - "telepathy": { - name: "Telepatía", - description: "Elude los ataques de los aliados durante el combate." + 'telepathy': { + name: 'Telepatía', + description: 'Elude los ataques de los aliados durante el combate.' }, - "moody": { - name: "Veleta", - description: "Aumenta mucho una característica en cada turno, pero reduce otra." + 'moody': { + name: 'Veleta', + description: 'Aumenta mucho una característica en cada turno, pero reduce otra.' }, - "overcoat": { - name: "Funda", - description: "No recibe daño de las tormentas de arena ni sufre los efectos causados por polvos o esporas." + 'overcoat': { + name: 'Funda', + description: 'No recibe daño de las tormentas de arena ni sufre los efectos causados por polvos o esporas.' }, - "poisonTouch": { - name: "Toque Tóxico", - description: "Puede envenenar al Pokémon al que ataque con un movimiento de contacto." + 'poisonTouch': { + name: 'Toque Tóxico', + description: 'Puede envenenar al Pokémon al que ataque con un movimiento de contacto.' }, - "regenerator": { - name: "Regeneración", - description: "Recupera unos pocos PS cuando se retira del combate." + 'regenerator': { + name: 'Regeneración', + description: 'Recupera unos pocos PS cuando se retira del combate.' }, - "bigPecks": { - name: "Sacapecho", - description: "Impide que otros Pokémon le reduzcan la Defensa." + 'bigPecks': { + name: 'Sacapecho', + description: 'Impide que otros Pokémon le reduzcan la Defensa.' }, - "sandRush": { - name: "Ímpetu Arena", - description: "Aumenta su Velocidad durante las tormentas de arena." + 'sandRush': { + name: 'Ímpetu Arena', + description: 'Aumenta su Velocidad durante las tormentas de arena.' }, - "wonderSkin": { - name: "Piel Milagro", - description: "Presenta una mayor resistencia ante los movimientos de estado." + 'wonderSkin': { + name: 'Piel Milagro', + description: 'Presenta una mayor resistencia ante los movimientos de estado.' }, - "analytic": { - name: "Cálculo Final", - description: "Aumenta la potencia de su movimiento si es el último en atacar." + 'analytic': { + name: 'Cálculo Final', + description: 'Aumenta la potencia de su movimiento si es el último en atacar.' }, - "illusion": { - name: "Ilusión", - description: "Adopta el aspecto del último Pokémon del equipo al entrar en combate para desconcertar al rival." + 'illusion': { + name: 'Ilusión', + description: 'Adopta el aspecto del último Pokémon del equipo al entrar en combate para desconcertar al rival.' }, - "imposter": { - name: "Impostor", - description: "Se transforma en el Pokémon que tiene enfrente." + 'imposter': { + name: 'Impostor', + description: 'Se transforma en el Pokémon que tiene enfrente.' }, - "infiltrator": { - name: "Allanamiento", - description: "Ataca sorteando las barreras o el sustituto del objetivo." + 'infiltrator': { + name: 'Allanamiento', + description: 'Ataca sorteando las barreras o el sustituto del objetivo.' }, - "mummy": { - name: "Momia", - description: "Contagia la habilidad Momia al Pokémon que lo ataque con un movimiento de contacto." + 'mummy': { + name: 'Momia', + description: 'Contagia la habilidad Momia al Pokémon que lo ataque con un movimiento de contacto.' }, - "moxie": { - name: "Autoestima", - description: "Al debilitar a un objetivo, su confianza se refuerza de tal manera que aumenta su Ataque." + 'moxie': { + name: 'Autoestima', + description: 'Al debilitar a un objetivo, su confianza se refuerza de tal manera que aumenta su Ataque.' }, - "justified": { - name: "Justiciero", - description: "Si lo alcanza un movimiento de tipo Siniestro, aumenta el Ataque debido a su integridad." + 'justified': { + name: 'Justiciero', + description: 'Si lo alcanza un movimiento de tipo Siniestro, aumenta el Ataque debido a su integridad.' }, - "rattled": { - name: "Cobardía", - description: "Si lo alcanza un ataque de tipo Siniestro, Bicho o Fantasma, o si sufre los efectos de Intimidación, el miedo hace que aumente su Velocidad." + 'rattled': { + name: 'Cobardía', + description: 'Si lo alcanza un ataque de tipo Siniestro, Bicho o Fantasma, o si sufre los efectos de Intimidación, el miedo hace que aumente su Velocidad.' }, - "magicBounce": { - name: "Espejo Mágico", - description: "Puede devolver los movimientos de estado sin verse afectado por ellos." + 'magicBounce': { + name: 'Espejo Mágico', + description: 'Puede devolver los movimientos de estado sin verse afectado por ellos.' }, - "sapSipper": { - name: "Herbívoro", - description: "Si lo alcanza un movimiento de tipo Planta, aumenta su Ataque en vez de sufrir daño." + 'sapSipper': { + name: 'Herbívoro', + description: 'Si lo alcanza un movimiento de tipo Planta, aumenta su Ataque en vez de sufrir daño.' }, - "prankster": { - name: "Bromista", - description: "Sus movimientos de estado tienen prioridad alta." + 'prankster': { + name: 'Bromista', + description: 'Sus movimientos de estado tienen prioridad alta.' }, - "sandForce": { - name: "Poder Arena", - description: "Potencia los movimientos de tipo Tierra, Acero y Roca durante las tormentas de arena." + 'sandForce': { + name: 'Poder Arena', + description: 'Potencia los movimientos de tipo Tierra, Acero y Roca durante las tormentas de arena.' }, - "ironBarbs": { - name: "Punta Acero", - description: "Inflige daño con sus púas de acero al Pokémon que lo ataque con un movimiento de contacto." + 'ironBarbs': { + name: 'Punta Acero', + description: 'Inflige daño con sus púas de acero al Pokémon que lo ataque con un movimiento de contacto.' }, - "zenMode": { - name: "Modo Daruma", - description: "Cambia de forma si sus PS se ven reducidos a la mitad o menos." + 'zenMode': { + name: 'Modo Daruma', + description: 'Cambia de forma si sus PS se ven reducidos a la mitad o menos.' }, - "victoryStar": { - name: "Tinovictoria", - description: "Aumenta su Precisión y la de sus aliados." + 'victoryStar': { + name: 'Tinovictoria', + description: 'Aumenta su Precisión y la de sus aliados.' }, - "turboblaze": { - name: "Turbollama", - description: "Sus movimientos no se ven afectados por la habilidad del objetivo." + 'turboblaze': { + name: 'Turbollama', + description: 'Sus movimientos no se ven afectados por la habilidad del objetivo.' }, - "teravolt": { - name: "Terravoltaje", - description: "Sus movimientos no se ven afectados por la habilidad del objetivo." + 'teravolt': { + name: 'Terravoltaje', + description: 'Sus movimientos no se ven afectados por la habilidad del objetivo.' }, - "aromaVeil": { - name: "Velo Aroma", - description: "Se protege a sí mismo y a sus aliados de efectos que impiden usar movimientos." + 'aromaVeil': { + name: 'Velo Aroma', + description: 'Se protege a sí mismo y a sus aliados de efectos que impiden usar movimientos.' }, - "flowerVeil": { - name: "Velo Flor", - description: "Evita que los Pokémon de tipo Planta aliados sufran problemas de estado o que les reduzcan sus características." + 'flowerVeil': { + name: 'Velo Flor', + description: 'Evita que los Pokémon de tipo Planta aliados sufran problemas de estado o que les reduzcan sus características.' }, - "cheekPouch": { - name: "Carrillo", - description: "Recupera PS al comer cualquier baya." + 'cheekPouch': { + name: 'Carrillo', + description: 'Recupera PS al comer cualquier baya.' }, - "protean": { - name: "Mutatipo", - description: "Al entrar en combate, cambia su tipo al del primer movimiento que va a usar." + 'protean': { + name: 'Mutatipo', + description: 'Al entrar en combate, cambia su tipo al del primer movimiento que va a usar.' }, - "furCoat": { - name: "Pelaje Recio", - description: "Reduce a la mitad el daño que recibe de ataques físicos." + 'furCoat': { + name: 'Pelaje Recio', + description: 'Reduce a la mitad el daño que recibe de ataques físicos.' }, - "magician": { - name: "Prestidigitador", - description: "Roba el objeto del Pokémon al que alcance con un movimiento." + 'magician': { + name: 'Prestidigitador', + description: 'Roba el objeto del Pokémon al que alcance con un movimiento.' }, - "bulletproof": { - name: "Antibalas", - description: "No le afectan las bombas ni algunos proyectiles." + 'bulletproof': { + name: 'Antibalas', + description: 'No le afectan las bombas ni algunos proyectiles.' }, - "competitive": { - name: "Tenacidad", - description: "Aumenta mucho su Ataque Especial cuando el rival le reduce cualquiera de sus características." + 'competitive': { + name: 'Tenacidad', + description: 'Aumenta mucho su Ataque Especial cuando el rival le reduce cualquiera de sus características.' }, - "strongJaw": { - name: "Mandíbula Fuerte", - description: "Su robusta mandíbula le confiere una mordedura mucho más potente." + 'strongJaw': { + name: 'Mandíbula Fuerte', + description: 'Su robusta mandíbula le confiere una mordedura mucho más potente.' }, - "refrigerate": { - name: "Piel Helada", - description: "Convierte los movimientos de tipo Normal en tipo Hielo y aumenta ligeramente su potencia." + 'refrigerate': { + name: 'Piel Helada', + description: 'Convierte los movimientos de tipo Normal en tipo Hielo y aumenta ligeramente su potencia.' }, - "sweetVeil": { - name: "Velo Dulce", - description: "No cae dormido y evita también que sus aliados se duerman." + 'sweetVeil': { + name: 'Velo Dulce', + description: 'No cae dormido y evita también que sus aliados se duerman.' }, - "stanceChange": { - name: "Cambio Táctico", - description: "Adopta la Forma Filo al lanzar un ataque, o bien la Forma Escudo si usa el movimiento Escudo Real." + 'stanceChange': { + name: 'Cambio Táctico', + description: 'Adopta la Forma Filo al lanzar un ataque, o bien la Forma Escudo si usa el movimiento Escudo Real.' }, - "galeWings": { - name: "Alas Vendaval", - description: "Da prioridad a los movimientos de tipo Volador si sus PS están al máximo." + 'galeWings': { + name: 'Alas Vendaval', + description: 'Da prioridad a los movimientos de tipo Volador si sus PS están al máximo.' }, - "megaLauncher": { - name: "Megadisparador", - description: "Aumenta la potencia de algunos movimientos de pulsos y auras." + 'megaLauncher': { + name: 'Megadisparador', + description: 'Aumenta la potencia de algunos movimientos de pulsos y auras.' }, - "grassPelt": { - name: "Manto Frondoso", - description: "Aumenta su Defensa si hay un campo de hierba en el terreno de combate." + 'grassPelt': { + name: 'Manto Frondoso', + description: 'Aumenta su Defensa si hay un campo de hierba en el terreno de combate.' }, - "symbiosis": { - name: "Simbiosis", - description: "Pasa su objeto a un aliado cuando este use el suyo." + 'symbiosis': { + name: 'Simbiosis', + description: 'Pasa su objeto a un aliado cuando este use el suyo.' }, - "toughClaws": { - name: "Garra Dura", - description: "Aumenta la potencia de los movimientos de contacto." + 'toughClaws': { + name: 'Garra Dura', + description: 'Aumenta la potencia de los movimientos de contacto.' }, - "pixilate": { - name: "Piel Feérica", - description: "Convierte los movimientos de tipo Normal en tipo Hada y aumenta ligeramente su potencia." + 'pixilate': { + name: 'Piel Feérica', + description: 'Convierte los movimientos de tipo Normal en tipo Hada y aumenta ligeramente su potencia.' }, - "gooey": { - name: "Baba", - description: "Reduce la Velocidad del Pokémon que lo ataque con un movimiento de contacto." + 'gooey': { + name: 'Baba', + description: 'Reduce la Velocidad del Pokémon que lo ataque con un movimiento de contacto.' }, - "aerilate": { - name: "Piel Celeste", - description: "Convierte los movimientos de tipo Normal en tipo Volador y aumenta ligeramente su potencia." + 'aerilate': { + name: 'Piel Celeste', + description: 'Convierte los movimientos de tipo Normal en tipo Volador y aumenta ligeramente su potencia.' }, - "parentalBond": { - name: "Amor Filial", - description: "Une fuerzas con su cría y ataca dos veces." + 'parentalBond': { + name: 'Amor Filial', + description: 'Une fuerzas con su cría y ataca dos veces.' }, - "darkAura": { - name: "Aura Oscura", - description: "Aumenta la potencia de los movimientos de tipo Siniestro de todos los Pokémon." + 'darkAura': { + name: 'Aura Oscura', + description: 'Aumenta la potencia de los movimientos de tipo Siniestro de todos los Pokémon.' }, - "fairyAura": { - name: "Aura Feérica", - description: "Aumenta la potencia de los movimientos de tipo Hada de todos los Pokémon." + 'fairyAura': { + name: 'Aura Feérica', + description: 'Aumenta la potencia de los movimientos de tipo Hada de todos los Pokémon.' }, - "auraBreak": { - name: "Rompeaura", - description: "Invierte los efectos de las habilidades de auras, por lo que reduce la potencia de ciertos movimientos en vez de aumentarla." + 'auraBreak': { + name: 'Rompeaura', + description: 'Invierte los efectos de las habilidades de auras, por lo que reduce la potencia de ciertos movimientos en vez de aumentarla.' }, - "primordialSea": { - name: "Mar del Albor", - description: "Altera el clima para anular los ataques de tipo Fuego." + 'primordialSea': { + name: 'Mar del Albor', + description: 'Altera el clima para anular los ataques de tipo Fuego.' }, - "desolateLand": { - name: "Tierra del Ocaso", - description: "Altera el clima para anular los ataques de tipo Agua." + 'desolateLand': { + name: 'Tierra del Ocaso', + description: 'Altera el clima para anular los ataques de tipo Agua.' }, - "deltaStream": { - name: "Ráfaga Delta", - description: "Altera el clima para anular las vulnerabilidades del tipo Volador." + 'deltaStream': { + name: 'Ráfaga Delta', + description: 'Altera el clima para anular las vulnerabilidades del tipo Volador.' }, - "stamina": { - name: "Firmeza", - description: "Aumenta su Defensa al recibir un ataque." + 'stamina': { + name: 'Firmeza', + description: 'Aumenta su Defensa al recibir un ataque.' }, - "wimpOut": { - name: "Huida", - description: "Se asusta y abandona el terreno de combate cuando sus PS se ven reducidos a la mitad." + 'wimpOut': { + name: 'Huida', + description: 'Se asusta y abandona el terreno de combate cuando sus PS se ven reducidos a la mitad.' }, - "emergencyExit": { - name: "Retirada", - description: "Abandona el terreno de combate cuando sus PS se ven reducidos a la mitad para evitar males mayores." + 'emergencyExit': { + name: 'Retirada', + description: 'Abandona el terreno de combate cuando sus PS se ven reducidos a la mitad para evitar males mayores.' }, - "waterCompaction": { - name: "Hidrorrefuerzo", - description: "Aumenta mucho su Defensa si lo alcanza un movimiento de tipo Agua." + 'waterCompaction': { + name: 'Hidrorrefuerzo', + description: 'Aumenta mucho su Defensa si lo alcanza un movimiento de tipo Agua.' }, - "merciless": { - name: "Ensañamiento", - description: "Hace que sus movimientos asesten siempre un golpe crítico si el objetivo está envenenado." + 'merciless': { + name: 'Ensañamiento', + description: 'Hace que sus movimientos asesten siempre un golpe crítico si el objetivo está envenenado.' }, - "shieldsDown": { - name: "Escudo Limitado", - description: "Rompe su coraza cuando sus PS se ven reducidos a la mitad y adopta una forma ofensiva." + 'shieldsDown': { + name: 'Escudo Limitado', + description: 'Rompe su coraza cuando sus PS se ven reducidos a la mitad y adopta una forma ofensiva.' }, - "stakeout": { - name: "Vigilante", - description: "Si el objetivo de su ataque es sustituido por otro, duplica el daño que infligirá." + 'stakeout': { + name: 'Vigilante', + description: 'Si el objetivo de su ataque es sustituido por otro, duplica el daño que infligirá.' }, - "waterBubble": { - name: "Pompa", - description: "Reduce el daño que le provocan los movimientos de tipo Fuego y es inmune a las quemaduras." + 'waterBubble': { + name: 'Pompa', + description: 'Reduce el daño que le provocan los movimientos de tipo Fuego y es inmune a las quemaduras.' }, - "steelworker": { - name: "Acero Templado", - description: "Potencia los movimientos de tipo Acero." + 'steelworker': { + name: 'Acero Templado', + description: 'Potencia los movimientos de tipo Acero.' }, - "berserk": { - name: "Cólera", - description: "Aumenta su Ataque Especial si sus PS se ven reducidos a la mitad debido a algún ataque." + 'berserk': { + name: 'Cólera', + description: 'Aumenta su Ataque Especial si sus PS se ven reducidos a la mitad debido a algún ataque.' }, - "slushRush": { - name: "Quitanieves", - description: "Aumenta su Velocidad cuando nieva." + 'slushRush': { + name: 'Quitanieves', + description: 'Aumenta su Velocidad cuando nieva.' }, - "longReach": { - name: "Remoto", - description: "Puede usar cualquier movimiento sin entrar en contacto con su objetivo." + 'longReach': { + name: 'Remoto', + description: 'Puede usar cualquier movimiento sin entrar en contacto con su objetivo.' }, - "liquidVoice": { - name: "Voz Fluida", - description: "Hace que todos sus movimientos que usan sonido pasen a ser de tipo Agua." + 'liquidVoice': { + name: 'Voz Fluida', + description: 'Hace que todos sus movimientos que usan sonido pasen a ser de tipo Agua.' }, - "triage": { - name: "Primer Auxilio", - description: "Da prioridad a los movimientos que restauran PS." + 'triage': { + name: 'Primer Auxilio', + description: 'Da prioridad a los movimientos que restauran PS.' }, - "galvanize": { - name: "Piel Eléctrica", - description: "Convierte los movimientos de tipo Normal en tipo Eléctrico y aumenta ligeramente su potencia." + 'galvanize': { + name: 'Piel Eléctrica', + description: 'Convierte los movimientos de tipo Normal en tipo Eléctrico y aumenta ligeramente su potencia.' }, - "surgeSurfer": { - name: "Cola Surf", - description: "Duplica su Velocidad si hay un campo eléctrico en el terreno de combate." + 'surgeSurfer': { + name: 'Cola Surf', + description: 'Duplica su Velocidad si hay un campo eléctrico en el terreno de combate.' }, - "schooling": { - name: "Banco", - description: "Forma bancos con sus congéneres cuando tiene muchos PS, lo cual le otorga más fuerza. Cuando le quedan pocos PS, el banco se dispersa." + 'schooling': { + name: 'Banco', + description: 'Forma bancos con sus congéneres cuando tiene muchos PS, lo cual le otorga más fuerza. Cuando le quedan pocos PS, el banco se dispersa.' }, - "disguise": { - name: "Disfraz", - description: "Puede eludir un ataque valiéndose de la tela que le cubre el cuerpo una vez por combate." + 'disguise': { + name: 'Disfraz', + description: 'Puede eludir un ataque valiéndose de la tela que le cubre el cuerpo una vez por combate.' }, - "battleBond": { - name: "Fuerte Afecto", - description: "Al derrotar a un Pokémon, los vínculos con su Entrenador se refuerzan y aumentan su Ataque, su Ataque Especial y su Velocidad." + 'battleBond': { + name: 'Fuerte Afecto', + description: 'Al derrotar a un Pokémon, los vínculos con su Entrenador se refuerzan y aumentan su Ataque, su Ataque Especial y su Velocidad.' }, - "powerConstruct": { - name: "Agrupamiento", - description: "Cuando sus PS se ven reducidos a la mitad, las células se reagrupan y adopta su Forma Completa." + 'powerConstruct': { + name: 'Agrupamiento', + description: 'Cuando sus PS se ven reducidos a la mitad, las células se reagrupan y adopta su Forma Completa.' }, - "corrosion": { - name: "Corrosión", - description: "Puede envenenar incluso a Pokémon de tipo Acero o Veneno." + 'corrosion': { + name: 'Corrosión', + description: 'Puede envenenar incluso a Pokémon de tipo Acero o Veneno.' }, - "comatose": { - name: "Letargo Perenne", - description: "No despierta jamás de su profundo letargo e incluso ataca dormido." + 'comatose': { + name: 'Letargo Perenne', + description: 'No despierta jamás de su profundo letargo e incluso ataca dormido.' }, - "queenlyMajesty": { - name: "Regia Presencia", - description: "Intimida al rival y le impide usar movimientos con prioridad contra él y sus aliados." + 'queenlyMajesty': { + name: 'Regia Presencia', + description: 'Intimida al rival y le impide usar movimientos con prioridad contra él y sus aliados.' }, - "innardsOut": { - name: "Revés", - description: "Al caer debilitado, inflige al atacante un daño equivalente a los PS que le quedaran antes de recibir el golpe de gracia." + 'innardsOut': { + name: 'Revés', + description: 'Al caer debilitado, inflige al atacante un daño equivalente a los PS que le quedaran antes de recibir el golpe de gracia.' }, - "dancer": { - name: "Pareja de Baile", - description: "Puede copiar inmediatamente cualquier movimiento de baile que haya usado otro Pokémon presente en el combate." + 'dancer': { + name: 'Pareja de Baile', + description: 'Puede copiar inmediatamente cualquier movimiento de baile que haya usado otro Pokémon presente en el combate.' }, - "battery": { - name: "Batería", - description: "Potencia los ataques especiales de los aliados." + 'battery': { + name: 'Batería', + description: 'Potencia los ataques especiales de los aliados.' }, - "fluffy": { - name: "Peluche", - description: "Reduce a la mitad el daño recibido por los movimientos de contacto, pero duplica el que le infligen los de tipo Fuego." + 'fluffy': { + name: 'Peluche', + description: 'Reduce a la mitad el daño recibido por los movimientos de contacto, pero duplica el que le infligen los de tipo Fuego.' }, - "dazzling": { - name: "Cuerpo Vívido", - description: "Desconcierta al rival y le impide usar movimientos con prioridad contra él y sus aliados." + 'dazzling': { + name: 'Cuerpo Vívido', + description: 'Desconcierta al rival y le impide usar movimientos con prioridad contra él y sus aliados.' }, - "soulHeart": { - name: "Coránima", - description: "Aumenta su Ataque Especial cada vez que un Pokémon cae debilitado." + 'soulHeart': { + name: 'Coránima', + description: 'Aumenta su Ataque Especial cada vez que un Pokémon cae debilitado.' }, - "tanglingHair": { - name: "Rizos Rebeldes", - description: "Reduce la Velocidad del Pokémon que lo ataque con un movimiento de contacto." + 'tanglingHair': { + name: 'Rizos Rebeldes', + description: 'Reduce la Velocidad del Pokémon que lo ataque con un movimiento de contacto.' }, - "receiver": { - name: "Receptor", - description: "Adquiere la habilidad de un aliado debilitado." + 'receiver': { + name: 'Receptor', + description: 'Adquiere la habilidad de un aliado debilitado.' }, - "powerOfAlchemy": { - name: "Reacción Química", - description: "Reacciona copiando la habilidad de un aliado debilitado." + 'powerOfAlchemy': { + name: 'Reacción Química', + description: 'Reacciona copiando la habilidad de un aliado debilitado.' }, - "beastBoost": { - name: "Ultraimpulso", - description: "Al derrotar a un Pokémon, aumenta su característica más fuerte." + 'beastBoost': { + name: 'Ultraimpulso', + description: 'Al derrotar a un Pokémon, aumenta su característica más fuerte.' }, - "rksSystem": { - name: "Sistema Alfa", - description: "Cambia su tipo según el disco que lleve instalado." + 'rksSystem': { + name: 'Sistema Alfa', + description: 'Cambia su tipo según el disco que lleve instalado.' }, - "electricSurge": { - name: "Electrogénesis", - description: "Crea un campo eléctrico al entrar en combate." + 'electricSurge': { + name: 'Electrogénesis', + description: 'Crea un campo eléctrico al entrar en combate.' }, - "psychicSurge": { - name: "Psicogénesis", - description: "Crea un campo psíquico al entrar en combate." + 'psychicSurge': { + name: 'Psicogénesis', + description: 'Crea un campo psíquico al entrar en combate.' }, - "mistySurge": { - name: "Nebulogénesis", - description: "Crea un campo de niebla al entrar en combate." + 'mistySurge': { + name: 'Nebulogénesis', + description: 'Crea un campo de niebla al entrar en combate.' }, - "grassySurge": { - name: "Herbogénesis", - description: "Crea un campo de hierba al entrar en combate." + 'grassySurge': { + name: 'Herbogénesis', + description: 'Crea un campo de hierba al entrar en combate.' }, - "fullMetalBody": { - name: "Guardia Metálica", - description: "Evita que se reduzcan sus características a causa de movimientos o habilidades de otros Pokémon." + 'fullMetalBody': { + name: 'Guardia Metálica', + description: 'Evita que se reduzcan sus características a causa de movimientos o habilidades de otros Pokémon.' }, - "shadowShield": { - name: "Guardia Espectro", - description: "Reduce el daño que sufre si sus PS están al máximo." + 'shadowShield': { + name: 'Guardia Espectro', + description: 'Reduce el daño que sufre si sus PS están al máximo.' }, - "prismArmor": { - name: "Armadura Prisma", - description: "Mitiga el daño que le infligen los movimientos supereficaces." + 'prismArmor': { + name: 'Armadura Prisma', + description: 'Mitiga el daño que le infligen los movimientos supereficaces.' }, - "neuroforce": { - name: "Fuerza Cerebral", - description: "Potencia los ataques supereficaces." + 'neuroforce': { + name: 'Fuerza Cerebral', + description: 'Potencia los ataques supereficaces.' }, - "intrepidSword": { - name: "Espada Indómita", - description: "Aumenta su Ataque al entrar en combate por primera vez." + 'intrepidSword': { + name: 'Espada Indómita', + description: 'Aumenta su Ataque al entrar en combate por primera vez.' }, - "dauntlessShield": { - name: "Escudo Recio", - description: "Aumenta su Defensa al entrar en combate por primera vez." + 'dauntlessShield': { + name: 'Escudo Recio', + description: 'Aumenta su Defensa al entrar en combate por primera vez.' }, - "libero": { - name: "Líbero", - description: "Al entrar en combate, cambia su tipo al del primer movimiento que va a usar." + 'libero': { + name: 'Líbero', + description: 'Al entrar en combate, cambia su tipo al del primer movimiento que va a usar.' }, - "ballFetch": { - name: "Recogebolas", - description: "Si no lleva equipado ningún objeto, recupera la Poké Ball del primer intento de captura fallido." + 'ballFetch': { + name: 'Recogebolas', + description: 'Si no lleva equipado ningún objeto, recupera la Poké Ball del primer intento de captura fallido.' }, - "cottonDown": { - name: "Pelusa", - description: "Al ser alcanzado por un ataque, suelta una pelusa de algodón que reduce la Velocidad de todos los demás Pokémon." + 'cottonDown': { + name: 'Pelusa', + description: 'Al ser alcanzado por un ataque, suelta una pelusa de algodón que reduce la Velocidad de todos los demás Pokémon.' }, - "propellerTail": { - name: "Hélice Caudal", - description: "Ignora los efectos de las habilidades o los movimientos que permiten a un Pokémon centrar la atención sobre sí." + 'propellerTail': { + name: 'Hélice Caudal', + description: 'Ignora los efectos de las habilidades o los movimientos que permiten a un Pokémon centrar la atención sobre sí.' }, - "mirrorArmor": { - name: "Coraza Reflejo", - description: "Refleja los efectos que reducen las características." + 'mirrorArmor': { + name: 'Coraza Reflejo', + description: 'Refleja los efectos que reducen las características.' }, - "gulpMissile": { - name: "Tragamisil", - description: "Tras usar Surf o Buceo, emerge con una presa en la boca. Al recibir daño, ataca escupiéndola." + 'gulpMissile': { + name: 'Tragamisil', + description: 'Tras usar Surf o Buceo, emerge con una presa en la boca. Al recibir daño, ataca escupiéndola.' }, - "stalwart": { - name: "Acérrimo", - description: "Ignora los efectos de las habilidades o los movimientos que permiten a un Pokémon centrar la atención sobre sí." + 'stalwart': { + name: 'Acérrimo', + description: 'Ignora los efectos de las habilidades o los movimientos que permiten a un Pokémon centrar la atención sobre sí.' }, - "steamEngine": { - name: "Combustible", - description: "Si lo alcanza un movimiento de tipo Fuego o Agua, aumenta muchísimo su Velocidad." + 'steamEngine': { + name: 'Combustible', + description: 'Si lo alcanza un movimiento de tipo Fuego o Agua, aumenta muchísimo su Velocidad.' }, - "punkRock": { - name: "Punk Rock", - description: "Potencia los movimientos que usan sonido y reduce a la mitad el daño que le infligen dichos movimientos." + 'punkRock': { + name: 'Punk Rock', + description: 'Potencia los movimientos que usan sonido y reduce a la mitad el daño que le infligen dichos movimientos.' }, - "sandSpit": { - name: "Expulsarena", - description: "Provoca una tormenta de arena al recibir un ataque." + 'sandSpit': { + name: 'Expulsarena', + description: 'Provoca una tormenta de arena al recibir un ataque.' }, - "iceScales": { - name: "Escama de Hielo", - description: "Las gélidas escamas que protegen su cuerpo reducen a la mitad el daño que le infligen los ataques especiales." + 'iceScales': { + name: 'Escama de Hielo', + description: 'Las gélidas escamas que protegen su cuerpo reducen a la mitad el daño que le infligen los ataques especiales.' }, - "ripen": { - name: "Maduración", - description: "Hace madurar las bayas, por lo que duplica sus efectos." + 'ripen': { + name: 'Maduración', + description: 'Hace madurar las bayas, por lo que duplica sus efectos.' }, - "iceFace": { - name: "Cara de Hielo", - description: "Absorbe el daño de un ataque físico con el hielo de la cabeza, tras lo cual cambia de forma. El hielo se regenerará la próxima vez que nieve." + 'iceFace': { + name: 'Cara de Hielo', + description: 'Absorbe el daño de un ataque físico con el hielo de la cabeza, tras lo cual cambia de forma. El hielo se regenerará la próxima vez que nieve.' }, - "powerSpot": { - name: "Fuente Energía", - description: "Potencia los movimientos de los Pokémon adyacentes." + 'powerSpot': { + name: 'Fuente Energía', + description: 'Potencia los movimientos de los Pokémon adyacentes.' }, - "mimicry": { - name: "Mimetismo", - description: "Cambia su tipo según el campo que haya en el terreno de combate." + 'mimicry': { + name: 'Mimetismo', + description: 'Cambia su tipo según el campo que haya en el terreno de combate.' }, - "screenCleaner": { - name: "Antibarrera", - description: "Anula los efectos de Pantalla de Luz, Reflejo y Velo Aurora tanto de rivales como de aliados al entrar en combate." + 'screenCleaner': { + name: 'Antibarrera', + description: 'Anula los efectos de Pantalla de Luz, Reflejo y Velo Aurora tanto de rivales como de aliados al entrar en combate.' }, - "steelySpirit": { - name: "Alma Acerada", - description: "Potencia los movimientos de tipo Acero del Pokémon y sus aliados." + 'steelySpirit': { + name: 'Alma Acerada', + description: 'Potencia los movimientos de tipo Acero del Pokémon y sus aliados.' }, - "perishBody": { - name: "Cuerpo Mortal", - description: "Si lo alcanza un movimiento de contacto, se debilitará al cabo de 3 turnos, así como el atacante, a menos que abandonen el terreno de combate." + 'perishBody': { + name: 'Cuerpo Mortal', + description: 'Si lo alcanza un movimiento de contacto, se debilitará al cabo de 3 turnos, así como el atacante, a menos que abandonen el terreno de combate.' }, - "wanderingSpirit": { - name: "Alma Errante", - description: "Si lo alcanza un movimiento de contacto, intercambia su habilidad con la del atacante." + 'wanderingSpirit': { + name: 'Alma Errante', + description: 'Si lo alcanza un movimiento de contacto, intercambia su habilidad con la del atacante.' }, - "gorillaTactics": { - name: "Monotema", - description: "Aumenta su Ataque, pero solo puede usar el primer movimiento escogido." + 'gorillaTactics': { + name: 'Monotema', + description: 'Aumenta su Ataque, pero solo puede usar el primer movimiento escogido.' }, - "neutralizingGas": { - name: "Gas Reactivo", - description: "Anula los efectos de las habilidades de los demás Pokémon presentes mientras esté en el terreno de combate." + 'neutralizingGas': { + name: 'Gas Reactivo', + description: 'Anula los efectos de las habilidades de los demás Pokémon presentes mientras esté en el terreno de combate.' }, - "pastelVeil": { - name: "Velo Pastel", - description: "Se protege a sí mismo y a sus aliados del envenenamiento." + 'pastelVeil': { + name: 'Velo Pastel', + description: 'Se protege a sí mismo y a sus aliados del envenenamiento.' }, - "hungerSwitch": { - name: "Mutapetito", - description: "Alterna entre su Forma Saciada y Forma Voraz al final de cada turno." + 'hungerSwitch': { + name: 'Mutapetito', + description: 'Alterna entre su Forma Saciada y Forma Voraz al final de cada turno.' }, - "quickDraw": { - name: "Mano Rápida", - description: "A veces, puede atacar el primero." + 'quickDraw': { + name: 'Mano Rápida', + description: 'A veces, puede atacar el primero.' }, - "unseenFist": { - name: "Puño Invisible", - description: "Si usa un movimiento de contacto, puede infligir daño al objetivo aunque este se proteja." + 'unseenFist': { + name: 'Puño Invisible', + description: 'Si usa un movimiento de contacto, puede infligir daño al objetivo aunque este se proteja.' }, - "curiousMedicine": { - name: "Medicina Extraña", - description: "Al entrar en combate, rezuma una substancia medicinal por la caracola que revierte los cambios en las características de los aliados." + 'curiousMedicine': { + name: 'Medicina Extraña', + description: 'Al entrar en combate, rezuma una substancia medicinal por la caracola que revierte los cambios en las características de los aliados.' }, - "transistor": { - name: "Transistor", - description: "Potencia los movimientos de tipo Eléctrico." + 'transistor': { + name: 'Transistor', + description: 'Potencia los movimientos de tipo Eléctrico.' }, - "dragonsMaw": { - name: "Mandíbula Dragón", - description: "Potencia los movimientos de tipo Dragón." + 'dragonsMaw': { + name: 'Mandíbula Dragón', + description: 'Potencia los movimientos de tipo Dragón.' }, - "chillingNeigh": { - name: "Relincho Blanco", - description: "Al derrotar a un objetivo, emite un relincho gélido y aumenta su Ataque." + 'chillingNeigh': { + name: 'Relincho Blanco', + description: 'Al derrotar a un objetivo, emite un relincho gélido y aumenta su Ataque.' }, - "grimNeigh": { - name: "Relincho Negro", - description: "Al derrotar a un objetivo, emite un relincho aterrador y aumenta su Ataque Especial." + 'grimNeigh': { + name: 'Relincho Negro', + description: 'Al derrotar a un objetivo, emite un relincho aterrador y aumenta su Ataque Especial.' }, - "asOneGlastrier": { - name: "Unidad Ecuestre", - description: "El Pokémon tiene dos habilidades: Relincho Negro de Spectrier y Nerviosismo de Calyrex." + 'asOneGlastrier': { + name: 'Unidad Ecuestre', + description: 'El Pokémon tiene dos habilidades: Relincho Negro de Spectrier y Nerviosismo de Calyrex.' }, - "asOneSpectrier": { - name: "Unidad Ecuestre", - description: "El Pokémon tiene dos habilidades: Relincho Negro de Spectrier y Nerviosismo de Calyrex." + 'asOneSpectrier': { + name: 'Unidad Ecuestre', + description: 'El Pokémon tiene dos habilidades: Relincho Negro de Spectrier y Nerviosismo de Calyrex.' }, - "lingeringAroma": { - name: "Olor Persistente", - description: "Contagia la habilidad Olor Persistente al Pokémon que lo ataque con un movimiento de contacto." + 'lingeringAroma': { + name: 'Olor Persistente', + description: 'Contagia la habilidad Olor Persistente al Pokémon que lo ataque con un movimiento de contacto.' }, - "seedSower": { - name: "Disemillar", - description: "Crea un campo de hierba al recibir un ataque." + 'seedSower': { + name: 'Disemillar', + description: 'Crea un campo de hierba al recibir un ataque.' }, - "thermalExchange": { - name: "Termoconversión", - description: "Evita las quemaduras y, si lo alcanza un movimiento de tipo Fuego, aumenta su Ataque." + 'thermalExchange': { + name: 'Termoconversión', + description: 'Evita las quemaduras y, si lo alcanza un movimiento de tipo Fuego, aumenta su Ataque.' }, - "angerShell": { - name: "Coraza Ira", - description: "Cuando un ataque reduce sus PS a la mitad, un arrebato de cólera reduce su Defensa y su Defensa Especial, pero aumenta su Ataque, su Ataque Especial y su Velocidad." + 'angerShell': { + name: 'Coraza Ira', + description: 'Cuando un ataque reduce sus PS a la mitad, un arrebato de cólera reduce su Defensa y su Defensa Especial, pero aumenta su Ataque, su Ataque Especial y su Velocidad.' }, - "purifyingSalt": { - name: "Sal Purificadora", - description: "Su sal pura lo protege de los problemas de estado y reduce a la mitad el daño que recibe de ataques de tipo Fantasma." + 'purifyingSalt': { + name: 'Sal Purificadora', + description: 'Su sal pura lo protege de los problemas de estado y reduce a la mitad el daño que recibe de ataques de tipo Fantasma.' }, - "wellBakedBody": { - name: "Cuerpo Horneado", - description: "Si lo alcanza un movimiento de tipo Fuego, aumenta mucho su Defensa en vez de sufrir daño." + 'wellBakedBody': { + name: 'Cuerpo Horneado', + description: 'Si lo alcanza un movimiento de tipo Fuego, aumenta mucho su Defensa en vez de sufrir daño.' }, - "windRider": { - name: "Surcavientos", - description: "Si sopla un Viento Afín o lo alcanza un movimiento que usa viento, aumenta su Ataque. Tampoco recibe daño de este último." + 'windRider': { + name: 'Surcavientos', + description: 'Si sopla un Viento Afín o lo alcanza un movimiento que usa viento, aumenta su Ataque. Tampoco recibe daño de este último.' }, - "guardDog": { - name: "Perro Guardián", - description: "Aumenta su Ataque si sufre los efectos de Intimidación. También anula movimientos y objetos que fuercen el cambio de Pokémon." + 'guardDog': { + name: 'Perro Guardián', + description: 'Aumenta su Ataque si sufre los efectos de Intimidación. También anula movimientos y objetos que fuercen el cambio de Pokémon.' }, - "rockyPayload": { - name: "Transportarrocas", - description: "Potencia los movimientos de tipo Roca." + 'rockyPayload': { + name: 'Transportarrocas', + description: 'Potencia los movimientos de tipo Roca.' }, - "windPower": { - name: "Energía Eólica", - description: "Su cuerpo se carga de electricidad si lo alcanza un movimiento que usa viento, lo que potencia su siguiente movimiento de tipo Eléctrico." + 'windPower': { + name: 'Energía Eólica', + description: 'Su cuerpo se carga de electricidad si lo alcanza un movimiento que usa viento, lo que potencia su siguiente movimiento de tipo Eléctrico.' }, - "zeroToHero": { - name: "Cambio Heroico", - description: "Adopta la Forma Heroica cuando se retira del combate." + 'zeroToHero': { + name: 'Cambio Heroico', + description: 'Adopta la Forma Heroica cuando se retira del combate.' }, - "commander": { - name: "Comandar", - description: "Si al entrar en combate coincide con un Dondozo aliado, se cuela en el interior de su boca para tomar el control." + 'commander': { + name: 'Comandar', + description: 'Si al entrar en combate coincide con un Dondozo aliado, se cuela en el interior de su boca para tomar el control.' }, - "electromorphosis": { - name: "Dinamo", - description: "Su cuerpo se carga de electricidad al recibir daño, lo que potencia su siguiente movimiento de tipo Eléctrico." + 'electromorphosis': { + name: 'Dinamo', + description: 'Su cuerpo se carga de electricidad al recibir daño, lo que potencia su siguiente movimiento de tipo Eléctrico.' }, - "protosynthesis": { - name: "Paleosíntesis", - description: "Si hace sol o lleva un tanque de Energía Potenciadora, aumenta su característica más alta." + 'protosynthesis': { + name: 'Paleosíntesis', + description: 'Si hace sol o lleva un tanque de Energía Potenciadora, aumenta su característica más alta.' }, - "quarkDrive": { - name: "Carga Cuark", - description: "Si hay un campo eléctrico en el terreno de combate o lleva un tanque de Energía Potenciadora, aumenta su característica más alta." + 'quarkDrive': { + name: 'Carga Cuark', + description: 'Si hay un campo eléctrico en el terreno de combate o lleva un tanque de Energía Potenciadora, aumenta su característica más alta.' }, - "goodAsGold": { - name: "Cuerpo Áureo", - description: "Su robusto cuerpo de oro inoxidable lo hace inmune frente a movimientos de estado de otros Pokémon." + 'goodAsGold': { + name: 'Cuerpo Áureo', + description: 'Su robusto cuerpo de oro inoxidable lo hace inmune frente a movimientos de estado de otros Pokémon.' }, - "vesselOfRuin": { - name: "Caldero Debacle", - description: "Reduce el Ataque Especial de todos los demás Pokémon con el poder de su caldero maldito." + 'vesselOfRuin': { + name: 'Caldero Debacle', + description: 'Reduce el Ataque Especial de todos los demás Pokémon con el poder de su caldero maldito.' }, - "swordOfRuin": { - name: "Espada Debacle", - description: "Reduce la Defensa de todos los demás Pokémon con el poder de su espada maldita." + 'swordOfRuin': { + name: 'Espada Debacle', + description: 'Reduce la Defensa de todos los demás Pokémon con el poder de su espada maldita.' }, - "tabletsOfRuin": { - name: "Tablilla Debacle", - description: "Reduce el Ataque de todos los demás Pokémon con el poder de sus tablillas malditas." + 'tabletsOfRuin': { + name: 'Tablilla Debacle', + description: 'Reduce el Ataque de todos los demás Pokémon con el poder de sus tablillas malditas.' }, - "beadsOfRuin": { - name: "Abalorio Debacle", - description: "Reduce la Defensa Especial de todos los demás Pokémon con el poder de sus abalorios malditos." + 'beadsOfRuin': { + name: 'Abalorio Debacle', + description: 'Reduce la Defensa Especial de todos los demás Pokémon con el poder de sus abalorios malditos.' }, - "orichalcumPulse": { - name: "Latido Oricalco", - description: "El tiempo pasa a ser soleado cuando entra en combate. Si hace mucho sol, su Ataque aumenta gracias a su pulso primigenio." + 'orichalcumPulse': { + name: 'Latido Oricalco', + description: 'El tiempo pasa a ser soleado cuando entra en combate. Si hace mucho sol, su Ataque aumenta gracias a su pulso primigenio.' }, - "hadronEngine": { - name: "Motor Hadrónico", - description: "Crea un campo eléctrico al entrar en combate. Si hay un campo eléctrico, su Ataque Especial aumenta gracias a su motor futurista." + 'hadronEngine': { + name: 'Motor Hadrónico', + description: 'Crea un campo eléctrico al entrar en combate. Si hay un campo eléctrico, su Ataque Especial aumenta gracias a su motor futurista.' }, - "opportunist": { - name: "Oportunista", - description: "Copia las mejoras en las características del rival, aprovechándose de la situación." + 'opportunist': { + name: 'Oportunista', + description: 'Copia las mejoras en las características del rival, aprovechándose de la situación.' }, - "cudChew": { - name: "Rumia", - description: "Cuando ingiere una baya, la regurgita al final del siguiente turno y se la come por segunda vez." + 'cudChew': { + name: 'Rumia', + description: 'Cuando ingiere una baya, la regurgita al final del siguiente turno y se la come por segunda vez.' }, - "sharpness": { - name: "Cortante", - description: "Aumenta la potencia de los movimientos cortantes." + 'sharpness': { + name: 'Cortante', + description: 'Aumenta la potencia de los movimientos cortantes.' }, - "supremeOverlord": { - name: "General Supremo", - description: "Al entrar en combate, su Ataque y su Ataque Especial aumentan un poco por cada miembro del equipo que haya sido derrotado hasta el momento." + 'supremeOverlord': { + name: 'General Supremo', + description: 'Al entrar en combate, su Ataque y su Ataque Especial aumentan un poco por cada miembro del equipo que haya sido derrotado hasta el momento.' }, - "costar": { - name: "Unísono", - description: "Al entrar en combate, copia los cambios en las características de su aliado." + 'costar': { + name: 'Unísono', + description: 'Al entrar en combate, copia los cambios en las características de su aliado.' }, - "toxicDebris": { - name: "Capa Tóxica", - description: "Al recibir daño de un ataque físico, lanza una trampa de púas tóxicas a los pies del rival." + 'toxicDebris': { + name: 'Capa Tóxica', + description: 'Al recibir daño de un ataque físico, lanza una trampa de púas tóxicas a los pies del rival.' }, - "armorTail": { - name: "Cola Armadura", - description: "La extraña cola que le envuelve la cabeza impide al rival usar movimientos con prioridad contra él y sus aliados." + 'armorTail': { + name: 'Cola Armadura', + description: 'La extraña cola que le envuelve la cabeza impide al rival usar movimientos con prioridad contra él y sus aliados.' }, - "earthEater": { - name: "Geofagia", - description: "Si lo alcanza un movimiento de tipo Tierra, recupera PS en vez de sufrir daño." + 'earthEater': { + name: 'Geofagia', + description: 'Si lo alcanza un movimiento de tipo Tierra, recupera PS en vez de sufrir daño.' }, - "myceliumMight": { - name: "Poder Fúngico", - description: "El Pokémon siempre actúa con lentitud cuando usa movimientos de estado, pero estos no se ven afectados por la habilidad del objetivo." + 'myceliumMight': { + name: 'Poder Fúngico', + description: 'El Pokémon siempre actúa con lentitud cuando usa movimientos de estado, pero estos no se ven afectados por la habilidad del objetivo.' }, - "mindsEye": { - name: "Ojo Mental", - description: "Alcanza a Pokémon de tipo Fantasma con movimientos de tipo Normal o Lucha. Su Precisión no se puede reducir e ignora los cambios en la Evasión del objetivo." + 'mindsEye': { + name: 'Ojo Mental', + description: 'Alcanza a Pokémon de tipo Fantasma con movimientos de tipo Normal o Lucha. Su Precisión no se puede reducir e ignora los cambios en la Evasión del objetivo.' }, - "supersweetSyrup": { - name: "Néctar Dulce", - description: "Al entrar en combate por primera vez, esparce un aroma dulzón a néctar que reduce la Evasión del rival." + 'supersweetSyrup': { + name: 'Néctar Dulce', + description: 'Al entrar en combate por primera vez, esparce un aroma dulzón a néctar que reduce la Evasión del rival.' }, - "hospitality": { - name: "Hospitalidad", - description: "Al entrar en combate, restaura algunos PS de su aliado como muestra de hospitalidad." + 'hospitality': { + name: 'Hospitalidad', + description: 'Al entrar en combate, restaura algunos PS de su aliado como muestra de hospitalidad.' }, - "toxicChain": { - name: "Cadena Tóxica", - description: "Gracias al poder de su cadena impregnada de toxinas, puede envenenar gravemente al Pokémon al que ataque." + 'toxicChain': { + name: 'Cadena Tóxica', + description: 'Gracias al poder de su cadena impregnada de toxinas, puede envenenar gravemente al Pokémon al que ataque.' }, - "embodyAspectTeal": { - name: "Evocarrecuerdos", - description: "Al evocar viejos recuerdos, el Pokémon hace brillar la Máscara Cimiento y aumenta su Defensa." + 'embodyAspectTeal': { + name: 'Evocarrecuerdos', + description: 'Al evocar viejos recuerdos, el Pokémon hace brillar la Máscara Cimiento y aumenta su Defensa.' }, - "embodyAspectWellspring": { - name: "Evocarrecuerdos", - description: "Al evocar viejos recuerdos, el Pokémon hace brillar la Máscara Cimiento y aumenta su Defensa." + 'embodyAspectWellspring': { + name: 'Evocarrecuerdos', + description: 'Al evocar viejos recuerdos, el Pokémon hace brillar la Máscara Cimiento y aumenta su Defensa.' }, - "embodyAspectHearthflame": { - name: "Evocarrecuerdos", - description: "Al evocar viejos recuerdos, el Pokémon hace brillar la Máscara Cimiento y aumenta su Defensa." + 'embodyAspectHearthflame': { + name: 'Evocarrecuerdos', + description: 'Al evocar viejos recuerdos, el Pokémon hace brillar la Máscara Cimiento y aumenta su Defensa.' }, - "embodyAspectCornerstone": { - name: "Evocarrecuerdos", - description: "Al evocar viejos recuerdos, el Pokémon hace brillar la Máscara Cimiento y aumenta su Defensa." + 'embodyAspectCornerstone': { + name: 'Evocarrecuerdos', + description: 'Al evocar viejos recuerdos, el Pokémon hace brillar la Máscara Cimiento y aumenta su Defensa.' }, - "teraShift": { - name: "Teracambio", - description: "Al entrar en combate, adopta la Forma Teracristal tras absorber la energía de su alrededor." + 'teraShift': { + name: 'Teracambio', + description: 'Al entrar en combate, adopta la Forma Teracristal tras absorber la energía de su alrededor.' }, - "teraShell": { - name: "Teracaparazón", - description: "Su caparazón encierra energía de todos los tipos. Gracias a ello, si sus PS están al máximo, el movimiento que lo alcance no será muy eficaz." + 'teraShell': { + name: 'Teracaparazón', + description: 'Su caparazón encierra energía de todos los tipos. Gracias a ello, si sus PS están al máximo, el movimiento que lo alcance no será muy eficaz.' }, - "teraformZero": { - name: "Teraformación 0", - description: "Cuando Terapagos adopta la Forma Astral, anula todos los efectos del tiempo atmosférico y de los campos que haya en el terreno gracias a su poder oculto." + 'teraformZero': { + name: 'Teraformación 0', + description: 'Cuando Terapagos adopta la Forma Astral, anula todos los efectos del tiempo atmosférico y de los campos que haya en el terreno gracias a su poder oculto.' }, - "poisonPuppeteer": { - name: "Títere Tóxico", - description: "Los rivales que Pecharunt envenene con sus movimientos también sufrirán confusión." + 'poisonPuppeteer': { + name: 'Títere Tóxico', + description: 'Los rivales que Pecharunt envenene con sus movimientos también sufrirán confusión.' } } as const; diff --git a/src/locales/es/battle-message-ui-handler.ts b/src/locales/es/battle-message-ui-handler.ts index 346f856872c..8cd57a56e49 100644 --- a/src/locales/es/battle-message-ui-handler.ts +++ b/src/locales/es/battle-message-ui-handler.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battleMessageUiHandler: SimpleTranslationEntries = { - "ivBest": "Best", - "ivFantastic": "Fantastic", - "ivVeryGood": "Very Good", - "ivPrettyGood": "Pretty Good", - "ivDecent": "Decent", - "ivNoGood": "No Good", -} as const; \ No newline at end of file + 'ivBest': 'Best', + 'ivFantastic': 'Fantastic', + 'ivVeryGood': 'Very Good', + 'ivPrettyGood': 'Pretty Good', + 'ivDecent': 'Decent', + 'ivNoGood': 'No Good', +} as const; diff --git a/src/locales/es/battle.ts b/src/locales/es/battle.ts index 5715c58ece0..ea1c457a52a 100644 --- a/src/locales/es/battle.ts +++ b/src/locales/es/battle.ts @@ -1,56 +1,56 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battle: SimpleTranslationEntries = { - "bossAppeared": "¡{{bossName}} te corta el paso!", - "trainerAppeared": "¡{{trainerName}}\nte desafía!", - "trainerAppearedDouble": "{{trainerName}}\nwould like to battle!", - "singleWildAppeared": "¡Un {{pokemonName}} salvaje te corta el paso!", - "multiWildAppeared": "¡Un {{pokemonName1}} y un {{pokemonName2}} salvajes\nte cortan el paso!", - "playerComeBack": "¡{{pokemonName}}, ven aquí!", - "trainerComeBack": "¡{{trainerName}} retira a {{pokemonName}} del combate!", - "playerGo": "¡Adelante, {{pokemonName}}!", - "trainerGo": "¡{{trainerName}} saca a {{pokemonName}}!", - "switchQuestion": "¿Quieres cambiar a\n{{pokemonName}}?", - "trainerDefeated": "¡Has derrotado a\n{{trainerName}}!", - "pokemonCaught": "¡{{pokemonName}} atrapado!", - "pokemon": "Pokémon", - "sendOutPokemon": "¡Adelante, {{pokemonName}}!", - "hitResultCriticalHit": "!Un golpe crítico!", - "hitResultSuperEffective": "!Es supereficaz!", - "hitResultNotVeryEffective": "No es muy eficaz…", - "hitResultNoEffect": "No afecta a {{pokemonName}}!", - "hitResultOneHitKO": "!KO en 1 golpe!", - "attackFailed": "¡Pero ha fallado!", - "attackHitsCount": `N.º de golpes: {{count}}.`, - "expGain": "{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.", - "levelUp": "¡{{pokemonName}} ha subido al \nNv. {{level}}!", - "learnMove": "¡{{pokemonName}} ha aprendido {{moveName}}!", - "learnMovePrompt": "{{pokemonName}} quiere aprender\n{{moveName}}.", - "learnMoveLimitReached": "Pero, {{pokemonName}} ya conoce\ncuatro movimientos.", - "learnMoveReplaceQuestion": "¿Quieres sustituir uno de sus movimientos por {{moveName}}?", - "learnMoveStopTeaching": "¿Prefieres que no aprenda\n{{moveName}}?", - "learnMoveNotLearned": "{{pokemonName}} no ha aprendido {{moveName}}.", - "learnMoveForgetQuestion": "¿Qué movimiento quieres que olvide?", - "learnMoveForgetSuccess": "{{pokemonName}} ha olvidado cómo utilizar {{moveName}}.", - "countdownPoof": "@d{32}1, @d{15}2, @d{15}y@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}¡Puf!", - "learnMoveAnd": "Y…", - "levelCapUp": "¡Se ha incrementado el\nnivel máximo a {{levelCap}}!", - "moveNotImplemented": "{{moveName}} aún no está implementado y no se puede seleccionar.", - "moveNoPP": "There's no PP left for\nthis move!", - "moveDisabled": "!No puede usar {{moveName}} porque ha sido anulado!", - "noPokeballForce": "Una fuerza misteriosa\nte impide usar Poké Balls.", - "noPokeballTrainer": "¡No puedes atrapar a los\nPokémon de los demás!", - "noPokeballMulti": "¡No se pueden lanzar Poké Balls\ncuando hay más de un Pokémon!", - "noPokeballStrong": "¡Este Pokémon es demasiado fuerte para ser capturado!\nNecesitas bajarle los PS primero!", - "noEscapeForce": "Una fuerza misteriosa\nte impide huir.", - "noEscapeTrainer": "¡No puedes huir de los\ncombates contra Entrenadores!", - "noEscapePokemon": "¡El movimiento {{moveName}} de {{pokemonName}} impide la huida!", - "runAwaySuccess": "¡Escapas sin problemas!", - "runAwayCannotEscape": "¡No has podido escapar!", - "escapeVerbSwitch": "cambiar", - "escapeVerbFlee": "huir", - "notDisabled": "¡El movimiento {{moveName}} de {{pokemonName}}\nya no está anulado!", - "skipItemQuestion": "¿Estás seguro de que no quieres coger un objeto?", - "eggHatching": "¿Y esto?", - "ivScannerUseQuestion": "¿Quieres usar el Escáner de IVs en {{pokemonName}}?" -} as const; \ No newline at end of file + 'bossAppeared': '¡{{bossName}} te corta el paso!', + 'trainerAppeared': '¡{{trainerName}}\nte desafía!', + 'trainerAppearedDouble': '{{trainerName}}\nwould like to battle!', + 'singleWildAppeared': '¡Un {{pokemonName}} salvaje te corta el paso!', + 'multiWildAppeared': '¡Un {{pokemonName1}} y un {{pokemonName2}} salvajes\nte cortan el paso!', + 'playerComeBack': '¡{{pokemonName}}, ven aquí!', + 'trainerComeBack': '¡{{trainerName}} retira a {{pokemonName}} del combate!', + 'playerGo': '¡Adelante, {{pokemonName}}!', + 'trainerGo': '¡{{trainerName}} saca a {{pokemonName}}!', + 'switchQuestion': '¿Quieres cambiar a\n{{pokemonName}}?', + 'trainerDefeated': '¡Has derrotado a\n{{trainerName}}!', + 'pokemonCaught': '¡{{pokemonName}} atrapado!', + 'pokemon': 'Pokémon', + 'sendOutPokemon': '¡Adelante, {{pokemonName}}!', + 'hitResultCriticalHit': '!Un golpe crítico!', + 'hitResultSuperEffective': '!Es supereficaz!', + 'hitResultNotVeryEffective': 'No es muy eficaz…', + 'hitResultNoEffect': 'No afecta a {{pokemonName}}!', + 'hitResultOneHitKO': '!KO en 1 golpe!', + 'attackFailed': '¡Pero ha fallado!', + 'attackHitsCount': 'N.º de golpes: {{count}}.', + 'expGain': '{{pokemonName}} ha ganado\n{{exp}} puntos de experiencia.', + 'levelUp': '¡{{pokemonName}} ha subido al \nNv. {{level}}!', + 'learnMove': '¡{{pokemonName}} ha aprendido {{moveName}}!', + 'learnMovePrompt': '{{pokemonName}} quiere aprender\n{{moveName}}.', + 'learnMoveLimitReached': 'Pero, {{pokemonName}} ya conoce\ncuatro movimientos.', + 'learnMoveReplaceQuestion': '¿Quieres sustituir uno de sus movimientos por {{moveName}}?', + 'learnMoveStopTeaching': '¿Prefieres que no aprenda\n{{moveName}}?', + 'learnMoveNotLearned': '{{pokemonName}} no ha aprendido {{moveName}}.', + 'learnMoveForgetQuestion': '¿Qué movimiento quieres que olvide?', + 'learnMoveForgetSuccess': '{{pokemonName}} ha olvidado cómo utilizar {{moveName}}.', + 'countdownPoof': '@d{32}1, @d{15}2, @d{15}y@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}¡Puf!', + 'learnMoveAnd': 'Y…', + 'levelCapUp': '¡Se ha incrementado el\nnivel máximo a {{levelCap}}!', + 'moveNotImplemented': '{{moveName}} aún no está implementado y no se puede seleccionar.', + 'moveNoPP': 'There\'s no PP left for\nthis move!', + 'moveDisabled': '!No puede usar {{moveName}} porque ha sido anulado!', + 'noPokeballForce': 'Una fuerza misteriosa\nte impide usar Poké Balls.', + 'noPokeballTrainer': '¡No puedes atrapar a los\nPokémon de los demás!', + 'noPokeballMulti': '¡No se pueden lanzar Poké Balls\ncuando hay más de un Pokémon!', + 'noPokeballStrong': '¡Este Pokémon es demasiado fuerte para ser capturado!\nNecesitas bajarle los PS primero!', + 'noEscapeForce': 'Una fuerza misteriosa\nte impide huir.', + 'noEscapeTrainer': '¡No puedes huir de los\ncombates contra Entrenadores!', + 'noEscapePokemon': '¡El movimiento {{moveName}} de {{pokemonName}} impide la huida!', + 'runAwaySuccess': '¡Escapas sin problemas!', + 'runAwayCannotEscape': '¡No has podido escapar!', + 'escapeVerbSwitch': 'cambiar', + 'escapeVerbFlee': 'huir', + 'notDisabled': '¡El movimiento {{moveName}} de {{pokemonName}}\nya no está anulado!', + 'skipItemQuestion': '¿Estás seguro de que no quieres coger un objeto?', + 'eggHatching': '¿Y esto?', + 'ivScannerUseQuestion': '¿Quieres usar el Escáner de IVs en {{pokemonName}}?' +} as const; diff --git a/src/locales/es/berry.ts b/src/locales/es/berry.ts index 8c8bc5ee280..2edefd6b96e 100644 --- a/src/locales/es/berry.ts +++ b/src/locales/es/berry.ts @@ -1,48 +1,48 @@ -import { BerryTranslationEntries } from "#app/plugins/i18n"; +import { BerryTranslationEntries } from '#app/plugins/i18n'; export const berry: BerryTranslationEntries = { - "SITRUS": { - name: "Sitrus Berry", - effect: "Restores 25% HP if HP is below 50%", + 'SITRUS': { + name: 'Sitrus Berry', + effect: 'Restores 25% HP if HP is below 50%', }, - "LUM": { - name: "Lum Berry", - effect: "Cures any non-volatile status condition and confusion", + 'LUM': { + name: 'Lum Berry', + effect: 'Cures any non-volatile status condition and confusion', }, - "ENIGMA": { - name: "Enigma Berry", - effect: "Restores 25% HP if hit by a super effective move", + 'ENIGMA': { + name: 'Enigma Berry', + effect: 'Restores 25% HP if hit by a super effective move', }, - "LIECHI": { - name: "Liechi Berry", - effect: "Raises Attack if HP is below 25%", + 'LIECHI': { + name: 'Liechi Berry', + effect: 'Raises Attack if HP is below 25%', }, - "GANLON": { - name: "Ganlon Berry", - effect: "Raises Defense if HP is below 25%", + 'GANLON': { + name: 'Ganlon Berry', + effect: 'Raises Defense if HP is below 25%', }, - "PETAYA": { - name: "Petaya Berry", - effect: "Raises Sp. Atk if HP is below 25%", + 'PETAYA': { + name: 'Petaya Berry', + effect: 'Raises Sp. Atk if HP is below 25%', }, - "APICOT": { - name: "Apicot Berry", - effect: "Raises Sp. Def if HP is below 25%", + 'APICOT': { + name: 'Apicot Berry', + effect: 'Raises Sp. Def if HP is below 25%', }, - "SALAC": { - name: "Salac Berry", - effect: "Raises Speed if HP is below 25%", + 'SALAC': { + name: 'Salac Berry', + effect: 'Raises Speed if HP is below 25%', }, - "LANSAT": { - name: "Lansat Berry", - effect: "Raises critical hit ratio if HP is below 25%", + 'LANSAT': { + name: 'Lansat Berry', + effect: 'Raises critical hit ratio if HP is below 25%', }, - "STARF": { - name: "Starf Berry", - effect: "Sharply raises a random stat if HP is below 25%", + 'STARF': { + name: 'Starf Berry', + effect: 'Sharply raises a random stat if HP is below 25%', }, - "LEPPA": { - name: "Leppa Berry", - effect: "Restores 10 PP to a move if its PP reaches 0", + 'LEPPA': { + name: 'Leppa Berry', + effect: 'Restores 10 PP to a move if its PP reaches 0', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/es/command-ui-handler.ts b/src/locales/es/command-ui-handler.ts index 66a892f8fd3..9548c37867c 100644 --- a/src/locales/es/command-ui-handler.ts +++ b/src/locales/es/command-ui-handler.ts @@ -1,9 +1,9 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const commandUiHandler: SimpleTranslationEntries = { - "fight": "Luchar", - "ball": "Balls", - "pokemon": "Pokémon", - "run": "Huir", - "actionMessage": "¿Qué debería\nhacer {{pokemonName}}?", -} as const; \ No newline at end of file + 'fight': 'Luchar', + 'ball': 'Balls', + 'pokemon': 'Pokémon', + 'run': 'Huir', + 'actionMessage': '¿Qué debería\nhacer {{pokemonName}}?', +} as const; diff --git a/src/locales/es/config.ts b/src/locales/es/config.ts index 2d0a8a536b2..8b3ec3bfc37 100644 --- a/src/locales/es/config.ts +++ b/src/locales/es/config.ts @@ -1,51 +1,51 @@ -import { ability } from "./ability"; -import { abilityTriggers } from "./ability-trigger"; -import { battle } from "./battle"; -import { commandUiHandler } from "./command-ui-handler"; -import { egg } from "./egg"; -import { fightUiHandler } from "./fight-ui-handler"; -import { growth } from "./growth"; -import { menu } from "./menu"; -import { menuUiHandler } from "./menu-ui-handler"; -import { modifierType } from "./modifier-type"; -import { move } from "./move"; -import { nature } from "./nature"; -import { pokeball } from "./pokeball"; -import { pokemon } from "./pokemon"; -import { pokemonInfo } from "./pokemon-info"; -import { splashMessages } from "./splash-messages"; -import { starterSelectUiHandler } from "./starter-select-ui-handler"; -import { titles, trainerClasses, trainerNames } from "./trainers"; -import { tutorial } from "./tutorial"; -import { weather } from "./weather"; -import { battleMessageUiHandler } from "./battle-message-ui-handler"; -import { berry } from "./berry"; -import { voucher } from "./voucher"; +import { ability } from './ability'; +import { abilityTriggers } from './ability-trigger'; +import { battle } from './battle'; +import { commandUiHandler } from './command-ui-handler'; +import { egg } from './egg'; +import { fightUiHandler } from './fight-ui-handler'; +import { growth } from './growth'; +import { menu } from './menu'; +import { menuUiHandler } from './menu-ui-handler'; +import { modifierType } from './modifier-type'; +import { move } from './move'; +import { nature } from './nature'; +import { pokeball } from './pokeball'; +import { pokemon } from './pokemon'; +import { pokemonInfo } from './pokemon-info'; +import { splashMessages } from './splash-messages'; +import { starterSelectUiHandler } from './starter-select-ui-handler'; +import { titles, trainerClasses, trainerNames } from './trainers'; +import { tutorial } from './tutorial'; +import { weather } from './weather'; +import { battleMessageUiHandler } from './battle-message-ui-handler'; +import { berry } from './berry'; +import { voucher } from './voucher'; export const esConfig = { - ability: ability, - abilityTriggers: abilityTriggers, - battle: battle, - commandUiHandler: commandUiHandler, - egg: egg, - fightUiHandler: fightUiHandler, - growth: growth, - menu: menu, - menuUiHandler: menuUiHandler, - modifierType: modifierType, - move: move, - nature: nature, - pokeball: pokeball, - pokemon: pokemon, - pokemonInfo: pokemonInfo, - splashMessages: splashMessages, - starterSelectUiHandler: starterSelectUiHandler, - titles: titles, - trainerClasses: trainerClasses, - trainerNames: trainerNames, - tutorial: tutorial, - weather: weather, - battleMessageUiHandler: battleMessageUiHandler, - berry: berry, - voucher: voucher, -} + ability: ability, + abilityTriggers: abilityTriggers, + battle: battle, + commandUiHandler: commandUiHandler, + egg: egg, + fightUiHandler: fightUiHandler, + growth: growth, + menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, + move: move, + nature: nature, + pokeball: pokeball, + pokemon: pokemon, + pokemonInfo: pokemonInfo, + splashMessages: splashMessages, + starterSelectUiHandler: starterSelectUiHandler, + titles: titles, + trainerClasses: trainerClasses, + trainerNames: trainerNames, + tutorial: tutorial, + weather: weather, + battleMessageUiHandler: battleMessageUiHandler, + berry: berry, + voucher: voucher, +}; diff --git a/src/locales/es/egg.ts b/src/locales/es/egg.ts index 358c1b4a503..67cc11a85b1 100644 --- a/src/locales/es/egg.ts +++ b/src/locales/es/egg.ts @@ -1,21 +1,21 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const egg: SimpleTranslationEntries = { - "egg": "Egg", - "greatTier": "Rare", - "ultraTier": "Epic", - "masterTier": "Legendary", - "defaultTier": "Common", - "hatchWavesMessageSoon": "Sounds can be heard coming from inside! It will hatch soon!", - "hatchWavesMessageClose": "It appears to move occasionally. It may be close to hatching.", - "hatchWavesMessageNotClose": "What will hatch from this? It doesn't seem close to hatching.", - "hatchWavesMessageLongTime": "It looks like this Egg will take a long time to hatch.", - "gachaTypeLegendary": "Legendary Rate Up", - "gachaTypeMove": "Rare Egg Move Rate Up", - "gachaTypeShiny": "Shiny Rate Up", - "selectMachine": "Select a machine.", - "notEnoughVouchers": "You don't have enough vouchers!", - "tooManyEggs": "You have too many eggs!", - "pull": "Pull", - "pulls": "Pulls" -} as const; \ No newline at end of file + 'egg': 'Egg', + 'greatTier': 'Rare', + 'ultraTier': 'Epic', + 'masterTier': 'Legendary', + 'defaultTier': 'Common', + 'hatchWavesMessageSoon': 'Sounds can be heard coming from inside! It will hatch soon!', + 'hatchWavesMessageClose': 'It appears to move occasionally. It may be close to hatching.', + 'hatchWavesMessageNotClose': 'What will hatch from this? It doesn\'t seem close to hatching.', + 'hatchWavesMessageLongTime': 'It looks like this Egg will take a long time to hatch.', + 'gachaTypeLegendary': 'Legendary Rate Up', + 'gachaTypeMove': 'Rare Egg Move Rate Up', + 'gachaTypeShiny': 'Shiny Rate Up', + 'selectMachine': 'Select a machine.', + 'notEnoughVouchers': 'You don\'t have enough vouchers!', + 'tooManyEggs': 'You have too many eggs!', + 'pull': 'Pull', + 'pulls': 'Pulls' +} as const; diff --git a/src/locales/es/fight-ui-handler.ts b/src/locales/es/fight-ui-handler.ts index 951d043d393..b73f6510481 100644 --- a/src/locales/es/fight-ui-handler.ts +++ b/src/locales/es/fight-ui-handler.ts @@ -1,7 +1,7 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const fightUiHandler: SimpleTranslationEntries = { - "pp": "PP", - "power": "Potencia", - "accuracy": "Precisión", + 'pp': 'PP', + 'power': 'Potencia', + 'accuracy': 'Precisión', } as const; diff --git a/src/locales/es/growth.ts b/src/locales/es/growth.ts index d89f5c16b2b..ca474318960 100644 --- a/src/locales/es/growth.ts +++ b/src/locales/es/growth.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const growth: SimpleTranslationEntries = { - "Erratic": "Errático", - "Fast": "Rápido", - "Medium_Fast": "Medio Rápido", - "Medium_Slow": "Medio Lento", - "Slow": "Lento", - "Fluctuating": "Fluctuante" -} as const; \ No newline at end of file + 'Erratic': 'Errático', + 'Fast': 'Rápido', + 'Medium_Fast': 'Medio Rápido', + 'Medium_Slow': 'Medio Lento', + 'Slow': 'Lento', + 'Fluctuating': 'Fluctuante' +} as const; diff --git a/src/locales/es/menu-ui-handler.ts b/src/locales/es/menu-ui-handler.ts index ebb76de6f77..b0a5fcc45f0 100644 --- a/src/locales/es/menu-ui-handler.ts +++ b/src/locales/es/menu-ui-handler.ts @@ -1,23 +1,23 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const menuUiHandler: SimpleTranslationEntries = { - "GAME_SETTINGS": 'Ajustes', - "ACHIEVEMENTS": "Logros", - "STATS": "Estadísticas", - "VOUCHERS": "Vales", - "EGG_LIST": "Lista de Huevos", - "EGG_GACHA": "Gacha de Huevos", - "MANAGE_DATA": "Gestionar Datos", - "COMMUNITY": "Comunidad", - "SAVE_AND_QUIT": "Save and Quit", - "LOG_OUT": "Cerrar Sesión", - "slot": "Ranura {{slotNumber}}", - "importSession": "Importar Sesión", - "importSlotSelect": "Selecciona una ranura para importar.", - "exportSession": "Exportar Sesión", - "exportSlotSelect": "Selecciona una ranura para exportar.", - "importData": "Importar Datos", - "exportData": "Exportar Datos", - "cancel": "Cancelar", - "losingProgressionWarning": "Perderás cualquier progreso desde el inicio de la batalla. ¿Continuar?" -} as const; \ No newline at end of file + 'GAME_SETTINGS': 'Ajustes', + 'ACHIEVEMENTS': 'Logros', + 'STATS': 'Estadísticas', + 'VOUCHERS': 'Vales', + 'EGG_LIST': 'Lista de Huevos', + 'EGG_GACHA': 'Gacha de Huevos', + 'MANAGE_DATA': 'Gestionar Datos', + 'COMMUNITY': 'Comunidad', + 'SAVE_AND_QUIT': 'Save and Quit', + 'LOG_OUT': 'Cerrar Sesión', + 'slot': 'Ranura {{slotNumber}}', + 'importSession': 'Importar Sesión', + 'importSlotSelect': 'Selecciona una ranura para importar.', + 'exportSession': 'Exportar Sesión', + 'exportSlotSelect': 'Selecciona una ranura para exportar.', + 'importData': 'Importar Datos', + 'exportData': 'Exportar Datos', + 'cancel': 'Cancelar', + 'losingProgressionWarning': 'Perderás cualquier progreso desde el inicio de la batalla. ¿Continuar?' +} as const; diff --git a/src/locales/es/menu.ts b/src/locales/es/menu.ts index 6a7f2587a0f..bdf433ac879 100644 --- a/src/locales/es/menu.ts +++ b/src/locales/es/menu.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,46 +6,46 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const menu: SimpleTranslationEntries = { - "cancel": "Cancelar", - "continue": "Continuar", - "dailyRun": "Reto diario (Beta)", - "loadGame": "Cargar partida", - "newGame": "Nueva partida", - "selectGameMode": "Elige un modo de juego.", - "logInOrCreateAccount": "Inicia sesión o crea una cuenta para empezar. ¡No se requiere correo electrónico!", - "username": "Usuario", - "password": "Contraseña", - "login": "Iniciar Sesión", - "register": "Registrarse", - "emptyUsername": "El usuario no puede estar vacío", - "invalidLoginUsername": "El usuario no es válido", - "invalidRegisterUsername": "El usuario solo puede contener letras, números y guiones bajos", - "invalidLoginPassword": "La contraseña no es válida", - "invalidRegisterPassword": "Contraseña debe tener 6 o más caracter.", - "usernameAlreadyUsed": "El usuario ya está en uso", - "accountNonExistent": "El usuario no existe", - "unmatchingPassword": "La contraseña no coincide", - "passwordNotMatchingConfirmPassword": "Las contraseñas deben coincidir", - "confirmPassword": "Confirmar Contra.", - "registrationAgeWarning": "Al registrarte, confirmas tener 13 o más años de edad.", - "backToLogin": "Volver al Login", - "failedToLoadSaveData": "No se ha podido cargar los datos guardados. Por favor, recarga la página.\nSi el fallo continúa, por favor contacta al administrador.", - "sessionSuccess": "Sesión cargada con éxito.", - "failedToLoadSession": "No se ha podido cargar los datos de tu sesión.\nPuede que estén corruptos.", - "boyOrGirl": "¿Eres un chico o una chica?", - "boy": "Chico", - "girl": "Chica", - "evolving": "What?\n{{pokemonName}} is evolving!", - "stoppedEvolving": "{{pokemonName}} stopped evolving.", - "pauseEvolutionsQuestion": "Would you like to pause evolutions for {{pokemonName}}?\nEvolutions can be re-enabled from the party screen.", - "evolutionsPaused": "Evolutions have been paused for {{pokemonName}}.", - "evolutionDone": "Congratulations!\nYour {{pokemonName}} evolved into {{evolvedPokemonName}}!", - "dailyRankings": "Rankings Diarios", - "weeklyRankings": "Rankings Semanales", - "noRankings": "Sin Rankings", - "loading": "Cargando…", - "playersOnline": "Jugadores en Línea", - "empty":"Vacío", - "yes":"Sí", - "no":"No", -} as const; \ No newline at end of file + 'cancel': 'Cancelar', + 'continue': 'Continuar', + 'dailyRun': 'Reto diario (Beta)', + 'loadGame': 'Cargar partida', + 'newGame': 'Nueva partida', + 'selectGameMode': 'Elige un modo de juego.', + 'logInOrCreateAccount': 'Inicia sesión o crea una cuenta para empezar. ¡No se requiere correo electrónico!', + 'username': 'Usuario', + 'password': 'Contraseña', + 'login': 'Iniciar Sesión', + 'register': 'Registrarse', + 'emptyUsername': 'El usuario no puede estar vacío', + 'invalidLoginUsername': 'El usuario no es válido', + 'invalidRegisterUsername': 'El usuario solo puede contener letras, números y guiones bajos', + 'invalidLoginPassword': 'La contraseña no es válida', + 'invalidRegisterPassword': 'Contraseña debe tener 6 o más caracter.', + 'usernameAlreadyUsed': 'El usuario ya está en uso', + 'accountNonExistent': 'El usuario no existe', + 'unmatchingPassword': 'La contraseña no coincide', + 'passwordNotMatchingConfirmPassword': 'Las contraseñas deben coincidir', + 'confirmPassword': 'Confirmar Contra.', + 'registrationAgeWarning': 'Al registrarte, confirmas tener 13 o más años de edad.', + 'backToLogin': 'Volver al Login', + 'failedToLoadSaveData': 'No se ha podido cargar los datos guardados. Por favor, recarga la página.\nSi el fallo continúa, por favor contacta al administrador.', + 'sessionSuccess': 'Sesión cargada con éxito.', + 'failedToLoadSession': 'No se ha podido cargar los datos de tu sesión.\nPuede que estén corruptos.', + 'boyOrGirl': '¿Eres un chico o una chica?', + 'boy': 'Chico', + 'girl': 'Chica', + 'evolving': 'What?\n{{pokemonName}} is evolving!', + 'stoppedEvolving': '{{pokemonName}} stopped evolving.', + 'pauseEvolutionsQuestion': 'Would you like to pause evolutions for {{pokemonName}}?\nEvolutions can be re-enabled from the party screen.', + 'evolutionsPaused': 'Evolutions have been paused for {{pokemonName}}.', + 'evolutionDone': 'Congratulations!\nYour {{pokemonName}} evolved into {{evolvedPokemonName}}!', + 'dailyRankings': 'Rankings Diarios', + 'weeklyRankings': 'Rankings Semanales', + 'noRankings': 'Sin Rankings', + 'loading': 'Cargando…', + 'playersOnline': 'Jugadores en Línea', + 'empty':'Vacío', + 'yes':'Sí', + 'no':'No', +} as const; diff --git a/src/locales/es/modifier-type.ts b/src/locales/es/modifier-type.ts index 31d4abbce29..35f0d17dec6 100644 --- a/src/locales/es/modifier-type.ts +++ b/src/locales/es/modifier-type.ts @@ -1,387 +1,387 @@ -import { ModifierTypeTranslationEntries } from "#app/plugins/i18n"; +import { ModifierTypeTranslationEntries } from '#app/plugins/i18n'; export const modifierType: ModifierTypeTranslationEntries = { ModifierType: { - "AddPokeballModifierType": { - name: "{{modifierCount}}x {{pokeballName}}", - description: "Receive {{pokeballName}} x{{modifierCount}} (Inventory: {{pokeballAmount}}) \nCatch Rate: {{catchRate}}", + 'AddPokeballModifierType': { + name: '{{modifierCount}}x {{pokeballName}}', + description: 'Receive {{pokeballName}} x{{modifierCount}} (Inventory: {{pokeballAmount}}) \nCatch Rate: {{catchRate}}', }, - "AddVoucherModifierType": { - name: "{{modifierCount}}x {{voucherTypeName}}", - description: "Receive {{voucherTypeName}} x{{modifierCount}}", + 'AddVoucherModifierType': { + name: '{{modifierCount}}x {{voucherTypeName}}', + description: 'Receive {{voucherTypeName}} x{{modifierCount}}', }, - "PokemonHeldItemModifierType": { + 'PokemonHeldItemModifierType': { extra: { - "inoperable": "{{pokemonName}} can't take\nthis item!", - "tooMany": "{{pokemonName}} has too many\nof this item!", + 'inoperable': '{{pokemonName}} can\'t take\nthis item!', + 'tooMany': '{{pokemonName}} has too many\nof this item!', } }, - "PokemonHpRestoreModifierType": { - description: "Restores {{restorePoints}} HP or {{restorePercent}}% HP for one Pokémon, whichever is higher", + 'PokemonHpRestoreModifierType': { + description: 'Restores {{restorePoints}} HP or {{restorePercent}}% HP for one Pokémon, whichever is higher', extra: { - "fully": "Fully restores HP for one Pokémon", - "fullyWithStatus": "Fully restores HP for one Pokémon and heals any status ailment", + 'fully': 'Fully restores HP for one Pokémon', + 'fullyWithStatus': 'Fully restores HP for one Pokémon and heals any status ailment', } }, - "PokemonReviveModifierType": { - description: "Revives one Pokémon and restores {{restorePercent}}% HP", + 'PokemonReviveModifierType': { + description: 'Revives one Pokémon and restores {{restorePercent}}% HP', }, - "PokemonStatusHealModifierType": { - description: "Heals any status ailment for one Pokémon", + 'PokemonStatusHealModifierType': { + description: 'Heals any status ailment for one Pokémon', }, - "PokemonPpRestoreModifierType": { - description: "Restores {{restorePoints}} PP for one Pokémon move", + 'PokemonPpRestoreModifierType': { + description: 'Restores {{restorePoints}} PP for one Pokémon move', extra: { - "fully": "Restores all PP for one Pokémon move", + 'fully': 'Restores all PP for one Pokémon move', } }, - "PokemonAllMovePpRestoreModifierType": { - description: "Restores {{restorePoints}} PP for all of one Pokémon's moves", + 'PokemonAllMovePpRestoreModifierType': { + description: 'Restores {{restorePoints}} PP for all of one Pokémon\'s moves', extra: { - "fully": "Restores all PP for all of one Pokémon's moves", + 'fully': 'Restores all PP for all of one Pokémon\'s moves', } }, - "PokemonPpUpModifierType": { - description: "Permanently increases PP for one Pokémon move by {{upPoints}} for every 5 maximum PP (maximum 3)", + 'PokemonPpUpModifierType': { + description: 'Permanently increases PP for one Pokémon move by {{upPoints}} for every 5 maximum PP (maximum 3)', }, - "PokemonNatureChangeModifierType": { - name: "{{natureName}} Mint", - description: "Changes a Pokémon's nature to {{natureName}} and permanently unlocks the nature for the starter.", + 'PokemonNatureChangeModifierType': { + name: '{{natureName}} Mint', + description: 'Changes a Pokémon\'s nature to {{natureName}} and permanently unlocks the nature for the starter.', }, - "DoubleBattleChanceBoosterModifierType": { - description: "Doubles the chance of an encounter being a double battle for {{battleCount}} battles", + 'DoubleBattleChanceBoosterModifierType': { + description: 'Doubles the chance of an encounter being a double battle for {{battleCount}} battles', }, - "TempBattleStatBoosterModifierType": { - description: "Increases the {{tempBattleStatName}} of all party members by 1 stage for 5 battles", + 'TempBattleStatBoosterModifierType': { + description: 'Increases the {{tempBattleStatName}} of all party members by 1 stage for 5 battles', }, - "AttackTypeBoosterModifierType": { - description: "Increases the power of a Pokémon's {{moveType}}-type moves by 20%", + 'AttackTypeBoosterModifierType': { + description: 'Increases the power of a Pokémon\'s {{moveType}}-type moves by 20%', }, - "PokemonLevelIncrementModifierType": { - description: "Increases a Pokémon's level by 1", + 'PokemonLevelIncrementModifierType': { + description: 'Increases a Pokémon\'s level by 1', }, - "AllPokemonLevelIncrementModifierType": { - description: "Increases all party members' level by 1", + 'AllPokemonLevelIncrementModifierType': { + description: 'Increases all party members\' level by 1', }, - "PokemonBaseStatBoosterModifierType": { - description: "Increases the holder's base {{statName}} by 10%. The higher your IVs, the higher the stack limit.", + 'PokemonBaseStatBoosterModifierType': { + description: 'Increases the holder\'s base {{statName}} by 10%. The higher your IVs, the higher the stack limit.', }, - "AllPokemonFullHpRestoreModifierType": { - description: "Restores 100% HP for all Pokémon", + 'AllPokemonFullHpRestoreModifierType': { + description: 'Restores 100% HP for all Pokémon', }, - "AllPokemonFullReviveModifierType": { - description: "Revives all fainted Pokémon, fully restoring HP", + 'AllPokemonFullReviveModifierType': { + description: 'Revives all fainted Pokémon, fully restoring HP', }, - "MoneyRewardModifierType": { - description: "Grants a {{moneyMultiplier}} amount of money (₽{{moneyAmount}})", + 'MoneyRewardModifierType': { + description: 'Grants a {{moneyMultiplier}} amount of money (₽{{moneyAmount}})', extra: { - "small": "small", - "moderate": "moderate", - "large": "large", + 'small': 'small', + 'moderate': 'moderate', + 'large': 'large', }, }, - "ExpBoosterModifierType": { - description: "Increases gain of EXP. Points by {{boostPercent}}%", + 'ExpBoosterModifierType': { + description: 'Increases gain of EXP. Points by {{boostPercent}}%', }, - "PokemonExpBoosterModifierType": { - description: "Increases the holder's gain of EXP. Points by {{boostPercent}}%", + 'PokemonExpBoosterModifierType': { + description: 'Increases the holder\'s gain of EXP. Points by {{boostPercent}}%', }, - "PokemonFriendshipBoosterModifierType": { - description: "Increases friendship gain per victory by 50%", + 'PokemonFriendshipBoosterModifierType': { + description: 'Increases friendship gain per victory by 50%', }, - "PokemonMoveAccuracyBoosterModifierType": { - description: "Increases move accuracy by {{accuracyAmount}} (maximum 100)", + 'PokemonMoveAccuracyBoosterModifierType': { + description: 'Increases move accuracy by {{accuracyAmount}} (maximum 100)', }, - "PokemonMultiHitModifierType": { - description: "Attacks hit one additional time at the cost of a 60/75/82.5% power reduction per stack respectively", + 'PokemonMultiHitModifierType': { + description: 'Attacks hit one additional time at the cost of a 60/75/82.5% power reduction per stack respectively', }, - "TmModifierType": { - name: "TM{{moveId}} - {{moveName}}", - description: "Teach {{moveName}} to a Pokémon", + 'TmModifierType': { + name: 'TM{{moveId}} - {{moveName}}', + description: 'Teach {{moveName}} to a Pokémon', }, - "EvolutionItemModifierType": { - description: "Causes certain Pokémon to evolve", + 'EvolutionItemModifierType': { + description: 'Causes certain Pokémon to evolve', }, - "FormChangeItemModifierType": { - description: "Causes certain Pokémon to change form", + 'FormChangeItemModifierType': { + description: 'Causes certain Pokémon to change form', }, - "FusePokemonModifierType": { - description: "Combines two Pokémon (transfers Ability, splits base stats and types, shares move pool)", + 'FusePokemonModifierType': { + description: 'Combines two Pokémon (transfers Ability, splits base stats and types, shares move pool)', }, - "TerastallizeModifierType": { - name: "{{teraType}} Tera Shard", - description: "{{teraType}} Terastallizes the holder for up to 10 battles", + 'TerastallizeModifierType': { + name: '{{teraType}} Tera Shard', + description: '{{teraType}} Terastallizes the holder for up to 10 battles', }, - "ContactHeldItemTransferChanceModifierType": { - description: "Upon attacking, there is a {{chancePercent}}% chance the foe's held item will be stolen", + 'ContactHeldItemTransferChanceModifierType': { + description: 'Upon attacking, there is a {{chancePercent}}% chance the foe\'s held item will be stolen', }, - "TurnHeldItemTransferModifierType": { - description: "Every turn, the holder acquires one held item from the foe", + 'TurnHeldItemTransferModifierType': { + description: 'Every turn, the holder acquires one held item from the foe', }, - "EnemyAttackStatusEffectChanceModifierType": { - description: "Adds a {{chancePercent}}% chance to inflict {{statusEffect}} with attack moves", + 'EnemyAttackStatusEffectChanceModifierType': { + description: 'Adds a {{chancePercent}}% chance to inflict {{statusEffect}} with attack moves', }, - "EnemyEndureChanceModifierType": { - description: "Adds a {{chancePercent}}% chance of enduring a hit", + 'EnemyEndureChanceModifierType': { + description: 'Adds a {{chancePercent}}% chance of enduring a hit', }, - "RARE_CANDY": { name: "Rare Candy" }, - "RARER_CANDY": { name: "Rarer Candy" }, + 'RARE_CANDY': { name: 'Rare Candy' }, + 'RARER_CANDY': { name: 'Rarer Candy' }, - "MEGA_BRACELET": { name: "Mega Bracelet", description: "Mega Stones become available" }, - "DYNAMAX_BAND": { name: "Dynamax Band", description: "Max Mushrooms become available" }, - "TERA_ORB": { name: "Tera Orb", description: "Tera Shards become available" }, + 'MEGA_BRACELET': { name: 'Mega Bracelet', description: 'Mega Stones become available' }, + 'DYNAMAX_BAND': { name: 'Dynamax Band', description: 'Max Mushrooms become available' }, + 'TERA_ORB': { name: 'Tera Orb', description: 'Tera Shards become available' }, - "MAP": { name: "Map", description: "Allows you to choose your destination at a crossroads" }, + 'MAP': { name: 'Map', description: 'Allows you to choose your destination at a crossroads' }, - "POTION": { name: "Potion" }, - "SUPER_POTION": { name: "Super Potion" }, - "HYPER_POTION": { name: "Hyper Potion" }, - "MAX_POTION": { name: "Max Potion" }, - "FULL_RESTORE": { name: "Full Restore" }, + 'POTION': { name: 'Potion' }, + 'SUPER_POTION': { name: 'Super Potion' }, + 'HYPER_POTION': { name: 'Hyper Potion' }, + 'MAX_POTION': { name: 'Max Potion' }, + 'FULL_RESTORE': { name: 'Full Restore' }, - "REVIVE": { name: "Revive" }, - "MAX_REVIVE": { name: "Max Revive" }, + 'REVIVE': { name: 'Revive' }, + 'MAX_REVIVE': { name: 'Max Revive' }, - "FULL_HEAL": { name: "Full Heal" }, + 'FULL_HEAL': { name: 'Full Heal' }, - "SACRED_ASH": { name: "Sacred Ash" }, + 'SACRED_ASH': { name: 'Sacred Ash' }, - "REVIVER_SEED": { name: "Reviver Seed", description: "Revives the holder for 1/2 HP upon fainting" }, + 'REVIVER_SEED': { name: 'Reviver Seed', description: 'Revives the holder for 1/2 HP upon fainting' }, - "ETHER": { name: "Ether" }, - "MAX_ETHER": { name: "Max Ether" }, + 'ETHER': { name: 'Ether' }, + 'MAX_ETHER': { name: 'Max Ether' }, - "ELIXIR": { name: "Elixir" }, - "MAX_ELIXIR": { name: "Max Elixir" }, + 'ELIXIR': { name: 'Elixir' }, + 'MAX_ELIXIR': { name: 'Max Elixir' }, - "PP_UP": { name: "PP Up" }, - "PP_MAX": { name: "PP Max" }, + 'PP_UP': { name: 'PP Up' }, + 'PP_MAX': { name: 'PP Max' }, - "LURE": { name: "Lure" }, - "SUPER_LURE": { name: "Super Lure" }, - "MAX_LURE": { name: "Max Lure" }, + 'LURE': { name: 'Lure' }, + 'SUPER_LURE': { name: 'Super Lure' }, + 'MAX_LURE': { name: 'Max Lure' }, - "MEMORY_MUSHROOM": { name: "Memory Mushroom", description: "Recall one Pokémon's forgotten move" }, + 'MEMORY_MUSHROOM': { name: 'Memory Mushroom', description: 'Recall one Pokémon\'s forgotten move' }, - "EXP_SHARE": { name: "EXP. All", description: "Non-participants receive 20% of a single participant's EXP. Points" }, - "EXP_BALANCE": { name: "EXP. Balance", description: "Weighs EXP. Points received from battles towards lower-leveled party members" }, + 'EXP_SHARE': { name: 'EXP. All', description: 'Non-participants receive 20% of a single participant\'s EXP. Points' }, + 'EXP_BALANCE': { name: 'EXP. Balance', description: 'Weighs EXP. Points received from battles towards lower-leveled party members' }, - "OVAL_CHARM": { name: "Oval Charm", description: "When multiple Pokémon participate in a battle, each gets an extra 10% of the total EXP" }, + 'OVAL_CHARM': { name: 'Oval Charm', description: 'When multiple Pokémon participate in a battle, each gets an extra 10% of the total EXP' }, - "EXP_CHARM": { name: "EXP. Charm" }, - "SUPER_EXP_CHARM": { name: "Super EXP. Charm" }, - "GOLDEN_EXP_CHARM": { name: "Golden EXP. Charm" }, + 'EXP_CHARM': { name: 'EXP. Charm' }, + 'SUPER_EXP_CHARM': { name: 'Super EXP. Charm' }, + 'GOLDEN_EXP_CHARM': { name: 'Golden EXP. Charm' }, - "LUCKY_EGG": { name: "Lucky Egg" }, - "GOLDEN_EGG": { name: "Golden Egg" }, + 'LUCKY_EGG': { name: 'Lucky Egg' }, + 'GOLDEN_EGG': { name: 'Golden Egg' }, - "SOOTHE_BELL": { name: "Soothe Bell" }, + 'SOOTHE_BELL': { name: 'Soothe Bell' }, - "SOUL_DEW": { name: "Soul Dew", description: "Increases the influence of a Pokémon's nature on its stats by 10% (additive)" }, + 'SOUL_DEW': { name: 'Soul Dew', description: 'Increases the influence of a Pokémon\'s nature on its stats by 10% (additive)' }, - "NUGGET": { name: "Nugget" }, - "BIG_NUGGET": { name: "Big Nugget" }, - "RELIC_GOLD": { name: "Relic Gold" }, + 'NUGGET': { name: 'Nugget' }, + 'BIG_NUGGET': { name: 'Big Nugget' }, + 'RELIC_GOLD': { name: 'Relic Gold' }, - "AMULET_COIN": { name: "Amulet Coin", description: "Increases money rewards by 20%" }, - "GOLDEN_PUNCH": { name: "Golden Punch", description: "Grants 50% of damage inflicted as money" }, - "COIN_CASE": { name: "Coin Case", description: "After every 10th battle, receive 10% of your money in interest" }, + 'AMULET_COIN': { name: 'Amulet Coin', description: 'Increases money rewards by 20%' }, + 'GOLDEN_PUNCH': { name: 'Golden Punch', description: 'Grants 50% of damage inflicted as money' }, + 'COIN_CASE': { name: 'Coin Case', description: 'After every 10th battle, receive 10% of your money in interest' }, - "LOCK_CAPSULE": { name: "Lock Capsule", description: "Allows you to lock item rarities when rerolling items" }, + 'LOCK_CAPSULE': { name: 'Lock Capsule', description: 'Allows you to lock item rarities when rerolling items' }, - "GRIP_CLAW": { name: "Grip Claw" }, - "WIDE_LENS": { name: "Wide Lens" }, + 'GRIP_CLAW': { name: 'Grip Claw' }, + 'WIDE_LENS': { name: 'Wide Lens' }, - "MULTI_LENS": { name: "Multi Lens" }, + 'MULTI_LENS': { name: 'Multi Lens' }, - "HEALING_CHARM": { name: "Healing Charm", description: "Increases the effectiveness of HP restoring moves and items by 10% (excludes Revives)" }, - "CANDY_JAR": { name: "Candy Jar", description: "Increases the number of levels added by Rare Candy items by 1" }, + 'HEALING_CHARM': { name: 'Healing Charm', description: 'Increases the effectiveness of HP restoring moves and items by 10% (excludes Revives)' }, + 'CANDY_JAR': { name: 'Candy Jar', description: 'Increases the number of levels added by Rare Candy items by 1' }, - "BERRY_POUCH": { name: "Berry Pouch", description: "Adds a 25% chance that a used berry will not be consumed" }, + 'BERRY_POUCH': { name: 'Berry Pouch', description: 'Adds a 25% chance that a used berry will not be consumed' }, - "FOCUS_BAND": { name: "Focus Band", description: "Adds a 10% chance to survive with 1 HP after being damaged enough to faint" }, + 'FOCUS_BAND': { name: 'Focus Band', description: 'Adds a 10% chance to survive with 1 HP after being damaged enough to faint' }, - "QUICK_CLAW": { name: "Quick Claw", description: "Adds a 10% chance to move first regardless of speed (after priority)" }, + 'QUICK_CLAW': { name: 'Quick Claw', description: 'Adds a 10% chance to move first regardless of speed (after priority)' }, - "KINGS_ROCK": { name: "King's Rock", description: "Adds a 10% chance an attack move will cause the opponent to flinch" }, + 'KINGS_ROCK': { name: 'King\'s Rock', description: 'Adds a 10% chance an attack move will cause the opponent to flinch' }, - "LEFTOVERS": { name: "Leftovers", description: "Heals 1/16 of a Pokémon's maximum HP every turn" }, - "SHELL_BELL": { name: "Shell Bell", description: "Heals 1/8 of a Pokémon's dealt damage" }, + 'LEFTOVERS': { name: 'Leftovers', description: 'Heals 1/16 of a Pokémon\'s maximum HP every turn' }, + 'SHELL_BELL': { name: 'Shell Bell', description: 'Heals 1/8 of a Pokémon\'s dealt damage' }, - "BATON": { name: "Baton", description: "Allows passing along effects when switching Pokémon, which also bypasses traps" }, + 'BATON': { name: 'Baton', description: 'Allows passing along effects when switching Pokémon, which also bypasses traps' }, - "SHINY_CHARM": { name: "Shiny Charm", description: "Dramatically increases the chance of a wild Pokémon being Shiny" }, - "ABILITY_CHARM": { name: "Ability Charm", description: "Dramatically increases the chance of a wild Pokémon having a Hidden Ability" }, + 'SHINY_CHARM': { name: 'Shiny Charm', description: 'Dramatically increases the chance of a wild Pokémon being Shiny' }, + 'ABILITY_CHARM': { name: 'Ability Charm', description: 'Dramatically increases the chance of a wild Pokémon having a Hidden Ability' }, - "IV_SCANNER": { name: "IV Scanner", description: "Allows scanning the IVs of wild Pokémon. 2 IVs are revealed per stack. The best IVs are shown first" }, + 'IV_SCANNER': { name: 'IV Scanner', description: 'Allows scanning the IVs of wild Pokémon. 2 IVs are revealed per stack. The best IVs are shown first' }, - "DNA_SPLICERS": { name: "DNA Splicers" }, + 'DNA_SPLICERS': { name: 'DNA Splicers' }, - "MINI_BLACK_HOLE": { name: "Mini Black Hole" }, + 'MINI_BLACK_HOLE': { name: 'Mini Black Hole' }, - "GOLDEN_POKEBALL": { name: "Golden Poké Ball", description: "Adds 1 extra item option at the end of every battle" }, + 'GOLDEN_POKEBALL': { name: 'Golden Poké Ball', description: 'Adds 1 extra item option at the end of every battle' }, - "ENEMY_DAMAGE_BOOSTER": { name: "Damage Token", description: "Increases damage by 5%" }, - "ENEMY_DAMAGE_REDUCTION": { name: "Protection Token", description: "Reduces incoming damage by 2.5%" }, - "ENEMY_HEAL": { name: "Recovery Token", description: "Heals 2% of max HP every turn" }, - "ENEMY_ATTACK_POISON_CHANCE": { name: "Poison Token" }, - "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Paralyze Token" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Sleep Token" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Freeze Token" }, - "ENEMY_ATTACK_BURN_CHANCE": { name: "Burn Token" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Full Heal Token", description: "Adds a 10% chance every turn to heal a status condition" }, - "ENEMY_ENDURE_CHANCE": { name: "Endure Token" }, - "ENEMY_FUSED_CHANCE": { name: "Fusion Token", description: "Adds a 1% chance that a wild Pokémon will be a fusion" }, + 'ENEMY_DAMAGE_BOOSTER': { name: 'Damage Token', description: 'Increases damage by 5%' }, + 'ENEMY_DAMAGE_REDUCTION': { name: 'Protection Token', description: 'Reduces incoming damage by 2.5%' }, + 'ENEMY_HEAL': { name: 'Recovery Token', description: 'Heals 2% of max HP every turn' }, + 'ENEMY_ATTACK_POISON_CHANCE': { name: 'Poison Token' }, + 'ENEMY_ATTACK_PARALYZE_CHANCE': { name: 'Paralyze Token' }, + 'ENEMY_ATTACK_SLEEP_CHANCE': { name: 'Sleep Token' }, + 'ENEMY_ATTACK_FREEZE_CHANCE': { name: 'Freeze Token' }, + 'ENEMY_ATTACK_BURN_CHANCE': { name: 'Burn Token' }, + 'ENEMY_STATUS_EFFECT_HEAL_CHANCE': { name: 'Full Heal Token', description: 'Adds a 10% chance every turn to heal a status condition' }, + 'ENEMY_ENDURE_CHANCE': { name: 'Endure Token' }, + 'ENEMY_FUSED_CHANCE': { name: 'Fusion Token', description: 'Adds a 1% chance that a wild Pokémon will be a fusion' }, }, TempBattleStatBoosterItem: { - "x_attack": "X Attack", - "x_defense": "X Defense", - "x_sp_atk": "X Sp. Atk", - "x_sp_def": "X Sp. Def", - "x_speed": "X Speed", - "x_accuracy": "X Accuracy", - "dire_hit": "Dire Hit", + 'x_attack': 'X Attack', + 'x_defense': 'X Defense', + 'x_sp_atk': 'X Sp. Atk', + 'x_sp_def': 'X Sp. Def', + 'x_speed': 'X Speed', + 'x_accuracy': 'X Accuracy', + 'dire_hit': 'Dire Hit', }, AttackTypeBoosterItem: { - "silk_scarf": "Silk Scarf", - "black_belt": "Black Belt", - "sharp_beak": "Sharp Beak", - "poison_barb": "Poison Barb", - "soft_sand": "Soft Sand", - "hard_stone": "Hard Stone", - "silver_powder": "Silver Powder", - "spell_tag": "Spell Tag", - "metal_coat": "Metal Coat", - "charcoal": "Charcoal", - "mystic_water": "Mystic Water", - "miracle_seed": "Miracle Seed", - "magnet": "Magnet", - "twisted_spoon": "Twisted Spoon", - "never_melt_ice": "Never-Melt Ice", - "dragon_fang": "Dragon Fang", - "black_glasses": "Black Glasses", - "fairy_feather": "Fairy Feather", + 'silk_scarf': 'Silk Scarf', + 'black_belt': 'Black Belt', + 'sharp_beak': 'Sharp Beak', + 'poison_barb': 'Poison Barb', + 'soft_sand': 'Soft Sand', + 'hard_stone': 'Hard Stone', + 'silver_powder': 'Silver Powder', + 'spell_tag': 'Spell Tag', + 'metal_coat': 'Metal Coat', + 'charcoal': 'Charcoal', + 'mystic_water': 'Mystic Water', + 'miracle_seed': 'Miracle Seed', + 'magnet': 'Magnet', + 'twisted_spoon': 'Twisted Spoon', + 'never_melt_ice': 'Never-Melt Ice', + 'dragon_fang': 'Dragon Fang', + 'black_glasses': 'Black Glasses', + 'fairy_feather': 'Fairy Feather', }, BaseStatBoosterItem: { - "hp_up": "HP Up", - "protein": "Protein", - "iron": "Iron", - "calcium": "Calcium", - "zinc": "Zinc", - "carbos": "Carbos", + 'hp_up': 'HP Up', + 'protein': 'Protein', + 'iron': 'Iron', + 'calcium': 'Calcium', + 'zinc': 'Zinc', + 'carbos': 'Carbos', }, EvolutionItem: { - "NONE": "None", + 'NONE': 'None', - "LINKING_CORD": "Linking Cord", - "SUN_STONE": "Sun Stone", - "MOON_STONE": "Moon Stone", - "LEAF_STONE": "Leaf Stone", - "FIRE_STONE": "Fire Stone", - "WATER_STONE": "Water Stone", - "THUNDER_STONE": "Thunder Stone", - "ICE_STONE": "Ice Stone", - "DUSK_STONE": "Dusk Stone", - "DAWN_STONE": "Dawn Stone", - "SHINY_STONE": "Shiny Stone", - "CRACKED_POT": "Cracked Pot", - "SWEET_APPLE": "Sweet Apple", - "TART_APPLE": "Tart Apple", - "STRAWBERRY_SWEET": "Strawberry Sweet", - "UNREMARKABLE_TEACUP": "Unremarkable Teacup", + 'LINKING_CORD': 'Linking Cord', + 'SUN_STONE': 'Sun Stone', + 'MOON_STONE': 'Moon Stone', + 'LEAF_STONE': 'Leaf Stone', + 'FIRE_STONE': 'Fire Stone', + 'WATER_STONE': 'Water Stone', + 'THUNDER_STONE': 'Thunder Stone', + 'ICE_STONE': 'Ice Stone', + 'DUSK_STONE': 'Dusk Stone', + 'DAWN_STONE': 'Dawn Stone', + 'SHINY_STONE': 'Shiny Stone', + 'CRACKED_POT': 'Cracked Pot', + 'SWEET_APPLE': 'Sweet Apple', + 'TART_APPLE': 'Tart Apple', + 'STRAWBERRY_SWEET': 'Strawberry Sweet', + 'UNREMARKABLE_TEACUP': 'Unremarkable Teacup', - "CHIPPED_POT": "Chipped Pot", - "BLACK_AUGURITE": "Black Augurite", - "GALARICA_CUFF": "Galarica Cuff", - "GALARICA_WREATH": "Galarica Wreath", - "PEAT_BLOCK": "Peat Block", - "AUSPICIOUS_ARMOR": "Auspicious Armor", - "MALICIOUS_ARMOR": "Malicious Armor", - "MASTERPIECE_TEACUP": "Masterpiece Teacup", - "METAL_ALLOY": "Metal Alloy", - "SCROLL_OF_DARKNESS": "Scroll Of Darkness", - "SCROLL_OF_WATERS": "Scroll Of Waters", - "SYRUPY_APPLE": "Syrupy Apple", + 'CHIPPED_POT': 'Chipped Pot', + 'BLACK_AUGURITE': 'Black Augurite', + 'GALARICA_CUFF': 'Galarica Cuff', + 'GALARICA_WREATH': 'Galarica Wreath', + 'PEAT_BLOCK': 'Peat Block', + 'AUSPICIOUS_ARMOR': 'Auspicious Armor', + 'MALICIOUS_ARMOR': 'Malicious Armor', + 'MASTERPIECE_TEACUP': 'Masterpiece Teacup', + 'METAL_ALLOY': 'Metal Alloy', + 'SCROLL_OF_DARKNESS': 'Scroll Of Darkness', + 'SCROLL_OF_WATERS': 'Scroll Of Waters', + 'SYRUPY_APPLE': 'Syrupy Apple', }, FormChangeItem: { - "NONE": "None", + 'NONE': 'None', - "ABOMASITE": "Abomasite", - "ABSOLITE": "Absolite", - "AERODACTYLITE": "Aerodactylite", - "AGGRONITE": "Aggronite", - "ALAKAZITE": "Alakazite", - "ALTARIANITE": "Altarianite", - "AMPHAROSITE": "Ampharosite", - "AUDINITE": "Audinite", - "BANETTITE": "Banettite", - "BEEDRILLITE": "Beedrillite", - "BLASTOISINITE": "Blastoisinite", - "BLAZIKENITE": "Blazikenite", - "CAMERUPTITE": "Cameruptite", - "CHARIZARDITE_X": "Charizardite X", - "CHARIZARDITE_Y": "Charizardite Y", - "DIANCITE": "Diancite", - "GALLADITE": "Galladite", - "GARCHOMPITE": "Garchompite", - "GARDEVOIRITE": "Gardevoirite", - "GENGARITE": "Gengarite", - "GLALITITE": "Glalitite", - "GYARADOSITE": "Gyaradosite", - "HERACRONITE": "Heracronite", - "HOUNDOOMINITE": "Houndoominite", - "KANGASKHANITE": "Kangaskhanite", - "LATIASITE": "Latiasite", - "LATIOSITE": "Latiosite", - "LOPUNNITE": "Lopunnite", - "LUCARIONITE": "Lucarionite", - "MANECTITE": "Manectite", - "MAWILITE": "Mawilite", - "MEDICHAMITE": "Medichamite", - "METAGROSSITE": "Metagrossite", - "MEWTWONITE_X": "Mewtwonite X", - "MEWTWONITE_Y": "Mewtwonite Y", - "PIDGEOTITE": "Pidgeotite", - "PINSIRITE": "Pinsirite", - "RAYQUAZITE": "Rayquazite", - "SABLENITE": "Sablenite", - "SALAMENCITE": "Salamencite", - "SCEPTILITE": "Sceptilite", - "SCIZORITE": "Scizorite", - "SHARPEDONITE": "Sharpedonite", - "SLOWBRONITE": "Slowbronite", - "STEELIXITE": "Steelixite", - "SWAMPERTITE": "Swampertite", - "TYRANITARITE": "Tyranitarite", - "VENUSAURITE": "Venusaurite", + 'ABOMASITE': 'Abomasite', + 'ABSOLITE': 'Absolite', + 'AERODACTYLITE': 'Aerodactylite', + 'AGGRONITE': 'Aggronite', + 'ALAKAZITE': 'Alakazite', + 'ALTARIANITE': 'Altarianite', + 'AMPHAROSITE': 'Ampharosite', + 'AUDINITE': 'Audinite', + 'BANETTITE': 'Banettite', + 'BEEDRILLITE': 'Beedrillite', + 'BLASTOISINITE': 'Blastoisinite', + 'BLAZIKENITE': 'Blazikenite', + 'CAMERUPTITE': 'Cameruptite', + 'CHARIZARDITE_X': 'Charizardite X', + 'CHARIZARDITE_Y': 'Charizardite Y', + 'DIANCITE': 'Diancite', + 'GALLADITE': 'Galladite', + 'GARCHOMPITE': 'Garchompite', + 'GARDEVOIRITE': 'Gardevoirite', + 'GENGARITE': 'Gengarite', + 'GLALITITE': 'Glalitite', + 'GYARADOSITE': 'Gyaradosite', + 'HERACRONITE': 'Heracronite', + 'HOUNDOOMINITE': 'Houndoominite', + 'KANGASKHANITE': 'Kangaskhanite', + 'LATIASITE': 'Latiasite', + 'LATIOSITE': 'Latiosite', + 'LOPUNNITE': 'Lopunnite', + 'LUCARIONITE': 'Lucarionite', + 'MANECTITE': 'Manectite', + 'MAWILITE': 'Mawilite', + 'MEDICHAMITE': 'Medichamite', + 'METAGROSSITE': 'Metagrossite', + 'MEWTWONITE_X': 'Mewtwonite X', + 'MEWTWONITE_Y': 'Mewtwonite Y', + 'PIDGEOTITE': 'Pidgeotite', + 'PINSIRITE': 'Pinsirite', + 'RAYQUAZITE': 'Rayquazite', + 'SABLENITE': 'Sablenite', + 'SALAMENCITE': 'Salamencite', + 'SCEPTILITE': 'Sceptilite', + 'SCIZORITE': 'Scizorite', + 'SHARPEDONITE': 'Sharpedonite', + 'SLOWBRONITE': 'Slowbronite', + 'STEELIXITE': 'Steelixite', + 'SWAMPERTITE': 'Swampertite', + 'TYRANITARITE': 'Tyranitarite', + 'VENUSAURITE': 'Venusaurite', - "BLUE_ORB": "Blue Orb", - "RED_ORB": "Red Orb", - "SHARP_METEORITE": "Sharp Meteorite", - "HARD_METEORITE": "Hard Meteorite", - "SMOOTH_METEORITE": "Smooth Meteorite", - "ADAMANT_CRYSTAL": "Adamant Crystal", - "LUSTROUS_ORB": "Lustrous Orb", - "GRISEOUS_CORE": "Griseous Core", - "REVEAL_GLASS": "Reveal Glass", - "GRACIDEA": "Gracidea", - "MAX_MUSHROOMS": "Max Mushrooms", - "DARK_STONE": "Dark Stone", - "LIGHT_STONE": "Light Stone", - "PRISON_BOTTLE": "Prison Bottle", - "N_LUNARIZER": "N Lunarizer", - "N_SOLARIZER": "N Solarizer", - "RUSTED_SWORD": "Rusted Sword", - "RUSTED_SHIELD": "Rusted Shield", - "ICY_REINS_OF_UNITY": "Icy Reins Of Unity", - "SHADOW_REINS_OF_UNITY": "Shadow Reins Of Unity", - "WELLSPRING_MASK": "Wellspring Mask", - "HEARTHFLAME_MASK": "Hearthflame Mask", - "CORNERSTONE_MASK": "Cornerstone Mask", - "SHOCK_DRIVE": "Shock Drive", - "BURN_DRIVE": "Burn Drive", - "CHILL_DRIVE": "Chill Drive", - "DOUSE_DRIVE": "Douse Drive", + 'BLUE_ORB': 'Blue Orb', + 'RED_ORB': 'Red Orb', + 'SHARP_METEORITE': 'Sharp Meteorite', + 'HARD_METEORITE': 'Hard Meteorite', + 'SMOOTH_METEORITE': 'Smooth Meteorite', + 'ADAMANT_CRYSTAL': 'Adamant Crystal', + 'LUSTROUS_ORB': 'Lustrous Orb', + 'GRISEOUS_CORE': 'Griseous Core', + 'REVEAL_GLASS': 'Reveal Glass', + 'GRACIDEA': 'Gracidea', + 'MAX_MUSHROOMS': 'Max Mushrooms', + 'DARK_STONE': 'Dark Stone', + 'LIGHT_STONE': 'Light Stone', + 'PRISON_BOTTLE': 'Prison Bottle', + 'N_LUNARIZER': 'N Lunarizer', + 'N_SOLARIZER': 'N Solarizer', + 'RUSTED_SWORD': 'Rusted Sword', + 'RUSTED_SHIELD': 'Rusted Shield', + 'ICY_REINS_OF_UNITY': 'Icy Reins Of Unity', + 'SHADOW_REINS_OF_UNITY': 'Shadow Reins Of Unity', + 'WELLSPRING_MASK': 'Wellspring Mask', + 'HEARTHFLAME_MASK': 'Hearthflame Mask', + 'CORNERSTONE_MASK': 'Cornerstone Mask', + 'SHOCK_DRIVE': 'Shock Drive', + 'BURN_DRIVE': 'Burn Drive', + 'CHILL_DRIVE': 'Chill Drive', + 'DOUSE_DRIVE': 'Douse Drive', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/es/move.ts b/src/locales/es/move.ts index 026e67b797f..67df86d73b1 100644 --- a/src/locales/es/move.ts +++ b/src/locales/es/move.ts @@ -1,3812 +1,3812 @@ -import { MoveTranslationEntries } from "#app/plugins/i18n"; +import { MoveTranslationEntries } from '#app/plugins/i18n'; export const move: MoveTranslationEntries = { pound: { - name: "Destructor", - effect: "Golpea al objetivo con las extremidades, la cola o similares.", + name: 'Destructor', + effect: 'Golpea al objetivo con las extremidades, la cola o similares.', }, karateChop: { - name: "Golpe Kárate", - effect: "Da un golpe cortante. Suele ser crítico.", + name: 'Golpe Kárate', + effect: 'Da un golpe cortante. Suele ser crítico.', }, doubleSlap: { - name: "Doble Bofetón", - effect: "Abofetea de dos a cinco veces seguidas.", + name: 'Doble Bofetón', + effect: 'Abofetea de dos a cinco veces seguidas.', }, cometPunch: { - name: "Puño Cometa", - effect: "Pega de dos a cinco veces seguidas.", + name: 'Puño Cometa', + effect: 'Pega de dos a cinco veces seguidas.', }, megaPunch: { - name: "Megapuño", - effect: "Un puñetazo de gran potencia.", + name: 'Megapuño', + effect: 'Un puñetazo de gran potencia.', }, payDay: { - name: "Día de Pago", - effect: "Arroja monedas al objetivo y las recupera al final del combate.", + name: 'Día de Pago', + effect: 'Arroja monedas al objetivo y las recupera al final del combate.', }, firePunch: { - name: "Puño Fuego", - effect: "Puñetazo ardiente que puede causar quemaduras.", + name: 'Puño Fuego', + effect: 'Puñetazo ardiente que puede causar quemaduras.', }, icePunch: { - name: "Puño Hielo", - effect: "Puñetazo helado que puede llegar a congelar.", + name: 'Puño Hielo', + effect: 'Puñetazo helado que puede llegar a congelar.', }, thunderPunch: { - name: "Puño Trueno", - effect: "Puñetazo eléctrico que puede paralizar al adversario.", + name: 'Puño Trueno', + effect: 'Puñetazo eléctrico que puede paralizar al adversario.', }, scratch: { - name: "Arañazo", - effect: "Araña con afiladas garras.", + name: 'Arañazo', + effect: 'Araña con afiladas garras.', }, viseGrip: { - name: "Agarre", - effect: "Atenaza al objetivo y le inflige daño.", + name: 'Agarre', + effect: 'Atenaza al objetivo y le inflige daño.', }, guillotine: { - name: "Guillotina", - effect: "Ataque cortante que debilita al oponente de un golpe si acierta.", + name: 'Guillotina', + effect: 'Ataque cortante que debilita al oponente de un golpe si acierta.', }, razorWind: { - name: "Viento Cortante", - effect: "Primero se prepara y en el segundo turno ataca al oponente con ráfagas de viento cortante. Alta probabilidad de ser crítico.", + name: 'Viento Cortante', + effect: 'Primero se prepara y en el segundo turno ataca al oponente con ráfagas de viento cortante. Alta probabilidad de ser crítico.', }, swordsDance: { - name: "Danza Espada", - effect: "Baile frenético que aumenta mucho el Ataque.", + name: 'Danza Espada', + effect: 'Baile frenético que aumenta mucho el Ataque.', }, cut: { - name: "Corte", - effect: "Corta al adversario con garras, guadañas, etc.", + name: 'Corte', + effect: 'Corta al adversario con garras, guadañas, etc.', }, gust: { - name: "Tornado", - effect: "Crea un tornado con las alas y lo lanza contra el objetivo.", + name: 'Tornado', + effect: 'Crea un tornado con las alas y lo lanza contra el objetivo.', }, wingAttack: { - name: "Ataque Ala", - effect: "Extiende totalmente sus majestuosas alas para golpear al objetivo con ellas.", + name: 'Ataque Ala', + effect: 'Extiende totalmente sus majestuosas alas para golpear al objetivo con ellas.', }, whirlwind: { - name: "Remolino", - effect: "Se lleva al objetivo, que es cambiado por otro Pokémon. Si es un Pokémon salvaje, acaba el combate.", + name: 'Remolino', + effect: 'Se lleva al objetivo, que es cambiado por otro Pokémon. Si es un Pokémon salvaje, acaba el combate.', }, fly: { - name: "Vuelo", - effect: "El usuario vuela en el primer turno y ataca en el segundo.", + name: 'Vuelo', + effect: 'El usuario vuela en el primer turno y ataca en el segundo.', }, bind: { - name: "Atadura", - effect: "Ata y oprime de cuatro a cinco turnos.", + name: 'Atadura', + effect: 'Ata y oprime de cuatro a cinco turnos.', }, slam: { - name: "Atizar", - effect: "Golpea con la cola o con lianas, por ejemplo, para causar daño al objetivo.", + name: 'Atizar', + effect: 'Golpea con la cola o con lianas, por ejemplo, para causar daño al objetivo.', }, vineWhip: { - name: "Látigo Cepa", - effect: "Azota al objetivo con lianas delgadas y largas tan flexibles como látigos.", + name: 'Látigo Cepa', + effect: 'Azota al objetivo con lianas delgadas y largas tan flexibles como látigos.', }, stomp: { - name: "Pisotón", - effect: "Tremendo pisotón que puede hacer que el objetivo se amedrente.", + name: 'Pisotón', + effect: 'Tremendo pisotón que puede hacer que el objetivo se amedrente.', }, doubleKick: { - name: "Doble Patada", - effect: "Una patada doble. Golpea dos veces.", + name: 'Doble Patada', + effect: 'Una patada doble. Golpea dos veces.', }, megaKick: { - name: "Megapatada", - effect: "Patada de extrema fuerza.", + name: 'Megapatada', + effect: 'Patada de extrema fuerza.', }, jumpKick: { - name: "Patada Salto", - effect: "Da un salto y pega una patada. Si falla, se lesiona.", + name: 'Patada Salto', + effect: 'Da un salto y pega una patada. Si falla, se lesiona.', }, rollingKick: { - name: "Patada Giro", - effect: "Da una patada rápida y circular. Puede hacer retroceder al objetivo.", + name: 'Patada Giro', + effect: 'Da una patada rápida y circular. Puede hacer retroceder al objetivo.', }, sandAttack: { - name: "Ataque Arena", - effect: "Arroja arena a la cara y baja la Precisión.", + name: 'Ataque Arena', + effect: 'Arroja arena a la cara y baja la Precisión.', }, headbutt: { - name: "Golpe Cabeza", - effect: "Potente cabezazo que puede amedrentar al objetivo.", + name: 'Golpe Cabeza', + effect: 'Potente cabezazo que puede amedrentar al objetivo.', }, hornAttack: { - name: "Cornada", - effect: "Ataca al objetivo con una cornada punzante.", + name: 'Cornada', + effect: 'Ataca al objetivo con una cornada punzante.', }, furyAttack: { - name: "Ataque Furia", - effect: "Cornea al objetivo de dos a cinco veces.", + name: 'Ataque Furia', + effect: 'Cornea al objetivo de dos a cinco veces.', }, hornDrill: { - name: "Perforador", - effect: "Ataque con un cuerno giratorio que fulmina al objetivo de un solo golpe si acierta.", + name: 'Perforador', + effect: 'Ataque con un cuerno giratorio que fulmina al objetivo de un solo golpe si acierta.', }, tackle: { - name: "Placaje", - effect: "Embestida con todo el cuerpo.", + name: 'Placaje', + effect: 'Embestida con todo el cuerpo.', }, bodySlam: { - name: "Golpe Cuerpo", - effect: "Salta sobre el objetivo con todo su peso y puede llegar a paralizarlo.", + name: 'Golpe Cuerpo', + effect: 'Salta sobre el objetivo con todo su peso y puede llegar a paralizarlo.', }, wrap: { - name: "Constricción", - effect: "Oprime al objetivo de cuatro a cinco turnos con lianas o con su cuerpo.", + name: 'Constricción', + effect: 'Oprime al objetivo de cuatro a cinco turnos con lianas o con su cuerpo.', }, takeDown: { - name: "Derribo", - effect: "Carga desmedida que también hiere al agresor.", + name: 'Derribo', + effect: 'Carga desmedida que también hiere al agresor.', }, thrash: { - name: "Saña", - effect: "El usuario ataca enfurecido durante dos o tres turnos y, después, se queda confuso.", + name: 'Saña', + effect: 'El usuario ataca enfurecido durante dos o tres turnos y, después, se queda confuso.', }, doubleEdge: { - name: "Doble Filo", - effect: "Ataque arriesgado que también hiere al agresor.", + name: 'Doble Filo', + effect: 'Ataque arriesgado que también hiere al agresor.', }, tailWhip: { - name: "Látigo", - effect: "Agita la cola para bajar la Defensa del equipo rival.", + name: 'Látigo', + effect: 'Agita la cola para bajar la Defensa del equipo rival.', }, poisonSting: { - name: "Picotazo Veneno", - effect: "Lanza un aguijón tóxico que puede envenenar al objetivo.", + name: 'Picotazo Veneno', + effect: 'Lanza un aguijón tóxico que puede envenenar al objetivo.', }, twineedle: { - name: "Doble Ataque", - effect: "Pincha dos veces con dos espinas. Puede envenenar.", + name: 'Doble Ataque', + effect: 'Pincha dos veces con dos espinas. Puede envenenar.', }, pinMissile: { - name: "Pin Misil", - effect: "Lanza finas púas que hieren de dos a cinco veces.", + name: 'Pin Misil', + effect: 'Lanza finas púas que hieren de dos a cinco veces.', }, leer: { - name: "Malicioso", - effect: "Intimida a los rivales para bajar su Defensa.", + name: 'Malicioso', + effect: 'Intimida a los rivales para bajar su Defensa.', }, bite: { - name: "Mordisco", - effect: "Un voraz bocado con dientes afilados que puede amedrentar al objetivo.", + name: 'Mordisco', + effect: 'Un voraz bocado con dientes afilados que puede amedrentar al objetivo.', }, growl: { - name: "Gruñido", - effect: "Dulce gruñido que distrae al objetivo para que baje la guardia y reduce su Ataque.", + name: 'Gruñido', + effect: 'Dulce gruñido que distrae al objetivo para que baje la guardia y reduce su Ataque.', }, roar: { - name: "Rugido", - effect: "Se lleva al objetivo, que es cambiado por otro Pokémon. Si es un Pokémon salvaje, acaba el combate.", + name: 'Rugido', + effect: 'Se lleva al objetivo, que es cambiado por otro Pokémon. Si es un Pokémon salvaje, acaba el combate.', }, sing: { - name: "Canto", - effect: "Cancioncilla que hace dormir profundamente al objetivo.", + name: 'Canto', + effect: 'Cancioncilla que hace dormir profundamente al objetivo.', }, supersonic: { - name: "Supersónico", - effect: "El cuerpo del usuario emite unas ondas sónicas raras que confunden al objetivo.", + name: 'Supersónico', + effect: 'El cuerpo del usuario emite unas ondas sónicas raras que confunden al objetivo.', }, sonicBoom: { - name: "Bomba Sónica", - effect: "Lanza ondas de choque que restan 20 PS al objetivo.", + name: 'Bomba Sónica', + effect: 'Lanza ondas de choque que restan 20 PS al objetivo.', }, disable: { - name: "Anulación", - effect: "Desactiva el último movimiento del objetivo durante cuatro turnos.", + name: 'Anulación', + effect: 'Desactiva el último movimiento del objetivo durante cuatro turnos.', }, acid: { - name: "Ácido", - effect: "Rocía al objetivo con un ácido corrosivo. Puede reducir la Defensa Especial.", + name: 'Ácido', + effect: 'Rocía al objetivo con un ácido corrosivo. Puede reducir la Defensa Especial.', }, ember: { - name: "Ascuas", - effect: "Ataca con llamas pequeñas que pueden causar quemaduras.", + name: 'Ascuas', + effect: 'Ataca con llamas pequeñas que pueden causar quemaduras.', }, flamethrower: { - name: "Lanzallamas", - effect: "Ataca con una gran ráfaga de fuego que puede causar quemaduras.", + name: 'Lanzallamas', + effect: 'Ataca con una gran ráfaga de fuego que puede causar quemaduras.', }, mist: { - name: "Neblina", - effect: "Rodea de una niebla blanquecina al bando del usuario e impide que el rival reduzca sus características durante cinco turnos.", + name: 'Neblina', + effect: 'Rodea de una niebla blanquecina al bando del usuario e impide que el rival reduzca sus características durante cinco turnos.', }, waterGun: { - name: "Pistola Agua", - effect: "Ataca disparando agua con gran potencia.", + name: 'Pistola Agua', + effect: 'Ataca disparando agua con gran potencia.', }, hydroPump: { - name: "Hidrobomba", - effect: "Lanza una gran masa de agua a presión para atacar.", + name: 'Hidrobomba', + effect: 'Lanza una gran masa de agua a presión para atacar.', }, surf: { - name: "Surf", - effect: "Inunda el terreno de combate con una ola gigante que golpea a los Pokémon adyacentes.", + name: 'Surf', + effect: 'Inunda el terreno de combate con una ola gigante que golpea a los Pokémon adyacentes.', }, iceBeam: { - name: "Rayo Hielo", - effect: "Rayo de hielo que puede llegar a congelar.", + name: 'Rayo Hielo', + effect: 'Rayo de hielo que puede llegar a congelar.', }, blizzard: { - name: "Ventisca", - effect: "Tormenta de hielo que puede llegar a congelar.", + name: 'Ventisca', + effect: 'Tormenta de hielo que puede llegar a congelar.', }, psybeam: { - name: "Psicorrayo", - effect: "Extraño rayo que puede causar confusión.", + name: 'Psicorrayo', + effect: 'Extraño rayo que puede causar confusión.', }, bubbleBeam: { - name: "Rayo Burbuja", - effect: "Ráfaga de burbujas que puede reducir la Velocidad.", + name: 'Rayo Burbuja', + effect: 'Ráfaga de burbujas que puede reducir la Velocidad.', }, auroraBeam: { - name: "Rayo Aurora", - effect: "Rayo multicolor que puede reducir el Ataque.", + name: 'Rayo Aurora', + effect: 'Rayo multicolor que puede reducir el Ataque.', }, hyperBeam: { - name: "Hiperrayo", - effect: "El usuario ataca al objetivo con un potente haz de luz, pero deberá descansar en el siguiente turno.", + name: 'Hiperrayo', + effect: 'El usuario ataca al objetivo con un potente haz de luz, pero deberá descansar en el siguiente turno.', }, peck: { - name: "Picotazo", - effect: "Ensarta al objetivo con un cuerno o pico punzante.", + name: 'Picotazo', + effect: 'Ensarta al objetivo con un cuerno o pico punzante.', }, drillPeck: { - name: "Pico Taladro", - effect: "Picotazo giratorio y perforador muy potente.", + name: 'Pico Taladro', + effect: 'Picotazo giratorio y perforador muy potente.', }, submission: { - name: "Sumisión", - effect: "El usuario se lanza al suelo con el oponente en brazos y también se hace un poco de daño.", + name: 'Sumisión', + effect: 'El usuario se lanza al suelo con el oponente en brazos y también se hace un poco de daño.', }, lowKick: { - name: "Patada Baja", - effect: "Patada baja que derriba al objetivo. Cuanto más pesa este, más daño le causa.", + name: 'Patada Baja', + effect: 'Patada baja que derriba al objetivo. Cuanto más pesa este, más daño le causa.', }, counter: { - name: "Contraataque", - effect: "Devuelve un golpe físico por duplicado.", + name: 'Contraataque', + effect: 'Devuelve un golpe físico por duplicado.', }, seismicToss: { - name: "Sísmico", - effect: "Aprovecha la gravedad para derribar al objetivo. Le resta tantos PS como nivel tenga el usuario.", + name: 'Sísmico', + effect: 'Aprovecha la gravedad para derribar al objetivo. Le resta tantos PS como nivel tenga el usuario.', }, strength: { - name: "Fuerza", - effect: "Ataca al objetivo golpeándolo con todas sus fuerzas.", + name: 'Fuerza', + effect: 'Ataca al objetivo golpeándolo con todas sus fuerzas.', }, absorb: { - name: "Absorber", - effect: "Un ataque que absorbe nutrientes. Quien lo usa recupera la mitad de los PS del daño que produce.", + name: 'Absorber', + effect: 'Un ataque que absorbe nutrientes. Quien lo usa recupera la mitad de los PS del daño que produce.', }, megaDrain: { - name: "Megaagotar", - effect: "Un ataque que absorbe nutrientes. Quien lo usa recupera la mitad de los PS del daño que produce.", + name: 'Megaagotar', + effect: 'Un ataque que absorbe nutrientes. Quien lo usa recupera la mitad de los PS del daño que produce.', }, leechSeed: { - name: "Drenadoras", - effect: "Planta semillas que absorben PS del objetivo en cada turno y que le sirven para recuperarse.", + name: 'Drenadoras', + effect: 'Planta semillas que absorben PS del objetivo en cada turno y que le sirven para recuperarse.', }, growth: { - name: "Desarrollo", - effect: "Hace que su cuerpo crezca a marchas forzadas con lo que aumenta su Ataque y Ataque Especial.", + name: 'Desarrollo', + effect: 'Hace que su cuerpo crezca a marchas forzadas con lo que aumenta su Ataque y Ataque Especial.', }, razorLeaf: { - name: "Hoja Afilada", - effect: "Corta con hojas afiladas. Un ataque que suele ser crítico.", + name: 'Hoja Afilada', + effect: 'Corta con hojas afiladas. Un ataque que suele ser crítico.', }, solarBeam: { - name: "Rayo Solar", - effect: "El usuario absorbe luz en el primer turno y en el segundo lanza un potente rayo de energía.", + name: 'Rayo Solar', + effect: 'El usuario absorbe luz en el primer turno y en el segundo lanza un potente rayo de energía.', }, poisonPowder: { - name: "Polvo Veneno", - effect: "Esparce polvo tóxico que envenena al objetivo.", + name: 'Polvo Veneno', + effect: 'Esparce polvo tóxico que envenena al objetivo.', }, stunSpore: { - name: "Paralizador", - effect: "Esparce polvo que paraliza al objetivo.", + name: 'Paralizador', + effect: 'Esparce polvo que paraliza al objetivo.', }, sleepPowder: { - name: "Somnífero", - effect: "Esparce polvo que duerme al objetivo.", + name: 'Somnífero', + effect: 'Esparce polvo que duerme al objetivo.', }, petalDance: { - name: "Danza Pétalo", - effect: "Ataca al objetivo lanzando pétalos de dos a tres turnos y, al finalizar, el usuario se queda confuso.", + name: 'Danza Pétalo', + effect: 'Ataca al objetivo lanzando pétalos de dos a tres turnos y, al finalizar, el usuario se queda confuso.', }, stringShot: { - name: "Disparo Demora", - effect: "Lanza seda a los rivales y reduce mucho su Velocidad.", + name: 'Disparo Demora', + effect: 'Lanza seda a los rivales y reduce mucho su Velocidad.', }, dragonRage: { - name: "Furia Dragón", - effect: "Ráfaga de furiosas ondas de choque que quitan 40 PS.", + name: 'Furia Dragón', + effect: 'Ráfaga de furiosas ondas de choque que quitan 40 PS.', }, fireSpin: { - name: "Giro Fuego", - effect: "Un aro de fuego que atrapa al objetivo de cuatro a cinco turnos.", + name: 'Giro Fuego', + effect: 'Un aro de fuego que atrapa al objetivo de cuatro a cinco turnos.', }, thunderShock: { - name: "Impactrueno", - effect: "Ataque eléctrico que puede paralizar al objetivo.", + name: 'Impactrueno', + effect: 'Ataque eléctrico que puede paralizar al objetivo.', }, thunderbolt: { - name: "Rayo", - effect: "Potente ataque eléctrico que puede paralizar al objetivo.", + name: 'Rayo', + effect: 'Potente ataque eléctrico que puede paralizar al objetivo.', }, thunderWave: { - name: "Onda Trueno", - effect: "Una ligera descarga que paraliza al objetivo.", + name: 'Onda Trueno', + effect: 'Una ligera descarga que paraliza al objetivo.', }, thunder: { - name: "Trueno", - effect: "Un poderoso rayo que daña al objetivo y puede paralizarlo.", + name: 'Trueno', + effect: 'Un poderoso rayo que daña al objetivo y puede paralizarlo.', }, rockThrow: { - name: "Lanzarrocas", - effect: "Tira una pequeña roca al objetivo.", + name: 'Lanzarrocas', + effect: 'Tira una pequeña roca al objetivo.', }, earthquake: { - name: "Terremoto", - effect: "Un terremoto que afecta a los Pokémon adyacentes.", + name: 'Terremoto', + effect: 'Un terremoto que afecta a los Pokémon adyacentes.', }, fissure: { - name: "Fisura", - effect: "Abre una grieta en el suelo y mete al objetivo en ella. Fulmina al objetivo de un solo golpe si acierta.", + name: 'Fisura', + effect: 'Abre una grieta en el suelo y mete al objetivo en ella. Fulmina al objetivo de un solo golpe si acierta.', }, dig: { - name: "Excavar", - effect: "El usuario cava durante el primer turno y ataca en el segundo.", + name: 'Excavar', + effect: 'El usuario cava durante el primer turno y ataca en el segundo.', }, toxic: { - name: "Tóxico", - effect: "Envenena gravemente al objetivo y causa un daño mayor en cada turno.", + name: 'Tóxico', + effect: 'Envenena gravemente al objetivo y causa un daño mayor en cada turno.', }, confusion: { - name: "Confusión", - effect: "Débil ataque telequinético que puede causar confusión.", + name: 'Confusión', + effect: 'Débil ataque telequinético que puede causar confusión.', }, psychic: { - name: "Psíquico", - effect: "Fuerte ataque telequinético que puede bajar la Defensa Especial del objetivo.", + name: 'Psíquico', + effect: 'Fuerte ataque telequinético que puede bajar la Defensa Especial del objetivo.', }, hypnosis: { - name: "Hipnosis", - effect: "Ataque hipnótico que hace dormir profundamente al objetivo.", + name: 'Hipnosis', + effect: 'Ataque hipnótico que hace dormir profundamente al objetivo.', }, meditate: { - name: "Meditación", - effect: "El usuario reposa y medita para potenciar el Ataque.", + name: 'Meditación', + effect: 'El usuario reposa y medita para potenciar el Ataque.', }, agility: { - name: "Agilidad", - effect: "Relaja el cuerpo para ganar mucha Velocidad.", + name: 'Agilidad', + effect: 'Relaja el cuerpo para ganar mucha Velocidad.', }, quickAttack: { - name: "Ataque Rápido", - effect: "Ataque de una rapidez espeluznante. Este movimiento tiene prioridad alta.", + name: 'Ataque Rápido', + effect: 'Ataque de una rapidez espeluznante. Este movimiento tiene prioridad alta.', }, rage: { - name: "Furia", - effect: "Al usarse, aumenta el Ataque del usuario cada vez que es golpeado.", + name: 'Furia', + effect: 'Al usarse, aumenta el Ataque del usuario cada vez que es golpeado.', }, teleport: { - name: "Teletransporte", - effect: "Permite al usuario cambiarse por otro Pokémon del equipo, si lo hay. Si un Pokémon salvaje usa este movimiento, huye del combate.", + name: 'Teletransporte', + effect: 'Permite al usuario cambiarse por otro Pokémon del equipo, si lo hay. Si un Pokémon salvaje usa este movimiento, huye del combate.', }, nightShade: { - name: "Tinieblas", - effect: "Produce un espejismo ante el objetivo, que pierde tantos PS como nivel tenga el usuario.", + name: 'Tinieblas', + effect: 'Produce un espejismo ante el objetivo, que pierde tantos PS como nivel tenga el usuario.', }, mimic: { - name: "Mimético", - effect: "Copia el último movimiento usado por el objetivo, y puede utilizarlo mientras esté en el combate.", + name: 'Mimético', + effect: 'Copia el último movimiento usado por el objetivo, y puede utilizarlo mientras esté en el combate.', }, screech: { - name: "Chirrido", - effect: "Alarido agudo que reduce mucho la Defensa del objetivo.", + name: 'Chirrido', + effect: 'Alarido agudo que reduce mucho la Defensa del objetivo.', }, doubleTeam: { - name: "Doble Equipo", - effect: "Crea copias de sí mismo para mejorar la Evasión.", + name: 'Doble Equipo', + effect: 'Crea copias de sí mismo para mejorar la Evasión.', }, recover: { - name: "Recuperación", - effect: "Restaura hasta la mitad de los PS máximos.", + name: 'Recuperación', + effect: 'Restaura hasta la mitad de los PS máximos.', }, harden: { - name: "Fortaleza", - effect: "Tensa la musculatura del usuario para aumentar la Defensa.", + name: 'Fortaleza', + effect: 'Tensa la musculatura del usuario para aumentar la Defensa.', }, minimize: { - name: "Reducción", - effect: "El usuario mengua para aumentar mucho la Evasión.", + name: 'Reducción', + effect: 'El usuario mengua para aumentar mucho la Evasión.', }, smokescreen: { - name: "Pantalla de Humo", - effect: "Reduce la Precisión del objetivo con una nube de humo o tinta.", + name: 'Pantalla de Humo', + effect: 'Reduce la Precisión del objetivo con una nube de humo o tinta.', }, confuseRay: { - name: "Rayo Confuso", - effect: "Rayo siniestro que confunde al objetivo.", + name: 'Rayo Confuso', + effect: 'Rayo siniestro que confunde al objetivo.', }, withdraw: { - name: "Refugio", - effect: "El usuario se resguarda en su coraza, por lo que le sube la Defensa.", + name: 'Refugio', + effect: 'El usuario se resguarda en su coraza, por lo que le sube la Defensa.', }, defenseCurl: { - name: "Rizo Defensa", - effect: "Se enrosca para ocultar sus puntos débiles y aumentar la Defensa.", + name: 'Rizo Defensa', + effect: 'Se enrosca para ocultar sus puntos débiles y aumentar la Defensa.', }, barrier: { - name: "Barrera", - effect: "Crea una barrera que aumenta mucho la Defensa.", + name: 'Barrera', + effect: 'Crea una barrera que aumenta mucho la Defensa.', }, lightScreen: { - name: "Pantalla de Luz", - effect: "Pared de luz que reduce durante cinco turnos el daño producido por los ataques especiales.", + name: 'Pantalla de Luz', + effect: 'Pared de luz que reduce durante cinco turnos el daño producido por los ataques especiales.', }, haze: { - name: "Niebla", - effect: "Neblina oscura que elimina los cambios en las características de todos los Pokémon en combate.", + name: 'Niebla', + effect: 'Neblina oscura que elimina los cambios en las características de todos los Pokémon en combate.', }, reflect: { - name: "Reflejo", - effect: "Pared de luz que reduce durante cinco turnos el daño producido por los ataques físicos.", + name: 'Reflejo', + effect: 'Pared de luz que reduce durante cinco turnos el daño producido por los ataques físicos.', }, focusEnergy: { - name: "Foco Energía", - effect: "Concentra energía para aumentar las posibilidades de asestar un golpe crítico.", + name: 'Foco Energía', + effect: 'Concentra energía para aumentar las posibilidades de asestar un golpe crítico.', }, bide: { - name: "Venganza", - effect: "Espera dos turnos para atacar con el doble de potencia del daño recibido.", + name: 'Venganza', + effect: 'Espera dos turnos para atacar con el doble de potencia del daño recibido.', }, metronome: { - name: "Metrónomo", - effect: "Mueve un dedo y estimula su cerebro para usar al azar casi cualquier movimiento.", + name: 'Metrónomo', + effect: 'Mueve un dedo y estimula su cerebro para usar al azar casi cualquier movimiento.', }, mirrorMove: { - name: "Espejo", - effect: "Ataca al objetivo con el último movimiento que este haya usado.", + name: 'Espejo', + effect: 'Ataca al objetivo con el último movimiento que este haya usado.', }, selfDestruct: { - name: "Autodestrucción", - effect: "El atacante explota y hiere a los Pokémon adyacentes. El usuario se debilita de inmediato.", + name: 'Autodestrucción', + effect: 'El atacante explota y hiere a los Pokémon adyacentes. El usuario se debilita de inmediato.', }, eggBomb: { - name: "Bomba Huevo", - effect: "Arroja un huevo enorme al objetivo con gran fuerza.", + name: 'Bomba Huevo', + effect: 'Arroja un huevo enorme al objetivo con gran fuerza.', }, lick: { - name: "Lengüetazo", - effect: "Una lengua ataca al objetivo. Puede causar parálisis.", + name: 'Lengüetazo', + effect: 'Una lengua ataca al objetivo. Puede causar parálisis.', }, smog: { - name: "Polución", - effect: "Lanza un ataque con gases tóxicos que pueden llegar a envenenar.", + name: 'Polución', + effect: 'Lanza un ataque con gases tóxicos que pueden llegar a envenenar.', }, sludge: { - name: "Residuos", - effect: "Arroja residuos al objetivo. Puede llegar a envenenar.", + name: 'Residuos', + effect: 'Arroja residuos al objetivo. Puede llegar a envenenar.', }, boneClub: { - name: "Hueso Palo", - effect: "Aporrea con un hueso. Puede hacer retroceder al objetivo.", + name: 'Hueso Palo', + effect: 'Aporrea con un hueso. Puede hacer retroceder al objetivo.', }, fireBlast: { - name: "Llamarada", - effect: "Llama intensa que chamusca y puede causar quemaduras.", + name: 'Llamarada', + effect: 'Llama intensa que chamusca y puede causar quemaduras.', }, waterfall: { - name: "Cascada", - effect: "Embiste con un gran impulso y puede llegar a amedrentar al objetivo.", + name: 'Cascada', + effect: 'Embiste con un gran impulso y puede llegar a amedrentar al objetivo.', }, clamp: { - name: "Tenaza", - effect: "Atrapa y atenaza con fuerza durante cuatro o cinco turnos.", + name: 'Tenaza', + effect: 'Atrapa y atenaza con fuerza durante cuatro o cinco turnos.', }, swift: { - name: "Meteoros", - effect: "Lanza rayos en forma de estrella que no fallan nunca.", + name: 'Meteoros', + effect: 'Lanza rayos en forma de estrella que no fallan nunca.', }, skullBash: { - name: "Cabezazo", - effect: "El usuario se prepara y sube su Defensa en el primer turno y en el segundo arremete con un cabezazo.", + name: 'Cabezazo', + effect: 'El usuario se prepara y sube su Defensa en el primer turno y en el segundo arremete con un cabezazo.', }, spikeCannon: { - name: "Clavo Cañón", - effect: "Lanza finas púas que hieren de dos a cinco veces.", + name: 'Clavo Cañón', + effect: 'Lanza finas púas que hieren de dos a cinco veces.', }, constrict: { - name: "Restricción", - effect: "Ataca con largos tentáculos o zarcillos que pueden bajar la Velocidad.", + name: 'Restricción', + effect: 'Ataca con largos tentáculos o zarcillos que pueden bajar la Velocidad.', }, amnesia: { - name: "Amnesia", - effect: "El usuario olvida sus preocupaciones y aumenta mucho la Defensa Especial.", + name: 'Amnesia', + effect: 'El usuario olvida sus preocupaciones y aumenta mucho la Defensa Especial.', }, kinesis: { - name: "Kinético", - effect: "Dobla una cuchara para distraer al objetivo y reducir su Precisión.", + name: 'Kinético', + effect: 'Dobla una cuchara para distraer al objetivo y reducir su Precisión.', }, softBoiled: { - name: "Ovocuración", - effect: "Restaura la mitad de los PS máximos del usuario.", + name: 'Ovocuración', + effect: 'Restaura la mitad de los PS máximos del usuario.', }, highJumpKick: { - name: "Pat. Salto Alta", - effect: "El usuario salta muy alto y da un rodillazo. Si falla, se hará daño.", + name: 'Pat. Salto Alta', + effect: 'El usuario salta muy alto y da un rodillazo. Si falla, se hará daño.', }, glare: { - name: "Deslumbrar", - effect: "Intimida y asusta al objetivo con la mirada para dejarlo paralizado.", + name: 'Deslumbrar', + effect: 'Intimida y asusta al objetivo con la mirada para dejarlo paralizado.', }, dreamEater: { - name: "Comesueños", - effect: "Restaura al usuario la mitad del daño causado a un objetivo dormido.", + name: 'Comesueños', + effect: 'Restaura al usuario la mitad del daño causado a un objetivo dormido.', }, poisonGas: { - name: "Gas Venenoso", - effect: "Lanza una nube de gas tóxico al objetivo. Produce envenenamiento.", + name: 'Gas Venenoso', + effect: 'Lanza una nube de gas tóxico al objetivo. Produce envenenamiento.', }, barrage: { - name: "Bombardeo", - effect: "Arroja esferas al objetivo entre dos y cinco veces seguidas.", + name: 'Bombardeo', + effect: 'Arroja esferas al objetivo entre dos y cinco veces seguidas.', }, leechLife: { - name: "Chupavidas", - effect: "Restaura al usuario la mitad del daño causado al objetivo.", + name: 'Chupavidas', + effect: 'Restaura al usuario la mitad del daño causado al objetivo.', }, lovelyKiss: { - name: "Beso Amoroso", - effect: "Intimida al objetivo con una cara que asusta y le da un beso que lo deja dormido.", + name: 'Beso Amoroso', + effect: 'Intimida al objetivo con una cara que asusta y le da un beso que lo deja dormido.', }, skyAttack: { - name: "Ataque Aéreo", - effect: "Ataca durante dos turnos y suele asestar un golpe crítico. También puede amedrentar al objetivo.", + name: 'Ataque Aéreo', + effect: 'Ataca durante dos turnos y suele asestar un golpe crítico. También puede amedrentar al objetivo.', }, transform: { - name: "Transformación", - effect: "El usuario se transforma en una copia del objetivo, con los mismos movimientos.", + name: 'Transformación', + effect: 'El usuario se transforma en una copia del objetivo, con los mismos movimientos.', }, bubble: { - name: "Burbuja", - effect: "Lanza burbujas a los contrincantes y puede reducir su Velocidad.", + name: 'Burbuja', + effect: 'Lanza burbujas a los contrincantes y puede reducir su Velocidad.', }, dizzyPunch: { - name: "Puño Mareo", - effect: "Rítmicos puñetazos que pueden causar confusión.", + name: 'Puño Mareo', + effect: 'Rítmicos puñetazos que pueden causar confusión.', }, spore: { - name: "Espora", - effect: "Esparce esporas que inducen el sueño.", + name: 'Espora', + effect: 'Esparce esporas que inducen el sueño.', }, flash: { - name: "Destello", - effect: "Luz cegadora que baja la Precisión del objetivo.", + name: 'Destello', + effect: 'Luz cegadora que baja la Precisión del objetivo.', }, psywave: { - name: "Psicoonda", - effect: "Ataque con una onda de energía de intensidad variable.", + name: 'Psicoonda', + effect: 'Ataque con una onda de energía de intensidad variable.', }, splash: { - name: "Salpicadura", - effect: "No tiene ningún efecto. Solo salpica.", + name: 'Salpicadura', + effect: 'No tiene ningún efecto. Solo salpica.', }, acidArmor: { - name: "Armadura Ácida", - effect: "Transforma la estructura celular para hacerse líquido y aumenta mucho la Defensa.", + name: 'Armadura Ácida', + effect: 'Transforma la estructura celular para hacerse líquido y aumenta mucho la Defensa.', }, crabhammer: { - name: "Martillazo", - effect: "Golpea con fuerza con una pinza enorme. Suele asestar un golpe crítico.", + name: 'Martillazo', + effect: 'Golpea con fuerza con una pinza enorme. Suele asestar un golpe crítico.', }, explosion: { - name: "Explosión", - effect: "El atacante causa una grandísima explosión y hiere a los Pokémon adyacentes. El usuario se debilita de inmediato.", + name: 'Explosión', + effect: 'El atacante causa una grandísima explosión y hiere a los Pokémon adyacentes. El usuario se debilita de inmediato.', }, furySwipes: { - name: "Golpes Furia", - effect: "Araña rápidamente de dos a cinco veces.", + name: 'Golpes Furia', + effect: 'Araña rápidamente de dos a cinco veces.', }, bonemerang: { - name: "Huesomerang", - effect: "Lanza un hueso a modo de bumerán que golpea dos veces.", + name: 'Huesomerang', + effect: 'Lanza un hueso a modo de bumerán que golpea dos veces.', }, rest: { - name: "Descanso", - effect: "Restaura todos los PS y cura todos los problemas de estado del usuario, que se duerme los dos turnos siguientes.", + name: 'Descanso', + effect: 'Restaura todos los PS y cura todos los problemas de estado del usuario, que se duerme los dos turnos siguientes.', }, rockSlide: { - name: "Avalancha", - effect: "Lanza grandes pedruscos. Puede amedrentar al objetivo.", + name: 'Avalancha', + effect: 'Lanza grandes pedruscos. Puede amedrentar al objetivo.', }, hyperFang: { - name: "Hipercolmillo", - effect: "Ataca con agudos colmillos. Puede amedrentar al objetivo.", + name: 'Hipercolmillo', + effect: 'Ataca con agudos colmillos. Puede amedrentar al objetivo.', }, sharpen: { - name: "Afilar", - effect: "El perfil del usuario se hace más afilado y su Ataque mejora.", + name: 'Afilar', + effect: 'El perfil del usuario se hace más afilado y su Ataque mejora.', }, conversion: { - name: "Conversión", - effect: "Cambia el tipo del usuario por el del primer movimiento en su lista.", + name: 'Conversión', + effect: 'Cambia el tipo del usuario por el del primer movimiento en su lista.', }, triAttack: { - name: "Triataque", - effect: "Ataque con tres rayos de luz que puede paralizar, quemar o congelar al objetivo.", + name: 'Triataque', + effect: 'Ataque con tres rayos de luz que puede paralizar, quemar o congelar al objetivo.', }, superFang: { - name: "Superdiente", - effect: "Asesta una dentellada con sus afilados incisivos que reduce a la mitad los PS del objetivo.", + name: 'Superdiente', + effect: 'Asesta una dentellada con sus afilados incisivos que reduce a la mitad los PS del objetivo.', }, slash: { - name: "Cuchillada", - effect: "Ataca con cuchillas o con pinzas. Suele asestar un golpe crítico.", + name: 'Cuchillada', + effect: 'Ataca con cuchillas o con pinzas. Suele asestar un golpe crítico.', }, substitute: { - name: "Sustituto", - effect: "Utiliza parte de los PS propios para crear un sustituto que actúa como señuelo.", + name: 'Sustituto', + effect: 'Utiliza parte de los PS propios para crear un sustituto que actúa como señuelo.', }, struggle: { - name: "Forcejeo", - effect: "Solo se usa como último recurso al acabarse los PP. Hiere un poco al agresor.", + name: 'Forcejeo', + effect: 'Solo se usa como último recurso al acabarse los PP. Hiere un poco al agresor.', }, sketch: { - name: "Esquema", - effect: "Aprende de forma permanente el último movimiento utilizado por el objetivo. Es de un solo uso.", + name: 'Esquema', + effect: 'Aprende de forma permanente el último movimiento utilizado por el objetivo. Es de un solo uso.', }, tripleKick: { - name: "Triple Patada", - effect: "Propina hasta tres patadas seguidas, la potencia de las cuales aumenta cada vez que acierta.", + name: 'Triple Patada', + effect: 'Propina hasta tres patadas seguidas, la potencia de las cuales aumenta cada vez que acierta.', }, thief: { - name: "Ladrón", - effect: "El usuario ataca y tiene un 30% de robarle el objeto al objetivo.", + name: 'Ladrón', + effect: 'El usuario ataca y tiene un 30% de robarle el objeto al objetivo.', }, spiderWeb: { - name: "Telaraña", - effect: "Enreda al objetivo para evitar que abandone el combate.", + name: 'Telaraña', + effect: 'Enreda al objetivo para evitar que abandone el combate.', }, mindReader: { - name: "Telépata", - effect: "El usuario adivina los movimientos del objetivo para hacer que su siguiente ataque no falle.", + name: 'Telépata', + effect: 'El usuario adivina los movimientos del objetivo para hacer que su siguiente ataque no falle.', }, nightmare: { - name: "Pesadilla", - effect: "El objetivo dormido sufre una pesadilla que le hace perder PS en cada turno.", + name: 'Pesadilla', + effect: 'El objetivo dormido sufre una pesadilla que le hace perder PS en cada turno.', }, flameWheel: { - name: "Rueda Fuego", - effect: "Ataca envuelto en fuego. Puede causar quemaduras.", + name: 'Rueda Fuego', + effect: 'Ataca envuelto en fuego. Puede causar quemaduras.', }, snore: { - name: "Ronquido", - effect: "Fuerte ronquido que solo puede usarse dormido. Puede amedrentar al objetivo.", + name: 'Ronquido', + effect: 'Fuerte ronquido que solo puede usarse dormido. Puede amedrentar al objetivo.', }, curse: { - name: "Maldición", - effect: "Un movimiento que tiene efectos distintos si el usuario es de tipo Fantasma o no.", + name: 'Maldición', + effect: 'Un movimiento que tiene efectos distintos si el usuario es de tipo Fantasma o no.', }, flail: { - name: "Azote", - effect: "Ataque frenético. Cuantos menos PS tenga el usuario, más daño producirá.", + name: 'Azote', + effect: 'Ataque frenético. Cuantos menos PS tenga el usuario, más daño producirá.', }, conversion2: { - name: "Conversión2", - effect: "El usuario cambia de tipo para hacerse resistente al último tipo de movimiento usado por el objetivo.", + name: 'Conversión2', + effect: 'El usuario cambia de tipo para hacerse resistente al último tipo de movimiento usado por el objetivo.', }, aeroblast: { - name: "Aerochorro", - effect: "Lanza un chorro de aire que suele asestar un golpe crítico.", + name: 'Aerochorro', + effect: 'Lanza un chorro de aire que suele asestar un golpe crítico.', }, cottonSpore: { - name: "Esporagodón", - effect: "Adhiere esporas a los rivales para reducir mucho su Velocidad.", + name: 'Esporagodón', + effect: 'Adhiere esporas a los rivales para reducir mucho su Velocidad.', }, reversal: { - name: "Inversión", - effect: "Ataque desesperado que causa más daño cuantos menos PS tenga el usuario.", + name: 'Inversión', + effect: 'Ataque desesperado que causa más daño cuantos menos PS tenga el usuario.', }, spite: { - name: "Rencor", - effect: "Da rienda suelta a su rencor para reducir 4 PP del último movimiento usado por el objetivo.", + name: 'Rencor', + effect: 'Da rienda suelta a su rencor para reducir 4 PP del último movimiento usado por el objetivo.', }, powderSnow: { - name: "Nieve Polvo", - effect: "Lanza nieve que puede llegar a congelar.", + name: 'Nieve Polvo', + effect: 'Lanza nieve que puede llegar a congelar.', }, protect: { - name: "Protección", - effect: "Frena todos los ataques, pero puede fallar si se usa repetidamente.", + name: 'Protección', + effect: 'Frena todos los ataques, pero puede fallar si se usa repetidamente.', }, machPunch: { - name: "Ultrapuño", - effect: "Puñetazo de velocidad fulminante. Este movimiento tiene prioridad alta.", + name: 'Ultrapuño', + effect: 'Puñetazo de velocidad fulminante. Este movimiento tiene prioridad alta.', }, scaryFace: { - name: "Cara Susto", - effect: "Asusta al objetivo para reducir mucho su Velocidad.", + name: 'Cara Susto', + effect: 'Asusta al objetivo para reducir mucho su Velocidad.', }, feintAttack: { - name: "Finta", - effect: "Engaña al objetivo para acercarse y dar un puñetazo que no falla.", + name: 'Finta', + effect: 'Engaña al objetivo para acercarse y dar un puñetazo que no falla.', }, sweetKiss: { - name: "Beso Dulce", - effect: "Da un beso con tal dulzura que causa confusión.", + name: 'Beso Dulce', + effect: 'Da un beso con tal dulzura que causa confusión.', }, bellyDrum: { - name: "Tambor", - effect: "Reduce la mitad de los PS máximos para mejorar al máximo el Ataque.", + name: 'Tambor', + effect: 'Reduce la mitad de los PS máximos para mejorar al máximo el Ataque.', }, sludgeBomb: { - name: "Bomba Lodo", - effect: "Arroja residuos al objetivo. Puede llegar a envenenar.", + name: 'Bomba Lodo', + effect: 'Arroja residuos al objetivo. Puede llegar a envenenar.', }, mudSlap: { - name: "Bofetón Lodo", - effect: "Echa lodo en la cara del objetivo para infligirle daño y reducir su Precisión.", + name: 'Bofetón Lodo', + effect: 'Echa lodo en la cara del objetivo para infligirle daño y reducir su Precisión.', }, octazooka: { - name: "Pulpocañón", - effect: "Dispara tinta a la cara. Puede bajar la Precisión.", + name: 'Pulpocañón', + effect: 'Dispara tinta a la cara. Puede bajar la Precisión.', }, spikes: { - name: "Púas", - effect: "Esparce púas alrededor del equipo rival que hieren a los Pokémon rivales que entran en combate.", + name: 'Púas', + effect: 'Esparce púas alrededor del equipo rival que hieren a los Pokémon rivales que entran en combate.', }, zapCannon: { - name: "Electrocañón", - effect: "Dispara una descarga eléctrica que causa daño y parálisis.", + name: 'Electrocañón', + effect: 'Dispara una descarga eléctrica que causa daño y parálisis.', }, foresight: { - name: "Profecía", - effect: "Permite atacar con cualquier movimiento a objetivos de tipo Fantasma y golpear a Pokémon evasivos.", + name: 'Profecía', + effect: 'Permite atacar con cualquier movimiento a objetivos de tipo Fantasma y golpear a Pokémon evasivos.', }, destinyBond: { - name: "Mismo Destino", - effect: "Si el usuario se debilita por un ataque rival antes de usar otro movimiento, el Pokémon rival se debilitará también. Puede fallar si se usa repetidamente.", + name: 'Mismo Destino', + effect: 'Si el usuario se debilita por un ataque rival antes de usar otro movimiento, el Pokémon rival se debilitará también. Puede fallar si se usa repetidamente.', }, perishSong: { - name: "Canto Mortal", - effect: "Si un Pokémon escucha este canto y no es cambiado por otro en tres turnos, acaba debilitándose.", + name: 'Canto Mortal', + effect: 'Si un Pokémon escucha este canto y no es cambiado por otro en tres turnos, acaba debilitándose.', }, icyWind: { - name: "Viento Hielo", - effect: "Ataque con aire helado que reduce la Velocidad del objetivo.", + name: 'Viento Hielo', + effect: 'Ataque con aire helado que reduce la Velocidad del objetivo.', }, detect: { - name: "Detección", - effect: "Frena todos los ataques, pero puede fallar si se usa repetidamente.", + name: 'Detección', + effect: 'Frena todos los ataques, pero puede fallar si se usa repetidamente.', }, boneRush: { - name: "Ataque Óseo", - effect: "Hueso en ristre, aporrea al objetivo de dos a cinco veces.", + name: 'Ataque Óseo', + effect: 'Hueso en ristre, aporrea al objetivo de dos a cinco veces.', }, lockOn: { - name: "Fijar Blanco", - effect: "Fija el blanco para que el siguiente ataque no falle.", + name: 'Fijar Blanco', + effect: 'Fija el blanco para que el siguiente ataque no falle.', }, outrage: { - name: "Enfado", - effect: "El usuario ataca enfurecido durante dos o tres turnos y, después, se queda confuso.", + name: 'Enfado', + effect: 'El usuario ataca enfurecido durante dos o tres turnos y, después, se queda confuso.', }, sandstorm: { - name: "Tormenta Arena", - effect: "Tormenta de arena que dura cinco turnos y hiere a todos, excepto a los de tipo Roca, Tierra y Acero, y aumenta la Defensa Especial de los de tipo Roca.", + name: 'Tormenta Arena', + effect: 'Tormenta de arena que dura cinco turnos y hiere a todos, excepto a los de tipo Roca, Tierra y Acero, y aumenta la Defensa Especial de los de tipo Roca.', }, gigaDrain: { - name: "Gigadrenado", - effect: "Un ataque que absorbe nutrientes. Quien lo usa recupera la mitad de los PS del daño que produce.", + name: 'Gigadrenado', + effect: 'Un ataque que absorbe nutrientes. Quien lo usa recupera la mitad de los PS del daño que produce.', }, endure: { - name: "Aguante", - effect: "Resiste cualquier ataque y deja al menos 1 PS. Puede fallar si se usa repetidamente.", + name: 'Aguante', + effect: 'Resiste cualquier ataque y deja al menos 1 PS. Puede fallar si se usa repetidamente.', }, charm: { - name: "Encanto", - effect: "Engatusa al objetivo y reduce mucho su Ataque.", + name: 'Encanto', + effect: 'Engatusa al objetivo y reduce mucho su Ataque.', }, rollout: { - name: "Rodar", - effect: "El atacante rueda contra el objetivo durante cinco turnos, cada vez con mayor fuerza.", + name: 'Rodar', + effect: 'El atacante rueda contra el objetivo durante cinco turnos, cada vez con mayor fuerza.', }, falseSwipe: { - name: "Falso Tortazo", - effect: "Ataque moderado que no debilita al objetivo y le deja al menos 1 PS.", + name: 'Falso Tortazo', + effect: 'Ataque moderado que no debilita al objetivo y le deja al menos 1 PS.', }, swagger: { - name: "Contoneo", - effect: "Provoca confusión en el objetivo, pero también sube mucho su Ataque.", + name: 'Contoneo', + effect: 'Provoca confusión en el objetivo, pero también sube mucho su Ataque.', }, milkDrink: { - name: "Batido", - effect: "Restaura la mitad de los PS máximos del usuario.", + name: 'Batido', + effect: 'Restaura la mitad de los PS máximos del usuario.', }, spark: { - name: "Chispa", - effect: "Ataque eléctrico que puede llegar a paralizar.", + name: 'Chispa', + effect: 'Ataque eléctrico que puede llegar a paralizar.', }, furyCutter: { - name: "Corte Furia", - effect: "Ataque con garras o guadaña que crece en intensidad si se usa repetidas veces.", + name: 'Corte Furia', + effect: 'Ataque con garras o guadaña que crece en intensidad si se usa repetidas veces.', }, steelWing: { - name: "Ala de Acero", - effect: "Alas macizas que golpean al objetivo y pueden subir la Defensa del usuario.", + name: 'Ala de Acero', + effect: 'Alas macizas que golpean al objetivo y pueden subir la Defensa del usuario.', }, meanLook: { - name: "Mal de Ojo", - effect: "Mal de ojo que impide al objetivo huir del combate o ser cambiado por otro.", + name: 'Mal de Ojo', + effect: 'Mal de ojo que impide al objetivo huir del combate o ser cambiado por otro.', }, attract: { - name: "Atracción", - effect: "Si el objetivo es del sexo opuesto, se enamorará y bajará la posibilidad de que ataque.", + name: 'Atracción', + effect: 'Si el objetivo es del sexo opuesto, se enamorará y bajará la posibilidad de que ataque.', }, sleepTalk: { - name: "Sonámbulo", - effect: "Mientras duerme, usa uno de sus movimientos elegido al azar.", + name: 'Sonámbulo', + effect: 'Mientras duerme, usa uno de sus movimientos elegido al azar.', }, healBell: { - name: "Cascabel Cura", - effect: "Tañido que cura los problemas de estado de todos los Pokémon del equipo.", + name: 'Cascabel Cura', + effect: 'Tañido que cura los problemas de estado de todos los Pokémon del equipo.', }, return: { - name: "Retribución", - effect: "Cuanto mayor sea la amistad con el Entrenador, más poderoso será este ataque.", + name: 'Retribución', + effect: 'Cuanto mayor sea la amistad con el Entrenador, más poderoso será este ataque.', }, present: { - name: "Presente", - effect: "Quien lo usa ataca al objetivo dándole un regalo con una bomba trampa. Sin embargo, a veces restaura sus PS.", + name: 'Presente', + effect: 'Quien lo usa ataca al objetivo dándole un regalo con una bomba trampa. Sin embargo, a veces restaura sus PS.', }, frustration: { - name: "Frustración", - effect: "Cuanto menor sea la amistad con el Entrenador, más poderoso será este ataque.", + name: 'Frustración', + effect: 'Cuanto menor sea la amistad con el Entrenador, más poderoso será este ataque.', }, safeguard: { - name: "Velo Sagrado", - effect: "Un poder misterioso que protege de problemas de estado durante cinco turnos.", + name: 'Velo Sagrado', + effect: 'Un poder misterioso que protege de problemas de estado durante cinco turnos.', }, painSplit: { - name: "Divide Dolor", - effect: "Suma los PS del usuario a los del objetivo y los reparte a partes iguales.", + name: 'Divide Dolor', + effect: 'Suma los PS del usuario a los del objetivo y los reparte a partes iguales.', }, sacredFire: { - name: "Fuego Sagrado", - effect: "Fuego místico de gran intensidad que puede causar quemaduras.", + name: 'Fuego Sagrado', + effect: 'Fuego místico de gran intensidad que puede causar quemaduras.', }, magnitude: { - name: "Magnitud", - effect: "Sacudida sísmica de intensidad variable que afecta a todos los Pokémon a su alrededor.", + name: 'Magnitud', + effect: 'Sacudida sísmica de intensidad variable que afecta a todos los Pokémon a su alrededor.', }, dynamicPunch: { - name: "Puño Dinámico", - effect: "Puñetazo con toda la fuerza concentrada. Causa confusión si atina.", + name: 'Puño Dinámico', + effect: 'Puñetazo con toda la fuerza concentrada. Causa confusión si atina.', }, megahorn: { - name: "Megacuerno", - effect: "Ensarta al objetivo con su imponente cuerno o cornamenta.", + name: 'Megacuerno', + effect: 'Ensarta al objetivo con su imponente cuerno o cornamenta.', }, dragonBreath: { - name: "Dragoaliento", - effect: "Poderosa ráfaga de aliento que golpea al objetivo y puede paralizarlo.", + name: 'Dragoaliento', + effect: 'Poderosa ráfaga de aliento que golpea al objetivo y puede paralizarlo.', }, batonPass: { - name: "Relevo", - effect: "Cambia el puesto con otro miembro del equipo y le pasa los cambios en las características.", + name: 'Relevo', + effect: 'Cambia el puesto con otro miembro del equipo y le pasa los cambios en las características.', }, encore: { - name: "Otra Vez", - effect: "El objetivo repite su último movimiento durante tres turnos.", + name: 'Otra Vez', + effect: 'El objetivo repite su último movimiento durante tres turnos.', }, pursuit: { - name: "Persecución", - effect: "Hace el doble de daño al objetivo que pide el relevo.", + name: 'Persecución', + effect: 'Hace el doble de daño al objetivo que pide el relevo.', }, rapidSpin: { - name: "Giro Rápido", - effect: "Ataque giratorio que puede eliminar movimientos como Atadura, Constricción y Drenadoras. También aumenta la Velocidad del usuario.", + name: 'Giro Rápido', + effect: 'Ataque giratorio que puede eliminar movimientos como Atadura, Constricción y Drenadoras. También aumenta la Velocidad del usuario.', }, sweetScent: { - name: "Dulce Aroma", - effect: "Un dulce aroma engatusa al objetivo, por lo que se reduce mucho su Evasión.", + name: 'Dulce Aroma', + effect: 'Un dulce aroma engatusa al objetivo, por lo que se reduce mucho su Evasión.', }, ironTail: { - name: "Cola Férrea", - effect: "Ataca con una cola férrea y puede reducir la Defensa del objetivo.", + name: 'Cola Férrea', + effect: 'Ataca con una cola férrea y puede reducir la Defensa del objetivo.', }, metalClaw: { - name: "Garra Metal", - effect: "Ataque con garras de acero que puede aumentar el Ataque del usuario.", + name: 'Garra Metal', + effect: 'Ataque con garras de acero que puede aumentar el Ataque del usuario.', }, vitalThrow: { - name: "Llave Vital", - effect: "El usuario ataca el último, pero no falla.", + name: 'Llave Vital', + effect: 'El usuario ataca el último, pero no falla.', }, morningSun: { - name: "Sol Matinal", - effect: "Restaura PS del usuario. La cantidad varía según el tiempo que haga.", + name: 'Sol Matinal', + effect: 'Restaura PS del usuario. La cantidad varía según el tiempo que haga.', }, synthesis: { - name: "Síntesis", - effect: "Restaura PS del usuario. La cantidad varía según el tiempo que haga.", + name: 'Síntesis', + effect: 'Restaura PS del usuario. La cantidad varía según el tiempo que haga.', }, moonlight: { - name: "Luz Lunar", - effect: "Restaura PS del usuario. La cantidad varía según el tiempo que haga.", + name: 'Luz Lunar', + effect: 'Restaura PS del usuario. La cantidad varía según el tiempo que haga.', }, hiddenPower: { - name: "Poder Oculto", - effect: "Movimiento cuyo tipo varía en función del Pokémon que lo usa.", + name: 'Poder Oculto', + effect: 'Movimiento cuyo tipo varía en función del Pokémon que lo usa.', }, crossChop: { - name: "Tajo Cruzado", - effect: "Corte doble que suele propinar un golpe crítico.", + name: 'Tajo Cruzado', + effect: 'Corte doble que suele propinar un golpe crítico.', }, twister: { - name: "Ciclón", - effect: "Crea un violento tornado para hacer trizas al objetivo. Puede amedrentarlo.", + name: 'Ciclón', + effect: 'Crea un violento tornado para hacer trizas al objetivo. Puede amedrentarlo.', }, rainDance: { - name: "Danza Lluvia", - effect: "Genera una fuerte lluvia que refuerza los movimientos de tipo Agua durante cinco turnos y debilita los de tipo Fuego.", + name: 'Danza Lluvia', + effect: 'Genera una fuerte lluvia que refuerza los movimientos de tipo Agua durante cinco turnos y debilita los de tipo Fuego.', }, sunnyDay: { - name: "Día Soleado", - effect: "Hace que se intensifique el efecto del sol durante cinco turnos, lo que potencia los movimientos de tipo Fuego y debilita los de tipo Agua.", + name: 'Día Soleado', + effect: 'Hace que se intensifique el efecto del sol durante cinco turnos, lo que potencia los movimientos de tipo Fuego y debilita los de tipo Agua.', }, crunch: { - name: "Triturar", - effect: "Tritura con afilados colmillos y puede reducir la Defensa del objetivo.", + name: 'Triturar', + effect: 'Tritura con afilados colmillos y puede reducir la Defensa del objetivo.', }, mirrorCoat: { - name: "Manto Espejo", - effect: "Responde a un ataque especial ocasionando el doble del daño recibido.", + name: 'Manto Espejo', + effect: 'Responde a un ataque especial ocasionando el doble del daño recibido.', }, psychUp: { - name: "Autosugestión", - effect: "El usuario se sume en un trance y copia cualquier cambio que haya en las características de su objetivo.", + name: 'Autosugestión', + effect: 'El usuario se sume en un trance y copia cualquier cambio que haya en las características de su objetivo.', }, extremeSpeed: { - name: "Veloc. Extrema", - effect: "Ataque de una velocidad extrema. Este movimiento tiene prioridad alta.", + name: 'Veloc. Extrema', + effect: 'Ataque de una velocidad extrema. Este movimiento tiene prioridad alta.', }, ancientPower: { - name: "Poder Pasado", - effect: "Ataque prehistórico que puede subir todas las características.", + name: 'Poder Pasado', + effect: 'Ataque prehistórico que puede subir todas las características.', }, shadowBall: { - name: "Bola Sombra", - effect: "Lanza una bola oscura que puede bajar la Defensa Especial del objetivo.", + name: 'Bola Sombra', + effect: 'Lanza una bola oscura que puede bajar la Defensa Especial del objetivo.', }, futureSight: { - name: "Premonición", - effect: "Concentra energía psíquica para golpear al objetivo dos turnos después.", + name: 'Premonición', + effect: 'Concentra energía psíquica para golpear al objetivo dos turnos después.', }, rockSmash: { - name: "Golpe Roca", - effect: "Propina un gran puñetazo que puede reducir la Defensa del objetivo.", + name: 'Golpe Roca', + effect: 'Propina un gran puñetazo que puede reducir la Defensa del objetivo.', }, whirlpool: { - name: "Torbellino", - effect: "Una tromba de agua atrapa al objetivo durante cuatro o cinco turnos.", + name: 'Torbellino', + effect: 'Una tromba de agua atrapa al objetivo durante cuatro o cinco turnos.', }, beatUp: { - name: "Paliza", - effect: "Ataque de todo el equipo Pokémon. Cuantos más haya, más veces se atacará.", + name: 'Paliza', + effect: 'Ataque de todo el equipo Pokémon. Cuantos más haya, más veces se atacará.', }, fakeOut: { - name: "Sorpresa", - effect: "Amedrenta al objetivo con este movimiento de prioridad alta. Solo sirve en el primer turno.", + name: 'Sorpresa', + effect: 'Amedrenta al objetivo con este movimiento de prioridad alta. Solo sirve en el primer turno.', }, uproar: { - name: "Alboroto", - effect: "Ataca de forma alborotada durante tres turnos. Mantiene despiertos a todos.", + name: 'Alboroto', + effect: 'Ataca de forma alborotada durante tres turnos. Mantiene despiertos a todos.', }, stockpile: { - name: "Reserva", - effect: "Acumula energía y sube la Defensa y la Defensa Especial. Puede utilizarse hasta tres veces.", + name: 'Reserva', + effect: 'Acumula energía y sube la Defensa y la Defensa Especial. Puede utilizarse hasta tres veces.', }, spitUp: { - name: "Escupir", - effect: "Libera de una vez la energía acumulada con Reserva. La potencia del movimiento será proporcional a la cantidad de energía acumulada.", + name: 'Escupir', + effect: 'Libera de una vez la energía acumulada con Reserva. La potencia del movimiento será proporcional a la cantidad de energía acumulada.', }, swallow: { - name: "Tragar", - effect: "Absorbe la energía acumulada con Reserva para recobrar salud. Cuanta más se haya acumulado, mayor será el número de PS que se recuperen.", + name: 'Tragar', + effect: 'Absorbe la energía acumulada con Reserva para recobrar salud. Cuanta más se haya acumulado, mayor será el número de PS que se recuperen.', }, heatWave: { - name: "Onda Ígnea", - effect: "Provoca un viento abrasador que puede quemar al objetivo.", + name: 'Onda Ígnea', + effect: 'Provoca un viento abrasador que puede quemar al objetivo.', }, hail: { - name: "Granizo", - effect: "Tormenta de granizo que dura cinco turnos. Hiere a todos los Pokémon excepto a los de tipo Hielo.", + name: 'Granizo', + effect: 'Tormenta de granizo que dura cinco turnos. Hiere a todos los Pokémon excepto a los de tipo Hielo.', }, torment: { - name: "Tormento", - effect: "Atormenta y enfurece al objetivo, que no puede usar dos veces seguidas el mismo movimiento.", + name: 'Tormento', + effect: 'Atormenta y enfurece al objetivo, que no puede usar dos veces seguidas el mismo movimiento.', }, flatter: { - name: "Camelo", - effect: "Halaga al objetivo y lo confunde, pero también sube su Ataque Especial.", + name: 'Camelo', + effect: 'Halaga al objetivo y lo confunde, pero también sube su Ataque Especial.', }, willOWisp: { - name: "Fuego Fatuo", - effect: "Siniestras llamas moradas que producen quemaduras.", + name: 'Fuego Fatuo', + effect: 'Siniestras llamas moradas que producen quemaduras.', }, memento: { - name: "Legado", - effect: "El usuario se debilita, pero baja mucho tanto el Ataque como el Ataque Especial del objetivo.", + name: 'Legado', + effect: 'El usuario se debilita, pero baja mucho tanto el Ataque como el Ataque Especial del objetivo.', }, facade: { - name: "Imagen", - effect: "Si el usuario está quemado, paralizado o envenenado, ataca con el doble de potencia.", + name: 'Imagen', + effect: 'Si el usuario está quemado, paralizado o envenenado, ataca con el doble de potencia.', }, focusPunch: { - name: "Puño Certero", - effect: "Se concentra para dar un puñetazo. Falla si se sufre un golpe antes de su uso.", + name: 'Puño Certero', + effect: 'Se concentra para dar un puñetazo. Falla si se sufre un golpe antes de su uso.', }, smellingSalts: { - name: "Estímulo", - effect: "Hace el doble de daño a objetivos paralizados, pero también cura la parálisis.", + name: 'Estímulo', + effect: 'Hace el doble de daño a objetivos paralizados, pero también cura la parálisis.', }, followMe: { - name: "Señuelo", - effect: "Llama la atención para concentrar todos los ataques de todos los del equipo rival hacia sí mismo.", + name: 'Señuelo', + effect: 'Llama la atención para concentrar todos los ataques de todos los del equipo rival hacia sí mismo.', }, naturePower: { - name: "Adaptación", - effect: "Usa el poder de la naturaleza para atacar. Su efecto varía según el entorno de combate.", + name: 'Adaptación', + effect: 'Usa el poder de la naturaleza para atacar. Su efecto varía según el entorno de combate.', }, charge: { - name: "Carga", - effect: "Recarga energía para potenciar el siguiente movimiento de tipo Eléctrico. También sube la Defensa Especial.", + name: 'Carga', + effect: 'Recarga energía para potenciar el siguiente movimiento de tipo Eléctrico. También sube la Defensa Especial.', }, taunt: { - name: "Mofa", - effect: "Enfurece al objetivo para que solo use movimientos de ataque durante tres turnos.", + name: 'Mofa', + effect: 'Enfurece al objetivo para que solo use movimientos de ataque durante tres turnos.', }, helpingHand: { - name: "Refuerzo", - effect: "El usuario ayuda a un aliado reforzando la potencia de su ataque.", + name: 'Refuerzo', + effect: 'El usuario ayuda a un aliado reforzando la potencia de su ataque.', }, trick: { - name: "Truco", - effect: "Engaña al objetivo desprevenido e intercambia objetos.", + name: 'Truco', + effect: 'Engaña al objetivo desprevenido e intercambia objetos.', }, rolePlay: { - name: "Imitación", - effect: "Imita al objetivo por completo y copia su habilidad.", + name: 'Imitación', + effect: 'Imita al objetivo por completo y copia su habilidad.', }, wish: { - name: "Deseo", - effect: "Restaura en el siguiente turno la mitad de los PS máximos del usuario o se los pasa al Pokémon que lo sustituye.", + name: 'Deseo', + effect: 'Restaura en el siguiente turno la mitad de los PS máximos del usuario o se los pasa al Pokémon que lo sustituye.', }, assist: { - name: "Ayuda", - effect: "Usa un movimiento de un miembro del equipo elegido al azar.", + name: 'Ayuda', + effect: 'Usa un movimiento de un miembro del equipo elegido al azar.', }, ingrain: { - name: "Arraigo", - effect: "Echa raíces para recuperar PS en cada turno, pero impide el relevo.", + name: 'Arraigo', + effect: 'Echa raíces para recuperar PS en cada turno, pero impide el relevo.', }, superpower: { - name: "Fuerza Bruta", - effect: "Ataque de gran potencia, pero que reduce el Ataque y la Defensa del agresor.", + name: 'Fuerza Bruta', + effect: 'Ataque de gran potencia, pero que reduce el Ataque y la Defensa del agresor.', }, magicCoat: { - name: "Capa Mágica", - effect: "Barrera capaz de devolver al agresor movimientos como Drenadoras y otros que alteran el estado o las características.", + name: 'Capa Mágica', + effect: 'Barrera capaz de devolver al agresor movimientos como Drenadoras y otros que alteran el estado o las características.', }, recycle: { - name: "Reciclaje", - effect: "Recicla y así recupera un objeto equipado de un solo uso que ya haya sido empleado durante el combate.", + name: 'Reciclaje', + effect: 'Recicla y así recupera un objeto equipado de un solo uso que ya haya sido empleado durante el combate.', }, revenge: { - name: "Desquite", - effect: "Ataque que produce el doble de daño si el usuario resulta herido en el mismo turno.", + name: 'Desquite', + effect: 'Ataque que produce el doble de daño si el usuario resulta herido en el mismo turno.', }, brickBreak: { - name: "Demolición", - effect: "Potente ataque que también es capaz de destruir barreras como Pantalla de Luz y Reflejo.", + name: 'Demolición', + effect: 'Potente ataque que también es capaz de destruir barreras como Pantalla de Luz y Reflejo.', }, yawn: { - name: "Bostezo", - effect: "Gran bostezo que induce el sueño en el objetivo en el siguiente turno.", + name: 'Bostezo', + effect: 'Gran bostezo que induce el sueño en el objetivo en el siguiente turno.', }, knockOff: { - name: "Desarme", - effect: "Impide al objetivo usar el objeto que lleva durante el combate. La potencia del movimiento se multiplica si el objetivo lleva un objeto.", + name: 'Desarme', + effect: 'Impide al objetivo usar el objeto que lleva durante el combate. La potencia del movimiento se multiplica si el objetivo lleva un objeto.', }, endeavor: { - name: "Esfuerzo", - effect: "Reduce los PS del objetivo para que igualen a los del atacante.", + name: 'Esfuerzo', + effect: 'Reduce los PS del objetivo para que igualen a los del atacante.', }, eruption: { - name: "Estallido", - effect: "Furia explosiva. Cuanto menor sea el número de PS del usuario, menos potencia tendrá el movimiento.", + name: 'Estallido', + effect: 'Furia explosiva. Cuanto menor sea el número de PS del usuario, menos potencia tendrá el movimiento.', }, skillSwap: { - name: "Intercambio", - effect: "Usa el poder psíquico para intercambiar habilidades con el objetivo.", + name: 'Intercambio', + effect: 'Usa el poder psíquico para intercambiar habilidades con el objetivo.', }, imprison: { - name: "Sellar", - effect: "Impide a los rivales usar movimientos conocidos por el usuario durante el combate.", + name: 'Sellar', + effect: 'Impide a los rivales usar movimientos conocidos por el usuario durante el combate.', }, refresh: { - name: "Alivio", - effect: "Descansa para curar parálisis, envenenamiento o quemaduras.", + name: 'Alivio', + effect: 'Descansa para curar parálisis, envenenamiento o quemaduras.', }, grudge: { - name: "Rabia", - effect: "Si el usuario se debilita al recibir un ataque, todos los PP de este último ataque serán eliminados.", + name: 'Rabia', + effect: 'Si el usuario se debilita al recibir un ataque, todos los PP de este último ataque serán eliminados.', }, snatch: { - name: "Robo", - effect: "Roba el efecto de los movimientos de curación o de cambio de características que se usen.", + name: 'Robo', + effect: 'Roba el efecto de los movimientos de curación o de cambio de características que se usen.', }, secretPower: { - name: "Daño Secreto", - effect: "Ataque cuyos efectos secundarios varían según el entorno de combate.", + name: 'Daño Secreto', + effect: 'Ataque cuyos efectos secundarios varían según el entorno de combate.', }, dive: { - name: "Buceo", - effect: "El usuario se sumerge en el primer turno y ataca en el segundo.", + name: 'Buceo', + effect: 'El usuario se sumerge en el primer turno y ataca en el segundo.', }, armThrust: { - name: "Empujón", - effect: "Fuertes empujones que golpean de dos a cinco veces seguidas.", + name: 'Empujón', + effect: 'Fuertes empujones que golpean de dos a cinco veces seguidas.', }, camouflage: { - name: "Camuflaje", - effect: "Modifica el tipo del Pokémon según el terreno de combate donde esté.", + name: 'Camuflaje', + effect: 'Modifica el tipo del Pokémon según el terreno de combate donde esté.', }, tailGlow: { - name: "Luminicola", - effect: "Se concentra en una ráfaga de luz que sube muchísimo el Ataque Especial.", + name: 'Luminicola', + effect: 'Se concentra en una ráfaga de luz que sube muchísimo el Ataque Especial.', }, lusterPurge: { - name: "Resplandor", - effect: "Fogonazo de luz que inflige daño al objetivo y puede reducir su Defensa Especial.", + name: 'Resplandor', + effect: 'Fogonazo de luz que inflige daño al objetivo y puede reducir su Defensa Especial.', }, mistBall: { - name: "Bola Neblina", - effect: "Bola de plumas neblinosas que inflige daño al objetivo y puede reducir su Ataque Especial.", + name: 'Bola Neblina', + effect: 'Bola de plumas neblinosas que inflige daño al objetivo y puede reducir su Ataque Especial.', }, featherDance: { - name: "Danza Pluma", - effect: "Envuelve al objetivo con un manto de plumas para reducir mucho su Ataque.", + name: 'Danza Pluma', + effect: 'Envuelve al objetivo con un manto de plumas para reducir mucho su Ataque.', }, teeterDance: { - name: "Danza Caos", - effect: "Danza histérica que confunde a los Pokémon que están alrededor del usuario.", + name: 'Danza Caos', + effect: 'Danza histérica que confunde a los Pokémon que están alrededor del usuario.', }, blazeKick: { - name: "Patada Ígnea", - effect: "Patada que suele ser un golpe crítico y puede causar quemaduras.", + name: 'Patada Ígnea', + effect: 'Patada que suele ser un golpe crítico y puede causar quemaduras.', }, mudSport: { - name: "Chapoteo Lodo", - effect: "El usuario esparce lodo a su alrededor, lo que debilita los movimientos de tipo Eléctrico durante cinco turnos.", + name: 'Chapoteo Lodo', + effect: 'El usuario esparce lodo a su alrededor, lo que debilita los movimientos de tipo Eléctrico durante cinco turnos.', }, iceBall: { - name: "Bola Hielo", - effect: "El atacante rueda contra el objetivo durante cinco turnos, cada vez con mayor fuerza.", + name: 'Bola Hielo', + effect: 'El atacante rueda contra el objetivo durante cinco turnos, cada vez con mayor fuerza.', }, needleArm: { - name: "Brazo Pincho", - effect: "Pega con brazos de pinchos y puede hacer retroceder al objetivo.", + name: 'Brazo Pincho', + effect: 'Pega con brazos de pinchos y puede hacer retroceder al objetivo.', }, slackOff: { - name: "Relajo", - effect: "El usuario se relaja y restaura la mitad de sus PS máximos.", + name: 'Relajo', + effect: 'El usuario se relaja y restaura la mitad de sus PS máximos.', }, hyperVoice: { - name: "Vozarrón", - effect: "Grito desgarrador que inflige daño al objetivo.", + name: 'Vozarrón', + effect: 'Grito desgarrador que inflige daño al objetivo.', }, poisonFang: { - name: "Colmillo Veneno", - effect: "Mordedura con colmillos venenosos que inflige daño al objetivo y puede envenenarlo gravemente.", + name: 'Colmillo Veneno', + effect: 'Mordedura con colmillos venenosos que inflige daño al objetivo y puede envenenarlo gravemente.', }, crushClaw: { - name: "Garra Brutal", - effect: "Hace trizas al objetivo con garras afiladas y puede reducir su Defensa.", + name: 'Garra Brutal', + effect: 'Hace trizas al objetivo con garras afiladas y puede reducir su Defensa.', }, blastBurn: { - name: "Anillo Ígneo", - effect: "Calcina al objetivo con una explosión de fuego. El usuario deberá descansar en el siguiente turno.", + name: 'Anillo Ígneo', + effect: 'Calcina al objetivo con una explosión de fuego. El usuario deberá descansar en el siguiente turno.', }, hydroCannon: { - name: "Hidrocañón", - effect: "Ataca al objetivo con un cañonazo de agua. El usuario deberá descansar en el siguiente turno.", + name: 'Hidrocañón', + effect: 'Ataca al objetivo con un cañonazo de agua. El usuario deberá descansar en el siguiente turno.', }, meteorMash: { - name: "Puño Meteoro", - effect: "Puñetazo que impacta como un meteorito y puede subir el Ataque del agresor.", + name: 'Puño Meteoro', + effect: 'Puñetazo que impacta como un meteorito y puede subir el Ataque del agresor.', }, astonish: { - name: "Impresionar", - effect: "Lanza un grito tan tremendo que impresiona y puede amedrentar al objetivo.", + name: 'Impresionar', + effect: 'Lanza un grito tan tremendo que impresiona y puede amedrentar al objetivo.', }, weatherBall: { - name: "Meteorobola", - effect: "El tipo y fuerza del ataque varían según el tiempo que haga.", + name: 'Meteorobola', + effect: 'El tipo y fuerza del ataque varían según el tiempo que haga.', }, aromatherapy: { - name: "Aromaterapia", - effect: "Cura todos los problemas de estado del equipo con un suave aroma.", + name: 'Aromaterapia', + effect: 'Cura todos los problemas de estado del equipo con un suave aroma.', }, fakeTears: { - name: "Llanto Falso", - effect: "Lágrimas de cocodrilo que bajan mucho la Defensa Especial del objetivo.", + name: 'Llanto Falso', + effect: 'Lágrimas de cocodrilo que bajan mucho la Defensa Especial del objetivo.', }, airCutter: { - name: "Aire Afilado", - effect: "Viento cortante que azota. Suele ser un golpe crítico.", + name: 'Aire Afilado', + effect: 'Viento cortante que azota. Suele ser un golpe crítico.', }, overheat: { - name: "Sofoco", - effect: "Ataque en toda regla que baja mucho el Ataque Especial de quien lo usa.", + name: 'Sofoco', + effect: 'Ataque en toda regla que baja mucho el Ataque Especial de quien lo usa.', }, odorSleuth: { - name: "Rastreo", - effect: "Permite atacar con cualquier movimiento a objetivos de tipo Fantasma y golpear a Pokémon evasivos.", + name: 'Rastreo', + effect: 'Permite atacar con cualquier movimiento a objetivos de tipo Fantasma y golpear a Pokémon evasivos.', }, rockTomb: { - name: "Tumba Rocas", - effect: "Tira rocas que detienen al objetivo y bajan su Velocidad.", + name: 'Tumba Rocas', + effect: 'Tira rocas que detienen al objetivo y bajan su Velocidad.', }, silverWind: { - name: "Viento Plata", - effect: "Fuerte viento con polvo de escamas. Puede subir todas las características de quien lo usa.", + name: 'Viento Plata', + effect: 'Fuerte viento con polvo de escamas. Puede subir todas las características de quien lo usa.', }, metalSound: { - name: "Eco Metálico", - effect: "Horrible chirrido metálico que reduce mucho la Defensa Especial del objetivo.", + name: 'Eco Metálico', + effect: 'Horrible chirrido metálico que reduce mucho la Defensa Especial del objetivo.', }, grassWhistle: { - name: "Silbato", - effect: "Agradable melodía que adormece al objetivo.", + name: 'Silbato', + effect: 'Agradable melodía que adormece al objetivo.', }, tickle: { - name: "Cosquillas", - effect: "Hace reír al objetivo para bajar su Ataque y Defensa.", + name: 'Cosquillas', + effect: 'Hace reír al objetivo para bajar su Ataque y Defensa.', }, cosmicPower: { - name: "Masa Cósmica", - effect: "Sube la Defensa y la Defensa Especial propias con energía mística.", + name: 'Masa Cósmica', + effect: 'Sube la Defensa y la Defensa Especial propias con energía mística.', }, waterSpout: { - name: "Salpicar", - effect: "Chorro de agua. Cuantos menos PS tenga el usuario, menos potencia tendrá el movimiento.", + name: 'Salpicar', + effect: 'Chorro de agua. Cuantos menos PS tenga el usuario, menos potencia tendrá el movimiento.', }, signalBeam: { - name: "Rayo Señal", - effect: "Ataca con un rayo de luz siniestro. Puede confundir al objetivo.", + name: 'Rayo Señal', + effect: 'Ataca con un rayo de luz siniestro. Puede confundir al objetivo.', }, shadowPunch: { - name: "Puño Sombra", - effect: "Puñetazo procedente de las sombras que no falla nunca.", + name: 'Puño Sombra', + effect: 'Puñetazo procedente de las sombras que no falla nunca.', }, extrasensory: { - name: "Paranormal", - effect: "Emite una energía muy extraña que puede amedrentar al objetivo.", + name: 'Paranormal', + effect: 'Emite una energía muy extraña que puede amedrentar al objetivo.', }, skyUppercut: { - name: "Gancho Alto", - effect: "Gancho ascendente de gran ímpetu.", + name: 'Gancho Alto', + effect: 'Gancho ascendente de gran ímpetu.', }, sandTomb: { - name: "Bucle Arena", - effect: "Enreda al objetivo en un remolino de arena de cuatro a cinco turnos.", + name: 'Bucle Arena', + effect: 'Enreda al objetivo en un remolino de arena de cuatro a cinco turnos.', }, sheerCold: { - name: "Frío Polar", - effect: "Debilita al objetivo de un solo golpe. Si lo usa un Pokémon que no sea de tipo Hielo, es difícil que acierte.", + name: 'Frío Polar', + effect: 'Debilita al objetivo de un solo golpe. Si lo usa un Pokémon que no sea de tipo Hielo, es difícil que acierte.', }, muddyWater: { - name: "Agua Lodosa", - effect: "Ataque con agua lodosa que puede reducir la Precisión del objetivo.", + name: 'Agua Lodosa', + effect: 'Ataque con agua lodosa que puede reducir la Precisión del objetivo.', }, bulletSeed: { - name: "Semilladora", - effect: "Dispara rápido de dos a cinco ráfagas de semillas de manera consecutiva.", + name: 'Semilladora', + effect: 'Dispara rápido de dos a cinco ráfagas de semillas de manera consecutiva.', }, aerialAce: { - name: "Golpe Aéreo", - effect: "Desconcierta al objetivo con movimientos muy rápidos antes de cercenarlo. No falla nunca.", + name: 'Golpe Aéreo', + effect: 'Desconcierta al objetivo con movimientos muy rápidos antes de cercenarlo. No falla nunca.', }, icicleSpear: { - name: "Carámbano", - effect: "Ataca lanzando de dos a cinco ráfagas consecutivas de carámbanos.", + name: 'Carámbano', + effect: 'Ataca lanzando de dos a cinco ráfagas consecutivas de carámbanos.', }, ironDefense: { - name: "Defensa Férrea", - effect: "Fortalece el cuerpo como si fuera de hierro y sube mucho la Defensa.", + name: 'Defensa Férrea', + effect: 'Fortalece el cuerpo como si fuera de hierro y sube mucho la Defensa.', }, block: { - name: "Bloqueo", - effect: "Le corta el paso al objetivo para que no pueda escapar.", + name: 'Bloqueo', + effect: 'Le corta el paso al objetivo para que no pueda escapar.', }, howl: { - name: "Aullido", - effect: "Aullido que sube el ánimo y aumenta el Ataque del equipo.", + name: 'Aullido', + effect: 'Aullido que sube el ánimo y aumenta el Ataque del equipo.', }, dragonClaw: { - name: "Garra Dragón", - effect: "Araña al objetivo con garras afiladas.", + name: 'Garra Dragón', + effect: 'Araña al objetivo con garras afiladas.', }, frenzyPlant: { - name: "Planta Feroz", - effect: "Golpea con una enorme planta. El usuario deberá descansar en el siguiente turno.", + name: 'Planta Feroz', + effect: 'Golpea con una enorme planta. El usuario deberá descansar en el siguiente turno.', }, bulkUp: { - name: "Corpulencia", - effect: "Robustece el cuerpo para subir el Ataque y la Defensa.", + name: 'Corpulencia', + effect: 'Robustece el cuerpo para subir el Ataque y la Defensa.', }, bounce: { - name: "Bote", - effect: "El usuario bota en el primer turno y golpea al objetivo en el segundo y puede llegar a paralizarlo.", + name: 'Bote', + effect: 'El usuario bota en el primer turno y golpea al objetivo en el segundo y puede llegar a paralizarlo.', }, mudShot: { - name: "Disparo Lodo", - effect: "El usuario ataca lanzando una bola de lodo al objetivo que también reduce su Velocidad.", + name: 'Disparo Lodo', + effect: 'El usuario ataca lanzando una bola de lodo al objetivo que también reduce su Velocidad.', }, poisonTail: { - name: "Cola Veneno", - effect: "Puede envenenar y dar un golpe crítico.", + name: 'Cola Veneno', + effect: 'Puede envenenar y dar un golpe crítico.', }, covet: { - name: "Antojo", - effect: "Se acerca con ternura al objetivo y tiene un 30% de posibilidades de robar el objeto que lleve.", + name: 'Antojo', + effect: 'Se acerca con ternura al objetivo y tiene un 30% de posibilidades de robar el objeto que lleve.', }, voltTackle: { - name: "Placaje Eléc", - effect: "Quien lo usa electrifica su cuerpo para luego atacar. Se hiere mucho a sí mismo, pero puede paralizar al objetivo.", + name: 'Placaje Eléc', + effect: 'Quien lo usa electrifica su cuerpo para luego atacar. Se hiere mucho a sí mismo, pero puede paralizar al objetivo.', }, magicalLeaf: { - name: "Hoja Mágica", - effect: "Esparce extrañas hojas que persiguen al objetivo. No falla nunca.", + name: 'Hoja Mágica', + effect: 'Esparce extrañas hojas que persiguen al objetivo. No falla nunca.', }, waterSport: { - name: "Hidrochorro", - effect: "El usuario se empapa en agua, lo que debilita los movimientos de tipo Fuego durante cinco turnos.", + name: 'Hidrochorro', + effect: 'El usuario se empapa en agua, lo que debilita los movimientos de tipo Fuego durante cinco turnos.', }, calmMind: { - name: "Paz Mental", - effect: "Aumenta la concentración y calma el espíritu para subir el Ataque Especial y la Defensa Especial.", + name: 'Paz Mental', + effect: 'Aumenta la concentración y calma el espíritu para subir el Ataque Especial y la Defensa Especial.', }, leafBlade: { - name: "Hoja Aguda", - effect: "Acuchilla con una hoja fina. Suele dar un golpe crítico.", + name: 'Hoja Aguda', + effect: 'Acuchilla con una hoja fina. Suele dar un golpe crítico.', }, dragonDance: { - name: "Danza Dragón", - effect: "Danza mística que sube el Ataque y la Velocidad.", + name: 'Danza Dragón', + effect: 'Danza mística que sube el Ataque y la Velocidad.', }, rockBlast: { - name: "Pedrada", - effect: "Lanza pedruscos al objetivo de dos a cinco veces consecutivas.", + name: 'Pedrada', + effect: 'Lanza pedruscos al objetivo de dos a cinco veces consecutivas.', }, shockWave: { - name: "Onda Voltio", - effect: "Ataque eléctrico muy rápido que no falla nunca.", + name: 'Onda Voltio', + effect: 'Ataque eléctrico muy rápido que no falla nunca.', }, waterPulse: { - name: "Hidropulso", - effect: "Ataca con una potente onda de agua. Puede confundir al objetivo.", + name: 'Hidropulso', + effect: 'Ataca con una potente onda de agua. Puede confundir al objetivo.', }, doomDesire: { - name: "Deseo Oculto", - effect: "Ataca al objetivo con innumerables haces de luz dos turnos después de haber usado el movimiento.", + name: 'Deseo Oculto', + effect: 'Ataca al objetivo con innumerables haces de luz dos turnos después de haber usado el movimiento.', }, psychoBoost: { - name: "Psicoataque", - effect: "Ataque en toda regla que baja mucho el Ataque Especial de quien lo usa.", + name: 'Psicoataque', + effect: 'Ataque en toda regla que baja mucho el Ataque Especial de quien lo usa.', }, roost: { - name: "Respiro", - effect: "Aterriza sobre la superficie para descansar. Recupera hasta la mitad del total de sus PS.", + name: 'Respiro', + effect: 'Aterriza sobre la superficie para descansar. Recupera hasta la mitad del total de sus PS.', }, gravity: { - name: "Gravedad", - effect: "Durante cinco turnos, se anulan los movimientos que alzan el vuelo y los Pokémon de tipo Volador o que levitan son vulnerables a movimientos de tipo Tierra.", + name: 'Gravedad', + effect: 'Durante cinco turnos, se anulan los movimientos que alzan el vuelo y los Pokémon de tipo Volador o que levitan son vulnerables a movimientos de tipo Tierra.', }, miracleEye: { - name: "Gran Ojo", - effect: "Permite atacar con cualquier movimiento a objetivos de tipo Siniestro y golpear a Pokémon evasivos.", + name: 'Gran Ojo', + effect: 'Permite atacar con cualquier movimiento a objetivos de tipo Siniestro y golpear a Pokémon evasivos.', }, wakeUpSlap: { - name: "Espabila", - effect: "Inflige gran daño a objetivos dormidos. Sin embargo, los bofetones también los despiertan.", + name: 'Espabila', + effect: 'Inflige gran daño a objetivos dormidos. Sin embargo, los bofetones también los despiertan.', }, hammerArm: { - name: "Machada", - effect: "Un terrible puño golpea al contrincante, pero la Velocidad del usuario se ve reducida.", + name: 'Machada', + effect: 'Un terrible puño golpea al contrincante, pero la Velocidad del usuario se ve reducida.', }, gyroBall: { - name: "Giro Bola", - effect: "Embiste al objetivo con un potente ataque giratorio. Cuanto más lento es el usuario, más daño causa.", + name: 'Giro Bola', + effect: 'Embiste al objetivo con un potente ataque giratorio. Cuanto más lento es el usuario, más daño causa.', }, healingWish: { - name: "Deseo Cura", - effect: "El usuario se debilita, pero cura los problemas de estado del Pokémon que lo sustituye y restaura sus PS.", + name: 'Deseo Cura', + effect: 'El usuario se debilita, pero cura los problemas de estado del Pokémon que lo sustituye y restaura sus PS.', }, brine: { - name: "Salmuera", - effect: "Si al objetivo le queda la mitad o menos de sus PS, el ataque será el doble de fuerte.", + name: 'Salmuera', + effect: 'Si al objetivo le queda la mitad o menos de sus PS, el ataque será el doble de fuerte.', }, naturalGift: { - name: "Don Natural", - effect: "La baya que lleva presta su fuerza para atacar. El tipo de ataque y su fuerza dependen de la baya.", + name: 'Don Natural', + effect: 'La baya que lleva presta su fuerza para atacar. El tipo de ataque y su fuerza dependen de la baya.', }, feint: { - name: "Amago", - effect: "Permite golpear a objetivos que han utilizado movimientos como Protección o Detección y anula sus efectos.", + name: 'Amago', + effect: 'Permite golpear a objetivos que han utilizado movimientos como Protección o Detección y anula sus efectos.', }, pluck: { - name: "Picoteo", - effect: "Picotea al objetivo. Si este sostiene una baya, la picotea también y obtiene sus efectos.", + name: 'Picoteo', + effect: 'Picotea al objetivo. Si este sostiene una baya, la picotea también y obtiene sus efectos.', }, tailwind: { - name: "Viento Afín", - effect: "Crea un fuerte remolino que aumenta la Velocidad de los Pokémon de tu equipo durante cuatro turnos.", + name: 'Viento Afín', + effect: 'Crea un fuerte remolino que aumenta la Velocidad de los Pokémon de tu equipo durante cuatro turnos.', }, acupressure: { - name: "Acupresión", - effect: "Aplica presión en puntos clave del cuerpo para aumentar mucho una característica al azar.", + name: 'Acupresión', + effect: 'Aplica presión en puntos clave del cuerpo para aumentar mucho una característica al azar.', }, metalBurst: { - name: "Represión Metal", - effect: "Devuelve al rival el último ataque recibido, pero con mucha más fuerza.", + name: 'Represión Metal', + effect: 'Devuelve al rival el último ataque recibido, pero con mucha más fuerza.', }, uTurn: { - name: "Ida y Vuelta", - effect: "Tras atacar, el usuario da paso a toda prisa a otro Pokémon del equipo.", + name: 'Ida y Vuelta', + effect: 'Tras atacar, el usuario da paso a toda prisa a otro Pokémon del equipo.', }, closeCombat: { - name: "A Bocajarro", - effect: "Lucha abiertamente contra el objetivo sin protegerse. También reduce la Defensa y la Defensa Especial del usuario.", + name: 'A Bocajarro', + effect: 'Lucha abiertamente contra el objetivo sin protegerse. También reduce la Defensa y la Defensa Especial del usuario.', }, payback: { - name: "Vendetta", - effect: "El usuario contraataca con el doble de fuerza si el objetivo usa un movimiento antes.", + name: 'Vendetta', + effect: 'El usuario contraataca con el doble de fuerza si el objetivo usa un movimiento antes.', }, assurance: { - name: "Buena Baza", - effect: "Si el objetivo ya ha sufrido daño en ese turno, la fuerza del ataque se duplica.", + name: 'Buena Baza', + effect: 'Si el objetivo ya ha sufrido daño en ese turno, la fuerza del ataque se duplica.', }, embargo: { - name: "Embargo", - effect: "Impide al objetivo usar el objeto que lleva durante cinco turnos. Su Entrenador tampoco puede usar objetos con él.", + name: 'Embargo', + effect: 'Impide al objetivo usar el objeto que lleva durante cinco turnos. Su Entrenador tampoco puede usar objetos con él.', }, fling: { - name: "Lanzamiento", - effect: "El usuario lanza contra el objetivo el objeto que lleva. La potencia del movimiento y su efecto varían según el objeto.", + name: 'Lanzamiento', + effect: 'El usuario lanza contra el objetivo el objeto que lleva. La potencia del movimiento y su efecto varían según el objeto.', }, psychoShift: { - name: "Psicocambio", - effect: "Usa su poder mental para transferir al objetivo sus problemas de estado.", + name: 'Psicocambio', + effect: 'Usa su poder mental para transferir al objetivo sus problemas de estado.', }, trumpCard: { - name: "As Oculto", - effect: "Cuantos menos PP tenga el movimiento, mayor será la fuerza para atacar.", + name: 'As Oculto', + effect: 'Cuantos menos PP tenga el movimiento, mayor será la fuerza para atacar.', }, healBlock: { - name: "Anticura", - effect: "Impide al objetivo usar movimientos, habilidades y objetos equipados que recuperan PS durante cinco turnos.", + name: 'Anticura', + effect: 'Impide al objetivo usar movimientos, habilidades y objetos equipados que recuperan PS durante cinco turnos.', }, wringOut: { - name: "Estrujón", - effect: "Estruja con fuerza al objetivo. Cuantos más PS tenga el objetivo, más fuerza tendrá el ataque.", + name: 'Estrujón', + effect: 'Estruja con fuerza al objetivo. Cuantos más PS tenga el objetivo, más fuerza tendrá el ataque.', }, powerTrick: { - name: "Truco Fuerza", - effect: "El usuario emplea su poder mental para intercambiar su Ataque y su Defensa.", + name: 'Truco Fuerza', + effect: 'El usuario emplea su poder mental para intercambiar su Ataque y su Defensa.', }, gastroAcid: { - name: "Bilis", - effect: "El usuario arroja sus jugos biliares al objetivo, lo que anula el efecto de la habilidad en uso.", + name: 'Bilis', + effect: 'El usuario arroja sus jugos biliares al objetivo, lo que anula el efecto de la habilidad en uso.', }, luckyChant: { - name: "Conjuro", - effect: "Lanza al cielo un conjuro que protege a todo su equipo de golpes críticos.", + name: 'Conjuro', + effect: 'Lanza al cielo un conjuro que protege a todo su equipo de golpes críticos.', }, meFirst: { - name: "Yo Primero", - effect: "Se adelanta al movimiento que pretende usar el objetivo y lo lanza antes con más fuerza. Si el usuario es más lento, falla.", + name: 'Yo Primero', + effect: 'Se adelanta al movimiento que pretende usar el objetivo y lo lanza antes con más fuerza. Si el usuario es más lento, falla.', }, copycat: { - name: "Copión", - effect: "Imita el movimiento usado justo antes. El movimiento falla si no se ha usado aún ninguno.", + name: 'Copión', + effect: 'Imita el movimiento usado justo antes. El movimiento falla si no se ha usado aún ninguno.', }, powerSwap: { - name: "Cambiafuerza", - effect: "El usuario emplea su poder mental para intercambiar los cambios en el Ataque y el Ataque Especial con el objetivo.", + name: 'Cambiafuerza', + effect: 'El usuario emplea su poder mental para intercambiar los cambios en el Ataque y el Ataque Especial con el objetivo.', }, guardSwap: { - name: "Cambiadefensa", - effect: "El usuario emplea su poder mental para intercambiar los cambios en la Defensa y la Defensa Especial con el objetivo.", + name: 'Cambiadefensa', + effect: 'El usuario emplea su poder mental para intercambiar los cambios en la Defensa y la Defensa Especial con el objetivo.', }, punishment: { - name: "Castigo", - effect: "La fuerza del ataque aumenta cuanto más se ha fortalecido el objetivo con cambios de características.", + name: 'Castigo', + effect: 'La fuerza del ataque aumenta cuanto más se ha fortalecido el objetivo con cambios de características.', }, lastResort: { - name: "Última Baza", - effect: "Este movimiento solo puede utilizarse tras haber usado al menos una vez todos los demás conocidos por el Pokémon.", + name: 'Última Baza', + effect: 'Este movimiento solo puede utilizarse tras haber usado al menos una vez todos los demás conocidos por el Pokémon.', }, worrySeed: { - name: "Abatidoras", - effect: "Planta una semilla en el objetivo que le causa pesar. Sustituye la habilidad del objetivo por Insomnio y le impide dormirse.", + name: 'Abatidoras', + effect: 'Planta una semilla en el objetivo que le causa pesar. Sustituye la habilidad del objetivo por Insomnio y le impide dormirse.', }, suckerPunch: { - name: "Golpe Bajo", - effect: "Permite atacar con prioridad. Falla si el objetivo no está preparando ningún ataque.", + name: 'Golpe Bajo', + effect: 'Permite atacar con prioridad. Falla si el objetivo no está preparando ningún ataque.', }, toxicSpikes: { - name: "Púas Tóxicas", - effect: "Lanza una trampa de púas tóxicas a los pies del objetivo que envenena a los rivales que entran en combate.", + name: 'Púas Tóxicas', + effect: 'Lanza una trampa de púas tóxicas a los pies del objetivo que envenena a los rivales que entran en combate.', }, heartSwap: { - name: "Cambiaalmas", - effect: "Usa la fuerza mental para intercambiar con el objetivo los cambios en las características.", + name: 'Cambiaalmas', + effect: 'Usa la fuerza mental para intercambiar con el objetivo los cambios en las características.', }, aquaRing: { - name: "Acua Aro", - effect: "El usuario se cubre con un manto de agua. Recupera algunos PS en cada turno.", + name: 'Acua Aro', + effect: 'El usuario se cubre con un manto de agua. Recupera algunos PS en cada turno.', }, magnetRise: { - name: "Levitón", - effect: "Levita gracias a un campo magnético generado por electricidad durante cinco turnos.", + name: 'Levitón', + effect: 'Levita gracias a un campo magnético generado por electricidad durante cinco turnos.', }, flareBlitz: { - name: "Envite Ígneo", - effect: "El Pokémon se cubre de llamas y carga contra el objetivo, aunque él también recibe daño. Puede quemar.", + name: 'Envite Ígneo', + effect: 'El Pokémon se cubre de llamas y carga contra el objetivo, aunque él también recibe daño. Puede quemar.', }, forcePalm: { - name: "Palmeo", - effect: "Ataca al objetivo con una onda de choque y puede llegar a paralizarlo.", + name: 'Palmeo', + effect: 'Ataca al objetivo con una onda de choque y puede llegar a paralizarlo.', }, auraSphere: { - name: "Esfera Aural", - effect: "Libera, desde su interior, una inmensa descarga de aura. Es infalible.", + name: 'Esfera Aural', + effect: 'Libera, desde su interior, una inmensa descarga de aura. Es infalible.', }, rockPolish: { - name: "Pulimento", - effect: "Reduce la resistencia puliendo su cuerpo. Aumenta mucho la Velocidad.", + name: 'Pulimento', + effect: 'Reduce la resistencia puliendo su cuerpo. Aumenta mucho la Velocidad.', }, poisonJab: { - name: "Puya Nociva", - effect: "Pincha al objetivo con un tentáculo o brazo envenenado. Puede llegar a envenenar al objetivo.", + name: 'Puya Nociva', + effect: 'Pincha al objetivo con un tentáculo o brazo envenenado. Puede llegar a envenenar al objetivo.', }, darkPulse: { - name: "Pulso Umbrío", - effect: "Libera una horrible aura llena de malos pensamientos que puede amedrentar al objetivo.", + name: 'Pulso Umbrío', + effect: 'Libera una horrible aura llena de malos pensamientos que puede amedrentar al objetivo.', }, nightSlash: { - name: "Tajo Umbrío", - effect: "Ataca al objetivo a la primera oportunidad. Suele ser crítico.", + name: 'Tajo Umbrío', + effect: 'Ataca al objetivo a la primera oportunidad. Suele ser crítico.', }, aquaTail: { - name: "Acua Cola", - effect: "Ataca agitando la cola como si fuera una ola rabiosa en una tormenta devastadora.", + name: 'Acua Cola', + effect: 'Ataca agitando la cola como si fuera una ola rabiosa en una tormenta devastadora.', }, seedBomb: { - name: "Bomba Germen", - effect: "Lanza al objetivo una descarga de semillas explosivas desde arriba.", + name: 'Bomba Germen', + effect: 'Lanza al objetivo una descarga de semillas explosivas desde arriba.', }, airSlash: { - name: "Tajo Aéreo", - effect: "Ataca con un viento afilado que incluso corta el aire. También puede amedrentar al objetivo.", + name: 'Tajo Aéreo', + effect: 'Ataca con un viento afilado que incluso corta el aire. También puede amedrentar al objetivo.', }, xScissor: { - name: "Tijera X", - effect: "Cruza las guadañas o las garras para atacar al objetivo como si fueran unas tijeras.", + name: 'Tijera X', + effect: 'Cruza las guadañas o las garras para atacar al objetivo como si fueran unas tijeras.', }, bugBuzz: { - name: "Zumbido", - effect: "El usuario crea una onda sónica dañina moviendo su cuerpo que también puede disminuir la Defensa Especial del objetivo.", + name: 'Zumbido', + effect: 'El usuario crea una onda sónica dañina moviendo su cuerpo que también puede disminuir la Defensa Especial del objetivo.', }, dragonPulse: { - name: "Pulso Dragón", - effect: "Abre mucho la boca y libera una onda de choque con la que ataca al objetivo.", + name: 'Pulso Dragón', + effect: 'Abre mucho la boca y libera una onda de choque con la que ataca al objetivo.', }, dragonRush: { - name: "Carga Dragón", - effect: "Ataca de forma brutal mientras intimida al objetivo. Puede amedrentarlo.", + name: 'Carga Dragón', + effect: 'Ataca de forma brutal mientras intimida al objetivo. Puede amedrentarlo.', }, powerGem: { - name: "Joya de Luz", - effect: "Ataca con un rayo de luz que centellea como si lo formaran miles de joyas.", + name: 'Joya de Luz', + effect: 'Ataca con un rayo de luz que centellea como si lo formaran miles de joyas.', }, drainPunch: { - name: "Puño Drenaje", - effect: "Un golpe que drena energía. El Pokémon recupera la mitad de los PS arrebatados al objetivo.", + name: 'Puño Drenaje', + effect: 'Un golpe que drena energía. El Pokémon recupera la mitad de los PS arrebatados al objetivo.', }, vacuumWave: { - name: "Onda Vacío", - effect: "Gira los puños y libera una onda de vacío contra el objetivo. Este movimiento tiene prioridad alta.", + name: 'Onda Vacío', + effect: 'Gira los puños y libera una onda de vacío contra el objetivo. Este movimiento tiene prioridad alta.', }, focusBlast: { - name: "Onda Certera", - effect: "Agudiza la concentración mental y libera su poder. Puede reducir la Defensa Especial del objetivo.", + name: 'Onda Certera', + effect: 'Agudiza la concentración mental y libera su poder. Puede reducir la Defensa Especial del objetivo.', }, energyBall: { - name: "Energibola", - effect: "Aúna fuerzas de la naturaleza y libera su ataque. Puede reducir la Defensa Especial del objetivo.", + name: 'Energibola', + effect: 'Aúna fuerzas de la naturaleza y libera su ataque. Puede reducir la Defensa Especial del objetivo.', }, braveBird: { - name: "Pájaro Osado", - effect: "Pliega sus alas y ataca con un vuelo rasante. El Pokémon que lo usa también resulta seriamente dañado.", + name: 'Pájaro Osado', + effect: 'Pliega sus alas y ataca con un vuelo rasante. El Pokémon que lo usa también resulta seriamente dañado.', }, earthPower: { - name: "Tierra Viva", - effect: "La tierra a los pies del objetivo erupciona violentamente. Puede reducir la Defensa Especial del objetivo.", + name: 'Tierra Viva', + effect: 'La tierra a los pies del objetivo erupciona violentamente. Puede reducir la Defensa Especial del objetivo.', }, switcheroo: { - name: "Trapicheo", - effect: "Intercambia con el objetivo los objetos que llevan tan rápido que es imposible verlo a simple vista.", + name: 'Trapicheo', + effect: 'Intercambia con el objetivo los objetos que llevan tan rápido que es imposible verlo a simple vista.', }, gigaImpact: { - name: "Gigaimpacto", - effect: "El usuario carga contra el objetivo con toda la fuerza que tiene y descansa en el siguiente turno.", + name: 'Gigaimpacto', + effect: 'El usuario carga contra el objetivo con toda la fuerza que tiene y descansa en el siguiente turno.', }, nastyPlot: { - name: "Maquinación", - effect: "Estimula su cerebro pensando en cosas malas. Aumenta mucho el Ataque Especial.", + name: 'Maquinación', + effect: 'Estimula su cerebro pensando en cosas malas. Aumenta mucho el Ataque Especial.', }, bulletPunch: { - name: "Puño Bala", - effect: "Ataca con fuertes puñetazos tan rápidos como proyectiles. Este movimiento tiene prioridad alta.", + name: 'Puño Bala', + effect: 'Ataca con fuertes puñetazos tan rápidos como proyectiles. Este movimiento tiene prioridad alta.', }, avalanche: { - name: "Alud", - effect: "Este ataque inflige el doble de daño a un objetivo que haya golpeado al usuario en ese mismo turno.", + name: 'Alud', + effect: 'Este ataque inflige el doble de daño a un objetivo que haya golpeado al usuario en ese mismo turno.', }, iceShard: { - name: "Esquirla Helada", - effect: "Crea esquirlas de hielo y las lanza a gran velocidad. Este movimiento tiene prioridad alta.", + name: 'Esquirla Helada', + effect: 'Crea esquirlas de hielo y las lanza a gran velocidad. Este movimiento tiene prioridad alta.', }, shadowClaw: { - name: "Garra Umbría", - effect: "Ataca con una garra afilada hecha de sombras. Suele ser crítico.", + name: 'Garra Umbría', + effect: 'Ataca con una garra afilada hecha de sombras. Suele ser crítico.', }, thunderFang: { - name: "Colmillo Rayo", - effect: "El usuario muerde al objetivo con colmillos electrificados y puede hacer que se amedrente o se paralice.", + name: 'Colmillo Rayo', + effect: 'El usuario muerde al objetivo con colmillos electrificados y puede hacer que se amedrente o se paralice.', }, iceFang: { - name: "Colmillo Hielo", - effect: "El usuario muerde al objetivo con colmillos helados y puede hacer que se amedrente o se congele.", + name: 'Colmillo Hielo', + effect: 'El usuario muerde al objetivo con colmillos helados y puede hacer que se amedrente o se congele.', }, fireFang: { - name: "Colmillo Ígneo", - effect: "El usuario muerde al objetivo con colmillos en llamas y puede hacer que se amedrente o sufra quemaduras.", + name: 'Colmillo Ígneo', + effect: 'El usuario muerde al objetivo con colmillos en llamas y puede hacer que se amedrente o sufra quemaduras.', }, shadowSneak: { - name: "Sombra Vil", - effect: "Extiende su sombra y ataca al objetivo por la espalda. Este movimiento tiene prioridad alta.", + name: 'Sombra Vil', + effect: 'Extiende su sombra y ataca al objetivo por la espalda. Este movimiento tiene prioridad alta.', }, mudBomb: { - name: "Bomba Fango", - effect: "Ataca lanzando una compacta bola de fango. Puede bajar la Precisión del objetivo.", + name: 'Bomba Fango', + effect: 'Ataca lanzando una compacta bola de fango. Puede bajar la Precisión del objetivo.', }, psychoCut: { - name: "Psicocorte", - effect: "Ataca al objetivo con cuchillas formadas por energía psíquica. Suele ser crítico.", + name: 'Psicocorte', + effect: 'Ataca al objetivo con cuchillas formadas por energía psíquica. Suele ser crítico.', }, zenHeadbutt: { - name: "Cabezazo Zen", - effect: "Concentra su energía psíquica en la cabeza para golpear. Puede hacer que el objetivo se amedrente.", + name: 'Cabezazo Zen', + effect: 'Concentra su energía psíquica en la cabeza para golpear. Puede hacer que el objetivo se amedrente.', }, mirrorShot: { - name: "Disparo Espejo", - effect: "El usuario libera un haz de energía desde su pulido cuerpo. Puede bajar la Precisión.", + name: 'Disparo Espejo', + effect: 'El usuario libera un haz de energía desde su pulido cuerpo. Puede bajar la Precisión.', }, flashCannon: { - name: "Foco Resplandor", - effect: "El usuario concentra toda la luz del cuerpo y la libera. Puede bajar la Defensa Especial del objetivo.", + name: 'Foco Resplandor', + effect: 'El usuario concentra toda la luz del cuerpo y la libera. Puede bajar la Defensa Especial del objetivo.', }, rockClimb: { - name: "Treparrocas", - effect: "Ataca con una gran embestida. Puede confundir al objetivo.", + name: 'Treparrocas', + effect: 'Ataca con una gran embestida. Puede confundir al objetivo.', }, defog: { - name: "Despejar", - effect: "Potente viento que barre los efectos de movimientos como Reflejo o Pantalla de Luz usados por el objetivo. También reduce su Evasión.", + name: 'Despejar', + effect: 'Potente viento que barre los efectos de movimientos como Reflejo o Pantalla de Luz usados por el objetivo. También reduce su Evasión.', }, trickRoom: { - name: "Espacio Raro", - effect: "Crea un espacio misterioso en el que los Pokémon lentos se mueven primero durante cinco turnos.", + name: 'Espacio Raro', + effect: 'Crea un espacio misterioso en el que los Pokémon lentos se mueven primero durante cinco turnos.', }, dracoMeteor: { - name: "Cometa Draco", - effect: "Hace que grandes cometas caigan del cielo sobre el objetivo. Baja mucho el Ataque Especial del que lo usa.", + name: 'Cometa Draco', + effect: 'Hace que grandes cometas caigan del cielo sobre el objetivo. Baja mucho el Ataque Especial del que lo usa.', }, discharge: { - name: "Chispazo", - effect: "Una deslumbradora onda eléctrica afecta a los Pokémon que hay combatiendo alrededor. Puede paralizar.", + name: 'Chispazo', + effect: 'Una deslumbradora onda eléctrica afecta a los Pokémon que hay combatiendo alrededor. Puede paralizar.', }, lavaPlume: { - name: "Humareda", - effect: "Un infierno de llamas daña a los Pokémon adyacentes en combate. Puede causar quemaduras.", + name: 'Humareda', + effect: 'Un infierno de llamas daña a los Pokémon adyacentes en combate. Puede causar quemaduras.', }, leafStorm: { - name: "Lluevehojas", - effect: "Envuelve al objetivo con una lluvia de hojas afiladas, pero reduce mucho su Ataque Especial.", + name: 'Lluevehojas', + effect: 'Envuelve al objetivo con una lluvia de hojas afiladas, pero reduce mucho su Ataque Especial.', }, powerWhip: { - name: "Latigazo", - effect: "El usuario agita violentamente sus lianas o tentáculos para golpear al objetivo.", + name: 'Latigazo', + effect: 'El usuario agita violentamente sus lianas o tentáculos para golpear al objetivo.', }, rockWrecker: { - name: "Romperrocas", - effect: "Lanza una piedra enorme contra el objetivo. El usuario deberá descansar en el siguiente turno.", + name: 'Romperrocas', + effect: 'Lanza una piedra enorme contra el objetivo. El usuario deberá descansar en el siguiente turno.', }, crossPoison: { - name: "Veneno X", - effect: "Tajo que puede envenenar al objetivo. Suele ser crítico.", + name: 'Veneno X', + effect: 'Tajo que puede envenenar al objetivo. Suele ser crítico.', }, gunkShot: { - name: "Lanzamugre", - effect: "Lanza contra el objetivo basura asquerosa y puede envenenarlo.", + name: 'Lanzamugre', + effect: 'Lanza contra el objetivo basura asquerosa y puede envenenarlo.', }, ironHead: { - name: "Cabeza de Hierro", - effect: "Ataca con su cabeza dura como el hierro. Puede hacer que el objetivo se amedrente.", + name: 'Cabeza de Hierro', + effect: 'Ataca con su cabeza dura como el hierro. Puede hacer que el objetivo se amedrente.', }, magnetBomb: { - name: "Bomba Imán", - effect: "Lanza unas bombas de hierro que se pegan al adversario. No se puede esquivar.", + name: 'Bomba Imán', + effect: 'Lanza unas bombas de hierro que se pegan al adversario. No se puede esquivar.', }, stoneEdge: { - name: "Roca Afilada", - effect: "Clava piedras muy afiladas al objetivo. Suele ser crítico.", + name: 'Roca Afilada', + effect: 'Clava piedras muy afiladas al objetivo. Suele ser crítico.', }, captivate: { - name: "Seducción", - effect: "Si el objetivo es del sexo opuesto, queda embelesado y baja mucho su Ataque Especial.", + name: 'Seducción', + effect: 'Si el objetivo es del sexo opuesto, queda embelesado y baja mucho su Ataque Especial.', }, stealthRock: { - name: "Trampa Rocas", - effect: "Una trampa de rocas que flota en el aire y daña a los objetivos que entran en combate.", + name: 'Trampa Rocas', + effect: 'Una trampa de rocas que flota en el aire y daña a los objetivos que entran en combate.', }, grassKnot: { - name: "Hierba Lazo", - effect: "Enreda al objetivo con hierba y lo derriba. Cuanto más pesado es el objetivo, más potencia tiene el movimiento.", + name: 'Hierba Lazo', + effect: 'Enreda al objetivo con hierba y lo derriba. Cuanto más pesado es el objetivo, más potencia tiene el movimiento.', }, chatter: { - name: "Cháchara", - effect: "Ataca con una onda de sonido muy ruidosa compuesta por palabras y confunde al objetivo.", + name: 'Cháchara', + effect: 'Ataca con una onda de sonido muy ruidosa compuesta por palabras y confunde al objetivo.', }, judgment: { - name: "Sentencia", - effect: "Emite incontables haces de luz. El tipo del movimiento varía según la tabla que lleve el usuario.", + name: 'Sentencia', + effect: 'Emite incontables haces de luz. El tipo del movimiento varía según la tabla que lleve el usuario.', }, bugBite: { - name: "Picadura", - effect: "Pica al objetivo. Si el objetivo lleva una baya, el usuario se la come y se beneficia de su efecto.", + name: 'Picadura', + effect: 'Pica al objetivo. Si el objetivo lleva una baya, el usuario se la come y se beneficia de su efecto.', }, chargeBeam: { - name: "Rayo Carga", - effect: "Lanza un rayo eléctrico contra el objetivo. Puede subir el Ataque Especial de quien lo usa.", + name: 'Rayo Carga', + effect: 'Lanza un rayo eléctrico contra el objetivo. Puede subir el Ataque Especial de quien lo usa.', }, woodHammer: { - name: "Mazazo", - effect: "Arremete contra el objetivo con su robusto cuerpo. El usuario se hiere seriamente a sí mismo.", + name: 'Mazazo', + effect: 'Arremete contra el objetivo con su robusto cuerpo. El usuario se hiere seriamente a sí mismo.', }, aquaJet: { - name: "Acua Jet", - effect: "Ataque de una rapidez espeluznante. Este movimiento tiene prioridad alta.", + name: 'Acua Jet', + effect: 'Ataque de una rapidez espeluznante. Este movimiento tiene prioridad alta.', }, attackOrder: { - name: "Al Ataque", - effect: "El usuario llama a sus súbditos para que ataquen al objetivo. Suele ser crítico.", + name: 'Al Ataque', + effect: 'El usuario llama a sus súbditos para que ataquen al objetivo. Suele ser crítico.', }, defendOrder: { - name: "A Defender", - effect: "El usuario llama a sus súbditos para que formen un escudo viviente. Sube la Defensa y la Defensa Especial.", + name: 'A Defender', + effect: 'El usuario llama a sus súbditos para que formen un escudo viviente. Sube la Defensa y la Defensa Especial.', }, healOrder: { - name: "Auxilio", - effect: "El usuario llama a sus súbditos para que lo curen. Recupera hasta la mitad de los PS máximos.", + name: 'Auxilio', + effect: 'El usuario llama a sus súbditos para que lo curen. Recupera hasta la mitad de los PS máximos.', }, headSmash: { - name: "Testarazo", - effect: "El usuario arriesga su vida y lanza un cabezazo con toda su fuerza. El agresor resulta seriamente dañado.", + name: 'Testarazo', + effect: 'El usuario arriesga su vida y lanza un cabezazo con toda su fuerza. El agresor resulta seriamente dañado.', }, doubleHit: { - name: "Doble Golpe", - effect: "Golpea al objetivo dos veces seguidas con la cola u otras partes de su cuerpo.", + name: 'Doble Golpe', + effect: 'Golpea al objetivo dos veces seguidas con la cola u otras partes de su cuerpo.', }, roarOfTime: { - name: "Distorsión", - effect: "Ataca al objetivo usando tal energía que el tiempo se distorsiona. El usuario deberá descansar en el siguiente turno.", + name: 'Distorsión', + effect: 'Ataca al objetivo usando tal energía que el tiempo se distorsiona. El usuario deberá descansar en el siguiente turno.', }, spacialRend: { - name: "Corte Vacío", - effect: "Desgarra al objetivo y el espacio a su alrededor. Suele ser crítico.", + name: 'Corte Vacío', + effect: 'Desgarra al objetivo y el espacio a su alrededor. Suele ser crítico.', }, lunarDance: { - name: "Danza Lunar", - effect: "El usuario se debilita, pero el Pokémon que lo sustituye recupera su estado, los PS y los PP.", + name: 'Danza Lunar', + effect: 'El usuario se debilita, pero el Pokémon que lo sustituye recupera su estado, los PS y los PP.', }, crushGrip: { - name: "Agarrón", - effect: "Estruja al objetivo con gran fuerza. Cuantos más PS le queden al objetivo, más fuerte será el ataque.", + name: 'Agarrón', + effect: 'Estruja al objetivo con gran fuerza. Cuantos más PS le queden al objetivo, más fuerte será el ataque.', }, magmaStorm: { - name: "Lluvia Ígnea", - effect: "El objetivo queda atrapado en una tormenta de fuego que dura de cuatro a cinco turnos.", + name: 'Lluvia Ígnea', + effect: 'El objetivo queda atrapado en una tormenta de fuego que dura de cuatro a cinco turnos.', }, darkVoid: { - name: "Brecha Negra", - effect: "El objetivo es enviado a un mundo de tinieblas que lo hace dormir.", + name: 'Brecha Negra', + effect: 'El objetivo es enviado a un mundo de tinieblas que lo hace dormir.', }, seedFlare: { - name: "Fulgor Semilla", - effect: "Una onda de choque se libera del cuerpo. Puede bajar mucho la Defensa Especial del objetivo.", + name: 'Fulgor Semilla', + effect: 'Una onda de choque se libera del cuerpo. Puede bajar mucho la Defensa Especial del objetivo.', }, ominousWind: { - name: "Viento Aciago", - effect: "Produce un viento horripilante. Puede subir de golpe todas las características del usuario.", + name: 'Viento Aciago', + effect: 'Produce un viento horripilante. Puede subir de golpe todas las características del usuario.', }, shadowForce: { - name: "Golpe Umbrío", - effect: "En el primer turno, desaparece. En el segundo, golpea al objetivo aunque se esté protegiendo.", + name: 'Golpe Umbrío', + effect: 'En el primer turno, desaparece. En el segundo, golpea al objetivo aunque se esté protegiendo.', }, honeClaws: { - name: "Afilagarras", - effect: "El usuario se afila las garras para aumentar su Ataque y su Precisión.", + name: 'Afilagarras', + effect: 'El usuario se afila las garras para aumentar su Ataque y su Precisión.', }, wideGuard: { - name: "Vasta Guardia", - effect: "Bloquea los ataques de objetivo múltiple lanzados contra el bando del usuario durante un turno.", + name: 'Vasta Guardia', + effect: 'Bloquea los ataques de objetivo múltiple lanzados contra el bando del usuario durante un turno.', }, guardSplit: { - name: "Isoguardia", - effect: "El usuario emplea sus poderes para hacer la media de su Defensa y su Defensa Especial con las del objetivo y compartirlas.", + name: 'Isoguardia', + effect: 'El usuario emplea sus poderes para hacer la media de su Defensa y su Defensa Especial con las del objetivo y compartirlas.', }, powerSplit: { - name: "Isofuerza", - effect: "El usuario emplea sus poderes para hacer la media de su Ataque y su Ataque Especial con los del objetivo y compartirlos.", + name: 'Isofuerza', + effect: 'El usuario emplea sus poderes para hacer la media de su Ataque y su Ataque Especial con los del objetivo y compartirlos.', }, wonderRoom: { - name: "Zona Extraña", - effect: "Crea un espacio misterioso donde se intercambian la Defensa y la Defensa Especial de todos los Pokémon durante cinco turnos.", + name: 'Zona Extraña', + effect: 'Crea un espacio misterioso donde se intercambian la Defensa y la Defensa Especial de todos los Pokémon durante cinco turnos.', }, psyshock: { - name: "Psicocarga", - effect: "Crea una onda psíquica que causa daño físico al objetivo.", + name: 'Psicocarga', + effect: 'Crea una onda psíquica que causa daño físico al objetivo.', }, venoshock: { - name: "Carga Tóxica", - effect: "Cubre al objetivo con un líquido venenoso. La potencia del movimiento se duplica si este ya está envenenado.", + name: 'Carga Tóxica', + effect: 'Cubre al objetivo con un líquido venenoso. La potencia del movimiento se duplica si este ya está envenenado.', }, autotomize: { - name: "Aligerar", - effect: "El usuario se desprende de partes prescindibles de su cuerpo para hacerse más ligero y aumentar mucho su Velocidad.", + name: 'Aligerar', + effect: 'El usuario se desprende de partes prescindibles de su cuerpo para hacerse más ligero y aumentar mucho su Velocidad.', }, ragePowder: { - name: "Polvo Ira", - effect: "Usa un polvo que enerva a los rivales y hace que centren en el usuario su atención y sus movimientos.", + name: 'Polvo Ira', + effect: 'Usa un polvo que enerva a los rivales y hace que centren en el usuario su atención y sus movimientos.', }, telekinesis: { - name: "Telequinesis", - effect: "El usuario emplea su poder mental para hacer flotar al objetivo, y lo convierte en un blanco fácil durante tres turnos.", + name: 'Telequinesis', + effect: 'El usuario emplea su poder mental para hacer flotar al objetivo, y lo convierte en un blanco fácil durante tres turnos.', }, magicRoom: { - name: "Zona Mágica", - effect: "Crea un espacio misterioso que inutiliza todos los objetos de los Pokémon durante cinco turnos.", + name: 'Zona Mágica', + effect: 'Crea un espacio misterioso que inutiliza todos los objetos de los Pokémon durante cinco turnos.', }, smackDown: { - name: "Antiaéreo", - effect: "Ataca lanzando una piedra o un proyectil. Si el objetivo está en el aire, lo estrella contra el suelo.", + name: 'Antiaéreo', + effect: 'Ataca lanzando una piedra o un proyectil. Si el objetivo está en el aire, lo estrella contra el suelo.', }, stormThrow: { - name: "Llave Corsé", - effect: "Lanza un golpe devastador. Siempre asesta un golpe crítico.", + name: 'Llave Corsé', + effect: 'Lanza un golpe devastador. Siempre asesta un golpe crítico.', }, flameBurst: { - name: "Pirotecnia", - effect: "Golpea al objetivo con una llamarada que afecta también a los Pokémon adyacentes.", + name: 'Pirotecnia', + effect: 'Golpea al objetivo con una llamarada que afecta también a los Pokémon adyacentes.', }, sludgeWave: { - name: "Onda Tóxica", - effect: "Una onda tóxica que daña a los Pokémon de alrededor. Puede envenenar.", + name: 'Onda Tóxica', + effect: 'Una onda tóxica que daña a los Pokémon de alrededor. Puede envenenar.', }, quiverDance: { - name: "Danza Aleteo", - effect: "Danza mística que aumenta el Ataque Especial, la Defensa Especial y la Velocidad.", + name: 'Danza Aleteo', + effect: 'Danza mística que aumenta el Ataque Especial, la Defensa Especial y la Velocidad.', }, heavySlam: { - name: "Cuerpo Pesado", - effect: "El usuario golpea con todo su cuerpo. Cuanto mayor sea su peso comparado con el del objetivo, mayor será la potencia del movimiento.", + name: 'Cuerpo Pesado', + effect: 'El usuario golpea con todo su cuerpo. Cuanto mayor sea su peso comparado con el del objetivo, mayor será la potencia del movimiento.', }, synchronoise: { - name: "Sincrorruido", - effect: "Una extraña onda que daña a todos los Pokémon adyacentes del mismo tipo que el que la ejecuta.", + name: 'Sincrorruido', + effect: 'Una extraña onda que daña a todos los Pokémon adyacentes del mismo tipo que el que la ejecuta.', }, electroBall: { - name: "Bola Voltio", - effect: "Lanza una bola eléctrica. Cuanto mayor sea la Velocidad del usuario en comparación con la del objetivo, mayor será la potencia del movimiento.", + name: 'Bola Voltio', + effect: 'Lanza una bola eléctrica. Cuanto mayor sea la Velocidad del usuario en comparación con la del objetivo, mayor será la potencia del movimiento.', }, soak: { - name: "Empapar", - effect: "Potente lluvia que transforma al objetivo en un Pokémon de tipo Agua.", + name: 'Empapar', + effect: 'Potente lluvia que transforma al objetivo en un Pokémon de tipo Agua.', }, flameCharge: { - name: "Nitrocarga", - effect: "Llamas que golpean al objetivo y aumentan la Velocidad del atacante.", + name: 'Nitrocarga', + effect: 'Llamas que golpean al objetivo y aumentan la Velocidad del atacante.', }, coil: { - name: "Enrosque", - effect: "El usuario se concentra, lo que le permite aumentar su Ataque, Defensa y Precisión.", + name: 'Enrosque', + effect: 'El usuario se concentra, lo que le permite aumentar su Ataque, Defensa y Precisión.', }, lowSweep: { - name: "Puntapié", - effect: "Ataque rápido dirigido a los pies del objetivo que le hace perder Velocidad.", + name: 'Puntapié', + effect: 'Ataque rápido dirigido a los pies del objetivo que le hace perder Velocidad.', }, acidSpray: { - name: "Bomba Ácida", - effect: "Ataca con un líquido corrosivo que reduce mucho la Defensa Especial del objetivo.", + name: 'Bomba Ácida', + effect: 'Ataca con un líquido corrosivo que reduce mucho la Defensa Especial del objetivo.', }, foulPlay: { - name: "Juego Sucio", - effect: "El usuario emplea la fuerza del objetivo para atacarlo. Cuanto mayor es el Ataque del objetivo, más daño provoca.", + name: 'Juego Sucio', + effect: 'El usuario emplea la fuerza del objetivo para atacarlo. Cuanto mayor es el Ataque del objetivo, más daño provoca.', }, simpleBeam: { - name: "Onda Simple", - effect: "Lanza una onda psíquica que hace que la habilidad del objetivo pase a ser Simple.", + name: 'Onda Simple', + effect: 'Lanza una onda psíquica que hace que la habilidad del objetivo pase a ser Simple.', }, entrainment: { - name: "Danza Amiga", - effect: "Una extraña danza que induce al objetivo a imitarla y cambia su habilidad por la misma que la del usuario.", + name: 'Danza Amiga', + effect: 'Una extraña danza que induce al objetivo a imitarla y cambia su habilidad por la misma que la del usuario.', }, afterYou: { - name: "Cede Paso", - effect: "Si el usuario es el más rápido, permite al objetivo usar un movimiento justo tras él, adelantándose a Pokémon más rápidos.", + name: 'Cede Paso', + effect: 'Si el usuario es el más rápido, permite al objetivo usar un movimiento justo tras él, adelantándose a Pokémon más rápidos.', }, round: { - name: "Canon", - effect: "Un canto que ataca al objetivo. Cuantos más Pokémon lo usan, más aumenta de potencia.", + name: 'Canon', + effect: 'Un canto que ataca al objetivo. Cuantos más Pokémon lo usan, más aumenta de potencia.', }, echoedVoice: { - name: "Eco Voz", - effect: "Un susurro que aumenta de potencia conforme el usuario y otros Pokémon lo van utilizando.", + name: 'Eco Voz', + effect: 'Un susurro que aumenta de potencia conforme el usuario y otros Pokémon lo van utilizando.', }, chipAway: { - name: "Guardia Baja", - effect: "Un ataque que busca los puntos débiles del objetivo y puede causarle daño aunque cambien sus características.", + name: 'Guardia Baja', + effect: 'Un ataque que busca los puntos débiles del objetivo y puede causarle daño aunque cambien sus características.', }, clearSmog: { - name: "Niebla Clara", - effect: "Ataca al objetivo con una singular bola de lodo que elimina cualquier cambio en sus características.", + name: 'Niebla Clara', + effect: 'Ataca al objetivo con una singular bola de lodo que elimina cualquier cambio en sus características.', }, storedPower: { - name: "Poder Reserva", - effect: "Acumula poder para golpear. Cuanto más suban las características del usuario, mayor será el daño.", + name: 'Poder Reserva', + effect: 'Acumula poder para golpear. Cuanto más suban las características del usuario, mayor será el daño.', }, quickGuard: { - name: "Anticipo", - effect: "Se protege a sí mismo y a sus aliados de movimientos con prioridad.", + name: 'Anticipo', + effect: 'Se protege a sí mismo y a sus aliados de movimientos con prioridad.', }, allySwitch: { - name: "Cambio de Banda", - effect: "Extraño poder que intercambia la posición del usuario con la de un aliado sobre el terreno de combate.", + name: 'Cambio de Banda', + effect: 'Extraño poder que intercambia la posición del usuario con la de un aliado sobre el terreno de combate.', }, scald: { - name: "Escaldar", - effect: "Ataca arrojando agua hirviendo al objetivo. Puede causar quemaduras.", + name: 'Escaldar', + effect: 'Ataca arrojando agua hirviendo al objetivo. Puede causar quemaduras.', }, shellSmash: { - name: "Rompecoraza", - effect: "El usuario rompe su coraza y baja su Defensa y Defensa Especial, pero aumenta mucho su Ataque, Ataque Especial y Velocidad.", + name: 'Rompecoraza', + effect: 'El usuario rompe su coraza y baja su Defensa y Defensa Especial, pero aumenta mucho su Ataque, Ataque Especial y Velocidad.', }, healPulse: { - name: "Pulso Cura", - effect: "Una onda curativa restaura la mitad de los PS máximos del objetivo.", + name: 'Pulso Cura', + effect: 'Una onda curativa restaura la mitad de los PS máximos del objetivo.', }, hex: { - name: "Infortunio", - effect: "Ataque que causa un gran daño a los objetivos que sufren problemas de estado.", + name: 'Infortunio', + effect: 'Ataque que causa un gran daño a los objetivos que sufren problemas de estado.', }, skyDrop: { - name: "Caída Libre", - effect: "Primer turno: lanza al objetivo al aire. Segundo turno: lo hace caer. Mientras está en el aire, no lo deja moverse.", + name: 'Caída Libre', + effect: 'Primer turno: lanza al objetivo al aire. Segundo turno: lo hace caer. Mientras está en el aire, no lo deja moverse.', }, shiftGear: { - name: "Cambio de Marcha", - effect: "Al hacer girar los engranajes, el usuario mejora su Ataque y aumenta mucho su Velocidad.", + name: 'Cambio de Marcha', + effect: 'Al hacer girar los engranajes, el usuario mejora su Ataque y aumenta mucho su Velocidad.', }, circleThrow: { - name: "Llave Giro", - effect: "Lanza por los aires al objetivo y hace que salga otro Pokémon. Si es uno salvaje, acaba el combate.", + name: 'Llave Giro', + effect: 'Lanza por los aires al objetivo y hace que salga otro Pokémon. Si es uno salvaje, acaba el combate.', }, incinerate: { - name: "Calcinación", - effect: "Llamas que golpean al objetivo. Si este lleva una baya o ciertos objetos, se quemarán y ya no se podrán usar.", + name: 'Calcinación', + effect: 'Llamas que golpean al objetivo. Si este lleva una baya o ciertos objetos, se quemarán y ya no se podrán usar.', }, quash: { - name: "Último Lugar", - effect: "Consigue que el objetivo sea el último en moverse.", + name: 'Último Lugar', + effect: 'Consigue que el objetivo sea el último en moverse.', }, acrobatics: { - name: "Acróbata", - effect: "Golpea ágilmente. Si el usuario no porta ningún objeto, el objetivo resulta seriamente dañado.", + name: 'Acróbata', + effect: 'Golpea ágilmente. Si el usuario no porta ningún objeto, el objetivo resulta seriamente dañado.', }, reflectType: { - name: "Clonatipo", - effect: "Cambia el tipo del Pokémon al mismo tipo que el del objetivo.", + name: 'Clonatipo', + effect: 'Cambia el tipo del Pokémon al mismo tipo que el del objetivo.', }, retaliate: { - name: "Represalia", - effect: "Venga a los amigos caídos. Si en el turno anterior han derrotado a alguno, la potencia del ataque aumentará.", + name: 'Represalia', + effect: 'Venga a los amigos caídos. Si en el turno anterior han derrotado a alguno, la potencia del ataque aumentará.', }, finalGambit: { - name: "Sacrificio", - effect: "El usuario se sacrifica causándole un daño al objetivo equivalente a sus propios PS perdidos.", + name: 'Sacrificio', + effect: 'El usuario se sacrifica causándole un daño al objetivo equivalente a sus propios PS perdidos.', }, bestow: { - name: "Ofrenda", - effect: "Entrega el objeto que lleva al objetivo en caso de que este no tenga ninguno.", + name: 'Ofrenda', + effect: 'Entrega el objeto que lleva al objetivo en caso de que este no tenga ninguno.', }, inferno: { - name: "Infierno", - effect: "Ataca con una gran ráfaga de fuego que causa quemaduras.", + name: 'Infierno', + effect: 'Ataca con una gran ráfaga de fuego que causa quemaduras.', }, waterPledge: { - name: "Voto Agua", - effect: "Ataca con columnas de agua. Combinado con Voto Fuego, crea un arcoíris y aumenta su potencia.", + name: 'Voto Agua', + effect: 'Ataca con columnas de agua. Combinado con Voto Fuego, crea un arcoíris y aumenta su potencia.', }, firePledge: { - name: "Voto Fuego", - effect: "Ataca con columnas de fuego. Combinado con Voto Planta, crea un mar de llamas y aumenta su potencia.", + name: 'Voto Fuego', + effect: 'Ataca con columnas de fuego. Combinado con Voto Planta, crea un mar de llamas y aumenta su potencia.', }, grassPledge: { - name: "Voto Planta", - effect: "Ataca con columnas de hojas. Combinado con Voto Agua, crea un pantano y aumenta su potencia.", + name: 'Voto Planta', + effect: 'Ataca con columnas de hojas. Combinado con Voto Agua, crea un pantano y aumenta su potencia.', }, voltSwitch: { - name: "Voltiocambio", - effect: "Tras atacar, el usuario da paso a toda prisa a otro Pokémon del equipo.", + name: 'Voltiocambio', + effect: 'Tras atacar, el usuario da paso a toda prisa a otro Pokémon del equipo.', }, struggleBug: { - name: "Estoicismo", - effect: "El usuario opone resistencia y ataca a los oponentes. También reduce su Ataque Especial.", + name: 'Estoicismo', + effect: 'El usuario opone resistencia y ataca a los oponentes. También reduce su Ataque Especial.', }, bulldoze: { - name: "Terratemblor", - effect: "Sacudida sísmica que afecta a los Pokémon adyacentes y también reduce su Velocidad.", + name: 'Terratemblor', + effect: 'Sacudida sísmica que afecta a los Pokémon adyacentes y también reduce su Velocidad.', }, frostBreath: { - name: "Vaho Gélido", - effect: "Quien lo usa ataca lanzando un aliento gélido. Siempre asesta un golpe crítico.", + name: 'Vaho Gélido', + effect: 'Quien lo usa ataca lanzando un aliento gélido. Siempre asesta un golpe crítico.', }, dragonTail: { - name: "Cola Dragón", - effect: "Ataca al objetivo y lo obliga a cambiarse por otro Pokémon. Si es uno salvaje, acaba el combate.", + name: 'Cola Dragón', + effect: 'Ataca al objetivo y lo obliga a cambiarse por otro Pokémon. Si es uno salvaje, acaba el combate.', }, workUp: { - name: "Avivar", - effect: "Quien lo usa se concentra y potencia su Ataque y su Ataque Especial.", + name: 'Avivar', + effect: 'Quien lo usa se concentra y potencia su Ataque y su Ataque Especial.', }, electroweb: { - name: "Electrotela", - effect: "Atrapa y ataca a los objetivos con una telaraña eléctrica. También reduce su Velocidad.", + name: 'Electrotela', + effect: 'Atrapa y ataca a los objetivos con una telaraña eléctrica. También reduce su Velocidad.', }, wildCharge: { - name: "Voltio Cruel", - effect: "Carga eléctrica muy potente que también hiere ligeramente a quien la usa.", + name: 'Voltio Cruel', + effect: 'Carga eléctrica muy potente que también hiere ligeramente a quien la usa.', }, drillRun: { - name: "Taladradora", - effect: "El usuario golpea usando su cuerpo como un taladro. Suele ser crítico.", + name: 'Taladradora', + effect: 'El usuario golpea usando su cuerpo como un taladro. Suele ser crítico.', }, dualChop: { - name: "Golpe Bis", - effect: "Golpea dos veces seguidas con las partes más recias de su cuerpo.", + name: 'Golpe Bis', + effect: 'Golpea dos veces seguidas con las partes más recias de su cuerpo.', }, heartStamp: { - name: "Arrumaco", - effect: "El usuario despista al objetivo con gestos adorables y aprovecha la ocasión para asestarle un golpe tremendo que puede hacerlo retroceder.", + name: 'Arrumaco', + effect: 'El usuario despista al objetivo con gestos adorables y aprovecha la ocasión para asestarle un golpe tremendo que puede hacerlo retroceder.', }, hornLeech: { - name: "Asta Drenaje", - effect: "Un golpe que drena energía. El Pokémon recupera la mitad de los PS arrebatados al objetivo.", + name: 'Asta Drenaje', + effect: 'Un golpe que drena energía. El Pokémon recupera la mitad de los PS arrebatados al objetivo.', }, sacredSword: { - name: "Espada Santa", - effect: "El usuario ataca con una espada, ignorando cualquier cambio en las características del objetivo.", + name: 'Espada Santa', + effect: 'El usuario ataca con una espada, ignorando cualquier cambio en las características del objetivo.', }, razorShell: { - name: "Concha Filo", - effect: "Una afilada vieira ataca al objetivo. También puede hacer disminuir su Defensa.", + name: 'Concha Filo', + effect: 'Una afilada vieira ataca al objetivo. También puede hacer disminuir su Defensa.', }, heatCrash: { - name: "Golpe Calor", - effect: "El usuario ataca con su cuerpo ardiente. Cuanto mayor sea su peso comparado con el del objetivo, más daño causará.", + name: 'Golpe Calor', + effect: 'El usuario ataca con su cuerpo ardiente. Cuanto mayor sea su peso comparado con el del objetivo, más daño causará.', }, leafTornado: { - name: "Ciclón de Hojas", - effect: "Tritura con afiladas hojas y puede bajar la Precisión del objetivo.", + name: 'Ciclón de Hojas', + effect: 'Tritura con afiladas hojas y puede bajar la Precisión del objetivo.', }, steamroller: { - name: "Rodillo de Púas", - effect: "El usuario se hace una bola y arrolla al objetivo con su cuerpo. Puede hacerlo retroceder.", + name: 'Rodillo de Púas', + effect: 'El usuario se hace una bola y arrolla al objetivo con su cuerpo. Puede hacerlo retroceder.', }, cottonGuard: { - name: "Rizo Algodón", - effect: "Cubre al Pokémon con una madeja protectora. Aumenta muchísimo la Defensa.", + name: 'Rizo Algodón', + effect: 'Cubre al Pokémon con una madeja protectora. Aumenta muchísimo la Defensa.', }, nightDaze: { - name: "Pulso Noche", - effect: "Ataca al objetivo con una onda siniestra. Puede bajar su Precisión.", + name: 'Pulso Noche', + effect: 'Ataca al objetivo con una onda siniestra. Puede bajar su Precisión.', }, psystrike: { - name: "Onda Mental", - effect: "Crea una onda psíquica que causa daño físico al objetivo.", + name: 'Onda Mental', + effect: 'Crea una onda psíquica que causa daño físico al objetivo.', }, tailSlap: { - name: "Plumerazo", - effect: "Golpea con la cola de dos a cinco veces seguidas.", + name: 'Plumerazo', + effect: 'Golpea con la cola de dos a cinco veces seguidas.', }, hurricane: { - name: "Vendaval", - effect: "Golpea al objetivo con un fuerte torbellino que envuelve al rival y puede confundirlo.", + name: 'Vendaval', + effect: 'Golpea al objetivo con un fuerte torbellino que envuelve al rival y puede confundirlo.', }, headCharge: { - name: "Ariete", - effect: "Propina un tremendo cabezazo. También daña al usuario un poco.", + name: 'Ariete', + effect: 'Propina un tremendo cabezazo. También daña al usuario un poco.', }, gearGrind: { - name: "Rueda Doble", - effect: "Rota dos engranajes de hierro sobre el objetivo. Golpea dos veces.", + name: 'Rueda Doble', + effect: 'Rota dos engranajes de hierro sobre el objetivo. Golpea dos veces.', }, searingShot: { - name: "Bomba Ígnea", - effect: "Un infierno de llamas daña a los Pokémon adyacentes en combate. Puede causar quemaduras.", + name: 'Bomba Ígnea', + effect: 'Un infierno de llamas daña a los Pokémon adyacentes en combate. Puede causar quemaduras.', }, technoBlast: { - name: "Tecno Shock", - effect: "Ataca al objetivo con un gran láser. El tipo del ataque lo determina el cartucho que porta el usuario.", + name: 'Tecno Shock', + effect: 'Ataca al objetivo con un gran láser. El tipo del ataque lo determina el cartucho que porta el usuario.', }, relicSong: { - name: "Canto Arcaico", - effect: "Ataca conmoviendo al objetivo con un antiguo canto. Puede dormirlo.", + name: 'Canto Arcaico', + effect: 'Ataca conmoviendo al objetivo con un antiguo canto. Puede dormirlo.', }, secretSword: { - name: "Sable Místico", - effect: "Ensarta al objetivo con un largo cuerno dotado de un poder místico que provoca daño físico.", + name: 'Sable Místico', + effect: 'Ensarta al objetivo con un largo cuerno dotado de un poder místico que provoca daño físico.', }, glaciate: { - name: "Mundo Gélido", - effect: "Ataque con aire helado que baja la Velocidad del objetivo.", + name: 'Mundo Gélido', + effect: 'Ataque con aire helado que baja la Velocidad del objetivo.', }, boltStrike: { - name: "Ataque Fulgor", - effect: "Ataca envolviéndose de una gran carga eléctrica y embistiendo al objetivo con ella. Puede paralizar.", + name: 'Ataque Fulgor', + effect: 'Ataca envolviéndose de una gran carga eléctrica y embistiendo al objetivo con ella. Puede paralizar.', }, blueFlare: { - name: "Llama Azul", - effect: "Ataca con una bella pero potente llama azul que rodea al objetivo. Puede causar quemaduras.", + name: 'Llama Azul', + effect: 'Ataca con una bella pero potente llama azul que rodea al objetivo. Puede causar quemaduras.', }, fieryDance: { - name: "Danza Llama", - effect: "Envuelve en llamas y daña al objetivo. Puede aumentar el Ataque Especial de quien lo usa.", + name: 'Danza Llama', + effect: 'Envuelve en llamas y daña al objetivo. Puede aumentar el Ataque Especial de quien lo usa.', }, freezeShock: { - name: "Rayo Gélido", - effect: "El usuario carga un bloque de hielo con electricidad en el primer turno y ataca con él en el segundo. Puede paralizar.", + name: 'Rayo Gélido', + effect: 'El usuario carga un bloque de hielo con electricidad en el primer turno y ataca con él en el segundo. Puede paralizar.', }, iceBurn: { - name: "Llama Gélida", - effect: "Ataca al objetivo en el segundo turno rodeándolo de un aire gélido. Puede causar quemaduras.", + name: 'Llama Gélida', + effect: 'Ataca al objetivo en el segundo turno rodeándolo de un aire gélido. Puede causar quemaduras.', }, snarl: { - name: "Alarido", - effect: "Chillido desagradable que reduce el Ataque Especial del objetivo.", + name: 'Alarido', + effect: 'Chillido desagradable que reduce el Ataque Especial del objetivo.', }, icicleCrash: { - name: "Chuzos", - effect: "Lanza grandes carámbanos. Puede amedrentar al objetivo.", + name: 'Chuzos', + effect: 'Lanza grandes carámbanos. Puede amedrentar al objetivo.', }, vCreate: { - name: "V de Fuego", - effect: "Golpea con una V de llamas al objetivo. Baja la Defensa, la Defensa Especial y la Velocidad de quien lo usa.", + name: 'V de Fuego', + effect: 'Golpea con una V de llamas al objetivo. Baja la Defensa, la Defensa Especial y la Velocidad de quien lo usa.', }, fusionFlare: { - name: "Llama Fusión", - effect: "Ataca con una llamarada gigantesca. Aumenta su potencia si es influenciada por una gran energía eléctrica.", + name: 'Llama Fusión', + effect: 'Ataca con una llamarada gigantesca. Aumenta su potencia si es influenciada por una gran energía eléctrica.', }, fusionBolt: { - name: "Rayo Fusión", - effect: "Ataca con una enorme descarga eléctrica. Aumenta su potencia si es influenciada por una gigantesca llamarada.", + name: 'Rayo Fusión', + effect: 'Ataca con una enorme descarga eléctrica. Aumenta su potencia si es influenciada por una gigantesca llamarada.', }, flyingPress: { - name: "Plancha Voladora", - effect: "El usuario se lanza sobre su objetivo. Este movimiento es de tipo Lucha y tipo Volador al mismo tiempo.", + name: 'Plancha Voladora', + effect: 'El usuario se lanza sobre su objetivo. Este movimiento es de tipo Lucha y tipo Volador al mismo tiempo.', }, matBlock: { - name: "Escudo Tatami", - effect: "El usuario usa un tatami para escudarse de los ataques enemigos. Protege también a los aliados. No funciona contra movimientos de estado.", + name: 'Escudo Tatami', + effect: 'El usuario usa un tatami para escudarse de los ataques enemigos. Protege también a los aliados. No funciona contra movimientos de estado.', }, belch: { - name: "Eructo", - effect: "El usuario causa daño a su objetivo lanzándole un eructo. Para poder utilizar este movimiento, tiene que haberse comido una baya equipada.", + name: 'Eructo', + effect: 'El usuario causa daño a su objetivo lanzándole un eructo. Para poder utilizar este movimiento, tiene que haberse comido una baya equipada.', }, rototiller: { - name: "Fertilizante", - effect: "Labra la tierra haciendo que sea más fácil cultivarla y consigue que aumente el Ataque y el Ataque Especial de los Pokémon de tipo Planta.", + name: 'Fertilizante', + effect: 'Labra la tierra haciendo que sea más fácil cultivarla y consigue que aumente el Ataque y el Ataque Especial de los Pokémon de tipo Planta.', }, stickyWeb: { - name: "Red Viscosa", - effect: "Coloca una red pegajosa alrededor del objetivo que reduce la Velocidad de los rivales que entran en combate.", + name: 'Red Viscosa', + effect: 'Coloca una red pegajosa alrededor del objetivo que reduce la Velocidad de los rivales que entran en combate.', }, fellStinger: { - name: "Aguijón Letal", - effect: "Si se derrota al objetivo utilizando este movimiento, aumenta muchísimo el Ataque del usuario.", + name: 'Aguijón Letal', + effect: 'Si se derrota al objetivo utilizando este movimiento, aumenta muchísimo el Ataque del usuario.', }, phantomForce: { - name: "Golpe Fantasma", - effect: "El usuario desaparece en el primer turno y ataca a su objetivo en el segundo. Permite acertar aunque el objetivo esté protegiéndose.", + name: 'Golpe Fantasma', + effect: 'El usuario desaparece en el primer turno y ataca a su objetivo en el segundo. Permite acertar aunque el objetivo esté protegiéndose.', }, trickOrTreat: { - name: "Halloween", - effect: "Invita al objetivo a celebrar Halloween, lo que añade el tipo Fantasma a los tipos de este.", + name: 'Halloween', + effect: 'Invita al objetivo a celebrar Halloween, lo que añade el tipo Fantasma a los tipos de este.', }, nobleRoar: { - name: "Rugido de Guerra", - effect: "Intimida a su oponente con un rugido de guerra, lo que hace que disminuyan tanto su Ataque como su Ataque Especial.", + name: 'Rugido de Guerra', + effect: 'Intimida a su oponente con un rugido de guerra, lo que hace que disminuyan tanto su Ataque como su Ataque Especial.', }, ionDeluge: { - name: "Cortina Plasma", - effect: "El Pokémon disemina partículas con carga eléctrica que convierten los movimientos de tipo Normal en tipo Eléctrico.", + name: 'Cortina Plasma', + effect: 'El Pokémon disemina partículas con carga eléctrica que convierten los movimientos de tipo Normal en tipo Eléctrico.', }, parabolicCharge: { - name: "Carga Parábola", - effect: "Inflige daño a los Pokémon adyacentes. El usuario absorbe la mitad del daño producido para restaurar sus propios PS.", + name: 'Carga Parábola', + effect: 'Inflige daño a los Pokémon adyacentes. El usuario absorbe la mitad del daño producido para restaurar sus propios PS.', }, forestsCurse: { - name: "Condena Silvana", - effect: "El objetivo es presa de la maldición del bosque, por lo que pasa a ser un Pokémon de tipo Planta, además de conservar sus tipos habituales.", + name: 'Condena Silvana', + effect: 'El objetivo es presa de la maldición del bosque, por lo que pasa a ser un Pokémon de tipo Planta, además de conservar sus tipos habituales.', }, petalBlizzard: { - name: "Tormenta Floral", - effect: "El usuario desata un intenso vendaval de pétalos que daña a los Pokémon a su alrededor.", + name: 'Tormenta Floral', + effect: 'El usuario desata un intenso vendaval de pétalos que daña a los Pokémon a su alrededor.', }, freezeDry: { - name: "Liofilización", - effect: "Enfría súbitamente al objetivo e incluso puede congelarlo. Es supereficaz contra Pokémon de tipo Agua.", + name: 'Liofilización', + effect: 'Enfría súbitamente al objetivo e incluso puede congelarlo. Es supereficaz contra Pokémon de tipo Agua.', }, disarmingVoice: { - name: "Voz Cautivadora", - effect: "Obnubila al objetivo con su fascinante voz y le provoca daños emocionales. No falla nunca.", + name: 'Voz Cautivadora', + effect: 'Obnubila al objetivo con su fascinante voz y le provoca daños emocionales. No falla nunca.', }, partingShot: { - name: "Última Palabra", - effect: "El usuario se cambia por otro Pokémon de su equipo, pero antes amedrenta a su oponente y hace que disminuyan su Ataque y Ataque Especial.", + name: 'Última Palabra', + effect: 'El usuario se cambia por otro Pokémon de su equipo, pero antes amedrenta a su oponente y hace que disminuyan su Ataque y Ataque Especial.', }, topsyTurvy: { - name: "Reversión", - effect: "Invierte por completo los cambios en las características del objetivo.", + name: 'Reversión', + effect: 'Invierte por completo los cambios en las características del objetivo.', }, drainingKiss: { - name: "Beso Drenaje", - effect: "El usuario absorbe PS del objetivo con un beso y restaura su propia energía en una cantidad igual o superior a la mitad del daño infligido.", + name: 'Beso Drenaje', + effect: 'El usuario absorbe PS del objetivo con un beso y restaura su propia energía en una cantidad igual o superior a la mitad del daño infligido.', }, craftyShield: { - name: "Truco Defensa", - effect: "Usa unos misteriosos poderes para protegerse a sí mismo y a sus aliados de movimientos de estado, pero no de otro tipo de ataques.", + name: 'Truco Defensa', + effect: 'Usa unos misteriosos poderes para protegerse a sí mismo y a sus aliados de movimientos de estado, pero no de otro tipo de ataques.', }, flowerShield: { - name: "Defensa Floral", - effect: "Aumenta la Defensa de todos los Pokémon de tipo Planta que hay en el combate usando unos misteriosos poderes.", + name: 'Defensa Floral', + effect: 'Aumenta la Defensa de todos los Pokémon de tipo Planta que hay en el combate usando unos misteriosos poderes.', }, grassyTerrain: { - name: "Campo de Hierba", - effect: "Durante cinco turnos, se potencian los movimientos de tipo Planta y los Pokémon que están en contacto con el suelo recuperan PS en cada turno.", + name: 'Campo de Hierba', + effect: 'Durante cinco turnos, se potencian los movimientos de tipo Planta y los Pokémon que están en contacto con el suelo recuperan PS en cada turno.', }, mistyTerrain: { - name: "Campo de Niebla", - effect: "Durante cinco turnos, los Pokémon que están en el suelo no sufren problemas de estado y se reduce a la mitad el daño de los movimientos de tipo Dragón.", + name: 'Campo de Niebla', + effect: 'Durante cinco turnos, los Pokémon que están en el suelo no sufren problemas de estado y se reduce a la mitad el daño de los movimientos de tipo Dragón.', }, electrify: { - name: "Electrificación", - effect: "Si el objetivo queda electrificado antes de usar un movimiento, este será de tipo Eléctrico.", + name: 'Electrificación', + effect: 'Si el objetivo queda electrificado antes de usar un movimiento, este será de tipo Eléctrico.', }, playRough: { - name: "Carantoña", - effect: "El Pokémon que lo usa le hace cucamonas al objetivo y lo ataca. Puede disminuir el Ataque del objetivo.", + name: 'Carantoña', + effect: 'El Pokémon que lo usa le hace cucamonas al objetivo y lo ataca. Puede disminuir el Ataque del objetivo.', }, fairyWind: { - name: "Viento Feérico", - effect: "El Pokémon que lo usa desata un vendaval feérico que arremete contra el objetivo.", + name: 'Viento Feérico', + effect: 'El Pokémon que lo usa desata un vendaval feérico que arremete contra el objetivo.', }, moonblast: { - name: "Fuerza Lunar", - effect: "Invoca el poder de la luna para atacar al objetivo. Puede reducir su Ataque Especial.", + name: 'Fuerza Lunar', + effect: 'Invoca el poder de la luna para atacar al objetivo. Puede reducir su Ataque Especial.', }, boomburst: { - name: "Estruendo", - effect: "Ataca a todos los Pokémon a su alrededor con una potentísima onda sonora.", + name: 'Estruendo', + effect: 'Ataca a todos los Pokémon a su alrededor con una potentísima onda sonora.', }, fairyLock: { - name: "Cerrojo Feérico", - effect: "Consigue que ningún Pokémon pueda huir ni ser cambiado por otro en el siguiente turno echando un cerrojo.", + name: 'Cerrojo Feérico', + effect: 'Consigue que ningún Pokémon pueda huir ni ser cambiado por otro en el siguiente turno echando un cerrojo.', }, kingsShield: { - name: "Escudo Real", - effect: "El usuario adopta una postura defensiva y se protege de cualquier daño. Reduce el Ataque de cualquier Pokémon con el que entre en contacto.", + name: 'Escudo Real', + effect: 'El usuario adopta una postura defensiva y se protege de cualquier daño. Reduce el Ataque de cualquier Pokémon con el que entre en contacto.', }, playNice: { - name: "Camaradería", - effect: "Se hace amigo de su objetivo y consigue que a este se le quiten las ganas de combatir, lo que reduce su Ataque.", + name: 'Camaradería', + effect: 'Se hace amigo de su objetivo y consigue que a este se le quiten las ganas de combatir, lo que reduce su Ataque.', }, confide: { - name: "Confidencia", - effect: "Hace que el objetivo pierda la concentración contándole un secreto y reduce su Ataque Especial.", + name: 'Confidencia', + effect: 'Hace que el objetivo pierda la concentración contándole un secreto y reduce su Ataque Especial.', }, diamondStorm: { - name: "Torm. Diamantes", - effect: "Desata un devastador vendaval de diamantes para dañar a los oponentes. Puede aumentar mucho la Defensa del usuario.", + name: 'Torm. Diamantes', + effect: 'Desata un devastador vendaval de diamantes para dañar a los oponentes. Puede aumentar mucho la Defensa del usuario.', }, steamEruption: { - name: "Chorro de Vapor", - effect: "Envuelve al objetivo con vapor extremadamente caliente que puede causar quemaduras.", + name: 'Chorro de Vapor', + effect: 'Envuelve al objetivo con vapor extremadamente caliente que puede causar quemaduras.', }, hyperspaceHole: { - name: "Paso Dimensional", - effect: "El usuario aparece junto al rival usando un agujero dimensional y le asesta un golpe que movimientos como Protección o Detección no pueden evitar.", + name: 'Paso Dimensional', + effect: 'El usuario aparece junto al rival usando un agujero dimensional y le asesta un golpe que movimientos como Protección o Detección no pueden evitar.', }, waterShuriken: { - name: "Shuriken de Agua", - effect: "Golpea al objetivo de dos a cinco veces seguidas con estrellas arrojadizas hechas de mucosidad. Este movimiento tiene prioridad alta.", + name: 'Shuriken de Agua', + effect: 'Golpea al objetivo de dos a cinco veces seguidas con estrellas arrojadizas hechas de mucosidad. Este movimiento tiene prioridad alta.', }, mysticalFire: { - name: "Llama Embrujada", - effect: "El usuario lanza por la boca una singular llama a gran temperatura con la que ataca a su objetivo y reduce su Ataque Especial.", + name: 'Llama Embrujada', + effect: 'El usuario lanza por la boca una singular llama a gran temperatura con la que ataca a su objetivo y reduce su Ataque Especial.', }, spikyShield: { - name: "Barrera Espinosa", - effect: "Protege al usuario de ataques e inflige daño a quien se los lance si entra en contacto con él.", + name: 'Barrera Espinosa', + effect: 'Protege al usuario de ataques e inflige daño a quien se los lance si entra en contacto con él.', }, aromaticMist: { - name: "Niebla Aromática", - effect: "Consigue aumentar la Defensa Especial de un Pokémon de su equipo con una fragancia misteriosa.", + name: 'Niebla Aromática', + effect: 'Consigue aumentar la Defensa Especial de un Pokémon de su equipo con una fragancia misteriosa.', }, eerieImpulse: { - name: "Onda Anómala", - effect: "El usuario irradia unas raras ondas que, al alcanzar al objetivo, reducen mucho su Ataque Especial.", + name: 'Onda Anómala', + effect: 'El usuario irradia unas raras ondas que, al alcanzar al objetivo, reducen mucho su Ataque Especial.', }, venomDrench: { - name: "Trampa Venenosa", - effect: "Impregna a su objetivo con un líquido venenoso que disminuye el Ataque, el Ataque Especial y la Velocidad. Solo afecta a Pokémon ya envenenados.", + name: 'Trampa Venenosa', + effect: 'Impregna a su objetivo con un líquido venenoso que disminuye el Ataque, el Ataque Especial y la Velocidad. Solo afecta a Pokémon ya envenenados.', }, powder: { - name: "Polvo Explosivo", - effect: "Esparce un polvo sobre el objetivo. Si este usa un movimiento de tipo Fuego en el mismo turno, el polvo explota y le inflige daño.", + name: 'Polvo Explosivo', + effect: 'Esparce un polvo sobre el objetivo. Si este usa un movimiento de tipo Fuego en el mismo turno, el polvo explota y le inflige daño.', }, geomancy: { - name: "Geocontrol", - effect: "Concentra energía durante el primer turno, de forma que su Velocidad, Ataque Especial y Defensa Especial aumenten mucho en el segundo.", + name: 'Geocontrol', + effect: 'Concentra energía durante el primer turno, de forma que su Velocidad, Ataque Especial y Defensa Especial aumenten mucho en el segundo.', }, magneticFlux: { - name: "Aura Magnética", - effect: "Manipula el campo magnético y logra aumentar la Defensa y la Defensa Especial de los Pokémon aliados que cuenten con las habilidades Más y Menos.", + name: 'Aura Magnética', + effect: 'Manipula el campo magnético y logra aumentar la Defensa y la Defensa Especial de los Pokémon aliados que cuenten con las habilidades Más y Menos.', }, happyHour: { - name: "Paga Extra", - effect: "Al usar este movimiento, se duplica el dinero recibido tras el combate.", + name: 'Paga Extra', + effect: 'Al usar este movimiento, se duplica el dinero recibido tras el combate.', }, electricTerrain: { - name: "Campo Eléctrico", - effect: "Durante cinco turnos, se potencian los movimientos de tipo Eléctrico y los Pokémon que están en contacto con el suelo no pueden quedarse dormidos.", + name: 'Campo Eléctrico', + effect: 'Durante cinco turnos, se potencian los movimientos de tipo Eléctrico y los Pokémon que están en contacto con el suelo no pueden quedarse dormidos.', }, dazzlingGleam: { - name: "Brillo Mágico", - effect: "Inflige daño al objetivo con una potente luz.", + name: 'Brillo Mágico', + effect: 'Inflige daño al objetivo con una potente luz.', }, celebrate: { - name: "Celebración", - effect: "El Pokémon te felicita en un día muy especial para ti.", + name: 'Celebración', + effect: 'El Pokémon te felicita en un día muy especial para ti.', }, holdHands: { - name: "Manos Juntas", - effect: "El usuario le da la mano a un aliado y ambos se sienten muy felices.", + name: 'Manos Juntas', + effect: 'El usuario le da la mano a un aliado y ambos se sienten muy felices.', }, babyDollEyes: { - name: "Ojitos Tiernos", - effect: "Lanza una mirada al objetivo con ojos acaramelados, con lo que logra que su Ataque se reduzca. Este movimiento tiene prioridad alta.", + name: 'Ojitos Tiernos', + effect: 'Lanza una mirada al objetivo con ojos acaramelados, con lo que logra que su Ataque se reduzca. Este movimiento tiene prioridad alta.', }, nuzzle: { - name: "Moflete Estático", - effect: "El usuario frota sus mofletes cargados de electricidad contra el objetivo y consigue paralizarlo.", + name: 'Moflete Estático', + effect: 'El usuario frota sus mofletes cargados de electricidad contra el objetivo y consigue paralizarlo.', }, holdBack: { - name: "Clemencia", - effect: "El usuario se contiene a la hora de atacar y deja al objetivo con al menos 1 PS.", + name: 'Clemencia', + effect: 'El usuario se contiene a la hora de atacar y deja al objetivo con al menos 1 PS.', }, infestation: { - name: "Acoso", - effect: "Hostiga al objetivo durante cuatro o cinco turnos e impide que pueda huir o ser cambiado por otro mientras tanto.", + name: 'Acoso', + effect: 'Hostiga al objetivo durante cuatro o cinco turnos e impide que pueda huir o ser cambiado por otro mientras tanto.', }, powerUpPunch: { - name: "Puño Incremento", - effect: "Cada vez que golpea a un oponente se endurecen sus puños. Si acierta al objetivo, el Ataque del usuario aumenta.", + name: 'Puño Incremento', + effect: 'Cada vez que golpea a un oponente se endurecen sus puños. Si acierta al objetivo, el Ataque del usuario aumenta.', }, oblivionWing: { - name: "Ala Mortífera", - effect: "El usuario absorbe energía del objetivo y aumenta sus PS en una cantidad igual o superior a la mitad del daño infligido.", + name: 'Ala Mortífera', + effect: 'El usuario absorbe energía del objetivo y aumenta sus PS en una cantidad igual o superior a la mitad del daño infligido.', }, thousandArrows: { - name: "Mil Flechas", - effect: "Acierta incluso a Pokémon que estén en el aire y los hace caer al suelo.", + name: 'Mil Flechas', + effect: 'Acierta incluso a Pokémon que estén en el aire y los hace caer al suelo.', }, thousandWaves: { - name: "Mil Temblores", - effect: "El usuario genera ondas sísmicas que se propagan por el suelo y sacuden al objetivo. Los Pokémon alcanzados no podrán huir del combate ni ser cambiados por otros.", + name: 'Mil Temblores', + effect: 'El usuario genera ondas sísmicas que se propagan por el suelo y sacuden al objetivo. Los Pokémon alcanzados no podrán huir del combate ni ser cambiados por otros.', }, landsWrath: { - name: "Fuerza Telúrica", - effect: "Acumula energía de la corteza terrestre y la concentra contra los oponentes, dañándolos.", + name: 'Fuerza Telúrica', + effect: 'Acumula energía de la corteza terrestre y la concentra contra los oponentes, dañándolos.', }, lightOfRuin: { - name: "Luz Aniquiladora", - effect: "El usuario emplea el poder de la Flor Eterna para lanzar un potente rayo de luz, pero sufre bastante daño al hacerlo.", + name: 'Luz Aniquiladora', + effect: 'El usuario emplea el poder de la Flor Eterna para lanzar un potente rayo de luz, pero sufre bastante daño al hacerlo.', }, originPulse: { - name: "Pulso Primigenio", - effect: "Ataca al objetivo con una infinidad de rayos de luz azulada.", + name: 'Pulso Primigenio', + effect: 'Ataca al objetivo con una infinidad de rayos de luz azulada.', }, precipiceBlades: { - name: "Filo del Abismo", - effect: "Hace que el poder latente de la tierra se manifieste en forma de hojas afiladas y ataca al objetivo con ellas.", + name: 'Filo del Abismo', + effect: 'Hace que el poder latente de la tierra se manifieste en forma de hojas afiladas y ataca al objetivo con ellas.', }, dragonAscent: { - name: "Ascenso Draco", - effect: "El usuario se precipita desde el cielo a una velocidad de vértigo para atacar al objetivo, pero hace que bajen la Defensa y la Defensa Especial del usuario.", + name: 'Ascenso Draco', + effect: 'El usuario se precipita desde el cielo a una velocidad de vértigo para atacar al objetivo, pero hace que bajen la Defensa y la Defensa Especial del usuario.', }, hyperspaceFury: { - name: "Cerco Dimensión", - effect: "Ataca al objetivo con una ráfaga de golpes que pasan por alto los efectos de movimientos como Protección o Detección. Baja la Defensa del usuario.", + name: 'Cerco Dimensión', + effect: 'Ataca al objetivo con una ráfaga de golpes que pasan por alto los efectos de movimientos como Protección o Detección. Baja la Defensa del usuario.', }, breakneckBlitzPhysical: { - name: "Carrera Arrolladora", - effect: "El usuario emplea el Poder Z para coger carrerilla y arremeter contra el objetivo con gran fuerza. Su potencia depende de la del movimiento original.", + name: 'Carrera Arrolladora', + effect: 'El usuario emplea el Poder Z para coger carrerilla y arremeter contra el objetivo con gran fuerza. Su potencia depende de la del movimiento original.', }, breakneckBlitzSpecial: { - name: "Carrera Arrolladora", - effect: "Dummy data", + name: 'Carrera Arrolladora', + effect: 'Dummy data', }, allOutPummelingPhysical: { - name: "Ráfaga Demoledora", - effect: "Emplea el Poder Z para lanzar una sarta de golpes demoledores contra el objetivo. Su potencia depende de la del movimiento original.", + name: 'Ráfaga Demoledora', + effect: 'Emplea el Poder Z para lanzar una sarta de golpes demoledores contra el objetivo. Su potencia depende de la del movimiento original.', }, allOutPummelingSpecial: { - name: "Ráfaga Demoledora", - effect: "Dummy data", + name: 'Ráfaga Demoledora', + effect: 'Dummy data', }, supersonicSkystrikePhysical: { - name: "Picado Supersónico", - effect: "El usuario emplea el Poder Z para volar muy alto y abalanzarse en picado sobre el objetivo. Su potencia depende de la del movimiento original.", + name: 'Picado Supersónico', + effect: 'El usuario emplea el Poder Z para volar muy alto y abalanzarse en picado sobre el objetivo. Su potencia depende de la del movimiento original.', }, supersonicSkystrikeSpecial: { - name: "Picado Supersónico", - effect: "Dummy data", + name: 'Picado Supersónico', + effect: 'Dummy data', }, acidDownpourPhysical: { - name: "Diluvio Corrosivo", - effect: "El usuario emplea el Poder Z para crear una ciénaga venenosa en la que sumerge al objetivo. Su potencia depende de la del movimiento original.", + name: 'Diluvio Corrosivo', + effect: 'El usuario emplea el Poder Z para crear una ciénaga venenosa en la que sumerge al objetivo. Su potencia depende de la del movimiento original.', }, acidDownpourSpecial: { - name: "Diluvio Corrosivo", - effect: "Dummy data", + name: 'Diluvio Corrosivo', + effect: 'Dummy data', }, tectonicRagePhysical: { - name: "Barrena Telúrica", - effect: "Emplea el Poder Z para abrir una profunda grieta en el suelo que se traga al oponente. Su potencia depende de la del movimiento original.", + name: 'Barrena Telúrica', + effect: 'Emplea el Poder Z para abrir una profunda grieta en el suelo que se traga al oponente. Su potencia depende de la del movimiento original.', }, tectonicRageSpecial: { - name: "Barrena Telúrica", - effect: "Dummy data", + name: 'Barrena Telúrica', + effect: 'Dummy data', }, continentalCrushPhysical: { - name: "Aplastamiento Gigalítico", - effect: "El usuario emplea el Poder Z para crear una montaña rocosa con la que aplasta al objetivo. Su potencia depende de la del movimiento original.", + name: 'Aplastamiento Gigalítico', + effect: 'El usuario emplea el Poder Z para crear una montaña rocosa con la que aplasta al objetivo. Su potencia depende de la del movimiento original.', }, continentalCrushSpecial: { - name: "Aplastamiento Gigalítico", - effect: "Dummy data", + name: 'Aplastamiento Gigalítico', + effect: 'Dummy data', }, savageSpinOutPhysical: { - name: "Guadaña Sedosa", - effect: "Emplea el Poder Z para encerrar a su oponente en un capullo contra el que arremete con fuerza. Su potencia depende de la del movimiento original.", + name: 'Guadaña Sedosa', + effect: 'Emplea el Poder Z para encerrar a su oponente en un capullo contra el que arremete con fuerza. Su potencia depende de la del movimiento original.', }, savageSpinOutSpecial: { - name: "Guadaña Sedosa", - effect: "Dummy data", + name: 'Guadaña Sedosa', + effect: 'Dummy data', }, neverEndingNightmarePhysical: { - name: "Presa Espectral", - effect: "El usuario emplea el Poder Z para invocar a unos espectros encolerizados que apresan al objetivo. Su potencia depende de la del movimiento original.", + name: 'Presa Espectral', + effect: 'El usuario emplea el Poder Z para invocar a unos espectros encolerizados que apresan al objetivo. Su potencia depende de la del movimiento original.', }, neverEndingNightmareSpecial: { - name: "Presa Espectral", - effect: "Dummy data", + name: 'Presa Espectral', + effect: 'Dummy data', }, corkscrewCrashPhysical: { - name: "Hélice Trepanadora", - effect: "El usuario emplea el Poder Z para girar a toda velocidad y perforar al objetivo. Su potencia depende de la del movimiento original.", + name: 'Hélice Trepanadora', + effect: 'El usuario emplea el Poder Z para girar a toda velocidad y perforar al objetivo. Su potencia depende de la del movimiento original.', }, corkscrewCrashSpecial: { - name: "Hélice Trepanadora", - effect: "Dummy data", + name: 'Hélice Trepanadora', + effect: 'Dummy data', }, infernoOverdrivePhysical: { - name: "Hecatombe Pírica", - effect: "El usuario emplea el Poder Z para lanzar una enorme llamarada con la que calcina a su objetivo. Su potencia depende de la del movimiento original.", + name: 'Hecatombe Pírica', + effect: 'El usuario emplea el Poder Z para lanzar una enorme llamarada con la que calcina a su objetivo. Su potencia depende de la del movimiento original.', }, infernoOverdriveSpecial: { - name: "Hecatombe Pírica", - effect: "Dummy data", + name: 'Hecatombe Pírica', + effect: 'Dummy data', }, hydroVortexPhysical: { - name: "Hidrovórtice Abisal", - effect: "El usuario emplea el Poder Z para crear un potente torbellino de agua que engulle al objetivo. Su potencia depende de la del movimiento original.", + name: 'Hidrovórtice Abisal', + effect: 'El usuario emplea el Poder Z para crear un potente torbellino de agua que engulle al objetivo. Su potencia depende de la del movimiento original.', }, hydroVortexSpecial: { - name: "Hidrovórtice Abisal", - effect: "Dummy data", + name: 'Hidrovórtice Abisal', + effect: 'Dummy data', }, bloomDoomPhysical: { - name: "Megatón Floral", - effect: "Emplea el Poder Z para concentrar la energía de la vegetación que lo rodea y atacar al objetivo. Su potencia depende de la del movimiento original.", + name: 'Megatón Floral', + effect: 'Emplea el Poder Z para concentrar la energía de la vegetación que lo rodea y atacar al objetivo. Su potencia depende de la del movimiento original.', }, bloomDoomSpecial: { - name: "Megatón Floral", - effect: "Dummy data", + name: 'Megatón Floral', + effect: 'Dummy data', }, gigavoltHavocPhysical: { - name: "Gigavoltio Destructor", - effect: "El usuario emplea el Poder Z para generar una fuerte descarga eléctrica con la que electrocuta al objetivo. Su potencia depende de la del movimiento original.", + name: 'Gigavoltio Destructor', + effect: 'El usuario emplea el Poder Z para generar una fuerte descarga eléctrica con la que electrocuta al objetivo. Su potencia depende de la del movimiento original.', }, gigavoltHavocSpecial: { - name: "Gigavoltio Destructor", - effect: "Dummy data", + name: 'Gigavoltio Destructor', + effect: 'Dummy data', }, shatteredPsychePhysical: { - name: "Disruptor Psíquico", - effect: "Emplea el Poder Z para manipular la mente del objetivo, infligiéndole un daño ingente. Su potencia depende de la del movimiento original.", + name: 'Disruptor Psíquico', + effect: 'Emplea el Poder Z para manipular la mente del objetivo, infligiéndole un daño ingente. Su potencia depende de la del movimiento original.', }, shatteredPsycheSpecial: { - name: "Disruptor Psíquico", - effect: "Dummy data", + name: 'Disruptor Psíquico', + effect: 'Dummy data', }, subzeroSlammerPhysical: { - name: "Crioaliento Despiadado", - effect: "Emplea el Poder Z para lanzar un rayo de hielo que baja la temperatura de golpe y congela al objetivo. Su potencia depende de la del movimiento original.", + name: 'Crioaliento Despiadado', + effect: 'Emplea el Poder Z para lanzar un rayo de hielo que baja la temperatura de golpe y congela al objetivo. Su potencia depende de la del movimiento original.', }, subzeroSlammerSpecial: { - name: "Crioaliento Despiadado", - effect: "Dummy data", + name: 'Crioaliento Despiadado', + effect: 'Dummy data', }, devastatingDrakePhysical: { - name: "Dracoaliento Devastador", - effect: "El usuario emplea el Poder Z para materializar su aura y golpear al objetivo. Su potencia depende de la del movimiento original.", + name: 'Dracoaliento Devastador', + effect: 'El usuario emplea el Poder Z para materializar su aura y golpear al objetivo. Su potencia depende de la del movimiento original.', }, devastatingDrakeSpecial: { - name: "Dracoaliento Devastador", - effect: "Dummy data", + name: 'Dracoaliento Devastador', + effect: 'Dummy data', }, blackHoleEclipsePhysical: { - name: "Agujero Negro Aniquilador", - effect: "El usuario emplea el Poder Z para generar un agujero negro que absorbe al objetivo. Su potencia depende de la del movimiento original.", + name: 'Agujero Negro Aniquilador', + effect: 'El usuario emplea el Poder Z para generar un agujero negro que absorbe al objetivo. Su potencia depende de la del movimiento original.', }, blackHoleEclipseSpecial: { - name: "Agujero Negro Aniquilador", - effect: "Dummy data", + name: 'Agujero Negro Aniquilador', + effect: 'Dummy data', }, twinkleTacklePhysical: { - name: "Arrumaco Sideral", - effect: "El usuario emplea el Poder Z para crear una dimensión fascinante que deja al rival a su merced. Su potencia depende de la del movimiento original.", + name: 'Arrumaco Sideral', + effect: 'El usuario emplea el Poder Z para crear una dimensión fascinante que deja al rival a su merced. Su potencia depende de la del movimiento original.', }, twinkleTackleSpecial: { - name: "Arrumaco Sideral", - effect: "Dummy data", + name: 'Arrumaco Sideral', + effect: 'Dummy data', }, catastropika: { - name: "Pikavoltio Letal", - effect: "Pikachu emplea el Poder Z para acumular una gran cantidad de electricidad en su cuerpo y arremeter contra el objetivo.", + name: 'Pikavoltio Letal', + effect: 'Pikachu emplea el Poder Z para acumular una gran cantidad de electricidad en su cuerpo y arremeter contra el objetivo.', }, shoreUp: { - name: "Recogearena", - effect: "Restaura la mitad de los PS máximos del usuario. Durante las tormentas de arena, restaura aún más PS.", + name: 'Recogearena', + effect: 'Restaura la mitad de los PS máximos del usuario. Durante las tormentas de arena, restaura aún más PS.', }, firstImpression: { - name: "Escaramuza", - effect: "Movimiento de gran potencia que solo puede usarse en el turno en que el usuario sale al combate.", + name: 'Escaramuza', + effect: 'Movimiento de gran potencia que solo puede usarse en el turno en que el usuario sale al combate.', }, banefulBunker: { - name: "Búnker", - effect: "Protege de los ataques y, al mismo tiempo, envenena al Pokémon que use un movimiento de contacto contra el usuario.", + name: 'Búnker', + effect: 'Protege de los ataques y, al mismo tiempo, envenena al Pokémon que use un movimiento de contacto contra el usuario.', }, spiritShackle: { - name: "Puntada Sombría", - effect: "Ataca al oponente y, al mismo tiempo, fija su sombra al terreno para impedir su huida.", + name: 'Puntada Sombría', + effect: 'Ataca al oponente y, al mismo tiempo, fija su sombra al terreno para impedir su huida.', }, darkestLariat: { - name: "Lariat Oscuro", - effect: "Gira sobre sí mismo y golpea al oponente con ambos brazos. Ignora los cambios en las características del objetivo.", + name: 'Lariat Oscuro', + effect: 'Gira sobre sí mismo y golpea al oponente con ambos brazos. Ignora los cambios en las características del objetivo.', }, sparklingAria: { - name: "Aria Burbuja", - effect: "Libera burbujas al cantar. Este movimiento cura las quemaduras de los Pokémon que reciban daño.", + name: 'Aria Burbuja', + effect: 'Libera burbujas al cantar. Este movimiento cura las quemaduras de los Pokémon que reciban daño.', }, iceHammer: { - name: "Martillo Hielo", - effect: "Un terrible puño golpea al contrincante, pero la Velocidad del usuario se ve reducida.", + name: 'Martillo Hielo', + effect: 'Un terrible puño golpea al contrincante, pero la Velocidad del usuario se ve reducida.', }, floralHealing: { - name: "Cura Floral", - effect: "Restaura la mitad de los PS máximos del objetivo. Es más efectivo cuando se usa en conjunción con Campo de Hierba.", + name: 'Cura Floral', + effect: 'Restaura la mitad de los PS máximos del objetivo. Es más efectivo cuando se usa en conjunción con Campo de Hierba.', }, highHorsepower: { - name: "Fuerza Equina", - effect: "Asesta un golpe devastador usando todo su cuerpo.", + name: 'Fuerza Equina', + effect: 'Asesta un golpe devastador usando todo su cuerpo.', }, strengthSap: { - name: "Absorbefuerza", - effect: "Restaura una cantidad de PS equivalente al valor de Ataque del rival, que además verá reducida esta característica.", + name: 'Absorbefuerza', + effect: 'Restaura una cantidad de PS equivalente al valor de Ataque del rival, que además verá reducida esta característica.', }, solarBlade: { - name: "Cuchilla Solar", - effect: "El usuario dedica un turno a absorber energía lumínica y concentrarla en forma de cuchilla con la que ataca al rival en el siguiente turno.", + name: 'Cuchilla Solar', + effect: 'El usuario dedica un turno a absorber energía lumínica y concentrarla en forma de cuchilla con la que ataca al rival en el siguiente turno.', }, leafage: { - name: "Follaje", - effect: "Ataca al objetivo lanzando hojas.", + name: 'Follaje', + effect: 'Ataca al objetivo lanzando hojas.', }, spotlight: { - name: "Foco", - effect: "Convierte a uno de los Pokémon que están combatiendo en el foco de atención, de modo que todos los ataques se dirijan hacia él.", + name: 'Foco', + effect: 'Convierte a uno de los Pokémon que están combatiendo en el foco de atención, de modo que todos los ataques se dirijan hacia él.', }, toxicThread: { - name: "Hilo Venenoso", - effect: "Ataca al objetivo con hilillos venenosos que reducen su Velocidad y lo envenenan.", + name: 'Hilo Venenoso', + effect: 'Ataca al objetivo con hilillos venenosos que reducen su Velocidad y lo envenenan.', }, laserFocus: { - name: "Aguzar", - effect: "El usuario se concentra para que el siguiente ataque propine un golpe crítico.", + name: 'Aguzar', + effect: 'El usuario se concentra para que el siguiente ataque propine un golpe crítico.', }, gearUp: { - name: "Piñón Auxiliar", - effect: "Cambia de marcha y logra aumentar el Ataque y el Ataque Especial de los Pokémon aliados que cuenten con las habilidades Más y Menos.", + name: 'Piñón Auxiliar', + effect: 'Cambia de marcha y logra aumentar el Ataque y el Ataque Especial de los Pokémon aliados que cuenten con las habilidades Más y Menos.', }, throatChop: { - name: "Golpe Mordaza", - effect: "Inflige al rival un dolor tan abrumador que le impide utilizar durante dos turnos ataques que se sirven del sonido.", + name: 'Golpe Mordaza', + effect: 'Inflige al rival un dolor tan abrumador que le impide utilizar durante dos turnos ataques que se sirven del sonido.', }, pollenPuff: { - name: "Bola de Polen", - effect: "Ataca al objetivo con una bola explosiva. Si esta alcanza a un aliado, le hará recuperar PS.", + name: 'Bola de Polen', + effect: 'Ataca al objetivo con una bola explosiva. Si esta alcanza a un aliado, le hará recuperar PS.', }, anchorShot: { - name: "Anclaje", - effect: "Ataca lanzando un ancla al objetivo, que queda atrapado y no puede huir ni ser cambiado por otro.", + name: 'Anclaje', + effect: 'Ataca lanzando un ancla al objetivo, que queda atrapado y no puede huir ni ser cambiado por otro.', }, psychicTerrain: { - name: "Campo Psíquico", - effect: "Durante cinco turnos, se potencian los movimientos de tipo Psíquico y los Pokémon que están en el suelo quedan protegidos contra movimientos con prioridad.", + name: 'Campo Psíquico', + effect: 'Durante cinco turnos, se potencian los movimientos de tipo Psíquico y los Pokémon que están en el suelo quedan protegidos contra movimientos con prioridad.', }, lunge: { - name: "Plancha", - effect: "Ataca al objetivo abalanzándose sobre él con todas sus fuerzas y reduce su Ataque.", + name: 'Plancha', + effect: 'Ataca al objetivo abalanzándose sobre él con todas sus fuerzas y reduce su Ataque.', }, fireLash: { - name: "Látigo Ígneo", - effect: "Golpea al objetivo con un látigo incandescente y reduce su Defensa.", + name: 'Látigo Ígneo', + effect: 'Golpea al objetivo con un látigo incandescente y reduce su Defensa.', }, powerTrip: { - name: "Chulería", - effect: "Ataca al oponente presumiendo de su fuerza. Cuanto más hayan subido las características del usuario, mayor será el daño.", + name: 'Chulería', + effect: 'Ataca al oponente presumiendo de su fuerza. Cuanto más hayan subido las características del usuario, mayor será el daño.', }, burnUp: { - name: "Llama Final", - effect: "Utiliza hasta el último resquicio de llamas de su cuerpo para infligir un grave daño al objetivo. Tras el ataque, el usuario deja de ser de tipo Fuego.", + name: 'Llama Final', + effect: 'Utiliza hasta el último resquicio de llamas de su cuerpo para infligir un grave daño al objetivo. Tras el ataque, el usuario deja de ser de tipo Fuego.', }, speedSwap: { - name: "Cambiavelocidad", - effect: "Intercambia su Velocidad por la del objetivo.", + name: 'Cambiavelocidad', + effect: 'Intercambia su Velocidad por la del objetivo.', }, smartStrike: { - name: "Cuerno Certero", - effect: "El usuario ensarta al objetivo con su afilada cornamenta. No falla nunca.", + name: 'Cuerno Certero', + effect: 'El usuario ensarta al objetivo con su afilada cornamenta. No falla nunca.', }, purify: { - name: "Purificación", - effect: "Cura los problemas de estado del Pokémon rival y a cambio recupera PS propios.", + name: 'Purificación', + effect: 'Cura los problemas de estado del Pokémon rival y a cambio recupera PS propios.', }, revelationDance: { - name: "Danza Despertar", - effect: "Ataque que consiste en un baile muy enérgico. El tipo de este ataque se corresponde con el del Pokémon que lo ejecuta.", + name: 'Danza Despertar', + effect: 'Ataque que consiste en un baile muy enérgico. El tipo de este ataque se corresponde con el del Pokémon que lo ejecuta.', }, coreEnforcer: { - name: "Núcleo Castigo", - effect: "Inflige daño al rival, y si este ya ha hecho uso de algún movimiento, pierde su habilidad.", + name: 'Núcleo Castigo', + effect: 'Inflige daño al rival, y si este ya ha hecho uso de algún movimiento, pierde su habilidad.', }, tropKick: { - name: "Patada Tropical", - effect: "Lanza una patada con la fuerza del trópico que golpea al objetivo y reduce su Ataque.", + name: 'Patada Tropical', + effect: 'Lanza una patada con la fuerza del trópico que golpea al objetivo y reduce su Ataque.', }, instruct: { - name: "Mandato", - effect: "Fuerza al objetivo a repetir inmediatamente su último movimiento.", + name: 'Mandato', + effect: 'Fuerza al objetivo a repetir inmediatamente su último movimiento.', }, beakBlast: { - name: "Pico Cañón", - effect: "Primero aumenta la temperatura de su pico y luego ejecuta un ataque. Quema al rival si este le propina un ataque físico mientras está calentando el pico.", + name: 'Pico Cañón', + effect: 'Primero aumenta la temperatura de su pico y luego ejecuta un ataque. Quema al rival si este le propina un ataque físico mientras está calentando el pico.', }, clangingScales: { - name: "Fragor Escamas", - effect: "Frota todas las escamas de su cuerpo para crear un fuerte sonido con el que ataca. Cuando el ataque termina, su Defensa se ve reducida.", + name: 'Fragor Escamas', + effect: 'Frota todas las escamas de su cuerpo para crear un fuerte sonido con el que ataca. Cuando el ataque termina, su Defensa se ve reducida.', }, dragonHammer: { - name: "Martillo Dragón", - effect: "Usa el cuerpo como un martillo para abalanzarse sobre su rival y causarle daño.", + name: 'Martillo Dragón', + effect: 'Usa el cuerpo como un martillo para abalanzarse sobre su rival y causarle daño.', }, brutalSwing: { - name: "Giro Vil", - effect: "Hace pivotar su cuerpo para causar daño a los Pokémon adyacentes.", + name: 'Giro Vil', + effect: 'Hace pivotar su cuerpo para causar daño a los Pokémon adyacentes.', }, auroraVeil: { - name: "Velo Aurora", - effect: "Reduce el daño de los ataques físicos y especiales durante cinco turnos. Solo puede usarse cuando está nevando.", + name: 'Velo Aurora', + effect: 'Reduce el daño de los ataques físicos y especiales durante cinco turnos. Solo puede usarse cuando está nevando.', }, sinisterArrowRaid: { - name: "Aluvión de Flechas Sombrías", - effect: "Decidueye usa el Poder Z para proyectar multitud de flechas potentísimas que atraviesan a su oponente.", + name: 'Aluvión de Flechas Sombrías', + effect: 'Decidueye usa el Poder Z para proyectar multitud de flechas potentísimas que atraviesan a su oponente.', }, maliciousMoonsault: { - name: "Hiperplancha Oscura", - effect: "Incineroar refuerza sus músculos con el Poder Z para golpear con todas sus fuerzas a su oponente.", + name: 'Hiperplancha Oscura', + effect: 'Incineroar refuerza sus músculos con el Poder Z para golpear con todas sus fuerzas a su oponente.', }, oceanicOperetta: { - name: "Sinfonía de la Diva Marina", - effect: "Primarina invoca ingentes cantidades de agua con el Poder Z para atacar con gran potencia a su rival.", + name: 'Sinfonía de la Diva Marina', + effect: 'Primarina invoca ingentes cantidades de agua con el Poder Z para atacar con gran potencia a su rival.', }, guardianOfAlola: { - name: "Cólera del Guardián", - effect: "Los Pokémon Dios Nativo canalizan la energía de Alola gracias al Poder Z y atacan con gran fuerza a sus rivales reduciendo un gran porcentaje de sus PS.", + name: 'Cólera del Guardián', + effect: 'Los Pokémon Dios Nativo canalizan la energía de Alola gracias al Poder Z y atacan con gran fuerza a sus rivales reduciendo un gran porcentaje de sus PS.', }, soulStealing7StarStrike: { - name: "Constelación Robaalmas", - effect: "Cuando Marshadow obtiene el Poder Z, lanza una potente y continua oleada de puñetazos y patadas con la que castiga a su rival.", + name: 'Constelación Robaalmas', + effect: 'Cuando Marshadow obtiene el Poder Z, lanza una potente y continua oleada de puñetazos y patadas con la que castiga a su rival.', }, stokedSparksurfer: { - name: "Surfeo Galvánico", - effect: "Cuando un Raichu de Alola obtiene el Poder Z, lanza un potente ataque contra su enemigo y lo deja paralizado.", + name: 'Surfeo Galvánico', + effect: 'Cuando un Raichu de Alola obtiene el Poder Z, lanza un potente ataque contra su enemigo y lo deja paralizado.', }, pulverizingPancake: { - name: "Arrojo Intempestivo", - effect: "Gracias al Poder Z, Snorlax puede mover su enorme cuerpo con gran agilidad y determinación, cargando sobre el oponente con todas sus fuerzas.", + name: 'Arrojo Intempestivo', + effect: 'Gracias al Poder Z, Snorlax puede mover su enorme cuerpo con gran agilidad y determinación, cargando sobre el oponente con todas sus fuerzas.', }, extremeEvoboost: { - name: "Novena Potencia", - effect: "Cuando Eevee obtiene el Poder Z, toma prestada la energía de sus amigos evolucionados para potenciar enormemente sus características.", + name: 'Novena Potencia', + effect: 'Cuando Eevee obtiene el Poder Z, toma prestada la energía de sus amigos evolucionados para potenciar enormemente sus características.', }, genesisSupernova: { - name: "Supernova Original", - effect: "Mew usa el Poder Z para realizar un potente ataque contra su adversario y crear un Campo Psíquico sobre el terreno.", + name: 'Supernova Original', + effect: 'Mew usa el Poder Z para realizar un potente ataque contra su adversario y crear un Campo Psíquico sobre el terreno.', }, shellTrap: { - name: "Coraza Trampa", - effect: "El caparazón del Pokémon se convierte en una trampa. Si lo alcanza un ataque físico, la trampa estalla y los rivales sufren daño.", + name: 'Coraza Trampa', + effect: 'El caparazón del Pokémon se convierte en una trampa. Si lo alcanza un ataque físico, la trampa estalla y los rivales sufren daño.', }, fleurCannon: { - name: "Cañón Floral", - effect: "El usuario emite un potente rayo, pero su Ataque Especial se reduce mucho.", + name: 'Cañón Floral', + effect: 'El usuario emite un potente rayo, pero su Ataque Especial se reduce mucho.', }, psychicFangs: { - name: "Psicocolmillo", - effect: "Ataca a sus rivales con poderes psíquicos que además destruyen barreras como Pantalla de Luz y Reflejo.", + name: 'Psicocolmillo', + effect: 'Ataca a sus rivales con poderes psíquicos que además destruyen barreras como Pantalla de Luz y Reflejo.', }, stompingTantrum: { - name: "Pataleta", - effect: "Usa la frustración como revulsivo para atacar. La potencia de Pataleta se duplica si el usuario ha fallado el último movimiento usado.", + name: 'Pataleta', + effect: 'Usa la frustración como revulsivo para atacar. La potencia de Pataleta se duplica si el usuario ha fallado el último movimiento usado.', }, shadowBone: { - name: "Hueso Sombrío", - effect: "Ataca golpeando con un hueso poseído por un espíritu. Puede reducir la Defensa del objetivo.", + name: 'Hueso Sombrío', + effect: 'Ataca golpeando con un hueso poseído por un espíritu. Puede reducir la Defensa del objetivo.', }, accelerock: { - name: "Roca Veloz", - effect: "El usuario se lanza contra el objetivo a gran velocidad. Este movimiento tiene prioridad alta.", + name: 'Roca Veloz', + effect: 'El usuario se lanza contra el objetivo a gran velocidad. Este movimiento tiene prioridad alta.', }, liquidation: { - name: "Hidroariete", - effect: "Ataca golpeando gracias a la fuerza del agua. También puede reducir la Defensa del objetivo.", + name: 'Hidroariete', + effect: 'Ataca golpeando gracias a la fuerza del agua. También puede reducir la Defensa del objetivo.', }, prismaticLaser: { - name: "Láser Prisma", - effect: "El usuario utiliza un prisma para emitir un rayo de gran potencia, pero deberá descansar en el siguiente turno.", + name: 'Láser Prisma', + effect: 'El usuario utiliza un prisma para emitir un rayo de gran potencia, pero deberá descansar en el siguiente turno.', }, spectralThief: { - name: "Robasombra", - effect: "El usuario se esconde en la sombra del objetivo y lo ataca tras robarle las mejoras en sus características.", + name: 'Robasombra', + effect: 'El usuario se esconde en la sombra del objetivo y lo ataca tras robarle las mejoras en sus características.', }, sunsteelStrike: { - name: "Meteoimpacto", - effect: "Ataca al objetivo con la potencia de un meteoro, ignorando su habilidad.", + name: 'Meteoimpacto', + effect: 'Ataca al objetivo con la potencia de un meteoro, ignorando su habilidad.', }, moongeistBeam: { - name: "Rayo Umbrío", - effect: "Ataca con un rayo misterioso que ignora la habilidad del objetivo.", + name: 'Rayo Umbrío', + effect: 'Ataca con un rayo misterioso que ignora la habilidad del objetivo.', }, tearfulLook: { - name: "Ojos Llorosos", - effect: "Mira al objetivo con ojos llorosos para hacerle perder su espíritu combativo y reduce su Ataque y Ataque Especial.", + name: 'Ojos Llorosos', + effect: 'Mira al objetivo con ojos llorosos para hacerle perder su espíritu combativo y reduce su Ataque y Ataque Especial.', }, zingZap: { - name: "Electropunzada", - effect: "Se lanza contra el objetivo y le suelta una potente descarga eléctrica que puede hacer que se amedrente.", + name: 'Electropunzada', + effect: 'Se lanza contra el objetivo y le suelta una potente descarga eléctrica que puede hacer que se amedrente.', }, naturesMadness: { - name: "Furia Natural", - effect: "Golpea al objetivo con la furia de la naturaleza y reduce sus PS a la mitad.", + name: 'Furia Natural', + effect: 'Golpea al objetivo con la furia de la naturaleza y reduce sus PS a la mitad.', }, multiAttack: { - name: "Multiataque", - effect: "El Pokémon se rodea de una potente energía con la que golpea al rival. El tipo del movimiento depende del disco que lleva el usuario.", + name: 'Multiataque', + effect: 'El Pokémon se rodea de una potente energía con la que golpea al rival. El tipo del movimiento depende del disco que lleva el usuario.', }, tenMillionVoltThunderbolt: { - name: "Gigarrayo Fulminante", - effect: "Los Pikachu con gorra acumulan una carga eléctrica descomunal gracias al Poder Z y la lanzan contra el objetivo. Suele ser crítico.", + name: 'Gigarrayo Fulminante', + effect: 'Los Pikachu con gorra acumulan una carga eléctrica descomunal gracias al Poder Z y la lanzan contra el objetivo. Suele ser crítico.', }, mindBlown: { - name: "Cabeza Sorpresa", - effect: "El usuario hace explotar su cabeza para atacar a los Pokémon adyacentes, aunque también se hiere a sí mismo.", + name: 'Cabeza Sorpresa', + effect: 'El usuario hace explotar su cabeza para atacar a los Pokémon adyacentes, aunque también se hiere a sí mismo.', }, plasmaFists: { - name: "Puños Plasma", - effect: "El usuario ataca con puños cargados de electricidad. Convierte los movimientos de tipo Normal en movimientos de tipo Eléctrico.", + name: 'Puños Plasma', + effect: 'El usuario ataca con puños cargados de electricidad. Convierte los movimientos de tipo Normal en movimientos de tipo Eléctrico.', }, photonGeyser: { - name: "Géiser Fotónico", - effect: "El usuario ataca con una gran columna de luz. Compara sus valores de Ataque y Ataque Especial para infligir daño con el más alto de los dos.", + name: 'Géiser Fotónico', + effect: 'El usuario ataca con una gran columna de luz. Compara sus valores de Ataque y Ataque Especial para infligir daño con el más alto de los dos.', }, lightThatBurnsTheSky: { - name: "Fotodestrucción Apocalíptica", - effect: "Necrozma escoge la característica que tenga el valor más alto entre el Ataque y el Ataque Especial para infligir daño, ignorando la habilidad del objetivo.", + name: 'Fotodestrucción Apocalíptica', + effect: 'Necrozma escoge la característica que tenga el valor más alto entre el Ataque y el Ataque Especial para infligir daño, ignorando la habilidad del objetivo.', }, searingSunrazeSmash: { - name: "Embestida Solar", - effect: "Solgaleo ataca con toda su fuerza tras imbuirse del Poder Z. Este movimiento ignora la habilidad del objetivo.", + name: 'Embestida Solar', + effect: 'Solgaleo ataca con toda su fuerza tras imbuirse del Poder Z. Este movimiento ignora la habilidad del objetivo.', }, menacingMoonrazeMaelstrom: { - name: "Deflagración Lunar", - effect: "Lunala ataca con toda su fuerza tras imbuirse del Poder Z. Este movimiento ignora la habilidad del objetivo.", + name: 'Deflagración Lunar', + effect: 'Lunala ataca con toda su fuerza tras imbuirse del Poder Z. Este movimiento ignora la habilidad del objetivo.', }, letsSnuggleForever: { - name: "Somanta Amistosa", - effect: "Mimikyu ataca con toda su fuerza tras imbuirse del Poder Z y asesta una lluvia de golpes.", + name: 'Somanta Amistosa', + effect: 'Mimikyu ataca con toda su fuerza tras imbuirse del Poder Z y asesta una lluvia de golpes.', }, splinteredStormshards: { - name: "Tempestad Rocosa", - effect: "Lycanroc ataca con toda su fuerza tras imbuirse del Poder Z y neutraliza el campo que esté activo.", + name: 'Tempestad Rocosa', + effect: 'Lycanroc ataca con toda su fuerza tras imbuirse del Poder Z y neutraliza el campo que esté activo.', }, clangorousSoulblaze: { - name: "Estruendo Implacable", - effect: "Kommo-o ataca con toda su fuerza al objetivo tras imbuirse del Poder Z. Además, potencia sus propias características.", + name: 'Estruendo Implacable', + effect: 'Kommo-o ataca con toda su fuerza al objetivo tras imbuirse del Poder Z. Además, potencia sus propias características.', }, zippyZap: { - name: "Pikaturbo", - effect: "The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user's evasiveness.", + name: 'Pikaturbo', + effect: 'The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user\'s evasiveness.', }, splishySplash: { - name: "Salpikasurf", - effect: "Golpea al adversario con una ola gigante electrificada, que también puede paralizarlo.", + name: 'Salpikasurf', + effect: 'Golpea al adversario con una ola gigante electrificada, que también puede paralizarlo.', }, floatyFall: { - name: "Pikapicado", - effect: "El usuario se suspende en el aire para, a continuación, abalanzarse súbitamente sobre el rival. Puede hacer retroceder al objetivo.", + name: 'Pikapicado', + effect: 'El usuario se suspende en el aire para, a continuación, abalanzarse súbitamente sobre el rival. Puede hacer retroceder al objetivo.', }, pikaPapow: { - name: "Pikatormenta", - effect: "Lanza una descarga eléctrica infalible que resulta más potente cuanto mayor es el cariño que siente Pikachu hacia su Entrenador.", + name: 'Pikatormenta', + effect: 'Lanza una descarga eléctrica infalible que resulta más potente cuanto mayor es el cariño que siente Pikachu hacia su Entrenador.', }, bouncyBubble: { - name: "Vapodrenaje", - effect: "Ataca lanzando proyectiles de agua y recupera una cantidad de PS equivalente a la mitad del daño causado.", + name: 'Vapodrenaje', + effect: 'Ataca lanzando proyectiles de agua y recupera una cantidad de PS equivalente a la mitad del daño causado.', }, buzzyBuzz: { - name: "Joltioparálisis", - effect: "Lanza una potente descarga eléctrica sobre el rival y lo deja paralizado.", + name: 'Joltioparálisis', + effect: 'Lanza una potente descarga eléctrica sobre el rival y lo deja paralizado.', }, sizzlySlide: { - name: "Flarembestida", - effect: "Tras envolver su cuerpo en llamas, el usuario arrolla con fuerza al rival y le provoca quemaduras.", + name: 'Flarembestida', + effect: 'Tras envolver su cuerpo en llamas, el usuario arrolla con fuerza al rival y le provoca quemaduras.', }, glitzyGlow: { - name: "Espeaura", - effect: "Envuelve al rival con ondas psíquicas y alza un extraño muro que debilita los ataques especiales del adversario.", + name: 'Espeaura', + effect: 'Envuelve al rival con ondas psíquicas y alza un extraño muro que debilita los ataques especiales del adversario.', }, baddyBad: { - name: "Umbreozona", - effect: "Lanza un ataque haciendo gala de su faceta más umbría y alza un extraño muro que mitiga los ataques físicos del adversario.", + name: 'Umbreozona', + effect: 'Lanza un ataque haciendo gala de su faceta más umbría y alza un extraño muro que mitiga los ataques físicos del adversario.', }, sappySeed: { - name: "Leafitobombas", - effect: "Hace brotar un tallo gigante que bombardea al rival con unas semillas que le drenan PS en cada turno.", + name: 'Leafitobombas', + effect: 'Hace brotar un tallo gigante que bombardea al rival con unas semillas que le drenan PS en cada turno.', }, freezyFrost: { - name: "Glaceoprisma", - effect: "Ataca al rival con negros cristales de niebla congelada. Revierte los cambios en las características de todos los Pokémon presentes.", + name: 'Glaceoprisma', + effect: 'Ataca al rival con negros cristales de niebla congelada. Revierte los cambios en las características de todos los Pokémon presentes.', }, sparklySwirl: { - name: "Sylveotornado", - effect: "Ataca al rival envolviéndolo en un remolino de aroma asfixiante. Cura a los aliados de cualquier problema de estado.", + name: 'Sylveotornado', + effect: 'Ataca al rival envolviéndolo en un remolino de aroma asfixiante. Cura a los aliados de cualquier problema de estado.', }, veeveeVolley: { - name: "Eevimpacto", - effect: "Un placaje infalible que resulta más potente cuanto mayor es el cariño que siente Eevee hacia su Entrenador.", + name: 'Eevimpacto', + effect: 'Un placaje infalible que resulta más potente cuanto mayor es el cariño que siente Eevee hacia su Entrenador.', }, doubleIronBash: { - name: "Ferropuño Doble", - effect: "Usando la tuerca del pecho como eje, gira sobre sí mismo y golpea con los brazos dos veces seguidas. Puede amedrentar al rival.", + name: 'Ferropuño Doble', + effect: 'Usando la tuerca del pecho como eje, gira sobre sí mismo y golpea con los brazos dos veces seguidas. Puede amedrentar al rival.', }, maxGuard: { - name: "Maxibarrera", - effect: "Frena todos los ataques, pero puede fallar si se usa repetidamente.", + name: 'Maxibarrera', + effect: 'Frena todos los ataques, pero puede fallar si se usa repetidamente.', }, dynamaxCannon: { - name: "Cañón Dinamax", - effect: "El usuario ataca emitiendo un rayo desde su núcleo. El daño infligido se duplica si el objetivo supera el nivel 200.", + name: 'Cañón Dinamax', + effect: 'El usuario ataca emitiendo un rayo desde su núcleo. El daño infligido se duplica si el objetivo supera el nivel 200.', }, snipeShot: { - name: "Disparo Certero", - effect: "Permite atacar al objetivo seleccionado ignorando las habilidades o movimientos que permiten a un Pokémon centrar la atención sobre sí.", + name: 'Disparo Certero', + effect: 'Permite atacar al objetivo seleccionado ignorando las habilidades o movimientos que permiten a un Pokémon centrar la atención sobre sí.', }, jawLock: { - name: "Presa Maxilar", - effect: "Impide que tanto el atacante como el defensor puedan huir o ser cambiados por otros hasta que uno de ellos se debilite o abandone el terreno de combate.", + name: 'Presa Maxilar', + effect: 'Impide que tanto el atacante como el defensor puedan huir o ser cambiados por otros hasta que uno de ellos se debilite o abandone el terreno de combate.', }, stuffCheeks: { - name: "Atiborramiento", - effect: "El usuario ingiere la baya que lleva equipada para aumentar mucho su Defensa.", + name: 'Atiborramiento', + effect: 'El usuario ingiere la baya que lleva equipada para aumentar mucho su Defensa.', }, noRetreat: { - name: "Bastión Final", - effect: "El usuario aumenta todas sus características, pero ya no puede huir ni ser cambiado por otro.", + name: 'Bastión Final', + effect: 'El usuario aumenta todas sus características, pero ya no puede huir ni ser cambiado por otro.', }, tarShot: { - name: "Alquitranazo", - effect: "Cubre al objetivo de un alquitrán pegajoso que reduce su Velocidad y lo vuelve débil contra el fuego.", + name: 'Alquitranazo', + effect: 'Cubre al objetivo de un alquitrán pegajoso que reduce su Velocidad y lo vuelve débil contra el fuego.', }, magicPowder: { - name: "Polvo Mágico", - effect: "Cubre al objetivo con unos polvos mágicos que le hacen adquirir el tipo Psíquico.", + name: 'Polvo Mágico', + effect: 'Cubre al objetivo con unos polvos mágicos que le hacen adquirir el tipo Psíquico.', }, dragonDarts: { - name: "Dracoflechas", - effect: "El usuario ataca propulsando a ambos Dreepy. En caso de haber dos adversarios, cada Dreepy golpea a su propio objetivo por separado.", + name: 'Dracoflechas', + effect: 'El usuario ataca propulsando a ambos Dreepy. En caso de haber dos adversarios, cada Dreepy golpea a su propio objetivo por separado.', }, teatime: { - name: "Hora del Té", - effect: "El usuario invita a tomar el té a todos los presentes en el terreno de combate, lo que hace que ingieran las bayas que lleven equipadas.", + name: 'Hora del Té', + effect: 'El usuario invita a tomar el té a todos los presentes en el terreno de combate, lo que hace que ingieran las bayas que lleven equipadas.', }, octolock: { - name: "Octopresa", - effect: "Retiene al objetivo e impide que pueda huir o ser cambiado por otro, a la vez que reduce su Defensa y su Defensa Especial cada turno.", + name: 'Octopresa', + effect: 'Retiene al objetivo e impide que pueda huir o ser cambiado por otro, a la vez que reduce su Defensa y su Defensa Especial cada turno.', }, boltBeak: { - name: "Electropico", - effect: "El usuario ensarta al objetivo con su pico cargado de electricidad. Si ataca en primer lugar, la potencia del movimiento se duplica.", + name: 'Electropico', + effect: 'El usuario ensarta al objetivo con su pico cargado de electricidad. Si ataca en primer lugar, la potencia del movimiento se duplica.', }, fishiousRend: { - name: "Branquibocado", - effect: "El usuario agarra al objetivo con sus duras branquias. En caso de atacar antes que este último, la potencia del movimiento se duplica.", + name: 'Branquibocado', + effect: 'El usuario agarra al objetivo con sus duras branquias. En caso de atacar antes que este último, la potencia del movimiento se duplica.', }, courtChange: { - name: "Cambio de Cancha", - effect: "Extraño poder que intercambia los efectos en el terreno de combate de ambos bandos.", + name: 'Cambio de Cancha', + effect: 'Extraño poder que intercambia los efectos en el terreno de combate de ambos bandos.', }, maxFlare: { - name: "Maxignición", - effect: "Ataque de tipo Fuego ejecutado por un Pokémon Dinamax. Hace que se intensifique el efecto del sol durante cinco turnos.", + name: 'Maxignición', + effect: 'Ataque de tipo Fuego ejecutado por un Pokémon Dinamax. Hace que se intensifique el efecto del sol durante cinco turnos.', }, maxFlutterby: { - name: "Maxinsecto", - effect: "Ataque de tipo Bicho ejecutado por un Pokémon Dinamax. Reduce el Ataque Especial del objetivo.", + name: 'Maxinsecto', + effect: 'Ataque de tipo Bicho ejecutado por un Pokémon Dinamax. Reduce el Ataque Especial del objetivo.', }, maxLightning: { - name: "Maxitormenta", - effect: "Ataque de tipo Eléctrico ejecutado por un Pokémon Dinamax. Crea un campo eléctrico durante cinco turnos.", + name: 'Maxitormenta', + effect: 'Ataque de tipo Eléctrico ejecutado por un Pokémon Dinamax. Crea un campo eléctrico durante cinco turnos.', }, maxStrike: { - name: "Maxiataque", - effect: "Ataque de tipo Normal ejecutado por un Pokémon Dinamax. Reduce la Velocidad del objetivo.", + name: 'Maxiataque', + effect: 'Ataque de tipo Normal ejecutado por un Pokémon Dinamax. Reduce la Velocidad del objetivo.', }, maxKnuckle: { - name: "Maxipuño", - effect: "Ataque de tipo Lucha ejecutado por un Pokémon Dinamax. Aumenta el Ataque de tu bando.", + name: 'Maxipuño', + effect: 'Ataque de tipo Lucha ejecutado por un Pokémon Dinamax. Aumenta el Ataque de tu bando.', }, maxPhantasm: { - name: "Maxiespectro", - effect: "Ataque de tipo Fantasma ejecutado por un Pokémon Dinamax. Reduce la Defensa del objetivo.", + name: 'Maxiespectro', + effect: 'Ataque de tipo Fantasma ejecutado por un Pokémon Dinamax. Reduce la Defensa del objetivo.', }, maxHailstorm: { - name: "Maxihelada", - effect: "Ataque de tipo Hielo ejecutado por un Pokémon Dinamax. Crea una tormenta de granizo que dura cinco turnos.", + name: 'Maxihelada', + effect: 'Ataque de tipo Hielo ejecutado por un Pokémon Dinamax. Crea una tormenta de granizo que dura cinco turnos.', }, maxOoze: { - name: "Maxiácido", - effect: "Ataque de tipo Veneno ejecutado por un Pokémon Dinamax. Aumenta el Ataque Especial de tu bando.", + name: 'Maxiácido', + effect: 'Ataque de tipo Veneno ejecutado por un Pokémon Dinamax. Aumenta el Ataque Especial de tu bando.', }, maxGeyser: { - name: "Maxichorro", - effect: "Ataque de tipo Agua ejecutado por un Pokémon Dinamax. Desata un aguacero que dura cinco turnos.", + name: 'Maxichorro', + effect: 'Ataque de tipo Agua ejecutado por un Pokémon Dinamax. Desata un aguacero que dura cinco turnos.', }, maxAirstream: { - name: "Maxiciclón", - effect: "Ataque de tipo Volador ejecutado por un Pokémon Dinamax. Aumenta la Velocidad de tu bando.", + name: 'Maxiciclón', + effect: 'Ataque de tipo Volador ejecutado por un Pokémon Dinamax. Aumenta la Velocidad de tu bando.', }, maxStarfall: { - name: "Maxiestela", - effect: "Ataque de tipo Hada ejecutado por un Pokémon Dinamax. Crea un campo de niebla durante cinco turnos.", + name: 'Maxiestela', + effect: 'Ataque de tipo Hada ejecutado por un Pokémon Dinamax. Crea un campo de niebla durante cinco turnos.', }, maxWyrmwind: { - name: "Maxidraco", - effect: "Ataque de tipo Dragón ejecutado por un Pokémon Dinamax. Reduce el Ataque del objetivo.", + name: 'Maxidraco', + effect: 'Ataque de tipo Dragón ejecutado por un Pokémon Dinamax. Reduce el Ataque del objetivo.', }, maxMindstorm: { - name: "Maxionda", - effect: "Ataque de tipo Psíquico ejecutado por un Pokémon Dinamax. Crea un campo psíquico durante cinco turnos.", + name: 'Maxionda', + effect: 'Ataque de tipo Psíquico ejecutado por un Pokémon Dinamax. Crea un campo psíquico durante cinco turnos.', }, maxRockfall: { - name: "Maxilito", - effect: "Ataque de tipo Roca ejecutado por un Pokémon Dinamax. Levanta una tormenta de arena que dura cinco turnos.", + name: 'Maxilito', + effect: 'Ataque de tipo Roca ejecutado por un Pokémon Dinamax. Levanta una tormenta de arena que dura cinco turnos.', }, maxQuake: { - name: "Maxitemblor", - effect: "Ataque de tipo Tierra ejecutado por un Pokémon Dinamax. Aumenta la Defensa Especial de tu bando.", + name: 'Maxitemblor', + effect: 'Ataque de tipo Tierra ejecutado por un Pokémon Dinamax. Aumenta la Defensa Especial de tu bando.', }, maxDarkness: { - name: "Maxisombra", - effect: "Ataque de tipo Siniestro ejecutado por un Pokémon Dinamax. Reduce la Defensa Especial del objetivo.", + name: 'Maxisombra', + effect: 'Ataque de tipo Siniestro ejecutado por un Pokémon Dinamax. Reduce la Defensa Especial del objetivo.', }, maxOvergrowth: { - name: "Maxiflora", - effect: "Ataque de tipo Planta ejecutado por un Pokémon Dinamax. Crea un campo de hierba durante cinco turnos.", + name: 'Maxiflora', + effect: 'Ataque de tipo Planta ejecutado por un Pokémon Dinamax. Crea un campo de hierba durante cinco turnos.', }, maxSteelspike: { - name: "Maximetal", - effect: "Ataque de tipo Acero ejecutado por un Pokémon Dinamax. Aumenta la Defensa de tu bando.", + name: 'Maximetal', + effect: 'Ataque de tipo Acero ejecutado por un Pokémon Dinamax. Aumenta la Defensa de tu bando.', }, clangorousSoul: { - name: "Estruendo Escama", - effect: "Utiliza parte de los PS propios para subir sus características.", + name: 'Estruendo Escama', + effect: 'Utiliza parte de los PS propios para subir sus características.', }, bodyPress: { - name: "Plancha Corporal", - effect: "El usuario usa el cuerpo para lanzar su ataque e infligir un daño directamente proporcional a su Defensa.", + name: 'Plancha Corporal', + effect: 'El usuario usa el cuerpo para lanzar su ataque e infligir un daño directamente proporcional a su Defensa.', }, decorate: { - name: "Decoración", - effect: "Aumenta mucho el Ataque y el Ataque Especial del objetivo al decorarlo.", + name: 'Decoración', + effect: 'Aumenta mucho el Ataque y el Ataque Especial del objetivo al decorarlo.', }, drumBeating: { - name: "Batería Asalto", - effect: "El usuario controla un tocón mediante la percusión y al atacar reduce la Velocidad del objetivo.", + name: 'Batería Asalto', + effect: 'El usuario controla un tocón mediante la percusión y al atacar reduce la Velocidad del objetivo.', }, snapTrap: { - name: "Cepo", - effect: "Cepo que atrapa al objetivo durante cuatro o cinco turnos y le causa daño mientras se encuentra preso.", + name: 'Cepo', + effect: 'Cepo que atrapa al objetivo durante cuatro o cinco turnos y le causa daño mientras se encuentra preso.', }, pyroBall: { - name: "Balón Ígneo", - effect: "El usuario prende una pequeña piedra para crear una bola de fuego con la que ataca al objetivo. Puede causar quemaduras.", + name: 'Balón Ígneo', + effect: 'El usuario prende una pequeña piedra para crear una bola de fuego con la que ataca al objetivo. Puede causar quemaduras.', }, behemothBlade: { - name: "Tajo Supremo", - effect: "El usuario se convierte en una espada gigante para rebanar con vigor al objetivo.", + name: 'Tajo Supremo', + effect: 'El usuario se convierte en una espada gigante para rebanar con vigor al objetivo.', }, behemothBash: { - name: "Embate Supremo", - effect: "El usuario se convierte en un escudo gigante para golpear con vigor al objetivo.", + name: 'Embate Supremo', + effect: 'El usuario se convierte en un escudo gigante para golpear con vigor al objetivo.', }, auraWheel: { - name: "Rueda Aural", - effect: "La energía que acumula en las mejillas le sirve para atacar y aumentar su Velocidad. Este movimiento cambia de tipo según la forma que adopte Morpeko.", + name: 'Rueda Aural', + effect: 'La energía que acumula en las mejillas le sirve para atacar y aumentar su Velocidad. Este movimiento cambia de tipo según la forma que adopte Morpeko.', }, breakingSwipe: { - name: "Vasto Impacto", - effect: "El usuario sacude violentamente su enorme cola para golpear al objetivo y reducir su Ataque a la par.", + name: 'Vasto Impacto', + effect: 'El usuario sacude violentamente su enorme cola para golpear al objetivo y reducir su Ataque a la par.', }, branchPoke: { - name: "Punzada Rama", - effect: "Ataca pinchando al objetivo con una rama afilada.", + name: 'Punzada Rama', + effect: 'Ataca pinchando al objetivo con una rama afilada.', }, overdrive: { - name: "Amplificador", - effect: "El usuario rasguea la guitarra o el bajo para generar enormes vibraciones de intensa reverberación con las que ataca al objetivo.", + name: 'Amplificador', + effect: 'El usuario rasguea la guitarra o el bajo para generar enormes vibraciones de intensa reverberación con las que ataca al objetivo.', }, appleAcid: { - name: "Ácido Málico", - effect: "Ataca al objetivo con el fluido corrosivo que desprende una manzana ácida, lo que también reduce la Defensa Especial de este.", + name: 'Ácido Málico', + effect: 'Ataca al objetivo con el fluido corrosivo que desprende una manzana ácida, lo que también reduce la Defensa Especial de este.', }, gravApple: { - name: "Fuerza G", - effect: "El usuario ataca haciendo caer una manzana desde gran altura. Reduce la Defensa del objetivo.", + name: 'Fuerza G', + effect: 'El usuario ataca haciendo caer una manzana desde gran altura. Reduce la Defensa del objetivo.', }, spiritBreak: { - name: "Choque Anímico", - effect: "El usuario ataca al objetivo con tal ímpetu que acaba minando su moral y, en consecuencia, reduce su Ataque Especial.", + name: 'Choque Anímico', + effect: 'El usuario ataca al objetivo con tal ímpetu que acaba minando su moral y, en consecuencia, reduce su Ataque Especial.', }, strangeSteam: { - name: "Cautivapor", - effect: "Desprende un humo con el que ataca al objetivo, que puede acabar confundido.", + name: 'Cautivapor', + effect: 'Desprende un humo con el que ataca al objetivo, que puede acabar confundido.', }, lifeDew: { - name: "Gota Vital", - effect: "Vierte un agua misteriosa y balsámica que restaura tanto sus propios PS como los de aquellos aliados presentes en el terreno de combate.", + name: 'Gota Vital', + effect: 'Vierte un agua misteriosa y balsámica que restaura tanto sus propios PS como los de aquellos aliados presentes en el terreno de combate.', }, obstruct: { - name: "Obstrucción", - effect: "Frena todos los ataques, pero puede fallar si se usa repetidamente. Reduce mucho la Defensa de quien ejecute un movimiento de contacto contra el usuario.", + name: 'Obstrucción', + effect: 'Frena todos los ataques, pero puede fallar si se usa repetidamente. Reduce mucho la Defensa de quien ejecute un movimiento de contacto contra el usuario.', }, falseSurrender: { - name: "Irreverencia", - effect: "El usuario finge hacer una reverencia y aprovecha la ocasión para ensartar al objetivo con su cabello alborotado. No falla nunca.", + name: 'Irreverencia', + effect: 'El usuario finge hacer una reverencia y aprovecha la ocasión para ensartar al objetivo con su cabello alborotado. No falla nunca.', }, meteorAssault: { - name: "Asalto Estelar", - effect: "El usuario agita violentamente su grueso puerro para atacar, pero el mareo que le provocan las sacudidas le obliga a descansar en el siguiente turno.", + name: 'Asalto Estelar', + effect: 'El usuario agita violentamente su grueso puerro para atacar, pero el mareo que le provocan las sacudidas le obliga a descansar en el siguiente turno.', }, eternabeam: { - name: "Rayo Infinito", - effect: "Este es el mayor ataque de Eternatus una vez adquirida su forma original. No puede moverse en el turno siguiente.", + name: 'Rayo Infinito', + effect: 'Este es el mayor ataque de Eternatus una vez adquirida su forma original. No puede moverse en el turno siguiente.', }, steelBeam: { - name: "Metaláser", - effect: "Utiliza el acero de su cuerpo para disparar un potente rayo. El usuario se hiere a sí mismo.", + name: 'Metaláser', + effect: 'Utiliza el acero de su cuerpo para disparar un potente rayo. El usuario se hiere a sí mismo.', }, expandingForce: { - name: "Vasta Fuerza", - effect: "El usuario ataca al objetivo con sus poderes psíquicos. Cuando se usa en conjunción con un campo psíquico, aumenta su potencia e inflige daño a todos los rivales.", + name: 'Vasta Fuerza', + effect: 'El usuario ataca al objetivo con sus poderes psíquicos. Cuando se usa en conjunción con un campo psíquico, aumenta su potencia e inflige daño a todos los rivales.', }, steelRoller: { - name: "Allanador Férreo", - effect: "El usuario lanza su ataque y destruye el campo activo en el terreno de combate, y falla si no hay ninguno en ese momento.", + name: 'Allanador Férreo', + effect: 'El usuario lanza su ataque y destruye el campo activo en el terreno de combate, y falla si no hay ninguno en ese momento.', }, scaleShot: { - name: "Ráfaga Escamas", - effect: "Lanza escamas al objetivo de dos a cinco veces seguidas. Aumenta la Velocidad del usuario, pero reduce su Defensa.", + name: 'Ráfaga Escamas', + effect: 'Lanza escamas al objetivo de dos a cinco veces seguidas. Aumenta la Velocidad del usuario, pero reduce su Defensa.', }, meteorBeam: { - name: "Rayo Meteórico", - effect: "El usuario dedica el primer turno a aumentar su Ataque Especial acumulando energía cósmica y lanza su ofensiva contra el objetivo en el segundo.", + name: 'Rayo Meteórico', + effect: 'El usuario dedica el primer turno a aumentar su Ataque Especial acumulando energía cósmica y lanza su ofensiva contra el objetivo en el segundo.', }, shellSideArm: { - name: "Moluscañón", - effect: "El usuario lanza un ataque físico o especial en función de cuál inflija más daño. Puede envenenar al objetivo.", + name: 'Moluscañón', + effect: 'El usuario lanza un ataque físico o especial en función de cuál inflija más daño. Puede envenenar al objetivo.', }, mistyExplosion: { - name: "Bruma Explosiva", - effect: "El usuario ataca a todos a su alrededor, pero se debilita de inmediato. La potencia del movimiento aumenta si el terreno está cubierto por un campo de niebla.", + name: 'Bruma Explosiva', + effect: 'El usuario ataca a todos a su alrededor, pero se debilita de inmediato. La potencia del movimiento aumenta si el terreno está cubierto por un campo de niebla.', }, grassyGlide: { - name: "Fitoimpulso", - effect: "Ataca al objetivo deslizándose sobre el terreno de combate. Este movimiento tiene prioridad alta cuando el terreno está cubierto por un campo de hierba.", + name: 'Fitoimpulso', + effect: 'Ataca al objetivo deslizándose sobre el terreno de combate. Este movimiento tiene prioridad alta cuando el terreno está cubierto por un campo de hierba.', }, risingVoltage: { - name: "Alto Voltaje", - effect: "Ataca con una descarga eléctrica que surge del terreno de combate. La potencia del movimiento se duplica si el rival se ve afectado por un campo eléctrico.", + name: 'Alto Voltaje', + effect: 'Ataca con una descarga eléctrica que surge del terreno de combate. La potencia del movimiento se duplica si el rival se ve afectado por un campo eléctrico.', }, terrainPulse: { - name: "Pulso de Campo", - effect: "El usuario ataca aprovechando la energía del campo activo, que determina tanto el tipo como la potencia del movimiento.", + name: 'Pulso de Campo', + effect: 'El usuario ataca aprovechando la energía del campo activo, que determina tanto el tipo como la potencia del movimiento.', }, skitterSmack: { - name: "Golpe Rastrero", - effect: "Ataca al objetivo por la espalda de forma subrepticia y, además, reduce su Ataque Especial.", + name: 'Golpe Rastrero', + effect: 'Ataca al objetivo por la espalda de forma subrepticia y, además, reduce su Ataque Especial.', }, burningJealousy: { - name: "Envidia Ardiente", - effect: "Ataca al objetivo con la energía generada por la envidia y causa quemaduras a los Pokémon cuyas características hayan aumentado en ese turno.", + name: 'Envidia Ardiente', + effect: 'Ataca al objetivo con la energía generada por la envidia y causa quemaduras a los Pokémon cuyas características hayan aumentado en ese turno.', }, lashOut: { - name: "Desahogo", - effect: "Ataca al rival presa de la rabia. Si el usuario ha sufrido una reducción de características en ese turno, la potencia del movimiento se duplica.", + name: 'Desahogo', + effect: 'Ataca al rival presa de la rabia. Si el usuario ha sufrido una reducción de características en ese turno, la potencia del movimiento se duplica.', }, poltergeist: { - name: "Poltergeist", - effect: "El usuario ataca utilizando el objeto que lleva el rival. Si no tiene ninguno equipado, el movimiento falla.", + name: 'Poltergeist', + effect: 'El usuario ataca utilizando el objeto que lleva el rival. Si no tiene ninguno equipado, el movimiento falla.', }, corrosiveGas: { - name: "Gas Corrosivo", - effect: "El usuario libera un gas cáustico que envuelve a todos los que se encuentren alrededor y derrite por completo los objetos que lleven equipados.", + name: 'Gas Corrosivo', + effect: 'El usuario libera un gas cáustico que envuelve a todos los que se encuentren alrededor y derrite por completo los objetos que lleven equipados.', }, coaching: { - name: "Motivación", - effect: "El usuario imparte indicaciones precisas a sus aliados, que ven aumentados su Ataque y su Defensa.", + name: 'Motivación', + effect: 'El usuario imparte indicaciones precisas a sus aliados, que ven aumentados su Ataque y su Defensa.', }, flipTurn: { - name: "Viraje", - effect: "Tras atacar, el usuario da paso a toda prisa a otro Pokémon del equipo.", + name: 'Viraje', + effect: 'Tras atacar, el usuario da paso a toda prisa a otro Pokémon del equipo.', }, tripleAxel: { - name: "Triple Axel", - effect: "Propina hasta tres patadas seguidas, la potencia de las cuales aumenta cada vez que acierta.", + name: 'Triple Axel', + effect: 'Propina hasta tres patadas seguidas, la potencia de las cuales aumenta cada vez que acierta.', }, dualWingbeat: { - name: "Ala Bis", - effect: "Ataca al adversario golpeándolo dos veces con las alas.", + name: 'Ala Bis', + effect: 'Ataca al adversario golpeándolo dos veces con las alas.', }, scorchingSands: { - name: "Arenas Ardientes", - effect: "Ataca al objetivo arrojándole arena a temperaturas muy elevadas. Puede causar quemaduras.", + name: 'Arenas Ardientes', + effect: 'Ataca al objetivo arrojándole arena a temperaturas muy elevadas. Puede causar quemaduras.', }, jungleHealing: { - name: "Cura Selvática", - effect: "Al entrar en plena armonía con la selva, el usuario cura problemas de estado y restaura PS no solo de sí mismo, sino también de los aliados presentes en el terreno.", + name: 'Cura Selvática', + effect: 'Al entrar en plena armonía con la selva, el usuario cura problemas de estado y restaura PS no solo de sí mismo, sino también de los aliados presentes en el terreno.', }, wickedBlow: { - name: "Golpe Oscuro", - effect: "Golpe devastador que requiere un absoluto dominio de las artes siniestras. Siempre asesta un golpe crítico.", + name: 'Golpe Oscuro', + effect: 'Golpe devastador que requiere un absoluto dominio de las artes siniestras. Siempre asesta un golpe crítico.', }, surgingStrikes: { - name: "Azote Torrencial", - effect: "El usuario, dominador absoluto del líquido elemento, golpea hasta tres veces con movimientos fluidos. Siempre asesta un golpe crítico.", + name: 'Azote Torrencial', + effect: 'El usuario, dominador absoluto del líquido elemento, golpea hasta tres veces con movimientos fluidos. Siempre asesta un golpe crítico.', }, thunderCage: { - name: "Electrojaula", - effect: "El objetivo queda atrapado en una jaula electrificada que permanece en el terreno de cuatro a cinco turnos.", + name: 'Electrojaula', + effect: 'El objetivo queda atrapado en una jaula electrificada que permanece en el terreno de cuatro a cinco turnos.', }, dragonEnergy: { - name: "Dracoenergía", - effect: "El usuario convierte su fuerza vital en una energía con la que ataca al objetivo. Cuantos menos PS tenga el usuario, menor será la potencia del movimiento.", + name: 'Dracoenergía', + effect: 'El usuario convierte su fuerza vital en una energía con la que ataca al objetivo. Cuantos menos PS tenga el usuario, menor será la potencia del movimiento.', }, freezingGlare: { - name: "Mirada Heladora", - effect: "A través de sus ojos emite poderes psíquicos con los que ataca al objetivo, al que puede llegar a congelar.", + name: 'Mirada Heladora', + effect: 'A través de sus ojos emite poderes psíquicos con los que ataca al objetivo, al que puede llegar a congelar.', }, fieryWrath: { - name: "Furia Candente", - effect: "El usuario convierte su ira en un aura flamígera para lanzar su ataque. Puede amedrentar al objetivo.", + name: 'Furia Candente', + effect: 'El usuario convierte su ira en un aura flamígera para lanzar su ataque. Puede amedrentar al objetivo.', }, thunderousKick: { - name: "Patada Relámpago", - effect: "El usuario desconcierta al objetivo con movimientos centelleantes y le propina una patada que, además, reduce su Defensa.", + name: 'Patada Relámpago', + effect: 'El usuario desconcierta al objetivo con movimientos centelleantes y le propina una patada que, además, reduce su Defensa.', }, glacialLance: { - name: "Lanza Glacial", - effect: "El usuario ataca al objetivo lanzándole un carámbano de hielo envuelto en una ventisca.", + name: 'Lanza Glacial', + effect: 'El usuario ataca al objetivo lanzándole un carámbano de hielo envuelto en una ventisca.', }, astralBarrage: { - name: "Orbes Espectro", - effect: "El usuario ataca al objetivo lanzándole una ingente cantidad de pequeños fantasmas.", + name: 'Orbes Espectro', + effect: 'El usuario ataca al objetivo lanzándole una ingente cantidad de pequeños fantasmas.', }, eerieSpell: { - name: "Conjuro Funesto", - effect: "El usuario ataca con un poder psíquico de inmensa potencia y elimina 3 PP del último movimiento que haya usado el objetivo.", + name: 'Conjuro Funesto', + effect: 'El usuario ataca con un poder psíquico de inmensa potencia y elimina 3 PP del último movimiento que haya usado el objetivo.', }, direClaw: { - name: "Garra Nociva", - effect: "Ataca al objetivo con unas garras letales que pueden envenenarlo, paralizarlo o dormirlo.", + name: 'Garra Nociva', + effect: 'Ataca al objetivo con unas garras letales que pueden envenenarlo, paralizarlo o dormirlo.', }, psyshieldBash: { - name: "Asalto Barrera", - effect: "El usuario ataca envuelto en una energía psíquica que además aumenta su Defensa.", + name: 'Asalto Barrera', + effect: 'El usuario ataca envuelto en una energía psíquica que además aumenta su Defensa.', }, powerShift: { - name: "Cambiapoder", - effect: "Intercambia su Ataque por su Defensa.", + name: 'Cambiapoder', + effect: 'Intercambia su Ataque por su Defensa.', }, stoneAxe: { - name: "Hachazo Pétreo", - effect: "Ataca con un hacha de piedra y, al hacerlo, se desprenden fragmentos que rodean al objetivo.", + name: 'Hachazo Pétreo', + effect: 'Ataca con un hacha de piedra y, al hacerlo, se desprenden fragmentos que rodean al objetivo.', }, springtideStorm: { - name: "Ciclón Primavera", - effect: "Desata una tormenta de amor y odio con la que envuelve y ataca al objetivo. También puede reducir su Ataque.", + name: 'Ciclón Primavera', + effect: 'Desata una tormenta de amor y odio con la que envuelve y ataca al objetivo. También puede reducir su Ataque.', }, mysticalPower: { - name: "Poder Místico", - effect: "Ataca desatando un misterioso poder, que también aumenta su Ataque Especial.", + name: 'Poder Místico', + effect: 'Ataca desatando un misterioso poder, que también aumenta su Ataque Especial.', }, ragingFury: { - name: "Erupción de Ira", - effect: "El usuario ataca con unas violentas llamas de dos a tres turnos seguidos y, después, se queda confuso.", + name: 'Erupción de Ira', + effect: 'El usuario ataca con unas violentas llamas de dos a tres turnos seguidos y, después, se queda confuso.', }, waveCrash: { - name: "Envite Acuático", - effect: "El usuario se envuelve en agua y embiste contra el objetivo, pero también se hiere seriamente a sí mismo.", + name: 'Envite Acuático', + effect: 'El usuario se envuelve en agua y embiste contra el objetivo, pero también se hiere seriamente a sí mismo.', }, chloroblast: { - name: "Clorofiláser", - effect: "El usuario concentra clorofila y la dispara en forma de rayo, pero también se hiere a sí mismo.", + name: 'Clorofiláser', + effect: 'El usuario concentra clorofila y la dispara en forma de rayo, pero también se hiere a sí mismo.', }, mountainGale: { - name: "Viento Carámbano", - effect: "Ataca con unos carámbanos grandes como icebergs que pueden amedrentar al objetivo.", + name: 'Viento Carámbano', + effect: 'Ataca con unos carámbanos grandes como icebergs que pueden amedrentar al objetivo.', }, victoryDance: { - name: "Danza Triunfal", - effect: "Ejecuta una danza frenética que invoca la victoria y aumenta el Ataque, la Defensa y la Velocidad.", + name: 'Danza Triunfal', + effect: 'Ejecuta una danza frenética que invoca la victoria y aumenta el Ataque, la Defensa y la Velocidad.', }, headlongRush: { - name: "Arremetida", - effect: "El usuario arremete con todas sus fuerzas, pero se reducen su Defensa y su Defensa Especial.", + name: 'Arremetida', + effect: 'El usuario arremete con todas sus fuerzas, pero se reducen su Defensa y su Defensa Especial.', }, barbBarrage: { - name: "Mil Púas Tóxicas", - effect: "Dispara un sinfín de púas tóxicas que pueden envenenar al objetivo. La potencia del movimiento se duplica si este ya está envenenado.", + name: 'Mil Púas Tóxicas', + effect: 'Dispara un sinfín de púas tóxicas que pueden envenenar al objetivo. La potencia del movimiento se duplica si este ya está envenenado.', }, esperWing: { - name: "Ala Aural", - effect: "Corta con unas alas imbuidas de aura. Suele asestar un golpe crítico y aumenta la Velocidad del usuario.", + name: 'Ala Aural', + effect: 'Corta con unas alas imbuidas de aura. Suele asestar un golpe crítico y aumenta la Velocidad del usuario.', }, bitterMalice: { - name: "Rencor Reprimido", - effect: "Ataca al objetivo sometiéndolo a su frío rencor y reduce su Ataque.", + name: 'Rencor Reprimido', + effect: 'Ataca al objetivo sometiéndolo a su frío rencor y reduce su Ataque.', }, shelter: { - name: "Retracción", - effect: "La piel del usuario se vuelve dura como un escudo de acero, lo que aumenta mucho su Defensa.", + name: 'Retracción', + effect: 'La piel del usuario se vuelve dura como un escudo de acero, lo que aumenta mucho su Defensa.', }, tripleArrows: { - name: "Triple Flecha", - effect: "Propina un talonazo y lanza tres flechas. Suele asestar un golpe crítico y puede reducir la Defensa del objetivo o amedrentarlo.", + name: 'Triple Flecha', + effect: 'Propina un talonazo y lanza tres flechas. Suele asestar un golpe crítico y puede reducir la Defensa del objetivo o amedrentarlo.', }, infernalParade: { - name: "Marcha Espectral", - effect: "Lanza innumerables bolas de fuego al objetivo que pueden causar quemaduras. La potencia del movimiento se duplica si este ya sufre un problema de estado.", + name: 'Marcha Espectral', + effect: 'Lanza innumerables bolas de fuego al objetivo que pueden causar quemaduras. La potencia del movimiento se duplica si este ya sufre un problema de estado.', }, ceaselessEdge: { - name: "Tajo Metralla", - effect: "Ataca con una espada de conchas y, al hacerlo, se esparcen fragmentos a modo de metralla a los pies del objetivo.", + name: 'Tajo Metralla', + effect: 'Ataca con una espada de conchas y, al hacerlo, se esparcen fragmentos a modo de metralla a los pies del objetivo.', }, bleakwindStorm: { - name: "Vendaval Gélido", - effect: "Ataca con un viento muy frío que estremece el cuerpo y la mente y que, además, puede reducir la Velocidad del objetivo.", + name: 'Vendaval Gélido', + effect: 'Ataca con un viento muy frío que estremece el cuerpo y la mente y que, además, puede reducir la Velocidad del objetivo.', }, wildboltStorm: { - name: "Electormenta", - effect: "Invoca una tormenta eléctrica que ataca al objetivo con fuertes vientos y relámpagos y puede paralizarlo.", + name: 'Electormenta', + effect: 'Invoca una tormenta eléctrica que ataca al objetivo con fuertes vientos y relámpagos y puede paralizarlo.', }, sandsearStorm: { - name: "Simún de Arena", - effect: "Ataca al objetivo envolviéndolo en unas arenas tórridas y un fuerte vendaval que pueden causar quemaduras.", + name: 'Simún de Arena', + effect: 'Ataca al objetivo envolviéndolo en unas arenas tórridas y un fuerte vendaval que pueden causar quemaduras.', }, lunarBlessing: { - name: "Plegaria Lunar", - effect: "Dedica una oración a la luna creciente que restaura los PS y cura los problemas de estado del bando del usuario.", + name: 'Plegaria Lunar', + effect: 'Dedica una oración a la luna creciente que restaura los PS y cura los problemas de estado del bando del usuario.', }, takeHeart: { - name: "Bálsamo Osado", - effect: "El usuario se envalentona y se cura de los problemas de estado. Además, aumenta su Ataque Especial y su Defensa Especial.", + name: 'Bálsamo Osado', + effect: 'El usuario se envalentona y se cura de los problemas de estado. Además, aumenta su Ataque Especial y su Defensa Especial.', }, gMaxWildfire: { - name: "Gigallamarada", - effect: "Ataque de tipo Fuego ejecutado por un Charizard Gigamax. Inflige daño durante cuatro turnos.", + name: 'Gigallamarada', + effect: 'Ataque de tipo Fuego ejecutado por un Charizard Gigamax. Inflige daño durante cuatro turnos.', }, gMaxBefuddle: { - name: "Gigaestupor", - effect: "Ataque de tipo Bicho ejecutado por un Butterfree Gigamax. Envenena, paraliza o duerme al objetivo.", + name: 'Gigaestupor', + effect: 'Ataque de tipo Bicho ejecutado por un Butterfree Gigamax. Envenena, paraliza o duerme al objetivo.', }, gMaxVoltCrash: { - name: "Gigatronada", - effect: "Ataque de tipo Eléctrico ejecutado por un Pikachu Gigamax. Paraliza al objetivo.", + name: 'Gigatronada', + effect: 'Ataque de tipo Eléctrico ejecutado por un Pikachu Gigamax. Paraliza al objetivo.', }, gMaxGoldRush: { - name: "Gigamonedas", - effect: "Ataque de tipo Normal ejecutado por un Meowth Gigamax. Confunde al objetivo y aumenta la recompensa recibida tras el combate.", + name: 'Gigamonedas', + effect: 'Ataque de tipo Normal ejecutado por un Meowth Gigamax. Confunde al objetivo y aumenta la recompensa recibida tras el combate.', }, gMaxChiStrike: { - name: "Gigapuñición", - effect: "Ataque de tipo Lucha ejecutado por un Machamp Gigamax. Aumenta las posibilidades de que el usuario y sus aliados asesten un golpe crítico.", + name: 'Gigapuñición', + effect: 'Ataque de tipo Lucha ejecutado por un Machamp Gigamax. Aumenta las posibilidades de que el usuario y sus aliados asesten un golpe crítico.', }, gMaxTerror: { - name: "Gigaaparición", - effect: "Ataque de tipo Fantasma ejecutado por un Gengar Gigamax. Impide que el objetivo sea cambiado por otro.", + name: 'Gigaaparición', + effect: 'Ataque de tipo Fantasma ejecutado por un Gengar Gigamax. Impide que el objetivo sea cambiado por otro.', }, gMaxResonance: { - name: "Gigamelodía", - effect: "Ataque de tipo Hielo ejecutado por un Lapras Gigamax. Reduce el daño recibido durante cinco turnos.", + name: 'Gigamelodía', + effect: 'Ataque de tipo Hielo ejecutado por un Lapras Gigamax. Reduce el daño recibido durante cinco turnos.', }, gMaxCuddle: { - name: "Gigaternura", - effect: "Ataque de tipo Normal ejecutado por un Eevee Gigamax. Hace que el objetivo se enamore.", + name: 'Gigaternura', + effect: 'Ataque de tipo Normal ejecutado por un Eevee Gigamax. Hace que el objetivo se enamore.', }, gMaxReplenish: { - name: "Gigarreciclaje", - effect: "Ataque de tipo Normal ejecutado por un Snorlax Gigamax. Restaura las bayas que se hayan consumido.", + name: 'Gigarreciclaje', + effect: 'Ataque de tipo Normal ejecutado por un Snorlax Gigamax. Restaura las bayas que se hayan consumido.', }, gMaxMalodor: { - name: "Gigapestilencia", - effect: "Ataque de tipo Veneno ejecutado por un Garbodor Gigamax. Envenena al objetivo.", + name: 'Gigapestilencia', + effect: 'Ataque de tipo Veneno ejecutado por un Garbodor Gigamax. Envenena al objetivo.', }, gMaxStonesurge: { - name: "Gigatrampa Rocas", - effect: "Ataque de tipo Agua ejecutado por un Drednaw Gigamax. Esparce rocas afiladas por el terreno de combate.", + name: 'Gigatrampa Rocas', + effect: 'Ataque de tipo Agua ejecutado por un Drednaw Gigamax. Esparce rocas afiladas por el terreno de combate.', }, gMaxWindRage: { - name: "Gigahuracán", - effect: "Ataque de tipo Volador ejecutado por un Corviknight Gigamax. Es capaz de destruir barreras como las creadas por Pantalla de Luz y Reflejo.", + name: 'Gigahuracán', + effect: 'Ataque de tipo Volador ejecutado por un Corviknight Gigamax. Es capaz de destruir barreras como las creadas por Pantalla de Luz y Reflejo.', }, gMaxStunShock: { - name: "Gigadescarga", - effect: "Ataque de tipo Eléctrico ejecutado por un Toxtricity Gigamax. Envenena o paraliza al objetivo.", + name: 'Gigadescarga', + effect: 'Ataque de tipo Eléctrico ejecutado por un Toxtricity Gigamax. Envenena o paraliza al objetivo.', }, gMaxFinale: { - name: "Gigacolofón", - effect: "Ataque de tipo Hada ejecutado por un Alcremie Gigamax. Restaura los PS de tu bando.", + name: 'Gigacolofón', + effect: 'Ataque de tipo Hada ejecutado por un Alcremie Gigamax. Restaura los PS de tu bando.', }, gMaxDepletion: { - name: "Gigadesgaste", - effect: "Ataque de tipo Dragón ejecutado por un Duraludon Gigamax. Reduce PP del último movimiento usado por el objetivo.", + name: 'Gigadesgaste', + effect: 'Ataque de tipo Dragón ejecutado por un Duraludon Gigamax. Reduce PP del último movimiento usado por el objetivo.', }, gMaxGravitas: { - name: "Gigabóveda", - effect: "Ataque de tipo Psíquico ejecutado por un Orbeetle Gigamax. Intensifica la fuerza de gravedad durante cinco turnos.", + name: 'Gigabóveda', + effect: 'Ataque de tipo Psíquico ejecutado por un Orbeetle Gigamax. Intensifica la fuerza de gravedad durante cinco turnos.', }, gMaxVolcalith: { - name: "Gigarroca Ígnea", - effect: "Ataque de tipo Roca ejecutado por un Coalossal Gigamax. Inflige daño durante cuatro turnos.", + name: 'Gigarroca Ígnea', + effect: 'Ataque de tipo Roca ejecutado por un Coalossal Gigamax. Inflige daño durante cuatro turnos.', }, gMaxSandblast: { - name: "Gigapolvareda", - effect: "Ataque de tipo Tierra ejecutado por un Sandaconda Gigamax. Enreda al objetivo en un remolino de arena de cuatro a cinco turnos.", + name: 'Gigapolvareda', + effect: 'Ataque de tipo Tierra ejecutado por un Sandaconda Gigamax. Enreda al objetivo en un remolino de arena de cuatro a cinco turnos.', }, gMaxSnooze: { - name: "Gigasopor", - effect: "Ataque de tipo Siniestro ejecutado por un Grimmsnarl Gigamax. Induce al sueño al objetivo en el siguiente turno.", + name: 'Gigasopor', + effect: 'Ataque de tipo Siniestro ejecutado por un Grimmsnarl Gigamax. Induce al sueño al objetivo en el siguiente turno.', }, gMaxTartness: { - name: "Gigacorrosión", - effect: "Ataque de tipo Planta ejecutado por un Flapple Gigamax. Reduce la Evasión del objetivo.", + name: 'Gigacorrosión', + effect: 'Ataque de tipo Planta ejecutado por un Flapple Gigamax. Reduce la Evasión del objetivo.', }, gMaxSweetness: { - name: "Giganéctar", - effect: "Ataque de tipo Planta ejecutado por un Appletun Gigamax. Cura los problemas de estado de tu bando.", + name: 'Giganéctar', + effect: 'Ataque de tipo Planta ejecutado por un Appletun Gigamax. Cura los problemas de estado de tu bando.', }, gMaxSmite: { - name: "Gigacastigo", - effect: "Ataque de tipo Hada ejecutado por un Hatterene Gigamax. Confunde al objetivo.", + name: 'Gigacastigo', + effect: 'Ataque de tipo Hada ejecutado por un Hatterene Gigamax. Confunde al objetivo.', }, gMaxSteelsurge: { - name: "Gigatrampa Acero", - effect: "Ataque de tipo Acero ejecutado por un Copperajah Gigamax. Esparce púas de acero por el terreno de combate.", + name: 'Gigatrampa Acero', + effect: 'Ataque de tipo Acero ejecutado por un Copperajah Gigamax. Esparce púas de acero por el terreno de combate.', }, gMaxMeltdown: { - name: "Gigafundido", - effect: "Ataque de tipo Acero ejecutado por un Melmetal Gigamax. Impide al objetivo usar el mismo movimiento dos veces seguidas.", + name: 'Gigafundido', + effect: 'Ataque de tipo Acero ejecutado por un Melmetal Gigamax. Impide al objetivo usar el mismo movimiento dos veces seguidas.', }, gMaxFoamBurst: { - name: "Gigaespuma", - effect: "Ataque de tipo Agua ejecutado por un Kingler Gigamax. Reduce mucho la Velocidad del objetivo.", + name: 'Gigaespuma', + effect: 'Ataque de tipo Agua ejecutado por un Kingler Gigamax. Reduce mucho la Velocidad del objetivo.', }, gMaxCentiferno: { - name: "Gigacienfuegos", - effect: "Ataque de tipo Fuego ejecutado por un Centiskorch Gigamax. Un aro de fuego atrapa al objetivo de cuatro a cinco turnos.", + name: 'Gigacienfuegos', + effect: 'Ataque de tipo Fuego ejecutado por un Centiskorch Gigamax. Un aro de fuego atrapa al objetivo de cuatro a cinco turnos.', }, gMaxVineLash: { - name: "Gigalianas", - effect: "Ataque de tipo Planta ejecutado por un Venusaur Gigamax. Inflige daño durante cuatro turnos.", + name: 'Gigalianas', + effect: 'Ataque de tipo Planta ejecutado por un Venusaur Gigamax. Inflige daño durante cuatro turnos.', }, gMaxCannonade: { - name: "Gigacañonazo", - effect: "Ataque de tipo Agua ejecutado por un Blastoise Gigamax. Inflige daño durante cuatro turnos.", + name: 'Gigacañonazo', + effect: 'Ataque de tipo Agua ejecutado por un Blastoise Gigamax. Inflige daño durante cuatro turnos.', }, gMaxDrumSolo: { - name: "Gigarredoble", - effect: "Ataque de tipo Planta ejecutado por un Rillaboom Gigamax. Ignora la habilidad del objetivo.", + name: 'Gigarredoble', + effect: 'Ataque de tipo Planta ejecutado por un Rillaboom Gigamax. Ignora la habilidad del objetivo.', }, gMaxFireball: { - name: "Gigaesfera Ígnea", - effect: "Ataque de tipo Fuego ejecutado por un Cinderace Gigamax. Ignora la habilidad del objetivo.", + name: 'Gigaesfera Ígnea', + effect: 'Ataque de tipo Fuego ejecutado por un Cinderace Gigamax. Ignora la habilidad del objetivo.', }, gMaxHydrosnipe: { - name: "Gigadisparo", - effect: "Ataque de tipo Agua ejecutado por un Inteleon Gigamax. Ignora la habilidad del objetivo.", + name: 'Gigadisparo', + effect: 'Ataque de tipo Agua ejecutado por un Inteleon Gigamax. Ignora la habilidad del objetivo.', }, gMaxOneBlow: { - name: "Gigagolpe Brusco", - effect: "Ataque de tipo Siniestro ejecutado por un Urshifu Gigamax. Propina un único golpe que acierta al objetivo aunque haya usado Maxibarrera.", + name: 'Gigagolpe Brusco', + effect: 'Ataque de tipo Siniestro ejecutado por un Urshifu Gigamax. Propina un único golpe que acierta al objetivo aunque haya usado Maxibarrera.', }, gMaxRapidFlow: { - name: "Gigagolpe Fluido", - effect: "Ataque de tipo Agua ejecutado por un Urshifu Gigamax. Propina golpes sucesivos que aciertan al objetivo aunque haya usado Maxibarrera.", + name: 'Gigagolpe Fluido', + effect: 'Ataque de tipo Agua ejecutado por un Urshifu Gigamax. Propina golpes sucesivos que aciertan al objetivo aunque haya usado Maxibarrera.', }, teraBlast: { - name: "Teraexplosión", - effect: "Si el usuario se ha teracristalizado, ataca con la energía de su teratipo. Compara sus valores de Ataque y Ataque Especial para infligir daño con el más alto de los dos.", + name: 'Teraexplosión', + effect: 'Si el usuario se ha teracristalizado, ataca con la energía de su teratipo. Compara sus valores de Ataque y Ataque Especial para infligir daño con el más alto de los dos.', }, silkTrap: { - name: "Telatrampa", - effect: "Tiende una trampa sedosa que protege al usuario de los ataques al tiempo que reduce la Velocidad de cualquier Pokémon con el que entre en contacto.", + name: 'Telatrampa', + effect: 'Tiende una trampa sedosa que protege al usuario de los ataques al tiempo que reduce la Velocidad de cualquier Pokémon con el que entre en contacto.', }, axeKick: { - name: "Patada Hacha", - effect: "Lanza una patada al aire para, acto seguido, golpear con el talón. Si falla, se hiere a sí mismo. Puede confundir al objetivo.", + name: 'Patada Hacha', + effect: 'Lanza una patada al aire para, acto seguido, golpear con el talón. Si falla, se hiere a sí mismo. Puede confundir al objetivo.', }, lastRespects: { - name: "Homenaje Póstumo", - effect: "Ataca para vengar a sus compañeros caídos y aplacar su desazón. Cuantos más miembros del equipo se hayan debilitado, mayor será la potencia del movimiento.", + name: 'Homenaje Póstumo', + effect: 'Ataca para vengar a sus compañeros caídos y aplacar su desazón. Cuantos más miembros del equipo se hayan debilitado, mayor será la potencia del movimiento.', }, luminaCrash: { - name: "Fotocolisión", - effect: "Ataca proyectando una extraña luz que afecta a la mente. Reduce mucho la Defensa Especial del objetivo.", + name: 'Fotocolisión', + effect: 'Ataca proyectando una extraña luz que afecta a la mente. Reduce mucho la Defensa Especial del objetivo.', }, orderUp: { - name: "Oído Cocina", - effect: "Ataca con porte gallardo. Si lleva un Tatsugiri en la boca, aumenta una de sus características en función de la forma de este último.", + name: 'Oído Cocina', + effect: 'Ataca con porte gallardo. Si lleva un Tatsugiri en la boca, aumenta una de sus características en función de la forma de este último.', }, jetPunch: { - name: "Puño Jet", - effect: "Se envuelve el puño con un torrente y propina un golpe a tal velocidad que resulta casi imperceptible. Este movimiento tiene prioridad alta.", + name: 'Puño Jet', + effect: 'Se envuelve el puño con un torrente y propina un golpe a tal velocidad que resulta casi imperceptible. Este movimiento tiene prioridad alta.', }, spicyExtract: { - name: "Extracto Picante", - effect: "Libera un extracto extraordinariamente picante que aumenta mucho el Ataque del objetivo, pero también reduce mucho su Defensa.", + name: 'Extracto Picante', + effect: 'Libera un extracto extraordinariamente picante que aumenta mucho el Ataque del objetivo, pero también reduce mucho su Defensa.', }, spinOut: { - name: "Quemarrueda", - effect: "Inflige daño al objetivo ejerciendo presión sobre sus extremidades y girando violentamente sobre sí. Reduce mucho la Velocidad del usuario.", + name: 'Quemarrueda', + effect: 'Inflige daño al objetivo ejerciendo presión sobre sus extremidades y girando violentamente sobre sí. Reduce mucho la Velocidad del usuario.', }, populationBomb: { - name: "Proliferación", - effect: "Los congéneres del usuario se agrupan y ejecutan un ataque conjunto que golpea al objetivo de una a diez veces seguidas.", + name: 'Proliferación', + effect: 'Los congéneres del usuario se agrupan y ejecutan un ataque conjunto que golpea al objetivo de una a diez veces seguidas.', }, iceSpinner: { - name: "Pirueta Helada", - effect: "Se recubre las extremidades con una fina capa de hielo y se abalanza sobre el objetivo girando sobre sí. Destruye el campo activo en el terreno de combate.", + name: 'Pirueta Helada', + effect: 'Se recubre las extremidades con una fina capa de hielo y se abalanza sobre el objetivo girando sobre sí. Destruye el campo activo en el terreno de combate.', }, glaiveRush: { - name: "Asalto Espadón", - effect: "Embiste de forma temeraria con todo el cuerpo. Los ataques que reciba antes de su siguiente turno no fallarán y causarán el doble de daño.", + name: 'Asalto Espadón', + effect: 'Embiste de forma temeraria con todo el cuerpo. Los ataques que reciba antes de su siguiente turno no fallarán y causarán el doble de daño.', }, revivalBlessing: { - name: "Plegaria Vital", - effect: "Pronuncia una benévola oración que revive a un Pokémon del equipo que se haya debilitado y restaura la mitad de sus PS máximos.", + name: 'Plegaria Vital', + effect: 'Pronuncia una benévola oración que revive a un Pokémon del equipo que se haya debilitado y restaura la mitad de sus PS máximos.', }, saltCure: { - name: "Salazón", - effect: "Deja en salazón al objetivo, que pierde PS cada turno. Afecta especialmente a Pokémon de tipo Acero y tipo Agua.", + name: 'Salazón', + effect: 'Deja en salazón al objetivo, que pierde PS cada turno. Afecta especialmente a Pokémon de tipo Acero y tipo Agua.', }, tripleDive: { - name: "Triple Inmersión", - effect: "Ejecuta una inmersión triple en perfecta sincronía que golpea al objetivo con salpicaduras de agua tres veces seguidas.", + name: 'Triple Inmersión', + effect: 'Ejecuta una inmersión triple en perfecta sincronía que golpea al objetivo con salpicaduras de agua tres veces seguidas.', }, mortalSpin: { - name: "Giro Mortífero", - effect: "Ataque giratorio que envenena al objetivo y anula los efectos de movimientos como Atadura, Constricción y Drenadoras.", + name: 'Giro Mortífero', + effect: 'Ataque giratorio que envenena al objetivo y anula los efectos de movimientos como Atadura, Constricción y Drenadoras.', }, doodle: { - name: "Decalcomanía", - effect: "Calca la esencia misma del objetivo para atribuir su habilidad a sí mismo y a sus aliados.", + name: 'Decalcomanía', + effect: 'Calca la esencia misma del objetivo para atribuir su habilidad a sí mismo y a sus aliados.', }, filletAway: { - name: "Deslome", - effect: "Aumenta mucho el Ataque, el Ataque Especial y la Velocidad del usuario a costa de parte de sus PS.", + name: 'Deslome', + effect: 'Aumenta mucho el Ataque, el Ataque Especial y la Velocidad del usuario a costa de parte de sus PS.', }, kowtowCleave: { - name: "Genufendiente", - effect: "Se postra en ademán de reverencia para hacer que el objetivo baje la guardia y aprovecha el descuido para atacar. No falla nunca.", + name: 'Genufendiente', + effect: 'Se postra en ademán de reverencia para hacer que el objetivo baje la guardia y aprovecha el descuido para atacar. No falla nunca.', }, flowerTrick: { - name: "Truco Floral", - effect: "Ataca al objetivo lanzándole un ramo de flores trucado. No falla nunca y siempre asesta un golpe crítico.", + name: 'Truco Floral', + effect: 'Ataca al objetivo lanzándole un ramo de flores trucado. No falla nunca y siempre asesta un golpe crítico.', }, torchSong: { - name: "Canto Ardiente", - effect: "Expele tórridas llamaradas como si entonara una canción y abrasa al objetivo con ellas. Aumenta el Ataque Especial del usuario.", + name: 'Canto Ardiente', + effect: 'Expele tórridas llamaradas como si entonara una canción y abrasa al objetivo con ellas. Aumenta el Ataque Especial del usuario.', }, aquaStep: { - name: "Danza Acuática", - effect: "Juguetea con el objetivo mientras ejecuta una elegante y fluida danza y le inflige daño. Aumenta la Velocidad del usuario.", + name: 'Danza Acuática', + effect: 'Juguetea con el objetivo mientras ejecuta una elegante y fluida danza y le inflige daño. Aumenta la Velocidad del usuario.', }, ragingBull: { - name: "Furia Taurina", - effect: "Embiste con tremenda fiereza. Este movimiento cambia de tipo en función de la variedad del usuario y es capaz de destruir barreras como Pantalla de Luz y Reflejo.", + name: 'Furia Taurina', + effect: 'Embiste con tremenda fiereza. Este movimiento cambia de tipo en función de la variedad del usuario y es capaz de destruir barreras como Pantalla de Luz y Reflejo.', }, makeItRain: { - name: "Fiebre Dorada", - effect: "El usuario ataca arrojando una generosa cantidad de monedas, pero su Ataque Especial se ve reducido. Al finalizar el combate, las recupera en forma de ganancias.", + name: 'Fiebre Dorada', + effect: 'El usuario ataca arrojando una generosa cantidad de monedas, pero su Ataque Especial se ve reducido. Al finalizar el combate, las recupera en forma de ganancias.', }, psyblade: { - name: "Psicohojas", - effect: "El usuario rebana al objetivo con una espada inmaterial. Cuando se usa en conjunción con un campo eléctrico, la potencia del movimiento aumenta un 50 %.", + name: 'Psicohojas', + effect: 'El usuario rebana al objetivo con una espada inmaterial. Cuando se usa en conjunción con un campo eléctrico, la potencia del movimiento aumenta un 50 %.', }, hydroSteam: { - name: "Hidrovapor", - effect: "Vierte agua hirviendo sobre el objetivo. Cuando hace sol, la potencia del movimiento aumenta un 50 % en lugar de reducirse.", + name: 'Hidrovapor', + effect: 'Vierte agua hirviendo sobre el objetivo. Cuando hace sol, la potencia del movimiento aumenta un 50 % en lugar de reducirse.', }, ruination: { - name: "Calamidad", - effect: "Provoca una catástrofe devastadora que reduce a la mitad los PS del objetivo.", + name: 'Calamidad', + effect: 'Provoca una catástrofe devastadora que reduce a la mitad los PS del objetivo.', }, collisionCourse: { - name: "Nitrochoque", - effect: "El usuario choca contra el suelo mientras se transforma y provoca una explosión primigenia. La potencia del movimiento aumenta si el ataque es supereficaz.", + name: 'Nitrochoque', + effect: 'El usuario choca contra el suelo mientras se transforma y provoca una explosión primigenia. La potencia del movimiento aumenta si el ataque es supereficaz.', }, electroDrift: { - name: "Electroderrape", - effect: "Se abalanza sobre el objetivo mientras se transforma y lo atraviesa con electricidad futurista. La potencia del movimiento aumenta si el ataque es supereficaz.", + name: 'Electroderrape', + effect: 'Se abalanza sobre el objetivo mientras se transforma y lo atraviesa con electricidad futurista. La potencia del movimiento aumenta si el ataque es supereficaz.', }, shedTail: { - name: "Autotomía", - effect: "El usuario se cambia por otro Pokémon del equipo, pero antes utiliza parte de los PS propios para crear un sustituto para su relevo.", + name: 'Autotomía', + effect: 'El usuario se cambia por otro Pokémon del equipo, pero antes utiliza parte de los PS propios para crear un sustituto para su relevo.', }, chillyReception: { - name: "Fría Acogida", - effect: "El usuario se cambia por otro Pokémon del equipo, pero antes cuenta un chiste que tiene una acogida tan fría que hace que nieve durante cinco turnos.", + name: 'Fría Acogida', + effect: 'El usuario se cambia por otro Pokémon del equipo, pero antes cuenta un chiste que tiene una acogida tan fría que hace que nieve durante cinco turnos.', }, tidyUp: { - name: "Limpieza General", - effect: "Efectúa una limpieza a fondo que anula los efectos de Púas, Trampa Rocas, Red Viscosa, Púas Tóxicas y Sustituto. Aumenta el Ataque y la Velocidad del usuario.", + name: 'Limpieza General', + effect: 'Efectúa una limpieza a fondo que anula los efectos de Púas, Trampa Rocas, Red Viscosa, Púas Tóxicas y Sustituto. Aumenta el Ataque y la Velocidad del usuario.', }, snowscape: { - name: "Paisaje Nevado", - effect: "Desata una nevada que dura cinco turnos y aumenta la Defensa de los Pokémon de tipo Hielo.", + name: 'Paisaje Nevado', + effect: 'Desata una nevada que dura cinco turnos y aumenta la Defensa de los Pokémon de tipo Hielo.', }, pounce: { - name: "Brinco", - effect: "Ataca abalanzándose sobre el objetivo y le reduce la Velocidad.", + name: 'Brinco', + effect: 'Ataca abalanzándose sobre el objetivo y le reduce la Velocidad.', }, trailblaze: { - name: "Abrecaminos", - effect: "Ataca de pronto como si saltara desde la hierba alta. El usuario se mueve con gran agilidad y aumenta su Velocidad.", + name: 'Abrecaminos', + effect: 'Ataca de pronto como si saltara desde la hierba alta. El usuario se mueve con gran agilidad y aumenta su Velocidad.', }, chillingWater: { - name: "Agua Fría", - effect: "Ataca al objetivo rociándolo con un agua gélida y desalentadora que reduce su Ataque.", + name: 'Agua Fría', + effect: 'Ataca al objetivo rociándolo con un agua gélida y desalentadora que reduce su Ataque.', }, hyperDrill: { - name: "Hipertaladro", - effect: "El usuario hace rotar la parte puntiaguda de su cuerpo a gran velocidad para atacar al objetivo. Pasa por alto los efectos de movimientos como Protección o Detección.", + name: 'Hipertaladro', + effect: 'El usuario hace rotar la parte puntiaguda de su cuerpo a gran velocidad para atacar al objetivo. Pasa por alto los efectos de movimientos como Protección o Detección.', }, twinBeam: { - name: "Láser Doble", - effect: "Ataca emitiendo dos misteriosos haces lumínicos por los ojos que infligen daño dos veces seguidas.", + name: 'Láser Doble', + effect: 'Ataca emitiendo dos misteriosos haces lumínicos por los ojos que infligen daño dos veces seguidas.', }, rageFist: { - name: "Puño Furia", - effect: "Convierte su rabia en energía para atacar. Cuantos más golpes haya recibido el usuario, mayor será la potencia del movimiento.", + name: 'Puño Furia', + effect: 'Convierte su rabia en energía para atacar. Cuantos más golpes haya recibido el usuario, mayor será la potencia del movimiento.', }, armorCannon: { - name: "Cañón Armadura", - effect: "Se deshace de su armadura y arroja las partes al objetivo cuales proyectiles ardientes. Reduce la Defensa y la Defensa Especial del usuario.", + name: 'Cañón Armadura', + effect: 'Se deshace de su armadura y arroja las partes al objetivo cuales proyectiles ardientes. Reduce la Defensa y la Defensa Especial del usuario.', }, bitterBlade: { - name: "Espada Lamento", - effect: "Imbuye la punta de su espada con su desazón por el mundo y asesta una estocada llena de rencor. El usuario recupera la mitad de los PS del daño que produce.", + name: 'Espada Lamento', + effect: 'Imbuye la punta de su espada con su desazón por el mundo y asesta una estocada llena de rencor. El usuario recupera la mitad de los PS del daño que produce.', }, doubleShock: { - name: "Electropalmas", - effect: "Libera toda la electricidad de su cuerpo para lanzar un ataque devastador. Tras ejecutar el movimiento, el usuario deja de ser de tipo Eléctrico.", + name: 'Electropalmas', + effect: 'Libera toda la electricidad de su cuerpo para lanzar un ataque devastador. Tras ejecutar el movimiento, el usuario deja de ser de tipo Eléctrico.', }, gigatonHammer: { - name: "Martillo Colosal", - effect: "El usuario se ayuda de su propio peso corporal para propinar un golpe con un enorme martillo. Este movimiento no puede usarse dos veces seguidas.", + name: 'Martillo Colosal', + effect: 'El usuario se ayuda de su propio peso corporal para propinar un golpe con un enorme martillo. Este movimiento no puede usarse dos veces seguidas.', }, comeuppance: { - name: "Resarcimiento", - effect: "Devuelve al rival el último ataque recibido, pero con mucha más fuerza.", + name: 'Resarcimiento', + effect: 'Devuelve al rival el último ataque recibido, pero con mucha más fuerza.', }, aquaCutter: { - name: "Tajo Acuático", - effect: "Expele agua a presión con la que corta al objetivo como si de una hoja se tratara. Suele asestar un golpe crítico.", + name: 'Tajo Acuático', + effect: 'Expele agua a presión con la que corta al objetivo como si de una hoja se tratara. Suele asestar un golpe crítico.', }, blazingTorque: { - name: "Pirochoque", - effect: "The user revs their blazing engine into the target. This may also leave the target with a burn.", + name: 'Pirochoque', + effect: 'The user revs their blazing engine into the target. This may also leave the target with a burn.', }, wickedTorque: { - name: "Ominochoque", - effect: "The user revs their engine into the target with malicious intent. This may put the target to sleep.", + name: 'Ominochoque', + effect: 'The user revs their engine into the target with malicious intent. This may put the target to sleep.', }, noxiousTorque: { - name: "Ponzochoque", - effect: "The user revs their poisonous engine into the target. This may also poison the target.", + name: 'Ponzochoque', + effect: 'The user revs their poisonous engine into the target. This may also poison the target.', }, combatTorque: { - name: "Pugnachoque", - effect: "The user revs their engine forcefully into the target. This may also leave the target with paralysis.", + name: 'Pugnachoque', + effect: 'The user revs their engine forcefully into the target. This may also leave the target with paralysis.', }, magicalTorque: { - name: "Feerichoque", - effect: "The user revs their fae-like engine into the target. This may also confuse the target.", + name: 'Feerichoque', + effect: 'The user revs their fae-like engine into the target. This may also confuse the target.', }, bloodMoon: { - name: "Luna Roja", - effect: "Ataca canalizando toda su fuerza y proyectándola a través de una luna llena de color rojo intenso. Este movimiento no puede usarse dos veces seguidas.", + name: 'Luna Roja', + effect: 'Ataca canalizando toda su fuerza y proyectándola a través de una luna llena de color rojo intenso. Este movimiento no puede usarse dos veces seguidas.', }, matchaGotcha: { - name: "Cañón Batidor", - effect: "Rocía al objetivo con té recién batido y recupera la mitad de los PS del daño que produce. Puede causar quemaduras.", + name: 'Cañón Batidor', + effect: 'Rocía al objetivo con té recién batido y recupera la mitad de los PS del daño que produce. Puede causar quemaduras.', }, syrupBomb: { - name: "Bomba Caramelo", - effect: "Impregna al objetivo con una explosión de su viscoso néctar y lo carameliza, lo que hace que su Velocidad se reduzca progresivamente durante tres turnos.", + name: 'Bomba Caramelo', + effect: 'Impregna al objetivo con una explosión de su viscoso néctar y lo carameliza, lo que hace que su Velocidad se reduzca progresivamente durante tres turnos.', }, ivyCudgel: { - name: "Garrote Liana", - effect: "Golpea con un garrote que forma enrollando su liana. El tipo del movimiento varía según la máscara que lleve puesta el usuario. Suele asestar un golpe crítico.", + name: 'Garrote Liana', + effect: 'Golpea con un garrote que forma enrollando su liana. El tipo del movimiento varía según la máscara que lleve puesta el usuario. Suele asestar un golpe crítico.', }, electroShot: { - name: "Electrorrayo", - effect: "Acumula electricidad y aumenta su Ataque Especial en el primer turno y dispara una descarga de alto voltaje en el segundo. Si llueve, puede atacar en el primer turno.", + name: 'Electrorrayo', + effect: 'Acumula electricidad y aumenta su Ataque Especial en el primer turno y dispara una descarga de alto voltaje en el segundo. Si llueve, puede atacar en el primer turno.', }, teraStarstorm: { - name: "Teraclúster", - effect: "Ataca al objetivo irradiando el poder de sus cristales. Si Terapagos usa este movimiento en su Forma Astral, inflige daño a todos los rivales.", + name: 'Teraclúster', + effect: 'Ataca al objetivo irradiando el poder de sus cristales. Si Terapagos usa este movimiento en su Forma Astral, inflige daño a todos los rivales.', }, fickleBeam: { - name: "Láser Veleidoso", - effect: "Ataca disparando un haz de luz. En ocasiones, el resto de sus cabezas se unen al ataque. Cuando esto sucede, la potencia del movimiento se duplica.", + name: 'Láser Veleidoso', + effect: 'Ataca disparando un haz de luz. En ocasiones, el resto de sus cabezas se unen al ataque. Cuando esto sucede, la potencia del movimiento se duplica.', }, burningBulwark: { - name: "Llama Protectora", - effect: "Emplea su ardiente pelaje para protegerse de los ataques y causarle quemaduras al atacante si este usa un movimiento de contacto.", + name: 'Llama Protectora', + effect: 'Emplea su ardiente pelaje para protegerse de los ataques y causarle quemaduras al atacante si este usa un movimiento de contacto.', }, thunderclap: { - name: "Relámpago Súbito", - effect: "Invoca un rayo que cae sobre el objetivo antes de que este pueda realizar cualquier acción. Falla si el objetivo no está preparando ningún ataque.", + name: 'Relámpago Súbito', + effect: 'Invoca un rayo que cae sobre el objetivo antes de que este pueda realizar cualquier acción. Falla si el objetivo no está preparando ningún ataque.', }, mightyCleave: { - name: "Filo Potente", - effect: "Rebana al objetivo con la luz que ha acumulado en la testa. Permite acertar aunque el objetivo esté protegiéndose.", + name: 'Filo Potente', + effect: 'Rebana al objetivo con la luz que ha acumulado en la testa. Permite acertar aunque el objetivo esté protegiéndose.', }, tachyonCutter: { - name: "Tajo Taquión", - effect: "Lanza una ráfaga de cuchillas formadas por partículas contra el objetivo y le inflige daño dos veces seguidas. No falla nunca.", + name: 'Tajo Taquión', + effect: 'Lanza una ráfaga de cuchillas formadas por partículas contra el objetivo y le inflige daño dos veces seguidas. No falla nunca.', }, hardPress: { - name: "Prensa Metálica", - effect: "Oprime con los brazos o las pinzas. Cuantos más PS le queden al objetivo, mayor será la potencia del movimiento.", + name: 'Prensa Metálica', + effect: 'Oprime con los brazos o las pinzas. Cuantos más PS le queden al objetivo, mayor será la potencia del movimiento.', }, dragonCheer: { - name: "Bramido Dragón", - effect: "Bramido de dragón que sube la moral de los aliados y aumenta sus probabilidades de asestar un golpe crítico. Es especialmente efectivo con aliados de tipo Dragón.", + name: 'Bramido Dragón', + effect: 'Bramido de dragón que sube la moral de los aliados y aumenta sus probabilidades de asestar un golpe crítico. Es especialmente efectivo con aliados de tipo Dragón.', }, alluringVoice: { - name: "Canto Encantador", - effect: "Ataca con un canto angelical y, si las características del objetivo han aumentado en ese turno, lo deja confuso.", + name: 'Canto Encantador', + effect: 'Ataca con un canto angelical y, si las características del objetivo han aumentado en ese turno, lo deja confuso.', }, temperFlare: { - name: "Cólera Ardiente", - effect: "Arremete contra el objetivo tras dejarse llevar por la ira. Su potencia se duplica si el movimiento del usuario falló en el turno anterior.", + name: 'Cólera Ardiente', + effect: 'Arremete contra el objetivo tras dejarse llevar por la ira. Su potencia se duplica si el movimiento del usuario falló en el turno anterior.', }, supercellSlam: { - name: "Plancha Voltaica", - effect: "El usuario electrifica su cuerpo y salta en plancha sobre el objetivo. Si falla, se hiere a sí mismo.", + name: 'Plancha Voltaica', + effect: 'El usuario electrifica su cuerpo y salta en plancha sobre el objetivo. Si falla, se hiere a sí mismo.', }, psychicNoise: { - name: "Psicorruido", - effect: "Ataca emitiendo una onda sonora desagradable que impide al objetivo usar movimientos, habilidades y objetos equipados que recuperan PS durante dos turnos.", + name: 'Psicorruido', + effect: 'Ataca emitiendo una onda sonora desagradable que impide al objetivo usar movimientos, habilidades y objetos equipados que recuperan PS durante dos turnos.', }, upperHand: { - name: "Palma Rauda", - effect: "Se anticipa al objetivo golpeándolo rápidamente con la palma y lo amedrenta. Falla si el objetivo no está preparando un movimiento de prioridad alta.", + name: 'Palma Rauda', + effect: 'Se anticipa al objetivo golpeándolo rápidamente con la palma y lo amedrenta. Falla si el objetivo no está preparando un movimiento de prioridad alta.', }, malignantChain: { - name: "Cadena Virulenta", - effect: "Apresa al objetivo con una cadena hecha de ponzoña que le inocula toxinas para minarle las fuerzas. Puede envenenar gravemente.", + name: 'Cadena Virulenta', + effect: 'Apresa al objetivo con una cadena hecha de ponzoña que le inocula toxinas para minarle las fuerzas. Puede envenenar gravemente.', }, } as const; diff --git a/src/locales/es/nature.ts b/src/locales/es/nature.ts index 74f9c017ac8..9edd5525f76 100644 --- a/src/locales/es/nature.ts +++ b/src/locales/es/nature.ts @@ -1,29 +1,29 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const nature: SimpleTranslationEntries = { - "Hardy": "Fuerte", - "Lonely": "Huraña", - "Brave": "Audaz", - "Adamant": "Firme", - "Naughty": "Pícara", - "Bold": "Osada", - "Docile": "Dócil", - "Relaxed": "Plácida", - "Impish": "Agitada", - "Lax": "Floja", - "Timid": "Miedosa", - "Hasty": "Activa", - "Serious": "Seria", - "Jolly": "Alegre", - "Naive": "Ingenua", - "Modest": "Modesta", - "Mild": "Afable", - "Quiet": "Mansa", - "Bashful": "Tímida", - "Rash": "Alocada", - "Calm": "Serena", - "Gentle": "Amable", - "Sassy": "Grosera", - "Careful": "Cauta", - "Quirky": "Rara" -} as const; \ No newline at end of file + 'Hardy': 'Fuerte', + 'Lonely': 'Huraña', + 'Brave': 'Audaz', + 'Adamant': 'Firme', + 'Naughty': 'Pícara', + 'Bold': 'Osada', + 'Docile': 'Dócil', + 'Relaxed': 'Plácida', + 'Impish': 'Agitada', + 'Lax': 'Floja', + 'Timid': 'Miedosa', + 'Hasty': 'Activa', + 'Serious': 'Seria', + 'Jolly': 'Alegre', + 'Naive': 'Ingenua', + 'Modest': 'Modesta', + 'Mild': 'Afable', + 'Quiet': 'Mansa', + 'Bashful': 'Tímida', + 'Rash': 'Alocada', + 'Calm': 'Serena', + 'Gentle': 'Amable', + 'Sassy': 'Grosera', + 'Careful': 'Cauta', + 'Quirky': 'Rara' +} as const; diff --git a/src/locales/es/pokeball.ts b/src/locales/es/pokeball.ts index 03f4131b8f7..6ac80e2c5c8 100644 --- a/src/locales/es/pokeball.ts +++ b/src/locales/es/pokeball.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokeball: SimpleTranslationEntries = { - "pokeBall": "Poké Ball", - "greatBall": "Super Ball", - "ultraBall": "Ultra Ball", - "rogueBall": "Rogue Ball", - "masterBall": "Master Ball", - "luxuryBall": "Lujo Ball", -} as const; \ No newline at end of file + 'pokeBall': 'Poké Ball', + 'greatBall': 'Super Ball', + 'ultraBall': 'Ultra Ball', + 'rogueBall': 'Rogue Ball', + 'masterBall': 'Master Ball', + 'luxuryBall': 'Lujo Ball', +} as const; diff --git a/src/locales/es/pokemon-info.ts b/src/locales/es/pokemon-info.ts index fabc7220f3c..edb0c7a5ee0 100644 --- a/src/locales/es/pokemon-info.ts +++ b/src/locales/es/pokemon-info.ts @@ -1,41 +1,41 @@ -import { PokemonInfoTranslationEntries } from "#app/plugins/i18n"; +import { PokemonInfoTranslationEntries } from '#app/plugins/i18n'; export const pokemonInfo: PokemonInfoTranslationEntries = { - Stat: { - "HP": "PV", - "HPshortened": "PV", - "ATK": "Ataque", - "ATKshortened": "Ata", - "DEF": "Defensa", - "DEFshortened": "Def", - "SPATK": "At. Esp.", - "SPATKshortened": "AtEsp", - "SPDEF": "Def. Esp.", - "SPDEFshortened": "DefEsp", - "SPD": "Velocidad", - "SPDshortened": "Veloc." - }, + Stat: { + 'HP': 'PV', + 'HPshortened': 'PV', + 'ATK': 'Ataque', + 'ATKshortened': 'Ata', + 'DEF': 'Defensa', + 'DEFshortened': 'Def', + 'SPATK': 'At. Esp.', + 'SPATKshortened': 'AtEsp', + 'SPDEF': 'Def. Esp.', + 'SPDEFshortened': 'DefEsp', + 'SPD': 'Velocidad', + 'SPDshortened': 'Veloc.' + }, - Type: { - "UNKNOWN": "Unknown", - "NORMAL": "Normal", - "FIGHTING": "Fighting", - "FLYING": "Flying", - "POISON": "Poison", - "GROUND": "Ground", - "ROCK": "Rock", - "BUG": "Bug", - "GHOST": "Ghost", - "STEEL": "Steel", - "FIRE": "Fire", - "WATER": "Water", - "GRASS": "Grass", - "ELECTRIC": "Electric", - "PSYCHIC": "Psychic", - "ICE": "Ice", - "DRAGON": "Dragon", - "DARK": "Dark", - "FAIRY": "Fairy", - "STELLAR": "Stellar", - }, -} as const; \ No newline at end of file + Type: { + 'UNKNOWN': 'Unknown', + 'NORMAL': 'Normal', + 'FIGHTING': 'Fighting', + 'FLYING': 'Flying', + 'POISON': 'Poison', + 'GROUND': 'Ground', + 'ROCK': 'Rock', + 'BUG': 'Bug', + 'GHOST': 'Ghost', + 'STEEL': 'Steel', + 'FIRE': 'Fire', + 'WATER': 'Water', + 'GRASS': 'Grass', + 'ELECTRIC': 'Electric', + 'PSYCHIC': 'Psychic', + 'ICE': 'Ice', + 'DRAGON': 'Dragon', + 'DARK': 'Dark', + 'FAIRY': 'Fairy', + 'STELLAR': 'Stellar', + }, +} as const; diff --git a/src/locales/es/pokemon.ts b/src/locales/es/pokemon.ts index 7826e15ba67..5198af8cbec 100644 --- a/src/locales/es/pokemon.ts +++ b/src/locales/es/pokemon.ts @@ -1,1086 +1,1086 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokemon: SimpleTranslationEntries = { - "bulbasaur": "Bulbasaur", - "ivysaur": "Ivysaur", - "venusaur": "Venusaur", - "charmander": "Charmander", - "charmeleon": "Charmeleon", - "charizard": "Charizard", - "squirtle": "Squirtle", - "wartortle": "Wartortle", - "blastoise": "Blastoise", - "caterpie": "Caterpie", - "metapod": "Metapod", - "butterfree": "Butterfree", - "weedle": "Weedle", - "kakuna": "Kakuna", - "beedrill": "Beedrill", - "pidgey": "Pidgey", - "pidgeotto": "Pidgeotto", - "pidgeot": "Pidgeot", - "rattata": "Rattata", - "raticate": "Raticate", - "spearow": "Spearow", - "fearow": "Fearow", - "ekans": "Ekans", - "arbok": "Arbok", - "pikachu": "Pikachu", - "raichu": "Raichu", - "sandshrew": "Sandshrew", - "sandslash": "Sandslash", - "nidoran_f": "Nidoran♀", - "nidorina": "Nidorina", - "nidoqueen": "Nidoqueen", - "nidoran_m": "Nidoran♂", - "nidorino": "Nidorino", - "nidoking": "Nidoking", - "clefairy": "Clefairy", - "clefable": "Clefable", - "vulpix": "Vulpix", - "ninetales": "Ninetales", - "jigglypuff": "Jigglypuff", - "wigglytuff": "Wigglytuff", - "zubat": "Zubat", - "golbat": "Golbat", - "oddish": "Oddish", - "gloom": "Gloom", - "vileplume": "Vileplume", - "paras": "Paras", - "parasect": "Parasect", - "venonat": "Venonat", - "venomoth": "Venomoth", - "diglett": "Diglett", - "dugtrio": "Dugtrio", - "meowth": "Meowth", - "persian": "Persian", - "psyduck": "Psyduck", - "golduck": "Golduck", - "mankey": "Mankey", - "primeape": "Primeape", - "growlithe": "Growlithe", - "arcanine": "Arcanine", - "poliwag": "Poliwag", - "poliwhirl": "Poliwhirl", - "poliwrath": "Poliwrath", - "abra": "Abra", - "kadabra": "Kadabra", - "alakazam": "Alakazam", - "machop": "Machop", - "machoke": "Machoke", - "machamp": "Machamp", - "bellsprout": "Bellsprout", - "weepinbell": "Weepinbell", - "victreebel": "Victreebel", - "tentacool": "Tentacool", - "tentacruel": "Tentacruel", - "geodude": "Geodude", - "graveler": "Graveler", - "golem": "Golem", - "ponyta": "Ponyta", - "rapidash": "Rapidash", - "slowpoke": "Slowpoke", - "slowbro": "Slowbro", - "magnemite": "Magnemite", - "magneton": "Magneton", - "farfetchd": "Farfetch'd", - "doduo": "Doduo", - "dodrio": "Dodrio", - "seel": "Seel", - "dewgong": "Dewgong", - "grimer": "Grimer", - "muk": "Muk", - "shellder": "Shellder", - "cloyster": "Cloyster", - "gastly": "Gastly", - "haunter": "Haunter", - "gengar": "Gengar", - "onix": "Onix", - "drowzee": "Drowzee", - "hypno": "Hypno", - "krabby": "Krabby", - "kingler": "Kingler", - "voltorb": "Voltorb", - "electrode": "Electrode", - "exeggcute": "Exeggcute", - "exeggutor": "Exeggutor", - "cubone": "Cubone", - "marowak": "Marowak", - "hitmonlee": "Hitmonlee", - "hitmonchan": "Hitmonchan", - "lickitung": "Lickitung", - "koffing": "Koffing", - "weezing": "Weezing", - "rhyhorn": "Rhyhorn", - "rhydon": "Rhydon", - "chansey": "Chansey", - "tangela": "Tangela", - "kangaskhan": "Kangaskhan", - "horsea": "Horsea", - "seadra": "Seadra", - "goldeen": "Goldeen", - "seaking": "Seaking", - "staryu": "Staryu", - "starmie": "Starmie", - "mr_mime": "Mr. Mime", - "scyther": "Scyther", - "jynx": "Jynx", - "electabuzz": "Electabuzz", - "magmar": "Magmar", - "pinsir": "Pinsir", - "tauros": "Tauros", - "magikarp": "Magikarp", - "gyarados": "Gyarados", - "lapras": "Lapras", - "ditto": "Ditto", - "eevee": "Eevee", - "vaporeon": "Vaporeon", - "jolteon": "Jolteon", - "flareon": "Flareon", - "porygon": "Porygon", - "omanyte": "Omanyte", - "omastar": "Omastar", - "kabuto": "Kabuto", - "kabutops": "Kabutops", - "aerodactyl": "Aerodactyl", - "snorlax": "Snorlax", - "articuno": "Articuno", - "zapdos": "Zapdos", - "moltres": "Moltres", - "dratini": "Dratini", - "dragonair": "Dragonair", - "dragonite": "Dragonite", - "mewtwo": "Mewtwo", - "mew": "Mew", - "chikorita": "Chikorita", - "bayleef": "Bayleef", - "meganium": "Meganium", - "cyndaquil": "Cyndaquil", - "quilava": "Quilava", - "typhlosion": "Typhlosion", - "totodile": "Totodile", - "croconaw": "Croconaw", - "feraligatr": "Feraligatr", - "sentret": "Sentret", - "furret": "Furret", - "hoothoot": "Hoothoot", - "noctowl": "Noctowl", - "ledyba": "Ledyba", - "ledian": "Ledian", - "spinarak": "Spinarak", - "ariados": "Ariados", - "crobat": "Crobat", - "chinchou": "Chinchou", - "lanturn": "Lanturn", - "pichu": "Pichu", - "cleffa": "Cleffa", - "igglybuff": "Igglybuff", - "togepi": "Togepi", - "togetic": "Togetic", - "natu": "Natu", - "xatu": "Xatu", - "mareep": "Mareep", - "flaaffy": "Flaaffy", - "ampharos": "Ampharos", - "bellossom": "Bellossom", - "marill": "Marill", - "azumarill": "Azumarill", - "sudowoodo": "Sudowoodo", - "politoed": "Politoed", - "hoppip": "Hoppip", - "skiploom": "Skiploom", - "jumpluff": "Jumpluff", - "aipom": "Aipom", - "sunkern": "Sunkern", - "sunflora": "Sunflora", - "yanma": "Yanma", - "wooper": "Wooper", - "quagsire": "Quagsire", - "espeon": "Espeon", - "umbreon": "Umbreon", - "murkrow": "Murkrow", - "slowking": "Slowking", - "misdreavus": "Misdreavus", - "unown": "Unown", - "wobbuffet": "Wobbuffet", - "girafarig": "Girafarig", - "pineco": "Pineco", - "forretress": "Forretress", - "dunsparce": "Dunsparce", - "gligar": "Gligar", - "steelix": "Steelix", - "snubbull": "Snubbull", - "granbull": "Granbull", - "qwilfish": "Qwilfish", - "scizor": "Scizor", - "shuckle": "Shuckle", - "heracross": "Heracross", - "sneasel": "Sneasel", - "teddiursa": "Teddiursa", - "ursaring": "Ursaring", - "slugma": "Slugma", - "magcargo": "Magcargo", - "swinub": "Swinub", - "piloswine": "Piloswine", - "corsola": "Corsola", - "remoraid": "Remoraid", - "octillery": "Octillery", - "delibird": "Delibird", - "mantine": "Mantine", - "skarmory": "Skarmory", - "houndour": "Houndour", - "houndoom": "Houndoom", - "kingdra": "Kingdra", - "phanpy": "Phanpy", - "donphan": "Donphan", - "porygon2": "Porygon2", - "stantler": "Stantler", - "smeargle": "Smeargle", - "tyrogue": "Tyrogue", - "hitmontop": "Hitmontop", - "smoochum": "Smoochum", - "elekid": "Elekid", - "magby": "Magby", - "miltank": "Miltank", - "blissey": "Blissey", - "raikou": "Raikou", - "entei": "Entei", - "suicune": "Suicune", - "larvitar": "Larvitar", - "pupitar": "Pupitar", - "tyranitar": "Tyranitar", - "lugia": "Lugia", - "ho_oh": "Ho-Oh", - "celebi": "Celebi", - "treecko": "Treecko", - "grovyle": "Grovyle", - "sceptile": "Sceptile", - "torchic": "Torchic", - "combusken": "Combusken", - "blaziken": "Blaziken", - "mudkip": "Mudkip", - "marshtomp": "Marshtomp", - "swampert": "Swampert", - "poochyena": "Poochyena", - "mightyena": "Mightyena", - "zigzagoon": "Zigzagoon", - "linoone": "Linoone", - "wurmple": "Wurmple", - "silcoon": "Silcoon", - "beautifly": "Beautifly", - "cascoon": "Cascoon", - "dustox": "Dustox", - "lotad": "Lotad", - "lombre": "Lombre", - "ludicolo": "Ludicolo", - "seedot": "Seedot", - "nuzleaf": "Nuzleaf", - "shiftry": "Shiftry", - "taillow": "Taillow", - "swellow": "Swellow", - "wingull": "Wingull", - "pelipper": "Pelipper", - "ralts": "Ralts", - "kirlia": "Kirlia", - "gardevoir": "Gardevoir", - "surskit": "Surskit", - "masquerain": "Masquerain", - "shroomish": "Shroomish", - "breloom": "Breloom", - "slakoth": "Slakoth", - "vigoroth": "Vigoroth", - "slaking": "Slaking", - "nincada": "Nincada", - "ninjask": "Ninjask", - "shedinja": "Shedinja", - "whismur": "Whismur", - "loudred": "Loudred", - "exploud": "Exploud", - "makuhita": "Makuhita", - "hariyama": "Hariyama", - "azurill": "Azurill", - "nosepass": "Nosepass", - "skitty": "Skitty", - "delcatty": "Delcatty", - "sableye": "Sableye", - "mawile": "Mawile", - "aron": "Aron", - "lairon": "Lairon", - "aggron": "Aggron", - "meditite": "Meditite", - "medicham": "Medicham", - "electrike": "Electrike", - "manectric": "Manectric", - "plusle": "Plusle", - "minun": "Minun", - "volbeat": "Volbeat", - "illumise": "Illumise", - "roselia": "Roselia", - "gulpin": "Gulpin", - "swalot": "Swalot", - "carvanha": "Carvanha", - "sharpedo": "Sharpedo", - "wailmer": "Wailmer", - "wailord": "Wailord", - "numel": "Numel", - "camerupt": "Camerupt", - "torkoal": "Torkoal", - "spoink": "Spoink", - "grumpig": "Grumpig", - "spinda": "Spinda", - "trapinch": "Trapinch", - "vibrava": "Vibrava", - "flygon": "Flygon", - "cacnea": "Cacnea", - "cacturne": "Cacturne", - "swablu": "Swablu", - "altaria": "Altaria", - "zangoose": "Zangoose", - "seviper": "Seviper", - "lunatone": "Lunatone", - "solrock": "Solrock", - "barboach": "Barboach", - "whiscash": "Whiscash", - "corphish": "Corphish", - "crawdaunt": "Crawdaunt", - "baltoy": "Baltoy", - "claydol": "Claydol", - "lileep": "Lileep", - "cradily": "Cradily", - "anorith": "Anorith", - "armaldo": "Armaldo", - "feebas": "Feebas", - "milotic": "Milotic", - "castform": "Castform", - "kecleon": "Kecleon", - "shuppet": "Shuppet", - "banette": "Banette", - "duskull": "Duskull", - "dusclops": "Dusclops", - "tropius": "Tropius", - "chimecho": "Chimecho", - "absol": "Absol", - "wynaut": "Wynaut", - "snorunt": "Snorunt", - "glalie": "Glalie", - "spheal": "Spheal", - "sealeo": "Sealeo", - "walrein": "Walrein", - "clamperl": "Clamperl", - "huntail": "Huntail", - "gorebyss": "Gorebyss", - "relicanth": "Relicanth", - "luvdisc": "Luvdisc", - "bagon": "Bagon", - "shelgon": "Shelgon", - "salamence": "Salamence", - "beldum": "Beldum", - "metang": "Metang", - "metagross": "Metagross", - "regirock": "Regirock", - "regice": "Regice", - "registeel": "Registeel", - "latias": "Latias", - "latios": "Latios", - "kyogre": "Kyogre", - "groudon": "Groudon", - "rayquaza": "Rayquaza", - "jirachi": "Jirachi", - "deoxys": "Deoxys", - "turtwig": "Turtwig", - "grotle": "Grotle", - "torterra": "Torterra", - "chimchar": "Chimchar", - "monferno": "Monferno", - "infernape": "Infernape", - "piplup": "Piplup", - "prinplup": "Prinplup", - "empoleon": "Empoleon", - "starly": "Starly", - "staravia": "Staravia", - "staraptor": "Staraptor", - "bidoof": "Bidoof", - "bibarel": "Bibarel", - "kricketot": "Kricketot", - "kricketune": "Kricketune", - "shinx": "Shinx", - "luxio": "Luxio", - "luxray": "Luxray", - "budew": "Budew", - "roserade": "Roserade", - "cranidos": "Cranidos", - "rampardos": "Rampardos", - "shieldon": "Shieldon", - "bastiodon": "Bastiodon", - "burmy": "Burmy", - "wormadam": "Wormadam", - "mothim": "Mothim", - "combee": "Combee", - "vespiquen": "Vespiquen", - "pachirisu": "Pachirisu", - "buizel": "Buizel", - "floatzel": "Floatzel", - "cherubi": "Cherubi", - "cherrim": "Cherrim", - "shellos": "Shellos", - "gastrodon": "Gastrodon", - "ambipom": "Ambipom", - "drifloon": "Drifloon", - "drifblim": "Drifblim", - "buneary": "Buneary", - "lopunny": "Lopunny", - "mismagius": "Mismagius", - "honchkrow": "Honchkrow", - "glameow": "Glameow", - "purugly": "Purugly", - "chingling": "Chingling", - "stunky": "Stunky", - "skuntank": "Skuntank", - "bronzor": "Bronzor", - "bronzong": "Bronzong", - "bonsly": "Bonsly", - "mime_jr": "Mime Jr.", - "happiny": "Happiny", - "chatot": "Chatot", - "spiritomb": "Spiritomb", - "gible": "Gible", - "gabite": "Gabite", - "garchomp": "Garchomp", - "munchlax": "Munchlax", - "riolu": "Riolu", - "lucario": "Lucario", - "hippopotas": "Hippopotas", - "hippowdon": "Hippowdon", - "skorupi": "Skorupi", - "drapion": "Drapion", - "croagunk": "Croagunk", - "toxicroak": "Toxicroak", - "carnivine": "Carnivine", - "finneon": "Finneon", - "lumineon": "Lumineon", - "mantyke": "Mantyke", - "snover": "Snover", - "abomasnow": "Abomasnow", - "weavile": "Weavile", - "magnezone": "Magnezone", - "lickilicky": "Lickilicky", - "rhyperior": "Rhyperior", - "tangrowth": "Tangrowth", - "electivire": "Electivire", - "magmortar": "Magmortar", - "togekiss": "Togekiss", - "yanmega": "Yanmega", - "leafeon": "Leafeon", - "glaceon": "Glaceon", - "gliscor": "Gliscor", - "mamoswine": "Mamoswine", - "porygon_z": "Porygon-Z", - "gallade": "Gallade", - "probopass": "Probopass", - "dusknoir": "Dusknoir", - "froslass": "Froslass", - "rotom": "Rotom", - "uxie": "Uxie", - "mesprit": "Mesprit", - "azelf": "Azelf", - "dialga": "Dialga", - "palkia": "Palkia", - "heatran": "Heatran", - "regigigas": "Regigigas", - "giratina": "Giratina", - "cresselia": "Cresselia", - "phione": "Phione", - "manaphy": "Manaphy", - "darkrai": "Darkrai", - "shaymin": "Shaymin", - "arceus": "Arceus", - "victini": "Victini", - "snivy": "Snivy", - "servine": "Servine", - "serperior": "Serperior", - "tepig": "Tepig", - "pignite": "Pignite", - "emboar": "Emboar", - "oshawott": "Oshawott", - "dewott": "Dewott", - "samurott": "Samurott", - "patrat": "Patrat", - "watchog": "Watchog", - "lillipup": "Lillipup", - "herdier": "Herdier", - "stoutland": "Stoutland", - "purrloin": "Purrloin", - "liepard": "Liepard", - "pansage": "Pansage", - "simisage": "Simisage", - "pansear": "Pansear", - "simisear": "Simisear", - "panpour": "Panpour", - "simipour": "Simipour", - "munna": "Munna", - "musharna": "Musharna", - "pidove": "Pidove", - "tranquill": "Tranquill", - "unfezant": "Unfezant", - "blitzle": "Blitzle", - "zebstrika": "Zebstrika", - "roggenrola": "Roggenrola", - "boldore": "Boldore", - "gigalith": "Gigalith", - "woobat": "Woobat", - "swoobat": "Swoobat", - "drilbur": "Drilbur", - "excadrill": "Excadrill", - "audino": "Audino", - "timburr": "Timburr", - "gurdurr": "Gurdurr", - "conkeldurr": "Conkeldurr", - "tympole": "Tympole", - "palpitoad": "Palpitoad", - "seismitoad": "Seismitoad", - "throh": "Throh", - "sawk": "Sawk", - "sewaddle": "Sewaddle", - "swadloon": "Swadloon", - "leavanny": "Leavanny", - "venipede": "Venipede", - "whirlipede": "Whirlipede", - "scolipede": "Scolipede", - "cottonee": "Cottonee", - "whimsicott": "Whimsicott", - "petilil": "Petilil", - "lilligant": "Lilligant", - "basculin": "Basculin", - "sandile": "Sandile", - "krokorok": "Krokorok", - "krookodile": "Krookodile", - "darumaka": "Darumaka", - "darmanitan": "Darmanitan", - "maractus": "Maractus", - "dwebble": "Dwebble", - "crustle": "Crustle", - "scraggy": "Scraggy", - "scrafty": "Scrafty", - "sigilyph": "Sigilyph", - "yamask": "Yamask", - "cofagrigus": "Cofagrigus", - "tirtouga": "Tirtouga", - "carracosta": "Carracosta", - "archen": "Archen", - "archeops": "Archeops", - "trubbish": "Trubbish", - "garbodor": "Garbodor", - "zorua": "Zorua", - "zoroark": "Zoroark", - "minccino": "Minccino", - "cinccino": "Cinccino", - "gothita": "Gothita", - "gothorita": "Gothorita", - "gothitelle": "Gothitelle", - "solosis": "Solosis", - "duosion": "Duosion", - "reuniclus": "Reuniclus", - "ducklett": "Ducklett", - "swanna": "Swanna", - "vanillite": "Vanillite", - "vanillish": "Vanillish", - "vanilluxe": "Vanilluxe", - "deerling": "Deerling", - "sawsbuck": "Sawsbuck", - "emolga": "Emolga", - "karrablast": "Karrablast", - "escavalier": "Escavalier", - "foongus": "Foongus", - "amoonguss": "Amoonguss", - "frillish": "Frillish", - "jellicent": "Jellicent", - "alomomola": "Alomomola", - "joltik": "Joltik", - "galvantula": "Galvantula", - "ferroseed": "Ferroseed", - "ferrothorn": "Ferrothorn", - "klink": "Klink", - "klang": "Klang", - "klinklang": "Klinklang", - "tynamo": "Tynamo", - "eelektrik": "Eelektrik", - "eelektross": "Eelektross", - "elgyem": "Elgyem", - "beheeyem": "Beheeyem", - "litwick": "Litwick", - "lampent": "Lampent", - "chandelure": "Chandelure", - "axew": "Axew", - "fraxure": "Fraxure", - "haxorus": "Haxorus", - "cubchoo": "Cubchoo", - "beartic": "Beartic", - "cryogonal": "Cryogonal", - "shelmet": "Shelmet", - "accelgor": "Accelgor", - "stunfisk": "Stunfisk", - "mienfoo": "Mienfoo", - "mienshao": "Mienshao", - "druddigon": "Druddigon", - "golett": "Golett", - "golurk": "Golurk", - "pawniard": "Pawniard", - "bisharp": "Bisharp", - "bouffalant": "Bouffalant", - "rufflet": "Rufflet", - "braviary": "Braviary", - "vullaby": "Vullaby", - "mandibuzz": "Mandibuzz", - "heatmor": "Heatmor", - "durant": "Durant", - "deino": "Deino", - "zweilous": "Zweilous", - "hydreigon": "Hydreigon", - "larvesta": "Larvesta", - "volcarona": "Volcarona", - "cobalion": "Cobalion", - "terrakion": "Terrakion", - "virizion": "Virizion", - "tornadus": "Tornadus", - "thundurus": "Thundurus", - "reshiram": "Reshiram", - "zekrom": "Zekrom", - "landorus": "Landorus", - "kyurem": "Kyurem", - "keldeo": "Keldeo", - "meloetta": "Meloetta", - "genesect": "Genesect", - "chespin": "Chespin", - "quilladin": "Quilladin", - "chesnaught": "Chesnaught", - "fennekin": "Fennekin", - "braixen": "Braixen", - "delphox": "Delphox", - "froakie": "Froakie", - "frogadier": "Frogadier", - "greninja": "Greninja", - "bunnelby": "Bunnelby", - "diggersby": "Diggersby", - "fletchling": "Fletchling", - "fletchinder": "Fletchinder", - "talonflame": "Talonflame", - "scatterbug": "Scatterbug", - "spewpa": "Spewpa", - "vivillon": "Vivillon", - "litleo": "Litleo", - "pyroar": "Pyroar", - "flabebe": "Flabébé", - "floette": "Floette", - "florges": "Florges", - "skiddo": "Skiddo", - "gogoat": "Gogoat", - "pancham": "Pancham", - "pangoro": "Pangoro", - "furfrou": "Furfrou", - "espurr": "Espurr", - "meowstic": "Meowstic", - "honedge": "Honedge", - "doublade": "Doublade", - "aegislash": "Aegislash", - "spritzee": "Spritzee", - "aromatisse": "Aromatisse", - "swirlix": "Swirlix", - "slurpuff": "Slurpuff", - "inkay": "Inkay", - "malamar": "Malamar", - "binacle": "Binacle", - "barbaracle": "Barbaracle", - "skrelp": "Skrelp", - "dragalge": "Dragalge", - "clauncher": "Clauncher", - "clawitzer": "Clawitzer", - "helioptile": "Helioptile", - "heliolisk": "Heliolisk", - "tyrunt": "Tyrunt", - "tyrantrum": "Tyrantrum", - "amaura": "Amaura", - "aurorus": "Aurorus", - "sylveon": "Sylveon", - "hawlucha": "Hawlucha", - "dedenne": "Dedenne", - "carbink": "Carbink", - "goomy": "Goomy", - "sliggoo": "Sliggoo", - "goodra": "Goodra", - "klefki": "Klefki", - "phantump": "Phantump", - "trevenant": "Trevenant", - "pumpkaboo": "Pumpkaboo", - "gourgeist": "Gourgeist", - "bergmite": "Bergmite", - "avalugg": "Avalugg", - "noibat": "Noibat", - "noivern": "Noivern", - "xerneas": "Xerneas", - "yveltal": "Yveltal", - "zygarde": "Zygarde", - "diancie": "Diancie", - "hoopa": "Hoopa", - "volcanion": "Volcanion", - "rowlet": "Rowlet", - "dartrix": "Dartrix", - "decidueye": "Decidueye", - "litten": "Litten", - "torracat": "Torracat", - "incineroar": "Incineroar", - "popplio": "Popplio", - "brionne": "Brionne", - "primarina": "Primarina", - "pikipek": "Pikipek", - "trumbeak": "Trumbeak", - "toucannon": "Toucannon", - "yungoos": "Yungoos", - "gumshoos": "Gumshoos", - "grubbin": "Grubbin", - "charjabug": "Charjabug", - "vikavolt": "Vikavolt", - "crabrawler": "Crabrawler", - "crabominable": "Crabominable", - "oricorio": "Oricorio", - "cutiefly": "Cutiefly", - "ribombee": "Ribombee", - "rockruff": "Rockruff", - "lycanroc": "Lycanroc", - "wishiwashi": "Wishiwashi", - "mareanie": "Mareanie", - "toxapex": "Toxapex", - "mudbray": "Mudbray", - "mudsdale": "Mudsdale", - "dewpider": "Dewpider", - "araquanid": "Araquanid", - "fomantis": "Fomantis", - "lurantis": "Lurantis", - "morelull": "Morelull", - "shiinotic": "Shiinotic", - "salandit": "Salandit", - "salazzle": "Salazzle", - "stufful": "Stufful", - "bewear": "Bewear", - "bounsweet": "Bounsweet", - "steenee": "Steenee", - "tsareena": "Tsareena", - "comfey": "Comfey", - "oranguru": "Oranguru", - "passimian": "Passimian", - "wimpod": "Wimpod", - "golisopod": "Golisopod", - "sandygast": "Sandygast", - "palossand": "Palossand", - "pyukumuku": "Pyukumuku", - "type_null": "Código Cero", - "silvally": "Silvally", - "minior": "Minior", - "komala": "Komala", - "turtonator": "Turtonator", - "togedemaru": "Togedemaru", - "mimikyu": "Mimikyu", - "bruxish": "Bruxish", - "drampa": "Drampa", - "dhelmise": "Dhelmise", - "jangmo_o": "Jangmo-o", - "hakamo_o": "Hakamo-o", - "kommo_o": "Kommo-o", - "tapu_koko": "Tapu Koko", - "tapu_lele": "Tapu Lele", - "tapu_bulu": "Tapu Bulu", - "tapu_fini": "Tapu Fini", - "cosmog": "Cosmog", - "cosmoem": "Cosmoem", - "solgaleo": "Solgaleo", - "lunala": "Lunala", - "nihilego": "Nihilego", - "buzzwole": "Buzzwole", - "pheromosa": "Pheromosa", - "xurkitree": "Xurkitree", - "celesteela": "Celesteela", - "kartana": "Kartana", - "guzzlord": "Guzzlord", - "necrozma": "Necrozma", - "magearna": "Magearna", - "marshadow": "Marshadow", - "poipole": "Poipole", - "naganadel": "Naganadel", - "stakataka": "Stakataka", - "blacephalon": "Blacephalon", - "zeraora": "Zeraora", - "meltan": "Meltan", - "melmetal": "Melmetal", - "grookey": "Grookey", - "thwackey": "Thwackey", - "rillaboom": "Rillaboom", - "scorbunny": "Scorbunny", - "raboot": "Raboot", - "cinderace": "Cinderace", - "sobble": "Sobble", - "drizzile": "Drizzile", - "inteleon": "Inteleon", - "skwovet": "Skwovet", - "greedent": "Greedent", - "rookidee": "Rookidee", - "corvisquire": "Corvisquire", - "corviknight": "Corviknight", - "blipbug": "Blipbug", - "dottler": "Dottler", - "orbeetle": "Orbeetle", - "nickit": "Nickit", - "thievul": "Thievul", - "gossifleur": "Gossifleur", - "eldegoss": "Eldegoss", - "wooloo": "Wooloo", - "dubwool": "Dubwool", - "chewtle": "Chewtle", - "drednaw": "Drednaw", - "yamper": "Yamper", - "boltund": "Boltund", - "rolycoly": "Rolycoly", - "carkol": "Carkol", - "coalossal": "Coalossal", - "applin": "Applin", - "flapple": "Flapple", - "appletun": "Appletun", - "silicobra": "Silicobra", - "sandaconda": "Sandaconda", - "cramorant": "Cramorant", - "arrokuda": "Arrokuda", - "barraskewda": "Barraskewda", - "toxel": "Toxel", - "toxtricity": "Toxtricity", - "sizzlipede": "Sizzlipede", - "centiskorch": "Centiskorch", - "clobbopus": "Clobbopus", - "grapploct": "Grapploct", - "sinistea": "Sinistea", - "polteageist": "Polteageist", - "hatenna": "Hatenna", - "hattrem": "Hattrem", - "hatterene": "Hatterene", - "impidimp": "Impidimp", - "morgrem": "Morgrem", - "grimmsnarl": "Grimmsnarl", - "obstagoon": "Obstagoon", - "perrserker": "Perrserker", - "cursola": "Cursola", - "sirfetchd": "Sirfetch'd", - "mr_rime": "Mr. Rime", - "runerigus": "Runerigus", - "milcery": "Milcery", - "alcremie": "Alcremie", - "falinks": "Falinks", - "pincurchin": "Pincurchin", - "snom": "Snom", - "frosmoth": "Frosmoth", - "stonjourner": "Stonjourner", - "eiscue": "Eiscue", - "indeedee": "Indeedee", - "morpeko": "Morpeko", - "cufant": "Cufant", - "copperajah": "Copperajah", - "dracozolt": "Dracozolt", - "arctozolt": "Arctozolt", - "dracovish": "Dracovish", - "arctovish": "Arctovish", - "duraludon": "Duraludon", - "dreepy": "Dreepy", - "drakloak": "Drakloak", - "dragapult": "Dragapult", - "zacian": "Zacian", - "zamazenta": "Zamazenta", - "eternatus": "Eternatus", - "kubfu": "Kubfu", - "urshifu": "Urshifu", - "zarude": "Zarude", - "regieleki": "Regieleki", - "regidrago": "Regidrago", - "glastrier": "Glastrier", - "spectrier": "Spectrier", - "calyrex": "Calyrex", - "wyrdeer": "Wyrdeer", - "kleavor": "Kleavor", - "ursaluna": "Ursaluna", - "basculegion": "Basculegion", - "sneasler": "Sneasler", - "overqwil": "Overqwil", - "enamorus": "Enamorus", - "sprigatito": "Sprigatito", - "floragato": "Floragato", - "meowscarada": "Meowscarada", - "fuecoco": "Fuecoco", - "crocalor": "Crocalor", - "skeledirge": "Skeledirge", - "quaxly": "Quaxly", - "quaxwell": "Quaxwell", - "quaquaval": "Quaquaval", - "lechonk": "Lechonk", - "oinkologne": "Oinkologne", - "tarountula": "Tarountula", - "spidops": "Spidops", - "nymble": "Nymble", - "lokix": "Lokix", - "pawmi": "Pawmi", - "pawmo": "Pawmo", - "pawmot": "Pawmot", - "tandemaus": "Tandemaus", - "maushold": "Maushold", - "fidough": "Fidough", - "dachsbun": "Dachsbun", - "smoliv": "Smoliv", - "dolliv": "Dolliv", - "arboliva": "Arboliva", - "squawkabilly": "Squawkabilly", - "nacli": "Nacli", - "naclstack": "Naclstack", - "garganacl": "Garganacl", - "charcadet": "Charcadet", - "armarouge": "Armarouge", - "ceruledge": "Ceruledge", - "tadbulb": "Tadbulb", - "bellibolt": "Bellibolt", - "wattrel": "Wattrel", - "kilowattrel": "Kilowattrel", - "maschiff": "Maschiff", - "mabosstiff": "Mabosstiff", - "shroodle": "Shroodle", - "grafaiai": "Grafaiai", - "bramblin": "Bramblin", - "brambleghast": "Brambleghast", - "toedscool": "Toedscool", - "toedscruel": "Toedscruel", - "klawf": "Klawf", - "capsakid": "Capsakid", - "scovillain": "Scovillain", - "rellor": "Rellor", - "rabsca": "Rabsca", - "flittle": "Flittle", - "espathra": "Espathra", - "tinkatink": "Tinkatink", - "tinkatuff": "Tinkatuff", - "tinkaton": "Tinkaton", - "wiglett": "Wiglett", - "wugtrio": "Wugtrio", - "bombirdier": "Bombirdier", - "finizen": "Finizen", - "palafin": "Palafin", - "varoom": "Varoom", - "revavroom": "Revavroom", - "cyclizar": "Cyclizar", - "orthworm": "Orthworm", - "glimmet": "Glimmet", - "glimmora": "Glimmora", - "greavard": "Greavard", - "houndstone": "Houndstone", - "flamigo": "Flamigo", - "cetoddle": "Cetoddle", - "cetitan": "Cetitan", - "veluza": "Veluza", - "dondozo": "Dondozo", - "tatsugiri": "Tatsugiri", - "annihilape": "Annihilape", - "clodsire": "Clodsire", - "farigiraf": "Farigiraf", - "dudunsparce": "Dudunsparce", - "kingambit": "Kingambit", - "great_tusk": "Colmilargo", - "scream_tail": "Colagrito", - "brute_bonnet": "Furioseta", - "flutter_mane": "Melenaleteo", - "slither_wing": "Reptalada", - "sandy_shocks": "Pelarena", - "iron_treads": "Ferrodada", - "iron_bundle": "Ferrosaco", - "iron_hands": "Ferropalmas", - "iron_jugulis": "Ferrocuello", - "iron_moth": "Ferropolilla", - "iron_thorns": "Ferropúas", - "frigibax": "Frigibax", - "arctibax": "Arctibax", - "baxcalibur": "Baxcalibur", - "gimmighoul": "Gimmighoul", - "gholdengo": "Gholdengo", - "wo_chien": "Wo-Chien", - "chien_pao": "Chien-Pao", - "ting_lu": "Ting-Lu", - "chi_yu": "Chi-Yu", - "roaring_moon": "Bramaluna", - "iron_valiant": "Ferropaladín", - "koraidon": "Koraidon", - "miraidon": "Miraidon", - "walking_wake": "Ondulagua", - "iron_leaves": "Ferroverdor", - "dipplin": "Dipplin", - "poltchageist": "Poltchageist", - "sinistcha": "Sinistcha", - "okidogi": "Okidogi", - "munkidori": "Munkidori", - "fezandipiti": "Fezandipiti", - "ogerpon": "Ogerpon", - "archaludon": "Archaludon", - "hydrapple": "Hydrapple", - "gouging_fire": "Flamariete", - "raging_bolt": "Electrofuria", - "iron_boulder": "Ferromole", - "iron_crown": "Ferrotesta", - "terapagos": "Terapagos", - "pecharunt": "Pecharunt", - "alola_rattata": "Rattata", - "alola_raticate": "Raticate", - "alola_raichu": "Raichu", - "alola_sandshrew": "Sandshrew", - "alola_sandslash": "Sandslash", - "alola_vulpix": "Vulpix", - "alola_ninetales": "Ninetales", - "alola_diglett": "Diglett", - "alola_dugtrio": "Dugtrio", - "alola_meowth": "Meowth", - "alola_persian": "Persian", - "alola_geodude": "Geodude", - "alola_graveler": "Graveler", - "alola_golem": "Golem", - "alola_grimer": "Grimer", - "alola_muk": "Muk", - "alola_exeggutor": "Exeggutor", - "alola_marowak": "Marowak", - "eternal_floette": "Floette", - "galar_meowth": "Meowth", - "galar_ponyta": "Ponyta", - "galar_rapidash": "Rapidash", - "galar_slowpoke": "Slowpoke", - "galar_slowbro": "Slowbro", - "galar_farfetchd": "Farfetch'd", - "galar_weezing": "Weezing", - "galar_mr_mime": "Mr. Mime", - "galar_articuno": "Articuno", - "galar_zapdos": "Zapdos", - "galar_moltres": "Moltres", - "galar_slowking": "Slowking", - "galar_corsola": "Corsola", - "galar_zigzagoon": "Zigzagoon", - "galar_linoone": "Linoone", - "galar_darumaka": "Darumaka", - "galar_darmanitan": "Darmanitan", - "galar_yamask": "Yamask", - "galar_stunfisk": "Stunfisk", - "hisui_growlithe": "Growlithe", - "hisui_arcanine": "Arcanine", - "hisui_voltorb": "Voltorb", - "hisui_electrode": "Electrode", - "hisui_typhlosion": "Typhlosion", - "hisui_qwilfish": "Qwilfish", - "hisui_sneasel": "Sneasel", - "hisui_samurott": "Samurott", - "hisui_lilligant": "Lilligant", - "hisui_zorua": "Zorua", - "hisui_zoroark": "Zoroark", - "hisui_braviary": "Braviary", - "hisui_sliggoo": "Sliggoo", - "hisui_goodra": "Goodra", - "hisui_avalugg": "Avalugg", - "hisui_decidueye": "Decidueye", - "paldea_tauros": "Tauros", - "paldea_wooper": "Wooper", - "bloodmoon_ursaluna": "Ursaluna", + 'bulbasaur': 'Bulbasaur', + 'ivysaur': 'Ivysaur', + 'venusaur': 'Venusaur', + 'charmander': 'Charmander', + 'charmeleon': 'Charmeleon', + 'charizard': 'Charizard', + 'squirtle': 'Squirtle', + 'wartortle': 'Wartortle', + 'blastoise': 'Blastoise', + 'caterpie': 'Caterpie', + 'metapod': 'Metapod', + 'butterfree': 'Butterfree', + 'weedle': 'Weedle', + 'kakuna': 'Kakuna', + 'beedrill': 'Beedrill', + 'pidgey': 'Pidgey', + 'pidgeotto': 'Pidgeotto', + 'pidgeot': 'Pidgeot', + 'rattata': 'Rattata', + 'raticate': 'Raticate', + 'spearow': 'Spearow', + 'fearow': 'Fearow', + 'ekans': 'Ekans', + 'arbok': 'Arbok', + 'pikachu': 'Pikachu', + 'raichu': 'Raichu', + 'sandshrew': 'Sandshrew', + 'sandslash': 'Sandslash', + 'nidoran_f': 'Nidoran♀', + 'nidorina': 'Nidorina', + 'nidoqueen': 'Nidoqueen', + 'nidoran_m': 'Nidoran♂', + 'nidorino': 'Nidorino', + 'nidoking': 'Nidoking', + 'clefairy': 'Clefairy', + 'clefable': 'Clefable', + 'vulpix': 'Vulpix', + 'ninetales': 'Ninetales', + 'jigglypuff': 'Jigglypuff', + 'wigglytuff': 'Wigglytuff', + 'zubat': 'Zubat', + 'golbat': 'Golbat', + 'oddish': 'Oddish', + 'gloom': 'Gloom', + 'vileplume': 'Vileplume', + 'paras': 'Paras', + 'parasect': 'Parasect', + 'venonat': 'Venonat', + 'venomoth': 'Venomoth', + 'diglett': 'Diglett', + 'dugtrio': 'Dugtrio', + 'meowth': 'Meowth', + 'persian': 'Persian', + 'psyduck': 'Psyduck', + 'golduck': 'Golduck', + 'mankey': 'Mankey', + 'primeape': 'Primeape', + 'growlithe': 'Growlithe', + 'arcanine': 'Arcanine', + 'poliwag': 'Poliwag', + 'poliwhirl': 'Poliwhirl', + 'poliwrath': 'Poliwrath', + 'abra': 'Abra', + 'kadabra': 'Kadabra', + 'alakazam': 'Alakazam', + 'machop': 'Machop', + 'machoke': 'Machoke', + 'machamp': 'Machamp', + 'bellsprout': 'Bellsprout', + 'weepinbell': 'Weepinbell', + 'victreebel': 'Victreebel', + 'tentacool': 'Tentacool', + 'tentacruel': 'Tentacruel', + 'geodude': 'Geodude', + 'graveler': 'Graveler', + 'golem': 'Golem', + 'ponyta': 'Ponyta', + 'rapidash': 'Rapidash', + 'slowpoke': 'Slowpoke', + 'slowbro': 'Slowbro', + 'magnemite': 'Magnemite', + 'magneton': 'Magneton', + 'farfetchd': 'Farfetch\'d', + 'doduo': 'Doduo', + 'dodrio': 'Dodrio', + 'seel': 'Seel', + 'dewgong': 'Dewgong', + 'grimer': 'Grimer', + 'muk': 'Muk', + 'shellder': 'Shellder', + 'cloyster': 'Cloyster', + 'gastly': 'Gastly', + 'haunter': 'Haunter', + 'gengar': 'Gengar', + 'onix': 'Onix', + 'drowzee': 'Drowzee', + 'hypno': 'Hypno', + 'krabby': 'Krabby', + 'kingler': 'Kingler', + 'voltorb': 'Voltorb', + 'electrode': 'Electrode', + 'exeggcute': 'Exeggcute', + 'exeggutor': 'Exeggutor', + 'cubone': 'Cubone', + 'marowak': 'Marowak', + 'hitmonlee': 'Hitmonlee', + 'hitmonchan': 'Hitmonchan', + 'lickitung': 'Lickitung', + 'koffing': 'Koffing', + 'weezing': 'Weezing', + 'rhyhorn': 'Rhyhorn', + 'rhydon': 'Rhydon', + 'chansey': 'Chansey', + 'tangela': 'Tangela', + 'kangaskhan': 'Kangaskhan', + 'horsea': 'Horsea', + 'seadra': 'Seadra', + 'goldeen': 'Goldeen', + 'seaking': 'Seaking', + 'staryu': 'Staryu', + 'starmie': 'Starmie', + 'mr_mime': 'Mr. Mime', + 'scyther': 'Scyther', + 'jynx': 'Jynx', + 'electabuzz': 'Electabuzz', + 'magmar': 'Magmar', + 'pinsir': 'Pinsir', + 'tauros': 'Tauros', + 'magikarp': 'Magikarp', + 'gyarados': 'Gyarados', + 'lapras': 'Lapras', + 'ditto': 'Ditto', + 'eevee': 'Eevee', + 'vaporeon': 'Vaporeon', + 'jolteon': 'Jolteon', + 'flareon': 'Flareon', + 'porygon': 'Porygon', + 'omanyte': 'Omanyte', + 'omastar': 'Omastar', + 'kabuto': 'Kabuto', + 'kabutops': 'Kabutops', + 'aerodactyl': 'Aerodactyl', + 'snorlax': 'Snorlax', + 'articuno': 'Articuno', + 'zapdos': 'Zapdos', + 'moltres': 'Moltres', + 'dratini': 'Dratini', + 'dragonair': 'Dragonair', + 'dragonite': 'Dragonite', + 'mewtwo': 'Mewtwo', + 'mew': 'Mew', + 'chikorita': 'Chikorita', + 'bayleef': 'Bayleef', + 'meganium': 'Meganium', + 'cyndaquil': 'Cyndaquil', + 'quilava': 'Quilava', + 'typhlosion': 'Typhlosion', + 'totodile': 'Totodile', + 'croconaw': 'Croconaw', + 'feraligatr': 'Feraligatr', + 'sentret': 'Sentret', + 'furret': 'Furret', + 'hoothoot': 'Hoothoot', + 'noctowl': 'Noctowl', + 'ledyba': 'Ledyba', + 'ledian': 'Ledian', + 'spinarak': 'Spinarak', + 'ariados': 'Ariados', + 'crobat': 'Crobat', + 'chinchou': 'Chinchou', + 'lanturn': 'Lanturn', + 'pichu': 'Pichu', + 'cleffa': 'Cleffa', + 'igglybuff': 'Igglybuff', + 'togepi': 'Togepi', + 'togetic': 'Togetic', + 'natu': 'Natu', + 'xatu': 'Xatu', + 'mareep': 'Mareep', + 'flaaffy': 'Flaaffy', + 'ampharos': 'Ampharos', + 'bellossom': 'Bellossom', + 'marill': 'Marill', + 'azumarill': 'Azumarill', + 'sudowoodo': 'Sudowoodo', + 'politoed': 'Politoed', + 'hoppip': 'Hoppip', + 'skiploom': 'Skiploom', + 'jumpluff': 'Jumpluff', + 'aipom': 'Aipom', + 'sunkern': 'Sunkern', + 'sunflora': 'Sunflora', + 'yanma': 'Yanma', + 'wooper': 'Wooper', + 'quagsire': 'Quagsire', + 'espeon': 'Espeon', + 'umbreon': 'Umbreon', + 'murkrow': 'Murkrow', + 'slowking': 'Slowking', + 'misdreavus': 'Misdreavus', + 'unown': 'Unown', + 'wobbuffet': 'Wobbuffet', + 'girafarig': 'Girafarig', + 'pineco': 'Pineco', + 'forretress': 'Forretress', + 'dunsparce': 'Dunsparce', + 'gligar': 'Gligar', + 'steelix': 'Steelix', + 'snubbull': 'Snubbull', + 'granbull': 'Granbull', + 'qwilfish': 'Qwilfish', + 'scizor': 'Scizor', + 'shuckle': 'Shuckle', + 'heracross': 'Heracross', + 'sneasel': 'Sneasel', + 'teddiursa': 'Teddiursa', + 'ursaring': 'Ursaring', + 'slugma': 'Slugma', + 'magcargo': 'Magcargo', + 'swinub': 'Swinub', + 'piloswine': 'Piloswine', + 'corsola': 'Corsola', + 'remoraid': 'Remoraid', + 'octillery': 'Octillery', + 'delibird': 'Delibird', + 'mantine': 'Mantine', + 'skarmory': 'Skarmory', + 'houndour': 'Houndour', + 'houndoom': 'Houndoom', + 'kingdra': 'Kingdra', + 'phanpy': 'Phanpy', + 'donphan': 'Donphan', + 'porygon2': 'Porygon2', + 'stantler': 'Stantler', + 'smeargle': 'Smeargle', + 'tyrogue': 'Tyrogue', + 'hitmontop': 'Hitmontop', + 'smoochum': 'Smoochum', + 'elekid': 'Elekid', + 'magby': 'Magby', + 'miltank': 'Miltank', + 'blissey': 'Blissey', + 'raikou': 'Raikou', + 'entei': 'Entei', + 'suicune': 'Suicune', + 'larvitar': 'Larvitar', + 'pupitar': 'Pupitar', + 'tyranitar': 'Tyranitar', + 'lugia': 'Lugia', + 'ho_oh': 'Ho-Oh', + 'celebi': 'Celebi', + 'treecko': 'Treecko', + 'grovyle': 'Grovyle', + 'sceptile': 'Sceptile', + 'torchic': 'Torchic', + 'combusken': 'Combusken', + 'blaziken': 'Blaziken', + 'mudkip': 'Mudkip', + 'marshtomp': 'Marshtomp', + 'swampert': 'Swampert', + 'poochyena': 'Poochyena', + 'mightyena': 'Mightyena', + 'zigzagoon': 'Zigzagoon', + 'linoone': 'Linoone', + 'wurmple': 'Wurmple', + 'silcoon': 'Silcoon', + 'beautifly': 'Beautifly', + 'cascoon': 'Cascoon', + 'dustox': 'Dustox', + 'lotad': 'Lotad', + 'lombre': 'Lombre', + 'ludicolo': 'Ludicolo', + 'seedot': 'Seedot', + 'nuzleaf': 'Nuzleaf', + 'shiftry': 'Shiftry', + 'taillow': 'Taillow', + 'swellow': 'Swellow', + 'wingull': 'Wingull', + 'pelipper': 'Pelipper', + 'ralts': 'Ralts', + 'kirlia': 'Kirlia', + 'gardevoir': 'Gardevoir', + 'surskit': 'Surskit', + 'masquerain': 'Masquerain', + 'shroomish': 'Shroomish', + 'breloom': 'Breloom', + 'slakoth': 'Slakoth', + 'vigoroth': 'Vigoroth', + 'slaking': 'Slaking', + 'nincada': 'Nincada', + 'ninjask': 'Ninjask', + 'shedinja': 'Shedinja', + 'whismur': 'Whismur', + 'loudred': 'Loudred', + 'exploud': 'Exploud', + 'makuhita': 'Makuhita', + 'hariyama': 'Hariyama', + 'azurill': 'Azurill', + 'nosepass': 'Nosepass', + 'skitty': 'Skitty', + 'delcatty': 'Delcatty', + 'sableye': 'Sableye', + 'mawile': 'Mawile', + 'aron': 'Aron', + 'lairon': 'Lairon', + 'aggron': 'Aggron', + 'meditite': 'Meditite', + 'medicham': 'Medicham', + 'electrike': 'Electrike', + 'manectric': 'Manectric', + 'plusle': 'Plusle', + 'minun': 'Minun', + 'volbeat': 'Volbeat', + 'illumise': 'Illumise', + 'roselia': 'Roselia', + 'gulpin': 'Gulpin', + 'swalot': 'Swalot', + 'carvanha': 'Carvanha', + 'sharpedo': 'Sharpedo', + 'wailmer': 'Wailmer', + 'wailord': 'Wailord', + 'numel': 'Numel', + 'camerupt': 'Camerupt', + 'torkoal': 'Torkoal', + 'spoink': 'Spoink', + 'grumpig': 'Grumpig', + 'spinda': 'Spinda', + 'trapinch': 'Trapinch', + 'vibrava': 'Vibrava', + 'flygon': 'Flygon', + 'cacnea': 'Cacnea', + 'cacturne': 'Cacturne', + 'swablu': 'Swablu', + 'altaria': 'Altaria', + 'zangoose': 'Zangoose', + 'seviper': 'Seviper', + 'lunatone': 'Lunatone', + 'solrock': 'Solrock', + 'barboach': 'Barboach', + 'whiscash': 'Whiscash', + 'corphish': 'Corphish', + 'crawdaunt': 'Crawdaunt', + 'baltoy': 'Baltoy', + 'claydol': 'Claydol', + 'lileep': 'Lileep', + 'cradily': 'Cradily', + 'anorith': 'Anorith', + 'armaldo': 'Armaldo', + 'feebas': 'Feebas', + 'milotic': 'Milotic', + 'castform': 'Castform', + 'kecleon': 'Kecleon', + 'shuppet': 'Shuppet', + 'banette': 'Banette', + 'duskull': 'Duskull', + 'dusclops': 'Dusclops', + 'tropius': 'Tropius', + 'chimecho': 'Chimecho', + 'absol': 'Absol', + 'wynaut': 'Wynaut', + 'snorunt': 'Snorunt', + 'glalie': 'Glalie', + 'spheal': 'Spheal', + 'sealeo': 'Sealeo', + 'walrein': 'Walrein', + 'clamperl': 'Clamperl', + 'huntail': 'Huntail', + 'gorebyss': 'Gorebyss', + 'relicanth': 'Relicanth', + 'luvdisc': 'Luvdisc', + 'bagon': 'Bagon', + 'shelgon': 'Shelgon', + 'salamence': 'Salamence', + 'beldum': 'Beldum', + 'metang': 'Metang', + 'metagross': 'Metagross', + 'regirock': 'Regirock', + 'regice': 'Regice', + 'registeel': 'Registeel', + 'latias': 'Latias', + 'latios': 'Latios', + 'kyogre': 'Kyogre', + 'groudon': 'Groudon', + 'rayquaza': 'Rayquaza', + 'jirachi': 'Jirachi', + 'deoxys': 'Deoxys', + 'turtwig': 'Turtwig', + 'grotle': 'Grotle', + 'torterra': 'Torterra', + 'chimchar': 'Chimchar', + 'monferno': 'Monferno', + 'infernape': 'Infernape', + 'piplup': 'Piplup', + 'prinplup': 'Prinplup', + 'empoleon': 'Empoleon', + 'starly': 'Starly', + 'staravia': 'Staravia', + 'staraptor': 'Staraptor', + 'bidoof': 'Bidoof', + 'bibarel': 'Bibarel', + 'kricketot': 'Kricketot', + 'kricketune': 'Kricketune', + 'shinx': 'Shinx', + 'luxio': 'Luxio', + 'luxray': 'Luxray', + 'budew': 'Budew', + 'roserade': 'Roserade', + 'cranidos': 'Cranidos', + 'rampardos': 'Rampardos', + 'shieldon': 'Shieldon', + 'bastiodon': 'Bastiodon', + 'burmy': 'Burmy', + 'wormadam': 'Wormadam', + 'mothim': 'Mothim', + 'combee': 'Combee', + 'vespiquen': 'Vespiquen', + 'pachirisu': 'Pachirisu', + 'buizel': 'Buizel', + 'floatzel': 'Floatzel', + 'cherubi': 'Cherubi', + 'cherrim': 'Cherrim', + 'shellos': 'Shellos', + 'gastrodon': 'Gastrodon', + 'ambipom': 'Ambipom', + 'drifloon': 'Drifloon', + 'drifblim': 'Drifblim', + 'buneary': 'Buneary', + 'lopunny': 'Lopunny', + 'mismagius': 'Mismagius', + 'honchkrow': 'Honchkrow', + 'glameow': 'Glameow', + 'purugly': 'Purugly', + 'chingling': 'Chingling', + 'stunky': 'Stunky', + 'skuntank': 'Skuntank', + 'bronzor': 'Bronzor', + 'bronzong': 'Bronzong', + 'bonsly': 'Bonsly', + 'mime_jr': 'Mime Jr.', + 'happiny': 'Happiny', + 'chatot': 'Chatot', + 'spiritomb': 'Spiritomb', + 'gible': 'Gible', + 'gabite': 'Gabite', + 'garchomp': 'Garchomp', + 'munchlax': 'Munchlax', + 'riolu': 'Riolu', + 'lucario': 'Lucario', + 'hippopotas': 'Hippopotas', + 'hippowdon': 'Hippowdon', + 'skorupi': 'Skorupi', + 'drapion': 'Drapion', + 'croagunk': 'Croagunk', + 'toxicroak': 'Toxicroak', + 'carnivine': 'Carnivine', + 'finneon': 'Finneon', + 'lumineon': 'Lumineon', + 'mantyke': 'Mantyke', + 'snover': 'Snover', + 'abomasnow': 'Abomasnow', + 'weavile': 'Weavile', + 'magnezone': 'Magnezone', + 'lickilicky': 'Lickilicky', + 'rhyperior': 'Rhyperior', + 'tangrowth': 'Tangrowth', + 'electivire': 'Electivire', + 'magmortar': 'Magmortar', + 'togekiss': 'Togekiss', + 'yanmega': 'Yanmega', + 'leafeon': 'Leafeon', + 'glaceon': 'Glaceon', + 'gliscor': 'Gliscor', + 'mamoswine': 'Mamoswine', + 'porygon_z': 'Porygon-Z', + 'gallade': 'Gallade', + 'probopass': 'Probopass', + 'dusknoir': 'Dusknoir', + 'froslass': 'Froslass', + 'rotom': 'Rotom', + 'uxie': 'Uxie', + 'mesprit': 'Mesprit', + 'azelf': 'Azelf', + 'dialga': 'Dialga', + 'palkia': 'Palkia', + 'heatran': 'Heatran', + 'regigigas': 'Regigigas', + 'giratina': 'Giratina', + 'cresselia': 'Cresselia', + 'phione': 'Phione', + 'manaphy': 'Manaphy', + 'darkrai': 'Darkrai', + 'shaymin': 'Shaymin', + 'arceus': 'Arceus', + 'victini': 'Victini', + 'snivy': 'Snivy', + 'servine': 'Servine', + 'serperior': 'Serperior', + 'tepig': 'Tepig', + 'pignite': 'Pignite', + 'emboar': 'Emboar', + 'oshawott': 'Oshawott', + 'dewott': 'Dewott', + 'samurott': 'Samurott', + 'patrat': 'Patrat', + 'watchog': 'Watchog', + 'lillipup': 'Lillipup', + 'herdier': 'Herdier', + 'stoutland': 'Stoutland', + 'purrloin': 'Purrloin', + 'liepard': 'Liepard', + 'pansage': 'Pansage', + 'simisage': 'Simisage', + 'pansear': 'Pansear', + 'simisear': 'Simisear', + 'panpour': 'Panpour', + 'simipour': 'Simipour', + 'munna': 'Munna', + 'musharna': 'Musharna', + 'pidove': 'Pidove', + 'tranquill': 'Tranquill', + 'unfezant': 'Unfezant', + 'blitzle': 'Blitzle', + 'zebstrika': 'Zebstrika', + 'roggenrola': 'Roggenrola', + 'boldore': 'Boldore', + 'gigalith': 'Gigalith', + 'woobat': 'Woobat', + 'swoobat': 'Swoobat', + 'drilbur': 'Drilbur', + 'excadrill': 'Excadrill', + 'audino': 'Audino', + 'timburr': 'Timburr', + 'gurdurr': 'Gurdurr', + 'conkeldurr': 'Conkeldurr', + 'tympole': 'Tympole', + 'palpitoad': 'Palpitoad', + 'seismitoad': 'Seismitoad', + 'throh': 'Throh', + 'sawk': 'Sawk', + 'sewaddle': 'Sewaddle', + 'swadloon': 'Swadloon', + 'leavanny': 'Leavanny', + 'venipede': 'Venipede', + 'whirlipede': 'Whirlipede', + 'scolipede': 'Scolipede', + 'cottonee': 'Cottonee', + 'whimsicott': 'Whimsicott', + 'petilil': 'Petilil', + 'lilligant': 'Lilligant', + 'basculin': 'Basculin', + 'sandile': 'Sandile', + 'krokorok': 'Krokorok', + 'krookodile': 'Krookodile', + 'darumaka': 'Darumaka', + 'darmanitan': 'Darmanitan', + 'maractus': 'Maractus', + 'dwebble': 'Dwebble', + 'crustle': 'Crustle', + 'scraggy': 'Scraggy', + 'scrafty': 'Scrafty', + 'sigilyph': 'Sigilyph', + 'yamask': 'Yamask', + 'cofagrigus': 'Cofagrigus', + 'tirtouga': 'Tirtouga', + 'carracosta': 'Carracosta', + 'archen': 'Archen', + 'archeops': 'Archeops', + 'trubbish': 'Trubbish', + 'garbodor': 'Garbodor', + 'zorua': 'Zorua', + 'zoroark': 'Zoroark', + 'minccino': 'Minccino', + 'cinccino': 'Cinccino', + 'gothita': 'Gothita', + 'gothorita': 'Gothorita', + 'gothitelle': 'Gothitelle', + 'solosis': 'Solosis', + 'duosion': 'Duosion', + 'reuniclus': 'Reuniclus', + 'ducklett': 'Ducklett', + 'swanna': 'Swanna', + 'vanillite': 'Vanillite', + 'vanillish': 'Vanillish', + 'vanilluxe': 'Vanilluxe', + 'deerling': 'Deerling', + 'sawsbuck': 'Sawsbuck', + 'emolga': 'Emolga', + 'karrablast': 'Karrablast', + 'escavalier': 'Escavalier', + 'foongus': 'Foongus', + 'amoonguss': 'Amoonguss', + 'frillish': 'Frillish', + 'jellicent': 'Jellicent', + 'alomomola': 'Alomomola', + 'joltik': 'Joltik', + 'galvantula': 'Galvantula', + 'ferroseed': 'Ferroseed', + 'ferrothorn': 'Ferrothorn', + 'klink': 'Klink', + 'klang': 'Klang', + 'klinklang': 'Klinklang', + 'tynamo': 'Tynamo', + 'eelektrik': 'Eelektrik', + 'eelektross': 'Eelektross', + 'elgyem': 'Elgyem', + 'beheeyem': 'Beheeyem', + 'litwick': 'Litwick', + 'lampent': 'Lampent', + 'chandelure': 'Chandelure', + 'axew': 'Axew', + 'fraxure': 'Fraxure', + 'haxorus': 'Haxorus', + 'cubchoo': 'Cubchoo', + 'beartic': 'Beartic', + 'cryogonal': 'Cryogonal', + 'shelmet': 'Shelmet', + 'accelgor': 'Accelgor', + 'stunfisk': 'Stunfisk', + 'mienfoo': 'Mienfoo', + 'mienshao': 'Mienshao', + 'druddigon': 'Druddigon', + 'golett': 'Golett', + 'golurk': 'Golurk', + 'pawniard': 'Pawniard', + 'bisharp': 'Bisharp', + 'bouffalant': 'Bouffalant', + 'rufflet': 'Rufflet', + 'braviary': 'Braviary', + 'vullaby': 'Vullaby', + 'mandibuzz': 'Mandibuzz', + 'heatmor': 'Heatmor', + 'durant': 'Durant', + 'deino': 'Deino', + 'zweilous': 'Zweilous', + 'hydreigon': 'Hydreigon', + 'larvesta': 'Larvesta', + 'volcarona': 'Volcarona', + 'cobalion': 'Cobalion', + 'terrakion': 'Terrakion', + 'virizion': 'Virizion', + 'tornadus': 'Tornadus', + 'thundurus': 'Thundurus', + 'reshiram': 'Reshiram', + 'zekrom': 'Zekrom', + 'landorus': 'Landorus', + 'kyurem': 'Kyurem', + 'keldeo': 'Keldeo', + 'meloetta': 'Meloetta', + 'genesect': 'Genesect', + 'chespin': 'Chespin', + 'quilladin': 'Quilladin', + 'chesnaught': 'Chesnaught', + 'fennekin': 'Fennekin', + 'braixen': 'Braixen', + 'delphox': 'Delphox', + 'froakie': 'Froakie', + 'frogadier': 'Frogadier', + 'greninja': 'Greninja', + 'bunnelby': 'Bunnelby', + 'diggersby': 'Diggersby', + 'fletchling': 'Fletchling', + 'fletchinder': 'Fletchinder', + 'talonflame': 'Talonflame', + 'scatterbug': 'Scatterbug', + 'spewpa': 'Spewpa', + 'vivillon': 'Vivillon', + 'litleo': 'Litleo', + 'pyroar': 'Pyroar', + 'flabebe': 'Flabébé', + 'floette': 'Floette', + 'florges': 'Florges', + 'skiddo': 'Skiddo', + 'gogoat': 'Gogoat', + 'pancham': 'Pancham', + 'pangoro': 'Pangoro', + 'furfrou': 'Furfrou', + 'espurr': 'Espurr', + 'meowstic': 'Meowstic', + 'honedge': 'Honedge', + 'doublade': 'Doublade', + 'aegislash': 'Aegislash', + 'spritzee': 'Spritzee', + 'aromatisse': 'Aromatisse', + 'swirlix': 'Swirlix', + 'slurpuff': 'Slurpuff', + 'inkay': 'Inkay', + 'malamar': 'Malamar', + 'binacle': 'Binacle', + 'barbaracle': 'Barbaracle', + 'skrelp': 'Skrelp', + 'dragalge': 'Dragalge', + 'clauncher': 'Clauncher', + 'clawitzer': 'Clawitzer', + 'helioptile': 'Helioptile', + 'heliolisk': 'Heliolisk', + 'tyrunt': 'Tyrunt', + 'tyrantrum': 'Tyrantrum', + 'amaura': 'Amaura', + 'aurorus': 'Aurorus', + 'sylveon': 'Sylveon', + 'hawlucha': 'Hawlucha', + 'dedenne': 'Dedenne', + 'carbink': 'Carbink', + 'goomy': 'Goomy', + 'sliggoo': 'Sliggoo', + 'goodra': 'Goodra', + 'klefki': 'Klefki', + 'phantump': 'Phantump', + 'trevenant': 'Trevenant', + 'pumpkaboo': 'Pumpkaboo', + 'gourgeist': 'Gourgeist', + 'bergmite': 'Bergmite', + 'avalugg': 'Avalugg', + 'noibat': 'Noibat', + 'noivern': 'Noivern', + 'xerneas': 'Xerneas', + 'yveltal': 'Yveltal', + 'zygarde': 'Zygarde', + 'diancie': 'Diancie', + 'hoopa': 'Hoopa', + 'volcanion': 'Volcanion', + 'rowlet': 'Rowlet', + 'dartrix': 'Dartrix', + 'decidueye': 'Decidueye', + 'litten': 'Litten', + 'torracat': 'Torracat', + 'incineroar': 'Incineroar', + 'popplio': 'Popplio', + 'brionne': 'Brionne', + 'primarina': 'Primarina', + 'pikipek': 'Pikipek', + 'trumbeak': 'Trumbeak', + 'toucannon': 'Toucannon', + 'yungoos': 'Yungoos', + 'gumshoos': 'Gumshoos', + 'grubbin': 'Grubbin', + 'charjabug': 'Charjabug', + 'vikavolt': 'Vikavolt', + 'crabrawler': 'Crabrawler', + 'crabominable': 'Crabominable', + 'oricorio': 'Oricorio', + 'cutiefly': 'Cutiefly', + 'ribombee': 'Ribombee', + 'rockruff': 'Rockruff', + 'lycanroc': 'Lycanroc', + 'wishiwashi': 'Wishiwashi', + 'mareanie': 'Mareanie', + 'toxapex': 'Toxapex', + 'mudbray': 'Mudbray', + 'mudsdale': 'Mudsdale', + 'dewpider': 'Dewpider', + 'araquanid': 'Araquanid', + 'fomantis': 'Fomantis', + 'lurantis': 'Lurantis', + 'morelull': 'Morelull', + 'shiinotic': 'Shiinotic', + 'salandit': 'Salandit', + 'salazzle': 'Salazzle', + 'stufful': 'Stufful', + 'bewear': 'Bewear', + 'bounsweet': 'Bounsweet', + 'steenee': 'Steenee', + 'tsareena': 'Tsareena', + 'comfey': 'Comfey', + 'oranguru': 'Oranguru', + 'passimian': 'Passimian', + 'wimpod': 'Wimpod', + 'golisopod': 'Golisopod', + 'sandygast': 'Sandygast', + 'palossand': 'Palossand', + 'pyukumuku': 'Pyukumuku', + 'type_null': 'Código Cero', + 'silvally': 'Silvally', + 'minior': 'Minior', + 'komala': 'Komala', + 'turtonator': 'Turtonator', + 'togedemaru': 'Togedemaru', + 'mimikyu': 'Mimikyu', + 'bruxish': 'Bruxish', + 'drampa': 'Drampa', + 'dhelmise': 'Dhelmise', + 'jangmo_o': 'Jangmo-o', + 'hakamo_o': 'Hakamo-o', + 'kommo_o': 'Kommo-o', + 'tapu_koko': 'Tapu Koko', + 'tapu_lele': 'Tapu Lele', + 'tapu_bulu': 'Tapu Bulu', + 'tapu_fini': 'Tapu Fini', + 'cosmog': 'Cosmog', + 'cosmoem': 'Cosmoem', + 'solgaleo': 'Solgaleo', + 'lunala': 'Lunala', + 'nihilego': 'Nihilego', + 'buzzwole': 'Buzzwole', + 'pheromosa': 'Pheromosa', + 'xurkitree': 'Xurkitree', + 'celesteela': 'Celesteela', + 'kartana': 'Kartana', + 'guzzlord': 'Guzzlord', + 'necrozma': 'Necrozma', + 'magearna': 'Magearna', + 'marshadow': 'Marshadow', + 'poipole': 'Poipole', + 'naganadel': 'Naganadel', + 'stakataka': 'Stakataka', + 'blacephalon': 'Blacephalon', + 'zeraora': 'Zeraora', + 'meltan': 'Meltan', + 'melmetal': 'Melmetal', + 'grookey': 'Grookey', + 'thwackey': 'Thwackey', + 'rillaboom': 'Rillaboom', + 'scorbunny': 'Scorbunny', + 'raboot': 'Raboot', + 'cinderace': 'Cinderace', + 'sobble': 'Sobble', + 'drizzile': 'Drizzile', + 'inteleon': 'Inteleon', + 'skwovet': 'Skwovet', + 'greedent': 'Greedent', + 'rookidee': 'Rookidee', + 'corvisquire': 'Corvisquire', + 'corviknight': 'Corviknight', + 'blipbug': 'Blipbug', + 'dottler': 'Dottler', + 'orbeetle': 'Orbeetle', + 'nickit': 'Nickit', + 'thievul': 'Thievul', + 'gossifleur': 'Gossifleur', + 'eldegoss': 'Eldegoss', + 'wooloo': 'Wooloo', + 'dubwool': 'Dubwool', + 'chewtle': 'Chewtle', + 'drednaw': 'Drednaw', + 'yamper': 'Yamper', + 'boltund': 'Boltund', + 'rolycoly': 'Rolycoly', + 'carkol': 'Carkol', + 'coalossal': 'Coalossal', + 'applin': 'Applin', + 'flapple': 'Flapple', + 'appletun': 'Appletun', + 'silicobra': 'Silicobra', + 'sandaconda': 'Sandaconda', + 'cramorant': 'Cramorant', + 'arrokuda': 'Arrokuda', + 'barraskewda': 'Barraskewda', + 'toxel': 'Toxel', + 'toxtricity': 'Toxtricity', + 'sizzlipede': 'Sizzlipede', + 'centiskorch': 'Centiskorch', + 'clobbopus': 'Clobbopus', + 'grapploct': 'Grapploct', + 'sinistea': 'Sinistea', + 'polteageist': 'Polteageist', + 'hatenna': 'Hatenna', + 'hattrem': 'Hattrem', + 'hatterene': 'Hatterene', + 'impidimp': 'Impidimp', + 'morgrem': 'Morgrem', + 'grimmsnarl': 'Grimmsnarl', + 'obstagoon': 'Obstagoon', + 'perrserker': 'Perrserker', + 'cursola': 'Cursola', + 'sirfetchd': 'Sirfetch\'d', + 'mr_rime': 'Mr. Rime', + 'runerigus': 'Runerigus', + 'milcery': 'Milcery', + 'alcremie': 'Alcremie', + 'falinks': 'Falinks', + 'pincurchin': 'Pincurchin', + 'snom': 'Snom', + 'frosmoth': 'Frosmoth', + 'stonjourner': 'Stonjourner', + 'eiscue': 'Eiscue', + 'indeedee': 'Indeedee', + 'morpeko': 'Morpeko', + 'cufant': 'Cufant', + 'copperajah': 'Copperajah', + 'dracozolt': 'Dracozolt', + 'arctozolt': 'Arctozolt', + 'dracovish': 'Dracovish', + 'arctovish': 'Arctovish', + 'duraludon': 'Duraludon', + 'dreepy': 'Dreepy', + 'drakloak': 'Drakloak', + 'dragapult': 'Dragapult', + 'zacian': 'Zacian', + 'zamazenta': 'Zamazenta', + 'eternatus': 'Eternatus', + 'kubfu': 'Kubfu', + 'urshifu': 'Urshifu', + 'zarude': 'Zarude', + 'regieleki': 'Regieleki', + 'regidrago': 'Regidrago', + 'glastrier': 'Glastrier', + 'spectrier': 'Spectrier', + 'calyrex': 'Calyrex', + 'wyrdeer': 'Wyrdeer', + 'kleavor': 'Kleavor', + 'ursaluna': 'Ursaluna', + 'basculegion': 'Basculegion', + 'sneasler': 'Sneasler', + 'overqwil': 'Overqwil', + 'enamorus': 'Enamorus', + 'sprigatito': 'Sprigatito', + 'floragato': 'Floragato', + 'meowscarada': 'Meowscarada', + 'fuecoco': 'Fuecoco', + 'crocalor': 'Crocalor', + 'skeledirge': 'Skeledirge', + 'quaxly': 'Quaxly', + 'quaxwell': 'Quaxwell', + 'quaquaval': 'Quaquaval', + 'lechonk': 'Lechonk', + 'oinkologne': 'Oinkologne', + 'tarountula': 'Tarountula', + 'spidops': 'Spidops', + 'nymble': 'Nymble', + 'lokix': 'Lokix', + 'pawmi': 'Pawmi', + 'pawmo': 'Pawmo', + 'pawmot': 'Pawmot', + 'tandemaus': 'Tandemaus', + 'maushold': 'Maushold', + 'fidough': 'Fidough', + 'dachsbun': 'Dachsbun', + 'smoliv': 'Smoliv', + 'dolliv': 'Dolliv', + 'arboliva': 'Arboliva', + 'squawkabilly': 'Squawkabilly', + 'nacli': 'Nacli', + 'naclstack': 'Naclstack', + 'garganacl': 'Garganacl', + 'charcadet': 'Charcadet', + 'armarouge': 'Armarouge', + 'ceruledge': 'Ceruledge', + 'tadbulb': 'Tadbulb', + 'bellibolt': 'Bellibolt', + 'wattrel': 'Wattrel', + 'kilowattrel': 'Kilowattrel', + 'maschiff': 'Maschiff', + 'mabosstiff': 'Mabosstiff', + 'shroodle': 'Shroodle', + 'grafaiai': 'Grafaiai', + 'bramblin': 'Bramblin', + 'brambleghast': 'Brambleghast', + 'toedscool': 'Toedscool', + 'toedscruel': 'Toedscruel', + 'klawf': 'Klawf', + 'capsakid': 'Capsakid', + 'scovillain': 'Scovillain', + 'rellor': 'Rellor', + 'rabsca': 'Rabsca', + 'flittle': 'Flittle', + 'espathra': 'Espathra', + 'tinkatink': 'Tinkatink', + 'tinkatuff': 'Tinkatuff', + 'tinkaton': 'Tinkaton', + 'wiglett': 'Wiglett', + 'wugtrio': 'Wugtrio', + 'bombirdier': 'Bombirdier', + 'finizen': 'Finizen', + 'palafin': 'Palafin', + 'varoom': 'Varoom', + 'revavroom': 'Revavroom', + 'cyclizar': 'Cyclizar', + 'orthworm': 'Orthworm', + 'glimmet': 'Glimmet', + 'glimmora': 'Glimmora', + 'greavard': 'Greavard', + 'houndstone': 'Houndstone', + 'flamigo': 'Flamigo', + 'cetoddle': 'Cetoddle', + 'cetitan': 'Cetitan', + 'veluza': 'Veluza', + 'dondozo': 'Dondozo', + 'tatsugiri': 'Tatsugiri', + 'annihilape': 'Annihilape', + 'clodsire': 'Clodsire', + 'farigiraf': 'Farigiraf', + 'dudunsparce': 'Dudunsparce', + 'kingambit': 'Kingambit', + 'great_tusk': 'Colmilargo', + 'scream_tail': 'Colagrito', + 'brute_bonnet': 'Furioseta', + 'flutter_mane': 'Melenaleteo', + 'slither_wing': 'Reptalada', + 'sandy_shocks': 'Pelarena', + 'iron_treads': 'Ferrodada', + 'iron_bundle': 'Ferrosaco', + 'iron_hands': 'Ferropalmas', + 'iron_jugulis': 'Ferrocuello', + 'iron_moth': 'Ferropolilla', + 'iron_thorns': 'Ferropúas', + 'frigibax': 'Frigibax', + 'arctibax': 'Arctibax', + 'baxcalibur': 'Baxcalibur', + 'gimmighoul': 'Gimmighoul', + 'gholdengo': 'Gholdengo', + 'wo_chien': 'Wo-Chien', + 'chien_pao': 'Chien-Pao', + 'ting_lu': 'Ting-Lu', + 'chi_yu': 'Chi-Yu', + 'roaring_moon': 'Bramaluna', + 'iron_valiant': 'Ferropaladín', + 'koraidon': 'Koraidon', + 'miraidon': 'Miraidon', + 'walking_wake': 'Ondulagua', + 'iron_leaves': 'Ferroverdor', + 'dipplin': 'Dipplin', + 'poltchageist': 'Poltchageist', + 'sinistcha': 'Sinistcha', + 'okidogi': 'Okidogi', + 'munkidori': 'Munkidori', + 'fezandipiti': 'Fezandipiti', + 'ogerpon': 'Ogerpon', + 'archaludon': 'Archaludon', + 'hydrapple': 'Hydrapple', + 'gouging_fire': 'Flamariete', + 'raging_bolt': 'Electrofuria', + 'iron_boulder': 'Ferromole', + 'iron_crown': 'Ferrotesta', + 'terapagos': 'Terapagos', + 'pecharunt': 'Pecharunt', + 'alola_rattata': 'Rattata', + 'alola_raticate': 'Raticate', + 'alola_raichu': 'Raichu', + 'alola_sandshrew': 'Sandshrew', + 'alola_sandslash': 'Sandslash', + 'alola_vulpix': 'Vulpix', + 'alola_ninetales': 'Ninetales', + 'alola_diglett': 'Diglett', + 'alola_dugtrio': 'Dugtrio', + 'alola_meowth': 'Meowth', + 'alola_persian': 'Persian', + 'alola_geodude': 'Geodude', + 'alola_graveler': 'Graveler', + 'alola_golem': 'Golem', + 'alola_grimer': 'Grimer', + 'alola_muk': 'Muk', + 'alola_exeggutor': 'Exeggutor', + 'alola_marowak': 'Marowak', + 'eternal_floette': 'Floette', + 'galar_meowth': 'Meowth', + 'galar_ponyta': 'Ponyta', + 'galar_rapidash': 'Rapidash', + 'galar_slowpoke': 'Slowpoke', + 'galar_slowbro': 'Slowbro', + 'galar_farfetchd': 'Farfetch\'d', + 'galar_weezing': 'Weezing', + 'galar_mr_mime': 'Mr. Mime', + 'galar_articuno': 'Articuno', + 'galar_zapdos': 'Zapdos', + 'galar_moltres': 'Moltres', + 'galar_slowking': 'Slowking', + 'galar_corsola': 'Corsola', + 'galar_zigzagoon': 'Zigzagoon', + 'galar_linoone': 'Linoone', + 'galar_darumaka': 'Darumaka', + 'galar_darmanitan': 'Darmanitan', + 'galar_yamask': 'Yamask', + 'galar_stunfisk': 'Stunfisk', + 'hisui_growlithe': 'Growlithe', + 'hisui_arcanine': 'Arcanine', + 'hisui_voltorb': 'Voltorb', + 'hisui_electrode': 'Electrode', + 'hisui_typhlosion': 'Typhlosion', + 'hisui_qwilfish': 'Qwilfish', + 'hisui_sneasel': 'Sneasel', + 'hisui_samurott': 'Samurott', + 'hisui_lilligant': 'Lilligant', + 'hisui_zorua': 'Zorua', + 'hisui_zoroark': 'Zoroark', + 'hisui_braviary': 'Braviary', + 'hisui_sliggoo': 'Sliggoo', + 'hisui_goodra': 'Goodra', + 'hisui_avalugg': 'Avalugg', + 'hisui_decidueye': 'Decidueye', + 'paldea_tauros': 'Tauros', + 'paldea_wooper': 'Wooper', + 'bloodmoon_ursaluna': 'Ursaluna', } as const; diff --git a/src/locales/es/splash-messages.ts b/src/locales/es/splash-messages.ts index 6815d7f1824..cd62b989c64 100644 --- a/src/locales/es/splash-messages.ts +++ b/src/locales/es/splash-messages.ts @@ -1,37 +1,37 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const splashMessages: SimpleTranslationEntries = { - "battlesWon": "Battles Won!", - "joinTheDiscord": "Join the Discord!", - "infiniteLevels": "Infinite Levels!", - "everythingStacks": "Everything Stacks!", - "optionalSaveScumming": "Optional Save Scumming!", - "biomes": "35 Biomes!", - "openSource": "Open Source!", - "playWithSpeed": "Play with 5x Speed!", - "liveBugTesting": "Live Bug Testing!", - "heavyInfluence": "Heavy RoR2 Influence!", - "pokemonRiskAndPokemonRain": "Pokémon Risk and Pokémon Rain!", - "nowWithMoreSalt": "Now with 33% More Salt!", - "infiniteFusionAtHome": "Infinite Fusion at Home!", - "brokenEggMoves": "Broken Egg Moves!", - "magnificent": "Magnificent!", - "mubstitute": "Mubstitute!", - "thatsCrazy": "That\'s Crazy!", - "oranceJuice": "Orance Juice!", - "questionableBalancing": "Questionable Balancing!", - "coolShaders": "Cool Shaders!", - "aiFree": "AI-Free!", - "suddenDifficultySpikes": "Sudden Difficulty Spikes!", - "basedOnAnUnfinishedFlashGame": "Based on an Unfinished Flash Game!", - "moreAddictiveThanIntended": "More Addictive than Intended!", - "mostlyConsistentSeeds": "Mostly Consistent Seeds!", - "achievementPointsDontDoAnything": "Achievement Points Don\'t Do Anything!", - "youDoNotStartAtLevel": "You Do Not Start at Level 2000!", - "dontTalkAboutTheManaphyEggIncident": "Don\'t Talk About the Manaphy Egg Incident!", - "alsoTryPokengine": "Also Try Pokéngine!", - "alsoTryEmeraldRogue": "Also Try Emerald Rogue!", - "alsoTryRadicalRed": "Also Try Radical Red!", - "eeveeExpo": "Eevee Expo!", - "ynoproject": "YNOproject!", -} as const; \ No newline at end of file + 'battlesWon': 'Battles Won!', + 'joinTheDiscord': 'Join the Discord!', + 'infiniteLevels': 'Infinite Levels!', + 'everythingStacks': 'Everything Stacks!', + 'optionalSaveScumming': 'Optional Save Scumming!', + 'biomes': '35 Biomes!', + 'openSource': 'Open Source!', + 'playWithSpeed': 'Play with 5x Speed!', + 'liveBugTesting': 'Live Bug Testing!', + 'heavyInfluence': 'Heavy RoR2 Influence!', + 'pokemonRiskAndPokemonRain': 'Pokémon Risk and Pokémon Rain!', + 'nowWithMoreSalt': 'Now with 33% More Salt!', + 'infiniteFusionAtHome': 'Infinite Fusion at Home!', + 'brokenEggMoves': 'Broken Egg Moves!', + 'magnificent': 'Magnificent!', + 'mubstitute': 'Mubstitute!', + 'thatsCrazy': 'That\'s Crazy!', + 'oranceJuice': 'Orance Juice!', + 'questionableBalancing': 'Questionable Balancing!', + 'coolShaders': 'Cool Shaders!', + 'aiFree': 'AI-Free!', + 'suddenDifficultySpikes': 'Sudden Difficulty Spikes!', + 'basedOnAnUnfinishedFlashGame': 'Based on an Unfinished Flash Game!', + 'moreAddictiveThanIntended': 'More Addictive than Intended!', + 'mostlyConsistentSeeds': 'Mostly Consistent Seeds!', + 'achievementPointsDontDoAnything': 'Achievement Points Don\'t Do Anything!', + 'youDoNotStartAtLevel': 'You Do Not Start at Level 2000!', + 'dontTalkAboutTheManaphyEggIncident': 'Don\'t Talk About the Manaphy Egg Incident!', + 'alsoTryPokengine': 'Also Try Pokéngine!', + 'alsoTryEmeraldRogue': 'Also Try Emerald Rogue!', + 'alsoTryRadicalRed': 'Also Try Radical Red!', + 'eeveeExpo': 'Eevee Expo!', + 'ynoproject': 'YNOproject!', +} as const; diff --git a/src/locales/es/starter-select-ui-handler.ts b/src/locales/es/starter-select-ui-handler.ts index 79bf6f9476e..cef540e79b0 100644 --- a/src/locales/es/starter-select-ui-handler.ts +++ b/src/locales/es/starter-select-ui-handler.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,39 +6,39 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const starterSelectUiHandler: SimpleTranslationEntries = { - "confirmStartTeam":'¿Comenzar con estos Pokémon?', - "gen1": "I", - "gen2": "II", - "gen3": "III", - "gen4": "IV", - "gen5": "V", - "gen6": "VI", - "gen7": "VII", - "gen8": "VIII", - "gen9": "IX", - "growthRate": "Crecimiento:", - "ability": "Habilid:", - "passive": "Pasiva:", - "nature": "Natur:", - "eggMoves": "Mov. Huevo", - "start": "Iniciar", - "addToParty": "Añadir a Equipo", - "toggleIVs": "Mostrar IVs", - "manageMoves": "Gestionar Movs.", - "useCandies": "Usar Caramelos", - "selectMoveSwapOut": "Elige el movimiento que sustituir.", - "selectMoveSwapWith": "Elige el movimiento que sustituirá a", - "unlockPassive": "Añadir Pasiva", - "reduceCost": "Reducir Coste", - "cycleShiny": "R: Cambiar Shiny", - "cycleForm": 'F: Cambiar Forma', - "cycleGender": 'G: Cambiar Género', - "cycleAbility": 'E: Cambiar Habilidad', - "cycleNature": 'N: Cambiar Naturaleza', - "cycleVariant": 'V: Cambiar Variante', - "enablePassive": "Activar Pasiva", - "disablePassive": "Desactivar Pasiva", - "locked": "Locked", - "disabled": "Disabled", - "uncaught": "Uncaught" -} + 'confirmStartTeam':'¿Comenzar con estos Pokémon?', + 'gen1': 'I', + 'gen2': 'II', + 'gen3': 'III', + 'gen4': 'IV', + 'gen5': 'V', + 'gen6': 'VI', + 'gen7': 'VII', + 'gen8': 'VIII', + 'gen9': 'IX', + 'growthRate': 'Crecimiento:', + 'ability': 'Habilid:', + 'passive': 'Pasiva:', + 'nature': 'Natur:', + 'eggMoves': 'Mov. Huevo', + 'start': 'Iniciar', + 'addToParty': 'Añadir a Equipo', + 'toggleIVs': 'Mostrar IVs', + 'manageMoves': 'Gestionar Movs.', + 'useCandies': 'Usar Caramelos', + 'selectMoveSwapOut': 'Elige el movimiento que sustituir.', + 'selectMoveSwapWith': 'Elige el movimiento que sustituirá a', + 'unlockPassive': 'Añadir Pasiva', + 'reduceCost': 'Reducir Coste', + 'cycleShiny': 'R: Cambiar Shiny', + 'cycleForm': 'F: Cambiar Forma', + 'cycleGender': 'G: Cambiar Género', + 'cycleAbility': 'E: Cambiar Habilidad', + 'cycleNature': 'N: Cambiar Naturaleza', + 'cycleVariant': 'V: Cambiar Variante', + 'enablePassive': 'Activar Pasiva', + 'disablePassive': 'Desactivar Pasiva', + 'locked': 'Locked', + 'disabled': 'Disabled', + 'uncaught': 'Uncaught' +}; diff --git a/src/locales/es/trainers.ts b/src/locales/es/trainers.ts index e0af5aac1c4..da13873a1bd 100644 --- a/src/locales/es/trainers.ts +++ b/src/locales/es/trainers.ts @@ -1,243 +1,243 @@ -import {SimpleTranslationEntries} from "#app/plugins/i18n"; +import {SimpleTranslationEntries} from '#app/plugins/i18n'; // Titles of special trainers like gym leaders, elite four, and the champion export const titles: SimpleTranslationEntries = { - "elite_four": "Elite Four", - "gym_leader": "Gym Leader", - "gym_leader_female": "Gym Leader", - "champion": "Champion", - "rival": "Rival", - "professor": "Professor", - "frontier_brain": "Frontier Brain", - // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. + 'elite_four': 'Elite Four', + 'gym_leader': 'Gym Leader', + 'gym_leader_female': 'Gym Leader', + 'champion': 'Champion', + 'rival': 'Rival', + 'professor': 'Professor', + 'frontier_brain': 'Frontier Brain', + // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. } as const; // Titles of trainers like "Youngster" or "Lass" export const trainerClasses: SimpleTranslationEntries = { - "ace_trainer": "Ace Trainer", - "ace_trainer_female": "Ace Trainer", - "ace_duo": "Ace Duo", - "artist": "Artist", - "artist_female": "Artist", - "backers": "Backers", - "backpacker": "Backpacker", - "backpacker_female": "Backpacker", - "backpackers": "Backpackers", - "baker": "Baker", - "battle_girl": "Battle Girl", - "beauty": "Beauty", - "beginners": "Beginners", - "biker": "Biker", - "black_belt": "Black Belt", - "breeder": "Breeder", - "breeder_female": "Breeder", - "breeders": "Breeders", - "clerk": "Clerk", - "clerk_female": "Clerk", - "colleagues": "Colleagues", - "crush_kin": "Crush Kin", - "cyclist": "Cyclist", - "cyclist_female": "Cyclist", - "cyclists": "Cyclists", - "dancer": "Dancer", - "dancer_female": "Dancer", - "depot_agent": "Depot Agent", - "doctor": "Doctor", - "doctor_female": "Doctor", - "fisherman": "Fisherman", - "fisherman_female": "Fisherman", - "gentleman": "Gentleman", - "guitarist": "Guitarist", - "guitarist_female": "Guitarist", - "harlequin": "Harlequin", - "hiker": "Hiker", - "hooligans": "Hooligans", - "hoopster": "Hoopster", - "infielder": "Infielder", - "janitor": "Janitor", - "lady": "Lady", - "lass": "Lass", - "linebacker": "Linebacker", - "maid": "Maid", - "madame": "Madame", - "medical_team": "Medical Team", - "musician": "Musician", - "hex_maniac": "Hex Maniac", - "nurse": "Nurse", - "nursery_aide": "Nursery Aide", - "officer": "Officer", - "parasol_lady": "Parasol Lady", - "pilot": "Pilot", - "pokéfan": "Poké Fan", - "pokéfan_female": "Poké Fan", - "pokéfan_family": "Poké Fan Family", - "preschooler": "Preschooler", - "preschooler_female": "Preschooler", - "preschoolers": "Preschoolers", - "psychic": "Psychic", - "psychic_female": "Psychic", - "psychics": "Psychics", - "pokémon_ranger": "Pokémon Ranger", - "pokémon_rangers": "Pokémon Ranger", - "ranger": "Ranger", - "restaurant_staff": "Restaurant Staff", - "rich": "Rich", - "rich_female": "Rich", - "rich_boy": "Rich Boy", - "rich_couple": "Rich Couple", - "rich_kid": "Rich Kid", - "rich_kid_female": "Rich Kid", - "rich_kids": "Rich Kids", - "roughneck": "Roughneck", - "scientist": "Scientist", - "scientist_female": "Scientist", - "scientists": "Scientists", - "smasher": "Smasher", - "snow_worker": "Snow Worker", - "snow_worker_female": "Snow Worker", - "striker": "Striker", - "school_kid": "School Kid", - "school_kid_female": "School Kid", - "school_kids": "School Kids", - "swimmer": "Swimmer", - "swimmer_female": "Swimmer", - "swimmers": "Swimmers", - "twins": "Twins", - "veteran": "Veteran", - "veteran_female": "Veteran", - "veteran_duo": "Veteran Duo", - "waiter": "Waiter", - "waitress": "Waitress", - "worker": "Worker", - "worker_female": "Worker", - "workers": "Workers", - "youngster": "Youngster" + 'ace_trainer': 'Ace Trainer', + 'ace_trainer_female': 'Ace Trainer', + 'ace_duo': 'Ace Duo', + 'artist': 'Artist', + 'artist_female': 'Artist', + 'backers': 'Backers', + 'backpacker': 'Backpacker', + 'backpacker_female': 'Backpacker', + 'backpackers': 'Backpackers', + 'baker': 'Baker', + 'battle_girl': 'Battle Girl', + 'beauty': 'Beauty', + 'beginners': 'Beginners', + 'biker': 'Biker', + 'black_belt': 'Black Belt', + 'breeder': 'Breeder', + 'breeder_female': 'Breeder', + 'breeders': 'Breeders', + 'clerk': 'Clerk', + 'clerk_female': 'Clerk', + 'colleagues': 'Colleagues', + 'crush_kin': 'Crush Kin', + 'cyclist': 'Cyclist', + 'cyclist_female': 'Cyclist', + 'cyclists': 'Cyclists', + 'dancer': 'Dancer', + 'dancer_female': 'Dancer', + 'depot_agent': 'Depot Agent', + 'doctor': 'Doctor', + 'doctor_female': 'Doctor', + 'fisherman': 'Fisherman', + 'fisherman_female': 'Fisherman', + 'gentleman': 'Gentleman', + 'guitarist': 'Guitarist', + 'guitarist_female': 'Guitarist', + 'harlequin': 'Harlequin', + 'hiker': 'Hiker', + 'hooligans': 'Hooligans', + 'hoopster': 'Hoopster', + 'infielder': 'Infielder', + 'janitor': 'Janitor', + 'lady': 'Lady', + 'lass': 'Lass', + 'linebacker': 'Linebacker', + 'maid': 'Maid', + 'madame': 'Madame', + 'medical_team': 'Medical Team', + 'musician': 'Musician', + 'hex_maniac': 'Hex Maniac', + 'nurse': 'Nurse', + 'nursery_aide': 'Nursery Aide', + 'officer': 'Officer', + 'parasol_lady': 'Parasol Lady', + 'pilot': 'Pilot', + 'pokéfan': 'Poké Fan', + 'pokéfan_female': 'Poké Fan', + 'pokéfan_family': 'Poké Fan Family', + 'preschooler': 'Preschooler', + 'preschooler_female': 'Preschooler', + 'preschoolers': 'Preschoolers', + 'psychic': 'Psychic', + 'psychic_female': 'Psychic', + 'psychics': 'Psychics', + 'pokémon_ranger': 'Pokémon Ranger', + 'pokémon_rangers': 'Pokémon Ranger', + 'ranger': 'Ranger', + 'restaurant_staff': 'Restaurant Staff', + 'rich': 'Rich', + 'rich_female': 'Rich', + 'rich_boy': 'Rich Boy', + 'rich_couple': 'Rich Couple', + 'rich_kid': 'Rich Kid', + 'rich_kid_female': 'Rich Kid', + 'rich_kids': 'Rich Kids', + 'roughneck': 'Roughneck', + 'scientist': 'Scientist', + 'scientist_female': 'Scientist', + 'scientists': 'Scientists', + 'smasher': 'Smasher', + 'snow_worker': 'Snow Worker', + 'snow_worker_female': 'Snow Worker', + 'striker': 'Striker', + 'school_kid': 'School Kid', + 'school_kid_female': 'School Kid', + 'school_kids': 'School Kids', + 'swimmer': 'Swimmer', + 'swimmer_female': 'Swimmer', + 'swimmers': 'Swimmers', + 'twins': 'Twins', + 'veteran': 'Veteran', + 'veteran_female': 'Veteran', + 'veteran_duo': 'Veteran Duo', + 'waiter': 'Waiter', + 'waitress': 'Waitress', + 'worker': 'Worker', + 'worker_female': 'Worker', + 'workers': 'Workers', + 'youngster': 'Youngster' } as const; // Names of special trainers like gym leaders, elite four, and the champion export const trainerNames: SimpleTranslationEntries = { - "brock": "Brock", - "misty": "Misty", - "lt_surge": "Lt Surge", - "erika": "Erika", - "janine": "Janine", - "sabrina": "Sabrina", - "blaine": "Blaine", - "giovanni": "Giovanni", - "falkner": "Falkner", - "bugsy": "Bugsy", - "whitney": "Whitney", - "morty": "Morty", - "chuck": "Chuck", - "jasmine": "Jasmine", - "pryce": "Pryce", - "clair": "Clair", - "roxanne": "Roxanne", - "brawly": "Brawly", - "wattson": "Wattson", - "flannery": "Flannery", - "norman": "Norman", - "winona": "Winona", - "tate": "Tate", - "liza": "Liza", - "juan": "Juan", - "roark": "Roark", - "gardenia": "Gardenia", - "maylene": "Maylene", - "crasher_wake": "Crasher Wake", - "fantina": "Fantina", - "byron": "Byron", - "candice": "Candice", - "volkner": "Volkner", - "cilan": "Cilan", - "chili": "Chili", - "cress": "Cress", - "cheren": "Cheren", - "lenora": "Lenora", - "roxie": "Roxie", - "burgh": "Burgh", - "elesa": "Elesa", - "clay": "Clay", - "skyla": "Skyla", - "brycen": "Brycen", - "drayden": "Drayden", - "marlon": "Marlon", - "viola": "Viola", - "grant": "Grant", - "korrina": "Korrina", - "ramos": "Ramos", - "clemont": "Clemont", - "valerie": "Valerie", - "olympia": "Olympia", - "wulfric": "Wulfric", - "milo": "Milo", - "nessa": "Nessa", - "kabu": "Kabu", - "bea": "Bea", - "allister": "Allister", - "opal": "Opal", - "bede": "Bede", - "gordie": "Gordie", - "melony": "Melony", - "piers": "Piers", - "marnie": "Marnie", - "raihan": "Raihan", - "katy": "Katy", - "brassius": "Brassius", - "iono": "Iono", - "kofu": "Kofu", - "larry": "Larry", - "ryme": "Ryme", - "tulip": "Tulip", - "grusha": "Grusha", - "lorelei": "Lorelei", - "bruno": "Bruno", - "agatha": "Agatha", - "lance": "Lance", - "will": "Will", - "koga": "Koga", - "karen": "Karen", - "sidney": "Sidney", - "phoebe": "Phoebe", - "glacia": "Glacia", - "drake": "Drake", - "aaron": "Aaron", - "bertha": "Bertha", - "flint": "Flint", - "lucian": "Lucian", - "shauntal": "Shauntal", - "marshal": "Marshal", - "grimsley": "Grimsley", - "caitlin": "Caitlin", - "malva": "Malva", - "siebold": "Siebold", - "wikstrom": "Wikstrom", - "drasna": "Drasna", - "hala": "Hala", - "molayne": "Molayne", - "olivia": "Olivia", - "acerola": "Acerola", - "kahili": "Kahili", - "rika": "Rika", - "poppy": "Poppy", - "hassel": "Hassel", - "crispin": "Crispin", - "amarys": "Amarys", - "lacey": "Lacey", - "drayton": "Drayton", - "blue": "Blue", - "red": "Red", - "steven": "Steven", - "wallace": "Wallace", - "cynthia": "Cynthia", - "alder": "Alder", - "iris": "Iris", - "diantha": "Diantha", - "hau": "Hau", - "geeta": "Geeta", - "nemona": "Nemona", - "kieran": "Kieran", - "leon": "Leon", - "rival": "Finn", - "rival_female": "Ivy", + 'brock': 'Brock', + 'misty': 'Misty', + 'lt_surge': 'Lt Surge', + 'erika': 'Erika', + 'janine': 'Janine', + 'sabrina': 'Sabrina', + 'blaine': 'Blaine', + 'giovanni': 'Giovanni', + 'falkner': 'Falkner', + 'bugsy': 'Bugsy', + 'whitney': 'Whitney', + 'morty': 'Morty', + 'chuck': 'Chuck', + 'jasmine': 'Jasmine', + 'pryce': 'Pryce', + 'clair': 'Clair', + 'roxanne': 'Roxanne', + 'brawly': 'Brawly', + 'wattson': 'Wattson', + 'flannery': 'Flannery', + 'norman': 'Norman', + 'winona': 'Winona', + 'tate': 'Tate', + 'liza': 'Liza', + 'juan': 'Juan', + 'roark': 'Roark', + 'gardenia': 'Gardenia', + 'maylene': 'Maylene', + 'crasher_wake': 'Crasher Wake', + 'fantina': 'Fantina', + 'byron': 'Byron', + 'candice': 'Candice', + 'volkner': 'Volkner', + 'cilan': 'Cilan', + 'chili': 'Chili', + 'cress': 'Cress', + 'cheren': 'Cheren', + 'lenora': 'Lenora', + 'roxie': 'Roxie', + 'burgh': 'Burgh', + 'elesa': 'Elesa', + 'clay': 'Clay', + 'skyla': 'Skyla', + 'brycen': 'Brycen', + 'drayden': 'Drayden', + 'marlon': 'Marlon', + 'viola': 'Viola', + 'grant': 'Grant', + 'korrina': 'Korrina', + 'ramos': 'Ramos', + 'clemont': 'Clemont', + 'valerie': 'Valerie', + 'olympia': 'Olympia', + 'wulfric': 'Wulfric', + 'milo': 'Milo', + 'nessa': 'Nessa', + 'kabu': 'Kabu', + 'bea': 'Bea', + 'allister': 'Allister', + 'opal': 'Opal', + 'bede': 'Bede', + 'gordie': 'Gordie', + 'melony': 'Melony', + 'piers': 'Piers', + 'marnie': 'Marnie', + 'raihan': 'Raihan', + 'katy': 'Katy', + 'brassius': 'Brassius', + 'iono': 'Iono', + 'kofu': 'Kofu', + 'larry': 'Larry', + 'ryme': 'Ryme', + 'tulip': 'Tulip', + 'grusha': 'Grusha', + 'lorelei': 'Lorelei', + 'bruno': 'Bruno', + 'agatha': 'Agatha', + 'lance': 'Lance', + 'will': 'Will', + 'koga': 'Koga', + 'karen': 'Karen', + 'sidney': 'Sidney', + 'phoebe': 'Phoebe', + 'glacia': 'Glacia', + 'drake': 'Drake', + 'aaron': 'Aaron', + 'bertha': 'Bertha', + 'flint': 'Flint', + 'lucian': 'Lucian', + 'shauntal': 'Shauntal', + 'marshal': 'Marshal', + 'grimsley': 'Grimsley', + 'caitlin': 'Caitlin', + 'malva': 'Malva', + 'siebold': 'Siebold', + 'wikstrom': 'Wikstrom', + 'drasna': 'Drasna', + 'hala': 'Hala', + 'molayne': 'Molayne', + 'olivia': 'Olivia', + 'acerola': 'Acerola', + 'kahili': 'Kahili', + 'rika': 'Rika', + 'poppy': 'Poppy', + 'hassel': 'Hassel', + 'crispin': 'Crispin', + 'amarys': 'Amarys', + 'lacey': 'Lacey', + 'drayton': 'Drayton', + 'blue': 'Blue', + 'red': 'Red', + 'steven': 'Steven', + 'wallace': 'Wallace', + 'cynthia': 'Cynthia', + 'alder': 'Alder', + 'iris': 'Iris', + 'diantha': 'Diantha', + 'hau': 'Hau', + 'geeta': 'Geeta', + 'nemona': 'Nemona', + 'kieran': 'Kieran', + 'leon': 'Leon', + 'rival': 'Finn', + 'rival_female': 'Ivy', } as const; diff --git a/src/locales/es/tutorial.ts b/src/locales/es/tutorial.ts index 6e131f9b0c9..67325cfeeb0 100644 --- a/src/locales/es/tutorial.ts +++ b/src/locales/es/tutorial.ts @@ -1,7 +1,7 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const tutorial: SimpleTranslationEntries = { - "intro": `¡Bienvenido/a a PokéRogue! Este es un fangame de Pokémon centrado en el combate con elementos roguelite. + 'intro': `¡Bienvenido/a a PokéRogue! Este es un fangame de Pokémon centrado en el combate con elementos roguelite. $Este juego no está monetizado y no reclamamos ningún derecho de propiedad sobre Pokémon ni sobre ninguno de $los recursos con copyright utilizados. $El juego está en proceso, pero es completamente jugable.\nPara reportar bugs, por favor, hazlo en nuestra @@ -9,27 +9,27 @@ export const tutorial: SimpleTranslationEntries = { $Si el juego va lento, por favor, asegúrate de que tengas activada la opción 'Aceleración de gráficos' en los $ajustes de tu navegador.`, - "accessMenu": `Para acceder al menú, pulsa M o Escape cuando\ntengas el control. + 'accessMenu': `Para acceder al menú, pulsa M o Escape cuando\ntengas el control. $El menú contiene los ajustes y otras funciones.`, - "menu": `Desde este menú podrás acceder a los ajustes. + 'menu': `Desde este menú podrás acceder a los ajustes. $Podrás cambiar la velocidad del juego, el estilo de la ventana y demás. $Hay más opciones, ¡así que pruébalas todas!`, - "starterSelect": `En esta pantalla podrás elegir tus iniciales. Estos serán tus\nmiembros de equipo al comenzar la partida. + 'starterSelect': `En esta pantalla podrás elegir tus iniciales. Estos serán tus\nmiembros de equipo al comenzar la partida. $Cada inicial tiene un valor. Tu equipo puede contener hasta 6\nmiembros mientras el valor total no pase de 10. $También puedes elegir su género, habilidad y forma\ndependiendo de las variantes que hayas conseguido. $Los IVs de los iniciales corresponderán al valor más alto de\nlos Pokémon de la misma especie que hayas obtenido. $¡Así que intenta conseguir muchos Pokémon de la misma\nespecie!`, - "pokerus": `Cada día, 3 iniciales aleatorios tendrán un borde morado. + 'pokerus': `Cada día, 3 iniciales aleatorios tendrán un borde morado. $Si ves un inicial que tengas con este borde, prueba a\nañadirlo a tu equipo. ¡No olvides revisar sus datos!`, - "statChange": `Los cambios de estadísticas se mantienen entre combates\nmientras que el Pokémon no vuelva a la Poké Ball. + 'statChange': `Los cambios de estadísticas se mantienen entre combates\nmientras que el Pokémon no vuelva a la Poké Ball. $Tus Pokémon vuelven a sus Poké Balls antes de combates contra entrenadores y de entrar a un nuevo bioma. $También puedes ver los cambios de estadísticas del Pokémon en campo manteniendo pulsado C o Shift.`, - "selectItem": `Tras cada combate, tendrás la opción de elegir entre tres objetos aleatorios. Solo podrás escoger uno. + 'selectItem': `Tras cada combate, tendrás la opción de elegir entre tres objetos aleatorios. Solo podrás escoger uno. $Estos objetos pueden ser consumibles, objetos equipables u objetos pasivos permanentes (hasta acabar la partida). $La mayoría de los efectos de objetos no consumibles se acumularán de varias maneras. $Algunos objetos solo aparecerán si pueden ser utilizados, como las piedras evolutivas. @@ -38,7 +38,7 @@ export const tutorial: SimpleTranslationEntries = { $También puedes comprar objetos consumibles con dinero y su variedad irá aumentando según tu avance. $Asegúrate de comprar antes de escoger un objeto aleatorio, ya que se avanzará al siguiente combate.`, - "eggGacha": `En esta pantalla podrás canjear tus vales por huevos\nde Pokémon. + 'eggGacha': `En esta pantalla podrás canjear tus vales por huevos\nde Pokémon. $Los huevos deben eclosionar y estarán más cerca de\nhacerlo tras cada combate. $Los huevos más raros tardarán más en eclosionar. $Los Pokémon que hayan salido del huevo no se\nañadirán a tu equipo, pero sí a tus iniciales. @@ -46,4 +46,4 @@ export const tutorial: SimpleTranslationEntries = { $Algunos Pokémon solo pueden ser obtenidos de huevos. $Hay 3 máquinas diferentes entre las que elegir, cada\nuna con zdiferentes bonificaciones. $¡Así que escoge la que más te interese!`, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/es/voucher.ts b/src/locales/es/voucher.ts index 7af569e88cb..2df0ccd7a9d 100644 --- a/src/locales/es/voucher.ts +++ b/src/locales/es/voucher.ts @@ -1,11 +1,11 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const voucher: SimpleTranslationEntries = { - "vouchers": "Vouchers", - "eggVoucher": "Egg Voucher", - "eggVoucherPlus": "Egg Voucher Plus", - "eggVoucherPremium": "Egg Voucher Premium", - "eggVoucherGold": "Egg Voucher Gold", - "locked": "Locked", - "defeatTrainer": "Defeat {{trainerName}}" -} as const; \ No newline at end of file + 'vouchers': 'Vouchers', + 'eggVoucher': 'Egg Voucher', + 'eggVoucherPlus': 'Egg Voucher Plus', + 'eggVoucherPremium': 'Egg Voucher Premium', + 'eggVoucherGold': 'Egg Voucher Gold', + 'locked': 'Locked', + 'defeatTrainer': 'Defeat {{trainerName}}' +} as const; diff --git a/src/locales/es/weather.ts b/src/locales/es/weather.ts index 999613f1566..40f5db4e981 100644 --- a/src/locales/es/weather.ts +++ b/src/locales/es/weather.ts @@ -1,44 +1,44 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The weather namespace holds text displayed when weather is active during a battle */ export const weather: SimpleTranslationEntries = { - "sunnyStartMessage": "The sunlight got bright!", - "sunnyLapseMessage": "The sunlight is strong.", - "sunnyClearMessage": "The sunlight faded.", + 'sunnyStartMessage': 'The sunlight got bright!', + 'sunnyLapseMessage': 'The sunlight is strong.', + 'sunnyClearMessage': 'The sunlight faded.', - "rainStartMessage": "A downpour started!", - "rainLapseMessage": "The downpour continues.", - "rainClearMessage": "The rain stopped.", + 'rainStartMessage': 'A downpour started!', + 'rainLapseMessage': 'The downpour continues.', + 'rainClearMessage': 'The rain stopped.', - "sandstormStartMessage": "A sandstorm brewed!", - "sandstormLapseMessage": "The sandstorm rages.", - "sandstormClearMessage": "The sandstorm subsided.", - "sandstormDamageMessage": "{{pokemonPrefix}}{{pokemonName}} is buffeted\nby the sandstorm!", + 'sandstormStartMessage': 'A sandstorm brewed!', + 'sandstormLapseMessage': 'The sandstorm rages.', + 'sandstormClearMessage': 'The sandstorm subsided.', + 'sandstormDamageMessage': '{{pokemonPrefix}}{{pokemonName}} is buffeted\nby the sandstorm!', - "hailStartMessage": "It started to hail!", - "hailLapseMessage": "Hail continues to fall.", - "hailClearMessage": "The hail stopped.", - "hailDamageMessage": "{{pokemonPrefix}}{{pokemonName}} is pelted\nby the hail!", + 'hailStartMessage': 'It started to hail!', + 'hailLapseMessage': 'Hail continues to fall.', + 'hailClearMessage': 'The hail stopped.', + 'hailDamageMessage': '{{pokemonPrefix}}{{pokemonName}} is pelted\nby the hail!', - "snowStartMessage": "It started to snow!", - "snowLapseMessage": "The snow is falling down.", - "snowClearMessage": "The snow stopped.", + 'snowStartMessage': 'It started to snow!', + 'snowLapseMessage': 'The snow is falling down.', + 'snowClearMessage': 'The snow stopped.', - "fogStartMessage": "A thick fog emerged!", - "fogLapseMessage": "The fog continues.", - "fogClearMessage": "The fog disappeared.", + 'fogStartMessage': 'A thick fog emerged!', + 'fogLapseMessage': 'The fog continues.', + 'fogClearMessage': 'The fog disappeared.', - "heavyRainStartMessage": "A heavy downpour started!", - "heavyRainLapseMessage": "The heavy downpour continues.", - "heavyRainClearMessage": "The heavy rain stopped.", + 'heavyRainStartMessage': 'A heavy downpour started!', + 'heavyRainLapseMessage': 'The heavy downpour continues.', + 'heavyRainClearMessage': 'The heavy rain stopped.', - "harshSunStartMessage": "The sunlight got hot!", - "harshSunLapseMessage": "The sun is scorching hot.", - "harshSunClearMessage": "The harsh sunlight faded.", + 'harshSunStartMessage': 'The sunlight got hot!', + 'harshSunLapseMessage': 'The sun is scorching hot.', + 'harshSunClearMessage': 'The harsh sunlight faded.', - "strongWindsStartMessage": "A heavy wind began!", - "strongWindsLapseMessage": "The wind blows intensely.", - "strongWindsClearMessage": "The heavy wind stopped." -} \ No newline at end of file + 'strongWindsStartMessage': 'A heavy wind began!', + 'strongWindsLapseMessage': 'The wind blows intensely.', + 'strongWindsClearMessage': 'The heavy wind stopped.' +}; diff --git a/src/locales/fr/ability-trigger.ts b/src/locales/fr/ability-trigger.ts index b1bbaa5e353..d392aa63bb5 100644 --- a/src/locales/fr/ability-trigger.ts +++ b/src/locales/fr/ability-trigger.ts @@ -1,6 +1,6 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const abilityTriggers: SimpleTranslationEntries = { - 'blockRecoilDamage' : `{{abilityName}}\nde {{pokemonName}} le protège du contrecoup !`, - 'badDreams': `{{pokemonName}} a le sommeil agité !` + 'blockRecoilDamage' : '{{abilityName}}\nde {{pokemonName}} le protège du contrecoup !', + 'badDreams': '{{pokemonName}} a le sommeil agité !' } as const; diff --git a/src/locales/fr/ability.ts b/src/locales/fr/ability.ts index 49bfeb53acf..43606558ec2 100644 --- a/src/locales/fr/ability.ts +++ b/src/locales/fr/ability.ts @@ -1,1244 +1,1244 @@ -import { AbilityTranslationEntries } from "#app/plugins/i18n.js"; +import { AbilityTranslationEntries } from '#app/plugins/i18n.js'; export const ability: AbilityTranslationEntries = { stench: { - name: "Puanteur", - description: "Le Pokémon émet une odeur si nauséabonde qu’il peut effrayer sa cible en l’attaquant.", + name: 'Puanteur', + description: 'Le Pokémon émet une odeur si nauséabonde qu’il peut effrayer sa cible en l’attaquant.', }, drizzle: { - name: "Crachin", - description: "Le Pokémon invoque la pluie quand il entre au combat.", + name: 'Crachin', + description: 'Le Pokémon invoque la pluie quand il entre au combat.', }, speedBoost: { - name: "Turbo", - description: "La Vitesse du Pokémon augmente à chaque tour.", + name: 'Turbo', + description: 'La Vitesse du Pokémon augmente à chaque tour.', }, battleArmor: { - name: "Armurbaston", - description: "Le Pokémon est protégé des coups critiques par une solide carapace.", + name: 'Armurbaston', + description: 'Le Pokémon est protégé des coups critiques par une solide carapace.', }, sturdy: { - name: "Fermeté", - description: "Le Pokémon encaisse toujours au moins une attaque s’il a tous ses PV. Il est également immunisé contre les capacités pouvant mettre K.O. en un coup.", + name: 'Fermeté', + description: 'Le Pokémon encaisse toujours au moins une attaque s’il a tous ses PV. Il est également immunisé contre les capacités pouvant mettre K.O. en un coup.', }, damp: { - name: "Moiteur", - description: "Le Pokémon augmente l’humidité de l’air, ce qui empêche tous les Pokémon d’utiliser des capacités explosives telles que Destruction.", + name: 'Moiteur', + description: 'Le Pokémon augmente l’humidité de l’air, ce qui empêche tous les Pokémon d’utiliser des capacités explosives telles que Destruction.', }, limber: { - name: "Échauffement", - description: "Le Pokémon s’est suffisamment échauffé, ce qui l’immunise contre la paralysie.", + name: 'Échauffement', + description: 'Le Pokémon s’est suffisamment échauffé, ce qui l’immunise contre la paralysie.', }, sandVeil: { - name: "Voile Sable", - description: "Augmente l’Esquive du Pokémon lors des tempêtes de sable.", + name: 'Voile Sable', + description: 'Augmente l’Esquive du Pokémon lors des tempêtes de sable.', }, static: { - name: "Statik", - description: "Le Pokémon charge son corps en électricité statique, et tout contact avec lui peut paralyser.", + name: 'Statik', + description: 'Le Pokémon charge son corps en électricité statique, et tout contact avec lui peut paralyser.', }, voltAbsorb: { - name: "Absorbe-Volt", - description: "Si le Pokémon est touché par une capacité Électrik, il ne subit aucun dégât et regagne des PV à la place.", + name: 'Absorbe-Volt', + description: 'Si le Pokémon est touché par une capacité Électrik, il ne subit aucun dégât et regagne des PV à la place.', }, waterAbsorb: { - name: "Absorbe-Eau", - description: "Si le Pokémon est touché par une capacité Eau, il ne subit aucun dégât et regagne des PV à la place.", + name: 'Absorbe-Eau', + description: 'Si le Pokémon est touché par une capacité Eau, il ne subit aucun dégât et regagne des PV à la place.', }, oblivious: { - name: "Benêt", - description: "Le Pokémon est un grand benêt, ce qui l’immunise contre l’attraction, la provocation ou l’intimidation.", + name: 'Benêt', + description: 'Le Pokémon est un grand benêt, ce qui l’immunise contre l’attraction, la provocation ou l’intimidation.', }, cloudNine: { - name: "Ciel Gris", - description: "Annule tous les effets liés à la météo.", + name: 'Ciel Gris', + description: 'Annule tous les effets liés à la météo.', }, compoundEyes: { - name: "Œil Composé", - description: "Les yeux à facettes du Pokémon augmentent la Précision de ses capacités.", + name: 'Œil Composé', + description: 'Les yeux à facettes du Pokémon augmentent la Précision de ses capacités.', }, insomnia: { - name: "Insomnia", - description: "Le Pokémon est incapable de dormir.", + name: 'Insomnia', + description: 'Le Pokémon est incapable de dormir.', }, colorChange: { - name: "Homochromie", - description: "Lorsque le Pokémon est touché par une capacité, il prend le type de celle-ci.", + name: 'Homochromie', + description: 'Lorsque le Pokémon est touché par une capacité, il prend le type de celle-ci.', }, immunity: { - name: "Vaccin", - description: "Le Pokémon est naturellement immunisé contre toute forme de poison.", + name: 'Vaccin', + description: 'Le Pokémon est naturellement immunisé contre toute forme de poison.', }, flashFire: { - name: "Torche", - description: "Lorsque le Pokémon est touché par une capacité de type Feu, il absorbe la chaleur pour renforcer ses propres capacités Feu.", + name: 'Torche', + description: 'Lorsque le Pokémon est touché par une capacité de type Feu, il absorbe la chaleur pour renforcer ses propres capacités Feu.', }, shieldDust: { - name: "Écran Poudre", - description: "Le Pokémon dispose d’un écran naturel qui le protège des effets additionnels des attaques ennemies.", + name: 'Écran Poudre', + description: 'Le Pokémon dispose d’un écran naturel qui le protège des effets additionnels des attaques ennemies.', }, ownTempo: { - name: "Tempo Perso", - description: "Le Pokémon vit sa vie à son propre rythme, ce qui l’immunise contre la confusion et l’intimidation.", + name: 'Tempo Perso', + description: 'Le Pokémon vit sa vie à son propre rythme, ce qui l’immunise contre la confusion et l’intimidation.', }, suctionCups: { - name: "Ventouse", - description: "Le Pokémon est solidement fixé au sol par des ventouses, ce qui le protège des capacités ou objets qui font changer de Pokémon.", + name: 'Ventouse', + description: 'Le Pokémon est solidement fixé au sol par des ventouses, ce qui le protège des capacités ou objets qui font changer de Pokémon.', }, intimidate: { - name: "Intimidation", - description: "Le Pokémon rugit lorsqu’il arrive au combat, ce qui intimide l’ennemi et baisse son Attaque.", + name: 'Intimidation', + description: 'Le Pokémon rugit lorsqu’il arrive au combat, ce qui intimide l’ennemi et baisse son Attaque.', }, shadowTag: { - name: "Marque Ombre", - description: "Empêche les Pokémon ennemis de quitter le terrain.", + name: 'Marque Ombre', + description: 'Empêche les Pokémon ennemis de quitter le terrain.', }, roughSkin: { - name: "Peau Dure", - description: "Blesse l’attaquant lorsque le Pokémon subit une attaque directe.", + name: 'Peau Dure', + description: 'Blesse l’attaquant lorsque le Pokémon subit une attaque directe.', }, wonderGuard: { - name: "Garde Mystik", - description: "Une puissance mystérieuse protège le Pokémon contre toutes les capacités, sauf celles qui sont super efficaces.", + name: 'Garde Mystik', + description: 'Une puissance mystérieuse protège le Pokémon contre toutes les capacités, sauf celles qui sont super efficaces.', }, levitate: { - name: "Lévitation", - description: "Le Pokémon flotte, ce qui l’immunise contre les capacités de type Sol.", + name: 'Lévitation', + description: 'Le Pokémon flotte, ce qui l’immunise contre les capacités de type Sol.', }, effectSpore: { - name: "Pose Spore", - description: "Peut paralyser, empoisonner ou endormir l’attaquant lorsque le Pokémon subit une attaque directe.", + name: 'Pose Spore', + description: 'Peut paralyser, empoisonner ou endormir l’attaquant lorsque le Pokémon subit une attaque directe.', }, synchronize: { - name: "Synchro", - description: "Quand le Pokémon est brulé, paralysé ou empoisonné par un autre Pokémon, il partage ce statut avec celui-ci.", + name: 'Synchro', + description: 'Quand le Pokémon est brulé, paralysé ou empoisonné par un autre Pokémon, il partage ce statut avec celui-ci.', }, clearBody: { - name: "Corps Sain", - description: "Empêche les stats du Pokémon de baisser à cause du talent ou d’une capacité de l’adversaire.", + name: 'Corps Sain', + description: 'Empêche les stats du Pokémon de baisser à cause du talent ou d’une capacité de l’adversaire.', }, naturalCure: { - name: "Médic Nature", - description: "Le Pokémon soigne ses altérations de statut en quittant le combat.", + name: 'Médic Nature', + description: 'Le Pokémon soigne ses altérations de statut en quittant le combat.', }, lightningRod: { - name: "Paratonnerre", - description: "Le Pokémon détourne sur lui les capacités de type Électrik et les neutralise, tout en augmentant son Attaque Spéciale.", + name: 'Paratonnerre', + description: 'Le Pokémon détourne sur lui les capacités de type Électrik et les neutralise, tout en augmentant son Attaque Spéciale.', }, sereneGrace: { - name: "Sérénité", - description: "Augmente les chances d’infliger des effets additionnels.", + name: 'Sérénité', + description: 'Augmente les chances d’infliger des effets additionnels.', }, swiftSwim: { - name: "Glissade", - description: "Augmente la Vitesse du Pokémon s’il pleut.", + name: 'Glissade', + description: 'Augmente la Vitesse du Pokémon s’il pleut.', }, chlorophyll: { - name: "Chlorophylle", - description: "Augmente la Vitesse du Pokémon s’il y a du soleil.", + name: 'Chlorophylle', + description: 'Augmente la Vitesse du Pokémon s’il y a du soleil.', }, illuminate: { - name: "Lumiattirance", - description: "Le Pokémon illumine les alentours, facilitant les rencontres avec les Pokémon sauvages et empêche sa Précision de baisser.", + name: 'Lumiattirance', + description: 'Le Pokémon illumine les alentours, facilitant les rencontres avec les Pokémon sauvages et empêche sa Précision de baisser.', }, trace: { - name: "Calque", - description: "Lorsque le Pokémon entre au combat, il calque le talent d’un ennemi pour remplacer le sien.", + name: 'Calque', + description: 'Lorsque le Pokémon entre au combat, il calque le talent d’un ennemi pour remplacer le sien.', }, hugePower: { - name: "Coloforce", - description: "Double la puissance des attaques physiques.", + name: 'Coloforce', + description: 'Double la puissance des attaques physiques.', }, poisonPoint: { - name: "Point Poison", - description: "Peut empoisonner l’attaquant lorsque le Pokémon subit une attaque directe.", + name: 'Point Poison', + description: 'Peut empoisonner l’attaquant lorsque le Pokémon subit une attaque directe.', }, innerFocus: { - name: "Attention", - description: "Le Pokémon a un mental à toute épreuve qui empêche les attaques ennemies de lui faire peur. Il est aussi immunisé contre le talent Intimidation.", + name: 'Attention', + description: 'Le Pokémon a un mental à toute épreuve qui empêche les attaques ennemies de lui faire peur. Il est aussi immunisé contre le talent Intimidation.', }, magmaArmor: { - name: "Armumagma", - description: "Le magma qui recouvre le corps du Pokémon le protège contre le gel.", + name: 'Armumagma', + description: 'Le magma qui recouvre le corps du Pokémon le protège contre le gel.', }, waterVeil: { - name: "Ignifu-Voile", - description: "Le voile qui recouvre le Pokémon le protège des brulures.", + name: 'Ignifu-Voile', + description: 'Le voile qui recouvre le Pokémon le protège des brulures.', }, magnetPull: { - name: "Magnépiège", - description: "Attire les Pokémon Acier grâce à un champ magnétique, ce qui les empêche de quitter le terrain.", + name: 'Magnépiège', + description: 'Attire les Pokémon Acier grâce à un champ magnétique, ce qui les empêche de quitter le terrain.', }, soundproof: { - name: "Anti-Bruit", - description: "Protège le Pokémon de toutes les capacités sonores.", + name: 'Anti-Bruit', + description: 'Protège le Pokémon de toutes les capacités sonores.', }, rainDish: { - name: "Cuvette", - description: "Le Pokémon récupère progressivement des PV lorsqu’il pleut.", + name: 'Cuvette', + description: 'Le Pokémon récupère progressivement des PV lorsqu’il pleut.', }, sandStream: { - name: "Sable Volant", - description: "Le Pokémon invoque une tempête de sable quand il entre au combat.", + name: 'Sable Volant', + description: 'Le Pokémon invoque une tempête de sable quand il entre au combat.', }, pressure: { - name: "Pression", - description: "Met la pression à l’adversaire pour le forcer à dépenser plus de PP.", + name: 'Pression', + description: 'Met la pression à l’adversaire pour le forcer à dépenser plus de PP.', }, thickFat: { - name: "Isograisse", - description: "Le Pokémon est protégé par une épaisse couche de graisse qui diminue de moitié les dégâts qu’il subit des capacités de types Feu et Glace.", + name: 'Isograisse', + description: 'Le Pokémon est protégé par une épaisse couche de graisse qui diminue de moitié les dégâts qu’il subit des capacités de types Feu et Glace.', }, earlyBird: { - name: "Matinal", - description: "Le Pokémon se réveille deux fois plus rapidement que les autres.", + name: 'Matinal', + description: 'Le Pokémon se réveille deux fois plus rapidement que les autres.', }, flameBody: { - name: "Corps Ardent", - description: "Peut bruler l’attaquant lorsque le Pokémon subit une attaque directe.", + name: 'Corps Ardent', + description: 'Peut bruler l’attaquant lorsque le Pokémon subit une attaque directe.', }, runAway: { - name: "Fuite", - description: "Permet de fuir n’importe quel Pokémon sauvage.", + name: 'Fuite', + description: 'Permet de fuir n’importe quel Pokémon sauvage.', }, keenEye: { - name: "Regard Vif", - description: "Les yeux perçants du Pokémon empêchent sa Précision de baisser.", + name: 'Regard Vif', + description: 'Les yeux perçants du Pokémon empêchent sa Précision de baisser.', }, hyperCutter: { - name: "Hyper Cutter", - description: "Le Pokémon est armé de puissantes pinces qui font sa fierté et empêchent son Attaque d’être baissée par l’adversaire.", + name: 'Hyper Cutter', + description: 'Le Pokémon est armé de puissantes pinces qui font sa fierté et empêchent son Attaque d’être baissée par l’adversaire.', }, pickup: { - name: "Ramassage", - description: "Permet parfois au Pokémon de ramasser les objets que d’autres Pokémon ont utilisés. Il lui arrive aussi d’en trouver hors des combats.", + name: 'Ramassage', + description: 'Permet parfois au Pokémon de ramasser les objets que d’autres Pokémon ont utilisés. Il lui arrive aussi d’en trouver hors des combats.', }, truant: { - name: "Absentéisme", - description: "Lorsque le Pokémon utilise une capacité, il passe le tour suivant à paresser.", + name: 'Absentéisme', + description: 'Lorsque le Pokémon utilise une capacité, il passe le tour suivant à paresser.', }, hustle: { - name: "Agitation", - description: "Améliore l’Attaque du Pokémon, mais diminue la Précision.", + name: 'Agitation', + description: 'Améliore l’Attaque du Pokémon, mais diminue la Précision.', }, cuteCharm: { - name: "Joli Sourire", - description: "Peut séduire l’attaquant lorsque le Pokémon subit une attaque directe.", + name: 'Joli Sourire', + description: 'Peut séduire l’attaquant lorsque le Pokémon subit une attaque directe.', }, plus: { - name: "Plus", - description: "L’Attaque Spéciale du Pokémon augmente si un Pokémon allié a le talent Moins ou Plus.", + name: 'Plus', + description: 'L’Attaque Spéciale du Pokémon augmente si un Pokémon allié a le talent Moins ou Plus.', }, minus: { - name: "Moins", - description: "L’Attaque Spéciale du Pokémon augmente si un Pokémon allié a le talent Moins ou Plus.", + name: 'Moins', + description: 'L’Attaque Spéciale du Pokémon augmente si un Pokémon allié a le talent Moins ou Plus.', }, forecast: { - name: "Météo", - description: "Le Pokémon prend le type Eau, Feu ou Glace en fonction de la météo.", + name: 'Météo', + description: 'Le Pokémon prend le type Eau, Feu ou Glace en fonction de la météo.', }, stickyHold: { - name: "Glu", - description: "Les objets sont collés au corps gluant du Pokémon, ce qui empêche ses adversaires de les dérober.", + name: 'Glu', + description: 'Les objets sont collés au corps gluant du Pokémon, ce qui empêche ses adversaires de les dérober.', }, shedSkin: { - name: "Mue", - description: "Le Pokémon soigne parfois ses altérations de statut en muant.", + name: 'Mue', + description: 'Le Pokémon soigne parfois ses altérations de statut en muant.', }, guts: { - name: "Cran", - description: "Augmente l’Attaque du Pokémon s’il est affecté par une altération de statut.", + name: 'Cran', + description: 'Augmente l’Attaque du Pokémon s’il est affecté par une altération de statut.', }, marvelScale: { - name: "Écaille Spéciale", - description: "Les écailles mystérieuses du Pokémon réagissent aux altérations de statut en augmentant sa Défense.", + name: 'Écaille Spéciale', + description: 'Les écailles mystérieuses du Pokémon réagissent aux altérations de statut en augmentant sa Défense.', }, liquidOoze: { - name: "Suintement", - description: "Le Pokémon suinte un liquide toxique nauséabond qui blesse tous ceux qui tentent de voler ses PV.", + name: 'Suintement', + description: 'Le Pokémon suinte un liquide toxique nauséabond qui blesse tous ceux qui tentent de voler ses PV.', }, overgrow: { - name: "Engrais", - description: "Augmente la puissance des capacités de type Plante du Pokémon quand il a perdu une certaine quantité de PV.", + name: 'Engrais', + description: 'Augmente la puissance des capacités de type Plante du Pokémon quand il a perdu une certaine quantité de PV.', }, blaze: { - name: "Brasier", - description: "Augmente la puissance des capacités de type Feu du Pokémon quand il a perdu une certaine quantité de PV.", + name: 'Brasier', + description: 'Augmente la puissance des capacités de type Feu du Pokémon quand il a perdu une certaine quantité de PV.', }, torrent: { - name: "Torrent", - description: "Augmente la puissance des capacités de type Eau du Pokémon quand il a perdu une certaine quantité de PV.", + name: 'Torrent', + description: 'Augmente la puissance des capacités de type Eau du Pokémon quand il a perdu une certaine quantité de PV.', }, swarm: { - name: "Essaim", - description: "Augmente la puissance des capacités de type Insecte du Pokémon quand il a perdu une certaine quantité de PV.", + name: 'Essaim', + description: 'Augmente la puissance des capacités de type Insecte du Pokémon quand il a perdu une certaine quantité de PV.', }, rockHead: { - name: "Tête de Roc", - description: "Le Pokémon peut utiliser des capacités occasionnant un contrecoup sans perdre de PV.", + name: 'Tête de Roc', + description: 'Le Pokémon peut utiliser des capacités occasionnant un contrecoup sans perdre de PV.', }, drought: { - name: "Sécheresse", - description: "Le Pokémon invoque le soleil quand il entre au combat.", + name: 'Sécheresse', + description: 'Le Pokémon invoque le soleil quand il entre au combat.', }, arenaTrap: { - name: "Piège Sable", - description: "Empêche l’adversaire de quitter le terrain.", + name: 'Piège Sable', + description: 'Empêche l’adversaire de quitter le terrain.', }, vitalSpirit: { - name: "Esprit Vital", - description: "Empêche le Pokémon de s’endormir.", + name: 'Esprit Vital', + description: 'Empêche le Pokémon de s’endormir.', }, whiteSmoke: { - name: "Écran Fumée", - description: "Un écran de fumée empêche l’adversaire de baisser les stats du Pokémon.", + name: 'Écran Fumée', + description: 'Un écran de fumée empêche l’adversaire de baisser les stats du Pokémon.', }, purePower: { - name: "Force Pure", - description: "Le Pokémon utilise sa maitrise du yoga pour doubler la puissance de ses attaques physiques.", + name: 'Force Pure', + description: 'Le Pokémon utilise sa maitrise du yoga pour doubler la puissance de ses attaques physiques.', }, shellArmor: { - name: "Coque Armure", - description: "Le Pokémon est protégé des coups critiques par sa carapace.", + name: 'Coque Armure', + description: 'Le Pokémon est protégé des coups critiques par sa carapace.', }, airLock: { - name: "Air Lock", - description: "Annule tous les effets de la météo.", + name: 'Air Lock', + description: 'Annule tous les effets de la météo.', }, tangledFeet: { - name: "Pieds Confus", - description: "Augmente l’Esquive du Pokémon s’il est confus.", + name: 'Pieds Confus', + description: 'Augmente l’Esquive du Pokémon s’il est confus.', }, motorDrive: { - name: "Motorisé", - description: "Si le Pokémon est touché par une capacité de type Électrik, il ne subit aucun dégât et sa Vitesse augmente.", + name: 'Motorisé', + description: 'Si le Pokémon est touché par une capacité de type Électrik, il ne subit aucun dégât et sa Vitesse augmente.', }, rivalry: { - name: "Rivalité", - description: "Le Pokémon déteste la concurrence et inflige plus de dégâts si sa cible est du même sexe. Par contre, il en inflige moins si sa cible est du sexe opposé.", + name: 'Rivalité', + description: 'Le Pokémon déteste la concurrence et inflige plus de dégâts si sa cible est du même sexe. Par contre, il en inflige moins si sa cible est du sexe opposé.', }, steadfast: { - name: "Impassible", - description: "Augmente la Vitesse du Pokémon quand il a peur.", + name: 'Impassible', + description: 'Augmente la Vitesse du Pokémon quand il a peur.', }, snowCloak: { - name: "Rideau Neige", - description: "Augmente l’Esquive du Pokémon quand il neige.", + name: 'Rideau Neige', + description: 'Augmente l’Esquive du Pokémon quand il neige.', }, gluttony: { - name: "Gloutonnerie", - description: "Si le Pokémon tient une Baie à manger en cas de PV bas, il la mange dès qu’il a perdu la moitié de ses PV.", + name: 'Gloutonnerie', + description: 'Si le Pokémon tient une Baie à manger en cas de PV bas, il la mange dès qu’il a perdu la moitié de ses PV.', }, angerPoint: { - name: "Colérique", - description: "Si le Pokémon subit un coup critique, il entre dans une colère noire qui augmente son Attaque au maximum.", + name: 'Colérique', + description: 'Si le Pokémon subit un coup critique, il entre dans une colère noire qui augmente son Attaque au maximum.', }, unburden: { - name: "Délestage", - description: "Augmente la Vitesse du Pokémon s’il perd ou utilise l’objet qu’il tenait au début du combat.", + name: 'Délestage', + description: 'Augmente la Vitesse du Pokémon s’il perd ou utilise l’objet qu’il tenait au début du combat.', }, heatproof: { - name: "Ignifugé", - description: "Diminue de moitié les dégâts infligés au Pokémon par les capacités de type Feu.", + name: 'Ignifugé', + description: 'Diminue de moitié les dégâts infligés au Pokémon par les capacités de type Feu.', }, simple: { - name: "Simple", - description: "Les changements de stats sont deux fois plus importants pour le Pokémon.", + name: 'Simple', + description: 'Les changements de stats sont deux fois plus importants pour le Pokémon.', }, drySkin: { - name: "Peau Sèche", - description: "Quand le soleil brille, le Pokémon perd des PV et subit plus de dégâts des capacités Feu, mais il regagne des PV lorsqu’il pleut ou s’il est touché par une capacité Eau.", + name: 'Peau Sèche', + description: 'Quand le soleil brille, le Pokémon perd des PV et subit plus de dégâts des capacités Feu, mais il regagne des PV lorsqu’il pleut ou s’il est touché par une capacité Eau.', }, download: { - name: "Télécharge", - description: "Le Pokémon compare la Défense et la Défense Spéciale de l’adversaire et, en fonction de la stat la plus basse, il augmente sa propre Attaque ou Attaque Spéciale.", + name: 'Télécharge', + description: 'Le Pokémon compare la Défense et la Défense Spéciale de l’adversaire et, en fonction de la stat la plus basse, il augmente sa propre Attaque ou Attaque Spéciale.', }, ironFist: { - name: "Poing de Fer", - description: "Augmente la puissance des capacités coups de poing.", + name: 'Poing de Fer', + description: 'Augmente la puissance des capacités coups de poing.', }, poisonHeal: { - name: "Soin Poison", - description: "Quand le Pokémon est empoisonné, il regagne des PV au lieu d’en perdre.", + name: 'Soin Poison', + description: 'Quand le Pokémon est empoisonné, il regagne des PV au lieu d’en perdre.', }, adaptability: { - name: "Adaptabilité", - description: "Quand le Pokémon utilise une capacité du même type que lui, le bonus de puissance qu’elle reçoit est encore plus important que normalement.", + name: 'Adaptabilité', + description: 'Quand le Pokémon utilise une capacité du même type que lui, le bonus de puissance qu’elle reçoit est encore plus important que normalement.', }, skillLink: { - name: "Multi-Coups", - description: "Les capacités pouvant frapper plusieurs fois frappent toujours le nombre maximal de coups.", + name: 'Multi-Coups', + description: 'Les capacités pouvant frapper plusieurs fois frappent toujours le nombre maximal de coups.', }, hydration: { - name: "Hydratation", - description: "Soigne les altérations de statut du Pokémon quand il pleut.", + name: 'Hydratation', + description: 'Soigne les altérations de statut du Pokémon quand il pleut.', }, solarPower: { - name: "Force Soleil", - description: "Quand le soleil brille, l’Attaque Spéciale du Pokémon augmente mais il perd des PV à chaque tour.", + name: 'Force Soleil', + description: 'Quand le soleil brille, l’Attaque Spéciale du Pokémon augmente mais il perd des PV à chaque tour.', }, quickFeet: { - name: "Pied Véloce", - description: "Augmente la Vitesse du Pokémon en cas d’altération de statut.", + name: 'Pied Véloce', + description: 'Augmente la Vitesse du Pokémon en cas d’altération de statut.', }, normalize: { - name: "Normalise", - description: "Toutes les capacités du Pokémon deviennent de type Normal, quel que soit leur type original. Leur puissance augmente légèrement.", + name: 'Normalise', + description: 'Toutes les capacités du Pokémon deviennent de type Normal, quel que soit leur type original. Leur puissance augmente légèrement.', }, sniper: { - name: "Sniper", - description: "Lorsque le Pokémon porte un coup critique, les dégâts infligés augmentent encore plus que d’habitude.", + name: 'Sniper', + description: 'Lorsque le Pokémon porte un coup critique, les dégâts infligés augmentent encore plus que d’habitude.', }, magicGuard: { - name: "Garde Magik", - description: "Seules les attaques peuvent blesser le Pokémon.", + name: 'Garde Magik', + description: 'Seules les attaques peuvent blesser le Pokémon.', }, noGuard: { - name: "Annule Garde", - description: "Les capacités du Pokémon touchent leur cible à coup sûr, mais les capacités adverses le touchent aussi à coup sûr.", + name: 'Annule Garde', + description: 'Les capacités du Pokémon touchent leur cible à coup sûr, mais les capacités adverses le touchent aussi à coup sûr.', }, stall: { - name: "Frein", - description: "Le Pokémon utilise toujours sa capacité en dernier.", + name: 'Frein', + description: 'Le Pokémon utilise toujours sa capacité en dernier.', }, technician: { - name: "Technicien", - description: "Augmente la puissance des capacités les plus faibles.", + name: 'Technicien', + description: 'Augmente la puissance des capacités les plus faibles.', }, leafGuard: { - name: "Feuille Garde", - description: "Protège le Pokémon contre les altérations de statut quand le soleil brille.", + name: 'Feuille Garde', + description: 'Protège le Pokémon contre les altérations de statut quand le soleil brille.', }, klutz: { - name: "Maladresse", - description: "Le Pokémon ne peut utiliser aucun objet tenu.", + name: 'Maladresse', + description: 'Le Pokémon ne peut utiliser aucun objet tenu.', }, moldBreaker: { - name: "Brise Moule", - description: "Le Pokémon ignore les talents adverses qui auraient un effet sur ses capacités.", + name: 'Brise Moule', + description: 'Le Pokémon ignore les talents adverses qui auraient un effet sur ses capacités.', }, superLuck: { - name: "Chanceux", - description: "Le Pokémon est tellement chanceux qu’il inflige plus fréquemment des coups critiques.", + name: 'Chanceux', + description: 'Le Pokémon est tellement chanceux qu’il inflige plus fréquemment des coups critiques.', }, aftermath: { - name: "Boom Final", - description: "Si le Pokémon est mis K.O. par une attaque directe, il inflige des dégâts à l’attaquant avant de s’évanouir.", + name: 'Boom Final', + description: 'Si le Pokémon est mis K.O. par une attaque directe, il inflige des dégâts à l’attaquant avant de s’évanouir.', }, anticipation: { - name: "Anticipation", - description: "Le Pokémon devine si l’adversaire connait une capacité dangereuse pour lui.", + name: 'Anticipation', + description: 'Le Pokémon devine si l’adversaire connait une capacité dangereuse pour lui.', }, forewarn: { - name: "Prédiction", - description: "Révèle l’une des capacités de l’adversaire quand le combat commence.", + name: 'Prédiction', + description: 'Révèle l’une des capacités de l’adversaire quand le combat commence.', }, unaware: { - name: "Inconscient", - description: "Le Pokémon ignore les changements de stats des autres Pokémon, qu’il attaque ou soit attaqué.", + name: 'Inconscient', + description: 'Le Pokémon ignore les changements de stats des autres Pokémon, qu’il attaque ou soit attaqué.', }, tintedLens: { - name: "Lentiteintée", - description: "Permet à une capacité qui n’est pas très efficace d’infliger des dégâts comme si elle était efficace normalement.", + name: 'Lentiteintée', + description: 'Permet à une capacité qui n’est pas très efficace d’infliger des dégâts comme si elle était efficace normalement.', }, filter: { - name: "Filtre", - description: "Diminue la puissance des attaques super efficaces subies.", + name: 'Filtre', + description: 'Diminue la puissance des attaques super efficaces subies.', }, slowStart: { - name: "Début Calme", - description: "Divise la Vitesse et l’Attaque du Pokémon par deux pendant les cinq premiers tours du combat.", + name: 'Début Calme', + description: 'Divise la Vitesse et l’Attaque du Pokémon par deux pendant les cinq premiers tours du combat.', }, scrappy: { - name: "Querelleur", - description: "Permet aux capacités de type Normal ou Combat du Pokémon de toucher les Pokémon de type Spectre. Immunise aussi contre le talent Intimidation.", + name: 'Querelleur', + description: 'Permet aux capacités de type Normal ou Combat du Pokémon de toucher les Pokémon de type Spectre. Immunise aussi contre le talent Intimidation.', }, stormDrain: { - name: "Lavabo", - description: "Le Pokémon détourne sur lui les capacités de type Eau et les neutralise, tout en augmentant son Attaque Spéciale.", + name: 'Lavabo', + description: 'Le Pokémon détourne sur lui les capacités de type Eau et les neutralise, tout en augmentant son Attaque Spéciale.', }, iceBody: { - name: "Corps Gel", - description: "Régénère peu à peu les PV du Pokémon quand il neige.", + name: 'Corps Gel', + description: 'Régénère peu à peu les PV du Pokémon quand il neige.', }, solidRock: { - name: "Solide Roc", - description: "Diminue la puissance des attaques super efficaces subies.", + name: 'Solide Roc', + description: 'Diminue la puissance des attaques super efficaces subies.', }, snowWarning: { - name: "Alerte Neige", - description: "Le Pokémon invoque la neige quand il entre au combat.", + name: 'Alerte Neige', + description: 'Le Pokémon invoque la neige quand il entre au combat.', }, honeyGather: { - name: "Cherche Miel", - description: "Le Pokémon peut parfois trouver du Miel après un combat.", + name: 'Cherche Miel', + description: 'Le Pokémon peut parfois trouver du Miel après un combat.', }, frisk: { - name: "Fouille", - description: "Lorsqu'il entre en combat, le Pokémon peut vérifier la capacité d'un Pokémon adverse.", + name: 'Fouille', + description: 'Lorsqu\'il entre en combat, le Pokémon peut vérifier la capacité d\'un Pokémon adverse.', }, reckless: { - name: "Téméraire", - description: "Augmente la puissance des capacités occasionnant un contrecoup.", + name: 'Téméraire', + description: 'Augmente la puissance des capacités occasionnant un contrecoup.', }, multitype: { - name: "Multi-Type", - description: "Modifie le type du Pokémon en fonction de la plaque qu’il tient.", + name: 'Multi-Type', + description: 'Modifie le type du Pokémon en fonction de la plaque qu’il tient.', }, flowerGift: { - name: "Don Floral", - description: "Augmente l’Attaque et la Défense Spéciale du Pokémon et de ses alliés lorsque le soleil brille.", + name: 'Don Floral', + description: 'Augmente l’Attaque et la Défense Spéciale du Pokémon et de ses alliés lorsque le soleil brille.', }, badDreams: { - name: "Mauvais Rêve", - description: "Inflige des dégâts aux ennemis endormis.", + name: 'Mauvais Rêve', + description: 'Inflige des dégâts aux ennemis endormis.', }, pickpocket: { - name: "Pickpocket", - description: "Vole l’objet que tient l’attaquant quand le Pokémon subit une attaque directe.", + name: 'Pickpocket', + description: 'Vole l’objet que tient l’attaquant quand le Pokémon subit une attaque directe.', }, sheerForce: { - name: "Sans Limite", - description: "Les capacités ayant un effet additionnel le perdent, mais leur puissance augmente.", + name: 'Sans Limite', + description: 'Les capacités ayant un effet additionnel le perdent, mais leur puissance augmente.', }, contrary: { - name: "Contestation", - description: "Inverse les changements de stats : les augmentations de stats se transforment en baisses, et vice-versa.", + name: 'Contestation', + description: 'Inverse les changements de stats : les augmentations de stats se transforment en baisses, et vice-versa.', }, unnerve: { - name: "Tension", - description: "Fait stresser l’adversaire, ce qui l’empêche de manger des Baies.", + name: 'Tension', + description: 'Fait stresser l’adversaire, ce qui l’empêche de manger des Baies.', }, defiant: { - name: "Acharné", - description: "Augmente beaucoup l’Attaque du Pokémon quand ses stats sont baissées par l’adversaire.", + name: 'Acharné', + description: 'Augmente beaucoup l’Attaque du Pokémon quand ses stats sont baissées par l’adversaire.', }, defeatist: { - name: "Défaitiste", - description: "Le Pokémon devient défaitiste quand ses PV tombent à la moitié, et son Attaque et son Attaque Spéciale sont divisées par deux.", + name: 'Défaitiste', + description: 'Le Pokémon devient défaitiste quand ses PV tombent à la moitié, et son Attaque et son Attaque Spéciale sont divisées par deux.', }, cursedBody: { - name: "Corps Maudit", - description: "Quand le Pokémon est touché par une capacité adverse, il inflige parfois Entrave sur celle-ci.", + name: 'Corps Maudit', + description: 'Quand le Pokémon est touché par une capacité adverse, il inflige parfois Entrave sur celle-ci.', }, healer: { - name: "Cœur Soin", - description: "Soigne parfois une altération de statut d’un allié proche.", + name: 'Cœur Soin', + description: 'Soigne parfois une altération de statut d’un allié proche.', }, friendGuard: { - name: "Garde-Ami", - description: "Diminue les dégâts subis par les alliés.", + name: 'Garde-Ami', + description: 'Diminue les dégâts subis par les alliés.', }, weakArmor: { - name: "Armurouillée", - description: "Quand le Pokémon est touché par une capacité physique, sa Défense baisse mais sa Vitesse augmente beaucoup.", + name: 'Armurouillée', + description: 'Quand le Pokémon est touché par une capacité physique, sa Défense baisse mais sa Vitesse augmente beaucoup.', }, heavyMetal: { - name: "Heavy Metal", - description: "Double le poids du Pokémon.", + name: 'Heavy Metal', + description: 'Double le poids du Pokémon.', }, lightMetal: { - name: "Light Metal", - description: "Divise par deux le poids du Pokémon.", + name: 'Light Metal', + description: 'Divise par deux le poids du Pokémon.', }, multiscale: { - name: "Multiécaille", - description: "Le Pokémon subit moins de dégâts quand ses PV sont au maximum.", + name: 'Multiécaille', + description: 'Le Pokémon subit moins de dégâts quand ses PV sont au maximum.', }, toxicBoost: { - name: "Rage Poison", - description: "Augmente la puissance des capacités physiques quand le Pokémon est empoisonné.", + name: 'Rage Poison', + description: 'Augmente la puissance des capacités physiques quand le Pokémon est empoisonné.', }, flareBoost: { - name: "Rage Brûlure", - description: "Augmente la puissance des capacités spéciales quand le Pokémon est brulé.", + name: 'Rage Brûlure', + description: 'Augmente la puissance des capacités spéciales quand le Pokémon est brulé.', }, harvest: { - name: "Récolte", - description: "Permet de réutiliser une même Baie plusieurs fois.", + name: 'Récolte', + description: 'Permet de réutiliser une même Baie plusieurs fois.', }, telepathy: { - name: "Télépathe", - description: "Le Pokémon anticipe et évite les attaques de ses alliés.", + name: 'Télépathe', + description: 'Le Pokémon anticipe et évite les attaques de ses alliés.', }, moody: { - name: "Lunatique", - description: "Augmente beaucoup une stat du Pokémon et en baisse une autre au hasard à chaque tour.", + name: 'Lunatique', + description: 'Augmente beaucoup une stat du Pokémon et en baisse une autre au hasard à chaque tour.', }, overcoat: { - name: "Envelocape", - description: "Protège des dégâts occasionnés par les tempêtes de sable, ainsi que des effets des capacités qui libèrent de la poudre et des spores.", + name: 'Envelocape', + description: 'Protège des dégâts occasionnés par les tempêtes de sable, ainsi que des effets des capacités qui libèrent de la poudre et des spores.', }, poisonTouch: { - name: "Toxitouche", - description: "Peut empoisonner l’ennemi par simple contact.", + name: 'Toxitouche', + description: 'Peut empoisonner l’ennemi par simple contact.', }, regenerator: { - name: "Régé-Force", - description: "Restaure un peu de PV si le Pokémon est retiré du combat.", + name: 'Régé-Force', + description: 'Restaure un peu de PV si le Pokémon est retiré du combat.', }, bigPecks: { - name: "Cœur de Coq", - description: "Protège des effets qui baissent la Défense.", + name: 'Cœur de Coq', + description: 'Protège des effets qui baissent la Défense.', }, sandRush: { - name: "Baigne Sable", - description: "Augmente la Vitesse lors des tempêtes de sable.", + name: 'Baigne Sable', + description: 'Augmente la Vitesse lors des tempêtes de sable.', }, wonderSkin: { - name: "Peau Miracle", - description: "Le Pokémon résiste mieux aux capacités de statut.", + name: 'Peau Miracle', + description: 'Le Pokémon résiste mieux aux capacités de statut.', }, analytic: { - name: "Analyste", - description: "Augmente la puissance des capacités du Pokémon s’il attaque en dernier.", + name: 'Analyste', + description: 'Augmente la puissance des capacités du Pokémon s’il attaque en dernier.', }, illusion: { - name: "Illusion", - description: "Le Pokémon prend l’apparence du dernier membre de l’équipe pour tromper l’adversaire.", + name: 'Illusion', + description: 'Le Pokémon prend l’apparence du dernier membre de l’équipe pour tromper l’adversaire.', }, imposter: { - name: "Imposteur", - description: "Le Pokémon prend l’apparence du Pokémon adverse.", + name: 'Imposteur', + description: 'Le Pokémon prend l’apparence du Pokémon adverse.', }, infiltrator: { - name: "Infiltration", - description: "Traverse les barrières et les clones adverses pour attaquer directement.", + name: 'Infiltration', + description: 'Traverse les barrières et les clones adverses pour attaquer directement.', }, mummy: { - name: "Momie", - description: "Lorsque le Pokémon subit une attaque directe, le talent de l’attaquant est remplacé par Momie.", + name: 'Momie', + description: 'Lorsque le Pokémon subit une attaque directe, le talent de l’attaquant est remplacé par Momie.', }, moxie: { - name: "Impudence", - description: "Quand le Pokémon met un ennemi K.O., sa confiance en lui ne connait plus de limite et son Attaque augmente.", + name: 'Impudence', + description: 'Quand le Pokémon met un ennemi K.O., sa confiance en lui ne connait plus de limite et son Attaque augmente.', }, justified: { - name: "Cœur Noble", - description: "Réveille la noblesse du Pokémon lorsqu’il subit une attaque de type Ténèbres, ce qui augmente son Attaque.", + name: 'Cœur Noble', + description: 'Réveille la noblesse du Pokémon lorsqu’il subit une attaque de type Ténèbres, ce qui augmente son Attaque.', }, rattled: { - name: "Phobique", - description: "Si le Pokémon est touché par le talent Intimidation ou une attaque de type Ténèbres, Spectre ou Insecte, sa phobie se révèle et sa Vitesse augmente.", + name: 'Phobique', + description: 'Si le Pokémon est touché par le talent Intimidation ou une attaque de type Ténèbres, Spectre ou Insecte, sa phobie se révèle et sa Vitesse augmente.', }, magicBounce: { - name: "Miroir Magik", - description: "Annule les effets des capacités de statut subies par le Pokémon et les retourne à l’envoyeur.", + name: 'Miroir Magik', + description: 'Annule les effets des capacités de statut subies par le Pokémon et les retourne à l’envoyeur.', }, sapSipper: { - name: "Herbivore", - description: "Annule les attaques de type Plante subies par le Pokémon et augmente son Attaque.", + name: 'Herbivore', + description: 'Annule les attaques de type Plante subies par le Pokémon et augmente son Attaque.', }, prankster: { - name: "Farceur", - description: "Rend les capacités de statut du Pokémon prioritaires.", + name: 'Farceur', + description: 'Rend les capacités de statut du Pokémon prioritaires.', }, sandForce: { - name: "Force Sable", - description: "Augmente la puissance des capacités de types Roche, Sol et Acier en cas de tempête de sable.", + name: 'Force Sable', + description: 'Augmente la puissance des capacités de types Roche, Sol et Acier en cas de tempête de sable.', }, ironBarbs: { - name: "Épine de Fer", - description: "Inflige des dégâts à l’attaquant lorsque le Pokémon subit une attaque directe.", + name: 'Épine de Fer', + description: 'Inflige des dégâts à l’attaquant lorsque le Pokémon subit une attaque directe.', }, zenMode: { - name: "Mode Transe", - description: "Le Pokémon change de forme quand il lui reste moins de la moitié de ses PV.", + name: 'Mode Transe', + description: 'Le Pokémon change de forme quand il lui reste moins de la moitié de ses PV.', }, victoryStar: { - name: "Victorieux", - description: "Augmente la Précision du Pokémon et de ses alliés.", + name: 'Victorieux', + description: 'Augmente la Précision du Pokémon et de ses alliés.', }, turboblaze: { - name: "Turbo Brasier", - description: "Le Pokémon ignore les talents adverses qui auraient un effet sur ses capacités.", + name: 'Turbo Brasier', + description: 'Le Pokémon ignore les talents adverses qui auraient un effet sur ses capacités.', }, teravolt: { - name: "Téra-Voltage", - description: "Le Pokémon ignore les talents adverses qui auraient un effet sur ses capacités.", + name: 'Téra-Voltage', + description: 'Le Pokémon ignore les talents adverses qui auraient un effet sur ses capacités.', }, aromaVeil: { - name: "Aroma-Voile", - description: "Protège le Pokémon et ses alliés des effets limitant le libre arbitre.", + name: 'Aroma-Voile', + description: 'Protège le Pokémon et ses alliés des effets limitant le libre arbitre.', }, flowerVeil: { - name: "Flora-Voile", - description: "Empêche les alliés de type Plante de subir des baisses de stats et des altérations de statut.", + name: 'Flora-Voile', + description: 'Empêche les alliés de type Plante de subir des baisses de stats et des altérations de statut.', }, cheekPouch: { - name: "Bajoues", - description: "Le Pokémon récupère des PV lorsqu’il consomme n’importe quelle Baie en plus de bénéficier de ses effets habituels.", + name: 'Bajoues', + description: 'Le Pokémon récupère des PV lorsqu’il consomme n’importe quelle Baie en plus de bénéficier de ses effets habituels.', }, protean: { - name: "Protéen", - description: "Le Pokémon prend le type de la capacité qu’il utilise. Ce talent ne peut se déclencher qu’une fois par entrée au combat du Pokémon.", + name: 'Protéen', + description: 'Le Pokémon prend le type de la capacité qu’il utilise. Ce talent ne peut se déclencher qu’une fois par entrée au combat du Pokémon.', }, furCoat: { - name: "Toison Épaisse", - description: "Divise par deux les dégâts des capacités physiques subies par le Pokémon.", + name: 'Toison Épaisse', + description: 'Divise par deux les dégâts des capacités physiques subies par le Pokémon.', }, magician: { - name: "Magicien", - description: "Les capacités volent aussi l’objet tenu par la cible.", + name: 'Magicien', + description: 'Les capacités volent aussi l’objet tenu par la cible.', }, bulletproof: { - name: "Pare-Balles", - description: "Protège de certaines capacités lançant des projectiles comme des bombes et des balles.", + name: 'Pare-Balles', + description: 'Protège de certaines capacités lançant des projectiles comme des bombes et des balles.', }, competitive: { - name: "Battant", - description: "Augmente beaucoup l’Attaque Spéciale du Pokémon quand ses stats ont été baissées par l’adversaire.", + name: 'Battant', + description: 'Augmente beaucoup l’Attaque Spéciale du Pokémon quand ses stats ont été baissées par l’adversaire.', }, strongJaw: { - name: "Prognathe", - description: "Le Pokémon a une mâchoire robuste qui augmente la puissance de ses capacités de morsure.", + name: 'Prognathe', + description: 'Le Pokémon a une mâchoire robuste qui augmente la puissance de ses capacités de morsure.', }, refrigerate: { - name: "Peau Gelée", - description: "Les capacités de type Normal deviennent de type Glace. Leur puissance augmente légèrement.", + name: 'Peau Gelée', + description: 'Les capacités de type Normal deviennent de type Glace. Leur puissance augmente légèrement.', }, sweetVeil: { - name: "Gluco-Voile", - description: "Le Pokémon et ses alliés ne peuvent pas s’endormir.", + name: 'Gluco-Voile', + description: 'Le Pokémon et ses alliés ne peuvent pas s’endormir.', }, stanceChange: { - name: "Déclic Tactique", - description: "Le Pokémon prend la Forme Assaut lorsqu’il utilise une capacité offensive, et la Forme Parade lorsqu’il utilise Bouclier Royal.", + name: 'Déclic Tactique', + description: 'Le Pokémon prend la Forme Assaut lorsqu’il utilise une capacité offensive, et la Forme Parade lorsqu’il utilise Bouclier Royal.', }, galeWings: { - name: "Ailes Bourrasque", - description: "Quand les PV du Pokémon sont au maximum, ses capacités de type Vol sont prioritaires.", + name: 'Ailes Bourrasque', + description: 'Quand les PV du Pokémon sont au maximum, ses capacités de type Vol sont prioritaires.', }, megaLauncher: { - name: "Méga Blaster", - description: "Augmente la puissance des capacités qui projettent une aura.", + name: 'Méga Blaster', + description: 'Augmente la puissance des capacités qui projettent une aura.', }, grassPelt: { - name: "Toison Herbue", - description: "Augmente la Défense du Pokémon si un champ herbu est actif.", + name: 'Toison Herbue', + description: 'Augmente la Défense du Pokémon si un champ herbu est actif.', }, symbiosis: { - name: "Symbiose", - description: "Quand les alliés utilisent l’objet qu’ils tiennent, le Pokémon leur donne l’objet qu’il tient en remplacement.", + name: 'Symbiose', + description: 'Quand les alliés utilisent l’objet qu’ils tiennent, le Pokémon leur donne l’objet qu’il tient en remplacement.', }, toughClaws: { - name: "Griffe Dure", - description: "Augmente la puissance des attaques directes du Pokémon.", + name: 'Griffe Dure', + description: 'Augmente la puissance des attaques directes du Pokémon.', }, pixilate: { - name: "Peau Féérique", - description: "Les capacités de type Normal deviennent de type Fée. Leur puissance augmente légèrement.", + name: 'Peau Féérique', + description: 'Les capacités de type Normal deviennent de type Fée. Leur puissance augmente légèrement.', }, gooey: { - name: "Poisseux", - description: "Baisse la Vitesse de l’attaquant lorsque le Pokémon subit une attaque directe.", + name: 'Poisseux', + description: 'Baisse la Vitesse de l’attaquant lorsque le Pokémon subit une attaque directe.', }, aerilate: { - name: "Peau Céleste", - description: "Les capacités de type Normal deviennent de type Vol. Leur puissance augmente légèrement.", + name: 'Peau Céleste', + description: 'Les capacités de type Normal deviennent de type Vol. Leur puissance augmente légèrement.', }, parentalBond: { - name: "Amour Filial", - description: "La mère et son petit unissent leurs forces pour attaquer deux fois d’affilée.", + name: 'Amour Filial', + description: 'La mère et son petit unissent leurs forces pour attaquer deux fois d’affilée.', }, darkAura: { - name: "Aura Ténébreuse", - description: "Augmente la puissance des capacités de type Ténèbres de tous les Pokémon.", + name: 'Aura Ténébreuse', + description: 'Augmente la puissance des capacités de type Ténèbres de tous les Pokémon.', }, fairyAura: { - name: "Aura Féérique", - description: "Augmente la puissance des capacités de type Fée de tous les Pokémon.", + name: 'Aura Féérique', + description: 'Augmente la puissance des capacités de type Fée de tous les Pokémon.', }, auraBreak: { - name: "Aura Inversée", - description: "Inverse l’effet des talents « Aura » afin que ceux-ci baissent la puissance des capacités affectées au lieu de l’augmenter.", + name: 'Aura Inversée', + description: 'Inverse l’effet des talents « Aura » afin que ceux-ci baissent la puissance des capacités affectées au lieu de l’augmenter.', }, primordialSea: { - name: "Mer Primaire", - description: "Altère les conditions météo pour neutraliser les attaques de type Feu.", + name: 'Mer Primaire', + description: 'Altère les conditions météo pour neutraliser les attaques de type Feu.', }, desolateLand: { - name: "Terre Finale", - description: "Altère les conditions météo pour neutraliser les attaques de type Eau.", + name: 'Terre Finale', + description: 'Altère les conditions météo pour neutraliser les attaques de type Eau.', }, deltaStream: { - name: "Souffle Delta", - description: "Altère les conditions météo pour annuler les faiblesses du type Vol.", + name: 'Souffle Delta', + description: 'Altère les conditions météo pour annuler les faiblesses du type Vol.', }, stamina: { - name: "Endurance", - description: "Augmente la Défense du Pokémon lorsqu’il subit une attaque.", + name: 'Endurance', + description: 'Augmente la Défense du Pokémon lorsqu’il subit une attaque.', }, wimpOut: { - name: "Escampette", - description: "Le Pokémon perd confiance quand ses PV tombent à la moitié et s’enfuit dans sa Poké Ball.", + name: 'Escampette', + description: 'Le Pokémon perd confiance quand ses PV tombent à la moitié et s’enfuit dans sa Poké Ball.', }, emergencyExit: { - name: "Repli Tactique", - description: "Le Pokémon évite les situations inutilement dangereuses. Quand ses PV tombent à la moitié, il se réfugie dans sa Poké Ball.", + name: 'Repli Tactique', + description: 'Le Pokémon évite les situations inutilement dangereuses. Quand ses PV tombent à la moitié, il se réfugie dans sa Poké Ball.', }, waterCompaction: { - name: "Sable Humide", - description: "Augmente beaucoup la Défense du Pokémon quand il subit une capacité de type Eau.", + name: 'Sable Humide', + description: 'Augmente beaucoup la Défense du Pokémon quand il subit une capacité de type Eau.', }, merciless: { - name: "Cruauté", - description: "Lorsque le Pokémon attaque un adversaire empoisonné, le coup est forcément critique.", + name: 'Cruauté', + description: 'Lorsque le Pokémon attaque un adversaire empoisonné, le coup est forcément critique.', }, shieldsDown: { - name: "Bouclier-Carcan", - description: "Lorsque le Pokémon perd la moitié de ses PV, son enveloppe se brise et il adopte une posture offensive.", + name: 'Bouclier-Carcan', + description: 'Lorsque le Pokémon perd la moitié de ses PV, son enveloppe se brise et il adopte une posture offensive.', }, stakeout: { - name: "Filature", - description: "Lorsque le Pokémon attaque une cible qui vient d’entrer sur le terrain en remplacement d’un autre Pokémon, les dégâts infligés sont doublés.", + name: 'Filature', + description: 'Lorsque le Pokémon attaque une cible qui vient d’entrer sur le terrain en remplacement d’un autre Pokémon, les dégâts infligés sont doublés.', }, waterBubble: { - name: "Aquabulle", - description: "Réduit la puissance des capacités de type Feu subies par le Pokémon. Il est également immunisé contre les brulures.", + name: 'Aquabulle', + description: 'Réduit la puissance des capacités de type Feu subies par le Pokémon. Il est également immunisé contre les brulures.', }, steelworker: { - name: "Expert Acier", - description: "Augmente la puissance des attaques de type Acier.", + name: 'Expert Acier', + description: 'Augmente la puissance des attaques de type Acier.', }, berserk: { - name: "Folle Furie", - description: "Augmente l’Attaque Spéciale du Pokémon lorsque ses PV tombent à la moitié à cause d’une attaque de l’adversaire.", + name: 'Folle Furie', + description: 'Augmente l’Attaque Spéciale du Pokémon lorsque ses PV tombent à la moitié à cause d’une attaque de l’adversaire.', }, slushRush: { - name: "Chasse-Neige", - description: "Augmente la Vitesse du Pokémon quand il neige.", + name: 'Chasse-Neige', + description: 'Augmente la Vitesse du Pokémon quand il neige.', }, longReach: { - name: "Longue Portée", - description: "Le Pokémon est capable d’utiliser toutes ses capacités sans entrer en contact direct avec sa cible.", + name: 'Longue Portée', + description: 'Le Pokémon est capable d’utiliser toutes ses capacités sans entrer en contact direct avec sa cible.', }, liquidVoice: { - name: "Hydrata-Son", - description: "Toutes les attaques sonores du Pokémon prennent le type Eau.", + name: 'Hydrata-Son', + description: 'Toutes les attaques sonores du Pokémon prennent le type Eau.', }, triage: { - name: "Prioguérison", - description: "Rend les capacités de soin prioritaires.", + name: 'Prioguérison', + description: 'Rend les capacités de soin prioritaires.', }, galvanize: { - name: "Peau Électrique", - description: "Les capacités de type Normal deviennent de type Électrik. Leur puissance augmente légèrement.", + name: 'Peau Électrique', + description: 'Les capacités de type Normal deviennent de type Électrik. Leur puissance augmente légèrement.', }, surgeSurfer: { - name: "Surf Caudal", - description: "La Vitesse du Pokémon est doublée sur un champ électrifié.", + name: 'Surf Caudal', + description: 'La Vitesse du Pokémon est doublée sur un champ électrifié.', }, schooling: { - name: "Banc", - description: "Le Pokémon se rassemble avec ses congénères quand ses PV sont élevés. Quand il ne lui reste plus beaucoup de PV, le banc se disperse.", + name: 'Banc', + description: 'Le Pokémon se rassemble avec ses congénères quand ses PV sont élevés. Quand il ne lui reste plus beaucoup de PV, le banc se disperse.', }, disguise: { - name: "Fantômasque", - description: "Le déguisement qui recouvre le corps du Pokémon est capable de le protéger d’une attaque.", + name: 'Fantômasque', + description: 'Le déguisement qui recouvre le corps du Pokémon est capable de le protéger d’une attaque.', }, battleBond: { - name: "Synergie", - description: "En battant un ennemi, ce Pokémon renforce ses liens avec son Dresseur, ce qui augmente son Attaque, son Attaque Spéciale et sa Vitesse.", + name: 'Synergie', + description: 'En battant un ennemi, ce Pokémon renforce ses liens avec son Dresseur, ce qui augmente son Attaque, son Attaque Spéciale et sa Vitesse.', }, powerConstruct: { - name: "Rassemblement", - description: "Lorsque le Pokémon perd la moitié de ses PV, ses Cellules se rassemblent pour l’encourager, ce qui lui permet de prendre sa Forme Parfaite.", + name: 'Rassemblement', + description: 'Lorsque le Pokémon perd la moitié de ses PV, ses Cellules se rassemblent pour l’encourager, ce qui lui permet de prendre sa Forme Parfaite.', }, corrosion: { - name: "Corrosion", - description: "Permet d’empoisonner les Pokémon de type Acier ou Poison.", + name: 'Corrosion', + description: 'Permet d’empoisonner les Pokémon de type Acier ou Poison.', }, comatose: { - name: "Hypersommeil", - description: "Le Pokémon rêve en permanence et ne se réveille jamais. Il est capable d’attaquer normalement tout en dormant.", + name: 'Hypersommeil', + description: 'Le Pokémon rêve en permanence et ne se réveille jamais. Il est capable d’attaquer normalement tout en dormant.', }, queenlyMajesty: { - name: "Prestance Royale", - description: "L’adversaire est impressionné par la majesté du Pokémon et ne peut pas le viser avec une capacité prioritaire.", + name: 'Prestance Royale', + description: 'L’adversaire est impressionné par la majesté du Pokémon et ne peut pas le viser avec une capacité prioritaire.', }, innardsOut: { - name: "Expuls’Organes", - description: "Le Pokémon inflige à l’adversaire l’ayant mis K.O. des dégâts égaux au nombre de PV qu’il lui restait avant le coup de grâce.", + name: 'Expuls’Organes', + description: 'Le Pokémon inflige à l’adversaire l’ayant mis K.O. des dégâts égaux au nombre de PV qu’il lui restait avant le coup de grâce.', }, dancer: { - name: "Danseuse", - description: "Si n’importe quel Pokémon utilise une capacité dansante, le Pokémon utilise immédiatement cette danse lui aussi.", + name: 'Danseuse', + description: 'Si n’importe quel Pokémon utilise une capacité dansante, le Pokémon utilise immédiatement cette danse lui aussi.', }, battery: { - name: "Batterie", - description: "Augmente la puissance des capacités spéciales des alliés.", + name: 'Batterie', + description: 'Augmente la puissance des capacités spéciales des alliés.', }, fluffy: { - name: "Boule de Poils", - description: "Divise par deux les dégâts des attaques directes subies par le Pokémon, mais double les dégâts des capacités de type Feu.", + name: 'Boule de Poils', + description: 'Divise par deux les dégâts des attaques directes subies par le Pokémon, mais double les dégâts des capacités de type Feu.', }, dazzling: { - name: "Corps Coloré", - description: "L’adversaire est abasourdi par le Pokémon et ne peut pas le viser avec une capacité prioritaire.", + name: 'Corps Coloré', + description: 'L’adversaire est abasourdi par le Pokémon et ne peut pas le viser avec une capacité prioritaire.', }, soulHeart: { - name: "Animacœur", - description: "Augmente l’Attaque Spéciale du Pokémon lorsqu’un autre Pokémon est mis K.O.", + name: 'Animacœur', + description: 'Augmente l’Attaque Spéciale du Pokémon lorsqu’un autre Pokémon est mis K.O.', }, tanglingHair: { - name: "Mèche Rebelle", - description: "Baisse la Vitesse de l’attaquant lorsque le Pokémon subit une attaque directe.", + name: 'Mèche Rebelle', + description: 'Baisse la Vitesse de l’attaquant lorsque le Pokémon subit une attaque directe.', }, receiver: { - name: "Receveur", - description: "Le Pokémon reçoit le talent d’un allié mis K.O.", + name: 'Receveur', + description: 'Le Pokémon reçoit le talent d’un allié mis K.O.', }, powerofAlchemy: { - name: "Osmose", - description: "Le Pokémon acquiert le talent d’un allié mis K.O.", + name: 'Osmose', + description: 'Le Pokémon acquiert le talent d’un allié mis K.O.', }, beastBoost: { - name: "Boost Chimère", - description: "Augmente la stat la plus élevée du Pokémon quand il met K.O. un autre Pokémon.", + name: 'Boost Chimère', + description: 'Augmente la stat la plus élevée du Pokémon quand il met K.O. un autre Pokémon.', }, rKSSystem: { - name: "Système Alpha", - description: "Change le type du Pokémon en fonction de la ROM équipée.", + name: 'Système Alpha', + description: 'Change le type du Pokémon en fonction de la ROM équipée.', }, electricSurge: { - name: "Créa-Élec", - description: "Le Pokémon crée un champ électrifié au moment où il entre au combat.", + name: 'Créa-Élec', + description: 'Le Pokémon crée un champ électrifié au moment où il entre au combat.', }, psychicSurge: { - name: "Créa-Psy", - description: "Le Pokémon crée un champ psychique au moment où il entre au combat.", + name: 'Créa-Psy', + description: 'Le Pokémon crée un champ psychique au moment où il entre au combat.', }, mistySurge: { - name: "Créa-Brume", - description: "Le Pokémon crée un champ brumeux au moment où il entre au combat.", + name: 'Créa-Brume', + description: 'Le Pokémon crée un champ brumeux au moment où il entre au combat.', }, grassySurge: { - name: "Créa-Herbe", - description: "Le Pokémon crée un champ herbu au moment où il entre au combat.", + name: 'Créa-Herbe', + description: 'Le Pokémon crée un champ herbu au moment où il entre au combat.', }, fullMetalBody: { - name: "Métallo-Garde", - description: "Empêche les stats du Pokémon de baisser à cause du talent ou d’une capacité de l’adversaire.", + name: 'Métallo-Garde', + description: 'Empêche les stats du Pokémon de baisser à cause du talent ou d’une capacité de l’adversaire.', }, shadowShield: { - name: "Spectro-Bouclier", - description: "Le Pokémon subit moins de dégâts quand ses PV sont au maximum.", + name: 'Spectro-Bouclier', + description: 'Le Pokémon subit moins de dégâts quand ses PV sont au maximum.', }, prismArmor: { - name: "Prisme-Armure", - description: "Diminue la puissance des attaques super efficaces subies.", + name: 'Prisme-Armure', + description: 'Diminue la puissance des attaques super efficaces subies.', }, neuroforce: { - name: "Cérébro-Force", - description: "Augmente encore plus la puissance des attaques super efficaces.", + name: 'Cérébro-Force', + description: 'Augmente encore plus la puissance des attaques super efficaces.', }, intrepidSword: { - name: "Lame Indomptable", - description: "Augmente l’Attaque du Pokémon la première fois qu’il entre au combat.", + name: 'Lame Indomptable', + description: 'Augmente l’Attaque du Pokémon la première fois qu’il entre au combat.', }, dauntlessShield: { - name: "Égide Inflexible", - description: "Augmente la Défense du Pokémon la première fois qu’il entre au combat.", + name: 'Égide Inflexible', + description: 'Augmente la Défense du Pokémon la première fois qu’il entre au combat.', }, libero: { - name: "Libéro", - description: "Le Pokémon prend le type de la capacité qu’il utilise. Ce talent ne peut se déclencher qu’une fois par entrée au combat du Pokémon.", + name: 'Libéro', + description: 'Le Pokémon prend le type de la capacité qu’il utilise. Ce talent ne peut se déclencher qu’une fois par entrée au combat du Pokémon.', }, ballFetch: { - name: "Ramasse Ball", - description: "Si le Pokémon ne tient aucun objet, il ramassera la Poké Ball lors du premier lancer raté du combat.", + name: 'Ramasse Ball', + description: 'Si le Pokémon ne tient aucun objet, il ramassera la Poké Ball lors du premier lancer raté du combat.', }, cottonDown: { - name: "Effilochage", - description: "Quand le Pokémon est touché par une attaque, il dissémine des aigrettes qui diminuent la Vitesse de tout le monde, sauf la sienne.", + name: 'Effilochage', + description: 'Quand le Pokémon est touché par une attaque, il dissémine des aigrettes qui diminuent la Vitesse de tout le monde, sauf la sienne.', }, propellerTail: { - name: "Propulseur", - description: "Permet d’ignorer l’effet des capacités ou des talents qui attirent les capacités.", + name: 'Propulseur', + description: 'Permet d’ignorer l’effet des capacités ou des talents qui attirent les capacités.', }, mirrorArmor: { - name: "Armure Miroir", - description: "Le Pokémon renvoie les effets réducteurs de stats qu’il reçoit.", + name: 'Armure Miroir', + description: 'Le Pokémon renvoie les effets réducteurs de stats qu’il reçoit.', }, gulpMissile: { - name: "Dégobage", - description: "Quand le Pokémon utilise Surf ou Plongée, il revient avec une proie. Lorsqu’il subit des dégâts par la suite, il attaque en recrachant sa proie.", + name: 'Dégobage', + description: 'Quand le Pokémon utilise Surf ou Plongée, il revient avec une proie. Lorsqu’il subit des dégâts par la suite, il attaque en recrachant sa proie.', }, stalwart: { - name: "Nerfs d’Acier", - description: "Permet d’ignorer l’effet des capacités ou des talents qui attirent les capacités.", + name: 'Nerfs d’Acier', + description: 'Permet d’ignorer l’effet des capacités ou des talents qui attirent les capacités.', }, steamEngine: { - name: "Turbine", - description: "Lorsque le Pokémon est touché par des capacités de type Eau ou Feu, sa Vitesse augmente énormément.", + name: 'Turbine', + description: 'Lorsque le Pokémon est touché par des capacités de type Eau ou Feu, sa Vitesse augmente énormément.', }, punkRock: { - name: "Punk Rock", - description: "Augmente la puissance des capacités basées sur le son. Le Pokémon ne subit que la moitié des dégâts quand il est touché par ce genre de capacités.", + name: 'Punk Rock', + description: 'Augmente la puissance des capacités basées sur le son. Le Pokémon ne subit que la moitié des dégâts quand il est touché par ce genre de capacités.', }, sandSpit: { - name: "Expul’Sable", - description: "Le Pokémon déclenche une tempête de sable quand il subit une attaque.", + name: 'Expul’Sable', + description: 'Le Pokémon déclenche une tempête de sable quand il subit une attaque.', }, iceScales: { - name: "Écailles Glacées", - description: "Le Pokémon est protégé par des écailles de glace. Les dégâts qu’il subit par des capacités spéciales sont divisés par deux.", + name: 'Écailles Glacées', + description: 'Le Pokémon est protégé par des écailles de glace. Les dégâts qu’il subit par des capacités spéciales sont divisés par deux.', }, ripen: { - name: "Mûrissement", - description: "Le Pokémon fait murir la Baie qu’il tient et double ainsi son effet.", + name: 'Mûrissement', + description: 'Le Pokémon fait murir la Baie qu’il tient et double ainsi son effet.', }, iceFace: { - name: "Tête de Gel", - description: "Le glaçon sur sa tête encaisse les attaques physiques à la place du Pokémon, mais sa destruction modifie son apparence. Le glaçon se reforme quand il neige.", + name: 'Tête de Gel', + description: 'Le glaçon sur sa tête encaisse les attaques physiques à la place du Pokémon, mais sa destruction modifie son apparence. Le glaçon se reforme quand il neige.', }, powerSpot: { - name: "Cercle d’Énergie", - description: "Augmente la puissance des capacités des Pokémon qui se trouvent à proximité.", + name: 'Cercle d’Énergie', + description: 'Augmente la puissance des capacités des Pokémon qui se trouvent à proximité.', }, mimicry: { - name: "Mimétisme", - description: "Le Pokémon adopte le même type que le terrain lorsqu’un champ est actif.", + name: 'Mimétisme', + description: 'Le Pokémon adopte le même type que le terrain lorsqu’un champ est actif.', }, screenCleaner: { - name: "Brise-Barrière", - description: "Quand le Pokémon entre au combat, les effets de Mur Lumière, Protection et Voile Aurore disparaissent pour les alliés comme pour les adversaires.", + name: 'Brise-Barrière', + description: 'Quand le Pokémon entre au combat, les effets de Mur Lumière, Protection et Voile Aurore disparaissent pour les alliés comme pour les adversaires.', }, steelySpirit: { - name: "Boost Acier", - description: "Augmente la puissance des attaques de type Acier du Pokémon et de ses alliés.", + name: 'Boost Acier', + description: 'Augmente la puissance des attaques de type Acier du Pokémon et de ses alliés.', }, perishBody: { - name: "Corps Condamné", - description: "Lorsque le Pokémon est directement touché par une capacité, l’assaillant et lui tomberont K.O. dans trois tours, à moins qu’ils ne soient remplacés entre temps.", + name: 'Corps Condamné', + description: 'Lorsque le Pokémon est directement touché par une capacité, l’assaillant et lui tomberont K.O. dans trois tours, à moins qu’ils ne soient remplacés entre temps.', }, wanderingSpirit: { - name: "Âme Vagabonde", - description: "Lorsque le Pokémon est directement touché par une capacité, il échange son talent avec celui de l’assaillant.", + name: 'Âme Vagabonde', + description: 'Lorsque le Pokémon est directement touché par une capacité, il échange son talent avec celui de l’assaillant.', }, gorillaTactics: { - name: "Entêtement", - description: "Augmente l’Attaque, mais empêche d’utiliser toute autre capacité que celle utilisée en premier par le Pokémon.", + name: 'Entêtement', + description: 'Augmente l’Attaque, mais empêche d’utiliser toute autre capacité que celle utilisée en premier par le Pokémon.', }, neutralizingGas: { - name: "Gaz Inhibiteur", - description: "Si un Pokémon avec Gaz Inhibiteur est sur le terrain, les effets des talents de tous les autres Pokémon ne s’activent pas ou sont neutralisés.", + name: 'Gaz Inhibiteur', + description: 'Si un Pokémon avec Gaz Inhibiteur est sur le terrain, les effets des talents de tous les autres Pokémon ne s’activent pas ou sont neutralisés.', }, pastelVeil: { - name: "Voile Pastel", - description: "Protège le Pokémon et ses alliés contre toutes les altérations de statut liées à l’empoisonnement.", + name: 'Voile Pastel', + description: 'Protège le Pokémon et ses alliés contre toutes les altérations de statut liées à l’empoisonnement.', }, hungerSwitch: { - name: "Déclic Fringale", - description: "À la fin de chaque tour, le Pokémon alterne entre ses formes Mode Rassasié et Mode Affamé.", + name: 'Déclic Fringale', + description: 'À la fin de chaque tour, le Pokémon alterne entre ses formes Mode Rassasié et Mode Affamé.', }, quickDraw: { - name: "Tir Vif", - description: "Permet parfois au Pokémon d’agir en premier.", + name: 'Tir Vif', + description: 'Permet parfois au Pokémon d’agir en premier.', }, unseenFist: { - name: "Poing Invisible", - description: "Si le Pokémon utilise une attaque directe, celle-ci pourra toucher la cible même si elle se protège.", + name: 'Poing Invisible', + description: 'Si le Pokémon utilise une attaque directe, celle-ci pourra toucher la cible même si elle se protège.', }, curiousMedicine: { - name: "Breuvage Suspect", - description: "Quand il entre au combat, le Pokémon répand une substance qui annule les changements de stats de ses alliés.", + name: 'Breuvage Suspect', + description: 'Quand il entre au combat, le Pokémon répand une substance qui annule les changements de stats de ses alliés.', }, transistor: { - name: "Transistor", - description: "Augmente la puissance des capacités de type Électrik.", + name: 'Transistor', + description: 'Augmente la puissance des capacités de type Électrik.', }, dragonsMaw: { - name: "Dent de Dragon", - description: "Augmente la puissance des capacités de type Dragon.", + name: 'Dent de Dragon', + description: 'Augmente la puissance des capacités de type Dragon.', }, chillingNeigh: { - name: "Blanche Ruade", - description: "Quand le Pokémon met un ennemi K.O., il émet un hennissement glaçant, ce qui augmente son Attaque.", + name: 'Blanche Ruade', + description: 'Quand le Pokémon met un ennemi K.O., il émet un hennissement glaçant, ce qui augmente son Attaque.', }, grimNeigh: { - name: "Sombre Ruade", - description: "Quand le Pokémon met un ennemi K.O., il émet un hennissement terrifiant qui augmente son Attaque Spéciale.", + name: 'Sombre Ruade', + description: 'Quand le Pokémon met un ennemi K.O., il émet un hennissement terrifiant qui augmente son Attaque Spéciale.', }, asOneGlastrier: { - name: "Osmose Équine", - description: "Les talents Tension de Sylveroy et Blanche Ruade de Blizzeval sont cumulés.", + name: 'Osmose Équine', + description: 'Les talents Tension de Sylveroy et Blanche Ruade de Blizzeval sont cumulés.', }, asOneSpectrier: { - name: "Osmose Équine", - description: "Les talents Tension de Sylveroy et Sombre Ruade de Spectreval sont cumulés.", + name: 'Osmose Équine', + description: 'Les talents Tension de Sylveroy et Sombre Ruade de Spectreval sont cumulés.', }, lingeringAroma: { - name: "Odeur Tenace", - description: "Lorsque le Pokémon subit une attaque directe, le talent de l’attaquant est remplacé par Odeur Tenace.", + name: 'Odeur Tenace', + description: 'Lorsque le Pokémon subit une attaque directe, le talent de l’attaquant est remplacé par Odeur Tenace.', }, seedSower: { - name: "Semencier", - description: "Le Pokémon crée un champ herbu quand il subit une attaque.", + name: 'Semencier', + description: 'Le Pokémon crée un champ herbu quand il subit une attaque.', }, thermalExchange: { - name: "Thermodynamique", - description: "Lorsque le Pokémon est touché par une capacité de type Feu, il ne subit aucun dégât et son Attaque augmente.", + name: 'Thermodynamique', + description: 'Lorsque le Pokémon est touché par une capacité de type Feu, il ne subit aucun dégât et son Attaque augmente.', }, angerShell: { - name: "Courroupace", - description: "Le Pokémon enrage s’il a moins de la moitié de ses PV après avoir subi une attaque. Sa Déf. et sa Déf. Spé. baissent, et son Atq., son Atq. Spé. et sa Vit. augmentent.", + name: 'Courroupace', + description: 'Le Pokémon enrage s’il a moins de la moitié de ses PV après avoir subi une attaque. Sa Déf. et sa Déf. Spé. baissent, et son Atq., son Atq. Spé. et sa Vit. augmentent.', }, purifyingSalt: { - name: "Sel Purificateur", - description: "Le sel pur immunise le Pokémon contre les altérations de statut, et diminue de moitié les dégâts des capacités de type Spectre.", + name: 'Sel Purificateur', + description: 'Le sel pur immunise le Pokémon contre les altérations de statut, et diminue de moitié les dégâts des capacités de type Spectre.', }, wellBakedBody: { - name: "Bien Cuit", - description: "Si le Pokémon est touché par une capacité de type Feu, il ne subit aucun dégât et sa Défense augmente beaucoup.", + name: 'Bien Cuit', + description: 'Si le Pokémon est touché par une capacité de type Feu, il ne subit aucun dégât et sa Défense augmente beaucoup.', }, windRider: { - name: "Aéroporté", - description: "L’Attaque du Pokémon augmente si un vent arrière souffle ou s’il est touché par une capacité faisant appel au vent. Dans ce dernier cas, il ne subit aucun dégât.", + name: 'Aéroporté', + description: 'L’Attaque du Pokémon augmente si un vent arrière souffle ou s’il est touché par une capacité faisant appel au vent. Dans ce dernier cas, il ne subit aucun dégât.', }, guardDog: { - name: "Chien de Garde", - description: "L’Attaque du Pokémon augmente s’il subit l’effet du talent Intimidation. Les capacités ou objets qui font changer de Pokémon n’ont aucun effet sur lui.", + name: 'Chien de Garde', + description: 'L’Attaque du Pokémon augmente s’il subit l’effet du talent Intimidation. Les capacités ou objets qui font changer de Pokémon n’ont aucun effet sur lui.', }, rockyPayload: { - name: "Porte-Roche", - description: "Augmente la puissance des capacités de type Roche.", + name: 'Porte-Roche', + description: 'Augmente la puissance des capacités de type Roche.', }, windPower: { - name: "Turbine Éolienne", - description: "Si le Pokémon est touché par une capacité faisant appel au vent, il se charge en électricité.", + name: 'Turbine Éolienne', + description: 'Si le Pokémon est touché par une capacité faisant appel au vent, il se charge en électricité.', }, zeroToHero: { - name: "Supermutation", - description: "Le Pokémon prend sa Forme Super en quittant le combat.", + name: 'Supermutation', + description: 'Le Pokémon prend sa Forme Super en quittant le combat.', }, commander: { - name: "Commandant", - description: "Si un Oyacata allié est sur le terrain quand ce Pokémon rejoint le combat, ce dernier entre dans sa bouche et devient son commandant.", + name: 'Commandant', + description: 'Si un Oyacata allié est sur le terrain quand ce Pokémon rejoint le combat, ce dernier entre dans sa bouche et devient son commandant.', }, electromorphosis: { - name: "Grecharge", - description: "Si le Pokémon subit des dégâts, il se charge en électricité.", + name: 'Grecharge', + description: 'Si le Pokémon subit des dégâts, il se charge en électricité.', }, protosynthesis: { - name: "Paléosynthèse", - description: "Quand le soleil brille ou que le Pokémon tient une capsule d’Énergie Booster, sa stat la plus élevée augmente.", + name: 'Paléosynthèse', + description: 'Quand le soleil brille ou que le Pokémon tient une capsule d’Énergie Booster, sa stat la plus élevée augmente.', }, quarkDrive: { - name: "Charge Quantique", - description: "Quand un champ électrifié est actif ou que le Pokémon tient une capsule d’Énergie Booster, sa stat la plus élevée augmente.", + name: 'Charge Quantique', + description: 'Quand un champ électrifié est actif ou que le Pokémon tient une capsule d’Énergie Booster, sa stat la plus élevée augmente.', }, goodAsGold: { - name: "Corps en Or", - description: "Le corps en or pur et robuste du Pokémon l’immunise contre les capacités de statut des autres Pokémon.", + name: 'Corps en Or', + description: 'Le corps en or pur et robuste du Pokémon l’immunise contre les capacités de statut des autres Pokémon.', }, vesselOfRuin: { - name: "Urne du Fléau", - description: "Le pouvoir de l’urne qui appelle le fléau affaiblit l’Attaque Spéciale de tous les autres Pokémon.", + name: 'Urne du Fléau', + description: 'Le pouvoir de l’urne qui appelle le fléau affaiblit l’Attaque Spéciale de tous les autres Pokémon.', }, swordOfRuin: { - name: "Épée du Fléau", - description: "Le pouvoir de l’épée qui appelle le fléau affaiblit la Défense de tous les autres Pokémon.", + name: 'Épée du Fléau', + description: 'Le pouvoir de l’épée qui appelle le fléau affaiblit la Défense de tous les autres Pokémon.', }, tabletsOfRuin: { - name: "Bois du Fléau", - description: "Le pouvoir du bois qui appelle le fléau affaiblit l’Attaque de tous les autres Pokémon.", + name: 'Bois du Fléau', + description: 'Le pouvoir du bois qui appelle le fléau affaiblit l’Attaque de tous les autres Pokémon.', }, beadsOfRuin: { - name: "Perles du Fléau", - description: "Le pouvoir des perles qui appellent le fléau affaiblit la Défense Spéciale de tous les autres Pokémon.", + name: 'Perles du Fléau', + description: 'Le pouvoir des perles qui appellent le fléau affaiblit la Défense Spéciale de tous les autres Pokémon.', }, orichalcumPulse: { - name: "Pouls Orichalque", - description: "Le Pokémon invoque le soleil quand il rejoint le combat. Quand les rayons du soleil sont intenses, une pulsation primitive augmente son Attaque.", + name: 'Pouls Orichalque', + description: 'Le Pokémon invoque le soleil quand il rejoint le combat. Quand les rayons du soleil sont intenses, une pulsation primitive augmente son Attaque.', }, hadronEngine: { - name: "Moteur à Hadrons", - description: "Le Pokémon crée un champ électrifié quand il rejoint le combat. Une machine du futur fait monter son Attaque Spéciale si un champ électrifié est actif.", + name: 'Moteur à Hadrons', + description: 'Le Pokémon crée un champ électrifié quand il rejoint le combat. Une machine du futur fait monter son Attaque Spéciale si un champ électrifié est actif.', }, opportunist: { - name: "Opportuniste", - description: "Quand les stats de l’ennemi augmentent, le Pokémon en profite pour augmenter ses stats de la même manière.", + name: 'Opportuniste', + description: 'Quand les stats de l’ennemi augmentent, le Pokémon en profite pour augmenter ses stats de la même manière.', }, cudChew: { - name: "Ruminant", - description: "Quand le Pokémon mange une Baie, il la régurgite à la fin du tour suivant et la mange une nouvelle fois.", + name: 'Ruminant', + description: 'Quand le Pokémon mange une Baie, il la régurgite à la fin du tour suivant et la mange une nouvelle fois.', }, sharpness: { - name: "Incisif", - description: "Augmente la puissance des capacités tranchantes.", + name: 'Incisif', + description: 'Augmente la puissance des capacités tranchantes.', }, supremeOverlord: { - name: "Général Suprême", - description: "Quand le Pokémon entre sur le terrain, son Attaque et son Attaque Spéciale augmentent légèrement pour chaque allié mis K.O. auparavant.", + name: 'Général Suprême', + description: 'Quand le Pokémon entre sur le terrain, son Attaque et son Attaque Spéciale augmentent légèrement pour chaque allié mis K.O. auparavant.', }, costar: { - name: "Collab", - description: "Quand le Pokémon entre sur le terrain, il copie les changements de stats de son allié.", + name: 'Collab', + description: 'Quand le Pokémon entre sur le terrain, il copie les changements de stats de son allié.', }, toxicDebris: { - name: "Dépôt Toxique", - description: "Quand le Pokémon est touché par une capacité physique, il répand des pics toxiques dans le camp adverse.", + name: 'Dépôt Toxique', + description: 'Quand le Pokémon est touché par une capacité physique, il répand des pics toxiques dans le camp adverse.', }, armorTail: { - name: "Armure Caudale", - description: "L’étrange queue qui recouvre la tête du Pokémon empêche ce dernier d’être visé par une capacité prioritaire.", + name: 'Armure Caudale', + description: 'L’étrange queue qui recouvre la tête du Pokémon empêche ce dernier d’être visé par une capacité prioritaire.', }, earthEater: { - name: "Absorbe-Terre", - description: "Si le Pokémon est touché par une capacité de type Sol, il regagne des PV au lieu de subir des dégâts.", + name: 'Absorbe-Terre', + description: 'Si le Pokémon est touché par une capacité de type Sol, il regagne des PV au lieu de subir des dégâts.', }, myceliumMight: { - name: "Force Fongique", - description: "Le Pokémon agit toujours plus lentement quand il utilise une capacité de statut, mais il ignore les talents adverses.", + name: 'Force Fongique', + description: 'Le Pokémon agit toujours plus lentement quand il utilise une capacité de statut, mais il ignore les talents adverses.', }, mindsEye: { - name: "Œil Révélateur", - description: "Le Pokémon ignore les changements d’Esquive des cibles et peut toucher les Pokémon Spectre avec des capacités Normal ou Combat. Sa Précision ne peut pas baisser.", + name: 'Œil Révélateur', + description: 'Le Pokémon ignore les changements d’Esquive des cibles et peut toucher les Pokémon Spectre avec des capacités Normal ou Combat. Sa Précision ne peut pas baisser.', }, supersweetSyrup: { - name: "Nectar Mielleux", - description: "La première fois que le Pokémon entre au combat, une odeur de nectar sucré se répand sur le terrain, ce qui baisse l’Esquive de l’adversaire.", + name: 'Nectar Mielleux', + description: 'La première fois que le Pokémon entre au combat, une odeur de nectar sucré se répand sur le terrain, ce qui baisse l’Esquive de l’adversaire.', }, hospitality: { - name: "Aux Petits Soins", - description: "Quand il rejoint le combat, ce Pokémon est aux petits soins avec son allié et restaure quelques PV.", + name: 'Aux Petits Soins', + description: 'Quand il rejoint le combat, ce Pokémon est aux petits soins avec son allié et restaure quelques PV.', }, toxicChain: { - name: "Chaîne Toxique", - description: "Grâce aux pouvoirs de sa chaine imprégnée de toxines, le Pokémon peut empoisonner gravement sa cible en la touchant avec une capacité.", + name: 'Chaîne Toxique', + description: 'Grâce aux pouvoirs de sa chaine imprégnée de toxines, le Pokémon peut empoisonner gravement sa cible en la touchant avec une capacité.', }, embodyAspectTeal: { - name: "Force Mémorielle", - description: "Le Pokémon fait briller le Masque Turquoise en puisant dans ses souvenirs, ce qui augmente sa Vitesse.", + name: 'Force Mémorielle', + description: 'Le Pokémon fait briller le Masque Turquoise en puisant dans ses souvenirs, ce qui augmente sa Vitesse.', }, embodyAspectWellspring: { - name: "Force Mémorielle", - description: "Le Pokémon fait briller le Masque du Puits en puisant dans ses souvenirs, ce qui augmente sa Défense Spéciale.", + name: 'Force Mémorielle', + description: 'Le Pokémon fait briller le Masque du Puits en puisant dans ses souvenirs, ce qui augmente sa Défense Spéciale.', }, embodyAspectHearthflame: { - name: "Force Mémorielle", - description: "Le Pokémon fait briller le Masque du Fourneau en puisant dans ses souvenirs, ce qui augmente son Attaque.", + name: 'Force Mémorielle', + description: 'Le Pokémon fait briller le Masque du Fourneau en puisant dans ses souvenirs, ce qui augmente son Attaque.', }, embodyAspectCornerstone: { - name: "Force Mémorielle", - description: "Le Pokémon fait briller le Masque de la Pierre en puisant dans ses souvenirs, ce qui augmente sa Défense.", + name: 'Force Mémorielle', + description: 'Le Pokémon fait briller le Masque de la Pierre en puisant dans ses souvenirs, ce qui augmente sa Défense.', }, teraShift: { - name: "Téramorphose", - description: "Quand le Pokémon rejoint le combat, il absorbe l’énergie alentour et prend sa Forme Téracristal.", + name: 'Téramorphose', + description: 'Quand le Pokémon rejoint le combat, il absorbe l’énergie alentour et prend sa Forme Téracristal.', }, teraShell: { - name: "Téra-Carapace", - description: "Grâce à sa carapace qui renferme l’énergie de tous les types, les capacités subies par ce Pokémon quand ses PV sont au maximum ne sont pas très efficaces.", + name: 'Téra-Carapace', + description: 'Grâce à sa carapace qui renferme l’énergie de tous les types, les capacités subies par ce Pokémon quand ses PV sont au maximum ne sont pas très efficaces.', }, teraformZero: { - name: "Téraformation 0", - description: "Lorsque Terapagos prend sa Forme Stellaire, il utilise son pouvoir enfoui pour annuler les effets de la météo et des champs actifs.", + name: 'Téraformation 0', + description: 'Lorsque Terapagos prend sa Forme Stellaire, il utilise son pouvoir enfoui pour annuler les effets de la météo et des champs actifs.', }, poisonPuppeteer: { - name: "Emprise Toxique", - description: "Lorsque Pêchaminus empoisonne un Pokémon grâce à l’une de ses capacités, ce dernier devient également confus.", + name: 'Emprise Toxique', + description: 'Lorsque Pêchaminus empoisonne un Pokémon grâce à l’une de ses capacités, ce dernier devient également confus.', }, } as const; diff --git a/src/locales/fr/battle-message-ui-handler.ts b/src/locales/fr/battle-message-ui-handler.ts index 8dc980d49a4..993e86b4324 100644 --- a/src/locales/fr/battle-message-ui-handler.ts +++ b/src/locales/fr/battle-message-ui-handler.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battleMessageUiHandler: SimpleTranslationEntries = { - "ivBest": "Exceptionnel", - "ivFantastic": "Fantastique", - "ivVeryGood": "Très bon", - "ivPrettyGood": "Bon", - "ivDecent": "Passable…", - "ivNoGood": "Pas top…", + 'ivBest': 'Exceptionnel', + 'ivFantastic': 'Fantastique', + 'ivVeryGood': 'Très bon', + 'ivPrettyGood': 'Bon', + 'ivDecent': 'Passable…', + 'ivNoGood': 'Pas top…', } as const; diff --git a/src/locales/fr/battle.ts b/src/locales/fr/battle.ts index 827cea6b2d7..97f78e5aa76 100644 --- a/src/locales/fr/battle.ts +++ b/src/locales/fr/battle.ts @@ -1,56 +1,56 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battle: SimpleTranslationEntries = { - "bossAppeared": "Un {{bossName}} apparait.", - "trainerAppeared": "Un combat est lancé\npar {{trainerName}} !", - "trainerAppearedDouble": "Un combat est lancé\npar {{trainerName}} !", - "singleWildAppeared": "Un {{pokemonName}} sauvage apparait !", - "multiWildAppeared": "Un {{pokemonName1}} et un {{pokemonName2}}\nsauvages apparaissent !", - "playerComeBack": "{{pokemonName}} !\nReviens !", - "trainerComeBack": "{{trainerName}} retire {{pokemonName}} !", - "playerGo": "{{pokemonName}} ! Go !", - "trainerGo": "{{pokemonName}} est envoyé par\n{{trainerName}} !", - "switchQuestion": "Voulez-vous changer\nvotre {{pokemonName}} ?", - "trainerDefeated": `Vous avez battu\n{{trainerName}} !`, - "pokemonCaught": "Vous avez attrapé {{pokemonName}} !", - "pokemon": "Pokémon", - "sendOutPokemon": "{{pokemonName}} ! Go !", - "hitResultCriticalHit": "Coup critique !", - "hitResultSuperEffective": "C’est super efficace !", - "hitResultNotVeryEffective": "Ce n’est pas très efficace…", - "hitResultNoEffect": "Ça n’affecte pas {{pokemonName}}…", - "hitResultOneHitKO": "K.O. en un coup !", - "attackFailed": "Mais cela échoue !", - "attackHitsCount": `Touché {{count}} fois !`, - "expGain": "{{pokemonName}} gagne\n{{exp}} Points d’Exp !", - "levelUp": "{{pokemonName}} monte au\nN. {{level}} !", - "learnMove": "{{pokemonName}} apprend\n{{moveName}} !", - "learnMovePrompt": "{{pokemonName}} veut apprendre\n{{moveName}}.", - "learnMoveLimitReached": "Cependant, {{pokemonName}} connait\ndéjà quatre capacités.", - "learnMoveReplaceQuestion": "Voulez-vous oublier une capacité\net la remplacer par {{moveName}} ?", - "learnMoveStopTeaching": "Arrêter d’apprendre\n{{moveName}} ?", - "learnMoveNotLearned": "{{pokemonName}} n’a pas appris\n{{moveName}}.", - "learnMoveForgetQuestion": "Quelle capacité doit être oubliée ?", - "learnMoveForgetSuccess": "{{pokemonName}} oublie comment\nutiliser {{moveName}}.", - "countdownPoof": "@d{32}1, @d{15}2, @d{15}et@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}Tadaaa !", - "learnMoveAnd": "Et…", - "levelCapUp": "La limite de niveau\na été augmentée à {{levelCap}} !", - "moveNotImplemented": "{{moveName}} n’est pas encore implémenté et ne peut pas être sélectionné.", - "moveNoPP": "Il n’y a plus de PP pour\ncette capacité !", - "moveDisabled": "{{moveName}} est sous entrave !", - "noPokeballForce": "Une force mystérieuse\nempêche l’utilisation des Poké Balls.", - "noPokeballTrainer": "Le Dresseur détourne la Ball\nVoler, c’est mal !", - "noPokeballMulti": "Impossible ! On ne peut pas viser\nquand il y a deux Pokémon !", - "noPokeballStrong": "Le Pokémon est trop fort pour être capturé !\nVous devez d’abord l’affaiblir !", - "noEscapeForce": "Une force mystérieuse\nempêche la fuite.", - "noEscapeTrainer": "On ne s’enfuit pas d’un\ncombat de Dresseurs !", - "noEscapePokemon": "{{moveName}} de {{pokemonName}}\nempêche {{escapeVerb}} !", - "runAwaySuccess": "Vous prenez la fuite !", - "runAwayCannotEscape": "Fuite impossible !", - "escapeVerbSwitch": "le changement", - "escapeVerbFlee": "la fuite", - "notDisabled": "La capacité {{moveName}}\nde {{pokemonName}} n’est plus sous entrave !", - "skipItemQuestion": "Êtes-vous sûr·e de ne pas vouloir prendre d’objet ?", - "eggHatching": "Oh ?", - "ivScannerUseQuestion": "Utiliser le Scanner d’IV sur {{pokemonName}} ?" + 'bossAppeared': 'Un {{bossName}} apparait.', + 'trainerAppeared': 'Un combat est lancé\npar {{trainerName}} !', + 'trainerAppearedDouble': 'Un combat est lancé\npar {{trainerName}} !', + 'singleWildAppeared': 'Un {{pokemonName}} sauvage apparait !', + 'multiWildAppeared': 'Un {{pokemonName1}} et un {{pokemonName2}}\nsauvages apparaissent !', + 'playerComeBack': '{{pokemonName}} !\nReviens !', + 'trainerComeBack': '{{trainerName}} retire {{pokemonName}} !', + 'playerGo': '{{pokemonName}} ! Go !', + 'trainerGo': '{{pokemonName}} est envoyé par\n{{trainerName}} !', + 'switchQuestion': 'Voulez-vous changer\nvotre {{pokemonName}} ?', + 'trainerDefeated': 'Vous avez battu\n{{trainerName}} !', + 'pokemonCaught': 'Vous avez attrapé {{pokemonName}} !', + 'pokemon': 'Pokémon', + 'sendOutPokemon': '{{pokemonName}} ! Go !', + 'hitResultCriticalHit': 'Coup critique !', + 'hitResultSuperEffective': 'C’est super efficace !', + 'hitResultNotVeryEffective': 'Ce n’est pas très efficace…', + 'hitResultNoEffect': 'Ça n’affecte pas {{pokemonName}}…', + 'hitResultOneHitKO': 'K.O. en un coup !', + 'attackFailed': 'Mais cela échoue !', + 'attackHitsCount': 'Touché {{count}} fois !', + 'expGain': '{{pokemonName}} gagne\n{{exp}} Points d’Exp !', + 'levelUp': '{{pokemonName}} monte au\nN. {{level}} !', + 'learnMove': '{{pokemonName}} apprend\n{{moveName}} !', + 'learnMovePrompt': '{{pokemonName}} veut apprendre\n{{moveName}}.', + 'learnMoveLimitReached': 'Cependant, {{pokemonName}} connait\ndéjà quatre capacités.', + 'learnMoveReplaceQuestion': 'Voulez-vous oublier une capacité\net la remplacer par {{moveName}} ?', + 'learnMoveStopTeaching': 'Arrêter d’apprendre\n{{moveName}} ?', + 'learnMoveNotLearned': '{{pokemonName}} n’a pas appris\n{{moveName}}.', + 'learnMoveForgetQuestion': 'Quelle capacité doit être oubliée ?', + 'learnMoveForgetSuccess': '{{pokemonName}} oublie comment\nutiliser {{moveName}}.', + 'countdownPoof': '@d{32}1, @d{15}2, @d{15}et@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}Tadaaa !', + 'learnMoveAnd': 'Et…', + 'levelCapUp': 'La limite de niveau\na été augmentée à {{levelCap}} !', + 'moveNotImplemented': '{{moveName}} n’est pas encore implémenté et ne peut pas être sélectionné.', + 'moveNoPP': 'Il n’y a plus de PP pour\ncette capacité !', + 'moveDisabled': '{{moveName}} est sous entrave !', + 'noPokeballForce': 'Une force mystérieuse\nempêche l’utilisation des Poké Balls.', + 'noPokeballTrainer': 'Le Dresseur détourne la Ball\nVoler, c’est mal !', + 'noPokeballMulti': 'Impossible ! On ne peut pas viser\nquand il y a deux Pokémon !', + 'noPokeballStrong': 'Le Pokémon est trop fort pour être capturé !\nVous devez d’abord l’affaiblir !', + 'noEscapeForce': 'Une force mystérieuse\nempêche la fuite.', + 'noEscapeTrainer': 'On ne s’enfuit pas d’un\ncombat de Dresseurs !', + 'noEscapePokemon': '{{moveName}} de {{pokemonName}}\nempêche {{escapeVerb}} !', + 'runAwaySuccess': 'Vous prenez la fuite !', + 'runAwayCannotEscape': 'Fuite impossible !', + 'escapeVerbSwitch': 'le changement', + 'escapeVerbFlee': 'la fuite', + 'notDisabled': 'La capacité {{moveName}}\nde {{pokemonName}} n’est plus sous entrave !', + 'skipItemQuestion': 'Êtes-vous sûr·e de ne pas vouloir prendre d’objet ?', + 'eggHatching': 'Oh ?', + 'ivScannerUseQuestion': 'Utiliser le Scanner d’IV sur {{pokemonName}} ?' } as const; diff --git a/src/locales/fr/berry.ts b/src/locales/fr/berry.ts index dd6b387f4cc..dfcb481db3d 100644 --- a/src/locales/fr/berry.ts +++ b/src/locales/fr/berry.ts @@ -1,48 +1,48 @@ -import { BerryTranslationEntries } from "#app/plugins/i18n"; +import { BerryTranslationEntries } from '#app/plugins/i18n'; export const berry: BerryTranslationEntries = { - "SITRUS": { - name: "Baie Sitrus", - effect: "Restaure 25% des PV s’ils sont inférieurs à 50%", + 'SITRUS': { + name: 'Baie Sitrus', + effect: 'Restaure 25% des PV s’ils sont inférieurs à 50%', }, - "LUM": { - name: "Baie Prine", - effect: "Soigne tout problème de statut permanant et la confusion", + 'LUM': { + name: 'Baie Prine', + effect: 'Soigne tout problème de statut permanant et la confusion', }, - "ENIGMA": { - name: "Baie Enigma", - effect: "Restaure 25% des PV si touché par une capacité super efficace", + 'ENIGMA': { + name: 'Baie Enigma', + effect: 'Restaure 25% des PV si touché par une capacité super efficace', }, - "LIECHI": { - name: "Baie Lichii", - effect: "Augmente l’Attaque si les PV sont inférieurs à 25%", + 'LIECHI': { + name: 'Baie Lichii', + effect: 'Augmente l’Attaque si les PV sont inférieurs à 25%', }, - "GANLON": { - name: "Baie Lingan", - effect: "Augmente la Défense si les PV sont inférieurs à 25%", + 'GANLON': { + name: 'Baie Lingan', + effect: 'Augmente la Défense si les PV sont inférieurs à 25%', }, - "PETAYA": { - name: "Baie Pitaye", - effect: "Augmente l’Atq. Spé. si les PV sont inférieurs à 25%", + 'PETAYA': { + name: 'Baie Pitaye', + effect: 'Augmente l’Atq. Spé. si les PV sont inférieurs à 25%', }, - "APICOT": { - name: "Baie Abriko", - effect: "Augmente la Déf. Spé. si les PV sont inférieurs à 25%", + 'APICOT': { + name: 'Baie Abriko', + effect: 'Augmente la Déf. Spé. si les PV sont inférieurs à 25%', }, - "SALAC": { - name: "Baie Sailak", - effect: "Augmente la Vitesse si les PV sont inférieurs à 25%", + 'SALAC': { + name: 'Baie Sailak', + effect: 'Augmente la Vitesse si les PV sont inférieurs à 25%', }, - "LANSAT": { - name: "Baie Lansat", - effect: "Augmente le taux de coups critiques si les PV sont inférieurs à 25%", + 'LANSAT': { + name: 'Baie Lansat', + effect: 'Augmente le taux de coups critiques si les PV sont inférieurs à 25%', }, - "STARF": { - name: "Baie Frista", - effect: "Augmente énormément une statistique au hasard si les PV sont inférieurs à 25%", + 'STARF': { + name: 'Baie Frista', + effect: 'Augmente énormément une statistique au hasard si les PV sont inférieurs à 25%', }, - "LEPPA": { - name: "Baie Mepo", - effect: "Restaure 10 PP à une capacité dès que ses PP tombent à 0", + 'LEPPA': { + name: 'Baie Mepo', + effect: 'Restaure 10 PP à une capacité dès que ses PP tombent à 0', }, } as const; diff --git a/src/locales/fr/command-ui-handler.ts b/src/locales/fr/command-ui-handler.ts index 1b3d01d2c4f..91f7fa846b2 100644 --- a/src/locales/fr/command-ui-handler.ts +++ b/src/locales/fr/command-ui-handler.ts @@ -1,9 +1,9 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const commandUiHandler: SimpleTranslationEntries = { - "fight": "Attaque", - "ball": "Ball", - "pokemon": "Pokémon", - "run": "Fuite", - "actionMessage": "Que doit faire\n{{pokemonName}} ?", -} as const; \ No newline at end of file + 'fight': 'Attaque', + 'ball': 'Ball', + 'pokemon': 'Pokémon', + 'run': 'Fuite', + 'actionMessage': 'Que doit faire\n{{pokemonName}} ?', +} as const; diff --git a/src/locales/fr/config.ts b/src/locales/fr/config.ts index a6bdfe5cd59..fbd686e615d 100644 --- a/src/locales/fr/config.ts +++ b/src/locales/fr/config.ts @@ -1,51 +1,51 @@ -import { ability } from "./ability"; -import { abilityTriggers } from "./ability-trigger"; -import { battle } from "./battle"; -import { commandUiHandler } from "./command-ui-handler"; -import { egg } from "./egg"; -import { fightUiHandler } from "./fight-ui-handler"; -import { growth } from "./growth"; -import { menu } from "./menu"; -import { menuUiHandler } from "./menu-ui-handler"; -import { modifierType } from "./modifier-type"; -import { move } from "./move"; -import { nature } from "./nature"; -import { pokeball } from "./pokeball"; -import { pokemon } from "./pokemon"; -import { pokemonInfo } from "./pokemon-info"; -import { splashMessages } from "./splash-messages"; -import { starterSelectUiHandler } from "./starter-select-ui-handler"; -import { titles, trainerClasses, trainerNames } from "./trainers"; -import { tutorial } from "./tutorial"; -import { weather } from "./weather"; -import { battleMessageUiHandler } from "./battle-message-ui-handler"; -import { berry } from "./berry"; -import { voucher } from "./voucher"; +import { ability } from './ability'; +import { abilityTriggers } from './ability-trigger'; +import { battle } from './battle'; +import { commandUiHandler } from './command-ui-handler'; +import { egg } from './egg'; +import { fightUiHandler } from './fight-ui-handler'; +import { growth } from './growth'; +import { menu } from './menu'; +import { menuUiHandler } from './menu-ui-handler'; +import { modifierType } from './modifier-type'; +import { move } from './move'; +import { nature } from './nature'; +import { pokeball } from './pokeball'; +import { pokemon } from './pokemon'; +import { pokemonInfo } from './pokemon-info'; +import { splashMessages } from './splash-messages'; +import { starterSelectUiHandler } from './starter-select-ui-handler'; +import { titles, trainerClasses, trainerNames } from './trainers'; +import { tutorial } from './tutorial'; +import { weather } from './weather'; +import { battleMessageUiHandler } from './battle-message-ui-handler'; +import { berry } from './berry'; +import { voucher } from './voucher'; export const frConfig = { - ability: ability, - abilityTriggers: abilityTriggers, - battle: battle, - commandUiHandler: commandUiHandler, - egg: egg, - fightUiHandler: fightUiHandler, - growth: growth, - menu: menu, - menuUiHandler: menuUiHandler, - modifierType: modifierType, - move: move, - nature: nature, - pokeball: pokeball, - pokemon: pokemon, - pokemonInfo: pokemonInfo, - splashMessages: splashMessages, - starterSelectUiHandler: starterSelectUiHandler, - titles: titles, - trainerClasses: trainerClasses, - trainerNames: trainerNames, - tutorial: tutorial, - weather: weather, - battleMessageUiHandler: battleMessageUiHandler, - berry: berry, - voucher: voucher, -} + ability: ability, + abilityTriggers: abilityTriggers, + battle: battle, + commandUiHandler: commandUiHandler, + egg: egg, + fightUiHandler: fightUiHandler, + growth: growth, + menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, + move: move, + nature: nature, + pokeball: pokeball, + pokemon: pokemon, + pokemonInfo: pokemonInfo, + splashMessages: splashMessages, + starterSelectUiHandler: starterSelectUiHandler, + titles: titles, + trainerClasses: trainerClasses, + trainerNames: trainerNames, + tutorial: tutorial, + weather: weather, + battleMessageUiHandler: battleMessageUiHandler, + berry: berry, + voucher: voucher, +}; diff --git a/src/locales/fr/egg.ts b/src/locales/fr/egg.ts index 566e423b69f..699b5193250 100644 --- a/src/locales/fr/egg.ts +++ b/src/locales/fr/egg.ts @@ -1,21 +1,21 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const egg: SimpleTranslationEntries = { - "egg": "Œuf", - "greatTier": "Rare", - "ultraTier": "Épique", - "masterTier": "Légendaire", - "defaultTier": "Commun", - "hatchWavesMessageSoon": "Il fait du bruit. Il va éclore !", - "hatchWavesMessageClose": "Il bouge de temps en temps. Il devrait bientôt éclore.", - "hatchWavesMessageNotClose": "Qu’est-ce qui va en sortir ? Ça va mettre du temps.", - "hatchWavesMessageLongTime": "Cet Œuf va sûrement mettre du temps à éclore.", - "gachaTypeLegendary": "Taux de Légendaires élevé", - "gachaTypeMove": "Taux de Capacité Œuf Rare élevé", - "gachaTypeShiny": "Taux de Chromatiques élevé", - "selectMachine": "Sélectionnez une machine.", - "notEnoughVouchers": "Vous n’avez pas assez de coupons !", - "tooManyEggs": "Vous avez trop d’Œufs !", - "pull": "Tirage", - "pulls": "Tirages" -} as const; \ No newline at end of file + 'egg': 'Œuf', + 'greatTier': 'Rare', + 'ultraTier': 'Épique', + 'masterTier': 'Légendaire', + 'defaultTier': 'Commun', + 'hatchWavesMessageSoon': 'Il fait du bruit. Il va éclore !', + 'hatchWavesMessageClose': 'Il bouge de temps en temps. Il devrait bientôt éclore.', + 'hatchWavesMessageNotClose': 'Qu’est-ce qui va en sortir ? Ça va mettre du temps.', + 'hatchWavesMessageLongTime': 'Cet Œuf va sûrement mettre du temps à éclore.', + 'gachaTypeLegendary': 'Taux de Légendaires élevé', + 'gachaTypeMove': 'Taux de Capacité Œuf Rare élevé', + 'gachaTypeShiny': 'Taux de Chromatiques élevé', + 'selectMachine': 'Sélectionnez une machine.', + 'notEnoughVouchers': 'Vous n’avez pas assez de coupons !', + 'tooManyEggs': 'Vous avez trop d’Œufs !', + 'pull': 'Tirage', + 'pulls': 'Tirages' +} as const; diff --git a/src/locales/fr/fight-ui-handler.ts b/src/locales/fr/fight-ui-handler.ts index a96e84c11f8..e528e3b8142 100644 --- a/src/locales/fr/fight-ui-handler.ts +++ b/src/locales/fr/fight-ui-handler.ts @@ -1,7 +1,7 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const fightUiHandler: SimpleTranslationEntries = { - "pp": "PP", - "power": "Puissance", - "accuracy": "Précision", -} as const; \ No newline at end of file + 'pp': 'PP', + 'power': 'Puissance', + 'accuracy': 'Précision', +} as const; diff --git a/src/locales/fr/growth.ts b/src/locales/fr/growth.ts index 71623987b27..f92947974b2 100644 --- a/src/locales/fr/growth.ts +++ b/src/locales/fr/growth.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const growth: SimpleTranslationEntries = { - "Erratic": "Erratique", - "Fast": "Rapide", - "Medium_Fast": "Moyenne-Rapide", - "Medium_Slow": "Moyenne-Lente", - "Slow": "Lente", - "Fluctuating": "Fluctuante" + 'Erratic': 'Erratique', + 'Fast': 'Rapide', + 'Medium_Fast': 'Moyenne-Rapide', + 'Medium_Slow': 'Moyenne-Lente', + 'Slow': 'Lente', + 'Fluctuating': 'Fluctuante' } as const; diff --git a/src/locales/fr/menu-ui-handler.ts b/src/locales/fr/menu-ui-handler.ts index 20e66754667..a9896694f40 100644 --- a/src/locales/fr/menu-ui-handler.ts +++ b/src/locales/fr/menu-ui-handler.ts @@ -1,23 +1,23 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const menuUiHandler: SimpleTranslationEntries = { - "GAME_SETTINGS": 'Paramètres', - "ACHIEVEMENTS": "Succès", - "STATS": "Statistiques", - "VOUCHERS": "Coupons", - "EGG_LIST": "Liste des Œufs", - "EGG_GACHA": "Gacha-Œufs", - "MANAGE_DATA": "Mes données", - "COMMUNITY": "Communauté", - "SAVE_AND_QUIT": "Sauver & quitter", - "LOG_OUT": "Déconnexion", - "slot": "Emplacement {{slotNumber}}", - "importSession": "Importer session", - "importSlotSelect": "Sélectionnez l’emplacement vers lequel importer les données.", - "exportSession": "Exporter session", - "exportSlotSelect": "Sélectionnez l’emplacement depuis lequel exporter les données.", - "importData": "Importer données", - "exportData": "Exporter données", - "cancel": "Retour", - "losingProgressionWarning": "Vous allez perdre votre progression depuis le début du combat. Continuer ?" + 'GAME_SETTINGS': 'Paramètres', + 'ACHIEVEMENTS': 'Succès', + 'STATS': 'Statistiques', + 'VOUCHERS': 'Coupons', + 'EGG_LIST': 'Liste des Œufs', + 'EGG_GACHA': 'Gacha-Œufs', + 'MANAGE_DATA': 'Mes données', + 'COMMUNITY': 'Communauté', + 'SAVE_AND_QUIT': 'Sauver & quitter', + 'LOG_OUT': 'Déconnexion', + 'slot': 'Emplacement {{slotNumber}}', + 'importSession': 'Importer session', + 'importSlotSelect': 'Sélectionnez l’emplacement vers lequel importer les données.', + 'exportSession': 'Exporter session', + 'exportSlotSelect': 'Sélectionnez l’emplacement depuis lequel exporter les données.', + 'importData': 'Importer données', + 'exportData': 'Exporter données', + 'cancel': 'Retour', + 'losingProgressionWarning': 'Vous allez perdre votre progression depuis le début du combat. Continuer ?' } as const; diff --git a/src/locales/fr/menu.ts b/src/locales/fr/menu.ts index f6d5cfac063..ea40b1a3239 100644 --- a/src/locales/fr/menu.ts +++ b/src/locales/fr/menu.ts @@ -1,46 +1,46 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const menu: SimpleTranslationEntries = { - "cancel": "Annuler", - "continue": "Continuer", - "dailyRun": "Défi du jour (Bêta)", - "loadGame": "Charger la partie", - "newGame": "Nouvelle partie", - "selectGameMode": "Sélectionnez un mode de jeu.", - "logInOrCreateAccount": "Connectez-vous ou créez un compte pour commencer. Aucun e-mail requis !", - "username": "Nom d’utilisateur", - "password": "Mot de passe", - "login": "Connexion", - "register": "S’inscrire", - "emptyUsername": "Le nom d’utilisateur est manquant", - "invalidLoginUsername": "Le nom d’utilisateur n’est pas valide", - "invalidRegisterUsername": "Le nom d’utilisateur ne doit contenir que\ndes lettres, chiffres ou traits bas", - "invalidLoginPassword": "Le mot de passe n’est pas valide", - "invalidRegisterPassword": "Le mot de passe doit contenir 6 caractères ou plus", - "usernameAlreadyUsed": "Le nom d’utilisateur est déjà utilisé", - "accountNonExistent": "Le nom d’utilisateur n’existe pas", - "unmatchingPassword": "Le mot de passe n’est pas correct", - "passwordNotMatchingConfirmPassword": "Les mots de passe ne correspondent pas", - "confirmPassword": "Confirmer le MDP", - "registrationAgeWarning": "Vous confirmez en vous inscrivant que vous avez 13 ans ou plus.", - "backToLogin": "Retour", - "failedToLoadSaveData": "Échec du chargement des données. Veuillez recharger\nla page. Si cela persiste, contactez l’administrateur.", - "sessionSuccess": "Session chargée avec succès.", - "failedToLoadSession": "Vos données de session n’ont pas pu être chargées.\nElles pourraient être corrompues.", - "boyOrGirl": "Es-tu un garçon ou une fille ?", - "boy": "Garçon", - "girl": "Fille", - "evolving": "Quoi ?\n{{pokemonName}} évolue !", - "stoppedEvolving": "Hein ?\n{{pokemonName}} n’évolue plus !", - "pauseEvolutionsQuestion": "Mettre en pause les évolutions pour {{pokemonName}} ?\nElles peuvent être réactivées depuis l’écran d’équipe.", - "evolutionsPaused": "Les évolutions ont été mises en pause pour {{pokemonName}}.", - "evolutionDone": "Félicitations !\n{{pokemonName}} a évolué en {{evolvedPokemonName}} !", - "dailyRankings": "Classement du Jour", - "weeklyRankings": "Classement de la Semaine", - "noRankings": "Pas de Classement", - "loading": "Chargement…", - "playersOnline": "Joueurs Connectés", - "empty":"Vide", - "yes":"Oui", - "no":"Non", + 'cancel': 'Annuler', + 'continue': 'Continuer', + 'dailyRun': 'Défi du jour (Bêta)', + 'loadGame': 'Charger la partie', + 'newGame': 'Nouvelle partie', + 'selectGameMode': 'Sélectionnez un mode de jeu.', + 'logInOrCreateAccount': 'Connectez-vous ou créez un compte pour commencer. Aucun e-mail requis !', + 'username': 'Nom d’utilisateur', + 'password': 'Mot de passe', + 'login': 'Connexion', + 'register': 'S’inscrire', + 'emptyUsername': 'Le nom d’utilisateur est manquant', + 'invalidLoginUsername': 'Le nom d’utilisateur n’est pas valide', + 'invalidRegisterUsername': 'Le nom d’utilisateur ne doit contenir que\ndes lettres, chiffres ou traits bas', + 'invalidLoginPassword': 'Le mot de passe n’est pas valide', + 'invalidRegisterPassword': 'Le mot de passe doit contenir 6 caractères ou plus', + 'usernameAlreadyUsed': 'Le nom d’utilisateur est déjà utilisé', + 'accountNonExistent': 'Le nom d’utilisateur n’existe pas', + 'unmatchingPassword': 'Le mot de passe n’est pas correct', + 'passwordNotMatchingConfirmPassword': 'Les mots de passe ne correspondent pas', + 'confirmPassword': 'Confirmer le MDP', + 'registrationAgeWarning': 'Vous confirmez en vous inscrivant que vous avez 13 ans ou plus.', + 'backToLogin': 'Retour', + 'failedToLoadSaveData': 'Échec du chargement des données. Veuillez recharger\nla page. Si cela persiste, contactez l’administrateur.', + 'sessionSuccess': 'Session chargée avec succès.', + 'failedToLoadSession': 'Vos données de session n’ont pas pu être chargées.\nElles pourraient être corrompues.', + 'boyOrGirl': 'Es-tu un garçon ou une fille ?', + 'boy': 'Garçon', + 'girl': 'Fille', + 'evolving': 'Quoi ?\n{{pokemonName}} évolue !', + 'stoppedEvolving': 'Hein ?\n{{pokemonName}} n’évolue plus !', + 'pauseEvolutionsQuestion': 'Mettre en pause les évolutions pour {{pokemonName}} ?\nElles peuvent être réactivées depuis l’écran d’équipe.', + 'evolutionsPaused': 'Les évolutions ont été mises en pause pour {{pokemonName}}.', + 'evolutionDone': 'Félicitations !\n{{pokemonName}} a évolué en {{evolvedPokemonName}} !', + 'dailyRankings': 'Classement du Jour', + 'weeklyRankings': 'Classement de la Semaine', + 'noRankings': 'Pas de Classement', + 'loading': 'Chargement…', + 'playersOnline': 'Joueurs Connectés', + 'empty':'Vide', + 'yes':'Oui', + 'no':'Non', } as const; diff --git a/src/locales/fr/modifier-type.ts b/src/locales/fr/modifier-type.ts index 4c3725117a2..e96b7263a2f 100644 --- a/src/locales/fr/modifier-type.ts +++ b/src/locales/fr/modifier-type.ts @@ -1,387 +1,387 @@ -import { ModifierTypeTranslationEntries } from "#app/plugins/i18n"; +import { ModifierTypeTranslationEntries } from '#app/plugins/i18n'; export const modifierType: ModifierTypeTranslationEntries = { ModifierType: { - "AddPokeballModifierType": { - name: "{{pokeballName}} x{{modifierCount}}", - description: "Recevez {{modifierCount}} {{pokeballName}}s (Inventaire : {{pokeballAmount}}) \nTaux de capture : {{catchRate}}", + 'AddPokeballModifierType': { + name: '{{pokeballName}} x{{modifierCount}}', + description: 'Recevez {{modifierCount}} {{pokeballName}}s (Inventaire : {{pokeballAmount}}) \nTaux de capture : {{catchRate}}', }, - "AddVoucherModifierType": { - name: "{{voucherTypeName}} x{{modifierCount}}", - description: "Recevez {{modifierCount}} {{voucherTypeName}}", + 'AddVoucherModifierType': { + name: '{{voucherTypeName}} x{{modifierCount}}', + description: 'Recevez {{modifierCount}} {{voucherTypeName}}', }, - "PokemonHeldItemModifierType": { + 'PokemonHeldItemModifierType': { extra: { - "inoperable": "{{pokemonName}} ne peut pas\nporter cet objet !", - "tooMany": "{{pokemonName}} possède trop\nd’exemplaires de cet objet !", + 'inoperable': '{{pokemonName}} ne peut pas\nporter cet objet !', + 'tooMany': '{{pokemonName}} possède trop\nd’exemplaires de cet objet !', } }, - "PokemonHpRestoreModifierType": { - description: "Restaure {{restorePoints}} PV ou {{restorePercent}}% des PV totaux d’un Pokémon, en fonction duquel des deux est le plus élevé", + 'PokemonHpRestoreModifierType': { + description: 'Restaure {{restorePoints}} PV ou {{restorePercent}}% des PV totaux d’un Pokémon, en fonction duquel des deux est le plus élevé', extra: { - "fully": "Restaure tous les PV d’un Pokémon", - "fullyWithStatus": "Restaure tous les PV d’un Pokémon et soigne tous ses problèmes de statut", + 'fully': 'Restaure tous les PV d’un Pokémon', + 'fullyWithStatus': 'Restaure tous les PV d’un Pokémon et soigne tous ses problèmes de statut', } }, - "PokemonReviveModifierType": { - description: "Réanime un Pokémon et restaure {{restorePercent}}% de ses PV", + 'PokemonReviveModifierType': { + description: 'Réanime un Pokémon et restaure {{restorePercent}}% de ses PV', }, - "PokemonStatusHealModifierType": { - description: "Soigne tous les problèmes de statut d’un Pokémon", + 'PokemonStatusHealModifierType': { + description: 'Soigne tous les problèmes de statut d’un Pokémon', }, - "PokemonPpRestoreModifierType": { - description: "Restaure {{restorePoints}} PP à une capacité d’un Pokémon", + 'PokemonPpRestoreModifierType': { + description: 'Restaure {{restorePoints}} PP à une capacité d’un Pokémon', extra: { - "fully": "Restaure tous les PP à une capacité d’un Pokémon", + 'fully': 'Restaure tous les PP à une capacité d’un Pokémon', } }, - "PokemonAllMovePpRestoreModifierType": { - description: "Restaure {{restorePoints}} PP à toutes les capacités d’un Pokémon", + 'PokemonAllMovePpRestoreModifierType': { + description: 'Restaure {{restorePoints}} PP à toutes les capacités d’un Pokémon', extra: { - "fully": "Restaure tous les PP à toutes les capacités d’un Pokémon", + 'fully': 'Restaure tous les PP à toutes les capacités d’un Pokémon', } }, - "PokemonPpUpModifierType": { - description: "Augmente le max de PP de {{upPoints}} à une capacité d’un Pokémon pour chaque 5 PP max (max : 3)", + 'PokemonPpUpModifierType': { + description: 'Augmente le max de PP de {{upPoints}} à une capacité d’un Pokémon pour chaque 5 PP max (max : 3)', }, - "PokemonNatureChangeModifierType": { - name: "Aromate {{natureName}}", - description: "Donne la nature {{natureName}} à un Pokémon et la débloque pour le starter lui étant lié.", + 'PokemonNatureChangeModifierType': { + name: 'Aromate {{natureName}}', + description: 'Donne la nature {{natureName}} à un Pokémon et la débloque pour le starter lui étant lié.', }, - "DoubleBattleChanceBoosterModifierType": { - description: "Double les chances de tomber sur un combat double pendant {{battleCount}} combats", + 'DoubleBattleChanceBoosterModifierType': { + description: 'Double les chances de tomber sur un combat double pendant {{battleCount}} combats', }, - "TempBattleStatBoosterModifierType": { - description: "Augmente d’un cran {{tempBattleStatName}} pour toute l’équipe pendant 5 combats", + 'TempBattleStatBoosterModifierType': { + description: 'Augmente d’un cran {{tempBattleStatName}} pour toute l’équipe pendant 5 combats', }, - "AttackTypeBoosterModifierType": { - description: "Augmente de 20% la puissance des capacités de type {{moveType}} d’un Pokémon", + 'AttackTypeBoosterModifierType': { + description: 'Augmente de 20% la puissance des capacités de type {{moveType}} d’un Pokémon', }, - "PokemonLevelIncrementModifierType": { - description: "Fait monter un Pokémon d’un niveau", + 'PokemonLevelIncrementModifierType': { + description: 'Fait monter un Pokémon d’un niveau', }, - "AllPokemonLevelIncrementModifierType": { - description: "Fait monter toute l’équipe d’un niveau", + 'AllPokemonLevelIncrementModifierType': { + description: 'Fait monter toute l’équipe d’un niveau', }, - "PokemonBaseStatBoosterModifierType": { - description: "Augmente de 10% {{statName}} de base de son porteur. Plus les IV sont hauts, plus il peut en porter.", + 'PokemonBaseStatBoosterModifierType': { + description: 'Augmente de 10% {{statName}} de base de son porteur. Plus les IV sont hauts, plus il peut en porter.', }, - "AllPokemonFullHpRestoreModifierType": { - description: "Restaure tous les PV de toute l'équipe", + 'AllPokemonFullHpRestoreModifierType': { + description: 'Restaure tous les PV de toute l\'équipe', }, - "AllPokemonFullReviveModifierType": { - description: "Réanime et restaure tous les PV de tous les Pokémon K.O.", + 'AllPokemonFullReviveModifierType': { + description: 'Réanime et restaure tous les PV de tous les Pokémon K.O.', }, - "MoneyRewardModifierType": { - description: "Octroie une {{moneyMultiplier}} somme d’argent ({{moneyAmount}}₽)", + 'MoneyRewardModifierType': { + description: 'Octroie une {{moneyMultiplier}} somme d’argent ({{moneyAmount}}₽)', extra: { - "small": "petite", - "moderate": "moyenne", - "large": "grande", + 'small': 'petite', + 'moderate': 'moyenne', + 'large': 'grande', }, }, - "ExpBoosterModifierType": { - description: "Augmente de {{boostPercent}}% le gain de Points d’Exp", + 'ExpBoosterModifierType': { + description: 'Augmente de {{boostPercent}}% le gain de Points d’Exp', }, - "PokemonExpBoosterModifierType": { - description: "Augmente de {{boostPercent}}% le gain de Points d’Exp du porteur", + 'PokemonExpBoosterModifierType': { + description: 'Augmente de {{boostPercent}}% le gain de Points d’Exp du porteur', }, - "PokemonFriendshipBoosterModifierType": { - description: "Augmente le gain d’amitié de 50% par victoire", + 'PokemonFriendshipBoosterModifierType': { + description: 'Augmente le gain d’amitié de 50% par victoire', }, - "PokemonMoveAccuracyBoosterModifierType": { - description: "Augmente de {{accuracyAmount}} la précision des capacités (maximum 100)", + 'PokemonMoveAccuracyBoosterModifierType': { + description: 'Augmente de {{accuracyAmount}} la précision des capacités (maximum 100)', }, - "PokemonMultiHitModifierType": { - description: "Frappe une fois de plus en échange d’une baisse de puissance de respectivement 60/75/82,5% par cumul", + 'PokemonMultiHitModifierType': { + description: 'Frappe une fois de plus en échange d’une baisse de puissance de respectivement 60/75/82,5% par cumul', }, - "TmModifierType": { - name: "CT{{moveId}} - {{moveName}}", - description: "Apprend la capacité {{moveName}} à un Pokémon", + 'TmModifierType': { + name: 'CT{{moveId}} - {{moveName}}', + description: 'Apprend la capacité {{moveName}} à un Pokémon', }, - "EvolutionItemModifierType": { - description: "Permet à certains Pokémon d’évoluer", + 'EvolutionItemModifierType': { + description: 'Permet à certains Pokémon d’évoluer', }, - "FormChangeItemModifierType": { - description: "Permet à certains Pokémon de changer de forme", + 'FormChangeItemModifierType': { + description: 'Permet à certains Pokémon de changer de forme', }, - "FusePokemonModifierType": { - description: "Fusionne deux Pokémon (transfère le Talent, sépare les stats de base et les types, partage le movepool)", + 'FusePokemonModifierType': { + description: 'Fusionne deux Pokémon (transfère le Talent, sépare les stats de base et les types, partage le movepool)', }, - "TerastallizeModifierType": { - name: "Téra-Éclat {{teraType}}", - description: "{{teraType}} Téracristallise son porteur pendant 10 combats", + 'TerastallizeModifierType': { + name: 'Téra-Éclat {{teraType}}', + description: '{{teraType}} Téracristallise son porteur pendant 10 combats', }, - "ContactHeldItemTransferChanceModifierType": { - description: "{{chancePercent}}% de chances de voler un objet de l’adversaire en l’attaquant", + 'ContactHeldItemTransferChanceModifierType': { + description: '{{chancePercent}}% de chances de voler un objet de l’adversaire en l’attaquant', }, - "TurnHeldItemTransferModifierType": { - description: "À chaque tour, son porteur obtient un objet de son adversaire", + 'TurnHeldItemTransferModifierType': { + description: 'À chaque tour, son porteur obtient un objet de son adversaire', }, - "EnemyAttackStatusEffectChanceModifierType": { - description: "Ajoute {{chancePercent}}% de chances d’infliger le statut {{statusEffect}} avec des capacités offensives", + 'EnemyAttackStatusEffectChanceModifierType': { + description: 'Ajoute {{chancePercent}}% de chances d’infliger le statut {{statusEffect}} avec des capacités offensives', }, - "EnemyEndureChanceModifierType": { - description: "Ajoute {{chancePercent}}% de chances d’encaisser un coup", + 'EnemyEndureChanceModifierType': { + description: 'Ajoute {{chancePercent}}% de chances d’encaisser un coup', }, - "RARE_CANDY": { name: "Super Bonbon" }, - "RARER_CANDY": { name: "Hyper Bonbon" }, + 'RARE_CANDY': { name: 'Super Bonbon' }, + 'RARER_CANDY': { name: 'Hyper Bonbon' }, - "MEGA_BRACELET": { name: "Méga-Bracelet", description: "Débloque les Méga-Gemmes" }, - "DYNAMAX_BAND": { name: "Poignet Dynamax", description: "Débloque le Dynamax" }, - "TERA_ORB": { name: "Orbe Téracristal", description: "Débloque les Téra-Éclats" }, + 'MEGA_BRACELET': { name: 'Méga-Bracelet', description: 'Débloque les Méga-Gemmes' }, + 'DYNAMAX_BAND': { name: 'Poignet Dynamax', description: 'Débloque le Dynamax' }, + 'TERA_ORB': { name: 'Orbe Téracristal', description: 'Débloque les Téra-Éclats' }, - "MAP": { name: "Carte", description: "Vous permet de choisir votre destination à un croisement" }, + 'MAP': { name: 'Carte', description: 'Vous permet de choisir votre destination à un croisement' }, - "POTION": { name: "Potion" }, - "SUPER_POTION": { name: "Super Potion" }, - "HYPER_POTION": { name: "Hyper Potion" }, - "MAX_POTION": { name: "Potion Max" }, - "FULL_RESTORE": { name: "Guérison" }, + 'POTION': { name: 'Potion' }, + 'SUPER_POTION': { name: 'Super Potion' }, + 'HYPER_POTION': { name: 'Hyper Potion' }, + 'MAX_POTION': { name: 'Potion Max' }, + 'FULL_RESTORE': { name: 'Guérison' }, - "REVIVE": { name: "Rappel" }, - "MAX_REVIVE": { name: "Rappel Max" }, + 'REVIVE': { name: 'Rappel' }, + 'MAX_REVIVE': { name: 'Rappel Max' }, - "FULL_HEAL": { name: "Total Soin" }, + 'FULL_HEAL': { name: 'Total Soin' }, - "SACRED_ASH": { name: "Cendres Sacrées" }, + 'SACRED_ASH': { name: 'Cendres Sacrées' }, - "REVIVER_SEED": { name: "Résugraine", description: "Réanime et restaure la moitié des PV de son porteur s’il tombe K.O." }, + 'REVIVER_SEED': { name: 'Résugraine', description: 'Réanime et restaure la moitié des PV de son porteur s’il tombe K.O.' }, - "ETHER": { name: "Huile" }, - "MAX_ETHER": { name: "Huile Max" }, + 'ETHER': { name: 'Huile' }, + 'MAX_ETHER': { name: 'Huile Max' }, - "ELIXIR": { name: "Élixir" }, - "MAX_ELIXIR": { name: "Élixir Max" }, + 'ELIXIR': { name: 'Élixir' }, + 'MAX_ELIXIR': { name: 'Élixir Max' }, - "PP_UP": { name: "PP Plus" }, - "PP_MAX": { name: "PP Max" }, + 'PP_UP': { name: 'PP Plus' }, + 'PP_MAX': { name: 'PP Max' }, - "LURE": { name: "Parfum" }, - "SUPER_LURE": { name: "Super Parfum" }, - "MAX_LURE": { name: "Parfum Max" }, + 'LURE': { name: 'Parfum' }, + 'SUPER_LURE': { name: 'Super Parfum' }, + 'MAX_LURE': { name: 'Parfum Max' }, - "MEMORY_MUSHROOM": { name: "Champi Mémoriel", description: "Remémore une capacité à un Pokémon" }, + 'MEMORY_MUSHROOM': { name: 'Champi Mémoriel', description: 'Remémore une capacité à un Pokémon' }, - "EXP_SHARE": { name: "Multi Exp", description: "Tous les non-participants reçoivent 20% des Points d’Exp d’un participant" }, - "EXP_BALANCE": { name: "Équilibr’Exp", description: "Équilibre les Points d’Exp à l’avantage des membres de l’équipe aux plus bas niveaux" }, + 'EXP_SHARE': { name: 'Multi Exp', description: 'Tous les non-participants reçoivent 20% des Points d’Exp d’un participant' }, + 'EXP_BALANCE': { name: 'Équilibr’Exp', description: 'Équilibre les Points d’Exp à l’avantage des membres de l’équipe aux plus bas niveaux' }, - "OVAL_CHARM": { name: "Charme Ovale", description: "Quand plusieurs Pokémon sont en combat, chacun gagne 10% supplémentaires du total d’Exp" }, + 'OVAL_CHARM': { name: 'Charme Ovale', description: 'Quand plusieurs Pokémon sont en combat, chacun gagne 10% supplémentaires du total d’Exp' }, - "EXP_CHARM": { name: "Charme Exp" }, - "SUPER_EXP_CHARM": { name: "Super Charme Exp" }, - "GOLDEN_EXP_CHARM": { name: "Charme Exp Doré" }, + 'EXP_CHARM': { name: 'Charme Exp' }, + 'SUPER_EXP_CHARM': { name: 'Super Charme Exp' }, + 'GOLDEN_EXP_CHARM': { name: 'Charme Exp Doré' }, - "LUCKY_EGG": { name: "Œuf Chance" }, - "GOLDEN_EGG": { name: "Œuf d’Or" }, + 'LUCKY_EGG': { name: 'Œuf Chance' }, + 'GOLDEN_EGG': { name: 'Œuf d’Or' }, - "SOOTHE_BELL": { name: "Grelot Zen" }, + 'SOOTHE_BELL': { name: 'Grelot Zen' }, - "SOUL_DEW": { name: "Rosée Âme", description: "Augmente de 10% l’influence de la nature d’un Pokémon sur ses statistiques (cumulatif)" }, + 'SOUL_DEW': { name: 'Rosée Âme', description: 'Augmente de 10% l’influence de la nature d’un Pokémon sur ses statistiques (cumulatif)' }, - "NUGGET": { name: "Pépite" }, - "BIG_NUGGET": { name: "Maxi Pépite" }, - "RELIC_GOLD": { name: "Vieux Ducat" }, + 'NUGGET': { name: 'Pépite' }, + 'BIG_NUGGET': { name: 'Maxi Pépite' }, + 'RELIC_GOLD': { name: 'Vieux Ducat' }, - "AMULET_COIN": { name: "Pièce Rune", description: "Augmente de 20% les gains d’argent" }, - "GOLDEN_PUNCH": { name: "Poing Doré", description: "50% des dégâts infligés sont convertis en argent" }, - "COIN_CASE": { name: "Boite Jetons", description: "Tous les 10 combats, recevez 10% de votre argent en intérêts" }, + 'AMULET_COIN': { name: 'Pièce Rune', description: 'Augmente de 20% les gains d’argent' }, + 'GOLDEN_PUNCH': { name: 'Poing Doré', description: '50% des dégâts infligés sont convertis en argent' }, + 'COIN_CASE': { name: 'Boite Jetons', description: 'Tous les 10 combats, recevez 10% de votre argent en intérêts' }, - "LOCK_CAPSULE": { name: "Poké Écrin", description: "Permet de verrouiller des objets rares si vous relancez les objets proposés" }, + 'LOCK_CAPSULE': { name: 'Poké Écrin', description: 'Permet de verrouiller des objets rares si vous relancez les objets proposés' }, - "GRIP_CLAW": { name: "Accro Griffe" }, - "WIDE_LENS": { name: "Loupe" }, + 'GRIP_CLAW': { name: 'Accro Griffe' }, + 'WIDE_LENS': { name: 'Loupe' }, - "MULTI_LENS": { name: "Multi Loupe" }, + 'MULTI_LENS': { name: 'Multi Loupe' }, - "HEALING_CHARM": { name: "Charme Soin", description: "Augmente de 10% l’efficacité des capacités et objets de soin de PV (hors Rappels)" }, - "CANDY_JAR": { name: "Jarre de Bonbons", description: "Augmente de 1 le nombre de niveaux gagnés à l’utilisation d’un Super Bonbon" }, + 'HEALING_CHARM': { name: 'Charme Soin', description: 'Augmente de 10% l’efficacité des capacités et objets de soin de PV (hors Rappels)' }, + 'CANDY_JAR': { name: 'Jarre de Bonbons', description: 'Augmente de 1 le nombre de niveaux gagnés à l’utilisation d’un Super Bonbon' }, - "BERRY_POUCH": { name: "Sac à Baies", description: "Ajoute 25% de chances qu’une Baie utilisée ne soit pas consommée" }, + 'BERRY_POUCH': { name: 'Sac à Baies', description: 'Ajoute 25% de chances qu’une Baie utilisée ne soit pas consommée' }, - "FOCUS_BAND": { name: "Bandeau", description: "Ajoute 10% de chances de survivre avec 1 PV si les dégâts reçus pouvaient mettre K.O." }, + 'FOCUS_BAND': { name: 'Bandeau', description: 'Ajoute 10% de chances de survivre avec 1 PV si les dégâts reçus pouvaient mettre K.O.' }, - "QUICK_CLAW": { name: "Vive Griffe", description: "Ajoute 10% de chances d’agir en premier, indépendamment de la vitesse (après la priorité)" }, + 'QUICK_CLAW': { name: 'Vive Griffe', description: 'Ajoute 10% de chances d’agir en premier, indépendamment de la vitesse (après la priorité)' }, - "KINGS_ROCK": { name: "Roche Royale", description: "Ajoute 10% de chances qu’une capacité offensive apeure l’adversaire" }, + 'KINGS_ROCK': { name: 'Roche Royale', description: 'Ajoute 10% de chances qu’une capacité offensive apeure l’adversaire' }, - "LEFTOVERS": { name: "Restes", description: "Soigne à chaque tour 1/16 des PV max d’un Pokémon" }, - "SHELL_BELL": { name: "Grelot Coque", description: "Soigne 1/8 des dégâts infligés par un Pokémon" }, + 'LEFTOVERS': { name: 'Restes', description: 'Soigne à chaque tour 1/16 des PV max d’un Pokémon' }, + 'SHELL_BELL': { name: 'Grelot Coque', description: 'Soigne 1/8 des dégâts infligés par un Pokémon' }, - "BATON": { name: "Bâton", description: "Permet de transmettre les effets en cas de changement de Pokémon. Ignore les pièges." }, + 'BATON': { name: 'Bâton', description: 'Permet de transmettre les effets en cas de changement de Pokémon. Ignore les pièges.' }, - "SHINY_CHARM": { name: "Charme Chroma", description: "Augmente énormément les chances de rencontrer un Pokémon sauvage chromatique" }, - "ABILITY_CHARM": { name: "Charme Talent", description: "Augmente énormément les chances de rencontrer un Pokémon sauvage avec un Talent Caché" }, + 'SHINY_CHARM': { name: 'Charme Chroma', description: 'Augmente énormément les chances de rencontrer un Pokémon sauvage chromatique' }, + 'ABILITY_CHARM': { name: 'Charme Talent', description: 'Augmente énormément les chances de rencontrer un Pokémon sauvage avec un Talent Caché' }, - "IV_SCANNER": { name: "Scanner d’IV", description: "Révèle la qualité de deux IV d’un Pokémon sauvage par scanner possédé. Les meilleurs IV sont révélés en priorité." }, + 'IV_SCANNER': { name: 'Scanner d’IV', description: 'Révèle la qualité de deux IV d’un Pokémon sauvage par scanner possédé. Les meilleurs IV sont révélés en priorité.' }, - "DNA_SPLICERS": { name: "Pointeau ADN" }, + 'DNA_SPLICERS': { name: 'Pointeau ADN' }, - "MINI_BLACK_HOLE": { name: "Mini Trou Noir" }, + 'MINI_BLACK_HOLE': { name: 'Mini Trou Noir' }, - "GOLDEN_POKEBALL": { name: "Poké Ball Dorée", description: "Ajoute un choix d’objet à la fin de chaque combat" }, + 'GOLDEN_POKEBALL': { name: 'Poké Ball Dorée', description: 'Ajoute un choix d’objet à la fin de chaque combat' }, - "ENEMY_DAMAGE_BOOSTER": { name: "Jeton Dégâts", description: "Augmente les dégâts de 5%" }, - "ENEMY_DAMAGE_REDUCTION": { name: "Jeton Protection", description: "Diminue les dégâts reçus de 2,5%" }, - "ENEMY_HEAL": { name: "Jeton Soin", description: "Soigne 2% des PV max à chaque tour" }, - "ENEMY_ATTACK_POISON_CHANCE": { name: "Jeton Poison" }, - "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Jeton Paralysie" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Jeton Sommeil" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Jeton Gel" }, - "ENEMY_ATTACK_BURN_CHANCE": { name: "Jeton Brulure" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Jeton Total Soin", description: "Ajoute 10% de chances à chaque tour de se soigner d’un problème de statut." }, - "ENEMY_ENDURE_CHANCE": { name: "Jeton Ténacité" }, - "ENEMY_FUSED_CHANCE": { name: "Jeton Fusion", description: "Ajoute 1% de chances qu’un Pokémon sauvage soit une fusion." }, + 'ENEMY_DAMAGE_BOOSTER': { name: 'Jeton Dégâts', description: 'Augmente les dégâts de 5%' }, + 'ENEMY_DAMAGE_REDUCTION': { name: 'Jeton Protection', description: 'Diminue les dégâts reçus de 2,5%' }, + 'ENEMY_HEAL': { name: 'Jeton Soin', description: 'Soigne 2% des PV max à chaque tour' }, + 'ENEMY_ATTACK_POISON_CHANCE': { name: 'Jeton Poison' }, + 'ENEMY_ATTACK_PARALYZE_CHANCE': { name: 'Jeton Paralysie' }, + 'ENEMY_ATTACK_SLEEP_CHANCE': { name: 'Jeton Sommeil' }, + 'ENEMY_ATTACK_FREEZE_CHANCE': { name: 'Jeton Gel' }, + 'ENEMY_ATTACK_BURN_CHANCE': { name: 'Jeton Brulure' }, + 'ENEMY_STATUS_EFFECT_HEAL_CHANCE': { name: 'Jeton Total Soin', description: 'Ajoute 10% de chances à chaque tour de se soigner d’un problème de statut.' }, + 'ENEMY_ENDURE_CHANCE': { name: 'Jeton Ténacité' }, + 'ENEMY_FUSED_CHANCE': { name: 'Jeton Fusion', description: 'Ajoute 1% de chances qu’un Pokémon sauvage soit une fusion.' }, }, TempBattleStatBoosterItem: { - "x_attack": "Attaque +", - "x_defense": "Défense +", - "x_sp_atk": "Atq. Spé. +", - "x_sp_def": "Déf. Spé. +", - "x_speed": "Vitesse +", - "x_accuracy": "Précision +", - "dire_hit": "Muscle +", + 'x_attack': 'Attaque +', + 'x_defense': 'Défense +', + 'x_sp_atk': 'Atq. Spé. +', + 'x_sp_def': 'Déf. Spé. +', + 'x_speed': 'Vitesse +', + 'x_accuracy': 'Précision +', + 'dire_hit': 'Muscle +', }, AttackTypeBoosterItem: { - "silk_scarf": "Mouchoir Soie", - "black_belt": "Ceinture Noire", - "sharp_beak": "Bec Pointu", - "poison_barb": "Pic Venin", - "soft_sand": "Sable Doux", - "hard_stone": "Pierre Dure", - "silver_powder": "Poudre Argentée", - "spell_tag": "Rune Sort", - "metal_coat": "Peau Métal", - "charcoal": "Charbon", - "mystic_water": "Eau Mystique", - "miracle_seed": "Graine Miracle", - "magnet": "Aimant", - "twisted_spoon": "Cuillère Tordue", - "never_melt_ice": "Glace Éternelle", - "dragon_fang": "Croc Dragon", - "black_glasses": "Lunettes Noires", - "fairy_feather": "Plume Enchantée", + 'silk_scarf': 'Mouchoir Soie', + 'black_belt': 'Ceinture Noire', + 'sharp_beak': 'Bec Pointu', + 'poison_barb': 'Pic Venin', + 'soft_sand': 'Sable Doux', + 'hard_stone': 'Pierre Dure', + 'silver_powder': 'Poudre Argentée', + 'spell_tag': 'Rune Sort', + 'metal_coat': 'Peau Métal', + 'charcoal': 'Charbon', + 'mystic_water': 'Eau Mystique', + 'miracle_seed': 'Graine Miracle', + 'magnet': 'Aimant', + 'twisted_spoon': 'Cuillère Tordue', + 'never_melt_ice': 'Glace Éternelle', + 'dragon_fang': 'Croc Dragon', + 'black_glasses': 'Lunettes Noires', + 'fairy_feather': 'Plume Enchantée', }, BaseStatBoosterItem: { - "hp_up": "PV Plus", - "protein": "Protéine", - "iron": "Fer", - "calcium": "Calcium", - "zinc": "Zinc", - "carbos": "Carbone", + 'hp_up': 'PV Plus', + 'protein': 'Protéine', + 'iron': 'Fer', + 'calcium': 'Calcium', + 'zinc': 'Zinc', + 'carbos': 'Carbone', }, EvolutionItem: { - "NONE": "Aucun", + 'NONE': 'Aucun', - "LINKING_CORD": "Fil de Liaison", - "SUN_STONE": "Pierre Soleil", - "MOON_STONE": "Pierre Lune", - "LEAF_STONE": "Pierre Plante", - "FIRE_STONE": "Pierre Feu", - "WATER_STONE": "Pierre Eau", - "THUNDER_STONE": "Pierre Foudre", - "ICE_STONE": "Pierre Glace", - "DUSK_STONE": "Pierre Nuit", - "DAWN_STONE": "Pierre Aube", - "SHINY_STONE": "Pierre Éclat", - "CRACKED_POT": "Théière Fêlée", - "SWEET_APPLE": "Pomme Sucrée", - "TART_APPLE": "Pomme Acidulée", - "STRAWBERRY_SWEET": "Fraise en Sucre", - "UNREMARKABLE_TEACUP": "Bol Médiocre", + 'LINKING_CORD': 'Fil de Liaison', + 'SUN_STONE': 'Pierre Soleil', + 'MOON_STONE': 'Pierre Lune', + 'LEAF_STONE': 'Pierre Plante', + 'FIRE_STONE': 'Pierre Feu', + 'WATER_STONE': 'Pierre Eau', + 'THUNDER_STONE': 'Pierre Foudre', + 'ICE_STONE': 'Pierre Glace', + 'DUSK_STONE': 'Pierre Nuit', + 'DAWN_STONE': 'Pierre Aube', + 'SHINY_STONE': 'Pierre Éclat', + 'CRACKED_POT': 'Théière Fêlée', + 'SWEET_APPLE': 'Pomme Sucrée', + 'TART_APPLE': 'Pomme Acidulée', + 'STRAWBERRY_SWEET': 'Fraise en Sucre', + 'UNREMARKABLE_TEACUP': 'Bol Médiocre', - "CHIPPED_POT": "Théière Ébréchée", - "BLACK_AUGURITE": "Obsidienne", - "GALARICA_CUFF": "Bracelet Galanoa", - "GALARICA_WREATH": "Couronne Galanoa", - "PEAT_BLOCK": "Bloc de Tourbe", - "AUSPICIOUS_ARMOR": "Armure de la Fortune", - "MALICIOUS_ARMOR": "Armure de la Rancune", - "MASTERPIECE_TEACUP": "Bol Exceptionnel", - "METAL_ALLOY": "Métal Composite", - "SCROLL_OF_DARKNESS": "Rouleau des Ténèbres", - "SCROLL_OF_WATERS": "Rouleau de l’Eau", - "SYRUPY_APPLE": "Pomme Nectar", + 'CHIPPED_POT': 'Théière Ébréchée', + 'BLACK_AUGURITE': 'Obsidienne', + 'GALARICA_CUFF': 'Bracelet Galanoa', + 'GALARICA_WREATH': 'Couronne Galanoa', + 'PEAT_BLOCK': 'Bloc de Tourbe', + 'AUSPICIOUS_ARMOR': 'Armure de la Fortune', + 'MALICIOUS_ARMOR': 'Armure de la Rancune', + 'MASTERPIECE_TEACUP': 'Bol Exceptionnel', + 'METAL_ALLOY': 'Métal Composite', + 'SCROLL_OF_DARKNESS': 'Rouleau des Ténèbres', + 'SCROLL_OF_WATERS': 'Rouleau de l’Eau', + 'SYRUPY_APPLE': 'Pomme Nectar', }, FormChangeItem: { - "NONE": "Aucun", + 'NONE': 'Aucun', - "ABOMASITE": "Blizzarite", - "ABSOLITE": "Absolite", - "AERODACTYLITE": "Ptéraïte", - "AGGRONITE": "Galekingite", - "ALAKAZITE": "Alakazamite", - "ALTARIANITE": "Altarite", - "AMPHAROSITE": "Pharampite", - "AUDINITE": "Nanméouïte", - "BANETTITE": "Branettite", - "BEEDRILLITE": "Dardargnite", - "BLASTOISINITE": "Tortankite", - "BLAZIKENITE": "Braségalite", - "CAMERUPTITE": "Caméruptite", - "CHARIZARDITE_X": "Dracaufite X", - "CHARIZARDITE_Y": "Dracaufite Y", - "DIANCITE": "Diancite", - "GALLADITE": "Gallamite", - "GARCHOMPITE": "Carchacrokite", - "GARDEVOIRITE": "Gardevoirite", - "GENGARITE": "Ectoplasmite", - "GLALITITE": "Oniglalite", - "GYARADOSITE": "Léviatorite", - "HERACRONITE": "Scarhinoïte", - "HOUNDOOMINITE": "Démolossite", - "KANGASKHANITE": "Kangourexite", - "LATIASITE": "Latiasite", - "LATIOSITE": "Latiosite", - "LOPUNNITE": "Lockpinite", - "LUCARIONITE": "Lucarite", - "MANECTITE": "Élecsprintite", - "MAWILITE": "Mysdibulite", - "MEDICHAMITE": "Charminite", - "METAGROSSITE": "Métalossite", - "MEWTWONITE_X": "Mewtwoïte X", - "MEWTWONITE_Y": "Mewtwoïte Y", - "PIDGEOTITE": "Roucarnagite", - "PINSIRITE": "Scarabruite", - "RAYQUAZITE": "Rayquazite", - "SABLENITE": "Ténéfixite", - "SALAMENCITE": "Drattakite", - "SCEPTILITE": "Jungkite", - "SCIZORITE": "Cizayoxite", - "SHARPEDONITE": "Sharpedite", - "SLOWBRONITE": "Flagadossite", - "STEELIXITE": "Steelixite", - "SWAMPERTITE": "Laggronite", - "TYRANITARITE": "Tyranocivite", - "VENUSAURITE": "Florizarrite", + 'ABOMASITE': 'Blizzarite', + 'ABSOLITE': 'Absolite', + 'AERODACTYLITE': 'Ptéraïte', + 'AGGRONITE': 'Galekingite', + 'ALAKAZITE': 'Alakazamite', + 'ALTARIANITE': 'Altarite', + 'AMPHAROSITE': 'Pharampite', + 'AUDINITE': 'Nanméouïte', + 'BANETTITE': 'Branettite', + 'BEEDRILLITE': 'Dardargnite', + 'BLASTOISINITE': 'Tortankite', + 'BLAZIKENITE': 'Braségalite', + 'CAMERUPTITE': 'Caméruptite', + 'CHARIZARDITE_X': 'Dracaufite X', + 'CHARIZARDITE_Y': 'Dracaufite Y', + 'DIANCITE': 'Diancite', + 'GALLADITE': 'Gallamite', + 'GARCHOMPITE': 'Carchacrokite', + 'GARDEVOIRITE': 'Gardevoirite', + 'GENGARITE': 'Ectoplasmite', + 'GLALITITE': 'Oniglalite', + 'GYARADOSITE': 'Léviatorite', + 'HERACRONITE': 'Scarhinoïte', + 'HOUNDOOMINITE': 'Démolossite', + 'KANGASKHANITE': 'Kangourexite', + 'LATIASITE': 'Latiasite', + 'LATIOSITE': 'Latiosite', + 'LOPUNNITE': 'Lockpinite', + 'LUCARIONITE': 'Lucarite', + 'MANECTITE': 'Élecsprintite', + 'MAWILITE': 'Mysdibulite', + 'MEDICHAMITE': 'Charminite', + 'METAGROSSITE': 'Métalossite', + 'MEWTWONITE_X': 'Mewtwoïte X', + 'MEWTWONITE_Y': 'Mewtwoïte Y', + 'PIDGEOTITE': 'Roucarnagite', + 'PINSIRITE': 'Scarabruite', + 'RAYQUAZITE': 'Rayquazite', + 'SABLENITE': 'Ténéfixite', + 'SALAMENCITE': 'Drattakite', + 'SCEPTILITE': 'Jungkite', + 'SCIZORITE': 'Cizayoxite', + 'SHARPEDONITE': 'Sharpedite', + 'SLOWBRONITE': 'Flagadossite', + 'STEELIXITE': 'Steelixite', + 'SWAMPERTITE': 'Laggronite', + 'TYRANITARITE': 'Tyranocivite', + 'VENUSAURITE': 'Florizarrite', - "BLUE_ORB": "Gemme Bleue", - "RED_ORB": "Gemme Rouge", - "SHARP_METEORITE": "Méteorite Aiguisée", - "HARD_METEORITE": "Méteorite Solide", - "SMOOTH_METEORITE": "Méteorite Lisse", - "ADAMANT_CRYSTAL": "Globe Adamant", - "LUSTROUS_ORB": "Orbe Perlé", - "GRISEOUS_CORE": "Globe Platiné", - "REVEAL_GLASS": "Miroir Sacré", - "GRACIDEA": "Gracidée", - "MAX_MUSHROOMS": "Maxi Champis", - "DARK_STONE": "Galet Noir", - "LIGHT_STONE": "Galet Blanc", - "PRISON_BOTTLE": "Vase Scellé", - "N_LUNARIZER": "Necroluna", - "N_SOLARIZER": "Necrosol", - "RUSTED_SWORD": "Épée Rouillée", - "RUSTED_SHIELD": "Bouclier Rouillé", - "ICY_REINS_OF_UNITY": "Rênes de l’Unité du Froid", - "SHADOW_REINS_OF_UNITY": "Rênes de l’Unité d’Effroi", - "WELLSPRING_MASK": "Masque du Puits", - "HEARTHFLAME_MASK": "Masque du Fourneau", - "CORNERSTONE_MASK": "Masque de la Pierre", - "SHOCK_DRIVE": "Module Choc", - "BURN_DRIVE": "Module Pyro", - "CHILL_DRIVE": "Module Aqua", - "DOUSE_DRIVE": "Module Choc", + 'BLUE_ORB': 'Gemme Bleue', + 'RED_ORB': 'Gemme Rouge', + 'SHARP_METEORITE': 'Méteorite Aiguisée', + 'HARD_METEORITE': 'Méteorite Solide', + 'SMOOTH_METEORITE': 'Méteorite Lisse', + 'ADAMANT_CRYSTAL': 'Globe Adamant', + 'LUSTROUS_ORB': 'Orbe Perlé', + 'GRISEOUS_CORE': 'Globe Platiné', + 'REVEAL_GLASS': 'Miroir Sacré', + 'GRACIDEA': 'Gracidée', + 'MAX_MUSHROOMS': 'Maxi Champis', + 'DARK_STONE': 'Galet Noir', + 'LIGHT_STONE': 'Galet Blanc', + 'PRISON_BOTTLE': 'Vase Scellé', + 'N_LUNARIZER': 'Necroluna', + 'N_SOLARIZER': 'Necrosol', + 'RUSTED_SWORD': 'Épée Rouillée', + 'RUSTED_SHIELD': 'Bouclier Rouillé', + 'ICY_REINS_OF_UNITY': 'Rênes de l’Unité du Froid', + 'SHADOW_REINS_OF_UNITY': 'Rênes de l’Unité d’Effroi', + 'WELLSPRING_MASK': 'Masque du Puits', + 'HEARTHFLAME_MASK': 'Masque du Fourneau', + 'CORNERSTONE_MASK': 'Masque de la Pierre', + 'SHOCK_DRIVE': 'Module Choc', + 'BURN_DRIVE': 'Module Pyro', + 'CHILL_DRIVE': 'Module Aqua', + 'DOUSE_DRIVE': 'Module Choc', }, } as const; diff --git a/src/locales/fr/move.ts b/src/locales/fr/move.ts index 3a0ce42c44d..563c1cfc8bd 100644 --- a/src/locales/fr/move.ts +++ b/src/locales/fr/move.ts @@ -1,3812 +1,3812 @@ -import { MoveTranslationEntries } from "#app/plugins/i18n"; +import { MoveTranslationEntries } from '#app/plugins/i18n'; export const move: MoveTranslationEntries = { - "pound": { - name: "Écras’Face", - effect: "Le lanceur écrase la cible avec l’un de ses membres, tels qu’une de ses pattes avant ou sa longue queue." + 'pound': { + name: 'Écras’Face', + effect: 'Le lanceur écrase la cible avec l’un de ses membres, tels qu’une de ses pattes avant ou sa longue queue.' }, - "karateChop": { - name: "Poing Karaté", - effect: "L’ennemi est tranché violemment. Taux de critique élevé." + 'karateChop': { + name: 'Poing Karaté', + effect: 'L’ennemi est tranché violemment. Taux de critique élevé.' }, - "doubleSlap": { - name: "Torgnoles", - effect: "Gifle rapidement l’ennemi de deux à cinq fois d’affilée." + 'doubleSlap': { + name: 'Torgnoles', + effect: 'Gifle rapidement l’ennemi de deux à cinq fois d’affilée.' }, - "cometPunch": { - name: "Poing Comète", - effect: "Une tornade de coups de poing qui frappe de deux à cinq fois d’affilée." + 'cometPunch': { + name: 'Poing Comète', + effect: 'Une tornade de coups de poing qui frappe de deux à cinq fois d’affilée.' }, - "megaPunch": { - name: "Ultimapoing", - effect: "La cible reçoit un coup de poing d’une grande puissance." + 'megaPunch': { + name: 'Ultimapoing', + effect: 'La cible reçoit un coup de poing d’une grande puissance.' }, - "payDay": { - name: "Jackpot", - effect: "Des pièces sont lancées sur la cible. Permet d’obtenir de l’argent à la fin du combat." + 'payDay': { + name: 'Jackpot', + effect: 'Des pièces sont lancées sur la cible. Permet d’obtenir de l’argent à la fin du combat.' }, - "firePunch": { - name: "Poing Feu", - effect: "Un coup de poing enflammé vient frapper la cible, ce qui peut la brûler (10% de chances)." + 'firePunch': { + name: 'Poing Feu', + effect: 'Un coup de poing enflammé vient frapper la cible, ce qui peut la brûler (10% de chances).' }, - "icePunch": { - name: "Poing Glace", - effect: "Un coup de poing glacé vient frapper la cible, ce qui peut la geler (10% de chances)." + 'icePunch': { + name: 'Poing Glace', + effect: 'Un coup de poing glacé vient frapper la cible, ce qui peut la geler (10% de chances).' }, - "thunderPunch": { - name: "Poing Éclair", - effect: "Un coup de poing électrique vient frapper la cible, ce qui peut la paralyser (10% de chances)." + 'thunderPunch': { + name: 'Poing Éclair', + effect: 'Un coup de poing électrique vient frapper la cible, ce qui peut la paralyser (10% de chances).' }, - "scratch": { - name: "Griffe", - effect: "Lacère la cible avec des griffes acérées pour lui infliger des dégâts." + 'scratch': { + name: 'Griffe', + effect: 'Lacère la cible avec des griffes acérées pour lui infliger des dégâts.' }, - "viseGrip": { - name: "Force Poigne", - effect: "La cible est attrapée et compressée par les côtés." + 'viseGrip': { + name: 'Force Poigne', + effect: 'La cible est attrapée et compressée par les côtés.' }, - "guillotine": { - name: "Guillotine", - effect: "Des pinces lacèrent violemment la cible, la mettant K.O. sur le coup si elle est touchée." + 'guillotine': { + name: 'Guillotine', + effect: 'Des pinces lacèrent violemment la cible, la mettant K.O. sur le coup si elle est touchée.' }, - "razorWind": { - name: "Coupe-Vent", - effect: "Attaque en deux tours. Des lames de vent frappent l’ennemi au second tour. Taux de critique élevé." + 'razorWind': { + name: 'Coupe-Vent', + effect: 'Attaque en deux tours. Des lames de vent frappent l’ennemi au second tour. Taux de critique élevé.' }, - "swordsDance": { - name: "Danse Lames", - effect: "Une danse frénétique qui exalte l’esprit combatif. Augmente beaucoup l’Attaque du lanceur." + 'swordsDance': { + name: 'Danse Lames', + effect: 'Une danse frénétique qui exalte l’esprit combatif. Augmente beaucoup l’Attaque du lanceur.' }, - "cut": { - name: "Coupe", - effect: "Coupe la cible avec des lames ou des griffes." + 'cut': { + name: 'Coupe', + effect: 'Coupe la cible avec des lames ou des griffes.' }, - "gust": { - name: "Tornade", - effect: "Le lanceur bat des ailes pour générer une bourrasque qui blesse la cible." + 'gust': { + name: 'Tornade', + effect: 'Le lanceur bat des ailes pour générer une bourrasque qui blesse la cible.' }, - "wingAttack": { - name: "Cru-Ailes", - effect: "Le lanceur déploie largement ses ailes majestueuses pour attaquer la cible." + 'wingAttack': { + name: 'Cru-Ailes', + effect: 'Le lanceur déploie largement ses ailes majestueuses pour attaquer la cible.' }, - "whirlwind": { - name: "Cyclone", - effect: "Éjecte le Pokémon ennemi et le remplace par un autre. Lors d’un combat contre un Pokémon sauvage seul, met fin au combat." + 'whirlwind': { + name: 'Cyclone', + effect: 'Éjecte le Pokémon ennemi et le remplace par un autre. Lors d’un combat contre un Pokémon sauvage seul, met fin au combat.' }, - "fly": { - name: "Vol", - effect: "Le lanceur s’envole au premier tour et frappe au second." + 'fly': { + name: 'Vol', + effect: 'Le lanceur s’envole au premier tour et frappe au second.' }, - "bind": { - name: "Étreinte", - effect: "Le lanceur ligote la cible avec son corps allongé ou ses tentacules pour la compresser durant quatre à cinq tours." + 'bind': { + name: 'Étreinte', + effect: 'Le lanceur ligote la cible avec son corps allongé ou ses tentacules pour la compresser durant quatre à cinq tours.' }, - "slam": { - name: "Souplesse", - effect: "Le lanceur utilise l’un de ses membres, tels qu’une queue ou une liane, pour infliger des dégâts à la cible." + 'slam': { + name: 'Souplesse', + effect: 'Le lanceur utilise l’un de ses membres, tels qu’une queue ou une liane, pour infliger des dégâts à la cible.' }, - "vineWhip": { - name: "Fouet Lianes", - effect: "Fouette la cible avec de fines lianes pour infliger des dégâts." + 'vineWhip': { + name: 'Fouet Lianes', + effect: 'Fouette la cible avec de fines lianes pour infliger des dégâts.' }, - "stomp": { - name: "Écrasement", - effect: "Écrase la cible avec un énorme pied, ce qui peut aussi l’apeurer (30% de chances)." + 'stomp': { + name: 'Écrasement', + effect: 'Écrase la cible avec un énorme pied, ce qui peut aussi l’apeurer (30% de chances).' }, - "doubleKick": { - name: "Double Pied", - effect: "Deux coups de pied qui frappent la cible deux fois d’affilée." + 'doubleKick': { + name: 'Double Pied', + effect: 'Deux coups de pied qui frappent la cible deux fois d’affilée.' }, - "megaKick": { - name: "Ultimawashi", - effect: "Un coup de pied surpuissant qui frappe la cible." + 'megaKick': { + name: 'Ultimawashi', + effect: 'Un coup de pied surpuissant qui frappe la cible.' }, - "jumpKick": { - name: "Pied Sauté", - effect: "Le lanceur s’envole pour décocher un coup de pied sauté. S’il échoue, le lanceur se blesse." + 'jumpKick': { + name: 'Pied Sauté', + effect: 'Le lanceur s’envole pour décocher un coup de pied sauté. S’il échoue, le lanceur se blesse.' }, - "rollingKick": { - name: "Mawashi Geri", - effect: "Le lanceur effectue un coup de pied tournoyant et extrêmement rapide. Peut apeurer l’ennemi (30% de chances)." + 'rollingKick': { + name: 'Mawashi Geri', + effect: 'Le lanceur effectue un coup de pied tournoyant et extrêmement rapide. Peut apeurer l’ennemi (30% de chances).' }, - "sandAttack": { - name: "Jet de Sable", - effect: "Lance du sable au visage de la cible pour baisser sa Précision." + 'sandAttack': { + name: 'Jet de Sable', + effect: 'Lance du sable au visage de la cible pour baisser sa Précision.' }, - "headbutt": { - name: "Coup d’Boule", - effect: "Le lanceur donne un coup de tête à la cible qui peut aussi l’apeurer (30% de chances)." + 'headbutt': { + name: 'Coup d’Boule', + effect: 'Le lanceur donne un coup de tête à la cible qui peut aussi l’apeurer (30% de chances).' }, - "hornAttack": { - name: "Koud’Korne", - effect: "Frappe la cible d’un coup de corne pointue pour infliger des dégâts." + 'hornAttack': { + name: 'Koud’Korne', + effect: 'Frappe la cible d’un coup de corne pointue pour infliger des dégâts.' }, - "furyAttack": { - name: "Furie", - effect: "Frappe la cible deux à cinq fois d’affilée avec un membre pointu tel qu’un bec ou une corne." + 'furyAttack': { + name: 'Furie', + effect: 'Frappe la cible deux à cinq fois d’affilée avec un membre pointu tel qu’un bec ou une corne.' }, - "hornDrill": { - name: "Empal’Korne", - effect: "Un coup de corne en vrille qui empale la cible, la mettant K.O. sur le coup si elle est touchée." + 'hornDrill': { + name: 'Empal’Korne', + effect: 'Un coup de corne en vrille qui empale la cible, la mettant K.O. sur le coup si elle est touchée.' }, - "tackle": { - name: "Charge", - effect: "Le lanceur charge la cible et la percute de tout son poids." + 'tackle': { + name: 'Charge', + effect: 'Le lanceur charge la cible et la percute de tout son poids.' }, - "bodySlam": { - name: "Plaquage", - effect: "Le lanceur se laisse tomber sur la cible de tout son poids, ce qui peut aussi la paralyser (30% de chances)." + 'bodySlam': { + name: 'Plaquage', + effect: 'Le lanceur se laisse tomber sur la cible de tout son poids, ce qui peut aussi la paralyser (30% de chances).' }, - "wrap": { - name: "Ligotage", - effect: "Le lanceur ligote la cible avec son corps allongé ou ses tentacules pour la compresser durant quatre à cinq tours." + 'wrap': { + name: 'Ligotage', + effect: 'Le lanceur ligote la cible avec son corps allongé ou ses tentacules pour la compresser durant quatre à cinq tours.' }, - "takeDown": { - name: "Bélier", - effect: "Une charge violente qui blesse aussi légèrement le lanceur." + 'takeDown': { + name: 'Bélier', + effect: 'Une charge violente qui blesse aussi légèrement le lanceur.' }, - "thrash": { - name: "Mania", - effect: "Une attaque furieuse qui dure de deux à trois tours. Le lanceur devient confus." + 'thrash': { + name: 'Mania', + effect: 'Une attaque furieuse qui dure de deux à trois tours. Le lanceur devient confus.' }, - "doubleEdge": { - name: "Damoclès", - effect: "Une charge dangereuse et imprudente. Blesse aussi gravement le lanceur." + 'doubleEdge': { + name: 'Damoclès', + effect: 'Une charge dangereuse et imprudente. Blesse aussi gravement le lanceur.' }, - "tailWhip": { - name: "Mimi-Queue", - effect: "Le lanceur remue son adorable queue pour tromper la vigilance de la cible et baisser sa Défense." + 'tailWhip': { + name: 'Mimi-Queue', + effect: 'Le lanceur remue son adorable queue pour tromper la vigilance de la cible et baisser sa Défense.' }, - "poisonSting": { - name: "Dard-Venin", - effect: "Un dard toxique transperce la cible et peut aussi l’empoisonner (30% de chances)." + 'poisonSting': { + name: 'Dard-Venin', + effect: 'Un dard toxique transperce la cible et peut aussi l’empoisonner (30% de chances).' }, - "twineedle": { - name: "Double Dard", - effect: "Un double coup de dard qui transperce l’ennemi deux fois d’affilée. Peut aussi l’empoisonner (36% de chances)." + 'twineedle': { + name: 'Double Dard', + effect: 'Un double coup de dard qui transperce l’ennemi deux fois d’affilée. Peut aussi l’empoisonner (36% de chances).' }, - "pinMissile": { - name: "Dard-Nuée", - effect: "Envoie une rafale de dards. Peut toucher de deux à cinq fois." + 'pinMissile': { + name: 'Dard-Nuée', + effect: 'Envoie une rafale de dards. Peut toucher de deux à cinq fois.' }, - "leer": { - name: "Groz’Yeux", - effect: "Le lanceur fait les gros yeux à la cible pour l’intimider et baisser sa Défense." + 'leer': { + name: 'Groz’Yeux', + effect: 'Le lanceur fait les gros yeux à la cible pour l’intimider et baisser sa Défense.' }, - "bite": { - name: "Morsure", - effect: "Le lanceur utilise ses canines tranchantes pour mordre la cible, ce qui peut aussi l’apeurer (30% de chances)." + 'bite': { + name: 'Morsure', + effect: 'Le lanceur utilise ses canines tranchantes pour mordre la cible, ce qui peut aussi l’apeurer (30% de chances).' }, - "growl": { - name: "Rugissement", - effect: "Le lanceur pousse un cri tout mimi pour tromper la vigilance de la cible et baisser son Attaque." + 'growl': { + name: 'Rugissement', + effect: 'Le lanceur pousse un cri tout mimi pour tromper la vigilance de la cible et baisser son Attaque.' }, - "roar": { - name: "Hurlement", - effect: "Effraie le Pokémon ennemi et le remplace par un autre. Lors d’un combat contre un Pokémon sauvage seul, met fin au combat." + 'roar': { + name: 'Hurlement', + effect: 'Effraie le Pokémon ennemi et le remplace par un autre. Lors d’un combat contre un Pokémon sauvage seul, met fin au combat.' }, - "sing": { - name: "Berceuse", - effect: "Une berceuse plonge la cible dans un profond sommeil." + 'sing': { + name: 'Berceuse', + effect: 'Une berceuse plonge la cible dans un profond sommeil.' }, - "supersonic": { - name: "Ultrason", - effect: "Le lanceur produit d’étranges ondes sonores qui rendent la cible confuse." + 'supersonic': { + name: 'Ultrason', + effect: 'Le lanceur produit d’étranges ondes sonores qui rendent la cible confuse.' }, - "sonicBoom": { - name: "Sonic Boom", - effect: "Une onde de choc destructrice qui inflige toujours 20 PV de dégâts." + 'sonicBoom': { + name: 'Sonic Boom', + effect: 'Une onde de choc destructrice qui inflige toujours 20 PV de dégâts.' }, - "disable": { - name: "Entrave", - effect: "Empêche la cible de répéter sa dernière attaque. Dure quatre tours." + 'disable': { + name: 'Entrave', + effect: 'Empêche la cible de répéter sa dernière attaque. Dure quatre tours.' }, - "acid": { - name: "Acide", - effect: "Le lanceur attaque la cible avec un jet d’acide corrosif qui peut aussi baisser sa Défense Spéciale." + 'acid': { + name: 'Acide', + effect: 'Le lanceur attaque la cible avec un jet d’acide corrosif qui peut aussi baisser sa Défense Spéciale.' }, - "ember": { - name: "Flammèche", - effect: "La cible est attaquée par une faible flamme qui peut aussi la brûler." + 'ember': { + name: 'Flammèche', + effect: 'La cible est attaquée par une faible flamme qui peut aussi la brûler.' }, - "flamethrower": { - name: "Lance-Flammes", - effect: "La cible reçoit un torrent de flammes qui peut aussi la brûler (10% de chances)." + 'flamethrower': { + name: 'Lance-Flammes', + effect: 'La cible reçoit un torrent de flammes qui peut aussi la brûler (10% de chances).' }, - "mist": { - name: "Brume", - effect: "Une brume blanche enveloppe le lanceur et ses alliés et empêche la réduction des stats pour cinq tours." + 'mist': { + name: 'Brume', + effect: 'Une brume blanche enveloppe le lanceur et ses alliés et empêche la réduction des stats pour cinq tours.' }, - "waterGun": { - name: "Pistolet à O", - effect: "De l’eau est projetée avec force sur la cible." + 'waterGun': { + name: 'Pistolet à O', + effect: 'De l’eau est projetée avec force sur la cible.' }, - "hydroPump": { - name: "Hydrocanon", - effect: "Un puissant jet d’eau est dirigé sur la cible." + 'hydroPump': { + name: 'Hydrocanon', + effect: 'Un puissant jet d’eau est dirigé sur la cible.' }, - "surf": { - name: "Surf", - effect: "Une énorme vague s’abat sur le champ de bataille et inflige des dégâts à tous les Pokémon autour du lanceur." + 'surf': { + name: 'Surf', + effect: 'Une énorme vague s’abat sur le champ de bataille et inflige des dégâts à tous les Pokémon autour du lanceur.' }, - "iceBeam": { - name: "Laser Glace", - effect: "Un rayon de glace frappe la cible, ce qui peut aussi la geler (10% de chances)." + 'iceBeam': { + name: 'Laser Glace', + effect: 'Un rayon de glace frappe la cible, ce qui peut aussi la geler (10% de chances).' }, - "blizzard": { - name: "Blizzard", - effect: "Une violente tempête de neige s’abat sur la cible, ce qui peut aussi la geler (10% de chances)." + 'blizzard': { + name: 'Blizzard', + effect: 'Une violente tempête de neige s’abat sur la cible, ce qui peut aussi la geler (10% de chances).' }, - "psybeam": { - name: "Rafale Psy", - effect: "Un étrange rayon frappe la cible, ce qui peut aussi la rendre confuse." + 'psybeam': { + name: 'Rafale Psy', + effect: 'Un étrange rayon frappe la cible, ce qui peut aussi la rendre confuse.' }, - "bubbleBeam": { - name: "Bulles d’O", - effect: "Des bulles sont envoyées avec puissance sur la cible, ce qui peut aussi baisser sa Vitesse." + 'bubbleBeam': { + name: 'Bulles d’O', + effect: 'Des bulles sont envoyées avec puissance sur la cible, ce qui peut aussi baisser sa Vitesse.' }, - "auroraBeam": { - name: "Onde Boréale", - effect: "Le lanceur envoie un rayon arc-en-ciel sur la cible, ce qui peut aussi baisser son Attaque." + 'auroraBeam': { + name: 'Onde Boréale', + effect: 'Le lanceur envoie un rayon arc-en-ciel sur la cible, ce qui peut aussi baisser son Attaque.' }, - "hyperBeam": { - name: "Ultralaser", - effect: "Le lanceur projette un puissant rayon sur la cible, mais doit se reposer au tour suivant." + 'hyperBeam': { + name: 'Ultralaser', + effect: 'Le lanceur projette un puissant rayon sur la cible, mais doit se reposer au tour suivant.' }, - "peck": { - name: "Picpic", - effect: "Le lanceur frappe la cible d’un bec acéré ou d’une corne pointue pour infliger des dégâts." + 'peck': { + name: 'Picpic', + effect: 'Le lanceur frappe la cible d’un bec acéré ou d’une corne pointue pour infliger des dégâts.' }, - "drillPeck": { - name: "Bec Vrille", - effect: "Une attaque utilisant le bec comme une perceuse." + 'drillPeck': { + name: 'Bec Vrille', + effect: 'Une attaque utilisant le bec comme une perceuse.' }, - "submission": { - name: "Sacrifice", - effect: "Le lanceur agrippe l’ennemi et l’écrase au sol. Blesse aussi légèrement le lanceur." + 'submission': { + name: 'Sacrifice', + effect: 'Le lanceur agrippe l’ennemi et l’écrase au sol. Blesse aussi légèrement le lanceur.' }, - "lowKick": { - name: "Balayage", - effect: "Un grand coup de pied bas qui fauche la cible. Plus celle-ci est lourde, plus la puissance de cette capacité augmente." + 'lowKick': { + name: 'Balayage', + effect: 'Un grand coup de pied bas qui fauche la cible. Plus celle-ci est lourde, plus la puissance de cette capacité augmente.' }, - "counter": { - name: "Riposte", - effect: "Une riposte qui répond à toute attaque physique en infligeant le double de dégâts." + 'counter': { + name: 'Riposte', + effect: 'Une riposte qui répond à toute attaque physique en infligeant le double de dégâts.' }, - "seismicToss": { - name: "Frappe Atlas", - effect: "La cible est projetée grâce au pouvoir de la gravité. Cette capacité inflige des dégâts égaux au niveau du lanceur." + 'seismicToss': { + name: 'Frappe Atlas', + effect: 'La cible est projetée grâce au pouvoir de la gravité. Cette capacité inflige des dégâts égaux au niveau du lanceur.' }, - "strength": { - name: "Force", - effect: "Le lanceur cogne la cible de toutes ses forces." + 'strength': { + name: 'Force', + effect: 'Le lanceur cogne la cible de toutes ses forces.' }, - "absorb": { - name: "Vole-Vie", - effect: "Une attaque qui absorbe les nutriments et convertit la moitié des dégâts infligés en PV pour le lanceur." + 'absorb': { + name: 'Vole-Vie', + effect: 'Une attaque qui absorbe les nutriments et convertit la moitié des dégâts infligés en PV pour le lanceur.' }, - "megaDrain": { - name: "Méga-Sangsue", - effect: "Une attaque qui absorbe les nutriments et convertit la moitié des dégâts infligés en PV pour le lanceur." + 'megaDrain': { + name: 'Méga-Sangsue', + effect: 'Une attaque qui absorbe les nutriments et convertit la moitié des dégâts infligés en PV pour le lanceur.' }, - "leechSeed": { - name: "Vampigraine", - effect: "Une graine est semée sur la cible. À chaque tour, elle lui dérobe des PV que le lanceur récupère." + 'leechSeed': { + name: 'Vampigraine', + effect: 'Une graine est semée sur la cible. À chaque tour, elle lui dérobe des PV que le lanceur récupère.' }, - "growth": { - name: "Croissance", - effect: "Le corps du lanceur se développe. Augmente l’Attaque et l’Attaque Spéciale." + 'growth': { + name: 'Croissance', + effect: 'Le corps du lanceur se développe. Augmente l’Attaque et l’Attaque Spéciale.' }, - "razorLeaf": { - name: "Tranch’Herbe", - effect: "Des feuilles aiguisées comme des rasoirs entaillent la cible. Taux de critiques élevé." + 'razorLeaf': { + name: 'Tranch’Herbe', + effect: 'Des feuilles aiguisées comme des rasoirs entaillent la cible. Taux de critiques élevé.' }, - "solarBeam": { - name: "Lance-Soleil", - effect: "Le lanceur absorbe une grande quantité de lumière au premier tour et envoie un rayon puissant au tour suivant." + 'solarBeam': { + name: 'Lance-Soleil', + effect: 'Le lanceur absorbe une grande quantité de lumière au premier tour et envoie un rayon puissant au tour suivant.' }, - "poisonPowder": { - name: "Poudre Toxik", - effect: "Une poudre toxique empoisonne la cible." + 'poisonPowder': { + name: 'Poudre Toxik', + effect: 'Une poudre toxique empoisonne la cible.' }, - "stunSpore": { - name: "Para-Spore", - effect: "Le lanceur répand sur la cible une poudre qui la paralyse." + 'stunSpore': { + name: 'Para-Spore', + effect: 'Le lanceur répand sur la cible une poudre qui la paralyse.' }, - "sleepPowder": { - name: "Poudre Dodo", - effect: "Le lanceur répand une poudre soporifique qui endort la cible." + 'sleepPowder': { + name: 'Poudre Dodo', + effect: 'Le lanceur répand une poudre soporifique qui endort la cible.' }, - "petalDance": { - name: "Danse Fleurs", - effect: "Le lanceur attaque en projetant des pétales pendant deux à trois tours avant de céder à la confusion." + 'petalDance': { + name: 'Danse Fleurs', + effect: 'Le lanceur attaque en projetant des pétales pendant deux à trois tours avant de céder à la confusion.' }, - "stringShot": { - name: "Sécrétion", - effect: "Le lanceur crache de la soie pour ligoter la cible et beaucoup baisser sa Vitesse." + 'stringShot': { + name: 'Sécrétion', + effect: 'Le lanceur crache de la soie pour ligoter la cible et beaucoup baisser sa Vitesse.' }, - "dragonRage": { - name: "Draco-Rage", - effect: "La colère du lanceur déclenche une onde de choc destructrice qui inflige toujours 40 PV de dégâts." + 'dragonRage': { + name: 'Draco-Rage', + effect: 'La colère du lanceur déclenche une onde de choc destructrice qui inflige toujours 40 PV de dégâts.' }, - "fireSpin": { - name: "Danse Flammes", - effect: "Un tourbillon de flammes emprisonne la cible pendant quatre à cinq tours." + 'fireSpin': { + name: 'Danse Flammes', + effect: 'Un tourbillon de flammes emprisonne la cible pendant quatre à cinq tours.' }, - "thunderShock": { - name: "Éclair", - effect: "Une décharge électrique tombe sur la cible, ce qui peut aussi la paralyser (10% de chances)." + 'thunderShock': { + name: 'Éclair', + effect: 'Une décharge électrique tombe sur la cible, ce qui peut aussi la paralyser (10% de chances).' }, - "thunderbolt": { - name: "Tonnerre", - effect: "Une grosse décharge électrique tombe sur la cible, ce qui peut aussi la paralyser (10% de chances)." + 'thunderbolt': { + name: 'Tonnerre', + effect: 'Une grosse décharge électrique tombe sur la cible, ce qui peut aussi la paralyser (10% de chances).' }, - "thunderWave": { - name: "Cage Éclair", - effect: "Un faible choc électrique paralyse la cible." + 'thunderWave': { + name: 'Cage Éclair', + effect: 'Un faible choc électrique paralyse la cible.' }, - "thunder": { - name: "Fatal-Foudre", - effect: "La foudre tombe sur la cible pour lui infliger des dégâts, ce qui peut aussi la paralyser (30% de chances)." + 'thunder': { + name: 'Fatal-Foudre', + effect: 'La foudre tombe sur la cible pour lui infliger des dégâts, ce qui peut aussi la paralyser (30% de chances).' }, - "rockThrow": { - name: "Jet-Pierres", - effect: "Le lanceur soulève une pierre et la lance sur la cible." + 'rockThrow': { + name: 'Jet-Pierres', + effect: 'Le lanceur soulève une pierre et la lance sur la cible.' }, - "earthquake": { - name: "Séisme", - effect: "Le lanceur provoque un tremblement de terre touchant tous les Pokémon autour de lui." + 'earthquake': { + name: 'Séisme', + effect: 'Le lanceur provoque un tremblement de terre touchant tous les Pokémon autour de lui.' }, - "fissure": { - name: "Abîme", - effect: "Le lanceur fait tomber la cible dans une crevasse. Si cette attaque réussit, elle met K.O. sur le coup." + 'fissure': { + name: 'Abîme', + effect: 'Le lanceur fait tomber la cible dans une crevasse. Si cette attaque réussit, elle met K.O. sur le coup.' }, - "dig": { - name: "Tunnel", - effect: "Le lanceur creuse au premier tour et frappe au second." + 'dig': { + name: 'Tunnel', + effect: 'Le lanceur creuse au premier tour et frappe au second.' }, - "toxic": { - name: "Fil Toxique", - effect: "Tisse un fil imprégné de venin. Empoisonne la cible et baisse sa Vitesse." + 'toxic': { + name: 'Fil Toxique', + effect: 'Tisse un fil imprégné de venin. Empoisonne la cible et baisse sa Vitesse.' }, - "confusion": { - name: "Choc Mental", - effect: "Une faible vague télékinétique frappe la cible, ce qui peut aussi la plonger dans la confusion." + 'confusion': { + name: 'Choc Mental', + effect: 'Une faible vague télékinétique frappe la cible, ce qui peut aussi la plonger dans la confusion.' }, - "psychic": { - name: "Psyko", - effect: "Une puissante force télékinétique frappe la cible, ce qui peut aussi faire baisser sa Défense Spéciale." + 'psychic': { + name: 'Psyko', + effect: 'Une puissante force télékinétique frappe la cible, ce qui peut aussi faire baisser sa Défense Spéciale.' }, - "hypnosis": { - name: "Hypnose", - effect: "Le lanceur hypnotise la cible pour la plonger dans un profond sommeil." + 'hypnosis': { + name: 'Hypnose', + effect: 'Le lanceur hypnotise la cible pour la plonger dans un profond sommeil.' }, - "meditate": { - name: "Yoga", - effect: "Le lanceur médite pour éveiller son pouvoir latent et augmenter son Attaque." + 'meditate': { + name: 'Yoga', + effect: 'Le lanceur médite pour éveiller son pouvoir latent et augmenter son Attaque.' }, - "agility": { - name: "Hâte", - effect: "Le lanceur se relaxe et allège son corps pour beaucoup augmenter sa Vitesse." + 'agility': { + name: 'Hâte', + effect: 'Le lanceur se relaxe et allège son corps pour beaucoup augmenter sa Vitesse.' }, - "quickAttack": { - name: "Vive-Attaque", - effect: "Le lanceur fonce sur la cible si rapidement qu’on parvient à peine à le discerner. Frappe en priorité." + 'quickAttack': { + name: 'Vive-Attaque', + effect: 'Le lanceur fonce sur la cible si rapidement qu’on parvient à peine à le discerner. Frappe en priorité.' }, - "rage": { - name: "Frénésie", - effect: "Une fois activée, cette capacité augmente l’Attaque du lanceur à mesure que celui-ci subit des attaques." + 'rage': { + name: 'Frénésie', + effect: 'Une fois activée, cette capacité augmente l’Attaque du lanceur à mesure que celui-ci subit des attaques.' }, - "teleport": { - name: "Téléport", - effect: "Permet de changer de place avec un autre Pokémon de l’équipe s’il y en a. Quand cette capacité est utilisée par un Pokémon sauvage, celui-ci fuit le combat." + 'teleport': { + name: 'Téléport', + effect: 'Permet de changer de place avec un autre Pokémon de l’équipe s’il y en a. Quand cette capacité est utilisée par un Pokémon sauvage, celui-ci fuit le combat.' }, - "nightShade": { - name: "Ombre Nocturne", - effect: "Le lanceur invoque un mirage et inflige des dégâts égaux au niveau du lanceur." + 'nightShade': { + name: 'Ombre Nocturne', + effect: 'Le lanceur invoque un mirage et inflige des dégâts égaux au niveau du lanceur.' }, - "mimic": { - name: "Copie", - effect: "Le lanceur copie la dernière capacité utilisée par la cible et la conserve tant qu’il reste au combat." + 'mimic': { + name: 'Copie', + effect: 'Le lanceur copie la dernière capacité utilisée par la cible et la conserve tant qu’il reste au combat.' }, - "screech": { - name: "Grincement", - effect: "Le lanceur émet un son strident qui donne envie de se boucher les oreilles. Baisse beaucoup la Défense de la cible." + 'screech': { + name: 'Grincement', + effect: 'Le lanceur émet un son strident qui donne envie de se boucher les oreilles. Baisse beaucoup la Défense de la cible.' }, - "doubleTeam": { - name: "Reflet", - effect: "Le lanceur se déplace si vite qu’il crée des copies illusoires de lui-même, augmentant son Esquive." + 'doubleTeam': { + name: 'Reflet', + effect: 'Le lanceur se déplace si vite qu’il crée des copies illusoires de lui-même, augmentant son Esquive.' }, - "recover": { - name: "Soin", - effect: "Un soin qui permet au lanceur de récupérer jusqu’à la moitié de ses PV max." + 'recover': { + name: 'Soin', + effect: 'Un soin qui permet au lanceur de récupérer jusqu’à la moitié de ses PV max.' }, - "harden": { - name: "Armure", - effect: "Le lanceur contracte tous ses muscles pour augmenter sa Défense." + 'harden': { + name: 'Armure', + effect: 'Le lanceur contracte tous ses muscles pour augmenter sa Défense.' }, - "minimize": { - name: "Lilliput", - effect: "Le lanceur comprime son corps pour se faire tout petit et beaucoup augmenter son Esquive." + 'minimize': { + name: 'Lilliput', + effect: 'Le lanceur comprime son corps pour se faire tout petit et beaucoup augmenter son Esquive.' }, - "smokescreen": { - name: "Brouillard", - effect: "Le lanceur disperse un nuage d’encre ou de fumée qui réduit la Précision de la cible." + 'smokescreen': { + name: 'Brouillard', + effect: 'Le lanceur disperse un nuage d’encre ou de fumée qui réduit la Précision de la cible.' }, - "confuseRay": { - name: "Onde Folie", - effect: "Une lumière étrange qui plonge la cible dans un état de confusion." + 'confuseRay': { + name: 'Onde Folie', + effect: 'Une lumière étrange qui plonge la cible dans un état de confusion.' }, - "withdraw": { - name: "Repli", - effect: "Le lanceur se recroqueville dans sa carapace, ce qui augmente sa Défense." + 'withdraw': { + name: 'Repli', + effect: 'Le lanceur se recroqueville dans sa carapace, ce qui augmente sa Défense.' }, - "defenseCurl": { - name: "Boul’Armure", - effect: "Le lanceur s’enroule pour cacher ses points faibles, ce qui augmente sa Défense." + 'defenseCurl': { + name: 'Boul’Armure', + effect: 'Le lanceur s’enroule pour cacher ses points faibles, ce qui augmente sa Défense.' }, - "barrier": { - name: "Bouclier", - effect: "Le lanceur érige un mur solide qui augmente beaucoup sa Défense." + 'barrier': { + name: 'Bouclier', + effect: 'Le lanceur érige un mur solide qui augmente beaucoup sa Défense.' }, - "lightScreen": { - name: "Mur Lumière", - effect: "Crée un fabuleux mur de lumière qui réduit les dégâts causés par les capacités spéciales pendant cinq tours." + 'lightScreen': { + name: 'Mur Lumière', + effect: 'Crée un fabuleux mur de lumière qui réduit les dégâts causés par les capacités spéciales pendant cinq tours.' }, - "haze": { - name: "Buée Noire", - effect: "Crée un brouillard qui annule les changements de stats de tous les Pokémon au combat." + 'haze': { + name: 'Buée Noire', + effect: 'Crée un brouillard qui annule les changements de stats de tous les Pokémon au combat.' }, - "reflect": { - name: "Protection", - effect: "Crée un fabuleux mur de lumière qui réduit les dégâts causés par les capacités physiques pendant cinq tours." + 'reflect': { + name: 'Protection', + effect: 'Crée un fabuleux mur de lumière qui réduit les dégâts causés par les capacités physiques pendant cinq tours.' }, - "focusEnergy": { - name: "Puissance", - effect: "Le lanceur prend une profonde inspiration et se concentre pour augmenter son taux de critiques." + 'focusEnergy': { + name: 'Puissance', + effect: 'Le lanceur prend une profonde inspiration et se concentre pour augmenter son taux de critiques.' }, - "bide": { - name: "Patience", - effect: "Le lanceur encaisse les coups durant deux tours et réplique en infligeant le double des dégâts subis." + 'bide': { + name: 'Patience', + effect: 'Le lanceur encaisse les coups durant deux tours et réplique en infligeant le double des dégâts subis.' }, - "metronome": { - name: "Métronome", - effect: "Le lanceur agite un doigt et stimule son cerveau pour utiliser presque n’importe quelle capacité au hasard." + 'metronome': { + name: 'Métronome', + effect: 'Le lanceur agite un doigt et stimule son cerveau pour utiliser presque n’importe quelle capacité au hasard.' }, - "mirrorMove": { - name: "Mimique", - effect: "Le lanceur riposte à l’attaque de l’ennemi avec la même attaque." + 'mirrorMove': { + name: 'Mimique', + effect: 'Le lanceur riposte à l’attaque de l’ennemi avec la même attaque.' }, - "selfDestruct": { - name: "Destruction", - effect: "Le lanceur explose en blessant tous les Pokémon autour de lui. Le lanceur tombe K.O." + 'selfDestruct': { + name: 'Destruction', + effect: 'Le lanceur explose en blessant tous les Pokémon autour de lui. Le lanceur tombe K.O.' }, - "eggBomb": { - name: "Bombe Œuf", - effect: "De toutes ses forces, le lanceur jette un gros œuf sur l’ennemi pour lui infliger des dégâts." + 'eggBomb': { + name: 'Bombe Œuf', + effect: 'De toutes ses forces, le lanceur jette un gros œuf sur l’ennemi pour lui infliger des dégâts.' }, - "lick": { - name: "Léchouille", - effect: "Un grand coup de langue qui inflige des dégâts à la cible et peut aussi la paralyser (30% de chances)." + 'lick': { + name: 'Léchouille', + effect: 'Un grand coup de langue qui inflige des dégâts à la cible et peut aussi la paralyser (30% de chances).' }, - "smog": { - name: "Purédpois", - effect: "Le lanceur attaque à l'aide d'une éruption de gaz répugnants qui peuvent aussi empoisonner la cible." + 'smog': { + name: 'Purédpois', + effect: 'Le lanceur attaque à l\'aide d\'une éruption de gaz répugnants qui peuvent aussi empoisonner la cible.' }, - "sludge": { - name: "Détritus", - effect: "Des détritus toxiques sont projetés sur la cible, ce qui peut aussi l’empoisonner (30% de chances)." + 'sludge': { + name: 'Détritus', + effect: 'Des détritus toxiques sont projetés sur la cible, ce qui peut aussi l’empoisonner (30% de chances).' }, - "boneClub": { - name: "Massd’Os", - effect: "Le lanceur frappe l’ennemi à grands coups d’os. Peut aussi l’apeurer (10% de chances)." + 'boneClub': { + name: 'Massd’Os', + effect: 'Le lanceur frappe l’ennemi à grands coups d’os. Peut aussi l’apeurer (10% de chances).' }, - "fireBlast": { - name: "Déflagration", - effect: "Un déluge de flammes ardentes submerge la cible, ce qui peut aussi la brûler (10% de chances)." + 'fireBlast': { + name: 'Déflagration', + effect: 'Un déluge de flammes ardentes submerge la cible, ce qui peut aussi la brûler (10% de chances).' }, - "waterfall": { - name: "Cascade", - effect: "Le lanceur charge la cible avec une intensité remarquable, ce qui peut l’apeurer (20% de chances)." + 'waterfall': { + name: 'Cascade', + effect: 'Le lanceur charge la cible avec une intensité remarquable, ce qui peut l’apeurer (20% de chances).' }, - "clamp": { - name: "Claquoir", - effect: "Le lanceur piège l’ennemi dans sa dure coquille et l’écrase pendant quatre à cinq tours." + 'clamp': { + name: 'Claquoir', + effect: 'Le lanceur piège l’ennemi dans sa dure coquille et l’écrase pendant quatre à cinq tours.' }, - "swift": { - name: "Météores", - effect: "Le lanceur envoie des rayons d’étoiles qui touchent toujours la cible." + 'swift': { + name: 'Météores', + effect: 'Le lanceur envoie des rayons d’étoiles qui touchent toujours la cible.' }, - "skullBash": { - name: "Coud’Krâne", - effect: "Le lanceur baisse la tête pour augmenter sa Défense au premier tour et percuter l’ennemi au second." + 'skullBash': { + name: 'Coud’Krâne', + effect: 'Le lanceur baisse la tête pour augmenter sa Défense au premier tour et percuter l’ennemi au second.' }, - "spikeCannon": { - name: "Picanon", - effect: "Envoie une rafale de dards. Peut toucher de deux à cinq fois." + 'spikeCannon': { + name: 'Picanon', + effect: 'Envoie une rafale de dards. Peut toucher de deux à cinq fois.' }, - "constrict": { - name: "Constriction", - effect: "De longs tentacules ou lianes attaquent l’ennemi. Peut aussi baisser sa Vitesse." + 'constrict': { + name: 'Constriction', + effect: 'De longs tentacules ou lianes attaquent l’ennemi. Peut aussi baisser sa Vitesse.' }, - "amnesia": { - name: "Amnésie", - effect: "Le lanceur fait le vide dans son esprit pour oublier ses soucis. Augmente beaucoup sa Défense Spéciale." + 'amnesia': { + name: 'Amnésie', + effect: 'Le lanceur fait le vide dans son esprit pour oublier ses soucis. Augmente beaucoup sa Défense Spéciale.' }, - "kinesis": { - name: "Télékinésie", - effect: "Le lanceur distrait l’ennemi en pliant une cuiller, ce qui baisse sa Précision." + 'kinesis': { + name: 'Télékinésie', + effect: 'Le lanceur distrait l’ennemi en pliant une cuiller, ce qui baisse sa Précision.' }, - "softBoiled": { - name: "E-Coque", - effect: "Le lanceur récupère jusqu’à la moitié de ses PV max." + 'softBoiled': { + name: 'E-Coque', + effect: 'Le lanceur récupère jusqu’à la moitié de ses PV max.' }, - "highJumpKick": { - name: "Pied Voltige", - effect: "Le lanceur s’élance pour effectuer un coup de genou sauté. S’il échoue, le lanceur se blesse." + 'highJumpKick': { + name: 'Pied Voltige', + effect: 'Le lanceur s’élance pour effectuer un coup de genou sauté. S’il échoue, le lanceur se blesse.' }, - "glare": { - name: "Regard Médusant", - effect: "Le lanceur intimide la cible grâce à son regard terrifiant pour la paralyser." + 'glare': { + name: 'Regard Médusant', + effect: 'Le lanceur intimide la cible grâce à son regard terrifiant pour la paralyser.' }, - "dreamEater": { - name: "Dévorêve", - effect: "Le lanceur mange le rêve de la cible endormie et récupère en PV la moitié des dégâts infligés." + 'dreamEater': { + name: 'Dévorêve', + effect: 'Le lanceur mange le rêve de la cible endormie et récupère en PV la moitié des dégâts infligés.' }, - "poisonGas": { - name: "Gaz Toxik", - effect: "Le lanceur empoisonne la cible en lui projetant un nuage de gaz toxique au visage." + 'poisonGas': { + name: 'Gaz Toxik', + effect: 'Le lanceur empoisonne la cible en lui projetant un nuage de gaz toxique au visage.' }, - "barrage": { - name: "Pilonnage", - effect: "Projette de deux à cinq grosses boules sur l’ennemi." + 'barrage': { + name: 'Pilonnage', + effect: 'Projette de deux à cinq grosses boules sur l’ennemi.' }, - "leechLife": { - name: "Vampirisme", - effect: "Une attaque qui aspire le sang de la cible. La moitié des dégâts sont convertis en PV pour le lanceur." + 'leechLife': { + name: 'Vampirisme', + effect: 'Une attaque qui aspire le sang de la cible. La moitié des dégâts sont convertis en PV pour le lanceur.' }, - "lovelyKiss": { - name: "Grobisou", - effect: "Le lanceur fait un bisou à l’ennemi en prenant une mine effrayante. Endort l’ennemi." + 'lovelyKiss': { + name: 'Grobisou', + effect: 'Le lanceur fait un bisou à l’ennemi en prenant une mine effrayante. Endort l’ennemi.' }, - "skyAttack": { - name: "Piqué", - effect: "Une attaque en deux tours au taux de critiques élevé, qui peut aussi apeurer la cible (30% de chances)." + 'skyAttack': { + name: 'Piqué', + effect: 'Une attaque en deux tours au taux de critiques élevé, qui peut aussi apeurer la cible (30% de chances).' }, - "transform": { - name: "Morphing", - effect: "Le lanceur devient une copie de sa cible et obtient la même palette de capacités." + 'transform': { + name: 'Morphing', + effect: 'Le lanceur devient une copie de sa cible et obtient la même palette de capacités.' }, - "bubble": { - name: "Écume", - effect: "Des bulles frappent l’ennemi. Peut réduire sa Vitesse." + 'bubble': { + name: 'Écume', + effect: 'Des bulles frappent l’ennemi. Peut réduire sa Vitesse.' }, - "dizzyPunch": { - name: "Uppercut", - effect: "Un enchaînement de coups de poing cadencés frappe l’ennemi. Peut aussi le rendre confus." + 'dizzyPunch': { + name: 'Uppercut', + effect: 'Un enchaînement de coups de poing cadencés frappe l’ennemi. Peut aussi le rendre confus.' }, - "spore": { - name: "Spore", - effect: "Le lanceur répand un nuage de spores qui endort." + 'spore': { + name: 'Spore', + effect: 'Le lanceur répand un nuage de spores qui endort.' }, - "flash": { - name: "Flash", - effect: "Explosion lumineuse qui fait baisser la Précision de l’ennemi." + 'flash': { + name: 'Flash', + effect: 'Explosion lumineuse qui fait baisser la Précision de l’ennemi.' }, - "psywave": { - name: "Vague Psy", - effect: "Une étrange onde d’énergie chaude frappe l’ennemi. Cette attaque est d’intensité variable." + 'psywave': { + name: 'Vague Psy', + effect: 'Une étrange onde d’énergie chaude frappe l’ennemi. Cette attaque est d’intensité variable.' }, - "splash": { - name: "Trempette", - effect: "Le lanceur barbote et éclabousse les environs. Cette capacité n’a aucun effet." + 'splash': { + name: 'Trempette', + effect: 'Le lanceur barbote et éclabousse les environs. Cette capacité n’a aucun effet.' }, - "acidArmor": { - name: "Acidarmure", - effect: "Le lanceur modifie sa structure moléculaire pour se liquéfier et beaucoup augmenter sa Défense." + 'acidArmor': { + name: 'Acidarmure', + effect: 'Le lanceur modifie sa structure moléculaire pour se liquéfier et beaucoup augmenter sa Défense.' }, - "crabhammer": { - name: "Pince-Masse", - effect: "Une grande pince martèle la cible. Taux de critiques élevé." + 'crabhammer': { + name: 'Pince-Masse', + effect: 'Une grande pince martèle la cible. Taux de critiques élevé.' }, - "explosion": { - name: "Explosion", - effect: "Le lanceur explose et inflige des dégâts à tous les Pokémon autour de lui. Met K.O. le lanceur." + 'explosion': { + name: 'Explosion', + effect: 'Le lanceur explose et inflige des dégâts à tous les Pokémon autour de lui. Met K.O. le lanceur.' }, - "furySwipes": { - name: "Combo-Griffe", - effect: "La cible est lacérée par des faux ou des griffes de deux à cinq fois d’affilée." + 'furySwipes': { + name: 'Combo-Griffe', + effect: 'La cible est lacérée par des faux ou des griffes de deux à cinq fois d’affilée.' }, - "bonemerang": { - name: "Osmerang", - effect: "Le lanceur projette son os comme un boomerang. Cette attaque frappe à l’aller et au retour." + 'bonemerang': { + name: 'Osmerang', + effect: 'Le lanceur projette son os comme un boomerang. Cette attaque frappe à l’aller et au retour.' }, - "rest": { - name: "Repos", - effect: "Le lanceur regagne tous ses PV et ses altérations de statut sont soignées, puis il dort pendant deux tours." + 'rest': { + name: 'Repos', + effect: 'Le lanceur regagne tous ses PV et ses altérations de statut sont soignées, puis il dort pendant deux tours.' }, - "rockSlide": { - name: "Éboulement", - effect: "Le lanceur envoie de gros rochers sur la cible pour lui infliger des dégâts, ce qui peut aussi l’apeurer (30% de chances)." + 'rockSlide': { + name: 'Éboulement', + effect: 'Le lanceur envoie de gros rochers sur la cible pour lui infliger des dégâts, ce qui peut aussi l’apeurer (30% de chances).' }, - "hyperFang": { - name: "Croc de Mort", - effect: "Le lanceur mord l’ennemi à l’aide de ses incisives aiguisées. Peut aussi l’apeurer (10% de chances)." + 'hyperFang': { + name: 'Croc de Mort', + effect: 'Le lanceur mord l’ennemi à l’aide de ses incisives aiguisées. Peut aussi l’apeurer (10% de chances).' }, - "sharpen": { - name: "Affûtage", - effect: "Le lanceur réduit son nombre de polygones pour accentuer ses angles et augmenter son Attaque." + 'sharpen': { + name: 'Affûtage', + effect: 'Le lanceur réduit son nombre de polygones pour accentuer ses angles et augmenter son Attaque.' }, - "conversion": { - name: "Conversion", - effect: "Le lanceur change de type pour prendre celui de la première capacité de sa liste." + 'conversion': { + name: 'Conversion', + effect: 'Le lanceur change de type pour prendre celui de la première capacité de sa liste.' }, - "triAttack": { - name: "Triplattaque", - effect: "Le lanceur envoie trois boules d’énergie simultanément qui peuvent aussi paralyser, brûler ou geler la cible (6.67% de chances)." + 'triAttack': { + name: 'Triplattaque', + effect: 'Le lanceur envoie trois boules d’énergie simultanément qui peuvent aussi paralyser, brûler ou geler la cible (6.67% de chances).' }, - "superFang": { - name: "Croc Fatal", - effect: "Une vilaine morsure d’incisives qui réduit de moitié les PV de la cible." + 'superFang': { + name: 'Croc Fatal', + effect: 'Une vilaine morsure d’incisives qui réduit de moitié les PV de la cible.' }, - "slash": { - name: "Tranche", - effect: "Le lanceur donne un coup de griffe ou de faux. Taux de critiques élevé." + 'slash': { + name: 'Tranche', + effect: 'Le lanceur donne un coup de griffe ou de faux. Taux de critiques élevé.' }, - "substitute": { - name: "Clonage", - effect: "Le lanceur crée un clone en sacrifiant quelques PV. Ce clone sert de leurre." + 'substitute': { + name: 'Clonage', + effect: 'Le lanceur crée un clone en sacrifiant quelques PV. Ce clone sert de leurre.' }, - "struggle": { - name: "Lutte", - effect: "Une attaque désespérée, utilisée quand le lanceur n’a plus de PP. Le blesse aussi légèrement." + 'struggle': { + name: 'Lutte', + effect: 'Une attaque désespérée, utilisée quand le lanceur n’a plus de PP. Le blesse aussi légèrement.' }, - "sketch": { - name: "Gribouille", - effect: "Le lanceur apprend la dernière capacité utilisée par la cible. Gribouille disparaît après utilisation." + 'sketch': { + name: 'Gribouille', + effect: 'Le lanceur apprend la dernière capacité utilisée par la cible. Gribouille disparaît après utilisation.' }, - "tripleKick": { - name: "Triple Pied", - effect: "Une salve de un à trois coups de pied dont la puissance augmente à chaque coup porté." + 'tripleKick': { + name: 'Triple Pied', + effect: 'Une salve de un à trois coups de pied dont la puissance augmente à chaque coup porté.' }, - "thief": { - name: "Larcin", - effect: "Le lanceur attaque la cible et vole son objet. Le lanceur ne peut rien voler s’il tient déjà un objet." + 'thief': { + name: 'Larcin', + effect: 'Le lanceur attaque la cible et vole son objet. Le lanceur ne peut rien voler s’il tient déjà un objet.' }, - "spiderWeb": { - name: "Toile", - effect: "Le lanceur enserre l’ennemi à l’aide d’une fine soie gluante pour l’empêcher de fuir le combat." + 'spiderWeb': { + name: 'Toile', + effect: 'Le lanceur enserre l’ennemi à l’aide d’une fine soie gluante pour l’empêcher de fuir le combat.' }, - "mindReader": { - name: "Lire-Esprit", - effect: "Le lanceur analyse les mouvements de l’ennemi pour être sûr de toucher au coup suivant." + 'mindReader': { + name: 'Lire-Esprit', + effect: 'Le lanceur analyse les mouvements de l’ennemi pour être sûr de toucher au coup suivant.' }, - "nightmare": { - name: "Cauchemar", - effect: "Un cauchemar qui inflige des dégâts à chaque tour à un ennemi endormi." + 'nightmare': { + name: 'Cauchemar', + effect: 'Un cauchemar qui inflige des dégâts à chaque tour à un ennemi endormi.' }, - "flameWheel": { - name: "Roue de Feu", - effect: "Le lanceur s’entoure de feu et charge la cible, ce qui peut aussi la brûler (10% de chances)." + 'flameWheel': { + name: 'Roue de Feu', + effect: 'Le lanceur s’entoure de feu et charge la cible, ce qui peut aussi la brûler (10% de chances).' }, - "snore": { - name: "Ronflement", - effect: "Une attaque qui ne fonctionne que si le lanceur est endormi. Le boucan peut aussi apeurer la cible (30% de chances)." + 'snore': { + name: 'Ronflement', + effect: 'Une attaque qui ne fonctionne que si le lanceur est endormi. Le boucan peut aussi apeurer la cible (30% de chances).' }, - "curse": { - name: "Malédiction", - effect: "Une capacité à l’effet différent selon que le lanceur est un Pokémon Spectre ou non." + 'curse': { + name: 'Malédiction', + effect: 'Une capacité à l’effet différent selon que le lanceur est un Pokémon Spectre ou non.' }, - "flail": { - name: "Gigotage", - effect: "Le lanceur attaque en gigotant dans tous les sens. Plus ses PV sont bas, plus l’attaque est puissante." + 'flail': { + name: 'Gigotage', + effect: 'Le lanceur attaque en gigotant dans tous les sens. Plus ses PV sont bas, plus l’attaque est puissante.' }, - "conversion2": { - name: "Conversion 2", - effect: "Le lanceur change de type pour être résistant au type de la dernière attaque lancée par sa cible." + 'conversion2': { + name: 'Conversion 2', + effect: 'Le lanceur change de type pour être résistant au type de la dernière attaque lancée par sa cible.' }, - "aeroblast": { - name: "Aéroblast", - effect: "Le lanceur projette une tornade sur l’ennemi pour infliger des dégâts. Taux de critique élevé." + 'aeroblast': { + name: 'Aéroblast', + effect: 'Le lanceur projette une tornade sur l’ennemi pour infliger des dégâts. Taux de critique élevé.' }, - "cottonSpore": { - name: "Spore Coton", - effect: "Le lanceur libère des spores cotonneuses qui collent à la cible et baissent beaucoup sa Vitesse." + 'cottonSpore': { + name: 'Spore Coton', + effect: 'Le lanceur libère des spores cotonneuses qui collent à la cible et baissent beaucoup sa Vitesse.' }, - "reversal": { - name: "Contre", - effect: "Le lanceur ne retient plus ses coups. Plus ses PV sont bas, plus la puissance de cette capacité augmente." + 'reversal': { + name: 'Contre', + effect: 'Le lanceur ne retient plus ses coups. Plus ses PV sont bas, plus la puissance de cette capacité augmente.' }, - "spite": { - name: "Dépit", - effect: "Le lanceur exprime son ressentiment en retirant 4 PP à la dernière capacité utilisée par la cible." + 'spite': { + name: 'Dépit', + effect: 'Le lanceur exprime son ressentiment en retirant 4 PP à la dernière capacité utilisée par la cible.' }, - "powderSnow": { - name: "Poudreuse", - effect: "Le lanceur projette de la neige poudreuse qui peut aussi geler la cible (10% de chances)." + 'powderSnow': { + name: 'Poudreuse', + effect: 'Le lanceur projette de la neige poudreuse qui peut aussi geler la cible (10% de chances).' }, - "protect": { - name: "Abri", - effect: "Le lanceur se protège de toutes les attaques. Peut échouer si utilisée plusieurs fois de suite." + 'protect': { + name: 'Abri', + effect: 'Le lanceur se protège de toutes les attaques. Peut échouer si utilisée plusieurs fois de suite.' }, - "machPunch": { - name: "Mach Punch", - effect: "Coup de poing fulgurant. Frappe en priorité." + 'machPunch': { + name: 'Mach Punch', + effect: 'Coup de poing fulgurant. Frappe en priorité.' }, - "scaryFace": { - name: "Grimace", - effect: "Le lanceur fait une grimace qui effraie la cible et réduit beaucoup sa Vitesse." + 'scaryFace': { + name: 'Grimace', + effect: 'Le lanceur fait une grimace qui effraie la cible et réduit beaucoup sa Vitesse.' }, - "feintAttack": { - name: "Feinte", - effect: "Le lanceur s’approche l’air de rien avant de frapper par surprise. N’échoue jamais." + 'feintAttack': { + name: 'Feinte', + effect: 'Le lanceur s’approche l’air de rien avant de frapper par surprise. N’échoue jamais.' }, - "sweetKiss": { - name: "Doux Baiser", - effect: "Le lanceur envoie un bisou si mignon et désarmant qu’il plonge la cible dans la confusion." + 'sweetKiss': { + name: 'Doux Baiser', + effect: 'Le lanceur envoie un bisou si mignon et désarmant qu’il plonge la cible dans la confusion.' }, - "bellyDrum": { - name: "Cognobidon", - effect: "Améliore l’Attaque au maximum en sacrifiant la moitié des PV max." + 'bellyDrum': { + name: 'Cognobidon', + effect: 'Améliore l’Attaque au maximum en sacrifiant la moitié des PV max.' }, - "sludgeBomb": { - name: "Bombe Beurk", - effect: "Des détritus toxiques sont projetés sur la cible, ce qui peut aussi l’empoisonner (30% de chances)." + 'sludgeBomb': { + name: 'Bombe Beurk', + effect: 'Des détritus toxiques sont projetés sur la cible, ce qui peut aussi l’empoisonner (30% de chances).' }, - "mudSlap": { - name: "Coud’Boue", - effect: "Le lanceur envoie de la boue au visage de la cible pour infliger des dégâts et baisser sa Précision." + 'mudSlap': { + name: 'Coud’Boue', + effect: 'Le lanceur envoie de la boue au visage de la cible pour infliger des dégâts et baisser sa Précision.' }, - "octazooka": { - name: "Octazooka", - effect: "Le lanceur attaque en projetant de l’encre au visage de l’ennemi. Peut aussi baisser sa Précision." + 'octazooka': { + name: 'Octazooka', + effect: 'Le lanceur attaque en projetant de l’encre au visage de l’ennemi. Peut aussi baisser sa Précision.' }, - "spikes": { - name: "Picots", - effect: "Le lanceur disperse des picots sur le sol pour blesser tout ennemi qui entre au combat." + 'spikes': { + name: 'Picots', + effect: 'Le lanceur disperse des picots sur le sol pour blesser tout ennemi qui entre au combat.' }, - "zapCannon": { - name: "Élecanon", - effect: "Un boulet de canon électrifié qui inflige des dégâts à la cible et la paralyse." + 'zapCannon': { + name: 'Élecanon', + effect: 'Un boulet de canon électrifié qui inflige des dégâts à la cible et la paralyse.' }, - "foresight": { - name: "Clairvoyance", - effect: "Permet de toucher un Pokémon Spectre avec n’importe quelle capacité ou de toucher un ennemi insaisissable." + 'foresight': { + name: 'Clairvoyance', + effect: 'Permet de toucher un Pokémon Spectre avec n’importe quelle capacité ou de toucher un ennemi insaisissable.' }, - "destinyBond": { - name: "Lien du Destin", - effect: "Si un assaillant porte un coup fatal au lanceur après qu’il a activé cette capacité, ils sont tous les deux mis K.O. La capacité échoue si elle est immédiatement réutilisée." + 'destinyBond': { + name: 'Lien du Destin', + effect: 'Si un assaillant porte un coup fatal au lanceur après qu’il a activé cette capacité, ils sont tous les deux mis K.O. La capacité échoue si elle est immédiatement réutilisée.' }, - "perishSong": { - name: "Requiem", - effect: "Tout Pokémon qui entend ce requiem est K.O. dans trois tours à moins qu’il ne soit remplacé." + 'perishSong': { + name: 'Requiem', + effect: 'Tout Pokémon qui entend ce requiem est K.O. dans trois tours à moins qu’il ne soit remplacé.' }, - "icyWind": { - name: "Vent Glace", - effect: "Une bourrasque de vent froid blesse la cible et réduit sa Vitesse." + 'icyWind': { + name: 'Vent Glace', + effect: 'Une bourrasque de vent froid blesse la cible et réduit sa Vitesse.' }, - "detect": { - name: "Détection", - effect: "Le lanceur se protège de toutes les attaques. Peut échouer si utilisée plusieurs fois de suite." + 'detect': { + name: 'Détection', + effect: 'Le lanceur se protège de toutes les attaques. Peut échouer si utilisée plusieurs fois de suite.' }, - "boneRush": { - name: "Charge Os", - effect: "Le lanceur frappe la cible avec un os de deux à cinq fois d’affilée." + 'boneRush': { + name: 'Charge Os', + effect: 'Le lanceur frappe la cible avec un os de deux à cinq fois d’affilée.' }, - "lockOn": { - name: "Verrouillage", - effect: "Le lanceur verrouille la cible pour ne pas la rater au tour suivant." + 'lockOn': { + name: 'Verrouillage', + effect: 'Le lanceur verrouille la cible pour ne pas la rater au tour suivant.' }, - "outrage": { - name: "Colère", - effect: "Le lanceur enrage et attaque pendant deux ou trois tours avant de devenir confus." + 'outrage': { + name: 'Colère', + effect: 'Le lanceur enrage et attaque pendant deux ou trois tours avant de devenir confus.' }, - "sandstorm": { - name: "Tempête de Sable", - effect: "Une tempête de sable blesse tous les Pokémon pendant cinq tours, sauf ceux de type Roche, Sol ou Acier. Augmente la Défense Spéciale des Pokémon Roche." + 'sandstorm': { + name: 'Tempête de Sable', + effect: 'Une tempête de sable blesse tous les Pokémon pendant cinq tours, sauf ceux de type Roche, Sol ou Acier. Augmente la Défense Spéciale des Pokémon Roche.' }, - "gigaDrain": { - name: "Giga-Sangsue", - effect: "Une attaque qui absorbe les nutriments et convertit la moitié des dégâts infligés en PV pour le lanceur." + 'gigaDrain': { + name: 'Giga-Sangsue', + effect: 'Une attaque qui absorbe les nutriments et convertit la moitié des dégâts infligés en PV pour le lanceur.' }, - "endure": { - name: "Ténacité", - effect: "Le lanceur résiste aux attaques avec 1 PV. Peut échouer si utilisée plusieurs fois de suite." + 'endure': { + name: 'Ténacité', + effect: 'Le lanceur résiste aux attaques avec 1 PV. Peut échouer si utilisée plusieurs fois de suite.' }, - "charm": { - name: "Charme", - effect: "Le lanceur fait les yeux doux pour berner la cible et beaucoup réduire son Attaque." + 'charm': { + name: 'Charme', + effect: 'Le lanceur fait les yeux doux pour berner la cible et beaucoup réduire son Attaque.' }, - "rollout": { - name: "Roulade", - effect: "Un rocher roule sur la cible pendant cinq tours. L’attaque gagne en puissance à chaque coup." + 'rollout': { + name: 'Roulade', + effect: 'Un rocher roule sur la cible pendant cinq tours. L’attaque gagne en puissance à chaque coup.' }, - "falseSwipe": { - name: "Faux-Chage", - effect: "Le lanceur retient ses coups pour que la cible garde au moins 1 PV et ne tombe pas K.O." + 'falseSwipe': { + name: 'Faux-Chage', + effect: 'Le lanceur retient ses coups pour que la cible garde au moins 1 PV et ne tombe pas K.O.' }, - "swagger": { - name: "Vantardise", - effect: "Fait enrager la cible et la plonge dans la confusion, mais augmente beaucoup son Attaque." + 'swagger': { + name: 'Vantardise', + effect: 'Fait enrager la cible et la plonge dans la confusion, mais augmente beaucoup son Attaque.' }, - "milkDrink": { - name: "Lait à Boire", - effect: "Le lanceur récupère jusqu’à la moitié de ses PV max." + 'milkDrink': { + name: 'Lait à Boire', + effect: 'Le lanceur récupère jusqu’à la moitié de ses PV max.' }, - "spark": { - name: "Étincelle", - effect: "Le lanceur envoie une charge électrique sur la cible qui peut aussi la paralyser (30% de chances)." + 'spark': { + name: 'Étincelle', + effect: 'Le lanceur envoie une charge électrique sur la cible qui peut aussi la paralyser (30% de chances).' }, - "furyCutter": { - name: "Taillade", - effect: "Un coup de faux ou de griffe dont la puissance augmente quand il touche plusieurs fois d’affilée." + 'furyCutter': { + name: 'Taillade', + effect: 'Un coup de faux ou de griffe dont la puissance augmente quand il touche plusieurs fois d’affilée.' }, - "steelWing": { - name: "Ailes d’Acier", - effect: "Le lanceur frappe la cible avec des ailes d’acier, ce qui peut aussi augmenter la Défense du lanceur." + 'steelWing': { + name: 'Ailes d’Acier', + effect: 'Le lanceur frappe la cible avec des ailes d’acier, ce qui peut aussi augmenter la Défense du lanceur.' }, - "meanLook": { - name: "Regard Noir", - effect: "Le lanceur pétrifie la cible en lui lançant un regard noir qui la rend incapable de quitter le terrain." + 'meanLook': { + name: 'Regard Noir', + effect: 'Le lanceur pétrifie la cible en lui lançant un regard noir qui la rend incapable de quitter le terrain.' }, - "attract": { - name: "Attraction", - effect: "Si la cible est du sexe opposé, elle tombe amoureuse et rechigne alors à attaquer." + 'attract': { + name: 'Attraction', + effect: 'Si la cible est du sexe opposé, elle tombe amoureuse et rechigne alors à attaquer.' }, - "sleepTalk": { - name: "Blabla Dodo", - effect: "Le lanceur utilise une de ses capacités au hasard. Il ne peut utiliser cette capacité que quand il dort." + 'sleepTalk': { + name: 'Blabla Dodo', + effect: 'Le lanceur utilise une de ses capacités au hasard. Il ne peut utiliser cette capacité que quand il dort.' }, - "healBell": { - name: "Glas de Soin", - effect: "Carillon apaisant qui soigne les altérations de statut de tous les Pokémon de l’équipe." + 'healBell': { + name: 'Glas de Soin', + effect: 'Carillon apaisant qui soigne les altérations de statut de tous les Pokémon de l’équipe.' }, - "return": { - name: "Retour", - effect: "Plus le Pokémon apprécie son Dresseur, plus la puissance de cette attaque furieuse augmente." + 'return': { + name: 'Retour', + effect: 'Plus le Pokémon apprécie son Dresseur, plus la puissance de cette attaque furieuse augmente.' }, - "present": { - name: "Cadeau", - effect: "Le lanceur attaque en offrant un cadeau piégé à la cible, mais le cadeau peut parfois restaurer les PV de celle-ci à la place." + 'present': { + name: 'Cadeau', + effect: 'Le lanceur attaque en offrant un cadeau piégé à la cible, mais le cadeau peut parfois restaurer les PV de celle-ci à la place.' }, - "frustration": { - name: "Frustration", - effect: "Moins le Pokémon aime son Dresseur, plus cette attaque est puissante." + 'frustration': { + name: 'Frustration', + effect: 'Moins le Pokémon aime son Dresseur, plus cette attaque est puissante.' }, - "safeguard": { - name: "Rune Protect", - effect: "Crée un champ protecteur qui empêche toutes les altérations de statut pendant cinq tours." + 'safeguard': { + name: 'Rune Protect', + effect: 'Crée un champ protecteur qui empêche toutes les altérations de statut pendant cinq tours.' }, - "painSplit": { - name: "Balance", - effect: "Le lanceur ajoute ses PV à ceux de sa cible et les répartit équitablement." + 'painSplit': { + name: 'Balance', + effect: 'Le lanceur ajoute ses PV à ceux de sa cible et les répartit équitablement.' }, - "sacredFire": { - name: "Feu Sacré", - effect: "Le lanceur génère un feu mystique d’une intensité redoutable pour attaquer l’ennemi. Peut aussi le brûler (50% de chances)." + 'sacredFire': { + name: 'Feu Sacré', + effect: 'Le lanceur génère un feu mystique d’une intensité redoutable pour attaquer l’ennemi. Peut aussi le brûler (50% de chances).' }, - "magnitude": { - name: "Ampleur", - effect: "Provoque un tremblement de terre d’intensité variable qui affecte tous les Pokémon alentour. L’efficacité varie." + 'magnitude': { + name: 'Ampleur', + effect: 'Provoque un tremblement de terre d’intensité variable qui affecte tous les Pokémon alentour. L’efficacité varie.' }, - "dynamicPunch": { - name: "Dynamo-Poing", - effect: "Le lanceur rassemble ses forces et envoie un coup de poing à la cible, ce qui la rend confuse à coup sûr." + 'dynamicPunch': { + name: 'Dynamo-Poing', + effect: 'Le lanceur rassemble ses forces et envoie un coup de poing à la cible, ce qui la rend confuse à coup sûr.' }, - "megahorn": { - name: "Mégacorne", - effect: "Le lanceur inflige un grand coup de corne à la cible." + 'megahorn': { + name: 'Mégacorne', + effect: 'Le lanceur inflige un grand coup de corne à la cible.' }, - "dragonBreath": { - name: "Draco-Souffle", - effect: "Le lanceur souffle fort sur la cible pour lui infliger des dégâts, ce qui peut aussi la paralyser (30% de chances)." + 'dragonBreath': { + name: 'Draco-Souffle', + effect: 'Le lanceur souffle fort sur la cible pour lui infliger des dégâts, ce qui peut aussi la paralyser (30% de chances).' }, - "batonPass": { - name: "Relais", - effect: "Le lanceur échange sa place et tout changement de stats avec un Pokémon de l’équipe." + 'batonPass': { + name: 'Relais', + effect: 'Le lanceur échange sa place et tout changement de stats avec un Pokémon de l’équipe.' }, - "encore": { - name: "Encore", - effect: "Le lanceur oblige la cible à répéter la dernière capacité utilisée durant trois tours." + 'encore': { + name: 'Encore', + effect: 'Le lanceur oblige la cible à répéter la dernière capacité utilisée durant trois tours.' }, - "pursuit": { - name: "Poursuite", - effect: "Une attaque qui inflige deux fois plus de dégâts à un ennemi qui s’apprête à être remplacé." + 'pursuit': { + name: 'Poursuite', + effect: 'Une attaque qui inflige deux fois plus de dégâts à un ennemi qui s’apprête à être remplacé.' }, - "rapidSpin": { - name: "Tour Rapide", - effect: "Le lanceur attaque en tournant sur lui-même. Sa Vitesse augmente également. Il se libère également des effets de capacités comme Étreinte, Ligotage ou Vampigraine." + 'rapidSpin': { + name: 'Tour Rapide', + effect: 'Le lanceur attaque en tournant sur lui-même. Sa Vitesse augmente également. Il se libère également des effets de capacités comme Étreinte, Ligotage ou Vampigraine.' }, - "sweetScent": { - name: "Doux Parfum", - effect: "Un doux parfum qui réduit beaucoup l’Esquive de la cible." + 'sweetScent': { + name: 'Doux Parfum', + effect: 'Un doux parfum qui réduit beaucoup l’Esquive de la cible.' }, - "ironTail": { - name: "Queue de Fer", - effect: "Le lanceur attaque la cible avec une queue de fer, ce qui peut aussi baisser la Défense de la cible." + 'ironTail': { + name: 'Queue de Fer', + effect: 'Le lanceur attaque la cible avec une queue de fer, ce qui peut aussi baisser la Défense de la cible.' }, - "metalClaw": { - name: "Griffe Acier", - effect: "Attaque avec des griffes d’acier. Peut aussi augmenter l’Attaque du lanceur." + 'metalClaw': { + name: 'Griffe Acier', + effect: 'Attaque avec des griffes d’acier. Peut aussi augmenter l’Attaque du lanceur.' }, - "vitalThrow": { - name: "Corps Perdu", - effect: "Le lanceur porte son coup en dernier. En échange, cette capacité n’échoue jamais." + 'vitalThrow': { + name: 'Corps Perdu', + effect: 'Le lanceur porte son coup en dernier. En échange, cette capacité n’échoue jamais.' }, - "morningSun": { - name: "Aurore", - effect: "Un soin qui restaure des PV au lanceur. Son efficacité varie en fonction de la météo." + 'morningSun': { + name: 'Aurore', + effect: 'Un soin qui restaure des PV au lanceur. Son efficacité varie en fonction de la météo.' }, - "synthesis": { - name: "Synthèse", - effect: "Un soin qui restaure des PV au lanceur. Son efficacité varie en fonction de la météo." + 'synthesis': { + name: 'Synthèse', + effect: 'Un soin qui restaure des PV au lanceur. Son efficacité varie en fonction de la météo.' }, - "moonlight": { - name: "Rayon Lune", - effect: "Un soin qui restaure des PV au lanceur. Son efficacité varie en fonction de la météo." + 'moonlight': { + name: 'Rayon Lune', + effect: 'Un soin qui restaure des PV au lanceur. Son efficacité varie en fonction de la météo.' }, - "hiddenPower": { - name: "Puissance Cachée", - effect: "Attaque dont le type dépend du Pokémon qui l’utilise." + 'hiddenPower': { + name: 'Puissance Cachée', + effect: 'Attaque dont le type dépend du Pokémon qui l’utilise.' }, - "crossChop": { - name: "Coup Croix", - effect: "Le lanceur délivre un coup double en croisant les avant-bras. Taux de critiques élevé." + 'crossChop': { + name: 'Coup Croix', + effect: 'Le lanceur délivre un coup double en croisant les avant-bras. Taux de critiques élevé.' }, - "twister": { - name: "Ouragan", - effect: "Le lanceur déclenche un terrible ouragan sur la cible, ce qui peut aussi apeurer celle-ci (20% de chances)." + 'twister': { + name: 'Ouragan', + effect: 'Le lanceur déclenche un terrible ouragan sur la cible, ce qui peut aussi apeurer celle-ci (20% de chances).' }, - "rainDance": { - name: "Danse Pluie", - effect: "Invoque de fortes pluies qui durent cinq tours, augmentant la puissance des capacités de type Eau et baissant celle des capacités de type Feu." + 'rainDance': { + name: 'Danse Pluie', + effect: 'Invoque de fortes pluies qui durent cinq tours, augmentant la puissance des capacités de type Eau et baissant celle des capacités de type Feu.' }, - "sunnyDay": { - name: "Zénith", - effect: "Fait briller le soleil pendant cinq tours, augmentant la puissance des capacités de type Feu et baissant celle des capacités de type Eau." + 'sunnyDay': { + name: 'Zénith', + effect: 'Fait briller le soleil pendant cinq tours, augmentant la puissance des capacités de type Feu et baissant celle des capacités de type Eau.' }, - "crunch": { - name: "Mâchouille", - effect: "Le lanceur mord la cible de ses crocs pointus, ce qui peut aussi baisser sa Défense." + 'crunch': { + name: 'Mâchouille', + effect: 'Le lanceur mord la cible de ses crocs pointus, ce qui peut aussi baisser sa Défense.' }, - "mirrorCoat": { - name: "Voile Miroir", - effect: "Une riposte qui contre n’importe quelle capacité spéciale en infligeant le double des dégâts subis." + 'mirrorCoat': { + name: 'Voile Miroir', + effect: 'Une riposte qui contre n’importe quelle capacité spéciale en infligeant le double des dégâts subis.' }, - "psychUp": { - name: "Boost", - effect: "Une autohypnose qui permet au lanceur de copier les changements de stats de la cible." + 'psychUp': { + name: 'Boost', + effect: 'Une autohypnose qui permet au lanceur de copier les changements de stats de la cible.' }, - "extremeSpeed": { - name: "Vitesse Extrême", - effect: "Le lanceur charge à une vitesse renversante. Frappe en priorité." + 'extremeSpeed': { + name: 'Vitesse Extrême', + effect: 'Le lanceur charge à une vitesse renversante. Frappe en priorité.' }, - "ancientPower": { - name: "Pouvoir Antique", - effect: "Une attaque préhistorique qui peut augmenter toutes les stats du lanceur d’un seul coup." + 'ancientPower': { + name: 'Pouvoir Antique', + effect: 'Une attaque préhistorique qui peut augmenter toutes les stats du lanceur d’un seul coup.' }, - "shadowBall": { - name: "Ball’Ombre", - effect: "Le lanceur projette une grande ombre sur la cible qui peut aussi faire baisser la Défense Spéciale de celle-ci." + 'shadowBall': { + name: 'Ball’Ombre', + effect: 'Le lanceur projette une grande ombre sur la cible qui peut aussi faire baisser la Défense Spéciale de celle-ci.' }, - "futureSight": { - name: "Prescience", - effect: "De l’énergie psychique vient frapper la cible deux tours après l’utilisation de cette capacité." + 'futureSight': { + name: 'Prescience', + effect: 'De l’énergie psychique vient frapper la cible deux tours après l’utilisation de cette capacité.' }, - "rockSmash": { - name: "Éclate-Roc", - effect: "Le lanceur porte un coup de poing à la cible, ce qui peut baisser la Défense de celle-ci." + 'rockSmash': { + name: 'Éclate-Roc', + effect: 'Le lanceur porte un coup de poing à la cible, ce qui peut baisser la Défense de celle-ci.' }, - "whirlpool": { - name: "Siphon", - effect: "Le lanceur piège la cible dans une trombe d’eau pendant quatre à cinq tours." + 'whirlpool': { + name: 'Siphon', + effect: 'Le lanceur piège la cible dans une trombe d’eau pendant quatre à cinq tours.' }, - "beatUp": { - name: "Baston", - effect: "Le lanceur appelle tous les Pokémon de son équipe à attaquer. Plus ils sont nombreux, plus il y a d’attaques." + 'beatUp': { + name: 'Baston', + effect: 'Le lanceur appelle tous les Pokémon de son équipe à attaquer. Plus ils sont nombreux, plus il y a d’attaques.' }, - "fakeOut": { - name: "Bluff", - effect: "Le lanceur frappe en priorité et apeure la cible. La capacité ne fonctionne que si elle est utilisée immédiatement en entrant au combat." + 'fakeOut': { + name: 'Bluff', + effect: 'Le lanceur frappe en priorité et apeure la cible. La capacité ne fonctionne que si elle est utilisée immédiatement en entrant au combat.' }, - "uproar": { - name: "Brouhaha", - effect: "Le lanceur attaque en rugissant durant trois tours. Pendant ce temps, aucun Pokémon ne peut s’endormir." + 'uproar': { + name: 'Brouhaha', + effect: 'Le lanceur attaque en rugissant durant trois tours. Pendant ce temps, aucun Pokémon ne peut s’endormir.' }, - "stockpile": { - name: "Stockage", - effect: "Le lanceur emmagasine de l’énergie et augmente sa Défense et sa Défense Spéciale. Peut être utilisée trois fois." + 'stockpile': { + name: 'Stockage', + effect: 'Le lanceur emmagasine de l’énergie et augmente sa Défense et sa Défense Spéciale. Peut être utilisée trois fois.' }, - "spitUp": { - name: "Relâche", - effect: "Libère dans une attaque l’énergie précédemment emmagasinée avec Stockage. La puissance augmente en fonction du nombre de fois où Stockage a été utilisée." + 'spitUp': { + name: 'Relâche', + effect: 'Libère dans une attaque l’énergie précédemment emmagasinée avec Stockage. La puissance augmente en fonction du nombre de fois où Stockage a été utilisée.' }, - "swallow": { - name: "Avale", - effect: "Le lanceur absorbe l’énergie emmagasinée avec Stockage pour restaurer ses PV. Le nombre de PV soignés augmente en fonction du nombre de fois où Stockage a été utilisée." + 'swallow': { + name: 'Avale', + effect: 'Le lanceur absorbe l’énergie emmagasinée avec Stockage pour restaurer ses PV. Le nombre de PV soignés augmente en fonction du nombre de fois où Stockage a été utilisée.' }, - "heatWave": { - name: "Canicule", - effect: "Le lanceur provoque une vague de chaleur qui peut aussi brûler la cible (10% de chances)." + 'heatWave': { + name: 'Canicule', + effect: 'Le lanceur provoque une vague de chaleur qui peut aussi brûler la cible (10% de chances).' }, - "hail": { - name: "Grêle", - effect: "Invoque une tempête de grêle qui dure cinq tours. Ne blesse pas les Pokémon de type Glace." + 'hail': { + name: 'Grêle', + effect: 'Invoque une tempête de grêle qui dure cinq tours. Ne blesse pas les Pokémon de type Glace.' }, - "torment": { - name: "Tourmente", - effect: "Le lanceur irrite la cible pour l’empêcher d’utiliser la même capacité deux fois de suite." + 'torment': { + name: 'Tourmente', + effect: 'Le lanceur irrite la cible pour l’empêcher d’utiliser la même capacité deux fois de suite.' }, - "flatter": { - name: "Flatterie", - effect: "Rend la cible confuse, mais augmente son Attaque Spéciale." + 'flatter': { + name: 'Flatterie', + effect: 'Rend la cible confuse, mais augmente son Attaque Spéciale.' }, - "willOWisp": { - name: "Feu Follet", - effect: "Le lanceur projette des flammes maléfiques à la cible pour lui infliger une brûlure." + 'willOWisp': { + name: 'Feu Follet', + effect: 'Le lanceur projette des flammes maléfiques à la cible pour lui infliger une brûlure.' }, - "memento": { - name: "Souvenir", - effect: "Le lanceur est mis K.O., mais l’Attaque et l’Attaque Spéciale de la cible baissent beaucoup." + 'memento': { + name: 'Souvenir', + effect: 'Le lanceur est mis K.O., mais l’Attaque et l’Attaque Spéciale de la cible baissent beaucoup.' }, - "facade": { - name: "Façade", - effect: "Une capacité dont la puissance double lorsque le lanceur est empoisonné, paralysé ou brûlé." + 'facade': { + name: 'Façade', + effect: 'Une capacité dont la puissance double lorsque le lanceur est empoisonné, paralysé ou brûlé.' }, - "focusPunch": { - name: "Mitra-Poing", - effect: "Le lanceur se concentre avant d’attaquer. Échoue s’il est touché avant d’avoir frappé." + 'focusPunch': { + name: 'Mitra-Poing', + effect: 'Le lanceur se concentre avant d’attaquer. Échoue s’il est touché avant d’avoir frappé.' }, - "smellingSalts": { - name: "Stimulant", - effect: "Cette attaque est doublement efficace sur les Pokémon paralysés, mais elle soigne leur paralysie." + 'smellingSalts': { + name: 'Stimulant', + effect: 'Cette attaque est doublement efficace sur les Pokémon paralysés, mais elle soigne leur paralysie.' }, - "followMe": { - name: "Par Ici", - effect: "Le lanceur attire l’attention des cibles présentes pour les forcer à n’attaquer que le lanceur." + 'followMe': { + name: 'Par Ici', + effect: 'Le lanceur attire l’attention des cibles présentes pour les forcer à n’attaquer que le lanceur.' }, - "naturePower": { - name: "Force Nature", - effect: "Une attaque qui tire sa force de la nature. Son type varie selon le terrain." + 'naturePower': { + name: 'Force Nature', + effect: 'Une attaque qui tire sa force de la nature. Son type varie selon le terrain.' }, - "charge": { - name: "Chargeur", - effect: "Le lanceur se charge en électricité, ce qui augmente la puissance de la prochaine capacité Électrik qu’il utilisera. Sa Défense Spéciale augmente également." + 'charge': { + name: 'Chargeur', + effect: 'Le lanceur se charge en électricité, ce qui augmente la puissance de la prochaine capacité Électrik qu’il utilisera. Sa Défense Spéciale augmente également.' }, - "taunt": { - name: "Provoc", - effect: "Le lanceur provoque la cible, ce qui oblige celle-ci à n’utiliser que des capacités qui infligent des dégâts pendant trois tours." + 'taunt': { + name: 'Provoc', + effect: 'Le lanceur provoque la cible, ce qui oblige celle-ci à n’utiliser que des capacités qui infligent des dégâts pendant trois tours.' }, - "helpingHand": { - name: "Coup d’Main", - effect: "Le lanceur donne un coup de main à son allié, qui voit la puissance de ses capacités augmenter." + 'helpingHand': { + name: 'Coup d’Main', + effect: 'Le lanceur donne un coup de main à son allié, qui voit la puissance de ses capacités augmenter.' }, - "trick": { - name: "Tour de Magie", - effect: "Le lanceur prend la cible au dépourvu et l’oblige à échanger son objet contre le sien." + 'trick': { + name: 'Tour de Magie', + effect: 'Le lanceur prend la cible au dépourvu et l’oblige à échanger son objet contre le sien.' }, - "rolePlay": { - name: "Imitation", - effect: "Imite la cible et copie son talent." + 'rolePlay': { + name: 'Imitation', + effect: 'Imite la cible et copie son talent.' }, - "wish": { - name: "Vœu", - effect: "Un vœu qui permet au lanceur ou au Pokémon entrant sur le terrain au tour suivant de récupérer la moitié des PV max du lanceur." + 'wish': { + name: 'Vœu', + effect: 'Un vœu qui permet au lanceur ou au Pokémon entrant sur le terrain au tour suivant de récupérer la moitié des PV max du lanceur.' }, - "assist": { - name: "Assistance", - effect: "Le lanceur se dépêche d’utiliser une capacité au hasard parmi celles des Pokémon de l’équipe." + 'assist': { + name: 'Assistance', + effect: 'Le lanceur se dépêche d’utiliser une capacité au hasard parmi celles des Pokémon de l’équipe.' }, - "ingrain": { - name: "Racines", - effect: "Le lanceur plante ses racines et récupère des PV à chaque tour. Une fois enraciné, il ne peut plus fuir." + 'ingrain': { + name: 'Racines', + effect: 'Le lanceur plante ses racines et récupère des PV à chaque tour. Une fois enraciné, il ne peut plus fuir.' }, - "superpower": { - name: "Surpuissance", - effect: "Une attaque puissante, mais qui baisse l’Attaque et la Défense du lanceur." + 'superpower': { + name: 'Surpuissance', + effect: 'Une attaque puissante, mais qui baisse l’Attaque et la Défense du lanceur.' }, - "magicCoat": { - name: "Reflet Magik", - effect: "Une barrière qui renvoie les capacités comme Vampigraine et celles affectant le statut et les stats." + 'magicCoat': { + name: 'Reflet Magik', + effect: 'Une barrière qui renvoie les capacités comme Vampigraine et celles affectant le statut et les stats.' }, - "recycle": { - name: "Recyclage", - effect: "Recycle un objet tenu à usage unique déjà utilisé lors du combat pour pouvoir l’utiliser à nouveau." + 'recycle': { + name: 'Recyclage', + effect: 'Recycle un objet tenu à usage unique déjà utilisé lors du combat pour pouvoir l’utiliser à nouveau.' }, - "revenge": { - name: "Vendetta", - effect: "Une attaque deux fois plus puissante si le lanceur a été blessé par l’ennemi durant ce tour." + 'revenge': { + name: 'Vendetta', + effect: 'Une attaque deux fois plus puissante si le lanceur a été blessé par l’ennemi durant ce tour.' }, - "brickBreak": { - name: "Casse-Brique", - effect: "Le lanceur attaque avec le tranchant de la main. Permet aussi de briser les barrières comme Mur Lumière et Protection." + 'brickBreak': { + name: 'Casse-Brique', + effect: 'Le lanceur attaque avec le tranchant de la main. Permet aussi de briser les barrières comme Mur Lumière et Protection.' }, - "yawn": { - name: "Bâillement", - effect: "Le lanceur fait bâiller la cible, qui s’endort au tour suivant." + 'yawn': { + name: 'Bâillement', + effect: 'Le lanceur fait bâiller la cible, qui s’endort au tour suivant.' }, - "knockOff": { - name: "Sabotage", - effect: "Fait plus de dégâts aux cibles qui tiennent un objet. De plus, fait tomber cet objet et empêche la cible de l’utiliser jusqu’à la fin du combat." + 'knockOff': { + name: 'Sabotage', + effect: 'Fait plus de dégâts aux cibles qui tiennent un objet. De plus, fait tomber cet objet et empêche la cible de l’utiliser jusqu’à la fin du combat.' }, - "endeavor": { - name: "Effort", - effect: "Une attaque qui réduit les PV de la cible au niveau des PV du lanceur." + 'endeavor': { + name: 'Effort', + effect: 'Une attaque qui réduit les PV de la cible au niveau des PV du lanceur.' }, - "eruption": { - name: "Éruption", - effect: "Le lanceur laisse exploser sa colère. Plus ses PV sont bas, moins l’attaque est puissante." + 'eruption': { + name: 'Éruption', + effect: 'Le lanceur laisse exploser sa colère. Plus ses PV sont bas, moins l’attaque est puissante.' }, - "skillSwap": { - name: "Échange", - effect: "Le lanceur utilise ses pouvoirs psychiques pour échanger son talent avec la cible." + 'skillSwap': { + name: 'Échange', + effect: 'Le lanceur utilise ses pouvoirs psychiques pour échanger son talent avec la cible.' }, - "imprison": { - name: "Possessif", - effect: "Si la cible et le lanceur ont des capacités en commun, la cible ne pourra pas les utiliser." + 'imprison': { + name: 'Possessif', + effect: 'Si la cible et le lanceur ont des capacités en commun, la cible ne pourra pas les utiliser.' }, - "refresh": { - name: "Régénération", - effect: "Le lanceur se repose pour guérir d’un empoisonnement, d’une brûlure ou d’une paralysie." + 'refresh': { + name: 'Régénération', + effect: 'Le lanceur se repose pour guérir d’un empoisonnement, d’une brûlure ou d’une paralysie.' }, - "grudge": { - name: "Rancune", - effect: "Si le lanceur est mis K.O., sa rancune épuise les PP de la capacité utilisée par l’ennemi pour le mettre K.O." + 'grudge': { + name: 'Rancune', + effect: 'Si le lanceur est mis K.O., sa rancune épuise les PP de la capacité utilisée par l’ennemi pour le mettre K.O.' }, - "snatch": { - name: "Saisie", - effect: "Lorsqu’une capacité de soin ou de changement de stats est utilisée, le lanceur vole ses effets." + 'snatch': { + name: 'Saisie', + effect: 'Lorsqu’une capacité de soin ou de changement de stats est utilisée, le lanceur vole ses effets.' }, - "secretPower": { - name: "Force Cachée", - effect: "Les effets de cette attaque varient en fonction de l’environnement." + 'secretPower': { + name: 'Force Cachée', + effect: 'Les effets de cette attaque varient en fonction de l’environnement.' }, - "dive": { - name: "Plongée", - effect: "Le lanceur plonge sous l’eau au premier tour et frappe au second." + 'dive': { + name: 'Plongée', + effect: 'Le lanceur plonge sous l’eau au premier tour et frappe au second.' }, - "armThrust": { - name: "Cogne", - effect: "Un déluge de coups adressés avec la paume qui frappe de deux à cinq fois d’affilée." + 'armThrust': { + name: 'Cogne', + effect: 'Un déluge de coups adressés avec la paume qui frappe de deux à cinq fois d’affilée.' }, - "camouflage": { - name: "Camouflage", - effect: "Modifie le type du lanceur en fonction du terrain, comme une berge, une grotte, l’herbe, etc." + 'camouflage': { + name: 'Camouflage', + effect: 'Modifie le type du lanceur en fonction du terrain, comme une berge, une grotte, l’herbe, etc.' }, - "tailGlow": { - name: "Lumi-Queue", - effect: "Le lanceur regarde un flash lumineux fixement. Augmente énormément son Attaque Spéciale." + 'tailGlow': { + name: 'Lumi-Queue', + effect: 'Le lanceur regarde un flash lumineux fixement. Augmente énormément son Attaque Spéciale.' }, - "lusterPurge": { - name: "Lumi-Éclat", - effect: "Le lanceur libère un éclair lumineux. Peut aussi baisser la Défense Spéciale de l’ennemi." + 'lusterPurge': { + name: 'Lumi-Éclat', + effect: 'Le lanceur libère un éclair lumineux. Peut aussi baisser la Défense Spéciale de l’ennemi.' }, - "mistBall": { - name: "Ball’Brume", - effect: "Une bulle de brume inflige des dégâts à l’ennemi. Peut aussi réduire son Attaque Spéciale." + 'mistBall': { + name: 'Ball’Brume', + effect: 'Une bulle de brume inflige des dégâts à l’ennemi. Peut aussi réduire son Attaque Spéciale.' }, - "featherDance": { - name: "Danse Plumes", - effect: "Une montagne de plumes ensevelit la cible et réduit beaucoup son Attaque." + 'featherDance': { + name: 'Danse Plumes', + effect: 'Une montagne de plumes ensevelit la cible et réduit beaucoup son Attaque.' }, - "teeterDance": { - name: "Danse Folle", - effect: "Danse qui rend confus tous les Pokémon autour du lanceur." + 'teeterDance': { + name: 'Danse Folle', + effect: 'Danse qui rend confus tous les Pokémon autour du lanceur.' }, - "blazeKick": { - name: "Pied Brûleur", - effect: "Le lanceur envoie un coup de pied au taux de critiques élevé. Peut aussi brûler la cible (10% de chances)." + 'blazeKick': { + name: 'Pied Brûleur', + effect: 'Le lanceur envoie un coup de pied au taux de critiques élevé. Peut aussi brûler la cible (10% de chances).' }, - "mudSport": { - name: "Lance-Boue", - effect: "Asperge les alentours de boue. Affaiblit les capacités Électrik pendant cinq tours." + 'mudSport': { + name: 'Lance-Boue', + effect: 'Asperge les alentours de boue. Affaiblit les capacités Électrik pendant cinq tours.' }, - "iceBall": { - name: "Ball’Glace", - effect: "Frappe l’ennemi pendant cinq tours. L’attaque gagne en puissance à chaque coup." + 'iceBall': { + name: 'Ball’Glace', + effect: 'Frappe l’ennemi pendant cinq tours. L’attaque gagne en puissance à chaque coup.' }, - "needleArm": { - name: "Poing Dard", - effect: "Le lanceur attaque en fouettant l’ennemi de ses bras épineux. Peut aussi l’apeurer (30% de chances)." + 'needleArm': { + name: 'Poing Dard', + effect: 'Le lanceur attaque en fouettant l’ennemi de ses bras épineux. Peut aussi l’apeurer (30% de chances).' }, - "slackOff": { - name: "Paresse", - effect: "Le lanceur se tourne les pouces et récupère jusqu’à la moitié de ses PV max." + 'slackOff': { + name: 'Paresse', + effect: 'Le lanceur se tourne les pouces et récupère jusqu’à la moitié de ses PV max.' }, - "hyperVoice": { - name: "Mégaphone", - effect: "Le lanceur pousse un cri dont l’écho terrifiant a le pouvoir d’infliger des dégâts à la cible." + 'hyperVoice': { + name: 'Mégaphone', + effect: 'Le lanceur pousse un cri dont l’écho terrifiant a le pouvoir d’infliger des dégâts à la cible.' }, - "poisonFang": { - name: "Crochet Venin", - effect: "Le lanceur mord la cible avec ses crocs toxiques, ce qui peut aussi l’empoisonner gravement (50% de chances)." + 'poisonFang': { + name: 'Crochet Venin', + effect: 'Le lanceur mord la cible avec ses crocs toxiques, ce qui peut aussi l’empoisonner gravement (50% de chances).' }, - "crushClaw": { - name: "Éclate Griffe", - effect: "Le lanceur lacère la cible avec des griffes solides et aiguisées, ce qui peut aussi baisser la Défense de celle-ci." + 'crushClaw': { + name: 'Éclate Griffe', + effect: 'Le lanceur lacère la cible avec des griffes solides et aiguisées, ce qui peut aussi baisser la Défense de celle-ci.' }, - "blastBurn": { - name: "Rafale Feu", - effect: "Une explosion ardente consume la cible. Le lanceur doit se reposer au tour suivant." + 'blastBurn': { + name: 'Rafale Feu', + effect: 'Une explosion ardente consume la cible. Le lanceur doit se reposer au tour suivant.' }, - "hydroCannon": { - name: "Hydroblast", - effect: "Le lanceur projette un missile d’eau sur la cible, mais il doit se reposer au tour suivant." + 'hydroCannon': { + name: 'Hydroblast', + effect: 'Le lanceur projette un missile d’eau sur la cible, mais il doit se reposer au tour suivant.' }, - "meteorMash": { - name: "Poing Météore", - effect: "Un coup de poing lancé à la vitesse d’un météore. Peut aussi augmenter l’Attaque du lanceur." + 'meteorMash': { + name: 'Poing Météore', + effect: 'Un coup de poing lancé à la vitesse d’un météore. Peut aussi augmenter l’Attaque du lanceur.' }, - "astonish": { - name: "Étonnement", - effect: "Le lanceur attaque la cible en poussant un cri terrifiant qui peut aussi l’apeurer (30% de chances)." + 'astonish': { + name: 'Étonnement', + effect: 'Le lanceur attaque la cible en poussant un cri terrifiant qui peut aussi l’apeurer (30% de chances).' }, - "weatherBall": { - name: "Ball’Météo", - effect: "Une capacité dont la puissance et le type varient en fonction du temps qu’il fait." + 'weatherBall': { + name: 'Ball’Météo', + effect: 'Une capacité dont la puissance et le type varient en fonction du temps qu’il fait.' }, - "aromatherapy": { - name: "Aromathérapie", - effect: "Le lanceur libère un parfum apaisant qui guérit tous les problèmes de statut de l’équipe." + 'aromatherapy': { + name: 'Aromathérapie', + effect: 'Le lanceur libère un parfum apaisant qui guérit tous les problèmes de statut de l’équipe.' }, - "fakeTears": { - name: "Croco Larme", - effect: "Le lanceur fait semblant de pleurer pour troubler la cible et beaucoup baisser sa Défense Spéciale." + 'fakeTears': { + name: 'Croco Larme', + effect: 'Le lanceur fait semblant de pleurer pour troubler la cible et beaucoup baisser sa Défense Spéciale.' }, - "airCutter": { - name: "Tranch’Air", - effect: "Le lanceur appelle des vents tranchants qui lacèrent la cible. Taux de critiques élevé." + 'airCutter': { + name: 'Tranch’Air', + effect: 'Le lanceur appelle des vents tranchants qui lacèrent la cible. Taux de critiques élevé.' }, - "overheat": { - name: "Surchauffe", - effect: "Le lanceur attaque la cible à pleine puissance, mais le contrecoup baisse beaucoup l’Attaque Spéciale du lanceur." + 'overheat': { + name: 'Surchauffe', + effect: 'Le lanceur attaque la cible à pleine puissance, mais le contrecoup baisse beaucoup l’Attaque Spéciale du lanceur.' }, - "odorSleuth": { - name: "Flair", - effect: "Permet de toucher un Pokémon Spectre avec n’importe quelle capacité ou de toucher un ennemi insaisissable." + 'odorSleuth': { + name: 'Flair', + effect: 'Permet de toucher un Pokémon Spectre avec n’importe quelle capacité ou de toucher un ennemi insaisissable.' }, - "rockTomb": { - name: "Tomberoche", - effect: "Des rochers frappent la cible et baissent sa Vitesse." + 'rockTomb': { + name: 'Tomberoche', + effect: 'Des rochers frappent la cible et baissent sa Vitesse.' }, - "silverWind": { - name: "Vent Argenté", - effect: "Vent qui projette des écailles poudreuses sur l’ennemi. Peut aussi monter toutes les stats du lanceur." + 'silverWind': { + name: 'Vent Argenté', + effect: 'Vent qui projette des écailles poudreuses sur l’ennemi. Peut aussi monter toutes les stats du lanceur.' }, - "metalSound": { - name: "Strido-Son", - effect: "Un cri horrible tel un crissement métallique qui réduit beaucoup la Défense Spéciale de la cible." + 'metalSound': { + name: 'Strido-Son', + effect: 'Un cri horrible tel un crissement métallique qui réduit beaucoup la Défense Spéciale de la cible.' }, - "grassWhistle": { - name: "Siffl’Herbe", - effect: "Le lanceur joue une douce mélodie qui plonge l’ennemi dans un profond sommeil." + 'grassWhistle': { + name: 'Siffl’Herbe', + effect: 'Le lanceur joue une douce mélodie qui plonge l’ennemi dans un profond sommeil.' }, - "tickle": { - name: "Chatouille", - effect: "Le lanceur chatouille la cible, ce qui baisse son Attaque et sa Défense." + 'tickle': { + name: 'Chatouille', + effect: 'Le lanceur chatouille la cible, ce qui baisse son Attaque et sa Défense.' }, - "cosmicPower": { - name: "Force Cosmique", - effect: "Le lanceur absorbe un pouvoir mystique spatial qui augmente sa Défense et sa Défense Spéciale." + 'cosmicPower': { + name: 'Force Cosmique', + effect: 'Le lanceur absorbe un pouvoir mystique spatial qui augmente sa Défense et sa Défense Spéciale.' }, - "waterSpout": { - name: "Giclédo", - effect: "Le lanceur attaque avec un jet d’eau. Moins il a de PV et moins l’attaque est puissante." + 'waterSpout': { + name: 'Giclédo', + effect: 'Le lanceur attaque avec un jet d’eau. Moins il a de PV et moins l’attaque est puissante.' }, - "signalBeam": { - name: "Rayon Signal", - effect: "Le lanceur projette un rayon de lumière sinistre. Peut aussi rendre l’ennemi confus." + 'signalBeam': { + name: 'Rayon Signal', + effect: 'Le lanceur projette un rayon de lumière sinistre. Peut aussi rendre l’ennemi confus.' }, - "shadowPunch": { - name: "Poing Ombre", - effect: "Le lanceur se fond dans les ombres pour porter un coup de poing. N’échoue jamais." + 'shadowPunch': { + name: 'Poing Ombre', + effect: 'Le lanceur se fond dans les ombres pour porter un coup de poing. N’échoue jamais.' }, - "extrasensory": { - name: "Extrasenseur", - effect: "Le lanceur attaque avec un pouvoir étrange et invisible qui peut aussi apeurer la cible (10% de chances)." + 'extrasensory': { + name: 'Extrasenseur', + effect: 'Le lanceur attaque avec un pouvoir étrange et invisible qui peut aussi apeurer la cible (10% de chances).' }, - "skyUppercut": { - name: "Stratopercut", - effect: "Le lanceur attaque avec un uppercut. Il envoie son poing vers le ciel de toutes ses forces." + 'skyUppercut': { + name: 'Stratopercut', + effect: 'Le lanceur attaque avec un uppercut. Il envoie son poing vers le ciel de toutes ses forces.' }, - "sandTomb": { - name: "Tourbi-Sable", - effect: "Le lanceur emprisonne la cible dans une tempête de sable terrifiante qui dure de quatre à cinq tours." + 'sandTomb': { + name: 'Tourbi-Sable', + effect: 'Le lanceur emprisonne la cible dans une tempête de sable terrifiante qui dure de quatre à cinq tours.' }, - "sheerCold": { - name: "Glaciation", - effect: "Une vague de froid glacial frappe la cible pour la mettre K.O. en un coup. Cela a peu de chances de réussir si le lanceur ne possède pas le type Glace." + 'sheerCold': { + name: 'Glaciation', + effect: 'Une vague de froid glacial frappe la cible pour la mettre K.O. en un coup. Cela a peu de chances de réussir si le lanceur ne possède pas le type Glace.' }, - "muddyWater": { - name: "Ocroupi", - effect: "Le lanceur attaque en projetant de l’eau boueuse. Peut aussi réduire la Précision de la cible." + 'muddyWater': { + name: 'Ocroupi', + effect: 'Le lanceur attaque en projetant de l’eau boueuse. Peut aussi réduire la Précision de la cible.' }, - "bulletSeed": { - name: "Balle Graine", - effect: "Le lanceur mitraille la cible avec une rafale de graines. De deux à cinq rafales sont lancées à la suite." + 'bulletSeed': { + name: 'Balle Graine', + effect: 'Le lanceur mitraille la cible avec une rafale de graines. De deux à cinq rafales sont lancées à la suite.' }, - "aerialAce": { - name: "Aéropique", - effect: "Le lanceur prend la cible de vitesse et la lacère. N’échoue jamais." + 'aerialAce': { + name: 'Aéropique', + effect: 'Le lanceur prend la cible de vitesse et la lacère. N’échoue jamais.' }, - "icicleSpear": { - name: "Stalactite", - effect: "Le lanceur jette des pics de glace sur la cible, de deux à cinq fois de suite." + 'icicleSpear': { + name: 'Stalactite', + effect: 'Le lanceur jette des pics de glace sur la cible, de deux à cinq fois de suite.' }, - "ironDefense": { - name: "Mur de Fer", - effect: "L’épiderme du lanceur devient dur comme du fer, ce qui augmente beaucoup sa Défense." + 'ironDefense': { + name: 'Mur de Fer', + effect: 'L’épiderme du lanceur devient dur comme du fer, ce qui augmente beaucoup sa Défense.' }, - "block": { - name: "Barrage", - effect: "Le lanceur bloque la route de la cible pour empêcher sa fuite." + 'block': { + name: 'Barrage', + effect: 'Le lanceur bloque la route de la cible pour empêcher sa fuite.' }, - "howl": { - name: "Grondement", - effect: "Le lanceur pousse un grand cri d’encouragement, ce qui augmente son Attaque et celle de ses alliés." + 'howl': { + name: 'Grondement', + effect: 'Le lanceur pousse un grand cri d’encouragement, ce qui augmente son Attaque et celle de ses alliés.' }, - "dragonClaw": { - name: "Draco-Griffe", - effect: "Le lanceur lacère la cible de ses grandes griffes aiguisées." + 'dragonClaw': { + name: 'Draco-Griffe', + effect: 'Le lanceur lacère la cible de ses grandes griffes aiguisées.' }, - "frenzyPlant": { - name: "Végé-Attaque", - effect: "Un violent coup de racines s’abat sur la cible. Le lanceur doit se reposer au tour suivant." + 'frenzyPlant': { + name: 'Végé-Attaque', + effect: 'Un violent coup de racines s’abat sur la cible. Le lanceur doit se reposer au tour suivant.' }, - "bulkUp": { - name: "Gonflette", - effect: "Le lanceur tend ses muscles pour se gonfler, ce qui booste son Attaque et sa Défense." + 'bulkUp': { + name: 'Gonflette', + effect: 'Le lanceur tend ses muscles pour se gonfler, ce qui booste son Attaque et sa Défense.' }, - "bounce": { - name: "Rebond", - effect: "Le lanceur bondit très haut et plonge sur la cible au second tour, ce qui peut aussi la paralyser (30% de chances)." + 'bounce': { + name: 'Rebond', + effect: 'Le lanceur bondit très haut et plonge sur la cible au second tour, ce qui peut aussi la paralyser (30% de chances).' }, - "mudShot": { - name: "Tir de Boue", - effect: "Le lanceur attaque en projetant de la boue sur la cible, ce qui réduit aussi la Vitesse de celle-ci." + 'mudShot': { + name: 'Tir de Boue', + effect: 'Le lanceur attaque en projetant de la boue sur la cible, ce qui réduit aussi la Vitesse de celle-ci.' }, - "poisonTail": { - name: "Queue-Poison", - effect: "Le lanceur attaque la cible avec sa queue, ce qui peut aussi l’empoisonner (10% de chances). Taux de critiques élevés." + 'poisonTail': { + name: 'Queue-Poison', + effect: 'Le lanceur attaque la cible avec sa queue, ce qui peut aussi l’empoisonner (10% de chances). Taux de critiques élevés.' }, - "covet": { - name: "Implore", - effect: "Le lanceur s’approche de la cible avec un air angélique afin de dérober l’objet qu’elle tient." + 'covet': { + name: 'Implore', + effect: 'Le lanceur s’approche de la cible avec un air angélique afin de dérober l’objet qu’elle tient.' }, - "voltTackle": { - name: "Électacle", - effect: "Le lanceur électrifie son corps avant de charger. Le choc blesse aussi gravement le lanceur et peut paralyser la cible (10% de chances)." + 'voltTackle': { + name: 'Électacle', + effect: 'Le lanceur électrifie son corps avant de charger. Le choc blesse aussi gravement le lanceur et peut paralyser la cible (10% de chances).' }, - "magicalLeaf": { - name: "Feuille Magik", - effect: "Le lanceur disperse d’étranges feuilles qui poursuivent la cible. N’échoue jamais." + 'magicalLeaf': { + name: 'Feuille Magik', + effect: 'Le lanceur disperse d’étranges feuilles qui poursuivent la cible. N’échoue jamais.' }, - "waterSport": { - name: "Tourniquet", - effect: "Asperge d’eau les alentours. Affaiblit les capacités de type Feu pendant cinq tours." + 'waterSport': { + name: 'Tourniquet', + effect: 'Asperge d’eau les alentours. Affaiblit les capacités de type Feu pendant cinq tours.' }, - "calmMind": { - name: "Plénitude", - effect: "Le lanceur se concentre et fait le vide dans son esprit pour augmenter son Attaque Spéciale et sa Défense Spéciale." + 'calmMind': { + name: 'Plénitude', + effect: 'Le lanceur se concentre et fait le vide dans son esprit pour augmenter son Attaque Spéciale et sa Défense Spéciale.' }, - "leafBlade": { - name: "Lame Feuille", - effect: "Une feuille coupante comme une lame entaille la cible. Taux de critiques élevé." + 'leafBlade': { + name: 'Lame Feuille', + effect: 'Une feuille coupante comme une lame entaille la cible. Taux de critiques élevé.' }, - "dragonDance": { - name: "Danse Draco", - effect: "Une danse mystique dont le rythme effréné augmente l’Attaque et la Vitesse du lanceur." + 'dragonDance': { + name: 'Danse Draco', + effect: 'Une danse mystique dont le rythme effréné augmente l’Attaque et la Vitesse du lanceur.' }, - "rockBlast": { - name: "Boule Roc", - effect: "Le lanceur projette un rocher sur la cible de deux à cinq fois d’affilée." + 'rockBlast': { + name: 'Boule Roc', + effect: 'Le lanceur projette un rocher sur la cible de deux à cinq fois d’affilée.' }, - "shockWave": { - name: "Onde de Choc", - effect: "Le lanceur envoie un choc électrique rapide à la cible. N’échoue jamais." + 'shockWave': { + name: 'Onde de Choc', + effect: 'Le lanceur envoie un choc électrique rapide à la cible. N’échoue jamais.' }, - "waterPulse": { - name: "Vibraqua", - effect: "Le lanceur projette une aura aquatique sur la cible, et peut la rendre confuse." + 'waterPulse': { + name: 'Vibraqua', + effect: 'Le lanceur projette une aura aquatique sur la cible, et peut la rendre confuse.' }, - "doomDesire": { - name: "Vœu Destructeur", - effect: "Le lanceur génère une sphère lumineuse qu’il projette sur l’ennemi deux tours plus tard." + 'doomDesire': { + name: 'Vœu Destructeur', + effect: 'Le lanceur génère une sphère lumineuse qu’il projette sur l’ennemi deux tours plus tard.' }, - "psychoBoost": { - name: "Psycho-Boost", - effect: "Attaque l’ennemi à pleine puissance. Le contrecoup baisse beaucoup l’Attaque Spéciale du lanceur." + 'psychoBoost': { + name: 'Psycho-Boost', + effect: 'Attaque l’ennemi à pleine puissance. Le contrecoup baisse beaucoup l’Attaque Spéciale du lanceur.' }, - "roost": { - name: "Atterrissage", - effect: "Le lanceur atterrit et se repose. Restaure jusqu’à la moitié de ses PV max." + 'roost': { + name: 'Atterrissage', + effect: 'Le lanceur atterrit et se repose. Restaure jusqu’à la moitié de ses PV max.' }, - "gravity": { - name: "Gravité", - effect: "Pendant cinq tours, les Pokémon Vol ou qui ont Lévitation deviennent sensibles aux capacités Sol, et les capacités volantes deviennent inutilisables." + 'gravity': { + name: 'Gravité', + effect: 'Pendant cinq tours, les Pokémon Vol ou qui ont Lévitation deviennent sensibles aux capacités Sol, et les capacités volantes deviennent inutilisables.' }, - "miracleEye": { - name: "Œil Miracle", - effect: "Permet de toucher un Pokémon Ténèbres avec les capacités de type Psy ou de toucher un ennemi ayant beaucoup d’esquive." + 'miracleEye': { + name: 'Œil Miracle', + effect: 'Permet de toucher un Pokémon Ténèbres avec les capacités de type Psy ou de toucher un ennemi ayant beaucoup d’esquive.' }, - "wakeUpSlap": { - name: "Réveil Forcé", - effect: "Cette attaque inflige d’importants dégâts à un Pokémon endormi. Mais elle le réveille également." + 'wakeUpSlap': { + name: 'Réveil Forcé', + effect: 'Cette attaque inflige d’importants dégâts à un Pokémon endormi. Mais elle le réveille également.' }, - "hammerArm": { - name: "Marto-Poing", - effect: "Le lanceur donne un puissant coup de poing à la cible, ce qui réduit la Vitesse du lanceur." + 'hammerArm': { + name: 'Marto-Poing', + effect: 'Le lanceur donne un puissant coup de poing à la cible, ce qui réduit la Vitesse du lanceur.' }, - "gyroBall": { - name: "Gyroballe", - effect: "Le lanceur effectue une rotation rapide et frappe la cible. Plus la Vitesse du lanceur est basse par rapport à celle de la cible, plus il inflige de dégâts." + 'gyroBall': { + name: 'Gyroballe', + effect: 'Le lanceur effectue une rotation rapide et frappe la cible. Plus la Vitesse du lanceur est basse par rapport à celle de la cible, plus il inflige de dégâts.' }, - "healingWish": { - name: "Vœu Soin", - effect: "Le lanceur tombe K.O. pour soigner les altérations de statut et les PV du Pokémon qui viendra le remplacer sur le terrain." + 'healingWish': { + name: 'Vœu Soin', + effect: 'Le lanceur tombe K.O. pour soigner les altérations de statut et les PV du Pokémon qui viendra le remplacer sur le terrain.' }, - "brine": { - name: "Saumure", - effect: "La puissance de cette capacité est doublée lorsque la cible a moins de la moitié de ses PV." + 'brine': { + name: 'Saumure', + effect: 'La puissance de cette capacité est doublée lorsque la cible a moins de la moitié de ses PV.' }, - "naturalGift": { - name: "Don Naturel", - effect: "Avant d’attaquer, le lanceur rassemble ses forces grâce à sa Baie. Elle détermine le type et la puissance de l’attaque." + 'naturalGift': { + name: 'Don Naturel', + effect: 'Avant d’attaquer, le lanceur rassemble ses forces grâce à sa Baie. Elle détermine le type et la puissance de l’attaque.' }, - "feint": { - name: "Ruse", - effect: "Une attaque capable de toucher une cible qui utilise une capacité similaire à Détection ou Abri, et annule l’effet de cette capacité." + 'feint': { + name: 'Ruse', + effect: 'Une attaque capable de toucher une cible qui utilise une capacité similaire à Détection ou Abri, et annule l’effet de cette capacité.' }, - "pluck": { - name: "Picore", - effect: "Le lanceur picore la cible. Si cette dernière tient une Baie, le lanceur la mange et profite de ses effets." + 'pluck': { + name: 'Picore', + effect: 'Le lanceur picore la cible. Si cette dernière tient une Baie, le lanceur la mange et profite de ses effets.' }, - "tailwind": { - name: "Vent Arrière", - effect: "Génère une rafale de vent qui augmente la Vitesse des Pokémon de l’équipe pendant quatre tours." + 'tailwind': { + name: 'Vent Arrière', + effect: 'Génère une rafale de vent qui augmente la Vitesse des Pokémon de l’équipe pendant quatre tours.' }, - "acupressure": { - name: "Acupression", - effect: "Le lanceur utilise sa connaissance des points de pression pour beaucoup augmenter une stat." + 'acupressure': { + name: 'Acupression', + effect: 'Le lanceur utilise sa connaissance des points de pression pour beaucoup augmenter une stat.' }, - "metalBurst": { - name: "Fulmifer", - effect: "Le lanceur contre-attaque avec un coup infligeant des dégâts supérieurs à ceux de la dernière capacité qui l’a blessé." + 'metalBurst': { + name: 'Fulmifer', + effect: 'Le lanceur contre-attaque avec un coup infligeant des dégâts supérieurs à ceux de la dernière capacité qui l’a blessé.' }, - "uTurn": { - name: "Demi-Tour", - effect: "Après son attaque, le lanceur revient à toute vitesse et change de place avec un Pokémon de l’équipe prêt à combattre." + 'uTurn': { + name: 'Demi-Tour', + effect: 'Après son attaque, le lanceur revient à toute vitesse et change de place avec un Pokémon de l’équipe prêt à combattre.' }, - "closeCombat": { - name: "Close Combat", - effect: "Le lanceur ne pense plus à se protéger et frappe sa cible violemment au corps à corps. Cette capacité baisse la Défense et la Défense Spéciale du lanceur." + 'closeCombat': { + name: 'Close Combat', + effect: 'Le lanceur ne pense plus à se protéger et frappe sa cible violemment au corps à corps. Cette capacité baisse la Défense et la Défense Spéciale du lanceur.' }, - "payback": { - name: "Représailles", - effect: "Le lanceur charge son énergie, puis attaque. La puissance de la capacité est doublée si le lanceur agit après la cible." + 'payback': { + name: 'Représailles', + effect: 'Le lanceur charge son énergie, puis attaque. La puissance de la capacité est doublée si le lanceur agit après la cible.' }, - "assurance": { - name: "Assurance", - effect: "La puissance de cette capacité est deux fois plus élevée si la cible a déjà été blessée durant ce tour." + 'assurance': { + name: 'Assurance', + effect: 'La puissance de cette capacité est deux fois plus élevée si la cible a déjà été blessée durant ce tour.' }, - "embargo": { - name: "Embargo", - effect: "Empêche la cible d’utiliser un objet tenu et son Dresseur d’utiliser un objet sur lui pendant cinq tours." + 'embargo': { + name: 'Embargo', + effect: 'Empêche la cible d’utiliser un objet tenu et son Dresseur d’utiliser un objet sur lui pendant cinq tours.' }, - "fling": { - name: "Dégommage", - effect: "Le lanceur envoie l’objet qu’il tient sur la cible. La puissance et les effets dépendent de l’objet." + 'fling': { + name: 'Dégommage', + effect: 'Le lanceur envoie l’objet qu’il tient sur la cible. La puissance et les effets dépendent de l’objet.' }, - "psychoShift": { - name: "Échange Psy", - effect: "Le lanceur transfère ses problèmes de statut à l’ennemi grâce à son pouvoir de suggestion." + 'psychoShift': { + name: 'Échange Psy', + effect: 'Le lanceur transfère ses problèmes de statut à l’ennemi grâce à son pouvoir de suggestion.' }, - "trumpCard": { - name: "Atout", - effect: "Moins cette capacité possède de PP, plus elle est puissante." + 'trumpCard': { + name: 'Atout', + effect: 'Moins cette capacité possède de PP, plus elle est puissante.' }, - "healBlock": { - name: "Anti-Soin", - effect: "Le lanceur empêche l’ennemi de récupérer des PV à l’aide de capacités, talents ou objets tenus, pendant cinq tours." + 'healBlock': { + name: 'Anti-Soin', + effect: 'Le lanceur empêche l’ennemi de récupérer des PV à l’aide de capacités, talents ou objets tenus, pendant cinq tours.' }, - "wringOut": { - name: "Essorage", - effect: "Le lanceur essore l’ennemi. Plus l’ennemi a de PV, plus cette attaque est puissante." + 'wringOut': { + name: 'Essorage', + effect: 'Le lanceur essore l’ennemi. Plus l’ennemi a de PV, plus cette attaque est puissante.' }, - "powerTrick": { - name: "Astuce Force", - effect: "Le lanceur utilise ses pouvoirs psychiques pour échanger sa Défense et son Attaque." + 'powerTrick': { + name: 'Astuce Force', + effect: 'Le lanceur utilise ses pouvoirs psychiques pour échanger sa Défense et son Attaque.' }, - "gastroAcid": { - name: "Suc Digestif", - effect: "Le lanceur répand ses sucs digestifs sur la cible. Le fluide neutralise le talent de celle-ci." + 'gastroAcid': { + name: 'Suc Digestif', + effect: 'Le lanceur répand ses sucs digestifs sur la cible. Le fluide neutralise le talent de celle-ci.' }, - "luckyChant": { - name: "Air Veinard", - effect: "Le lanceur envoie une incantation vers le ciel et protège l’équipe des coups critiques pendant cinq tours." + 'luckyChant': { + name: 'Air Veinard', + effect: 'Le lanceur envoie une incantation vers le ciel et protège l’équipe des coups critiques pendant cinq tours.' }, - "meFirst": { - name: "Moi d’Abord", - effect: "Le lanceur vole la capacité prévue par l’ennemi et l’utilise en faisant plus de dégâts. Il doit frapper en premier." + 'meFirst': { + name: 'Moi d’Abord', + effect: 'Le lanceur vole la capacité prévue par l’ennemi et l’utilise en faisant plus de dégâts. Il doit frapper en premier.' }, - "copycat": { - name: "Photocopie", - effect: "Le lanceur imite la dernière capacité employée. Échoue si aucune capacité n’a été utilisée." + 'copycat': { + name: 'Photocopie', + effect: 'Le lanceur imite la dernière capacité employée. Échoue si aucune capacité n’a été utilisée.' }, - "powerSwap": { - name: "Permuforce", - effect: "Le lanceur utilise un pouvoir psychique qui échange les changements de son Attaque et de son Attaque Spéciale avec celles de la cible." + 'powerSwap': { + name: 'Permuforce', + effect: 'Le lanceur utilise un pouvoir psychique qui échange les changements de son Attaque et de son Attaque Spéciale avec celles de la cible.' }, - "guardSwap": { - name: "Permugarde", - effect: "Le lanceur utilise un pouvoir psychique qui échange les changements de sa Défense et de sa Défense Spéciale avec celles de la cible." + 'guardSwap': { + name: 'Permugarde', + effect: 'Le lanceur utilise un pouvoir psychique qui échange les changements de sa Défense et de sa Défense Spéciale avec celles de la cible.' }, - "punishment": { - name: "Punition", - effect: "Plus l’ennemi a utilisé d’augmentations de stats et plus cette capacité est puissante." + 'punishment': { + name: 'Punition', + effect: 'Plus l’ennemi a utilisé d’augmentations de stats et plus cette capacité est puissante.' }, - "lastResort": { - name: "Dernier Recours", - effect: "Cette capacité ne peut être utilisée qu’après que le lanceur a utilisé toutes les autres." + 'lastResort': { + name: 'Dernier Recours', + effect: 'Cette capacité ne peut être utilisée qu’après que le lanceur a utilisé toutes les autres.' }, - "worrySeed": { - name: "Soucigraine", - effect: "Plante sur la cible une graine qui la rend soucieuse et remplace son talent par Insomnia, l’empêchant ainsi de dormir." + 'worrySeed': { + name: 'Soucigraine', + effect: 'Plante sur la cible une graine qui la rend soucieuse et remplace son talent par Insomnia, l’empêchant ainsi de dormir.' }, - "suckerPunch": { - name: "Coup Bas", - effect: "Permet au lanceur de frapper en priorité. Échoue si la cible ne prépare pas une attaque." + 'suckerPunch': { + name: 'Coup Bas', + effect: 'Permet au lanceur de frapper en priorité. Échoue si la cible ne prépare pas une attaque.' }, - "toxicSpikes": { - name: "Pics Toxik", - effect: "Le lanceur éparpille des pics autour de la cible, ce qui empoisonne les Pokémon entrant au combat de ce côté." + 'toxicSpikes': { + name: 'Pics Toxik', + effect: 'Le lanceur éparpille des pics autour de la cible, ce qui empoisonne les Pokémon entrant au combat de ce côté.' }, - "heartSwap": { - name: "Permucœur", - effect: "Le lanceur utilise un pouvoir psychique pour échanger ses changements de stats avec la cible." + 'heartSwap': { + name: 'Permucœur', + effect: 'Le lanceur utilise un pouvoir psychique pour échanger ses changements de stats avec la cible.' }, - "aquaRing": { - name: "Anneau Hydro", - effect: "Un voile d’eau recouvre le lanceur et régénère ses PV à chaque tour." + 'aquaRing': { + name: 'Anneau Hydro', + effect: 'Un voile d’eau recouvre le lanceur et régénère ses PV à chaque tour.' }, - "magnetRise": { - name: "Vol Magnétik", - effect: "Le lanceur utilise l’électricité pour générer un champ magnétique et léviter durant cinq tours." + 'magnetRise': { + name: 'Vol Magnétik', + effect: 'Le lanceur utilise l’électricité pour générer un champ magnétique et léviter durant cinq tours.' }, - "flareBlitz": { - name: "Boutefeu", - effect: "Le lanceur s’embrase avant de charger la cible, ce qui peut la brûler (10% de chances). Le choc blesse aussi gravement le lanceur." + 'flareBlitz': { + name: 'Boutefeu', + effect: 'Le lanceur s’embrase avant de charger la cible, ce qui peut la brûler (10% de chances). Le choc blesse aussi gravement le lanceur.' }, - "forcePalm": { - name: "Forte-Paume", - effect: "Une onde de choc frappe la cible, ce qui peut aussi la paralyser (30% de chances)." + 'forcePalm': { + name: 'Forte-Paume', + effect: 'Une onde de choc frappe la cible, ce qui peut aussi la paralyser (30% de chances).' }, - "auraSphere": { - name: "Aurasphère", - effect: "Le lanceur puise au fond de lui-même pour dégager une aura et projeter de l’énergie sur la cible. N’échoue jamais." + 'auraSphere': { + name: 'Aurasphère', + effect: 'Le lanceur puise au fond de lui-même pour dégager une aura et projeter de l’énergie sur la cible. N’échoue jamais.' }, - "rockPolish": { - name: "Poliroche", - effect: "Le lanceur polit son corps pour diminuer sa résistance au vent. Augmente beaucoup la Vitesse." + 'rockPolish': { + name: 'Poliroche', + effect: 'Le lanceur polit son corps pour diminuer sa résistance au vent. Augmente beaucoup la Vitesse.' }, - "poisonJab": { - name: "Direct Toxik", - effect: "Le lanceur attaque la cible avec un tentacule, un bras, ou un autre membre imprégné de poison, ce qui peut aussi empoisonner la cible (30% de chances)." + 'poisonJab': { + name: 'Direct Toxik', + effect: 'Le lanceur attaque la cible avec un tentacule, un bras, ou un autre membre imprégné de poison, ce qui peut aussi empoisonner la cible (30% de chances).' }, - "darkPulse": { - name: "Vibrobscur", - effect: "Le lanceur projette une horrible aura chargée de pensées maléfiques, ce qui peut aussi apeurer la cible." + 'darkPulse': { + name: 'Vibrobscur', + effect: 'Le lanceur projette une horrible aura chargée de pensées maléfiques, ce qui peut aussi apeurer la cible.' }, - "nightSlash": { - name: "Tranche-Nuit", - effect: "Le lanceur lacère la cible à la première occasion. Taux de critiques élevé." + 'nightSlash': { + name: 'Tranche-Nuit', + effect: 'Le lanceur lacère la cible à la première occasion. Taux de critiques élevé.' }, - "aquaTail": { - name: "Hydro-Queue", - effect: "Le lanceur attaque en balançant sa queue comme une lame de fond en pleine tempête." + 'aquaTail': { + name: 'Hydro-Queue', + effect: 'Le lanceur attaque en balançant sa queue comme une lame de fond en pleine tempête.' }, - "seedBomb": { - name: "Canon Graine", - effect: "Le lanceur déclenche un déluge de grosses graines à la coque solide sur la cible." + 'seedBomb': { + name: 'Canon Graine', + effect: 'Le lanceur déclenche un déluge de grosses graines à la coque solide sur la cible.' }, - "airSlash": { - name: "Lame d’Air", - effect: "Le lanceur attaque avec une lame d’air capable de fendre le ciel, ce qui peut aussi apeurer la cible (30% de chances)." + 'airSlash': { + name: 'Lame d’Air', + effect: 'Le lanceur attaque avec une lame d’air capable de fendre le ciel, ce qui peut aussi apeurer la cible (30% de chances).' }, - "xScissor": { - name: "Plaie Croix", - effect: "Le lanceur taillade la cible en utilisant ses faux ou ses griffes comme une paire de ciseaux." + 'xScissor': { + name: 'Plaie Croix', + effect: 'Le lanceur taillade la cible en utilisant ses faux ou ses griffes comme une paire de ciseaux.' }, - "bugBuzz": { - name: "Bourdon", - effect: "Le lanceur fait vibrer son corps pour lancer une vague sonique, ce qui peut aussi baisser la Défense Spéciale de la cible." + 'bugBuzz': { + name: 'Bourdon', + effect: 'Le lanceur fait vibrer son corps pour lancer une vague sonique, ce qui peut aussi baisser la Défense Spéciale de la cible.' }, - "dragonPulse": { - name: "Draco-Choc", - effect: "Le lanceur ouvre la bouche pour projeter une aura qui frappe la cible." + 'dragonPulse': { + name: 'Draco-Choc', + effect: 'Le lanceur ouvre la bouche pour projeter une aura qui frappe la cible.' }, - "dragonRush": { - name: "Draco-Charge", - effect: "Le lanceur frappe la cible en prenant un air menaçant, ce qui peut aussi l’apeurer (20% de chances)." + 'dragonRush': { + name: 'Draco-Charge', + effect: 'Le lanceur frappe la cible en prenant un air menaçant, ce qui peut aussi l’apeurer (20% de chances).' }, - "powerGem": { - name: "Rayon Gemme", - effect: "Le lanceur attaque avec un rayon de lumière qui scintille comme s’il était composé de gemmes." + 'powerGem': { + name: 'Rayon Gemme', + effect: 'Le lanceur attaque avec un rayon de lumière qui scintille comme s’il était composé de gemmes.' }, - "drainPunch": { - name: "Vampi-Poing", - effect: "Un coup de poing qui draine l’énergie. Convertit la moitié des dégâts infligés en PV pour le lanceur." + 'drainPunch': { + name: 'Vampi-Poing', + effect: 'Un coup de poing qui draine l’énergie. Convertit la moitié des dégâts infligés en PV pour le lanceur.' }, - "vacuumWave": { - name: "Onde Vide", - effect: "Le lanceur agite son poing pour projeter une onde de vide. Frappe en priorité." + 'vacuumWave': { + name: 'Onde Vide', + effect: 'Le lanceur agite son poing pour projeter une onde de vide. Frappe en priorité.' }, - "focusBlast": { - name: "Exploforce", - effect: "Le lanceur rassemble ses forces et laisse éclater son pouvoir, ce qui peut aussi baisser la Défense Spéciale de la cible." + 'focusBlast': { + name: 'Exploforce', + effect: 'Le lanceur rassemble ses forces et laisse éclater son pouvoir, ce qui peut aussi baisser la Défense Spéciale de la cible.' }, - "energyBall": { - name: "Éco-Sphère", - effect: "Le lanceur utilise les pouvoirs de la nature pour attaquer la cible, ce qui peut aussi baisser la Défense Spéciale de celle-ci." + 'energyBall': { + name: 'Éco-Sphère', + effect: 'Le lanceur utilise les pouvoirs de la nature pour attaquer la cible, ce qui peut aussi baisser la Défense Spéciale de celle-ci.' }, - "braveBird": { - name: "Rapace", - effect: "Le lanceur replie ses ailes et charge en rase-mottes. Blesse gravement le lanceur." + 'braveBird': { + name: 'Rapace', + effect: 'Le lanceur replie ses ailes et charge en rase-mottes. Blesse gravement le lanceur.' }, - "earthPower": { - name: "Telluriforce", - effect: "De terribles séismes secouent la cible et peuvent aussi baisser sa Défense Spéciale." + 'earthPower': { + name: 'Telluriforce', + effect: 'De terribles séismes secouent la cible et peuvent aussi baisser sa Défense Spéciale.' }, - "switcheroo": { - name: "Passe-Passe", - effect: "Le lanceur échange son objet avec celui de la cible à une vitesse que l’œil a du mal à suivre." + 'switcheroo': { + name: 'Passe-Passe', + effect: 'Le lanceur échange son objet avec celui de la cible à une vitesse que l’œil a du mal à suivre.' }, - "gigaImpact": { - name: "Giga Impact", - effect: "Le lanceur charge la cible de toute ses forces et doit ensuite se reposer au tour suivant." + 'gigaImpact': { + name: 'Giga Impact', + effect: 'Le lanceur charge la cible de toute ses forces et doit ensuite se reposer au tour suivant.' }, - "nastyPlot": { - name: "Machination", - effect: "Stimule l’esprit par de mauvaises pensées. Augmente beaucoup l’Attaque Spéciale du lanceur." + 'nastyPlot': { + name: 'Machination', + effect: 'Stimule l’esprit par de mauvaises pensées. Augmente beaucoup l’Attaque Spéciale du lanceur.' }, - "bulletPunch": { - name: "Pisto-Poing", - effect: "Le lanceur envoie des coups de poing aussi rapides que des balles de revolver. Frappe en priorité." + 'bulletPunch': { + name: 'Pisto-Poing', + effect: 'Le lanceur envoie des coups de poing aussi rapides que des balles de revolver. Frappe en priorité.' }, - "avalanche": { - name: "Avalanche", - effect: "Une capacité dont la puissance est doublée si le lanceur a été blessé par la cible durant ce tour." + 'avalanche': { + name: 'Avalanche', + effect: 'Une capacité dont la puissance est doublée si le lanceur a été blessé par la cible durant ce tour.' }, - "iceShard": { - name: "Éclats Glace", - effect: "Le lanceur crée des éclats de glace qu’il envoie sur la cible. Frappe en priorité." + 'iceShard': { + name: 'Éclats Glace', + effect: 'Le lanceur crée des éclats de glace qu’il envoie sur la cible. Frappe en priorité.' }, - "shadowClaw": { - name: "Griffe Ombre", - effect: "Attaque avec une griffe puissante faite d’ombres. Taux de critiques élevé." + 'shadowClaw': { + name: 'Griffe Ombre', + effect: 'Attaque avec une griffe puissante faite d’ombres. Taux de critiques élevé.' }, - "thunderFang": { - name: "Crocs Éclair", - effect: "Le lanceur utilise une morsure électrifiée qui peut aussi paralyser (10% de chances) ou apeurer la cible (10% de chances)." + 'thunderFang': { + name: 'Crocs Éclair', + effect: 'Le lanceur utilise une morsure électrifiée qui peut aussi paralyser (10% de chances) ou apeurer la cible (10% de chances).' }, - "iceFang": { - name: "Crocs Givre", - effect: "Le lanceur utilise une morsure glaciale qui peut aussi geler (10% de chances) ou apeurer la cible (10% de chances)." + 'iceFang': { + name: 'Crocs Givre', + effect: 'Le lanceur utilise une morsure glaciale qui peut aussi geler (10% de chances) ou apeurer la cible (10% de chances).' }, - "fireFang": { - name: "Crocs Feu", - effect: "Le lanceur utilise une morsure enflammée qui peut aussi brûler (10% de chances) ou apeurer (10% de chances) la cible." + 'fireFang': { + name: 'Crocs Feu', + effect: 'Le lanceur utilise une morsure enflammée qui peut aussi brûler (10% de chances) ou apeurer (10% de chances) la cible.' }, - "shadowSneak": { - name: "Ombre Portée", - effect: "Le lanceur étend son ombre pour frapper par-derrière. Frappe en priorité." + 'shadowSneak': { + name: 'Ombre Portée', + effect: 'Le lanceur étend son ombre pour frapper par-derrière. Frappe en priorité.' }, - "mudBomb": { - name: "Boue-Bombe", - effect: "Le lanceur attaque à l’aide d’une boule de boue solidifiée. Peut aussi baisser la Précision de l’ennemi." + 'mudBomb': { + name: 'Boue-Bombe', + effect: 'Le lanceur attaque à l’aide d’une boule de boue solidifiée. Peut aussi baisser la Précision de l’ennemi.' }, - "psychoCut": { - name: "Coupe Psycho", - effect: "Le lanceur entaille la cible grâce à des lames faites d’énergie psychique. Taux de critiques élevé." + 'psychoCut': { + name: 'Coupe Psycho', + effect: 'Le lanceur entaille la cible grâce à des lames faites d’énergie psychique. Taux de critiques élevé.' }, - "zenHeadbutt": { - name: "Psykoud’Boul", - effect: "Le lanceur concentre sa volonté et donne un coup de tête à la cible, ce qui peut aussi apeurer celle-ci (20% de chances)." + 'zenHeadbutt': { + name: 'Psykoud’Boul', + effect: 'Le lanceur concentre sa volonté et donne un coup de tête à la cible, ce qui peut aussi apeurer celle-ci (20% de chances).' }, - "mirrorShot": { - name: "Miroi-Tir", - effect: "Le corps poli du lanceur libère un éclair d’énergie. Peut aussi baisser la Précision de l’ennemi." + 'mirrorShot': { + name: 'Miroi-Tir', + effect: 'Le corps poli du lanceur libère un éclair d’énergie. Peut aussi baisser la Précision de l’ennemi.' }, - "flashCannon": { - name: "Luminocanon", - effect: "Le lanceur concentre son énergie lumineuse et la fait exploser, ce qui peut aussi baisser la Défense Spéciale de la cible." + 'flashCannon': { + name: 'Luminocanon', + effect: 'Le lanceur concentre son énergie lumineuse et la fait exploser, ce qui peut aussi baisser la Défense Spéciale de la cible.' }, - "rockClimb": { - name: "Escalade", - effect: "Le lanceur se jette violemment sur l’ennemi. Peut aussi le rendre confus." + 'rockClimb': { + name: 'Escalade', + effect: 'Le lanceur se jette violemment sur l’ennemi. Peut aussi le rendre confus.' }, - "defog": { - name: "Anti-Brume", - effect: "Un grand coup de vent disperse Protection ou Mur Lumière de la cible et diminue également son Esquive." + 'defog': { + name: 'Anti-Brume', + effect: 'Un grand coup de vent disperse Protection ou Mur Lumière de la cible et diminue également son Esquive.' }, - "trickRoom": { - name: "Distorsion", - effect: "Le lanceur crée une zone mystérieuse où les Pokémon les plus lents frappent en priorité pendant cinq tours." + 'trickRoom': { + name: 'Distorsion', + effect: 'Le lanceur crée une zone mystérieuse où les Pokémon les plus lents frappent en priorité pendant cinq tours.' }, - "dracoMeteor": { - name: "Draco-Météore", - effect: "Le lanceur invoque des comètes. Le contrecoup réduit beaucoup son Attaque Spéciale." + 'dracoMeteor': { + name: 'Draco-Météore', + effect: 'Le lanceur invoque des comètes. Le contrecoup réduit beaucoup son Attaque Spéciale.' }, - "discharge": { - name: "Coup d’Jus", - effect: "Un flamboiement d’électricité frappe tous les Pokémon autour du lanceur. Peut aussi les paralyser (30% de chances)." + 'discharge': { + name: 'Coup d’Jus', + effect: 'Un flamboiement d’électricité frappe tous les Pokémon autour du lanceur. Peut aussi les paralyser (30% de chances).' }, - "lavaPlume": { - name: "Ébullilave", - effect: "Des flammes s’abattent sur tous les Pokémon autour du lanceur, ce qui peut aussi les brûler (10% de chances)." + 'lavaPlume': { + name: 'Ébullilave', + effect: 'Des flammes s’abattent sur tous les Pokémon autour du lanceur, ce qui peut aussi les brûler (10% de chances).' }, - "leafStorm": { - name: "Tempête Verte", - effect: "Invoque une tempête de feuilles acérées. Le contrecoup réduit beaucoup l’Attaque Spéciale du lanceur." + 'leafStorm': { + name: 'Tempête Verte', + effect: 'Invoque une tempête de feuilles acérées. Le contrecoup réduit beaucoup l’Attaque Spéciale du lanceur.' }, - "powerWhip": { - name: "Mégafouet", - effect: "Le lanceur fait virevolter violemment ses lianes ou ses tentacules pour fouetter la cible." + 'powerWhip': { + name: 'Mégafouet', + effect: 'Le lanceur fait virevolter violemment ses lianes ou ses tentacules pour fouetter la cible.' }, - "rockWrecker": { - name: "Roc-Boulet", - effect: "Le lanceur attaque en projetant un gros rocher sur l’ennemi. Il doit se reposer au tour suivant." + 'rockWrecker': { + name: 'Roc-Boulet', + effect: 'Le lanceur attaque en projetant un gros rocher sur l’ennemi. Il doit se reposer au tour suivant.' }, - "crossPoison": { - name: "Poison Croix", - effect: "Un coup tranchant qui peut empoisonner la cible (10% de chances). Taux de critiques élevé." + 'crossPoison': { + name: 'Poison Croix', + effect: 'Un coup tranchant qui peut empoisonner la cible (10% de chances). Taux de critiques élevé.' }, - "gunkShot": { - name: "Détricanon", - effect: "Le lanceur envoie des détritus sur la cible, ce qui peut aussi l’empoisonner (30% de chances)." + 'gunkShot': { + name: 'Détricanon', + effect: 'Le lanceur envoie des détritus sur la cible, ce qui peut aussi l’empoisonner (30% de chances).' }, - "ironHead": { - name: "Tête de Fer", - effect: "Le lanceur heurte la cible avec sa tête dure comme de l’acier, ce qui peut aussi l’apeurer (30% de chances)." + 'ironHead': { + name: 'Tête de Fer', + effect: 'Le lanceur heurte la cible avec sa tête dure comme de l’acier, ce qui peut aussi l’apeurer (30% de chances).' }, - "magnetBomb": { - name: "Bombe Aimant", - effect: "Le lanceur projette des bombes d’acier qui collent à l’ennemi. N’échoue jamais." + 'magnetBomb': { + name: 'Bombe Aimant', + effect: 'Le lanceur projette des bombes d’acier qui collent à l’ennemi. N’échoue jamais.' }, - "stoneEdge": { - name: "Lame de Roc", - effect: "Le lanceur transperce la cible avec des rochers aiguisés. Taux de critiques élevé." + 'stoneEdge': { + name: 'Lame de Roc', + effect: 'Le lanceur transperce la cible avec des rochers aiguisés. Taux de critiques élevé.' }, - "captivate": { - name: "Séduction", - effect: "Si l’ennemi est de sexe opposé au lanceur, il est séduit et son Attaque Spéciale baisse beaucoup." + 'captivate': { + name: 'Séduction', + effect: 'Si l’ennemi est de sexe opposé au lanceur, il est séduit et son Attaque Spéciale baisse beaucoup.' }, - "stealthRock": { - name: "Piège de Roc", - effect: "Le lanceur fait flotter des pierres autour de la cible qui blessent tout adversaire entrant au combat." + 'stealthRock': { + name: 'Piège de Roc', + effect: 'Le lanceur fait flotter des pierres autour de la cible qui blessent tout adversaire entrant au combat.' }, - "grassKnot": { - name: "Nœud Herbe", - effect: "Le lanceur fait des nœuds dans l’herbe pour faire trébucher la cible. Plus la cible est lourde, plus la puissance de cette capacité augmente." + 'grassKnot': { + name: 'Nœud Herbe', + effect: 'Le lanceur fait des nœuds dans l’herbe pour faire trébucher la cible. Plus la cible est lourde, plus la puissance de cette capacité augmente.' }, - "chatter": { - name: "Babil", - effect: "Attaque avec les ondes sonores assourdissantes qu’il émet en bavardant. Rend l’ennemi confus." + 'chatter': { + name: 'Babil', + effect: 'Attaque avec les ondes sonores assourdissantes qu’il émet en bavardant. Rend l’ennemi confus.' }, - "judgment": { - name: "Jugement", - effect: "Le lanceur libère une myriade de rayons de lumière. Le type varie selon la plaque que tient le lanceur." + 'judgment': { + name: 'Jugement', + effect: 'Le lanceur libère une myriade de rayons de lumière. Le type varie selon la plaque que tient le lanceur.' }, - "bugBite": { - name: "Piqûre", - effect: "Le lanceur pique la cible. Si celle-ci tient une Baie, le lanceur la dévore et obtient son effet." + 'bugBite': { + name: 'Piqûre', + effect: 'Le lanceur pique la cible. Si celle-ci tient une Baie, le lanceur la dévore et obtient son effet.' }, - "chargeBeam": { - name: "Rayon Chargé", - effect: "Le lanceur tire un rayon chargé d’électricité. Peut aussi augmenter son Attaque Spéciale." + 'chargeBeam': { + name: 'Rayon Chargé', + effect: 'Le lanceur tire un rayon chargé d’électricité. Peut aussi augmenter son Attaque Spéciale.' }, - "woodHammer": { - name: "Martobois", - effect: "Le lanceur heurte la cible de son corps robuste, ce qui blesse aussi gravement le lanceur." + 'woodHammer': { + name: 'Martobois', + effect: 'Le lanceur heurte la cible de son corps robuste, ce qui blesse aussi gravement le lanceur.' }, - "aquaJet": { - name: "Aqua-Jet", - effect: "Le lanceur fonce sur la cible si rapidement qu’on parvient à peine à le discerner. Frappe en priorité." + 'aquaJet': { + name: 'Aqua-Jet', + effect: 'Le lanceur fonce sur la cible si rapidement qu’on parvient à peine à le discerner. Frappe en priorité.' }, - "attackOrder": { - name: "Appel Attaque", - effect: "Le lanceur appelle ses subalternes pour frapper la cible. Taux de critiques élevé." + 'attackOrder': { + name: 'Appel Attaque', + effect: 'Le lanceur appelle ses subalternes pour frapper la cible. Taux de critiques élevé.' }, - "defendOrder": { - name: "Appel Défense", - effect: "Le lanceur appelle ses subalternes pour former un bouclier qui augmente sa Défense et sa Défense Spéciale." + 'defendOrder': { + name: 'Appel Défense', + effect: 'Le lanceur appelle ses subalternes pour former un bouclier qui augmente sa Défense et sa Défense Spéciale.' }, - "healOrder": { - name: "Appel Soins", - effect: "Le lanceur appelle ses sous-fifres pour le soigner. Il récupère jusqu’à la moitié de ses PV max." + 'healOrder': { + name: 'Appel Soins', + effect: 'Le lanceur appelle ses sous-fifres pour le soigner. Il récupère jusqu’à la moitié de ses PV max.' }, - "headSmash": { - name: "Fracass’Tête", - effect: "Le lanceur assène un coup de tête désespéré, ce qui le blesse aussi très gravement." + 'headSmash': { + name: 'Fracass’Tête', + effect: 'Le lanceur assène un coup de tête désespéré, ce qui le blesse aussi très gravement.' }, - "doubleHit": { - name: "Coup Double", - effect: "Le lanceur frappe la cible deux fois d’affilée à l’aide de sa queue ou d’un autre membre." + 'doubleHit': { + name: 'Coup Double', + effect: 'Le lanceur frappe la cible deux fois d’affilée à l’aide de sa queue ou d’un autre membre.' }, - "roarOfTime": { - name: "Hurle-Temps", - effect: "Le lanceur frappe si fort qu’il affecte le cours du temps. Il se repose au tour suivant." + 'roarOfTime': { + name: 'Hurle-Temps', + effect: 'Le lanceur frappe si fort qu’il affecte le cours du temps. Il se repose au tour suivant.' }, - "spacialRend": { - name: "Spatio-Rift", - effect: "Le lanceur déchire la cible et l’espace autour de lui. Taux de critiques élevé." + 'spacialRend': { + name: 'Spatio-Rift', + effect: 'Le lanceur déchire la cible et l’espace autour de lui. Taux de critiques élevé.' }, - "lunarDance": { - name: "Danse Lune", - effect: "Le lanceur tombe K.O. pour soigner totalement le Pokémon qui prendra sa place au combat." + 'lunarDance': { + name: 'Danse Lune', + effect: 'Le lanceur tombe K.O. pour soigner totalement le Pokémon qui prendra sa place au combat.' }, - "crushGrip": { - name: "Presse", - effect: "Une force puissante écrase l’ennemi. Plus il lui reste de PV et plus l’attaque est puissante." + 'crushGrip': { + name: 'Presse', + effect: 'Une force puissante écrase l’ennemi. Plus il lui reste de PV et plus l’attaque est puissante.' }, - "magmaStorm": { - name: "Vortex Magma", - effect: "La cible est prise dans un tourbillon de feu qui dure de quatre à cinq tours." + 'magmaStorm': { + name: 'Vortex Magma', + effect: 'La cible est prise dans un tourbillon de feu qui dure de quatre à cinq tours.' }, - "darkVoid": { - name: "Trou Noir", - effect: "L’ennemi est plongé dans les ténèbres. Il tombe dans un profond sommeil." + 'darkVoid': { + name: 'Trou Noir', + effect: 'L’ennemi est plongé dans les ténèbres. Il tombe dans un profond sommeil.' }, - "seedFlare": { - name: "Fulmigraine", - effect: "Le corps du lanceur émet une onde de choc. Peut aussi beaucoup baisser la Défense Spéciale de la cible." + 'seedFlare': { + name: 'Fulmigraine', + effect: 'Le corps du lanceur émet une onde de choc. Peut aussi beaucoup baisser la Défense Spéciale de la cible.' }, - "ominousWind": { - name: "Vent Mauvais", - effect: "Le lanceur crée une violente bourrasque. Peut aussi augmenter toutes ses stats." + 'ominousWind': { + name: 'Vent Mauvais', + effect: 'Le lanceur crée une violente bourrasque. Peut aussi augmenter toutes ses stats.' }, - "shadowForce": { - name: "Revenant", - effect: "Le lanceur disparaît au premier tour et frappe la cible au deuxième. Cette capacité fonctionne même si la cible se protège." + 'shadowForce': { + name: 'Revenant', + effect: 'Le lanceur disparaît au premier tour et frappe la cible au deuxième. Cette capacité fonctionne même si la cible se protège.' }, - "honeClaws": { - name: "Aiguisage", - effect: "Le lanceur s’aiguise les griffes. Augmente l’Attaque et la Précision." + 'honeClaws': { + name: 'Aiguisage', + effect: 'Le lanceur s’aiguise les griffes. Augmente l’Attaque et la Précision.' }, - "wideGuard": { - name: "Garde Large", - effect: "Bloque les attaques visant tous les alliés pendant un tour." + 'wideGuard': { + name: 'Garde Large', + effect: 'Bloque les attaques visant tous les alliés pendant un tour.' }, - "guardSplit": { - name: "Partage Garde", - effect: "Additionne la Défense et la Défense Spéciale du lanceur et de sa cible et les redistribue équitablement entre les deux." + 'guardSplit': { + name: 'Partage Garde', + effect: 'Additionne la Défense et la Défense Spéciale du lanceur et de sa cible et les redistribue équitablement entre les deux.' }, - "powerSplit": { - name: "Partage Force", - effect: "Additionne l’Attaque Spéciale et l’Attaque du lanceur et de sa cible et les redistribue équitablement entre les deux." + 'powerSplit': { + name: 'Partage Force', + effect: 'Additionne l’Attaque Spéciale et l’Attaque du lanceur et de sa cible et les redistribue équitablement entre les deux.' }, - "wonderRoom": { - name: "Zone Étrange", - effect: "Le lanceur crée une zone mystérieuse où la Défense et la Défense Spéciale de tous les Pokémon sont inversées pendant cinq tours." + 'wonderRoom': { + name: 'Zone Étrange', + effect: 'Le lanceur crée une zone mystérieuse où la Défense et la Défense Spéciale de tous les Pokémon sont inversées pendant cinq tours.' }, - "psyshock": { - name: "Choc Psy", - effect: "Le lanceur matérialise des ondes mystérieuses qu’il projette sur la cible, ce qui inflige des dégâts physiques à celle-ci." + 'psyshock': { + name: 'Choc Psy', + effect: 'Le lanceur matérialise des ondes mystérieuses qu’il projette sur la cible, ce qui inflige des dégâts physiques à celle-ci.' }, - "venoshock": { - name: "Choc Venin", - effect: "Le lanceur asperge la cible d’un poison spécial. La puissance de la capacité est doublée si la cible est empoisonnée." + 'venoshock': { + name: 'Choc Venin', + effect: 'Le lanceur asperge la cible d’un poison spécial. La puissance de la capacité est doublée si la cible est empoisonnée.' }, - "autotomize": { - name: "Allègement", - effect: "Le lanceur se débarrasse des parties inutiles de son corps. Son poids diminue et sa Vitesse augmente beaucoup." + 'autotomize': { + name: 'Allègement', + effect: 'Le lanceur se débarrasse des parties inutiles de son corps. Son poids diminue et sa Vitesse augmente beaucoup.' }, - "ragePowder": { - name: "Poudre Fureur", - effect: "Le lanceur s’asperge d’une poudre irritante pour attirer l’attention et diriger toutes les attaques ennemies sur lui." + 'ragePowder': { + name: 'Poudre Fureur', + effect: 'Le lanceur s’asperge d’une poudre irritante pour attirer l’attention et diriger toutes les attaques ennemies sur lui.' }, - "telekinesis": { - name: "Lévikinésie", - effect: "Un pouvoir qui fait flotter l’ennemi dans les airs. Pendant trois tours, il devient plus facile à atteindre." + 'telekinesis': { + name: 'Lévikinésie', + effect: 'Un pouvoir qui fait flotter l’ennemi dans les airs. Pendant trois tours, il devient plus facile à atteindre.' }, - "magicRoom": { - name: "Zone Magique", - effect: "Le lanceur crée une zone mystérieuse où les objets tenus par tous les Pokémon n’ont plus aucun effet pendant cinq tours." + 'magicRoom': { + name: 'Zone Magique', + effect: 'Le lanceur crée une zone mystérieuse où les objets tenus par tous les Pokémon n’ont plus aucun effet pendant cinq tours.' }, - "smackDown": { - name: "Anti-Air", - effect: "Le lanceur jette un projectile sur la cible. Si cette dernière vole, elle tombe au sol." + 'smackDown': { + name: 'Anti-Air', + effect: 'Le lanceur jette un projectile sur la cible. Si cette dernière vole, elle tombe au sol.' }, - "stormThrow": { - name: "Yama Arashi", - effect: "Un coup très puissant dont l’effet est toujours critique." + 'stormThrow': { + name: 'Yama Arashi', + effect: 'Un coup très puissant dont l’effet est toujours critique.' }, - "flameBurst": { - name: "Rebondifeu", - effect: "Quand l’attaque atteint sa cible, elle projette des flammes qui touchent tout ennemi situé à côté." + 'flameBurst': { + name: 'Rebondifeu', + effect: 'Quand l’attaque atteint sa cible, elle projette des flammes qui touchent tout ennemi situé à côté.' }, - "sludgeWave": { - name: "Cradovague", - effect: "Une vague de détritus attaque tous les Pokémon autour du lanceur. Peut aussi empoisonner (10% de chances)." + 'sludgeWave': { + name: 'Cradovague', + effect: 'Une vague de détritus attaque tous les Pokémon autour du lanceur. Peut aussi empoisonner (10% de chances).' }, - "quiverDance": { - name: "Papillodanse", - effect: "Une danse mystique dont le rythme parfait augmente l’Attaque Spéciale, la Défense Spéciale et la Vitesse du lanceur." + 'quiverDance': { + name: 'Papillodanse', + effect: 'Une danse mystique dont le rythme parfait augmente l’Attaque Spéciale, la Défense Spéciale et la Vitesse du lanceur.' }, - "heavySlam": { - name: "Tacle Lourd", - effect: "Le lanceur se jette sur la cible de tout son poids. Plus il est lourd par rapport à la cible, plus la puissance de cette capacité augmente." + 'heavySlam': { + name: 'Tacle Lourd', + effect: 'Le lanceur se jette sur la cible de tout son poids. Plus il est lourd par rapport à la cible, plus la puissance de cette capacité augmente.' }, - "synchronoise": { - name: "Synchropeine", - effect: "Des ondes mystérieuses blessent tous les Pokémon alentour qui sont du même type que le lanceur." + 'synchronoise': { + name: 'Synchropeine', + effect: 'Des ondes mystérieuses blessent tous les Pokémon alentour qui sont du même type que le lanceur.' }, - "electroBall": { - name: "Boule Élek", - effect: "Le lanceur envoie une boule d’électricité. Plus la Vitesse du lanceur est élevée par rapport à celle de la cible, plus la puissance de la capacité augmente." + 'electroBall': { + name: 'Boule Élek', + effect: 'Le lanceur envoie une boule d’électricité. Plus la Vitesse du lanceur est élevée par rapport à celle de la cible, plus la puissance de la capacité augmente.' }, - "soak": { - name: "Détrempage", - effect: "Le lanceur projette beaucoup d’eau sur sa cible, qui devient de type Eau." + 'soak': { + name: 'Détrempage', + effect: 'Le lanceur projette beaucoup d’eau sur sa cible, qui devient de type Eau.' }, - "flameCharge": { - name: "Nitrocharge", - effect: "Le lanceur s’entoure de flammes pour attaquer la cible. Il se concentre et sa Vitesse augmente." + 'flameCharge': { + name: 'Nitrocharge', + effect: 'Le lanceur s’entoure de flammes pour attaquer la cible. Il se concentre et sa Vitesse augmente.' }, - "coil": { - name: "Enroulement", - effect: "Le lanceur s’enroule sur lui-même et se concentre. Son Attaque, sa Défense et sa Précision augmentent." + 'coil': { + name: 'Enroulement', + effect: 'Le lanceur s’enroule sur lui-même et se concentre. Son Attaque, sa Défense et sa Précision augmentent.' }, - "lowSweep": { - name: "Balayette", - effect: "Un coup rapide qui affecte la mobilité de la cible et diminue sa Vitesse." + 'lowSweep': { + name: 'Balayette', + effect: 'Un coup rapide qui affecte la mobilité de la cible et diminue sa Vitesse.' }, - "acidSpray": { - name: "Bombe Acide", - effect: "Le lanceur projette un liquide acide qui fait fondre la cible, ce qui diminue beaucoup la Défense Spéciale de celle-ci." + 'acidSpray': { + name: 'Bombe Acide', + effect: 'Le lanceur projette un liquide acide qui fait fondre la cible, ce qui diminue beaucoup la Défense Spéciale de celle-ci.' }, - "foulPlay": { - name: "Tricherie", - effect: "Le lanceur utilise la force de la cible. Plus l’Attaque de celle-ci est élevée, plus le lanceur inflige de dégâts." + 'foulPlay': { + name: 'Tricherie', + effect: 'Le lanceur utilise la force de la cible. Plus l’Attaque de celle-ci est élevée, plus le lanceur inflige de dégâts.' }, - "simpleBeam": { - name: "Rayon Simple", - effect: "Le lanceur envoie des ondes mystérieuses à la cible, dont le talent est remplacé par le talent Simple." + 'simpleBeam': { + name: 'Rayon Simple', + effect: 'Le lanceur envoie des ondes mystérieuses à la cible, dont le talent est remplacé par le talent Simple.' }, - "entrainment": { - name: "Ten-Danse", - effect: "Le lanceur danse sur un rythme étrange. Il force sa cible à l’imiter, ce qui lui fait adopter son talent." + 'entrainment': { + name: 'Ten-Danse', + effect: 'Le lanceur danse sur un rythme étrange. Il force sa cible à l’imiter, ce qui lui fait adopter son talent.' }, - "afterYou": { - name: "Après Vous", - effect: "S’il est le premier à agir, le lanceur permet à sa cible d’utiliser une capacité juste après lui." + 'afterYou': { + name: 'Après Vous', + effect: 'S’il est le premier à agir, le lanceur permet à sa cible d’utiliser une capacité juste après lui.' }, - "round": { - name: "Chant Canon", - effect: "Le lanceur attaque la cible en chantant. Si plusieurs Pokémon déclenchent cette attaque à la suite, la puissance augmente." + 'round': { + name: 'Chant Canon', + effect: 'Le lanceur attaque la cible en chantant. Si plusieurs Pokémon déclenchent cette attaque à la suite, la puissance augmente.' }, - "echoedVoice": { - name: "Écho", - effect: "Un cri retentissant blesse la cible. Si le lanceur ou d’autres Pokémon utilisent cette capacité à chaque tour, la puissance augmente." + 'echoedVoice': { + name: 'Écho', + effect: 'Un cri retentissant blesse la cible. Si le lanceur ou d’autres Pokémon utilisent cette capacité à chaque tour, la puissance augmente.' }, - "chipAway": { - name: "Attrition", - effect: "Une attaque puissante quand l’ennemi baisse sa garde. Inflige des dégâts sans tenir compte des changements de stats." + 'chipAway': { + name: 'Attrition', + effect: 'Une attaque puissante quand l’ennemi baisse sa garde. Inflige des dégâts sans tenir compte des changements de stats.' }, - "clearSmog": { - name: "Bain de Smog", - effect: "Le lanceur projette de la boue bizarre sur la cible. Les changements de stats de la cible sont annulés." + 'clearSmog': { + name: 'Bain de Smog', + effect: 'Le lanceur projette de la boue bizarre sur la cible. Les changements de stats de la cible sont annulés.' }, - "storedPower": { - name: "Force Ajoutée", - effect: "Le lanceur attaque la cible avec une force cumulée. Plus les stats du lanceur sont augmentées, plus la puissance de cette capacité augmente." + 'storedPower': { + name: 'Force Ajoutée', + effect: 'Le lanceur attaque la cible avec une force cumulée. Plus les stats du lanceur sont augmentées, plus la puissance de cette capacité augmente.' }, - "quickGuard": { - name: "Prévention", - effect: "Protège le lanceur et ses alliés des attaques prioritaires." + 'quickGuard': { + name: 'Prévention', + effect: 'Protège le lanceur et ses alliés des attaques prioritaires.' }, - "allySwitch": { - name: "Interversion", - effect: "Le lanceur se téléporte à l’aide d’un pouvoir mystérieux. Il échange sa place avec celle d’un allié sur le terrain. Peut échouer si utilisée plusieurs fois de suite." + 'allySwitch': { + name: 'Interversion', + effect: 'Le lanceur se téléporte à l’aide d’un pouvoir mystérieux. Il échange sa place avec celle d’un allié sur le terrain. Peut échouer si utilisée plusieurs fois de suite.' }, - "scald": { - name: "Ébullition", - effect: "Le lanceur projette un jet d’eau bouillante sur la cible, ce qui peut aussi la brûler (30% de chances)." + 'scald': { + name: 'Ébullition', + effect: 'Le lanceur projette un jet d’eau bouillante sur la cible, ce qui peut aussi la brûler (30% de chances).' }, - "shellSmash": { - name: "Exuviation", - effect: "Le lanceur brise sa carapace. Il baisse sa Défense et sa Défense Spéciale, mais augmente beaucoup son Attaque, son Attaque Spéciale et sa Vitesse." + 'shellSmash': { + name: 'Exuviation', + effect: 'Le lanceur brise sa carapace. Il baisse sa Défense et sa Défense Spéciale, mais augmente beaucoup son Attaque, son Attaque Spéciale et sa Vitesse.' }, - "healPulse": { - name: "Vibra Soin", - effect: "Le lanceur projette une aura de bien-être qui fait récupérer la moitié de ses PV max à la cible." + 'healPulse': { + name: 'Vibra Soin', + effect: 'Le lanceur projette une aura de bien-être qui fait récupérer la moitié de ses PV max à la cible.' }, - "hex": { - name: "Châtiment", - effect: "Une attaque acharnée qui cause davantage de dégâts à la cible si elle a une altération de statut." + 'hex': { + name: 'Châtiment', + effect: 'Une attaque acharnée qui cause davantage de dégâts à la cible si elle a une altération de statut.' }, - "skyDrop": { - name: "Chute Libre", - effect: "Le lanceur emmène l’ennemi dans les airs au premier tour et le lâche dans le vide au second. L’ennemi saisi ne peut pas attaquer." + 'skyDrop': { + name: 'Chute Libre', + effect: 'Le lanceur emmène l’ennemi dans les airs au premier tour et le lâche dans le vide au second. L’ennemi saisi ne peut pas attaquer.' }, - "shiftGear": { - name: "Change-Vitesse", - effect: "Le lanceur fait tourner ses engrenages. Cela augmente son Attaque et augmente beaucoup sa Vitesse." + 'shiftGear': { + name: 'Change-Vitesse', + effect: 'Le lanceur fait tourner ses engrenages. Cela augmente son Attaque et augmente beaucoup sa Vitesse.' }, - "circleThrow": { - name: "Projection", - effect: "Le lanceur fait une projection sur un Pokémon ennemi et le remplace par un autre. Lors d’un combat contre un Pokémon sauvage seul, cela met fin au combat." + 'circleThrow': { + name: 'Projection', + effect: 'Le lanceur fait une projection sur un Pokémon ennemi et le remplace par un autre. Lors d’un combat contre un Pokémon sauvage seul, cela met fin au combat.' }, - "incinerate": { - name: "Calcination", - effect: "Des flammes calcinent la cible. Si elle tient un objet, une Baie par exemple, celui-ci est brûlé et devient inutilisable." + 'incinerate': { + name: 'Calcination', + effect: 'Des flammes calcinent la cible. Si elle tient un objet, une Baie par exemple, celui-ci est brûlé et devient inutilisable.' }, - "quash": { - name: "À la Queue", - effect: "Retient la cible de force, l’obligeant à agir en dernier." + 'quash': { + name: 'À la Queue', + effect: 'Retient la cible de force, l’obligeant à agir en dernier.' }, - "acrobatics": { - name: "Acrobatie", - effect: "Le lanceur frappe la cible avec agilité. S’il ne tient pas d’objet, l’attaque inflige davantage de dégâts." + 'acrobatics': { + name: 'Acrobatie', + effect: 'Le lanceur frappe la cible avec agilité. S’il ne tient pas d’objet, l’attaque inflige davantage de dégâts.' }, - "reflectType": { - name: "Copie-Type", - effect: "Le lanceur adopte le même type que la cible." + 'reflectType': { + name: 'Copie-Type', + effect: 'Le lanceur adopte le même type que la cible.' }, - "retaliate": { - name: "Vengeance", - effect: "Le lanceur venge un allié K.O. Si un Pokémon de l’équipe a été mis K.O. au tour d’avant, la puissance augmente." + 'retaliate': { + name: 'Vengeance', + effect: 'Le lanceur venge un allié K.O. Si un Pokémon de l’équipe a été mis K.O. au tour d’avant, la puissance augmente.' }, - "finalGambit": { - name: "Tout ou Rien", - effect: "Une attaque très risquée. Le lanceur perd tous ses PV restants et inflige autant de dégâts à la cible." + 'finalGambit': { + name: 'Tout ou Rien', + effect: 'Une attaque très risquée. Le lanceur perd tous ses PV restants et inflige autant de dégâts à la cible.' }, - "bestow": { - name: "Passe-Cadeau", - effect: "Si la cible ne tient pas d’objet, le lanceur lui donne l’objet qu’il tient." + 'bestow': { + name: 'Passe-Cadeau', + effect: 'Si la cible ne tient pas d’objet, le lanceur lui donne l’objet qu’il tient.' }, - "inferno": { - name: "Feu d’Enfer", - effect: "La cible est entourée d’un torrent de flammes ardentes qui la brûlent." + 'inferno': { + name: 'Feu d’Enfer', + effect: 'La cible est entourée d’un torrent de flammes ardentes qui la brûlent.' }, - "waterPledge": { - name: "Aire d’Eau", - effect: "Une masse d’eau s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire de Feu, la puissance augmente et un arc-en-ciel apparaît." + 'waterPledge': { + name: 'Aire d’Eau', + effect: 'Une masse d’eau s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire de Feu, la puissance augmente et un arc-en-ciel apparaît.' }, - "firePledge": { - name: "Aire de Feu", - effect: "Une masse de feu s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire d’Herbe, la puissance augmente et une mer de feu apparaît." + 'firePledge': { + name: 'Aire de Feu', + effect: 'Une masse de feu s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire d’Herbe, la puissance augmente et une mer de feu apparaît.' }, - "grassPledge": { - name: "Aire d’Herbe", - effect: "Une masse végétale s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire d’Eau, la puissance augmente et un marécage apparaît." + 'grassPledge': { + name: 'Aire d’Herbe', + effect: 'Une masse végétale s’abat sur la cible. Si cette capacité est utilisée en même temps qu’Aire d’Eau, la puissance augmente et un marécage apparaît.' }, - "voltSwitch": { - name: "Change Éclair", - effect: "Après son attaque, le lanceur revient à toute vitesse et change de place avec un Pokémon de l’équipe prêt au combat." + 'voltSwitch': { + name: 'Change Éclair', + effect: 'Après son attaque, le lanceur revient à toute vitesse et change de place avec un Pokémon de l’équipe prêt au combat.' }, - "struggleBug": { - name: "Survinsecte", - effect: "Le lanceur frappe en se débattant de toutes ses forces, et baisse l’Attaque Spéciale de la cible." + 'struggleBug': { + name: 'Survinsecte', + effect: 'Le lanceur frappe en se débattant de toutes ses forces, et baisse l’Attaque Spéciale de la cible.' }, - "bulldoze": { - name: "Piétisol", - effect: "Le lanceur piétine le sol et inflige des dégâts à tous les Pokémon autour de lui. Baisse aussi leur Vitesse." + 'bulldoze': { + name: 'Piétisol', + effect: 'Le lanceur piétine le sol et inflige des dégâts à tous les Pokémon autour de lui. Baisse aussi leur Vitesse.' }, - "frostBreath": { - name: "Souffle Glacé", - effect: "Un souffle froid blesse la cible. L’effet est toujours critique." + 'frostBreath': { + name: 'Souffle Glacé', + effect: 'Un souffle froid blesse la cible. L’effet est toujours critique.' }, - "dragonTail": { - name: "Draco-Queue", - effect: "Un coup puissant qui blesse la cible et l’envoie au loin. Lors d’un combat contre un Pokémon sauvage seul, met fin au combat." + 'dragonTail': { + name: 'Draco-Queue', + effect: 'Un coup puissant qui blesse la cible et l’envoie au loin. Lors d’un combat contre un Pokémon sauvage seul, met fin au combat.' }, - "workUp": { - name: "Rengorgement", - effect: "Le lanceur se rengorge et augmente son Attaque et son Attaque Spéciale." + 'workUp': { + name: 'Rengorgement', + effect: 'Le lanceur se rengorge et augmente son Attaque et son Attaque Spéciale.' }, - "electroweb": { - name: "Toile Élek", - effect: "Le lanceur attaque la cible en l’attrapant dans un filet électrique. Baisse aussi la Vitesse de la cible." + 'electroweb': { + name: 'Toile Élek', + effect: 'Le lanceur attaque la cible en l’attrapant dans un filet électrique. Baisse aussi la Vitesse de la cible.' }, - "wildCharge": { - name: "Éclair Fou", - effect: "Une charge électrique violente qui blesse aussi légèrement le lanceur." + 'wildCharge': { + name: 'Éclair Fou', + effect: 'Une charge électrique violente qui blesse aussi légèrement le lanceur.' }, - "drillRun": { - name: "Tunnelier", - effect: "Le lanceur tourne sur lui-même comme une perceuse et se jette sur la cible. Taux de critiques élevé." + 'drillRun': { + name: 'Tunnelier', + effect: 'Le lanceur tourne sur lui-même comme une perceuse et se jette sur la cible. Taux de critiques élevé.' }, - "dualChop": { - name: "Double Baffe", - effect: "Le lanceur frappe l’ennemi deux fois d’affilée avec les parties les plus robustes de son corps." + 'dualChop': { + name: 'Double Baffe', + effect: 'Le lanceur frappe l’ennemi deux fois d’affilée avec les parties les plus robustes de son corps.' }, - "heartStamp": { - name: "Crève-Cœur", - effect: "Déconcentre l’ennemi avec des mouvements mignons avant de le frapper violemment. Peut aussi l’apeurer (30% de chances)." + 'heartStamp': { + name: 'Crève-Cœur', + effect: 'Déconcentre l’ennemi avec des mouvements mignons avant de le frapper violemment. Peut aussi l’apeurer (30% de chances).' }, - "hornLeech": { - name: "Encornebois", - effect: "Un coup de cornes qui draine l’énergie de la cible. La capacité convertit la moitié des dégâts infligés en PV pour le lanceur." + 'hornLeech': { + name: 'Encornebois', + effect: 'Un coup de cornes qui draine l’énergie de la cible. La capacité convertit la moitié des dégâts infligés en PV pour le lanceur.' }, - "sacredSword": { - name: "Lame Sainte", - effect: "Un violent coup d’épée qui lacère la cible et lui inflige des dégâts en ignorant ses changements de stats." + 'sacredSword': { + name: 'Lame Sainte', + effect: 'Un violent coup d’épée qui lacère la cible et lui inflige des dégâts en ignorant ses changements de stats.' }, - "razorShell": { - name: "Coqui-Lame", - effect: "Un coquillage aiguisé lacère la cible et peut aussi baisser sa Défense." + 'razorShell': { + name: 'Coqui-Lame', + effect: 'Un coquillage aiguisé lacère la cible et peut aussi baisser sa Défense.' }, - "heatCrash": { - name: "Tacle Feu", - effect: "Le lanceur projette son corps enflammé contre la cible. Plus il est lourd par rapport à la cible, plus la puissance de cette capacité augmente." + 'heatCrash': { + name: 'Tacle Feu', + effect: 'Le lanceur projette son corps enflammé contre la cible. Plus il est lourd par rapport à la cible, plus la puissance de cette capacité augmente.' }, - "leafTornado": { - name: "Phytomixeur", - effect: "L’ennemi est pris dans un tourbillon de feuilles acérées. Peut aussi baisser sa Précision." + 'leafTornado': { + name: 'Phytomixeur', + effect: 'L’ennemi est pris dans un tourbillon de feuilles acérées. Peut aussi baisser sa Précision.' }, - "steamroller": { - name: "Bulldoboule", - effect: "Le lanceur se roule en boule et écrase son ennemi. Peut aussi l’apeurer (30% de chances)." + 'steamroller': { + name: 'Bulldoboule', + effect: 'Le lanceur se roule en boule et écrase son ennemi. Peut aussi l’apeurer (30% de chances).' }, - "cottonGuard": { - name: "Cotogarde", - effect: "Le lanceur se protège en s’emmitouflant dans du coton. Sa Défense augmente énormément." + 'cottonGuard': { + name: 'Cotogarde', + effect: 'Le lanceur se protège en s’emmitouflant dans du coton. Sa Défense augmente énormément.' }, - "nightDaze": { - name: "Explonuit", - effect: "Le lanceur attaque avec une onde de choc ténébreuse qui peut aussi baisser la Précision de la cible." + 'nightDaze': { + name: 'Explonuit', + effect: 'Le lanceur attaque avec une onde de choc ténébreuse qui peut aussi baisser la Précision de la cible.' }, - "psystrike": { - name: "Frappe Psy", - effect: "Le lanceur matérialise des ondes mystérieuses qu’il projette sur la cible, ce qui inflige des dégâts physiques à celle-ci." + 'psystrike': { + name: 'Frappe Psy', + effect: 'Le lanceur matérialise des ondes mystérieuses qu’il projette sur la cible, ce qui inflige des dégâts physiques à celle-ci.' }, - "tailSlap": { - name: "Plumo-Queue", - effect: "Le lanceur frappe la cible de deux à cinq fois d’affilée avec sa queue robuste." + 'tailSlap': { + name: 'Plumo-Queue', + effect: 'Le lanceur frappe la cible de deux à cinq fois d’affilée avec sa queue robuste.' }, - "hurricane": { - name: "Vent Violent", - effect: "Le lanceur déclenche une tempête de vents violents qui s’abat sur la cible, et peut aussi la rendre confuse." + 'hurricane': { + name: 'Vent Violent', + effect: 'Le lanceur déclenche une tempête de vents violents qui s’abat sur la cible, et peut aussi la rendre confuse.' }, - "headCharge": { - name: "Peignée", - effect: "Le lanceur donne un coup avec sa tête couronnée d’une fière crinière. Blesse aussi légèrement le lanceur." + 'headCharge': { + name: 'Peignée', + effect: 'Le lanceur donne un coup avec sa tête couronnée d’une fière crinière. Blesse aussi légèrement le lanceur.' }, - "gearGrind": { - name: "Lancécrou", - effect: "Le lanceur jette deux écrous d’acier qui frappent l’ennemi deux fois d’affilée." + 'gearGrind': { + name: 'Lancécrou', + effect: 'Le lanceur jette deux écrous d’acier qui frappent l’ennemi deux fois d’affilée.' }, - "searingShot": { - name: "Incendie", - effect: "Des boules de feu s’abattent sur tous les Pokémon autour du lanceur. Peut aussi les brûler (30% de chances)." + 'searingShot': { + name: 'Incendie', + effect: 'Des boules de feu s’abattent sur tous les Pokémon autour du lanceur. Peut aussi les brûler (30% de chances).' }, - "technoBlast": { - name: "Techno-Buster", - effect: "Le lanceur projette un rayon lumineux sur l’ennemi. Le type varie selon le Module que tient le lanceur." + 'technoBlast': { + name: 'Techno-Buster', + effect: 'Le lanceur projette un rayon lumineux sur l’ennemi. Le type varie selon le Module que tient le lanceur.' }, - "relicSong": { - name: "Chant Antique", - effect: "Le lanceur attaque la cible en lui chantant une chanson d’un autre temps qui peut aussi l’endormir." + 'relicSong': { + name: 'Chant Antique', + effect: 'Le lanceur attaque la cible en lui chantant une chanson d’un autre temps qui peut aussi l’endormir.' }, - "secretSword": { - name: "Lame Ointe", - effect: "L’ennemi est lacéré par une longue corne. Son pouvoir mystérieux inflige des dégâts physiques." + 'secretSword': { + name: 'Lame Ointe', + effect: 'L’ennemi est lacéré par une longue corne. Son pouvoir mystérieux inflige des dégâts physiques.' }, - "glaciate": { - name: "Ère Glaciaire", - effect: "Un souffle de vent qui congèle tout sur son passage s’abat sur l’ennemi. Réduit aussi sa Vitesse." + 'glaciate': { + name: 'Ère Glaciaire', + effect: 'Un souffle de vent qui congèle tout sur son passage s’abat sur l’ennemi. Réduit aussi sa Vitesse.' }, - "boltStrike": { - name: "Charge Foudre", - effect: "Le lanceur s’enveloppe d’une charge électrique surpuissante et se jette sur l’ennemi. Peut aussi le paralyser (20% de chances)." + 'boltStrike': { + name: 'Charge Foudre', + effect: 'Le lanceur s’enveloppe d’une charge électrique surpuissante et se jette sur l’ennemi. Peut aussi le paralyser (20% de chances).' }, - "blueFlare": { - name: "Flamme Bleue", - effect: "De magnifiques et redoutables flammes bleues fondent sur l’ennemi. Peut aussi le brûler (20% de chances)." + 'blueFlare': { + name: 'Flamme Bleue', + effect: 'De magnifiques et redoutables flammes bleues fondent sur l’ennemi. Peut aussi le brûler (20% de chances).' }, - "fieryDance": { - name: "Danse du Feu", - effect: "Le lanceur s’enveloppe de flammes et attaque la cible, Cela peut aussi augmenter l’Attaque Spéciale du lanceur." + 'fieryDance': { + name: 'Danse du Feu', + effect: 'Le lanceur s’enveloppe de flammes et attaque la cible, Cela peut aussi augmenter l’Attaque Spéciale du lanceur.' }, - "freezeShock": { - name: "Éclair Gelé", - effect: "Projette un bloc de glace électrifié sur l’ennemi au second tour. Peut aussi le paralyser (30% de chances)." + 'freezeShock': { + name: 'Éclair Gelé', + effect: 'Projette un bloc de glace électrifié sur l’ennemi au second tour. Peut aussi le paralyser (30% de chances).' }, - "iceBurn": { - name: "Feu Glacé", - effect: "Au second tour, le lanceur projette un souffle de vent glacial dévastateur sur l’ennemi. Peut aussi le brûler (30% de chances)." + 'iceBurn': { + name: 'Feu Glacé', + effect: 'Au second tour, le lanceur projette un souffle de vent glacial dévastateur sur l’ennemi. Peut aussi le brûler (30% de chances).' }, - "snarl": { - name: "Aboiement", - effect: "Le lanceur hurle sur la cible et baisse l’Attaque Spéciale de celle-ci." + 'snarl': { + name: 'Aboiement', + effect: 'Le lanceur hurle sur la cible et baisse l’Attaque Spéciale de celle-ci.' }, - "icicleCrash": { - name: "Chute Glace", - effect: "Le lanceur envoie de gros blocs de glace sur la cible pour lui infliger des dégâts, ce qui peut aussi l’apeurer (30% de chances)." + 'icicleCrash': { + name: 'Chute Glace', + effect: 'Le lanceur envoie de gros blocs de glace sur la cible pour lui infliger des dégâts, ce qui peut aussi l’apeurer (30% de chances).' }, - "vCreate": { - name: "Coup Victoire", - effect: "Le lanceur fait jaillir des flammes ardentes de son front et se jette sur la cible, ce qui baisse la Défense, la Défense Spéciale et la Vitesse du lanceur." + 'vCreate': { + name: 'Coup Victoire', + effect: 'Le lanceur fait jaillir des flammes ardentes de son front et se jette sur la cible, ce qui baisse la Défense, la Défense Spéciale et la Vitesse du lanceur.' }, - "fusionFlare": { - name: "Flamme Croix", - effect: "Projette une boule de feu gigantesque. L’effet augmente sous l’influence d’Éclair Croix." + 'fusionFlare': { + name: 'Flamme Croix', + effect: 'Projette une boule de feu gigantesque. L’effet augmente sous l’influence d’Éclair Croix.' }, - "fusionBolt": { - name: "Éclair Croix", - effect: "Projette un orbe électrique gigantesque. L’effet augmente sous l’influence de Flamme Croix." + 'fusionBolt': { + name: 'Éclair Croix', + effect: 'Projette un orbe électrique gigantesque. L’effet augmente sous l’influence de Flamme Croix.' }, - "flyingPress": { - name: "Flying Press", - effect: "Une attaque en piqué depuis le ciel, à la fois de type Combat et de type Vol." + 'flyingPress': { + name: 'Flying Press', + effect: 'Une attaque en piqué depuis le ciel, à la fois de type Combat et de type Vol.' }, - "matBlock": { - name: "Tatamigaeshi", - effect: "Retourne un tatami pour bloquer, comme avec un bouclier, les capacités visant le lanceur ou ses alliés. N’a pas d’effet sur les attaques de statut." + 'matBlock': { + name: 'Tatamigaeshi', + effect: 'Retourne un tatami pour bloquer, comme avec un bouclier, les capacités visant le lanceur ou ses alliés. N’a pas d’effet sur les attaques de statut.' }, - "belch": { - name: "Éructation", - effect: "Le lanceur se tourne vers la cible et lui éructe dessus, infligeant des dégâts. Ne fonctionne que si le lanceur consomme une Baie tenue." + 'belch': { + name: 'Éructation', + effect: 'Le lanceur se tourne vers la cible et lui éructe dessus, infligeant des dégâts. Ne fonctionne que si le lanceur consomme une Baie tenue.' }, - "rototiller": { - name: "Fertilisation", - effect: "Laboure le sol et le rend plus fertile. Augmente l’Attaque et l’Attaque Spéciale des Pokémon de type Plante." + 'rototiller': { + name: 'Fertilisation', + effect: 'Laboure le sol et le rend plus fertile. Augmente l’Attaque et l’Attaque Spéciale des Pokémon de type Plante.' }, - "stickyWeb": { - name: "Toile Gluante", - effect: "Le lanceur déploie une toile visqueuse autour de la cible qui ralentit la Vitesse de tout adversaire entrant au combat." + 'stickyWeb': { + name: 'Toile Gluante', + effect: 'Le lanceur déploie une toile visqueuse autour de la cible qui ralentit la Vitesse de tout adversaire entrant au combat.' }, - "fellStinger": { - name: "Dard Mortel", - effect: "Le lanceur augmente énormément son Attaque si une cible est mise K.O. par cette capacité." + 'fellStinger': { + name: 'Dard Mortel', + effect: 'Le lanceur augmente énormément son Attaque si une cible est mise K.O. par cette capacité.' }, - "phantomForce": { - name: "Hantise", - effect: "Le lanceur disparaît au premier tour et frappe au second. Cette attaque passe outre les protections." + 'phantomForce': { + name: 'Hantise', + effect: 'Le lanceur disparaît au premier tour et frappe au second. Cette attaque passe outre les protections.' }, - "trickOrTreat": { - name: "Halloween", - effect: "Insuffle à la cible l’esprit d’Halloween, et ajoute le type Spectre à ses types actuels." + 'trickOrTreat': { + name: 'Halloween', + effect: 'Insuffle à la cible l’esprit d’Halloween, et ajoute le type Spectre à ses types actuels.' }, - "nobleRoar": { - name: "Râle Mâle", - effect: "Le lanceur pousse un rugissement qui intimide la cible et diminue l’Attaque et l’Attaque Spéciale de celle-ci." + 'nobleRoar': { + name: 'Râle Mâle', + effect: 'Le lanceur pousse un rugissement qui intimide la cible et diminue l’Attaque et l’Attaque Spéciale de celle-ci.' }, - "ionDeluge": { - name: "Déluge Plasmique", - effect: "Diffuse des particules saturées d’électricité qui transforment les capacités de type Normal en capacités de type Électrik." + 'ionDeluge': { + name: 'Déluge Plasmique', + effect: 'Diffuse des particules saturées d’électricité qui transforment les capacités de type Normal en capacités de type Électrik.' }, - "parabolicCharge": { - name: "Parabocharge", - effect: "Inflige des dégâts à tous les Pokémon autour du lanceur. Il récupère en PV la moitié des dégâts infligés." + 'parabolicCharge': { + name: 'Parabocharge', + effect: 'Inflige des dégâts à tous les Pokémon autour du lanceur. Il récupère en PV la moitié des dégâts infligés.' }, - "forestsCurse": { - name: "Maléfice Sylvain", - effect: "La cible est charmée par l’esprit de la forêt. Le type Plante est ajouté à ses types actuels." + 'forestsCurse': { + name: 'Maléfice Sylvain', + effect: 'La cible est charmée par l’esprit de la forêt. Le type Plante est ajouté à ses types actuels.' }, - "petalBlizzard": { - name: "Tempête Florale", - effect: "Déclenche une violente tempête de fleurs qui inflige des dégâts à tous les Pokémon alentour." + 'petalBlizzard': { + name: 'Tempête Florale', + effect: 'Déclenche une violente tempête de fleurs qui inflige des dégâts à tous les Pokémon alentour.' }, - "freezeDry": { - name: "Lyophilisation", - effect: "Le lanceur refroidit violemment la cible et peut la geler (10% de chances). Super efficace sur les Pokémon de type Eau." + 'freezeDry': { + name: 'Lyophilisation', + effect: 'Le lanceur refroidit violemment la cible et peut la geler (10% de chances). Super efficace sur les Pokémon de type Eau.' }, - "disarmingVoice": { - name: "Voix Enjôleuse", - effect: "Le lanceur laisse s’échapper une voix enchanteresse qui inflige des dégâts psychiques à la cible. N’échoue jamais." + 'disarmingVoice': { + name: 'Voix Enjôleuse', + effect: 'Le lanceur laisse s’échapper une voix enchanteresse qui inflige des dégâts psychiques à la cible. N’échoue jamais.' }, - "partingShot": { - name: "Dernier Mot", - effect: "Le lanceur menace la cible dans une ultime tirade avant de changer de place avec un autre Pokémon. Réduit l’Attaque et l’Attaque Spéciale de la cible." + 'partingShot': { + name: 'Dernier Mot', + effect: 'Le lanceur menace la cible dans une ultime tirade avant de changer de place avec un autre Pokémon. Réduit l’Attaque et l’Attaque Spéciale de la cible.' }, - "topsyTurvy": { - name: "Renversement", - effect: "Inverse tous les changements de stats de la cible." + 'topsyTurvy': { + name: 'Renversement', + effect: 'Inverse tous les changements de stats de la cible.' }, - "drainingKiss": { - name: "Vampibaiser", - effect: "Le lanceur aspire la force vitale de la cible par un baiser qui rend au lanceur un nombre de PV supérieur ou égal à la moitié des dégâts infligés." + 'drainingKiss': { + name: 'Vampibaiser', + effect: 'Le lanceur aspire la force vitale de la cible par un baiser qui rend au lanceur un nombre de PV supérieur ou égal à la moitié des dégâts infligés.' }, - "craftyShield": { - name: "Vigilance", - effect: "Utilise une force mystérieuse pour protéger l’équipe des capacités de statut. Ne protège pas des autres capacités." + 'craftyShield': { + name: 'Vigilance', + effect: 'Utilise une force mystérieuse pour protéger l’équipe des capacités de statut. Ne protège pas des autres capacités.' }, - "flowerShield": { - name: "Garde Florale", - effect: "Grâce à une force mystérieuse, la Défense de tous les Pokémon Plante au combat augmente." + 'flowerShield': { + name: 'Garde Florale', + effect: 'Grâce à une force mystérieuse, la Défense de tous les Pokémon Plante au combat augmente.' }, - "grassyTerrain": { - name: "Champ Herbu", - effect: "Pendant cinq tours, les Pokémon au sol récupèrent quelques PV à chaque tour et la puissance des capacités de type Plante augmente." + 'grassyTerrain': { + name: 'Champ Herbu', + effect: 'Pendant cinq tours, les Pokémon au sol récupèrent quelques PV à chaque tour et la puissance des capacités de type Plante augmente.' }, - "mistyTerrain": { - name: "Champ Brumeux", - effect: "Pendant cinq tours, les Pokémon au sol ne peuvent pas subir d’altération de statut et les dégâts infligés par les capacités de type Dragon sont divisés par deux." + 'mistyTerrain': { + name: 'Champ Brumeux', + effect: 'Pendant cinq tours, les Pokémon au sol ne peuvent pas subir d’altération de statut et les dégâts infligés par les capacités de type Dragon sont divisés par deux.' }, - "electrify": { - name: "Électrisation", - effect: "Si le lanceur attaque avant la cible, les capacités de celle-ci seront de type Électrik jusqu’à la fin du tour." + 'electrify': { + name: 'Électrisation', + effect: 'Si le lanceur attaque avant la cible, les capacités de celle-ci seront de type Électrik jusqu’à la fin du tour.' }, - "playRough": { - name: "Câlinerie", - effect: "Le lanceur attaque la cible en lui faisant des câlineries, ce qui peut aussi diminuer l’Attaque de celle-ci." + 'playRough': { + name: 'Câlinerie', + effect: 'Le lanceur attaque la cible en lui faisant des câlineries, ce qui peut aussi diminuer l’Attaque de celle-ci.' }, - "fairyWind": { - name: "Vent Féérique", - effect: "Le lanceur déchaîne un vent magique qui cingle la cible." + 'fairyWind': { + name: 'Vent Féérique', + effect: 'Le lanceur déchaîne un vent magique qui cingle la cible.' }, - "moonblast": { - name: "Pouvoir Lunaire", - effect: "Le lanceur attaque la cible grâce au pouvoir de la lune, ce qui peut diminuer l’Attaque Spéciale de celle-ci." + 'moonblast': { + name: 'Pouvoir Lunaire', + effect: 'Le lanceur attaque la cible grâce au pouvoir de la lune, ce qui peut diminuer l’Attaque Spéciale de celle-ci.' }, - "boomburst": { - name: "Bang Sonique", - effect: "Attaque les Pokémon alentour grâce à une onde sonore assourdissante qui détruit tout sur son passage." + 'boomburst': { + name: 'Bang Sonique', + effect: 'Attaque les Pokémon alentour grâce à une onde sonore assourdissante qui détruit tout sur son passage.' }, - "fairyLock": { - name: "Verrou Enchanté", - effect: "Des chaînes entourent la zone de combat, empêchant tous les Pokémon de quitter le terrain au tour suivant." + 'fairyLock': { + name: 'Verrou Enchanté', + effect: 'Des chaînes entourent la zone de combat, empêchant tous les Pokémon de quitter le terrain au tour suivant.' }, - "kingsShield": { - name: "Bouclier Royal", - effect: "Prend une posture défensive pour bloquer les dégâts. Diminue beaucoup l’Attaque de tout Pokémon qui entre en contact avec le lanceur." + 'kingsShield': { + name: 'Bouclier Royal', + effect: 'Prend une posture défensive pour bloquer les dégâts. Diminue beaucoup l’Attaque de tout Pokémon qui entre en contact avec le lanceur.' }, - "playNice": { - name: "Camaraderie", - effect: "La cible se lie d’amitié avec le lanceur et perd sa combativité, ce qui diminue son Attaque." + 'playNice': { + name: 'Camaraderie', + effect: 'La cible se lie d’amitié avec le lanceur et perd sa combativité, ce qui diminue son Attaque.' }, - "confide": { - name: "Confidence", - effect: "Le lanceur dévoile des secrets à la cible, qui perd alors sa concentration et voit son Attaque Spéciale diminuer." + 'confide': { + name: 'Confidence', + effect: 'Le lanceur dévoile des secrets à la cible, qui perd alors sa concentration et voit son Attaque Spéciale diminuer.' }, - "diamondStorm": { - name: "Orage Adamantin", - effect: "Provoque une tempête de diamants qui inflige des dégâts. Peut beaucoup augmenter la Défense du lanceur." + 'diamondStorm': { + name: 'Orage Adamantin', + effect: 'Provoque une tempête de diamants qui inflige des dégâts. Peut beaucoup augmenter la Défense du lanceur.' }, - "steamEruption": { - name: "Jet de Vapeur", - effect: "Le lanceur projette de la vapeur extrêmement chaude sur la cible, ce qui peut aussi la brûler (30% de chances)." + 'steamEruption': { + name: 'Jet de Vapeur', + effect: 'Le lanceur projette de la vapeur extrêmement chaude sur la cible, ce qui peut aussi la brûler (30% de chances).' }, - "hyperspaceHole": { - name: "TrouDimensionnel", - effect: "Le lanceur crée une faille dimensionnelle pour attaquer soudainement la cible de côté. Ignore même les capacités comme Abri ou Détection." + 'hyperspaceHole': { + name: 'TrouDimensionnel', + effect: 'Le lanceur crée une faille dimensionnelle pour attaquer soudainement la cible de côté. Ignore même les capacités comme Abri ou Détection.' }, - "waterShuriken": { - name: "Sheauriken", - effect: "Le lanceur attaque la cible avec des shuriken de mucus. Cette capacité frappe en priorité deux à cinq fois d’affilée en un tour." + 'waterShuriken': { + name: 'Sheauriken', + effect: 'Le lanceur attaque la cible avec des shuriken de mucus. Cette capacité frappe en priorité deux à cinq fois d’affilée en un tour.' }, - "mysticalFire": { - name: "Feu Ensorcelé", - effect: "Le lanceur attaque en soufflant des flammes brûlantes par la bouche et diminue l’Attaque Spéciale de la cible." + 'mysticalFire': { + name: 'Feu Ensorcelé', + effect: 'Le lanceur attaque en soufflant des flammes brûlantes par la bouche et diminue l’Attaque Spéciale de la cible.' }, - "spikyShield": { - name: "Pico-Défense", - effect: "Protège des attaques, et diminue les PV de tout assaillant qui entre en contact avec le lanceur." + 'spikyShield': { + name: 'Pico-Défense', + effect: 'Protège des attaques, et diminue les PV de tout assaillant qui entre en contact avec le lanceur.' }, - "aromaticMist": { - name: "Brume Capiteuse", - effect: "Grâce à un parfum mystérieux, augmente la Défense Spéciale d’un allié." + 'aromaticMist': { + name: 'Brume Capiteuse', + effect: 'Grâce à un parfum mystérieux, augmente la Défense Spéciale d’un allié.' }, - "eerieImpulse": { - name: "Ondes Étranges", - effect: "Le corps du lanceur produit des ondes anormales qui enveloppent la cible et diminuent beaucoup son Attaque Spéciale." + 'eerieImpulse': { + name: 'Ondes Étranges', + effect: 'Le corps du lanceur produit des ondes anormales qui enveloppent la cible et diminuent beaucoup son Attaque Spéciale.' }, - "venomDrench": { - name: "Piège de Venin", - effect: "Sécrète un liquide empoisonné. Diminue l’Attaque, l’Attaque Spéciale et la Vitesse de l’ennemi empoisonné." + 'venomDrench': { + name: 'Piège de Venin', + effect: 'Sécrète un liquide empoisonné. Diminue l’Attaque, l’Attaque Spéciale et la Vitesse de l’ennemi empoisonné.' }, - "powder": { - name: "Nuée de Poudre", - effect: "L’ennemi est pris dans un nuage de poudre. S’il utilise une capacité de type Feu lors du même tour, le nuage explose et lui inflige des dégâts." + 'powder': { + name: 'Nuée de Poudre', + effect: 'L’ennemi est pris dans un nuage de poudre. S’il utilise une capacité de type Feu lors du même tour, le nuage explose et lui inflige des dégâts.' }, - "geomancy": { - name: "Géo-Contrôle", - effect: "Le lanceur absorbe de l’énergie au premier tour et augmente beaucoup son Attaque Spéciale, sa Défense Spéciale et sa Vitesse au second." + 'geomancy': { + name: 'Géo-Contrôle', + effect: 'Le lanceur absorbe de l’énergie au premier tour et augmente beaucoup son Attaque Spéciale, sa Défense Spéciale et sa Vitesse au second.' }, - "magneticFlux": { - name: "Magné-Contrôle", - effect: "Manipule les champs magnétiques pour augmenter la Défense et la Défense Spéciale des Pokémon alliés dotés du talent Plus ou du talent Moins." + 'magneticFlux': { + name: 'Magné-Contrôle', + effect: 'Manipule les champs magnétiques pour augmenter la Défense et la Défense Spéciale des Pokémon alliés dotés du talent Plus ou du talent Moins.' }, - "happyHour": { - name: "Étrennes", - effect: "Utilisée pendant un combat, multiplie par deux l’argent gagné à la fin." + 'happyHour': { + name: 'Étrennes', + effect: 'Utilisée pendant un combat, multiplie par deux l’argent gagné à la fin.' }, - "electricTerrain": { - name: "Champ Électrifié", - effect: "Pendant cinq tours, le terrain se charge d’électricité. Les Pokémon au sol ne peuvent pas s’endormir et la puissance des capacités de type Électrik augmente." + 'electricTerrain': { + name: 'Champ Électrifié', + effect: 'Pendant cinq tours, le terrain se charge d’électricité. Les Pokémon au sol ne peuvent pas s’endormir et la puissance des capacités de type Électrik augmente.' }, - "dazzlingGleam": { - name: "Éclat Magique", - effect: "Le lanceur libère une puissante décharge lumineuse qui inflige des dégâts à l’ennemi." + 'dazzlingGleam': { + name: 'Éclat Magique', + effect: 'Le lanceur libère une puissante décharge lumineuse qui inflige des dégâts à l’ennemi.' }, - "celebrate": { - name: "Célébration", - effect: "Le Pokémon vous souhaite plein de bonnes choses pour cet évènement spécial." + 'celebrate': { + name: 'Célébration', + effect: 'Le Pokémon vous souhaite plein de bonnes choses pour cet évènement spécial.' }, - "holdHands": { - name: "Mains Jointes", - effect: "Le lanceur et un allié se prennent la main, ce qui les rend heureux." + 'holdHands': { + name: 'Mains Jointes', + effect: 'Le lanceur et un allié se prennent la main, ce qui les rend heureux.' }, - "babyDollEyes": { - name: "Regard Touchant", - effect: "Le lanceur fixe la cible d’un air très attendrissant qui la touche et diminue son Attaque. Agit en priorité." + 'babyDollEyes': { + name: 'Regard Touchant', + effect: 'Le lanceur fixe la cible d’un air très attendrissant qui la touche et diminue son Attaque. Agit en priorité.' }, - "nuzzle": { - name: "Frotte-Frimousse", - effect: "Le lanceur attaque en frottant ses bajoues chargées d’électricité, ce qui paralyse la cible." + 'nuzzle': { + name: 'Frotte-Frimousse', + effect: 'Le lanceur attaque en frottant ses bajoues chargées d’électricité, ce qui paralyse la cible.' }, - "holdBack": { - name: "Retenue", - effect: "Le lanceur attaque avec retenue, et laisse au moins 1 PV à la cible." + 'holdBack': { + name: 'Retenue', + effect: 'Le lanceur attaque avec retenue, et laisse au moins 1 PV à la cible.' }, - "infestation": { - name: "Harcèlement", - effect: "Cette attaque perdure pendant quatre à cinq tours. La cible ne peut pas quitter le terrain pendant cette période." + 'infestation': { + name: 'Harcèlement', + effect: 'Cette attaque perdure pendant quatre à cinq tours. La cible ne peut pas quitter le terrain pendant cette période.' }, - "powerUpPunch": { - name: "Poing Boost", - effect: "À force de frapper, les poings deviennent plus durs. Augmente l’Attaque du lanceur si l’ennemi est touché." + 'powerUpPunch': { + name: 'Poing Boost', + effect: 'À force de frapper, les poings deviennent plus durs. Augmente l’Attaque du lanceur si l’ennemi est touché.' }, - "oblivionWing": { - name: "Mort’Ailes", - effect: "Vole l’énergie de la cible. Rend au lanceur un nombre de PV supérieur ou égal à la moitié des dégâts infligés." + 'oblivionWing': { + name: 'Mort’Ailes', + effect: 'Vole l’énergie de la cible. Rend au lanceur un nombre de PV supérieur ou égal à la moitié des dégâts infligés.' }, - "thousandArrows": { - name: "Myria-Flèches", - effect: "Touche même les Pokémon dans les airs. Dans ce cas, la cible retombe au sol." + 'thousandArrows': { + name: 'Myria-Flèches', + effect: 'Touche même les Pokémon dans les airs. Dans ce cas, la cible retombe au sol.' }, - "thousandWaves": { - name: "Myria-Vagues", - effect: "Attaque avec des vagues glissant au sol. L’ennemi pris dedans ne peut pas s’échapper." + 'thousandWaves': { + name: 'Myria-Vagues', + effect: 'Attaque avec des vagues glissant au sol. L’ennemi pris dedans ne peut pas s’échapper.' }, - "landsWrath": { - name: "Force Chtonienne", - effect: "Utilise la puissance du sol et la concentre sur l’ennemi pour infliger des dégâts." + 'landsWrath': { + name: 'Force Chtonienne', + effect: 'Utilise la puissance du sol et la concentre sur l’ennemi pour infliger des dégâts.' }, - "lightOfRuin": { - name: "Lumière du Néant", - effect: "Utilise la puissance de la fleur Éternelle pour lancer un formidable rayon d’énergie. Blesse aussi gravement le lanceur." + 'lightOfRuin': { + name: 'Lumière du Néant', + effect: 'Utilise la puissance de la fleur Éternelle pour lancer un formidable rayon d’énergie. Blesse aussi gravement le lanceur.' }, - "originPulse": { - name: "Onde Originelle", - effect: "Le lanceur projette une aura, et d’innombrables rayons lumineux d’un bleu étincelant s’abattent sur la cible." + 'originPulse': { + name: 'Onde Originelle', + effect: 'Le lanceur projette une aura, et d’innombrables rayons lumineux d’un bleu étincelant s’abattent sur la cible.' }, - "precipiceBlades": { - name: "Lame Pangéenne", - effect: "Le Pokémon transforme la puissance de la terre et attaque la cible avec une lame acérée." + 'precipiceBlades': { + name: 'Lame Pangéenne', + effect: 'Le Pokémon transforme la puissance de la terre et attaque la cible avec une lame acérée.' }, - "dragonAscent": { - name: "Draco-Ascension", - effect: "Le Pokémon s’abat à toute vitesse sur la cible depuis les hautes couches de l’atmosphère. Baisse la Défense et la Défense Spéciale du lanceur." + 'dragonAscent': { + name: 'Draco-Ascension', + effect: 'Le Pokémon s’abat à toute vitesse sur la cible depuis les hautes couches de l’atmosphère. Baisse la Défense et la Défense Spéciale du lanceur.' }, - "hyperspaceFury": { - name: "Furie Dimension", - effect: "Le Pokémon utilise sa multitude de bras pour infliger une nuée de coups qui ignorent les capacités telles qu’Abri ou Détection. Baisse la Défense du lanceur." + 'hyperspaceFury': { + name: 'Furie Dimension', + effect: 'Le Pokémon utilise sa multitude de bras pour infliger une nuée de coups qui ignorent les capacités telles qu’Abri ou Détection. Baisse la Défense du lanceur.' }, - "breakneckBlitzPhysical": { - name: "Turbo-Charge Bulldozer", - effect: "Le Pokémon utilise la Force Z pour s’élancer à toute vitesse sur l’adversaire. La puissance varie selon celle de la capacité originale." + 'breakneckBlitzPhysical': { + name: 'Turbo-Charge Bulldozer', + effect: 'Le Pokémon utilise la Force Z pour s’élancer à toute vitesse sur l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "breakneckBlitzSpecial": { - name: "Turbo-Charge Bulldozer", - effect: "Dummy Data" + 'breakneckBlitzSpecial': { + name: 'Turbo-Charge Bulldozer', + effect: 'Dummy Data' }, - "allOutPummelingPhysical": { - name: "Combo Hyper-Furie", - effect: "Le Pokémon utilise la Force Z pour créer une boule d’énergie qu’il projette sur l’adversaire. La puissance varie selon celle de la capacité originale." + 'allOutPummelingPhysical': { + name: 'Combo Hyper-Furie', + effect: 'Le Pokémon utilise la Force Z pour créer une boule d’énergie qu’il projette sur l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "allOutPummelingSpecial": { - name: "Combo Hyper-Furie", - effect: "Dummy Data" + 'allOutPummelingSpecial': { + name: 'Combo Hyper-Furie', + effect: 'Dummy Data' }, - "supersonicSkystrikePhysical": { - name: "Piqué Supersonique", - effect: "Le Pokémon utilise la Force Z pour s’envoler très haut dans le ciel avant de plonger sur l’adversaire. La puissance varie selon celle de la capacité originale." + 'supersonicSkystrikePhysical': { + name: 'Piqué Supersonique', + effect: 'Le Pokémon utilise la Force Z pour s’envoler très haut dans le ciel avant de plonger sur l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "supersonicSkystrikeSpecial": { - name: "Piqué Supersonique", - effect: "Dummy Data" + 'supersonicSkystrikeSpecial': { + name: 'Piqué Supersonique', + effect: 'Dummy Data' }, - "acidDownpourPhysical": { - name: "Déluge Causti-Toxique", - effect: "Le Pokémon utilise la Force Z pour répandre un marécage empoisonné où l’adversaire sombre. La puissance varie selon celle de la capacité originale." + 'acidDownpourPhysical': { + name: 'Déluge Causti-Toxique', + effect: 'Le Pokémon utilise la Force Z pour répandre un marécage empoisonné où l’adversaire sombre. La puissance varie selon celle de la capacité originale.' }, - "acidDownpourSpecial": { - name: "Déluge Causti-Toxique", - effect: "Dummy Data" + 'acidDownpourSpecial': { + name: 'Déluge Causti-Toxique', + effect: 'Dummy Data' }, - "tectonicRagePhysical": { - name: "Éruption Géo-Sismique", - effect: "Le Pokémon utilise la Force Z pour entraîner l’adversaire dans les profondeurs de la terre. La puissance varie selon celle de la capacité originale." + 'tectonicRagePhysical': { + name: 'Éruption Géo-Sismique', + effect: 'Le Pokémon utilise la Force Z pour entraîner l’adversaire dans les profondeurs de la terre. La puissance varie selon celle de la capacité originale.' }, - "tectonicRageSpecial": { - name: "Éruption Géo-Sismique", - effect: "Dummy Data" + 'tectonicRageSpecial': { + name: 'Éruption Géo-Sismique', + effect: 'Dummy Data' }, - "continentalCrushPhysical": { - name: "Apocalypse Gigalithique", - effect: "Le Pokémon utilise la Force Z pour créer un immense rocher et écraser l’adversaire avec. La puissance varie selon celle de la capacité originale." + 'continentalCrushPhysical': { + name: 'Apocalypse Gigalithique', + effect: 'Le Pokémon utilise la Force Z pour créer un immense rocher et écraser l’adversaire avec. La puissance varie selon celle de la capacité originale.' }, - "continentalCrushSpecial": { - name: "Apocalypse Gigalithique", - effect: "Dummy Data" + 'continentalCrushSpecial': { + name: 'Apocalypse Gigalithique', + effect: 'Dummy Data' }, - "savageSpinOutPhysical": { - name: "Cocon Fatal", - effect: "Le Pokémon utilise la Force Z pour cracher de longs fils de soie et enserrer l’adversaire. La puissance varie selon celle de la capacité originale." + 'savageSpinOutPhysical': { + name: 'Cocon Fatal', + effect: 'Le Pokémon utilise la Force Z pour cracher de longs fils de soie et enserrer l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "savageSpinOutSpecial": { - name: "Cocon Fatal", - effect: "Dummy Data" + 'savageSpinOutSpecial': { + name: 'Cocon Fatal', + effect: 'Dummy Data' }, - "neverEndingNightmarePhysical": { - name: "Appel des Ombres Éternelles", - effect: "Le Pokémon utilise la Force Z pour invoquer des esprits rancuniers qui s’abattent sur l’adversaire. La puissance varie selon celle de la capacité originale." + 'neverEndingNightmarePhysical': { + name: 'Appel des Ombres Éternelles', + effect: 'Le Pokémon utilise la Force Z pour invoquer des esprits rancuniers qui s’abattent sur l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "neverEndingNightmareSpecial": { - name: "Appel des Ombres Éternelles", - effect: "Dummy Data" + 'neverEndingNightmareSpecial': { + name: 'Appel des Ombres Éternelles', + effect: 'Dummy Data' }, - "corkscrewCrashPhysical": { - name: "Vrille Maximum", - effect: "Le Pokémon utilise la Force Z pour tourner à toute vitesse et écraser l’adversaire. La puissance varie selon celle de la capacité originale." + 'corkscrewCrashPhysical': { + name: 'Vrille Maximum', + effect: 'Le Pokémon utilise la Force Z pour tourner à toute vitesse et écraser l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "corkscrewCrashSpecial": { - name: "Vrille Maximum", - effect: "Dummy Data" + 'corkscrewCrashSpecial': { + name: 'Vrille Maximum', + effect: 'Dummy Data' }, - "infernoOverdrivePhysical": { - name: "Pyro-Explosion Cataclysmique", - effect: "Le Pokémon utilise la Force Z pour cracher une boule de feu qui réduit l’adversaire en cendres. La puissance varie selon celle de la capacité originale." + 'infernoOverdrivePhysical': { + name: 'Pyro-Explosion Cataclysmique', + effect: 'Le Pokémon utilise la Force Z pour cracher une boule de feu qui réduit l’adversaire en cendres. La puissance varie selon celle de la capacité originale.' }, - "infernoOverdriveSpecial": { - name: "Pyro-Explosion Cataclysmique", - effect: "Dummy Data" + 'infernoOverdriveSpecial': { + name: 'Pyro-Explosion Cataclysmique', + effect: 'Dummy Data' }, - "hydroVortexPhysical": { - name: "Super Tourbillon Abyssal", - effect: "Le Pokémon utilise la Force Z pour créer un tourbillon gigantesque qui avale l’adversaire. La puissance varie selon celle de la capacité originale." + 'hydroVortexPhysical': { + name: 'Super Tourbillon Abyssal', + effect: 'Le Pokémon utilise la Force Z pour créer un tourbillon gigantesque qui avale l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "hydroVortexSpecial": { - name: "Super Tourbillon Abyssal", - effect: "Dummy Data" + 'hydroVortexSpecial': { + name: 'Super Tourbillon Abyssal', + effect: 'Dummy Data' }, - "bloomDoomPhysical": { - name: "Pétalexplosion Éblouissante", - effect: "Le Pokémon utilise la Force Z pour libérer l’énergie des plantes et attaquer l’adversaire. La puissance varie selon celle de la capacité originale." + 'bloomDoomPhysical': { + name: 'Pétalexplosion Éblouissante', + effect: 'Le Pokémon utilise la Force Z pour libérer l’énergie des plantes et attaquer l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "bloomDoomSpecial": { - name: "Pétalexplosion Éblouissante", - effect: "Dummu Data" + 'bloomDoomSpecial': { + name: 'Pétalexplosion Éblouissante', + effect: 'Dummu Data' }, - "gigavoltHavocPhysical": { - name: "Fulguro-Lance Gigavolt", - effect: "Le Pokémon utilise la Force Z pour générer un courant électrique puissant qu’il projette sur l’adversaire. La puissance varie selon celle de la capacité originale." + 'gigavoltHavocPhysical': { + name: 'Fulguro-Lance Gigavolt', + effect: 'Le Pokémon utilise la Force Z pour générer un courant électrique puissant qu’il projette sur l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "gigavoltHavocSpecial": { - name: "Fulguro-Lance Gigavolt", - effect: "Dummy Data" + 'gigavoltHavocSpecial': { + name: 'Fulguro-Lance Gigavolt', + effect: 'Dummy Data' }, - "shatteredPsychePhysical": { - name: "Psycho-Pulvérisation EX", - effect: "Le Pokémon utilise la Force Z pour manipuler l’adversaire et lui infliger de sérieux dégâts. La puissance varie selon celle de la capacité originale." + 'shatteredPsychePhysical': { + name: 'Psycho-Pulvérisation EX', + effect: 'Le Pokémon utilise la Force Z pour manipuler l’adversaire et lui infliger de sérieux dégâts. La puissance varie selon celle de la capacité originale.' }, - "shatteredPsycheSpecial": { - name: "Psycho-Pulvérisation EX", - effect: "Dummy Data" + 'shatteredPsycheSpecial': { + name: 'Psycho-Pulvérisation EX', + effect: 'Dummy Data' }, - "subzeroSlammerPhysical": { - name: "Laser Cryogénique", - effect: "Le Pokémon utilise la Force Z pour baisser la température brutalement et congeler l’adversaire. La puissance varie selon celle de la capacité originale." + 'subzeroSlammerPhysical': { + name: 'Laser Cryogénique', + effect: 'Le Pokémon utilise la Force Z pour baisser la température brutalement et congeler l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "subzeroSlammerSpecial": { - name: "Laser Cryogénique", - effect: "Dummy Data" + 'subzeroSlammerSpecial': { + name: 'Laser Cryogénique', + effect: 'Dummy Data' }, - "devastatingDrakePhysical": { - name: "Chaos Draconique", - effect: "Le Pokémon utilise la Force Z pour matérialiser son aura et assaillir l’adversaire. La puissance varie selon celle de la capacité originale." + 'devastatingDrakePhysical': { + name: 'Chaos Draconique', + effect: 'Le Pokémon utilise la Force Z pour matérialiser son aura et assaillir l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "devastatingDrakeSpecial": { - name: "Chaos Draconique", - effect: "Dummy Data" + 'devastatingDrakeSpecial': { + name: 'Chaos Draconique', + effect: 'Dummy Data' }, - "blackHoleEclipsePhysical": { - name: "Trou Noir des Ombres", - effect: "Le Pokémon utilise la Force Z pour rassembler l’énergie négative et y aspirer l’adversaire. La puissance varie selon celle de la capacité originale." + 'blackHoleEclipsePhysical': { + name: 'Trou Noir des Ombres', + effect: 'Le Pokémon utilise la Force Z pour rassembler l’énergie négative et y aspirer l’adversaire. La puissance varie selon celle de la capacité originale.' }, - "blackHoleEclipseSpecial": { - name: "Trou Noir des Ombres", - effect: "Dummy Data" + 'blackHoleEclipseSpecial': { + name: 'Trou Noir des Ombres', + effect: 'Dummy Data' }, - "twinkleTacklePhysical": { - name: "Impact Choupinova", - effect: "Le Pokémon utilise la Force Z pour créer une dimension irréelle où l’adversaire est à sa merci. La puissance varie selon celle de la capacité originale." + 'twinkleTacklePhysical': { + name: 'Impact Choupinova', + effect: 'Le Pokémon utilise la Force Z pour créer une dimension irréelle où l’adversaire est à sa merci. La puissance varie selon celle de la capacité originale.' }, - "twinkleTackleSpecial": { - name: "Impact Choupinova", - effect: "Dummy Data" + 'twinkleTackleSpecial': { + name: 'Impact Choupinova', + effect: 'Dummy Data' }, - "catastropika": { - name: "Pikachute Foudroyante", - effect: "Pikachu utilise la Force Z pour concentrer toute son électricité avant de se jeter à toute vitesse sur l’adversaire." + 'catastropika': { + name: 'Pikachute Foudroyante', + effect: 'Pikachu utilise la Force Z pour concentrer toute son électricité avant de se jeter à toute vitesse sur l’adversaire.' }, - "shoreUp": { - name: "Amass’Sable", - effect: "Le lanceur récupère jusqu’à la moitié de ses PV max. Durant une tempête de sable, il en récupère encore plus." + 'shoreUp': { + name: 'Amass’Sable', + effect: 'Le lanceur récupère jusqu’à la moitié de ses PV max. Durant une tempête de sable, il en récupère encore plus.' }, - "firstImpression": { - name: "Escarmouche", - effect: "Une capacité très puissante, mais qui ne fonctionne que lorsque le lanceur entre au combat." + 'firstImpression': { + name: 'Escarmouche', + effect: 'Une capacité très puissante, mais qui ne fonctionne que lorsque le lanceur entre au combat.' }, - "banefulBunker": { - name: "Blockhaus", - effect: "Le lanceur se protège contre les attaques, et si un assaillant utilise une attaque directe contre lui, il l’empoisonne." + 'banefulBunker': { + name: 'Blockhaus', + effect: 'Le lanceur se protège contre les attaques, et si un assaillant utilise une attaque directe contre lui, il l’empoisonne.' }, - "spiritShackle": { - name: "Tisse Ombre", - effect: "Une attaque qui coud la cible à son ombre, ce qui l’empêche de s’enfuir." + 'spiritShackle': { + name: 'Tisse Ombre', + effect: 'Une attaque qui coud la cible à son ombre, ce qui l’empêche de s’enfuir.' }, - "darkestLariat": { - name: "Dark Lariat", - effect: "Le lanceur étend les bras et frappe l’adversaire en tournant violemment. Il inflige des dégâts et ignore les changements de stats de la cible." + 'darkestLariat': { + name: 'Dark Lariat', + effect: 'Le lanceur étend les bras et frappe l’adversaire en tournant violemment. Il inflige des dégâts et ignore les changements de stats de la cible.' }, - "sparklingAria": { - name: "Aria de l’Écume", - effect: "Le lanceur émet plusieurs bulles en chantant. Soigne les brûlures des Pokémon touchés par ces bulles." + 'sparklingAria': { + name: 'Aria de l’Écume', + effect: 'Le lanceur émet plusieurs bulles en chantant. Soigne les brûlures des Pokémon touchés par ces bulles.' }, - "iceHammer": { - name: "Marteau de Glace", - effect: "Le lanceur donne un puissant coup de poing à la cible, ce qui réduit la Vitesse du lanceur." + 'iceHammer': { + name: 'Marteau de Glace', + effect: 'Le lanceur donne un puissant coup de poing à la cible, ce qui réduit la Vitesse du lanceur.' }, - "floralHealing": { - name: "Soin Floral", - effect: "Rend la moitié de ses PV max à la cible. Plus efficace sur un Champ Herbu." + 'floralHealing': { + name: 'Soin Floral', + effect: 'Rend la moitié de ses PV max à la cible. Plus efficace sur un Champ Herbu.' }, - "highHorsepower": { - name: "Cavalerie Lourde", - effect: "Le lanceur attaque violemment en utilisant tout son poids." + 'highHorsepower': { + name: 'Cavalerie Lourde', + effect: 'Le lanceur attaque violemment en utilisant tout son poids.' }, - "strengthSap": { - name: "Vole-Force", - effect: "Rend au lanceur une quantité de PV équivalente à la stat d’Attaque de la cible, puis baisse celle-ci." + 'strengthSap': { + name: 'Vole-Force', + effect: 'Rend au lanceur une quantité de PV équivalente à la stat d’Attaque de la cible, puis baisse celle-ci.' }, - "solarBlade": { - name: "Lame Solaire", - effect: "Le lanceur absorbe une grande quantité de lumière au premier tour et attaque au second tour en libérant cette énergie sous la forme d’une lame." + 'solarBlade': { + name: 'Lame Solaire', + effect: 'Le lanceur absorbe une grande quantité de lumière au premier tour et attaque au second tour en libérant cette énergie sous la forme d’une lame.' }, - "leafage": { - name: "Feuillage", - effect: "Le lanceur attaque la cible avec des feuilles." + 'leafage': { + name: 'Feuillage', + effect: 'Le lanceur attaque la cible avec des feuilles.' }, - "spotlight": { - name: "Projecteur", - effect: "Met un Pokémon sous le feu des projecteurs et force tout le monde à le viser." + 'spotlight': { + name: 'Projecteur', + effect: 'Met un Pokémon sous le feu des projecteurs et force tout le monde à le viser.' }, - "toxicThread": { - name: "Fil Toxique", - effect: "Tisse un fil imprégné de venin. Empoisonne la cible et baisse sa Vitesse." + 'toxicThread': { + name: 'Fil Toxique', + effect: 'Tisse un fil imprégné de venin. Empoisonne la cible et baisse sa Vitesse.' }, - "laserFocus": { - name: "Affilage", - effect: "Le lanceur se concentre pour être sûr de porter un coup critique au tour suivant." + 'laserFocus': { + name: 'Affilage', + effect: 'Le lanceur se concentre pour être sûr de porter un coup critique au tour suivant.' }, - "gearUp": { - name: "Engrenage", - effect: "Change de réglage pour augmenter l’Attaque et l’Attaque Spéciale des alliés ayant les talents Plus ou Minus." + 'gearUp': { + name: 'Engrenage', + effect: 'Change de réglage pour augmenter l’Attaque et l’Attaque Spéciale des alliés ayant les talents Plus ou Minus.' }, - "throatChop": { - name: "Exécu-Son", - effect: "Inflige une douleur tellement violente à la cible qu’elle ne peut plus émettre de sons pendant deux tours." + 'throatChop': { + name: 'Exécu-Son', + effect: 'Inflige une douleur tellement violente à la cible qu’elle ne peut plus émettre de sons pendant deux tours.' }, - "pollenPuff": { - name: "Boule Pollen", - effect: "Sur un ennemi, le lanceur envoie une boule explosive qui fait des dégâts. Sur un allié, il envoie du bon pollen nutritif qui fait récupérer des PV." + 'pollenPuff': { + name: 'Boule Pollen', + effect: 'Sur un ennemi, le lanceur envoie une boule explosive qui fait des dégâts. Sur un allié, il envoie du bon pollen nutritif qui fait récupérer des PV.' }, - "anchorShot": { - name: "Ancrage", - effect: "Le lanceur jette son ancre sur la cible pour l’attaquer. Une fois accrochée, elle l’empêche de s’enfuir." + 'anchorShot': { + name: 'Ancrage', + effect: 'Le lanceur jette son ancre sur la cible pour l’attaquer. Une fois accrochée, elle l’empêche de s’enfuir.' }, - "psychicTerrain": { - name: "Champ Psychique", - effect: "Pendant cinq tours, les Pokémon au sol ne peuvent plus subir d’attaques prioritaires et la puissance des capacités de type Psy augmente." + 'psychicTerrain': { + name: 'Champ Psychique', + effect: 'Pendant cinq tours, les Pokémon au sol ne peuvent plus subir d’attaques prioritaires et la puissance des capacités de type Psy augmente.' }, - "lunge": { - name: "Furie-Bond", - effect: "Le lanceur se jette sur la cible de toutes ses forces pour lui infliger des dégâts et baisser son Attaque." + 'lunge': { + name: 'Furie-Bond', + effect: 'Le lanceur se jette sur la cible de toutes ses forces pour lui infliger des dégâts et baisser son Attaque.' }, - "fireLash": { - name: "Fouet de Feu", - effect: "Frappe la cible avec un fouet incandescent et baisse sa Défense." + 'fireLash': { + name: 'Fouet de Feu', + effect: 'Frappe la cible avec un fouet incandescent et baisse sa Défense.' }, - "powerTrip": { - name: "Arrogance", - effect: "Ivre de puissance, le lanceur attaque de toutes ses forces. Plus ses stats ont été augmentées, plus la puissance de cette capacité augmente." + 'powerTrip': { + name: 'Arrogance', + effect: 'Ivre de puissance, le lanceur attaque de toutes ses forces. Plus ses stats ont été augmentées, plus la puissance de cette capacité augmente.' }, - "burnUp": { - name: "Flamme Ultime", - effect: "Le Pokémon se consume et les flammes de son corps infligent des dégâts élevés à la cible. Le lanceur perd le type Feu." + 'burnUp': { + name: 'Flamme Ultime', + effect: 'Le Pokémon se consume et les flammes de son corps infligent des dégâts élevés à la cible. Le lanceur perd le type Feu.' }, - "speedSwap": { - name: "Permuvitesse", - effect: "Intervertit la Vitesse du lanceur et celle de la cible." + 'speedSwap': { + name: 'Permuvitesse', + effect: 'Intervertit la Vitesse du lanceur et celle de la cible.' }, - "smartStrike": { - name: "Estocorne", - effect: "Le lanceur transperce la cible avec sa corne effilée. N’échoue jamais." + 'smartStrike': { + name: 'Estocorne', + effect: 'Le lanceur transperce la cible avec sa corne effilée. N’échoue jamais.' }, - "purify": { - name: "Purification", - effect: "Le lanceur soigne les altérations de statut de la cible, ce qui lui permet de regagner des PV." + 'purify': { + name: 'Purification', + effect: 'Le lanceur soigne les altérations de statut de la cible, ce qui lui permet de regagner des PV.' }, - "revelationDance": { - name: "Danse Éveil", - effect: "Le lanceur attaque en dansant avec enthousiasme. Le type de la capacité est le même que celui du lanceur." + 'revelationDance': { + name: 'Danse Éveil', + effect: 'Le lanceur attaque en dansant avec enthousiasme. Le type de la capacité est le même que celui du lanceur.' }, - "coreEnforcer": { - name: "Sanction Suprême", - effect: "La cible subit des dégâts et, si elle a déjà agi à ce tour, elle perd aussi son talent." + 'coreEnforcer': { + name: 'Sanction Suprême', + effect: 'La cible subit des dégâts et, si elle a déjà agi à ce tour, elle perd aussi son talent.' }, - "tropKick": { - name: "Botte Sucrette", - effect: "Un coup de pied chaud comme les tropiques qui inflige des dégâts à la cible et baisse son Attaque." + 'tropKick': { + name: 'Botte Sucrette', + effect: 'Un coup de pied chaud comme les tropiques qui inflige des dégâts à la cible et baisse son Attaque.' }, - "instruct": { - name: "Sommation", - effect: "Force la cible à lancer immédiatement la dernière capacité qu’elle a utilisée." + 'instruct': { + name: 'Sommation', + effect: 'Force la cible à lancer immédiatement la dernière capacité qu’elle a utilisée.' }, - "beakBlast": { - name: "Bec-Canon", - effect: "Le lanceur fait chauffer son bec avant d’attaquer. S’il subit une attaque directe pendant la montée en température, l’attaquant sera brûlé." + 'beakBlast': { + name: 'Bec-Canon', + effect: 'Le lanceur fait chauffer son bec avant d’attaquer. S’il subit une attaque directe pendant la montée en température, l’attaquant sera brûlé.' }, - "clangingScales": { - name: "Vibrécaille", - effect: "Le lanceur déclenche un vacarme en frottant ses écailles les unes contre les autres pour attaquer. Baisse la Défense du lanceur." + 'clangingScales': { + name: 'Vibrécaille', + effect: 'Le lanceur déclenche un vacarme en frottant ses écailles les unes contre les autres pour attaquer. Baisse la Défense du lanceur.' }, - "dragonHammer": { - name: "Draco-Marteau", - effect: "Le lanceur utilise son corps comme un véritable marteau pour écraser la cible." + 'dragonHammer': { + name: 'Draco-Marteau', + effect: 'Le lanceur utilise son corps comme un véritable marteau pour écraser la cible.' }, - "brutalSwing": { - name: "Centrifugifle", - effect: "Le lanceur pivote pour prendre de l’élan et infliger des dégâts." + 'brutalSwing': { + name: 'Centrifugifle', + effect: 'Le lanceur pivote pour prendre de l’élan et infliger des dégâts.' }, - "auroraVeil": { - name: "Voile Aurore", - effect: "Réduit les dégâts causés par les capacités physiques et spéciales durant cinq tours. Ne peut être utilisée que lorsqu’il neige." + 'auroraVeil': { + name: 'Voile Aurore', + effect: 'Réduit les dégâts causés par les capacités physiques et spéciales durant cinq tours. Ne peut être utilisée que lorsqu’il neige.' }, - "sinisterArrowRaid": { - name: "Fureur des Plumes Spectrales", - effect: "Archéduc utilise la Force Z pour créer un nuage de flèches qui transpercent la cible." + 'sinisterArrowRaid': { + name: 'Fureur des Plumes Spectrales', + effect: 'Archéduc utilise la Force Z pour créer un nuage de flèches qui transpercent la cible.' }, - "maliciousMoonsault": { - name: "Dark Body Press", - effect: "Félinferno utilise la Force Z pour gonfler ses muscles et écraser la cible de toutes ses forces." + 'maliciousMoonsault': { + name: 'Dark Body Press', + effect: 'Félinferno utilise la Force Z pour gonfler ses muscles et écraser la cible de toutes ses forces.' }, - "oceanicOperetta": { - name: "Symphonie des Ondines", - effect: "Oratoria utilise la Force Z pour rassembler une grande quantité d’eau et la projeter sur la cible à pleine puissance." + 'oceanicOperetta': { + name: 'Symphonie des Ondines', + effect: 'Oratoria utilise la Force Z pour rassembler une grande quantité d’eau et la projeter sur la cible à pleine puissance.' }, - "guardianOfAlola": { - name: "Colère du Gardien d’Alola", - effect: "Le Pokémon Tutélaire utilise la Force Z et déchaîne toute la puissance d’Alola sur sa cible. Inflige des dégâts en fonction des PV restants de celle-ci." + 'guardianOfAlola': { + name: 'Colère du Gardien d’Alola', + effect: 'Le Pokémon Tutélaire utilise la Force Z et déchaîne toute la puissance d’Alola sur sa cible. Inflige des dégâts en fonction des PV restants de celle-ci.' }, - "soulStealing7StarStrike": { - name: "Fauche-Âme des Sept Étoiles", - effect: "Marshadow concentre toute la Force Z dans ses poings et ses pieds pour infliger un déluge de coups à la cible." + 'soulStealing7StarStrike': { + name: 'Fauche-Âme des Sept Étoiles', + effect: 'Marshadow concentre toute la Force Z dans ses poings et ses pieds pour infliger un déluge de coups à la cible.' }, - "stokedSparksurfer": { - name: "Électro-Surf Survolté", - effect: "Le Raichu de la région d’Alola utilise la Force Z pour frapper la cible et la paralyser." + 'stokedSparksurfer': { + name: 'Électro-Surf Survolté', + effect: 'Le Raichu de la région d’Alola utilise la Force Z pour frapper la cible et la paralyser.' }, - "pulverizingPancake": { - name: "Gare au Ronflex", - effect: "Ronflex utilise la Force Z pour montrer ce qu’il a dans le ventre et écraser la cible de tout son poids." + 'pulverizingPancake': { + name: 'Gare au Ronflex', + effect: 'Ronflex utilise la Force Z pour montrer ce qu’il a dans le ventre et écraser la cible de tout son poids.' }, - "extremeEvoboost": { - name: "Neuf pour Un", - effect: "Évoli utilise la Force Z pour emprunter la puissance de tous ses amis évolués et beaucoup augmenter toutes ses stats." + 'extremeEvoboost': { + name: 'Neuf pour Un', + effect: 'Évoli utilise la Force Z pour emprunter la puissance de tous ses amis évolués et beaucoup augmenter toutes ses stats.' }, - "genesisSupernova": { - name: "Supernova Originelle", - effect: "Mew utilise la Force Z pour attaquer la cible. Le terrain devient un Champ Psychique." + 'genesisSupernova': { + name: 'Supernova Originelle', + effect: 'Mew utilise la Force Z pour attaquer la cible. Le terrain devient un Champ Psychique.' }, - "shellTrap": { - name: "Carapiège", - effect: "Pose une carapace piégée. Si l’adversaire utilise une capacité physique, la carapace explose et lui inflige des dégâts." + 'shellTrap': { + name: 'Carapiège', + effect: 'Pose une carapace piégée. Si l’adversaire utilise une capacité physique, la carapace explose et lui inflige des dégâts.' }, - "fleurCannon": { - name: "Canon Floral", - effect: "Envoie un rayon laser dévastateur. Baisse beaucoup l’Attaque Spéciale du lanceur." + 'fleurCannon': { + name: 'Canon Floral', + effect: 'Envoie un rayon laser dévastateur. Baisse beaucoup l’Attaque Spéciale du lanceur.' }, - "psychicFangs": { - name: "Psycho-Croc", - effect: "Le lanceur mord la cible avec ses pouvoirs psychiques. Brise aussi les barrières comme Mur Lumière et Protection." + 'psychicFangs': { + name: 'Psycho-Croc', + effect: 'Le lanceur mord la cible avec ses pouvoirs psychiques. Brise aussi les barrières comme Mur Lumière et Protection.' }, - "stompingTantrum": { - name: "Trépignement", - effect: "Le lanceur attaque en utilisant sa frustration. S’il a utilisé une capacité qui a échoué au tour précédent, la puissance de Trépignement est doublée." + 'stompingTantrum': { + name: 'Trépignement', + effect: 'Le lanceur attaque en utilisant sa frustration. S’il a utilisé une capacité qui a échoué au tour précédent, la puissance de Trépignement est doublée.' }, - "shadowBone": { - name: "Os Ombre", - effect: "Le lanceur frappe avec un os possédé par l’âme d’un défunt. Peut aussi baisser la Défense de la cible." + 'shadowBone': { + name: 'Os Ombre', + effect: 'Le lanceur frappe avec un os possédé par l’âme d’un défunt. Peut aussi baisser la Défense de la cible.' }, - "accelerock": { - name: "Vif Roc", - effect: "Le lanceur charge la cible à toute vitesse. Frappe en priorité." + 'accelerock': { + name: 'Vif Roc', + effect: 'Le lanceur charge la cible à toute vitesse. Frappe en priorité.' }, - "liquidation": { - name: "Aqua-Brèche", - effect: "Le lanceur utilise la force de l’eau pour attaquer. Peut aussi baisser la Défense de la cible." + 'liquidation': { + name: 'Aqua-Brèche', + effect: 'Le lanceur utilise la force de l’eau pour attaquer. Peut aussi baisser la Défense de la cible.' }, - "prismaticLaser": { - name: "Laser Prisme", - effect: "Le lanceur utilise la puissance d’un prisme pour envoyer un laser destructeur, mais il doit se reposer au tour suivant." + 'prismaticLaser': { + name: 'Laser Prisme', + effect: 'Le lanceur utilise la puissance d’un prisme pour envoyer un laser destructeur, mais il doit se reposer au tour suivant.' }, - "spectralThief": { - name: "Clepto-Mânes", - effect: "Le lanceur plonge dans l’ombre de la cible, vole ses augmentations de stats et l’attaque." + 'spectralThief': { + name: 'Clepto-Mânes', + effect: 'Le lanceur plonge dans l’ombre de la cible, vole ses augmentations de stats et l’attaque.' }, - "sunsteelStrike": { - name: "Choc Météore", - effect: "Le lanceur fonce sur la cible à la vitesse d’une météorite. Ignore le talent de l’ennemi." + 'sunsteelStrike': { + name: 'Choc Météore', + effect: 'Le lanceur fonce sur la cible à la vitesse d’une météorite. Ignore le talent de l’ennemi.' }, - "moongeistBeam": { - name: "Rayon Spectral", - effect: "Le lanceur attaque avec un rayon de lumière mystérieux. Ignore le talent de la cible." + 'moongeistBeam': { + name: 'Rayon Spectral', + effect: 'Le lanceur attaque avec un rayon de lumière mystérieux. Ignore le talent de la cible.' }, - "tearfulLook": { - name: "Larme à l’Œil", - effect: "Le lanceur regarde la cible avec des yeux remplis de larmes. Celle-ci perd toute combativité et voit son Attaque et son Attaque Spéciale baisser." + 'tearfulLook': { + name: 'Larme à l’Œil', + effect: 'Le lanceur regarde la cible avec des yeux remplis de larmes. Celle-ci perd toute combativité et voit son Attaque et son Attaque Spéciale baisser.' }, - "zingZap": { - name: "Électrikipik", - effect: "Le lanceur fonce sur la cible et lui envoie un puissant choc électrique, ce qui peut aussi l’effrayer." + 'zingZap': { + name: 'Électrikipik', + effect: 'Le lanceur fonce sur la cible et lui envoie un puissant choc électrique, ce qui peut aussi l’effrayer.' }, - "naturesMadness": { - name: "Ire de la Nature", - effect: "Le lanceur déchaîne toute la colère de la nature pour baisser les PV de la cible de moitié." + 'naturesMadness': { + name: 'Ire de la Nature', + effect: 'Le lanceur déchaîne toute la colère de la nature pour baisser les PV de la cible de moitié.' }, - "multiAttack": { - name: "Coup Varia-Type", - effect: "Le Pokémon s’entoure d’une puissante énergie avant de foncer sur sa cible. Le type de la capacité dépend de la ROM installée." + 'multiAttack': { + name: 'Coup Varia-Type', + effect: 'Le Pokémon s’entoure d’une puissante énergie avant de foncer sur sa cible. Le type de la capacité dépend de la ROM installée.' }, - "tenMillionVoltThunderbolt": { - name: "Giga-Tonnerre", - effect: "Le Pikachu à casquette utilise la Force Z pour augmenter sa puissance électrique avant de la déchaîner sur la cible. Taux de critique élevé." + 'tenMillionVoltThunderbolt': { + name: 'Giga-Tonnerre', + effect: 'Le Pikachu à casquette utilise la Force Z pour augmenter sa puissance électrique avant de la déchaîner sur la cible. Taux de critique élevé.' }, - "mindBlown": { - name: "Caboche-Kaboum", - effect: "Le lanceur fait exploser sa tête pour attaquer toutes les cibles autour de lui. Il subit aussi des dégâts." + 'mindBlown': { + name: 'Caboche-Kaboum', + effect: 'Le lanceur fait exploser sa tête pour attaquer toutes les cibles autour de lui. Il subit aussi des dégâts.' }, - "plasmaFists": { - name: "Plasma Punch", - effect: "Le lanceur attaque en projetant de l’électricité avec ses poings. Convertit les capacités de type Normal en type Électrik." + 'plasmaFists': { + name: 'Plasma Punch', + effect: 'Le lanceur attaque en projetant de l’électricité avec ses poings. Convertit les capacités de type Normal en type Électrik.' }, - "photonGeyser": { - name: "Photo-Geyser", - effect: "Le lanceur fait jaillir un pilier de lumière. Compare l’Attaque et l’Attaque Spéciale, et utilise celle qui infligera le plus de dégâts." + 'photonGeyser': { + name: 'Photo-Geyser', + effect: 'Le lanceur fait jaillir un pilier de lumière. Compare l’Attaque et l’Attaque Spéciale, et utilise celle qui infligera le plus de dégâts.' }, - "lightThatBurnsTheSky": { - name: "Apocalypsis Luminis", - effect: "Compare l’Attaque et l’Attaque Spéciale, et utilise celle qui infligera le plus de dégâts. Ignore le talent de la cible." + 'lightThatBurnsTheSky': { + name: 'Apocalypsis Luminis', + effect: 'Compare l’Attaque et l’Attaque Spéciale, et utilise celle qui infligera le plus de dégâts. Ignore le talent de la cible.' }, - "searingSunrazeSmash": { - name: "Hélio-Choc Dévastateur", - effect: "Baigné dans la Force Z, Solgaleo attaque en déchaînant toute sa puissance. Ignore le talent de la cible." + 'searingSunrazeSmash': { + name: 'Hélio-Choc Dévastateur', + effect: 'Baigné dans la Force Z, Solgaleo attaque en déchaînant toute sa puissance. Ignore le talent de la cible.' }, - "menacingMoonrazeMaelstrom": { - name: "Rayons Séléno-Explosifs", - effect: "Baigné dans la Force Z, Lunala attaque en déchaînant toute sa puissance. Ignore le talent de la cible." + 'menacingMoonrazeMaelstrom': { + name: 'Rayons Séléno-Explosifs', + effect: 'Baigné dans la Force Z, Lunala attaque en déchaînant toute sa puissance. Ignore le talent de la cible.' }, - "letsSnuggleForever": { - name: "Patati-Patattrape", - effect: "Mimiqui concentre toute la Force Z dans son corps, et attaque dans le plus grand fracas !" + 'letsSnuggleForever': { + name: 'Patati-Patattrape', + effect: 'Mimiqui concentre toute la Force Z dans son corps, et attaque dans le plus grand fracas !' }, - "splinteredStormshards": { - name: "Hurlement des Roches-Lames", - effect: "Lougaroc utilise la Force Z pour attaquer la cible de toutes ses forces. Efface aussi tout Champ existant." + 'splinteredStormshards': { + name: 'Hurlement des Roches-Lames', + effect: 'Lougaroc utilise la Force Z pour attaquer la cible de toutes ses forces. Efface aussi tout Champ existant.' }, - "clangorousSoulblaze": { - name: "Dracacophonie Flamboyante", - effect: "Ékaïser utilise la Force Z pour frapper l’ennemi de toutes ses forces. Augmente aussi ses stats." + 'clangorousSoulblaze': { + name: 'Dracacophonie Flamboyante', + effect: 'Ékaïser utilise la Force Z pour frapper l’ennemi de toutes ses forces. Augmente aussi ses stats.' }, - "zippyZap": { - name: "Pika-Sprint", - effect: "Une attaque électrique rapide comme l’éclair qui augmente l’esquive. Frappe en priorité." + 'zippyZap': { + name: 'Pika-Sprint', + effect: 'Une attaque électrique rapide comme l’éclair qui augmente l’esquive. Frappe en priorité.' }, - "splishySplash": { - name: "Pika-Splash", - effect: "Pikachu frappe l’adversaire avec une vague géante chargée d’électricité. Peut aussi paralyser l’ennemi." + 'splishySplash': { + name: 'Pika-Splash', + effect: 'Pikachu frappe l’adversaire avec une vague géante chargée d’électricité. Peut aussi paralyser l’ennemi.' }, - "floatyFall": { - name: "Pika-Piqué", - effect: "Pikachu prend de la hauteur avant de fondre sur son adversaire. Peut aussi apeurer l’ennemi." + 'floatyFall': { + name: 'Pika-Piqué', + effect: 'Pikachu prend de la hauteur avant de fondre sur son adversaire. Peut aussi apeurer l’ennemi.' }, - "pikaPapow": { - name: "Pika-Fracas", - effect: "Plus le lanceur est heureux, plus l’attaque est puissante." + 'pikaPapow': { + name: 'Pika-Fracas', + effect: 'Plus le lanceur est heureux, plus l’attaque est puissante.' }, - "bouncyBubble": { - name: "Évo-Thalasso", - effect: "Évoli frappe l’adversaire avec des bulles d’eau qu’il absorbe ensuite pour récupérer un nombre de PV égal à la moitié des dégâts infligés à l’ennemi." + 'bouncyBubble': { + name: 'Évo-Thalasso', + effect: 'Évoli frappe l’adversaire avec des bulles d’eau qu’il absorbe ensuite pour récupérer un nombre de PV égal à la moitié des dégâts infligés à l’ennemi.' }, - "buzzyBuzz": { - name: "Évo-Dynamo", - effect: "Une attaque qui foudroie et paralyse l’adversaire." + 'buzzyBuzz': { + name: 'Évo-Dynamo', + effect: 'Une attaque qui foudroie et paralyse l’adversaire.' }, - "sizzlySlide": { - name: "Évo-Flambo", - effect: "Évoli s’embrase et percure violemment l’adversaire. Brûle aussi l’ennemi." + 'sizzlySlide': { + name: 'Évo-Flambo', + effect: 'Évoli s’embrase et percure violemment l’adversaire. Brûle aussi l’ennemi.' }, - "glitzyGlow": { - name: "Évo-Psycho", - effect: "Évoli submerge l’adversaire sous un flot d’ondes psychiques et crée un mur fabuleux qui réduit les dégâts causés par les attaques spéciales de l’ennemi" + 'glitzyGlow': { + name: 'Évo-Psycho', + effect: 'Évoli submerge l’adversaire sous un flot d’ondes psychiques et crée un mur fabuleux qui réduit les dégâts causés par les attaques spéciales de l’ennemi' }, - "baddyBad": { - name: "Évo-Ténébro", - effect: "Évoli fait appel à son côté sombre pour attaquer l’adversaire et créer un mur fabuleux qui réduit les dégâts causés par les attaques physiques de l’ennemi." + 'baddyBad': { + name: 'Évo-Ténébro', + effect: 'Évoli fait appel à son côté sombre pour attaquer l’adversaire et créer un mur fabuleux qui réduit les dégâts causés par les attaques physiques de l’ennemi.' }, - "sappySeed": { - name: "Évo-Écolo", - effect: "Une liane géante surgit du sol et bombarde l’adversaire de graines qui lui dérobent des PV à chaque tour. Ces PV sont ensuite absorbés par Évoli." + 'sappySeed': { + name: 'Évo-Écolo', + effect: 'Une liane géante surgit du sol et bombarde l’adversaire de graines qui lui dérobent des PV à chaque tour. Ces PV sont ensuite absorbés par Évoli.' }, - "freezyFrost": { - name: "Évo-Congélo", - effect: "Évoli frappe l’adversaire avec un cristal de buée noire gelée. Annule les changements de stats de tous les Pokémon au combat." + 'freezyFrost': { + name: 'Évo-Congélo', + effect: 'Évoli frappe l’adversaire avec un cristal de buée noire gelée. Annule les changements de stats de tous les Pokémon au combat.' }, - "sparklySwirl": { - name: "Évo-Fabulo", - effect: "Une attaque qui enserre l’adversaire dans un tourbillon de senteurs oppressantes. Guérit toutes les altérations de statut de l’équipe." + 'sparklySwirl': { + name: 'Évo-Fabulo', + effect: 'Une attaque qui enserre l’adversaire dans un tourbillon de senteurs oppressantes. Guérit toutes les altérations de statut de l’équipe.' }, - "veeveeVolley": { - name: "Évo-Chardasso", - effect: "Le lanceur lance une attaque dès lors qu’un signe apparaît sur le terrain. Les dégâts infligés sont proportionnels à l’affection de votre Pokémon" + 'veeveeVolley': { + name: 'Évo-Chardasso', + effect: 'Le lanceur lance une attaque dès lors qu’un signe apparaît sur le terrain. Les dégâts infligés sont proportionnels à l’affection de votre Pokémon' }, - "doubleIronBash": { - name: "Écrous d’Poing", - effect: "Le lanceur fait pivoter l’écrou de sa poitrine deux fois d’affilée pour frapper l’adversaire avec ses bras. Peut apeurer l’ennemi (30% de chances)." + 'doubleIronBash': { + name: 'Écrous d’Poing', + effect: 'Le lanceur fait pivoter l’écrou de sa poitrine deux fois d’affilée pour frapper l’adversaire avec ses bras. Peut apeurer l’ennemi (30% de chances).' }, - "maxGuard": { - name: "Gardomax", - effect: "Le lanceur se protège de toutes les attaques. Peut échouer si utilisée plusieurs fois de suite." + 'maxGuard': { + name: 'Gardomax', + effect: 'Le lanceur se protège de toutes les attaques. Peut échouer si utilisée plusieurs fois de suite.' }, - "dynamaxCannon": { - name: "Canon Dynamax", - effect: "Le lanceur attaque en émettant un laser depuis son noyau. Cette capacité inflige deux fois plus de dégâts si l’adversaire est level 200." + 'dynamaxCannon': { + name: 'Canon Dynamax', + effect: 'Le lanceur attaque en émettant un laser depuis son noyau. Cette capacité inflige deux fois plus de dégâts si l’adversaire est level 200.' }, - "snipeShot": { - name: "Tir de Précision", - effect: "Le lanceur parvient toujours à viser la cible voulue, en ignorant l’effet des talents et des capacités capables de détourner les attaques." + 'snipeShot': { + name: 'Tir de Précision', + effect: 'Le lanceur parvient toujours à viser la cible voulue, en ignorant l’effet des talents et des capacités capables de détourner les attaques.' }, - "jawLock": { - name: "Croque Fort", - effect: "Le lanceur et sa cible ne peuvent plus être échangés jusqu’à ce que l’un d’entre eux tombe K.O. L’effet est annulé si l’un des deux Pokémon quitte le terrain." + 'jawLock': { + name: 'Croque Fort', + effect: 'Le lanceur et sa cible ne peuvent plus être échangés jusqu’à ce que l’un d’entre eux tombe K.O. L’effet est annulé si l’un des deux Pokémon quitte le terrain.' }, - "stuffCheeks": { - name: "Garde-à-Joues", - effect: "Le lanceur mange la Baie qu’il tient, ce qui augmente beaucoup sa Défense." + 'stuffCheeks': { + name: 'Garde-à-Joues', + effect: 'Le lanceur mange la Baie qu’il tient, ce qui augmente beaucoup sa Défense.' }, - "noRetreat": { - name: "Ultime Bastion", - effect: "Le lanceur voit toutes ses stats augmenter, mais en contrepartie, il ne peut plus quitter le terrain." + 'noRetreat': { + name: 'Ultime Bastion', + effect: 'Le lanceur voit toutes ses stats augmenter, mais en contrepartie, il ne peut plus quitter le terrain.' }, - "tarShot": { - name: "Goudronnage", - effect: "Le lanceur recouvre sa cible de goudron liquide pour baisser sa Vitesse et la rendre vulnérable au feu." + 'tarShot': { + name: 'Goudronnage', + effect: 'Le lanceur recouvre sa cible de goudron liquide pour baisser sa Vitesse et la rendre vulnérable au feu.' }, - "magicPowder": { - name: "Poudre Magique", - effect: "Le lanceur recouvre sa cible d’une poudre magique qui change son type en Psy." + 'magicPowder': { + name: 'Poudre Magique', + effect: 'Le lanceur recouvre sa cible d’une poudre magique qui change son type en Psy.' }, - "dragonDarts": { - name: "Draco-Flèches", - effect: "Le lanceur attaque en propulsant deux Fantyrm. S’il y a deux cibles, chacune d’entre elles est frappée par un Fantyrm." + 'dragonDarts': { + name: 'Draco-Flèches', + effect: 'Le lanceur attaque en propulsant deux Fantyrm. S’il y a deux cibles, chacune d’entre elles est frappée par un Fantyrm.' }, - "teatime": { - name: "Thérémonie", - effect: "Le lanceur invite tous les Pokémon sur le terrain à prendre le goûter autour d’une tasse de thé. Ceux qui tiennent une Baie la mangent." + 'teatime': { + name: 'Thérémonie', + effect: 'Le lanceur invite tous les Pokémon sur le terrain à prendre le goûter autour d’une tasse de thé. Ceux qui tiennent une Baie la mangent.' }, - "octolock": { - name: "Octoprise", - effect: "Empêche l’ennemi de fuir ou de quitter le terrain. Baisse la Défense et la Défense Spécial de l’ennemi chaque tour." + 'octolock': { + name: 'Octoprise', + effect: 'Empêche l’ennemi de fuir ou de quitter le terrain. Baisse la Défense et la Défense Spécial de l’ennemi chaque tour.' }, - "boltBeak": { - name: "Prise de Bec", - effect: "Inflige des dégâts et les double si le lanceur attaque avant l’ennemi." + 'boltBeak': { + name: 'Prise de Bec', + effect: 'Inflige des dégâts et les double si le lanceur attaque avant l’ennemi.' }, - "fishiousRend": { - name: "Branchicrok", - effect: "Inflige des dégâts et les double si le lanceur attaque avant l’ennemi." + 'fishiousRend': { + name: 'Branchicrok', + effect: 'Inflige des dégâts et les double si le lanceur attaque avant l’ennemi.' }, - "courtChange": { - name: "Change-Côté", - effect: "Une force mystérieuse intervertit les effets affectant chaque côté du terrain." + 'courtChange': { + name: 'Change-Côté', + effect: 'Une force mystérieuse intervertit les effets affectant chaque côté du terrain.' }, - "maxFlare": { - name: "Pyromax", - effect: "Une attaque de type Feu que seuls les Pokémon Dynamax peuvent utiliser. Fait briller le soleil pendant cinq tours." + 'maxFlare': { + name: 'Pyromax', + effect: 'Une attaque de type Feu que seuls les Pokémon Dynamax peuvent utiliser. Fait briller le soleil pendant cinq tours.' }, - "maxFlutterby": { - name: "Insectomax", - effect: "Une attaque de type Insecte que seuls les Pokémon Dynamax peuvent utiliser. Baisse l’Attaque Spéciale de la cible." + 'maxFlutterby': { + name: 'Insectomax', + effect: 'Une attaque de type Insecte que seuls les Pokémon Dynamax peuvent utiliser. Baisse l’Attaque Spéciale de la cible.' }, - "maxLightning": { - name: "Fulguromax", - effect: "Une attaque de type Électrik que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Électrifié qui dure cinq tours." + 'maxLightning': { + name: 'Fulguromax', + effect: 'Une attaque de type Électrik que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Électrifié qui dure cinq tours.' }, - "maxStrike": { - name: "Normalomax", - effect: "Une attaque de type Normal que seuls les Pokémon Dynamax peuvent utiliser. Baisse la Vitesse de la cible." + 'maxStrike': { + name: 'Normalomax', + effect: 'Une attaque de type Normal que seuls les Pokémon Dynamax peuvent utiliser. Baisse la Vitesse de la cible.' }, - "maxKnuckle": { - name: "Pugilomax", - effect: "Une attaque de type Combat que seuls les Pokémon dynamax peuvent utiliser. Augmente l’Attaque des Alliés." + 'maxKnuckle': { + name: 'Pugilomax', + effect: 'Une attaque de type Combat que seuls les Pokémon dynamax peuvent utiliser. Augmente l’Attaque des Alliés.' }, - "maxPhantasm": { - name: "Spectromax", - effect: "Une attaque de type Spectre que seuls les Pokémon Dynamax peuvent utiliser. Baisse la Défense de la cible." + 'maxPhantasm': { + name: 'Spectromax', + effect: 'Une attaque de type Spectre que seuls les Pokémon Dynamax peuvent utiliser. Baisse la Défense de la cible.' }, - "maxHailstorm": { - name: "Cryomax", - effect: "Une attaque de type Glace que seuls les Pokémon Dynamax peuvent utiliser. Invoque une tempête de grêle qui dure cinq tours." + 'maxHailstorm': { + name: 'Cryomax', + effect: 'Une attaque de type Glace que seuls les Pokémon Dynamax peuvent utiliser. Invoque une tempête de grêle qui dure cinq tours.' }, - "maxOoze": { - name: "Toxinomax", - effect: "Une attaque de type Poison que seuls les Pokémon Dynamax peuvent utiliser. Augmente l’Attaque Spéciale des alliés." + 'maxOoze': { + name: 'Toxinomax', + effect: 'Une attaque de type Poison que seuls les Pokémon Dynamax peuvent utiliser. Augmente l’Attaque Spéciale des alliés.' }, - "maxGeyser": { - name: "Hydromax", - effect: "Une attaque de type Eau que seuls les Pokémon Dynamax peuvent utiliser. Invoque de fortes pluies qui durent cinq tours." + 'maxGeyser': { + name: 'Hydromax', + effect: 'Une attaque de type Eau que seuls les Pokémon Dynamax peuvent utiliser. Invoque de fortes pluies qui durent cinq tours.' }, - "maxAirstream": { - name: "Aéromax", - effect: "Une attaque de type Vol que seuls les Pokémon Dynamax peuvent utiliser. Augmente la Vitesse des alliés." + 'maxAirstream': { + name: 'Aéromax', + effect: 'Une attaque de type Vol que seuls les Pokémon Dynamax peuvent utiliser. Augmente la Vitesse des alliés.' }, - "maxStarfall": { - name: "Enchantomax", - effect: "Une attaque de type Fée que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Brumeux qui dure cinq tours." + 'maxStarfall': { + name: 'Enchantomax', + effect: 'Une attaque de type Fée que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Brumeux qui dure cinq tours.' }, - "maxWyrmwind": { - name: "Dracomax", - effect: "Une attaque de type Dragon que seuls les Pokémon Dynamax peuvent utiliser. Baisse l’Attaque de la cible." + 'maxWyrmwind': { + name: 'Dracomax', + effect: 'Une attaque de type Dragon que seuls les Pokémon Dynamax peuvent utiliser. Baisse l’Attaque de la cible.' }, - "maxMindstorm": { - name: "Psychomax", - effect: "Une attaque de type Psy que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Psychique qui dure cinq tours." + 'maxMindstorm': { + name: 'Psychomax', + effect: 'Une attaque de type Psy que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Psychique qui dure cinq tours.' }, - "maxRockfall": { - name: "Lithomax", - effect: "Une attaque de type Roche que seuls les Pokémon Dynamax peuvent utiliser. Invoque une tempête de sable qui dure cinq tours." + 'maxRockfall': { + name: 'Lithomax', + effect: 'Une attaque de type Roche que seuls les Pokémon Dynamax peuvent utiliser. Invoque une tempête de sable qui dure cinq tours.' }, - "maxQuake": { - name: "Sismomax", - effect: "Une attaque de type Sol que seuls les Pokémon Dynamax peuvent utiliser. Augmente la Défense Spéciale des alliés." + 'maxQuake': { + name: 'Sismomax', + effect: 'Une attaque de type Sol que seuls les Pokémon Dynamax peuvent utiliser. Augmente la Défense Spéciale des alliés.' }, - "maxDarkness": { - name: "Sinistromax", - effect: "Une attaque de type Ténèbres que seuls les Pokémon Dynamax peuvent utiliser. Baisse la Défense Spéciale de la cible." + 'maxDarkness': { + name: 'Sinistromax', + effect: 'Une attaque de type Ténèbres que seuls les Pokémon Dynamax peuvent utiliser. Baisse la Défense Spéciale de la cible.' }, - "maxOvergrowth": { - name: "Phytomax", - effect: "Une attaque de type Plante que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Herbu qui dure cinq tours." + 'maxOvergrowth': { + name: 'Phytomax', + effect: 'Une attaque de type Plante que seuls les Pokémon Dynamax peuvent utiliser. Crée un Champ Herbu qui dure cinq tours.' }, - "maxSteelspike": { - name: "Métallomax", - effect: "Une attaque de type Acier que seuls les Pokémon Dynamax peuvent utiliser. Augmente la Défense des alliés." + 'maxSteelspike': { + name: 'Métallomax', + effect: 'Une attaque de type Acier que seuls les Pokémon Dynamax peuvent utiliser. Augmente la Défense des alliés.' }, - "clangorousSoul": { - name: "Dracacophonie", - effect: "Sacrifie une partie de ses PV pour augmenter toutes ses statistiques." + 'clangorousSoul': { + name: 'Dracacophonie', + effect: 'Sacrifie une partie de ses PV pour augmenter toutes ses statistiques.' }, - "bodyPress": { - name: "Big Splash", - effect: "Le lanceur utilise son corps pour attaquer sa cible. Plus la Défense du lanceur est élevée, plus les dégâts infligés sont importants." + 'bodyPress': { + name: 'Big Splash', + effect: 'Le lanceur utilise son corps pour attaquer sa cible. Plus la Défense du lanceur est élevée, plus les dégâts infligés sont importants.' }, - "decorate": { - name: "Nappage", - effect: "Augmente fortement l’Attaque et l’Attaque Spéciale du lanceur." + 'decorate': { + name: 'Nappage', + effect: 'Augmente fortement l’Attaque et l’Attaque Spéciale du lanceur.' }, - "drumBeating": { - name: "Tambour Battant", - effect: "Le lanceur bat son tambour pour en diriger les racines sur la cible, l’attaquer, et baisser sa Vitesse." + 'drumBeating': { + name: 'Tambour Battant', + effect: 'Le lanceur bat son tambour pour en diriger les racines sur la cible, l’attaquer, et baisser sa Vitesse.' }, - "snapTrap": { - name: "Troquenard", - effect: "Bloque l’ennemi pendant 4 à 5 tours." + 'snapTrap': { + name: 'Troquenard', + effect: 'Bloque l’ennemi pendant 4 à 5 tours.' }, - "pyroBall": { - name: "Ballon Brûlant", - effect: "Le lanceur attaque avec un ballon fait à partir d’un caillou enflammé. Peut aussi brûler la cible (10% de chances)." + 'pyroBall': { + name: 'Ballon Brûlant', + effect: 'Le lanceur attaque avec un ballon fait à partir d’un caillou enflammé. Peut aussi brûler la cible (10% de chances).' }, - "behemothBlade": { - name: "Gladius Maximus", - effect: "Le lanceur se transforme en une immense épée et pourfend sa cible. Cette capacité inflige le double de dégâts aux Pokémon Dynamax." + 'behemothBlade': { + name: 'Gladius Maximus', + effect: 'Le lanceur se transforme en une immense épée et pourfend sa cible. Cette capacité inflige le double de dégâts aux Pokémon Dynamax.' }, - "behemothBash": { - name: "Aegis Maxima", - effect: "Le lanceur se transforme en un immense bouclier et charge sa cible. Cette capacité inflige le double de dégâts aux Pokémon Dynamax." + 'behemothBash': { + name: 'Aegis Maxima', + effect: 'Le lanceur se transforme en un immense bouclier et charge sa cible. Cette capacité inflige le double de dégâts aux Pokémon Dynamax.' }, - "auraWheel": { - name: "Roue Libre", - effect: "Inflige et change en type Ténèbres" + 'auraWheel': { + name: 'Roue Libre', + effect: 'Inflige et change en type Ténèbres' }, - "breakingSwipe": { - name: "Abattage", - effect: "Le lanceur balaie violemment le camp adverse avec son immense queue. Baisse l’Attaque de la cible." + 'breakingSwipe': { + name: 'Abattage', + effect: 'Le lanceur balaie violemment le camp adverse avec son immense queue. Baisse l’Attaque de la cible.' }, - "branchPoke": { - name: "Tapotige", - effect: "Le lanceur attaque sa cible en la piquant avec une branche pointue." + 'branchPoke': { + name: 'Tapotige', + effect: 'Le lanceur attaque sa cible en la piquant avec une branche pointue.' }, - "overdrive": { - name: "Overdrive", - effect: "Le lanceur gratte ses cordes de guitare ou de basse pour créer de violentes vibrations sonores qui blessent la cible." + 'overdrive': { + name: 'Overdrive', + effect: 'Le lanceur gratte ses cordes de guitare ou de basse pour créer de violentes vibrations sonores qui blessent la cible.' }, - "appleAcid": { - name: "Acide Malique", - effect: "Le lanceur projette un liquide corrosif créé à partir d’une pomme acide sur la cible, ce qui baisse la Défense Spéciale de celle-ci." + 'appleAcid': { + name: 'Acide Malique', + effect: 'Le lanceur projette un liquide corrosif créé à partir d’une pomme acide sur la cible, ce qui baisse la Défense Spéciale de celle-ci.' }, - "gravApple": { - name: "Force G", - effect: "Le lanceur fait tomber une pomme de très haut sur la cible, ce qui baisse la Défense de celle-ci." + 'gravApple': { + name: 'Force G', + effect: 'Le lanceur fait tomber une pomme de très haut sur la cible, ce qui baisse la Défense de celle-ci.' }, - "spiritBreak": { - name: "Choc Émotionnel", - effect: "Le lanceur attaque la cible avec une telle force que celle-ci peut s’en retrouver profondément troublée et voir son Attaque Spéciale baisser." + 'spiritBreak': { + name: 'Choc Émotionnel', + effect: 'Le lanceur attaque la cible avec une telle force que celle-ci peut s’en retrouver profondément troublée et voir son Attaque Spéciale baisser.' }, - "strangeSteam": { - name: "Vapeur Féérique", - effect: "Inflige des dégâts et peut rendre confus l’ennemi." + 'strangeSteam': { + name: 'Vapeur Féérique', + effect: 'Inflige des dégâts et peut rendre confus l’ennemi.' }, - "lifeDew": { - name: "Fontaine de Vie", - effect: "Le lanceur projette une eau mystérieuse sur le terrain pour restaurer ses PV et ceux de ses alliés au combat." + 'lifeDew': { + name: 'Fontaine de Vie', + effect: 'Le lanceur projette une eau mystérieuse sur le terrain pour restaurer ses PV et ceux de ses alliés au combat.' }, - "obstruct": { - name: "Blocage", - effect: "Protège le lanceur des attaques de contact. Baisse la Défense de deux crans si l’ennemi a tenté une attaque de contact." + 'obstruct': { + name: 'Blocage', + effect: 'Protège le lanceur des attaques de contact. Baisse la Défense de deux crans si l’ennemi a tenté une attaque de contact.' }, - "falseSurrender": { - name: "Fourbette", - effect: "Le lanceur fait semblant de se prosterner et utilise ses cheveux pour transpercer sa cible. N’échoue jamais." + 'falseSurrender': { + name: 'Fourbette', + effect: 'Le lanceur fait semblant de se prosterner et utilise ses cheveux pour transpercer sa cible. N’échoue jamais.' }, - "meteorAssault": { - name: "Joute Astrale", - effect: "Inflige de gros dégâts mais oblige le lanceur à se reposer pendant un tour." + 'meteorAssault': { + name: 'Joute Astrale', + effect: 'Inflige de gros dégâts mais oblige le lanceur à se reposer pendant un tour.' }, - "eternabeam": { - name: "Laser Infinimax", - effect: "Inflige de gros dégâts mais oblige le lanceur à se reposer pendant un tour." + 'eternabeam': { + name: 'Laser Infinimax', + effect: 'Inflige de gros dégâts mais oblige le lanceur à se reposer pendant un tour.' }, - "steelBeam": { - name: "Métalaser", - effect: "Le lanceur concentre du métal issu de tout son corps en un rayon qu’il projette violemment sur sa cible. Il subit aussi des dégâts." + 'steelBeam': { + name: 'Métalaser', + effect: 'Le lanceur concentre du métal issu de tout son corps en un rayon qu’il projette violemment sur sa cible. Il subit aussi des dégâts.' }, - "expandingForce": { - name: "Vaste Pouvoir", - effect: "Le lanceur attaque la cible avec ses pouvoirs psychiques. Si un champ psychique est actif, la puissance de cette capacité augmente et elle touche tous les ennemis." + 'expandingForce': { + name: 'Vaste Pouvoir', + effect: 'Le lanceur attaque la cible avec ses pouvoirs psychiques. Si un champ psychique est actif, la puissance de cette capacité augmente et elle touche tous les ennemis.' }, - "steelRoller": { - name: "Métalliroue", - effect: "Une attaque qui inflige des dégâts et fait disparaître le champ actif, mais qui échoue s’il n’y en a pas à ce moment." + 'steelRoller': { + name: 'Métalliroue', + effect: 'Une attaque qui inflige des dégâts et fait disparaître le champ actif, mais qui échoue s’il n’y en a pas à ce moment.' }, - "scaleShot": { - name: "Rafale Écailles", - effect: "Le lanceur projette des écailles sur la cible de deux à cinq fois d’affilée. Augmente la Vitesse, mais diminue la Défense." + 'scaleShot': { + name: 'Rafale Écailles', + effect: 'Le lanceur projette des écailles sur la cible de deux à cinq fois d’affilée. Augmente la Vitesse, mais diminue la Défense.' }, - "meteorBeam": { - name: "Laser Météore", - effect: "Le lanceur concentre l’énergie cosmique au premier tour, ce qui augmente son Attaque Spéciale, et frappe au second." + 'meteorBeam': { + name: 'Laser Météore', + effect: 'Le lanceur concentre l’énergie cosmique au premier tour, ce qui augmente son Attaque Spéciale, et frappe au second.' }, - "shellSideArm": { - name: "Kokiyarme", - effect: "Une attaque physique ou spéciale, en fonction de ce qui inflige le plus de dégâts à la cible. Peut aussi empoisonner." + 'shellSideArm': { + name: 'Kokiyarme', + effect: 'Une attaque physique ou spéciale, en fonction de ce qui inflige le plus de dégâts à la cible. Peut aussi empoisonner.' }, - "mistyExplosion": { - name: "Explo-Brume", - effect: "Le lanceur frappe tous les Pokémon autour de lui en explosant, ce qui le met K.O. La puissance de cette attaque augmente si un champ brumeux est actif." + 'mistyExplosion': { + name: 'Explo-Brume', + effect: 'Le lanceur frappe tous les Pokémon autour de lui en explosant, ce qui le met K.O. La puissance de cette attaque augmente si un champ brumeux est actif.' }, - "grassyGlide": { - name: "Gliss’Herbe", - effect: "Le lanceur attaque la cible en glissant sur le terrain. Frappe toujours en priorité si un champ herbu est actif." + 'grassyGlide': { + name: 'Gliss’Herbe', + effect: 'Le lanceur attaque la cible en glissant sur le terrain. Frappe toujours en priorité si un champ herbu est actif.' }, - "risingVoltage": { - name: "Monte-Tension", - effect: "Des éclairs surgissent du sol et frappent la cible. La puissance de cette attaque est doublée si la cible est sur un champ électrifié." + 'risingVoltage': { + name: 'Monte-Tension', + effect: 'Des éclairs surgissent du sol et frappent la cible. La puissance de cette attaque est doublée si la cible est sur un champ électrifié.' }, - "terrainPulse": { - name: "Champlification", - effect: "Une attaque qui utilise la force des champs pour projeter une aura. Son type et sa puissance varient selon le champ actif." + 'terrainPulse': { + name: 'Champlification', + effect: 'Une attaque qui utilise la force des champs pour projeter une aura. Son type et sa puissance varient selon le champ actif.' }, - "skitterSmack": { - name: "Ravage Rampant", - effect: "Le lanceur rampe derrière la cible pour l’attaquer, ce qui baisse l’Attaque Spéciale de celle-ci." + 'skitterSmack': { + name: 'Ravage Rampant', + effect: 'Le lanceur rampe derrière la cible pour l’attaquer, ce qui baisse l’Attaque Spéciale de celle-ci.' }, - "burningJealousy": { - name: "Feu Envieux", - effect: "Le lanceur attaque sa cible avec toute sa jalousie. Cette capacité brûle tout Pokémon dont les stats ont augmenté pendant ce tour." + 'burningJealousy': { + name: 'Feu Envieux', + effect: 'Le lanceur attaque sa cible avec toute sa jalousie. Cette capacité brûle tout Pokémon dont les stats ont augmenté pendant ce tour.' }, - "lashOut": { - name: "Cent Rancunes", - effect: "Le lanceur frappe la cible avec toute sa rancune. Si les stats du lanceur ont diminué pendant ce tour, la puissance de cette attaque est doublée." + 'lashOut': { + name: 'Cent Rancunes', + effect: 'Le lanceur frappe la cible avec toute sa rancune. Si les stats du lanceur ont diminué pendant ce tour, la puissance de cette attaque est doublée.' }, - "poltergeist": { - name: "Esprit Frappeur", - effect: "Le lanceur manipule l’objet tenu par la cible pour l’attaquer. Cette capacité échoue si celle-ci ne tient rien." + 'poltergeist': { + name: 'Esprit Frappeur', + effect: 'Le lanceur manipule l’objet tenu par la cible pour l’attaquer. Cette capacité échoue si celle-ci ne tient rien.' }, - "corrosiveGas": { - name: "Gaz Corrosif", - effect: "Un gaz corrosif qui enveloppe tous les Pokémon alentour et qui dissout les objets qu’ils tiennent." + 'corrosiveGas': { + name: 'Gaz Corrosif', + effect: 'Un gaz corrosif qui enveloppe tous les Pokémon alentour et qui dissout les objets qu’ils tiennent.' }, - "coaching": { - name: "Coaching", - effect: "Le lanceur coache ses alliés, augmentant ainsi leur Attaque et leur Défense." + 'coaching': { + name: 'Coaching', + effect: 'Le lanceur coache ses alliés, augmentant ainsi leur Attaque et leur Défense.' }, - "flipTurn": { - name: "Eau Revoir", - effect: "Après son attaque, le lanceur revient à toute vitesse et change de place avec un Pokémon de l’équipe prêt à combattre." + 'flipTurn': { + name: 'Eau Revoir', + effect: 'Après son attaque, le lanceur revient à toute vitesse et change de place avec un Pokémon de l’équipe prêt à combattre.' }, - "tripleAxel": { - name: "Triple Axel", - effect: "Une série d’un à trois coups de pied distincts dont la puissance augmente à chaque fois que la capacité touche sa cible." + 'tripleAxel': { + name: 'Triple Axel', + effect: 'Une série d’un à trois coups de pied distincts dont la puissance augmente à chaque fois que la capacité touche sa cible.' }, - "dualWingbeat": { - name: "Double Volée", - effect: "Le lanceur frappe la cible avec ses ailes deux fois d’affilée." + 'dualWingbeat': { + name: 'Double Volée', + effect: 'Le lanceur frappe la cible avec ses ailes deux fois d’affilée.' }, - "scorchingSands": { - name: "Sable Ardent", - effect: "Le lanceur projette du sable chauffé à blanc sur la cible, ce qui peut aussi la brûler (30% de chances)." + 'scorchingSands': { + name: 'Sable Ardent', + effect: 'Le lanceur projette du sable chauffé à blanc sur la cible, ce qui peut aussi la brûler (30% de chances).' }, - "jungleHealing": { - name: "Selve Salvatrice", - effect: "Le lanceur fait appel au pouvoir de la jungle pour restaurer les PV et soigner les altérations d’état de ses alliés et de lui-même." + 'jungleHealing': { + name: 'Selve Salvatrice', + effect: 'Le lanceur fait appel au pouvoir de la jungle pour restaurer les PV et soigner les altérations d’état de ses alliés et de lui-même.' }, - "wickedBlow": { - name: "Poing Obscur", - effect: "Le lanceur assène un coup puissant à la cible. Cette technique qui inflige toujours un coup critique est réservée à ceux qui maîtrisent la puissance des Ténèbres." + 'wickedBlow': { + name: 'Poing Obscur', + effect: 'Le lanceur assène un coup puissant à la cible. Cette technique qui inflige toujours un coup critique est réservée à ceux qui maîtrisent la puissance des Ténèbres.' }, - "surgingStrikes": { - name: "Torrent de Coups", - effect: "Le lanceur assène trois coups fluides à la cible. Cette technique qui inflige toujours un coup critique est réservée à ceux qui maîtrisent la puissance de l’Eau." + 'surgingStrikes': { + name: 'Torrent de Coups', + effect: 'Le lanceur assène trois coups fluides à la cible. Cette technique qui inflige toujours un coup critique est réservée à ceux qui maîtrisent la puissance de l’Eau.' }, - "thunderCage": { - name: "Voltageôle", - effect: "Le lanceur frappe la cible, et le piège dans une prison électrique qui dure de quatre à cinq tours." + 'thunderCage': { + name: 'Voltageôle', + effect: 'Le lanceur frappe la cible, et le piège dans une prison électrique qui dure de quatre à cinq tours.' }, - "dragonEnergy": { - name: "Draco-Énergie", - effect: "Le lanceur utilise son énergie vitale pour attaquer la cible. Moins il a de PV, moins l’attaque est puissante." + 'dragonEnergy': { + name: 'Draco-Énergie', + effect: 'Le lanceur utilise son énergie vitale pour attaquer la cible. Moins il a de PV, moins l’attaque est puissante.' }, - "freezingGlare": { - name: "Regard Glaçant", - effect: "Les yeux du lanceur tirent des rayons psychiques qui attaquent la cible et peuvent aussi la geler (10% de chances)." + 'freezingGlare': { + name: 'Regard Glaçant', + effect: 'Les yeux du lanceur tirent des rayons psychiques qui attaquent la cible et peuvent aussi la geler (10% de chances).' }, - "fieryWrath": { - name: "Fureur Ardente", - effect: "Le lanceur canalise sa colère et la transforme en émanation brûlante, avec laquelle il attaque la cible, ce qui peut aussi apeurer celle-ci (20% de chances)." + 'fieryWrath': { + name: 'Fureur Ardente', + effect: 'Le lanceur canalise sa colère et la transforme en émanation brûlante, avec laquelle il attaque la cible, ce qui peut aussi apeurer celle-ci (20% de chances).' }, - "thunderousKick": { - name: "Coup Fulgurant", - effect: "Le lanceur assène un coup de pied à la cible à la vitesse de l’éclair. Baisse aussi la Défense de la cible." + 'thunderousKick': { + name: 'Coup Fulgurant', + effect: 'Le lanceur assène un coup de pied à la cible à la vitesse de l’éclair. Baisse aussi la Défense de la cible.' }, - "glacialLance": { - name: "Lance de Glace", - effect: "Le lanceur attaque la cible avec une lance de glace entourée d’un blizzard." + 'glacialLance': { + name: 'Lance de Glace', + effect: 'Le lanceur attaque la cible avec une lance de glace entourée d’un blizzard.' }, - "astralBarrage": { - name: "Éclat Spectral", - effect: "Le lanceur attaque la cible avec une multitude de petits spectres." + 'astralBarrage': { + name: 'Éclat Spectral', + effect: 'Le lanceur attaque la cible avec une multitude de petits spectres.' }, - "eerieSpell": { - name: "Sort Sinistre", - effect: "Le lanceur attaque avec de puissants pouvoirs psychiques et retire 3 PP de la dernière capacité utilisée par la cible." + 'eerieSpell': { + name: 'Sort Sinistre', + effect: 'Le lanceur attaque avec de puissants pouvoirs psychiques et retire 3 PP de la dernière capacité utilisée par la cible.' }, - "direClaw": { - name: "Griffes Funestes", - effect: "Le lanceur attaque avec des griffes destructrices en visant les points faibles. La cible peut aussi être empoisonnée, paralysée, ou endormie." + 'direClaw': { + name: 'Griffes Funestes', + effect: 'Le lanceur attaque avec des griffes destructrices en visant les points faibles. La cible peut aussi être empoisonnée, paralysée, ou endormie.' }, - "psyshieldBash": { - name: "Sprint Bouclier", - effect: "Le lanceur s’enveloppe d’énergie psychique et frappe sa cible de plein fouet. Cela augmente également la Défense du lanceur." + 'psyshieldBash': { + name: 'Sprint Bouclier', + effect: 'Le lanceur s’enveloppe d’énergie psychique et frappe sa cible de plein fouet. Cela augmente également la Défense du lanceur.' }, - "powerShift": { - name: "Échange Force", - effect: "Le lanceur échange son Attaque avec sa Défense." + 'powerShift': { + name: 'Échange Force', + effect: 'Le lanceur échange son Attaque avec sa Défense.' }, - "stoneAxe": { - name: "Hache de Pierre", - effect: "Le lanceur attaque le point faible de sa cible avec sa hache de pierre. Les débris de pierre se mettent alors à flotter autour de la cible." + 'stoneAxe': { + name: 'Hache de Pierre', + effect: 'Le lanceur attaque le point faible de sa cible avec sa hache de pierre. Les débris de pierre se mettent alors à flotter autour de la cible.' }, - "springtideStorm": { - name: "Typhon Passionné", - effect: "Le lanceur déclenche un violent typhon de haine et d’amour qui s’abat sur la cible. Peut baisser l’Attaque de celle-ci." + 'springtideStorm': { + name: 'Typhon Passionné', + effect: 'Le lanceur déclenche un violent typhon de haine et d’amour qui s’abat sur la cible. Peut baisser l’Attaque de celle-ci.' }, - "mysticalPower": { - name: "Force Mystique", - effect: "Le lanceur attaque en libérant un pouvoir mystique. Cela augmente également son Attaque Spéciale." + 'mysticalPower': { + name: 'Force Mystique', + effect: 'Le lanceur attaque en libérant un pouvoir mystique. Cela augmente également son Attaque Spéciale.' }, - "ragingFury": { - name: "Grand Courroux", - effect: "Le lanceur se déchaîne et attaque en projetant de violentes flammes pendant deux ou trois tours. Il devient ensuite confus." + 'ragingFury': { + name: 'Grand Courroux', + effect: 'Le lanceur se déchaîne et attaque en projetant de violentes flammes pendant deux ou trois tours. Il devient ensuite confus.' }, - "waveCrash": { - name: "Aquatacle", - effect: "Le lanceur se recouvre entièrement d’eau avant de charger sa cible. Cela blesse aussi gravement le lanceur." + 'waveCrash': { + name: 'Aquatacle', + effect: 'Le lanceur se recouvre entièrement d’eau avant de charger sa cible. Cela blesse aussi gravement le lanceur.' }, - "chloroblast": { - name: "Herblast", - effect: "Le lanceur tire un concentré de sa propre chlorophylle sur la cible, ce qui le blesse également." + 'chloroblast': { + name: 'Herblast', + effect: 'Le lanceur tire un concentré de sa propre chlorophylle sur la cible, ce qui le blesse également.' }, - "mountainGale": { - name: "Bise Glaciaire", - effect: "Le lanceur envoie un bloc de glace de la taille d’un iceberg sur la cible, ce qui peut aussi l’apeurer (30% de chances)." + 'mountainGale': { + name: 'Bise Glaciaire', + effect: 'Le lanceur envoie un bloc de glace de la taille d’un iceberg sur la cible, ce qui peut aussi l’apeurer (30% de chances).' }, - "victoryDance": { - name: "Danse Victoire", - effect: "Le lanceur danse vigoureusement pour invoquer la victoire, ce qui augmente son Attaque, sa Défense et sa Vitesse." + 'victoryDance': { + name: 'Danse Victoire', + effect: 'Le lanceur danse vigoureusement pour invoquer la victoire, ce qui augmente son Attaque, sa Défense et sa Vitesse.' }, - "headlongRush": { - name: "Assaut Frontal", - effect: "Le lanceur charge la cible de toutes ses forces, ce qui baisse la Défense et la Défense Spéciale du lanceur." + 'headlongRush': { + name: 'Assaut Frontal', + effect: 'Le lanceur charge la cible de toutes ses forces, ce qui baisse la Défense et la Défense Spéciale du lanceur.' }, - "barbBarrage": { - name: "Multitoxik", - effect: "Une multitude de pointes toxiques frappent la cible et peuvent l’empoisonner. La puissance est doublée si celle-ci est déjà empoisonnée (30% de chances en Style Normal et 50% de chances en Style Puissant)." + 'barbBarrage': { + name: 'Multitoxik', + effect: 'Une multitude de pointes toxiques frappent la cible et peuvent l’empoisonner. La puissance est doublée si celle-ci est déjà empoisonnée (30% de chances en Style Normal et 50% de chances en Style Puissant).' }, - "esperWing": { - name: "Ailes Psycho", - effect: "Le lanceur entaille la cible avec ses ailes renforcées par une émanation psychique. Taux de critiques élevé. Cela augmente la Vitesse du lanceur." + 'esperWing': { + name: 'Ailes Psycho', + effect: 'Le lanceur entaille la cible avec ses ailes renforcées par une émanation psychique. Taux de critiques élevé. Cela augmente la Vitesse du lanceur.' }, - "bitterMalice": { - name: "Cœur de Rancœur", - effect: "Une rancœur glaciale frappe la cible et baisse son Attaque." + 'bitterMalice': { + name: 'Cœur de Rancœur', + effect: 'Une rancœur glaciale frappe la cible et baisse son Attaque.' }, - "shelter": { - name: "Mur Fumigène", - effect: "Rend la peau du lanceur dure comme un mur de fer, ce qui augmente beaucoup sa Défense." + 'shelter': { + name: 'Mur Fumigène', + effect: 'Rend la peau du lanceur dure comme un mur de fer, ce qui augmente beaucoup sa Défense.' }, - "tripleArrows": { - name: "Triple Flèche", - effect: "Le lanceur donne un coup de pied et tire trois flèches simultanément, ce qui peut baisser la Défense de la cible ou l’apeurer (30% de chances). Taux de critiques élevé." + 'tripleArrows': { + name: 'Triple Flèche', + effect: 'Le lanceur donne un coup de pied et tire trois flèches simultanément, ce qui peut baisser la Défense de la cible ou l’apeurer (30% de chances). Taux de critiques élevé.' }, - "infernalParade": { - name: "Cortège Funèbre", - effect: "Une multitude de boules de feu frappent la cible, ce qui peut aussi la brûler (30% de chances et 50% en Style Puissant). La puissance est doublée si celle-ci souffre d’une altération de statut." + 'infernalParade': { + name: 'Cortège Funèbre', + effect: 'Une multitude de boules de feu frappent la cible, ce qui peut aussi la brûler (30% de chances et 50% en Style Puissant). La puissance est doublée si celle-ci souffre d’une altération de statut.' }, - "ceaselessEdge": { - name: "Vagues à Lames", - effect: "Des lames de coquillages entaillent la cible en visant ses points faibles. Les débris de coquillage se répandent sous la forme de picots aux pieds de la cible." + 'ceaselessEdge': { + name: 'Vagues à Lames', + effect: 'Des lames de coquillages entaillent la cible en visant ses points faibles. Les débris de coquillage se répandent sous la forme de picots aux pieds de la cible.' }, - "bleakwindStorm": { - name: "Typhon Hivernal", - effect: "Le lanceur déclenche un typhon froid et brutal qui fait trembler le cœur et le corps de la cible, ce qui peut aussi baisser sa Vitesse." + 'bleakwindStorm': { + name: 'Typhon Hivernal', + effect: 'Le lanceur déclenche un typhon froid et brutal qui fait trembler le cœur et le corps de la cible, ce qui peut aussi baisser sa Vitesse.' }, - "wildboltStorm": { - name: "Typhon Fulgurant", - effect: "Le lanceur déclenche un violent typhon orageux dont les rafales et la foudre frappent la cible, ce qui peut aussi la paralyser (30% de chances en Style Normal et 50% en Style Puissant)." + 'wildboltStorm': { + name: 'Typhon Fulgurant', + effect: 'Le lanceur déclenche un violent typhon orageux dont les rafales et la foudre frappent la cible, ce qui peut aussi la paralyser (30% de chances en Style Normal et 50% en Style Puissant).' }, - "sandsearStorm": { - name: "Typhon Pyrosable", - effect: "Le lanceur déclenche un violent typhon mêlé à du sable ardent qui s’abat sur la cible, ce qui peut la brûler (30% de chances et 50% en Style Puissant)." + 'sandsearStorm': { + name: 'Typhon Pyrosable', + effect: 'Le lanceur déclenche un violent typhon mêlé à du sable ardent qui s’abat sur la cible, ce qui peut la brûler (30% de chances et 50% en Style Puissant).' }, - "lunarBlessing": { - name: "Prière Lunaire", - effect: "Le lanceur adresse une prière à la lune pour restaurer les PV et soigner ses altérations de statut ainsi que celles de ses alliés." + 'lunarBlessing': { + name: 'Prière Lunaire', + effect: 'Le lanceur adresse une prière à la lune pour restaurer les PV et soigner ses altérations de statut ainsi que celles de ses alliés.' }, - "takeHeart": { - name: "Extravaillance", - effect: "Le lanceur fait preuve de bravoure pour soigner ses altérations de statut et augmenter sa puissance offensive et défensive." + 'takeHeart': { + name: 'Extravaillance', + effect: 'Le lanceur fait preuve de bravoure pour soigner ses altérations de statut et augmenter sa puissance offensive et défensive.' }, - "gMaxWildfire": { - name: "Fournaise G-Max", - effect: "Une attaque de type Feu que seul un Dracaufeu Gigamax peut utiliser. Pendant quatre tours, la cible continue de subir des dégâts." + 'gMaxWildfire': { + name: 'Fournaise G-Max', + effect: 'Une attaque de type Feu que seul un Dracaufeu Gigamax peut utiliser. Pendant quatre tours, la cible continue de subir des dégâts.' }, - "gMaxBefuddle": { - name: "Illusion G-Max", - effect: "Une attaque de type Insecte que seul un Papilusion Gigamax peut utiliser. Empoisonne, paralyse ou endort la cible." + 'gMaxBefuddle': { + name: 'Illusion G-Max', + effect: 'Une attaque de type Insecte que seul un Papilusion Gigamax peut utiliser. Empoisonne, paralyse ou endort la cible.' }, - "gMaxVoltCrash": { - name: "Foudre G-Max", - effect: "Une attaque de type Électrik que seul un Pikachu Gigamax peut utiliser. Paralyse la cible." + 'gMaxVoltCrash': { + name: 'Foudre G-Max', + effect: 'Une attaque de type Électrik que seul un Pikachu Gigamax peut utiliser. Paralyse la cible.' }, - "gMaxGoldRush": { - name: "Pactole G-Max", - effect: "Une attaque de type Normal que seul un Miaouss Gigamax peut utiliser. Rend la cible confuse et permet d’obtenir de l’argent à la fin du combat." + 'gMaxGoldRush': { + name: 'Pactole G-Max', + effect: 'Une attaque de type Normal que seul un Miaouss Gigamax peut utiliser. Rend la cible confuse et permet d’obtenir de l’argent à la fin du combat.' }, - "gMaxChiStrike": { - name: "Frappe G-Max", - effect: "Une attaque de type Combat que seul un Mackogneur Gigamax peut utiliser. Augmente le taux de critiques du lanceur et de ses alliés." + 'gMaxChiStrike': { + name: 'Frappe G-Max', + effect: 'Une attaque de type Combat que seul un Mackogneur Gigamax peut utiliser. Augmente le taux de critiques du lanceur et de ses alliés.' }, - "gMaxTerror": { - name: "Hantise G-Max", - effect: "Une attaque de type Spectre que seul un Ectoplasma Gigamax peut utiliser. Empêche les Pokémon ennemis de quitter le combat." + 'gMaxTerror': { + name: 'Hantise G-Max', + effect: 'Une attaque de type Spectre que seul un Ectoplasma Gigamax peut utiliser. Empêche les Pokémon ennemis de quitter le combat.' }, - "gMaxResonance": { - name: "Résonance G-Max", - effect: "Une attaque de type Glace que seul un Lokhlass Gigamax peut utiliser. Réduit les dégâts causés par des capacités pendant cinq tours." + 'gMaxResonance': { + name: 'Résonance G-Max', + effect: 'Une attaque de type Glace que seul un Lokhlass Gigamax peut utiliser. Réduit les dégâts causés par des capacités pendant cinq tours.' }, - "gMaxCuddle": { - name: "Câlin G-Max", - effect: "Une attaque de type Normal que seul un Évoli Gigamax peut utiliser. Rend la cible amoureuse." + 'gMaxCuddle': { + name: 'Câlin G-Max', + effect: 'Une attaque de type Normal que seul un Évoli Gigamax peut utiliser. Rend la cible amoureuse.' }, - "gMaxReplenish": { - name: "Récolte G-Max", - effect: "Une attaque de type Normal que seul un Ronflex Gigamax peut utiliser. Restaure une Baie tenue qui a déjà été mangée." + 'gMaxReplenish': { + name: 'Récolte G-Max', + effect: 'Une attaque de type Normal que seul un Ronflex Gigamax peut utiliser. Restaure une Baie tenue qui a déjà été mangée.' }, - "gMaxMalodor": { - name: "Pestilence G-Max", - effect: "Une attaque de type Poison que seul un Miasmax Gigamax peut utiliser. Empoisonne la cible." + 'gMaxMalodor': { + name: 'Pestilence G-Max', + effect: 'Une attaque de type Poison que seul un Miasmax Gigamax peut utiliser. Empoisonne la cible.' }, - "gMaxStonesurge": { - name: "Récif G-Max", - effect: "Une attaque de type Eau que seul un Torgamord Gigamax peut utiliser. Disperse des pierres aiguisées sur le terrain." + 'gMaxStonesurge': { + name: 'Récif G-Max', + effect: 'Une attaque de type Eau que seul un Torgamord Gigamax peut utiliser. Disperse des pierres aiguisées sur le terrain.' }, - "gMaxWindRage": { - name: "Rafale G-Max", - effect: "Une attaque de type Vol que seul un Corvaillus Gigamax peut utiliser. Permet de briser les barrières comme Protection et Mur Lumière." + 'gMaxWindRage': { + name: 'Rafale G-Max', + effect: 'Une attaque de type Vol que seul un Corvaillus Gigamax peut utiliser. Permet de briser les barrières comme Protection et Mur Lumière.' }, - "gMaxStunShock": { - name: "Choc G-Max", - effect: "Une attaque de type Électrik que seul un Salarsen Gigamax peut utiliser. Empoisonne ou paralyse la cible." + 'gMaxStunShock': { + name: 'Choc G-Max', + effect: 'Une attaque de type Électrik que seul un Salarsen Gigamax peut utiliser. Empoisonne ou paralyse la cible.' }, - "gMaxFinale": { - name: "Cure G-Max", - effect: "Une attaque de type Fée que seul un Charmilly Gigamax peut utiliser. Restaure des PV aux alliés." + 'gMaxFinale': { + name: 'Cure G-Max', + effect: 'Une attaque de type Fée que seul un Charmilly Gigamax peut utiliser. Restaure des PV aux alliés.' }, - "gMaxDepletion": { - name: "Usure G-Max", - effect: "Une attaque de type Dragon que seul un Duralugon Gigamax peut utiliser. Baisse les PP de la dernière capacité utilisée par la cible." + 'gMaxDepletion': { + name: 'Usure G-Max', + effect: 'Une attaque de type Dragon que seul un Duralugon Gigamax peut utiliser. Baisse les PP de la dernière capacité utilisée par la cible.' }, - "gMaxGravitas": { - name: "Ondes G-Max", - effect: "Une attaque de type Psy que seul un Astronelle Gigamax peut utiliser. Intensifie la gravité pendant cinq tours." + 'gMaxGravitas': { + name: 'Ondes G-Max', + effect: 'Une attaque de type Psy que seul un Astronelle Gigamax peut utiliser. Intensifie la gravité pendant cinq tours.' }, - "gMaxVolcalith": { - name: "Téphra G-Max", - effect: "Une attaque de type Roche que seul un Monthracite Gigamax peut utiliser. Pendant quatre tours, la cible continue de subir des dégâts." + 'gMaxVolcalith': { + name: 'Téphra G-Max', + effect: 'Une attaque de type Roche que seul un Monthracite Gigamax peut utiliser. Pendant quatre tours, la cible continue de subir des dégâts.' }, - "gMaxSandblast": { - name: "Enlisement G-Max", - effect: "Une attaque de type Sol que seul un Dunaconda Gigamax peut utiliser. Emprisonne la cible dans une tempête de sable qui dure de quatre à cinq tours." + 'gMaxSandblast': { + name: 'Enlisement G-Max', + effect: 'Une attaque de type Sol que seul un Dunaconda Gigamax peut utiliser. Emprisonne la cible dans une tempête de sable qui dure de quatre à cinq tours.' }, - "gMaxSnooze": { - name: "Torpeur G-Max", - effect: "Une attaque de type Ténèbres que seul un Angoliath Gigamax peut utiliser. Fait bâiller la cible qui s’endort au tour suivant." + 'gMaxSnooze': { + name: 'Torpeur G-Max', + effect: 'Une attaque de type Ténèbres que seul un Angoliath Gigamax peut utiliser. Fait bâiller la cible qui s’endort au tour suivant.' }, - "gMaxTartness": { - name: "Corrosion G-Max", - effect: "Une attaque de type Plante que seul un Pomdrapi Gigamax peut utiliser. Réduit l’Esquive de la cible." + 'gMaxTartness': { + name: 'Corrosion G-Max', + effect: 'Une attaque de type Plante que seul un Pomdrapi Gigamax peut utiliser. Réduit l’Esquive de la cible.' }, - "gMaxSweetness": { - name: "Nectar G-Max", - effect: "Une attaque de type Plante que seul un Dratatin Gigamax peut utiliser. Soigne les altérations de statut des alliés." + 'gMaxSweetness': { + name: 'Nectar G-Max', + effect: 'Une attaque de type Plante que seul un Dratatin Gigamax peut utiliser. Soigne les altérations de statut des alliés.' }, - "gMaxSmite": { - name: "Sentence G-Max", - effect: "Une attaque de type Fée que seul un Sorcilence Gigamax peut utiliser. Rend la cible confuse." + 'gMaxSmite': { + name: 'Sentence G-Max', + effect: 'Une attaque de type Fée que seul un Sorcilence Gigamax peut utiliser. Rend la cible confuse.' }, - "gMaxSteelsurge": { - name: "Percée G-Max", - effect: "Une attaque de type Acier que seul un Pachyradjah Gigamax peut utiliser. Disperse des pics aiguisés sur le terrain." + 'gMaxSteelsurge': { + name: 'Percée G-Max', + effect: 'Une attaque de type Acier que seul un Pachyradjah Gigamax peut utiliser. Disperse des pics aiguisés sur le terrain.' }, - "gMaxMeltdown": { - name: "Fonte G-Max", - effect: "Une attaque de type Acier que seul un Melmetal Gigamax peut utiliser. Empêche la cible d’utiliser la même capacité deux fois de suite." + 'gMaxMeltdown': { + name: 'Fonte G-Max', + effect: 'Une attaque de type Acier que seul un Melmetal Gigamax peut utiliser. Empêche la cible d’utiliser la même capacité deux fois de suite.' }, - "gMaxFoamBurst": { - name: "Bulles G-Max", - effect: "Une attaque de type Eau que seul un Krabboss Gigamax peut utiliser. Réduit beaucoup la Vitesse de la cible." + 'gMaxFoamBurst': { + name: 'Bulles G-Max', + effect: 'Une attaque de type Eau que seul un Krabboss Gigamax peut utiliser. Réduit beaucoup la Vitesse de la cible.' }, - "gMaxCentiferno": { - name: "Combustion G-Max", - effect: "Une attaque de type Feu que seul un Scolocendre Gigamax peut utiliser. Emprisonne la cible dans un tourbillon de flammes qui dure de quatre à cinq tours." + 'gMaxCentiferno': { + name: 'Combustion G-Max', + effect: 'Une attaque de type Feu que seul un Scolocendre Gigamax peut utiliser. Emprisonne la cible dans un tourbillon de flammes qui dure de quatre à cinq tours.' }, - "gMaxVineLash": { - name: "Fouet G-Max", - effect: "Une attaque de type Plante que seul un Florizarre Gigamax peut utiliser. Inflige des dégâts à la cible pendant quatre tours." + 'gMaxVineLash': { + name: 'Fouet G-Max', + effect: 'Une attaque de type Plante que seul un Florizarre Gigamax peut utiliser. Inflige des dégâts à la cible pendant quatre tours.' }, - "gMaxCannonade": { - name: "Canonnade G-Max", - effect: "Une attaque de type Eau que seul un Tortank Gigamax peut utiliser. Inflige des dégâts à la cible pendant quatre tours." + 'gMaxCannonade': { + name: 'Canonnade G-Max', + effect: 'Une attaque de type Eau que seul un Tortank Gigamax peut utiliser. Inflige des dégâts à la cible pendant quatre tours.' }, - "gMaxDrumSolo": { - name: "Percussion G-Max", - effect: "Une attaque de type Plante que seul un Gorythmic Gigamax peut utiliser. Ignore le talent de la cible." + 'gMaxDrumSolo': { + name: 'Percussion G-Max', + effect: 'Une attaque de type Plante que seul un Gorythmic Gigamax peut utiliser. Ignore le talent de la cible.' }, - "gMaxFireball": { - name: "Pyroball G-Max", - effect: "Une attaque de type Feu que seul un Pyrobut Gigamax peut utiliser. Ignore le talent de la cible." + 'gMaxFireball': { + name: 'Pyroball G-Max', + effect: 'Une attaque de type Feu que seul un Pyrobut Gigamax peut utiliser. Ignore le talent de la cible.' }, - "gMaxHydrosnipe": { - name: "Gâchette G-Max", - effect: "Une attaque de type Eau que seul un Lézargus Gigamax peut utiliser. Ignore le talent de la cible." + 'gMaxHydrosnipe': { + name: 'Gâchette G-Max', + effect: 'Une attaque de type Eau que seul un Lézargus Gigamax peut utiliser. Ignore le talent de la cible.' }, - "gMaxOneBlow": { - name: "Coup Final G-Max", - effect: "Une attaque de type Ténèbres que seul un Shifours Gigamax peut utiliser. Cette frappe unique permet d’ignorer la capacité Gardomax." + 'gMaxOneBlow': { + name: 'Coup Final G-Max', + effect: 'Une attaque de type Ténèbres que seul un Shifours Gigamax peut utiliser. Cette frappe unique permet d’ignorer la capacité Gardomax.' }, - "gMaxRapidFlow": { - name: "Multicoup G-Max", - effect: "Une attaque de type Eau que seul un Shifours Gigamax peut utiliser. Cet enchaînement de coups permet d’ignorer la capacité Gardomax." + 'gMaxRapidFlow': { + name: 'Multicoup G-Max', + effect: 'Une attaque de type Eau que seul un Shifours Gigamax peut utiliser. Cet enchaînement de coups permet d’ignorer la capacité Gardomax.' }, - "teraBlast": { - name: "Téra Explosion", - effect: "Si le lanceur est téracristallisé, il libère l’énergie de son type Téracristal. La capacité utilise l’Attaque ou l’Attaque Spéciale, selon ce qui infligera le plus de dégâts." + 'teraBlast': { + name: 'Téra Explosion', + effect: 'Si le lanceur est téracristallisé, il libère l’énergie de son type Téracristal. La capacité utilise l’Attaque ou l’Attaque Spéciale, selon ce qui infligera le plus de dégâts.' }, - "silkTrap": { - name: "Piège de Fil", - effect: "Le lanceur déploie un piège de fil pour se protéger contre les attaques, et si un assaillant utilise une attaque directe contre lui, la Vitesse de l’assaillant baisse." + 'silkTrap': { + name: 'Piège de Fil', + effect: 'Le lanceur déploie un piège de fil pour se protéger contre les attaques, et si un assaillant utilise une attaque directe contre lui, la Vitesse de l’assaillant baisse.' }, - "axeKick": { - name: "Talon-Marteau", - effect: "Le lanceur donne un coup de talon descendant à la cible, ce qui peut aussi la rendre confuse. S’il échoue, le lanceur se blesse." + 'axeKick': { + name: 'Talon-Marteau', + effect: 'Le lanceur donne un coup de talon descendant à la cible, ce qui peut aussi la rendre confuse. S’il échoue, le lanceur se blesse.' }, - "lastRespects": { - name: "Hommage Posthume", - effect: "Le lanceur attaque pour venger ses alliés. Plus le nombre de Pokémon alliés mis K.O. est élevé, plus la puissance de cette capacité augmente." + 'lastRespects': { + name: 'Hommage Posthume', + effect: 'Le lanceur attaque pour venger ses alliés. Plus le nombre de Pokémon alliés mis K.O. est élevé, plus la puissance de cette capacité augmente.' }, - "luminaCrash": { - name: "Lumino-Impact", - effect: "Le lanceur attaque en émettant une étrange lumière qui ébranle l’esprit de la cible. Cela baisse beaucoup la Défense Spéciale de la cible." + 'luminaCrash': { + name: 'Lumino-Impact', + effect: 'Le lanceur attaque en émettant une étrange lumière qui ébranle l’esprit de la cible. Cela baisse beaucoup la Défense Spéciale de la cible.' }, - "orderUp": { - name: "Plat du Jour", - effect: "Le lanceur attaque avec adresse et élégance. S’il a un Nigirigon dans la gueule, une de ses stats augmente en fonction de la forme de celui-ci." + 'orderUp': { + name: 'Plat du Jour', + effect: 'Le lanceur attaque avec adresse et élégance. S’il a un Nigirigon dans la gueule, une de ses stats augmente en fonction de la forme de celui-ci.' }, - "jetPunch": { - name: "Poing Sonique", - effect: "Le lanceur enveloppe son poing d’un torrent furieux et attaque si rapidement qu’on peine à le discerner. Frappe en priorité." + 'jetPunch': { + name: 'Poing Sonique', + effect: 'Le lanceur enveloppe son poing d’un torrent furieux et attaque si rapidement qu’on peine à le discerner. Frappe en priorité.' }, - "spicyExtract": { - name: "Habanerage", - effect: "Le lanceur relâche un concentré extrêmement pimenté sur la cible, ce qui augmente beaucoup l’Attaque de celle-ci, mais baisse aussi beaucoup sa Défense." + 'spicyExtract': { + name: 'Habanerage', + effect: 'Le lanceur relâche un concentré extrêmement pimenté sur la cible, ce qui augmente beaucoup l’Attaque de celle-ci, mais baisse aussi beaucoup sa Défense.' }, - "spinOut": { - name: "Dérapage", - effect: "Le lanceur met tout son poids sur ses pattes et effectue de violentes rotations, ce qui inflige des dégâts à la cible, mais baisse beaucoup la Vitesse du lanceur." + 'spinOut': { + name: 'Dérapage', + effect: 'Le lanceur met tout son poids sur ses pattes et effectue de violentes rotations, ce qui inflige des dégâts à la cible, mais baisse beaucoup la Vitesse du lanceur.' }, - "populationBomb": { - name: "Prolifération", - effect: "Le lanceur et ses congénères prolifèrent en masse et attaquent ensemble d’une à dix fois d’affilée." + 'populationBomb': { + name: 'Prolifération', + effect: 'Le lanceur et ses congénères prolifèrent en masse et attaquent ensemble d’une à dix fois d’affilée.' }, - "iceSpinner": { - name: "Cryo-Pirouette", - effect: "Le lanceur enveloppe ses jambes d’une fine couche de glace et heurte la cible en tournant sur lui-même. Ses rotations détruisent le champ actif sur le terrain." + 'iceSpinner': { + name: 'Cryo-Pirouette', + effect: 'Le lanceur enveloppe ses jambes d’une fine couche de glace et heurte la cible en tournant sur lui-même. Ses rotations détruisent le champ actif sur le terrain.' }, - "glaiveRush": { - name: "Charge Glaive", - effect: "Le lanceur se jette dans une charge inconsciente sur la cible. Au tour suivant, l’attaque de la cible inflige le double de dégâts et n’échoue jamais." + 'glaiveRush': { + name: 'Charge Glaive', + effect: 'Le lanceur se jette dans une charge inconsciente sur la cible. Au tour suivant, l’attaque de la cible inflige le double de dégâts et n’échoue jamais.' }, - "revivalBlessing": { - name: "Second Souffle", - effect: "Dans un élan de compassion, le lanceur adresse une prière afin de ranimer un Pokémon de l’équipe K.O. en lui rendant la moitié de ses PV." + 'revivalBlessing': { + name: 'Second Souffle', + effect: 'Dans un élan de compassion, le lanceur adresse une prière afin de ranimer un Pokémon de l’équipe K.O. en lui rendant la moitié de ses PV.' }, - "saltCure": { - name: "Salaison", - effect: "Le lanceur couvre la cible de sel, ce qui lui inflige des dégâts à chaque tour. Si la cible est de type Acier ou Eau, ces dégâts sont plus élevés." + 'saltCure': { + name: 'Salaison', + effect: 'Le lanceur couvre la cible de sel, ce qui lui inflige des dégâts à chaque tour. Si la cible est de type Acier ou Eau, ces dégâts sont plus élevés.' }, - "tripleDive": { - name: "Triple Plongeon", - effect: "Le lanceur effectue des plongeons parfaitement cadencés pour éclabousser la cible et lui infliger des dégâts trois fois d’affilée." + 'tripleDive': { + name: 'Triple Plongeon', + effect: 'Le lanceur effectue des plongeons parfaitement cadencés pour éclabousser la cible et lui infliger des dégâts trois fois d’affilée.' }, - "mortalSpin": { - name: "Toupie Éclat", - effect: "Le lanceur attaque en tournant sur lui-même et empoisonne la cible. Il se libère également des effets de capacités comme Étreinte, Ligotage ou Vampigraine." + 'mortalSpin': { + name: 'Toupie Éclat', + effect: 'Le lanceur attaque en tournant sur lui-même et empoisonne la cible. Il se libère également des effets de capacités comme Étreinte, Ligotage ou Vampigraine.' }, - "doodle": { - name: "Décalquage", - effect: "Le lanceur capture l’essence de la cible et la décalque. Le talent du lanceur et de ses alliés devient alors identique à celui de la cible." + 'doodle': { + name: 'Décalquage', + effect: 'Le lanceur capture l’essence de la cible et la décalque. Le talent du lanceur et de ses alliés devient alors identique à celui de la cible.' }, - "filletAway": { - name: "Décharnement", - effect: "Le lanceur sacrifie des PV pour beaucoup augmenter son Attaque, son Attaque Spéciale, et sa Vitesse." + 'filletAway': { + name: 'Décharnement', + effect: 'Le lanceur sacrifie des PV pour beaucoup augmenter son Attaque, son Attaque Spéciale, et sa Vitesse.' }, - "kowtowCleave": { - name: "Génusection", - effect: "Le lanceur se prosterne devant la cible et profite de cette distraction pour l’attaquer avec une lame. N’échoue jamais." + 'kowtowCleave': { + name: 'Génusection', + effect: 'Le lanceur se prosterne devant la cible et profite de cette distraction pour l’attaquer avec une lame. N’échoue jamais.' }, - "flowerTrick": { - name: "Magie Florale", - effect: "Le lanceur attaque en jetant un bouquet de fleurs piégé sur la cible. N’échoue jamais et inflige toujours un coup critique." + 'flowerTrick': { + name: 'Magie Florale', + effect: 'Le lanceur attaque en jetant un bouquet de fleurs piégé sur la cible. N’échoue jamais et inflige toujours un coup critique.' }, - "torchSong": { - name: "Chant Flamboyant", - effect: "Le lanceur carbonise la cible en projetant sur elle de vives flammes créées par un chant. Cette capacité augmente l’Attaque Spéciale du lanceur." + 'torchSong': { + name: 'Chant Flamboyant', + effect: 'Le lanceur carbonise la cible en projetant sur elle de vives flammes créées par un chant. Cette capacité augmente l’Attaque Spéciale du lanceur.' }, - "aquaStep": { - name: "Danse Aquatique", - effect: "Le lanceur se joue de la cible et lui inflige des dégâts avec ses pas de danse gracieux et légers. Cette capacité augmente la Vitesse du lanceur." + 'aquaStep': { + name: 'Danse Aquatique', + effect: 'Le lanceur se joue de la cible et lui inflige des dégâts avec ses pas de danse gracieux et légers. Cette capacité augmente la Vitesse du lanceur.' }, - "ragingBull": { - name: "Taurogne", - effect: "Le lanceur charge la cible comme un taureau enragé. Le type de cette capacité dépend de la race du lanceur, et brise les barrières comme Mur Lumière et Protection." + 'ragingBull': { + name: 'Taurogne', + effect: 'Le lanceur charge la cible comme un taureau enragé. Le type de cette capacité dépend de la race du lanceur, et brise les barrières comme Mur Lumière et Protection.' }, - "makeItRain": { - name: "Ruée d’Or", - effect: "Le lanceur attaque en lançant de nombreuses pièces, ce qui baisse son Attaque Spéciale. Permet d’obtenir plus d’argent à la fin du combat." + 'makeItRain': { + name: 'Ruée d’Or', + effect: 'Le lanceur attaque en lançant de nombreuses pièces, ce qui baisse son Attaque Spéciale. Permet d’obtenir plus d’argent à la fin du combat.' }, - "psyblade": { - name: "Lame Psychique", - effect: "Le lanceur lacère la cible à l’aide d’une lame intangible. S’il se trouve dans un champ électrifié, la puissance de cette capacité augmente de 50 %." + 'psyblade': { + name: 'Lame Psychique', + effect: 'Le lanceur lacère la cible à l’aide d’une lame intangible. S’il se trouve dans un champ électrifié, la puissance de cette capacité augmente de 50 %.' }, - "hydroSteam": { - name: "Hydrovapeur", - effect: "Le lanceur asperge la cible avec un puissant jet d’eau bouillante. Quand le soleil brille, la puissance de cette capacité augmente de 50 % au lieu de baisser." + 'hydroSteam': { + name: 'Hydrovapeur', + effect: 'Le lanceur asperge la cible avec un puissant jet d’eau bouillante. Quand le soleil brille, la puissance de cette capacité augmente de 50 % au lieu de baisser.' }, - "ruination": { - name: "Cataclysme", - effect: "Le lanceur déclenche un cataclysme qui baisse les PV de la cible de moitié." + 'ruination': { + name: 'Cataclysme', + effect: 'Le lanceur déclenche un cataclysme qui baisse les PV de la cible de moitié.' }, - "collisionCourse": { - name: "Nitro Crash", - effect: "Le lanceur change de forme et s’écrase sur la cible dans une explosion antique. Si la capacité est super efficace, elle inflige encore plus de dégâts que d’ordinaire." + 'collisionCourse': { + name: 'Nitro Crash', + effect: 'Le lanceur change de forme et s’écrase sur la cible dans une explosion antique. Si la capacité est super efficace, elle inflige encore plus de dégâts que d’ordinaire.' }, - "electroDrift": { - name: "Turbo Volt", - effect: "Le lanceur change de forme et fonce sur la cible en la perforant d’électricité futuriste. Si la capacité est super efficace, sa puissance augmente encore plus." + 'electroDrift': { + name: 'Turbo Volt', + effect: 'Le lanceur change de forme et fonce sur la cible en la perforant d’électricité futuriste. Si la capacité est super efficace, sa puissance augmente encore plus.' }, - "shedTail": { - name: "Queulonage", - effect: "Le lanceur crée un clone en sacrifiant des PV, puis il revient et échange sa place avec un Pokémon de l’équipe prêt à combattre." + 'shedTail': { + name: 'Queulonage', + effect: 'Le lanceur crée un clone en sacrifiant des PV, puis il revient et échange sa place avec un Pokémon de l’équipe prêt à combattre.' }, - "chillyReception": { - name: "Neigeux de Mots", - effect: "Le lanceur fait un si mauvais jeu de mots qu’il jette un froid et échange sa place avec un Pokémon de l’équipe prêt à combattre. La neige tombe pendant cinq tours." + 'chillyReception': { + name: 'Neigeux de Mots', + effect: 'Le lanceur fait un si mauvais jeu de mots qu’il jette un froid et échange sa place avec un Pokémon de l’équipe prêt à combattre. La neige tombe pendant cinq tours.' }, - "tidyUp": { - name: "Grand Nettoyage", - effect: "Le lanceur fait le ménage sur le terrain, ce qui annule les effets de Picots, Piège de Roc, Toile Gluante, Pics Toxik, et Clonage. Augmente l’Attaque et la Vitesse du lanceur." + 'tidyUp': { + name: 'Grand Nettoyage', + effect: 'Le lanceur fait le ménage sur le terrain, ce qui annule les effets de Picots, Piège de Roc, Toile Gluante, Pics Toxik, et Clonage. Augmente l’Attaque et la Vitesse du lanceur.' }, - "snowscape": { - name: "Chute de Neige", - effect: "Le lanceur invoque une tempête de neige qui dure cinq tours, ce qui augmente la Défense des Pokémon de type Glace." + 'snowscape': { + name: 'Chute de Neige', + effect: 'Le lanceur invoque une tempête de neige qui dure cinq tours, ce qui augmente la Défense des Pokémon de type Glace.' }, - "pounce": { - name: "Bond", - effect: "Le lanceur attaque en bondissant sur la cible, ce qui baisse la Vitesse de celle-ci." + 'pounce': { + name: 'Bond', + effect: 'Le lanceur attaque en bondissant sur la cible, ce qui baisse la Vitesse de celle-ci.' }, - "trailblaze": { - name: "Désherbaffe", - effect: "Le lanceur surgit des hautes herbes pour attaquer la cible. Les mouvements agiles du lanceur augmentent sa Vitesse." + 'trailblaze': { + name: 'Désherbaffe', + effect: 'Le lanceur surgit des hautes herbes pour attaquer la cible. Les mouvements agiles du lanceur augmentent sa Vitesse.' }, - "chillingWater": { - name: "Douche Froide", - effect: "Le lanceur attaque la cible en l’arrosant d’une eau si froide qu’elle détériore son esprit combatif. Baisse l’Attaque de la cible." + 'chillingWater': { + name: 'Douche Froide', + effect: 'Le lanceur attaque la cible en l’arrosant d’une eau si froide qu’elle détériore son esprit combatif. Baisse l’Attaque de la cible.' }, - "hyperDrill": { - name: "Hyperceuse", - effect: "Le lanceur fait tourner à toute vitesse la partie pointue de son corps afin de transpercer la cible. Ignore même les capacités comme Abri ou Détection." + 'hyperDrill': { + name: 'Hyperceuse', + effect: 'Le lanceur fait tourner à toute vitesse la partie pointue de son corps afin de transpercer la cible. Ignore même les capacités comme Abri ou Détection.' }, - "twinBeam": { - name: "Double Laser", - effect: "Le lanceur projette d’étranges rayons lumineux avec ses yeux et inflige des dégâts deux fois d’affilée." + 'twinBeam': { + name: 'Double Laser', + effect: 'Le lanceur projette d’étranges rayons lumineux avec ses yeux et inflige des dégâts deux fois d’affilée.' }, - "rageFist": { - name: "Poing de Colère", - effect: "Le lanceur transforme sa colère en énergie pour attaquer. Plus il a subi d’attaques, plus la puissance de cette capacité augmente." + 'rageFist': { + name: 'Poing de Colère', + effect: 'Le lanceur transforme sa colère en énergie pour attaquer. Plus il a subi d’attaques, plus la puissance de cette capacité augmente.' }, - "armorCannon": { - name: "Canon Blindé", - effect: "Le lanceur tire un boulet de canon ardent provenant de sa propre armure sur la cible. Cela baisse la Défense et la Défense Spéciale du lanceur." + 'armorCannon': { + name: 'Canon Blindé', + effect: 'Le lanceur tire un boulet de canon ardent provenant de sa propre armure sur la cible. Cela baisse la Défense et la Défense Spéciale du lanceur.' }, - "bitterBlade": { - name: "Lame en Peine", - effect: "Le lanceur concentre son amertume du monde des vivants dans la pointe de ses épées et tranche la cible. La moitié des dégâts infligés sont convertis en PV pour le lanceur." + 'bitterBlade': { + name: 'Lame en Peine', + effect: 'Le lanceur concentre son amertume du monde des vivants dans la pointe de ses épées et tranche la cible. La moitié des dégâts infligés sont convertis en PV pour le lanceur.' }, - "doubleShock": { - name: "Double Décharge", - effect: "Le lanceur libère toute l’électricité contenue dans son corps pour infliger des dégâts élevés à la cible. Le lanceur perd le type Électrik." + 'doubleShock': { + name: 'Double Décharge', + effect: 'Le lanceur libère toute l’électricité contenue dans son corps pour infliger des dégâts élevés à la cible. Le lanceur perd le type Électrik.' }, - "gigatonHammer": { - name: "Marteau Mastoc", - effect: "Le lanceur met tout son corps à contribution pour attaquer la cible avec un immense marteau. Cette capacité ne peut pas être utilisée deux fois d’affilée." + 'gigatonHammer': { + name: 'Marteau Mastoc', + effect: 'Le lanceur met tout son corps à contribution pour attaquer la cible avec un immense marteau. Cette capacité ne peut pas être utilisée deux fois d’affilée.' }, - "comeuppance": { - name: "Vindicte", - effect: "Le lanceur contre-attaque avec un coup infligeant des dégâts supérieurs à ceux de la dernière capacité qui l’a blessé." + 'comeuppance': { + name: 'Vindicte', + effect: 'Le lanceur contre-attaque avec un coup infligeant des dégâts supérieurs à ceux de la dernière capacité qui l’a blessé.' }, - "aquaCutter": { - name: "Tranch’Aqua", - effect: "Le lanceur projette de l’eau pressurisée qui entaille la cible comme une lame. Taux de critiques élevé." + 'aquaCutter': { + name: 'Tranch’Aqua', + effect: 'Le lanceur projette de l’eau pressurisée qui entaille la cible comme une lame. Taux de critiques élevé.' }, - "blazingTorque": { - name: "Crash Brûlant", - effect: "Crash Brûlant inflige des dégâts et possède 30 % de chances de brûler l’adversaire." + 'blazingTorque': { + name: 'Crash Brûlant', + effect: 'Crash Brûlant inflige des dégâts et possède 30 % de chances de brûler l’adversaire.' }, - "wickedTorque": { - name: "Crash Obscur", - effect: "Crash Obscur inflige des dégâts et possède 10 % de chances d’endormir l’adversaire." + 'wickedTorque': { + name: 'Crash Obscur', + effect: 'Crash Obscur inflige des dégâts et possède 10 % de chances d’endormir l’adversaire.' }, - "noxiousTorque": { - name: "Crash Toxique", - effect: "Crash Toxique inflige des dégâts et possède 30 % de chances d’empoisonner l’adversaire." + 'noxiousTorque': { + name: 'Crash Toxique', + effect: 'Crash Toxique inflige des dégâts et possède 30 % de chances d’empoisonner l’adversaire.' }, - "combatTorque": { - name: "Crash Musclé", - effect: "Crash Musclé inflige des dégâts et possède 30 % de chances de paralyser l’adversaire." + 'combatTorque': { + name: 'Crash Musclé', + effect: 'Crash Musclé inflige des dégâts et possède 30 % de chances de paralyser l’adversaire.' }, - "magicalTorque": { - name: "Crash Magique", - effect: "Crash Magique inflige des dégâts et possède 30 % de chances de rendre l’adversaire confus." + 'magicalTorque': { + name: 'Crash Magique', + effect: 'Crash Magique inflige des dégâts et possède 30 % de chances de rendre l’adversaire confus.' }, - "bloodMoon": { - name: "Lune Rouge", - effect: "Le lanceur concentre toute son énergie dans la lune rouge sang sur son front et la projette sur la cible. Cette capacité ne peut pas être utilisée deux fois d’affilée." + 'bloodMoon': { + name: 'Lune Rouge', + effect: 'Le lanceur concentre toute son énergie dans la lune rouge sang sur son front et la projette sur la cible. Cette capacité ne peut pas être utilisée deux fois d’affilée.' }, - "matchaGotcha": { - name: "Mortier Matcha", - effect: "Le lanceur remue son thé et en bombarde la cible. La moitié des dégâts infligés sont convertis en PV pour le lanceur. Cette capacité peut aussi brûler la cible." + 'matchaGotcha': { + name: 'Mortier Matcha', + effect: 'Le lanceur remue son thé et en bombarde la cible. La moitié des dégâts infligés sont convertis en PV pour le lanceur. Cette capacité peut aussi brûler la cible.' }, - "syrupBomb": { - name: "Bombe au Sirop", - effect: "Le lanceur jette une bombe qui recouvre la cible de sirop gluant et fait progressivement baisser la Vitesse de la cible pendant trois tours." + 'syrupBomb': { + name: 'Bombe au Sirop', + effect: 'Le lanceur jette une bombe qui recouvre la cible de sirop gluant et fait progressivement baisser la Vitesse de la cible pendant trois tours.' }, - "ivyCudgel": { - name: "Massue Liane", - effect: "Le lanceur frappe la cible à l’aide d’une massue entourée d’une liane. Le type de cette capacité varie en fonction du masque que porte le lanceur. Taux de critiques élevé." + 'ivyCudgel': { + name: 'Massue Liane', + effect: 'Le lanceur frappe la cible à l’aide d’une massue entourée d’une liane. Le type de cette capacité varie en fonction du masque que porte le lanceur. Taux de critiques élevé.' }, - "electroShot": { - name: "Fulgurayon", - effect: "Le lanceur absorbe de l’électricité au premier tour, ce qui augmente son Attaque Spéciale, et envoie une puissante décharge au second. S’il pleut, il l’envoie au premier tour." + 'electroShot': { + name: 'Fulgurayon', + effect: 'Le lanceur absorbe de l’électricité au premier tour, ce qui augmente son Attaque Spéciale, et envoie une puissante décharge au second. S’il pleut, il l’envoie au premier tour.' }, - "teraStarstorm": { - name: "Pluie Térastrale", - effect: "Le lanceur bombarde la cible afin de l’éliminer grâce au pouvoir des cristaux. Si le lanceur est Terapagos sous sa Forme Stellaire, la capacité touche tous les ennemis." + 'teraStarstorm': { + name: 'Pluie Térastrale', + effect: 'Le lanceur bombarde la cible afin de l’éliminer grâce au pouvoir des cristaux. Si le lanceur est Terapagos sous sa Forme Stellaire, la capacité touche tous les ennemis.' }, - "fickleBeam": { - name: "Laser Hasard", - effect: "Le lanceur attaque en tirant un rayon lumineux. Il arrive parfois que toutes les têtes agissent ensemble, ce qui double la puissance de la capacité." + 'fickleBeam': { + name: 'Laser Hasard', + effect: 'Le lanceur attaque en tirant un rayon lumineux. Il arrive parfois que toutes les têtes agissent ensemble, ce qui double la puissance de la capacité.' }, - "burningBulwark": { - name: "Rempart Brûlant", - effect: "Le lanceur se protège contre les attaques grâce à son pelage incandescent, et si un assaillant utilise une attaque directe contre lui, il le brûle." + 'burningBulwark': { + name: 'Rempart Brûlant', + effect: 'Le lanceur se protège contre les attaques grâce à son pelage incandescent, et si un assaillant utilise une attaque directe contre lui, il le brûle.' }, - "thunderclap": { - name: "Vif Éclair", - effect: "Permet au lanceur d’attaquer la cible en priorité avec une décharge électrique. Échoue si la cible ne prépare pas une attaque." + 'thunderclap': { + name: 'Vif Éclair', + effect: 'Permet au lanceur d’attaquer la cible en priorité avec une décharge électrique. Échoue si la cible ne prépare pas une attaque.' }, - "mightyCleave": { - name: "Lame Puissante", - effect: "Le lanceur pourfend la cible avec la lumière accumulée sur sa tête. Cette attaque passe outre les protections." + 'mightyCleave': { + name: 'Lame Puissante', + effect: 'Le lanceur pourfend la cible avec la lumière accumulée sur sa tête. Cette attaque passe outre les protections.' }, - "tachyonCutter": { - name: "Lame Tachyonique", - effect: "Le lanceur concentre des particules élémentaires pour créer une lame qui inflige des dégâts à la cible deux fois d’affilée. N’échoue jamais." + 'tachyonCutter': { + name: 'Lame Tachyonique', + effect: 'Le lanceur concentre des particules élémentaires pour créer une lame qui inflige des dégâts à la cible deux fois d’affilée. N’échoue jamais.' }, - "hardPress": { - name: "Pression Extrême", - effect: "Le lanceur écrase la cible avec ses bras ou ses pinces. Plus il reste de PV à la cible, plus la puissance de la capacité augmente." + 'hardPress': { + name: 'Pression Extrême', + effect: 'Le lanceur écrase la cible avec ses bras ou ses pinces. Plus il reste de PV à la cible, plus la puissance de la capacité augmente.' }, - "dragonCheer": { - name: "Cri Draconique", - effect: "Le lanceur galvanise ses alliés avec un encouragement draconique qui augmente leur taux de critiques. L’effet est plus puissant si les alliés ont le type Dragon." + 'dragonCheer': { + name: 'Cri Draconique', + effect: 'Le lanceur galvanise ses alliés avec un encouragement draconique qui augmente leur taux de critiques. L’effet est plus puissant si les alliés ont le type Dragon.' }, - "alluringVoice": { - name: "Voix Envoûtante", - effect: "Le lanceur attaque la cible avec sa voix angélique. Cette capacité rend la cible confuse si ses stats ont augmenté pendant ce tour." + 'alluringVoice': { + name: 'Voix Envoûtante', + effect: 'Le lanceur attaque la cible avec sa voix angélique. Cette capacité rend la cible confuse si ses stats ont augmenté pendant ce tour.' }, - "temperFlare": { - name: "Indignition", - effect: "Le lanceur utilise la force de son dépit pour attaquer. S’il a utilisé une capacité qui a échoué au tour précédent, la puissance d’Indignition est doublée." + 'temperFlare': { + name: 'Indignition', + effect: 'Le lanceur utilise la force de son dépit pour attaquer. S’il a utilisé une capacité qui a échoué au tour précédent, la puissance d’Indignition est doublée.' }, - "supercellSlam": { - name: "Volt Assaut", - effect: "Le lanceur se charge en électricité et fond sur la cible. S’il échoue, le lanceur se blesse." + 'supercellSlam': { + name: 'Volt Assaut', + effect: 'Le lanceur se charge en électricité et fond sur la cible. S’il échoue, le lanceur se blesse.' }, - "psychicNoise": { - name: "Dissonance Psy", - effect: "Le lanceur attaque avec des ondes sonores dissonantes. Cela empêche la cible de récupérer des PV à l’aide de capacités, talents ou objets tenus pendant 2 tours." + 'psychicNoise': { + name: 'Dissonance Psy', + effect: 'Le lanceur attaque avec des ondes sonores dissonantes. Cela empêche la cible de récupérer des PV à l’aide de capacités, talents ou objets tenus pendant 2 tours.' }, - "upperHand": { - name: "Prio-Parade", - effect: "Le lanceur réagit instinctivement au moindre mouvement et donne un coup de paume qui apeure la cible. Échoue si cette dernière n’a pas utilisé une attaque prioritaire." + 'upperHand': { + name: 'Prio-Parade', + effect: 'Le lanceur réagit instinctivement au moindre mouvement et donne un coup de paume qui apeure la cible. Échoue si cette dernière n’a pas utilisé une attaque prioritaire.' }, - "malignantChain": { - name: "Chaîne Malsaine", - effect: "Le lanceur ligote la cible avec une chaîne faite de poison et lui injecte un venin corrosif, ce qui peut aussi gravement l’empoisonner." + 'malignantChain': { + name: 'Chaîne Malsaine', + effect: 'Le lanceur ligote la cible avec une chaîne faite de poison et lui injecte un venin corrosif, ce qui peut aussi gravement l’empoisonner.' } } as const; diff --git a/src/locales/fr/nature.ts b/src/locales/fr/nature.ts index 0c838138bfe..e682c13342f 100644 --- a/src/locales/fr/nature.ts +++ b/src/locales/fr/nature.ts @@ -1,29 +1,29 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const nature: SimpleTranslationEntries = { - "Hardy": "Hardi", - "Lonely": "Solo", - "Brave": "Brave", - "Adamant": "Rigide", - "Naughty": "Mauvais", - "Bold": "Assuré", - "Docile": "Docile", - "Relaxed": "Relax", - "Impish": "Malin", - "Lax": "Lâche", - "Timid": "Timide", - "Hasty": "Pressé", - "Serious": "Sérieux", - "Jolly": "Jovial", - "Naive": "Naïf", - "Modest": "Modeste", - "Mild": "Doux", - "Quiet": "Discret", - "Bashful": "Pudique", - "Rash": "Foufou", - "Calm": "Calme", - "Gentle": "Gentil", - "Sassy": "Malpoli", - "Careful": "Prudent", - "Quirky": "Bizarre" + 'Hardy': 'Hardi', + 'Lonely': 'Solo', + 'Brave': 'Brave', + 'Adamant': 'Rigide', + 'Naughty': 'Mauvais', + 'Bold': 'Assuré', + 'Docile': 'Docile', + 'Relaxed': 'Relax', + 'Impish': 'Malin', + 'Lax': 'Lâche', + 'Timid': 'Timide', + 'Hasty': 'Pressé', + 'Serious': 'Sérieux', + 'Jolly': 'Jovial', + 'Naive': 'Naïf', + 'Modest': 'Modeste', + 'Mild': 'Doux', + 'Quiet': 'Discret', + 'Bashful': 'Pudique', + 'Rash': 'Foufou', + 'Calm': 'Calme', + 'Gentle': 'Gentil', + 'Sassy': 'Malpoli', + 'Careful': 'Prudent', + 'Quirky': 'Bizarre' } as const; diff --git a/src/locales/fr/pokeball.ts b/src/locales/fr/pokeball.ts index 82dfea3e2d7..ebcfd50b31f 100644 --- a/src/locales/fr/pokeball.ts +++ b/src/locales/fr/pokeball.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokeball: SimpleTranslationEntries = { - "pokeBall": "Poké Ball", - "greatBall": "Super Ball", - "ultraBall": "Hyper Ball", - "rogueBall": "Rogue Ball", - "masterBall": "Master Ball", - "luxuryBall": "Luxe Ball", -} as const; \ No newline at end of file + 'pokeBall': 'Poké Ball', + 'greatBall': 'Super Ball', + 'ultraBall': 'Hyper Ball', + 'rogueBall': 'Rogue Ball', + 'masterBall': 'Master Ball', + 'luxuryBall': 'Luxe Ball', +} as const; diff --git a/src/locales/fr/pokemon-info.ts b/src/locales/fr/pokemon-info.ts index 0c246bd96a4..d160aa4819b 100644 --- a/src/locales/fr/pokemon-info.ts +++ b/src/locales/fr/pokemon-info.ts @@ -1,41 +1,41 @@ -import { PokemonInfoTranslationEntries } from "#app/plugins/i18n"; +import { PokemonInfoTranslationEntries } from '#app/plugins/i18n'; export const pokemonInfo: PokemonInfoTranslationEntries = { - Stat: { - "HP": "PV", - "HPshortened": "PV", - "ATK": "Attaque", - "ATKshortened": "Atq", - "DEF": "Défense", - "DEFshortened": "Déf", - "SPATK": "Atq. Spé.", - "SPATKshortened": "AtqSp", - "SPDEF": "Déf. Spé.", - "SPDEFshortened": "DéfSp", - "SPD": "Vitesse", - "SPDshortened": "Vit" - }, + Stat: { + 'HP': 'PV', + 'HPshortened': 'PV', + 'ATK': 'Attaque', + 'ATKshortened': 'Atq', + 'DEF': 'Défense', + 'DEFshortened': 'Déf', + 'SPATK': 'Atq. Spé.', + 'SPATKshortened': 'AtqSp', + 'SPDEF': 'Déf. Spé.', + 'SPDEFshortened': 'DéfSp', + 'SPD': 'Vitesse', + 'SPDshortened': 'Vit' + }, - Type: { - "UNKNOWN": "Inconnu", - "NORMAL": "Normal", - "FIGHTING": "Combat", - "FLYING": "Vol", - "POISON": "Poison", - "GROUND": "Sol", - "ROCK": "Roche", - "BUG": "Insecte", - "GHOST": "Spectre", - "STEEL": "Acier", - "FIRE": "Feu", - "WATER": "Eau", - "GRASS": "Plante", - "ELECTRIC": "Électrik", - "PSYCHIC": "Psy", - "ICE": "Glace", - "DRAGON": "Dragon", - "DARK": "Ténèbres", - "FAIRY": "Fée", - "STELLAR": "Stellaire", - }, + Type: { + 'UNKNOWN': 'Inconnu', + 'NORMAL': 'Normal', + 'FIGHTING': 'Combat', + 'FLYING': 'Vol', + 'POISON': 'Poison', + 'GROUND': 'Sol', + 'ROCK': 'Roche', + 'BUG': 'Insecte', + 'GHOST': 'Spectre', + 'STEEL': 'Acier', + 'FIRE': 'Feu', + 'WATER': 'Eau', + 'GRASS': 'Plante', + 'ELECTRIC': 'Électrik', + 'PSYCHIC': 'Psy', + 'ICE': 'Glace', + 'DRAGON': 'Dragon', + 'DARK': 'Ténèbres', + 'FAIRY': 'Fée', + 'STELLAR': 'Stellaire', + }, } as const; diff --git a/src/locales/fr/pokemon.ts b/src/locales/fr/pokemon.ts index fc0ed5e1074..a1f26bf2a56 100644 --- a/src/locales/fr/pokemon.ts +++ b/src/locales/fr/pokemon.ts @@ -1,1086 +1,1086 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokemon: SimpleTranslationEntries = { - "bulbasaur": "Bulbizarre", - "ivysaur": "Herbizarre", - "venusaur": "Florizarre", - "charmander": "Salamèche", - "charmeleon": "Reptincel", - "charizard": "Dracaufeu", - "squirtle": "Carapuce", - "wartortle": "Carabaffe", - "blastoise": "Tortank", - "caterpie": "Chenipan", - "metapod": "Chrysacier", - "butterfree": "Papilusion", - "weedle": "Aspicot", - "kakuna": "Coconfort", - "beedrill": "Dardargnan", - "pidgey": "Roucool", - "pidgeotto": "Roucoups", - "pidgeot": "Roucarnage", - "rattata": "Rattata", - "raticate": "Rattatac", - "spearow": "Piafabec", - "fearow": "Rapasdepic", - "ekans": "Abo", - "arbok": "Arbok", - "pikachu": "Pikachu", - "raichu": "Raichu", - "sandshrew": "Sabelette", - "sandslash": "Sablaireau", - "nidoran_f": "Nidoran♀", - "nidorina": "Nidorina", - "nidoqueen": "Nidoqueen", - "nidoran_m": "Nidoran♂", - "nidorino": "Nidorino", - "nidoking": "Nidoking", - "clefairy": "Mélofée", - "clefable": "Mélodelfe", - "vulpix": "Goupix", - "ninetales": "Feunard", - "jigglypuff": "Rondoudou", - "wigglytuff": "Grodoudou", - "zubat": "Nosferapti", - "golbat": "Nosferalto", - "oddish": "Mystherbe", - "gloom": "Ortide", - "vileplume": "Rafflesia", - "paras": "Paras", - "parasect": "Parasect", - "venonat": "Mimitoss", - "venomoth": "Aéromite", - "diglett": "Taupiqueur", - "dugtrio": "Triopikeur", - "meowth": "Miaouss", - "persian": "Persian", - "psyduck": "Psykokwak", - "golduck": "Akwakwak", - "mankey": "Férosinge", - "primeape": "Colossinge", - "growlithe": "Caninos", - "arcanine": "Arcanin", - "poliwag": "Ptitard", - "poliwhirl": "Têtarte", - "poliwrath": "Tartard", - "abra": "Abra", - "kadabra": "Kadabra", - "alakazam": "Alakazam", - "machop": "Machoc", - "machoke": "Machopeur", - "machamp": "Mackogneur", - "bellsprout": "Chétiflor", - "weepinbell": "Boustiflor", - "victreebel": "Empiflor", - "tentacool": "Tentacool", - "tentacruel": "Tentacruel", - "geodude": "Racaillou", - "graveler": "Gravalanch", - "golem": "Grolem", - "ponyta": "Ponyta", - "rapidash": "Galopa", - "slowpoke": "Ramoloss", - "slowbro": "Flagadoss", - "magnemite": "Magnéti", - "magneton": "Magnéton", - "farfetchd": "Canarticho", - "doduo": "Doduo", - "dodrio": "Dodrio", - "seel": "Otaria", - "dewgong": "Lamantine", - "grimer": "Tadmorv", - "muk": "Grotadmorv", - "shellder": "Kokiyas", - "cloyster": "Crustabri", - "gastly": "Fantominus", - "haunter": "Spectrum", - "gengar": "Ectoplasma", - "onix": "Onix", - "drowzee": "Soporifik", - "hypno": "Hypnomade", - "krabby": "Krabby", - "kingler": "Krabboss", - "voltorb": "Voltorbe", - "electrode": "Électrode", - "exeggcute": "Noeunoeuf", - "exeggutor": "Noadkoko", - "cubone": "Osselait", - "marowak": "Ossatueur", - "hitmonlee": "Kicklee", - "hitmonchan": "Tygnon", - "lickitung": "Excelangue", - "koffing": "Smogo", - "weezing": "Smogogo", - "rhyhorn": "Rhinocorne", - "rhydon": "Rhinoféros", - "chansey": "Leveinard", - "tangela": "Saquedeneu", - "kangaskhan": "Kangourex", - "horsea": "Hypotrempe", - "seadra": "Hypocéan", - "goldeen": "Poissirène", - "seaking": "Poissoroy", - "staryu": "Stari", - "starmie": "Staross", - "mr_mime": "M. Mime", - "scyther": "Insécateur", - "jynx": "Lippoutou", - "electabuzz": "Élektek", - "magmar": "Magmar", - "pinsir": "Scarabrute", - "tauros": "Tauros", - "magikarp": "Magicarpe", - "gyarados": "Léviator", - "lapras": "Lokhlass", - "ditto": "Métamorph", - "eevee": "Évoli", - "vaporeon": "Aquali", - "jolteon": "Voltali", - "flareon": "Pyroli", - "porygon": "Porygon", - "omanyte": "Amonita", - "omastar": "Amonistar", - "kabuto": "Kabuto", - "kabutops": "Kabutops", - "aerodactyl": "Ptéra", - "snorlax": "Ronflex", - "articuno": "Artikodin", - "zapdos": "Électhor", - "moltres": "Sulfura", - "dratini": "Minidraco", - "dragonair": "Draco", - "dragonite": "Dracolosse", - "mewtwo": "Mewtwo", - "mew": "Mew", - "chikorita": "Germignon", - "bayleef": "Macronium", - "meganium": "Méganium", - "cyndaquil": "Héricendre", - "quilava": "Feurisson", - "typhlosion": "Typhlosion", - "totodile": "Kaiminus", - "croconaw": "Crocrodil", - "feraligatr": "Aligatueur", - "sentret": "Fouinette", - "furret": "Fouinar", - "hoothoot": "Hoothoot", - "noctowl": "Noarfang", - "ledyba": "Coxy", - "ledian": "Coxyclaque", - "spinarak": "Mimigal", - "ariados": "Migalos", - "crobat": "Nostenfer", - "chinchou": "Loupio", - "lanturn": "Lanturn", - "pichu": "Pichu", - "cleffa": "Mélo", - "igglybuff": "Toudoudou", - "togepi": "Togepi", - "togetic": "Togetic", - "natu": "Natu", - "xatu": "Xatu", - "mareep": "Wattouat", - "flaaffy": "Lainergie", - "ampharos": "Pharamp", - "bellossom": "Joliflor", - "marill": "Marill", - "azumarill": "Azumarill", - "sudowoodo": "Simularbre", - "politoed": "Tarpaud", - "hoppip": "Granivol", - "skiploom": "Floravol", - "jumpluff": "Cotovol", - "aipom": "Capumain", - "sunkern": "Tournegrin", - "sunflora": "Héliatronc", - "yanma": "Yanma", - "wooper": "Axoloto", - "quagsire": "Maraiste", - "espeon": "Mentali", - "umbreon": "Noctali", - "murkrow": "Cornèbre", - "slowking": "Roigada", - "misdreavus": "Feuforêve", - "unown": "Zarbi", - "wobbuffet": "Qulbutoké", - "girafarig": "Girafarig", - "pineco": "Pomdepik", - "forretress": "Foretress", - "dunsparce": "Insolourdo", - "gligar": "Scorplane", - "steelix": "Steelix", - "snubbull": "Snubbull", - "granbull": "Granbull", - "qwilfish": "Qwilfish", - "scizor": "Cizayox", - "shuckle": "Caratroc", - "heracross": "Scarhino", - "sneasel": "Farfuret", - "teddiursa": "Teddiursa", - "ursaring": "Ursaring", - "slugma": "Limagma", - "magcargo": "Volcaropod", - "swinub": "Marcacrin", - "piloswine": "Cochignon", - "corsola": "Corayon", - "remoraid": "Rémoraid", - "octillery": "Octillery", - "delibird": "Cadoizo", - "mantine": "Démanta", - "skarmory": "Airmure", - "houndour": "Malosse", - "houndoom": "Démolosse", - "kingdra": "Hyporoi", - "phanpy": "Phanpy", - "donphan": "Donphan", - "porygon2": "Porygon2", - "stantler": "Cerfrousse", - "smeargle": "Queulorior", - "tyrogue": "Debugant", - "hitmontop": "Kapoera", - "smoochum": "Lippouti", - "elekid": "Élekid", - "magby": "Magby", - "miltank": "Écrémeuh", - "blissey": "Leuphorie", - "raikou": "Raikou", - "entei": "Entei", - "suicune": "Suicune", - "larvitar": "Embrylex", - "pupitar": "Ymphect", - "tyranitar": "Tyranocif", - "lugia": "Lugia", - "ho_oh": "Ho-Oh", - "celebi": "Celebi", - "treecko": "Arcko", - "grovyle": "Massko", - "sceptile": "Jungko", - "torchic": "Poussifeu", - "combusken": "Galifeu", - "blaziken": "Braségali", - "mudkip": "Gobou", - "marshtomp": "Flobio", - "swampert": "Laggron", - "poochyena": "Medhyèna", - "mightyena": "Grahyèna", - "zigzagoon": "Zigzaton", - "linoone": "Linéon", - "wurmple": "Chenipotte", - "silcoon": "Armulys", - "beautifly": "Charmillon", - "cascoon": "Blindalys", - "dustox": "Papinox", - "lotad": "Nénupiot", - "lombre": "Lombre", - "ludicolo": "Ludicolo", - "seedot": "Grainipiot", - "nuzleaf": "Pifeuil", - "shiftry": "Tengalice", - "taillow": "Nirondelle", - "swellow": "Hélédelle", - "wingull": "Goélise", - "pelipper": "Bekipan", - "ralts": "Tarsal", - "kirlia": "Kirlia", - "gardevoir": "Gardevoir", - "surskit": "Arakdo", - "masquerain": "Maskadra", - "shroomish": "Balignon", - "breloom": "Chapignon", - "slakoth": "Parecool", - "vigoroth": "Vigoroth", - "slaking": "Monaflèmit", - "nincada": "Ningale", - "ninjask": "Ninjask", - "shedinja": "Munja", - "whismur": "Chuchmur", - "loudred": "Ramboum", - "exploud": "Brouhabam", - "makuhita": "Makuhita", - "hariyama": "Hariyama", - "azurill": "Azurill", - "nosepass": "Tarinor", - "skitty": "Skitty", - "delcatty": "Delcatty", - "sableye": "Ténéfix", - "mawile": "Mysdibule", - "aron": "Galekid", - "lairon": "Galegon", - "aggron": "Galeking", - "meditite": "Méditikka", - "medicham": "Charmina", - "electrike": "Dynavolt", - "manectric": "Élecsprint", - "plusle": "Posipi", - "minun": "Négapi", - "volbeat": "Muciole", - "illumise": "Lumivole", - "roselia": "Rosélia", - "gulpin": "Gloupti", - "swalot": "Avaltout", - "carvanha": "Carvanha", - "sharpedo": "Sharpedo", - "wailmer": "Wailmer", - "wailord": "Wailord", - "numel": "Chamallot", - "camerupt": "Camérupt", - "torkoal": "Chartor", - "spoink": "Spoink", - "grumpig": "Groret", - "spinda": "Spinda", - "trapinch": "Kraknoix", - "vibrava": "Vibraninf", - "flygon": "Libégon", - "cacnea": "Cacnea", - "cacturne": "Cacturne", - "swablu": "Tylton", - "altaria": "Altaria", - "zangoose": "Mangriff", - "seviper": "Séviper", - "lunatone": "Séléroc", - "solrock": "Solaroc", - "barboach": "Barloche", - "whiscash": "Barbicha", - "corphish": "Écrapince", - "crawdaunt": "Colhomard", - "baltoy": "Balbuto", - "claydol": "Kaorine", - "lileep": "Lilia", - "cradily": "Vacilys", - "anorith": "Anorith", - "armaldo": "Armaldo", - "feebas": "Barpau", - "milotic": "Milobellus", - "castform": "Morphéo", - "kecleon": "Kecleon", - "shuppet": "Polichombr", - "banette": "Branette", - "duskull": "Skelénox", - "dusclops": "Téraclope", - "tropius": "Tropius", - "chimecho": "Éoko", - "absol": "Absol", - "wynaut": "Okéoké", - "snorunt": "Stalgamin", - "glalie": "Oniglali", - "spheal": "Obalie", - "sealeo": "Phogleur", - "walrein": "Kaimorse", - "clamperl": "Coquiperl", - "huntail": "Serpang", - "gorebyss": "Rosabyss", - "relicanth": "Relicanth", - "luvdisc": "Lovdisc", - "bagon": "Draby", - "shelgon": "Drackhaus", - "salamence": "Drattak", - "beldum": "Terhal", - "metang": "Métang", - "metagross": "Métalosse", - "regirock": "Regirock", - "regice": "Regice", - "registeel": "Registeel", - "latias": "Latias", - "latios": "Latios", - "kyogre": "Kyogre", - "groudon": "Groudon", - "rayquaza": "Rayquaza", - "jirachi": "Jirachi", - "deoxys": "Deoxys", - "turtwig": "Tortipouss", - "grotle": "Boskara", - "torterra": "Torterra", - "chimchar": "Ouisticram", - "monferno": "Chimpenfeu", - "infernape": "Simiabraz", - "piplup": "Tiplouf", - "prinplup": "Prinplouf", - "empoleon": "Pingoléon", - "starly": "Étourmi", - "staravia": "Étourvol", - "staraptor": "Étouraptor", - "bidoof": "Keunotor", - "bibarel": "Castorno", - "kricketot": "Crikzik", - "kricketune": "Mélokrik", - "shinx": "Lixy", - "luxio": "Luxio", - "luxray": "Luxray", - "budew": "Rozbouton", - "roserade": "Roserade", - "cranidos": "Kranidos", - "rampardos": "Charkos", - "shieldon": "Dinoclier", - "bastiodon": "Bastiodon", - "burmy": "Cheniti", - "wormadam": "Cheniselle", - "mothim": "Papilord", - "combee": "Apitrini", - "vespiquen": "Apireine", - "pachirisu": "Pachirisu", - "buizel": "Mustébouée", - "floatzel": "Mustéflott", - "cherubi": "Ceribou", - "cherrim": "Ceriflor", - "shellos": "Sancoki", - "gastrodon": "Tritosor", - "ambipom": "Capidextre", - "drifloon": "Baudrive", - "drifblim": "Grodrive", - "buneary": "Laporeille", - "lopunny": "Lockpin", - "mismagius": "Magirêve", - "honchkrow": "Corboss", - "glameow": "Chaglam", - "purugly": "Chaffreux", - "chingling": "Korillon", - "stunky": "Moufouette", - "skuntank": "Moufflair", - "bronzor": "Archéomire", - "bronzong": "Archéodong", - "bonsly": "Manzaï", - "mime_jr": "Mime Jr.", - "happiny": "Ptiravi", - "chatot": "Pijako", - "spiritomb": "Spiritomb", - "gible": "Griknot", - "gabite": "Carmache", - "garchomp": "Carchacrok", - "munchlax": "Goinfrex", - "riolu": "Riolu", - "lucario": "Lucario", - "hippopotas": "Hippopotas", - "hippowdon": "Hippodocus", - "skorupi": "Rapion", - "drapion": "Drascore", - "croagunk": "Cradopaud", - "toxicroak": "Coatox", - "carnivine": "Vortente", - "finneon": "Écayon", - "lumineon": "Luminéon", - "mantyke": "Babimanta", - "snover": "Blizzi", - "abomasnow": "Blizzaroi", - "weavile": "Dimoret", - "magnezone": "Magnézone", - "lickilicky": "Coudlangue", - "rhyperior": "Rhinastoc", - "tangrowth": "Bouldeneu", - "electivire": "Élekable", - "magmortar": "Maganon", - "togekiss": "Togekiss", - "yanmega": "Yanmega", - "leafeon": "Phyllali", - "glaceon": "Givrali", - "gliscor": "Scorvol", - "mamoswine": "Mammochon", - "porygon_z": "Porygon-Z", - "gallade": "Gallame", - "probopass": "Tarinorme", - "dusknoir": "Noctunoir", - "froslass": "Momartik", - "rotom": "Motisma", - "uxie": "Créhelf", - "mesprit": "Créfollet", - "azelf": "Créfadet", - "dialga": "Dialga", - "palkia": "Palkia", - "heatran": "Heatran", - "regigigas": "Regigigas", - "giratina": "Giratina", - "cresselia": "Cresselia", - "phione": "Phione", - "manaphy": "Manaphy", - "darkrai": "Darkrai", - "shaymin": "Shaymin", - "arceus": "Arceus", - "victini": "Victini", - "snivy": "Vipélierre", - "servine": "Lianaja", - "serperior": "Majaspic", - "tepig": "Gruikui", - "pignite": "Grotichon", - "emboar": "Roitiflam", - "oshawott": "Moustillon", - "dewott": "Mateloutre", - "samurott": "Clamiral", - "patrat": "Ratentif", - "watchog": "Miradar", - "lillipup": "Ponchiot", - "herdier": "Ponchien", - "stoutland": "Mastouffe", - "purrloin": "Chacripan", - "liepard": "Léopardus", - "pansage": "Feuillajou", - "simisage": "Feuiloutan", - "pansear": "Flamajou", - "simisear": "Flamoutan", - "panpour": "Flotajou", - "simipour": "Flotoutan", - "munna": "Munna", - "musharna": "Mushana", - "pidove": "Poichigeon", - "tranquill": "Colombeau", - "unfezant": "Déflaisan", - "blitzle": "Zébibron", - "zebstrika": "Zéblitz", - "roggenrola": "Nodulithe", - "boldore": "Géolithe", - "gigalith": "Gigalithe", - "woobat": "Chovsourir", - "swoobat": "Rhinolove", - "drilbur": "Rototaupe", - "excadrill": "Minotaupe", - "audino": "Nanméouïe", - "timburr": "Charpenti", - "gurdurr": "Ouvrifier", - "conkeldurr": "Bétochef", - "tympole": "Tritonde", - "palpitoad": "Batracné", - "seismitoad": "Crapustule", - "throh": "Judokrak", - "sawk": "Karaclée", - "sewaddle": "Larveyette", - "swadloon": "Couverdure", - "leavanny": "Manternel", - "venipede": "Venipatte", - "whirlipede": "Scobolide", - "scolipede": "Brutapode", - "cottonee": "Doudouvet", - "whimsicott": "Farfaduvet", - "petilil": "Chlorobule", - "lilligant": "Fragilady", - "basculin": "Bargantua", - "sandile": "Mascaïman", - "krokorok": "Escroco", - "krookodile": "Crocorible", - "darumaka": "Darumarond", - "darmanitan": "Darumacho", - "maractus": "Maracachi", - "dwebble": "Crabicoque", - "crustle": "Crabaraque", - "scraggy": "Baggiguane", - "scrafty": "Baggaïd", - "sigilyph": "Cryptéro", - "yamask": "Tutafeh", - "cofagrigus": "Tutankafer", - "tirtouga": "Carapagos", - "carracosta": "Mégapagos", - "archen": "Arkéapti", - "archeops": "Aéroptéryx", - "trubbish": "Miamiasme", - "garbodor": "Miasmax", - "zorua": "Zorua", - "zoroark": "Zoroark", - "minccino": "Chinchidou", - "cinccino": "Pashmilla", - "gothita": "Scrutella", - "gothorita": "Mesmérella", - "gothitelle": "Sidérella", - "solosis": "Nucléos", - "duosion": "Méios", - "reuniclus": "Symbios", - "ducklett": "Couaneton", - "swanna": "Lakmécygne", - "vanillite": "Sorbébé", - "vanillish": "Sorboul", - "vanilluxe": "Sorbouboul", - "deerling": "Vivaldaim", - "sawsbuck": "Haydaim", - "emolga": "Emolga", - "karrablast": "Carabing", - "escavalier": "Lançargot", - "foongus": "Trompignon", - "amoonguss": "Gaulet", - "frillish": "Viskuse", - "jellicent": "Moyade", - "alomomola": "Mamanbo", - "joltik": "Statitik", - "galvantula": "Mygavolt", - "ferroseed": "Grindur", - "ferrothorn": "Noacier", - "klink": "Tic", - "klang": "Clic", - "klinklang": "Cliticlic", - "tynamo": "Anchwatt", - "eelektrik": "Lampéroie", - "eelektross": "Ohmassacre", - "elgyem": "Lewsor", - "beheeyem": "Neitram", - "litwick": "Funécire", - "lampent": "Mélancolux", - "chandelure": "Lugulabre", - "axew": "Coupenotte", - "fraxure": "Incisache", - "haxorus": "Tranchodon", - "cubchoo": "Polarhume", - "beartic": "Polagriffe", - "cryogonal": "Hexagel", - "shelmet": "Escargaume", - "accelgor": "Limaspeed", - "stunfisk": "Limonde", - "mienfoo": "Kungfouine", - "mienshao": "Shaofouine", - "druddigon": "Drakkarmin", - "golett": "Gringolem", - "golurk": "Golemastoc", - "pawniard": "Scalpion", - "bisharp": "Scalproie", - "bouffalant": "Frison", - "rufflet": "Furaiglon", - "braviary": "Gueriaigle", - "vullaby": "Vostourno", - "mandibuzz": "Vaututrice", - "heatmor": "Aflamanoir", - "durant": "Fermite", - "deino": "Solochi", - "zweilous": "Diamat", - "hydreigon": "Trioxhydre", - "larvesta": "Pyronille", - "volcarona": "Pyrax", - "cobalion": "Cobaltium", - "terrakion": "Terrakium", - "virizion": "Viridium", - "tornadus": "Boréas", - "thundurus": "Fulguris", - "reshiram": "Reshiram", - "zekrom": "Zekrom", - "landorus": "Démétéros", - "kyurem": "Kyurem", - "keldeo": "Keldeo", - "meloetta": "Meloetta", - "genesect": "Genesect", - "chespin": "Marisson", - "quilladin": "Boguérisse", - "chesnaught": "Blindépique", - "fennekin": "Feunnec", - "braixen": "Roussil", - "delphox": "Goupelin", - "froakie": "Grenousse", - "frogadier": "Croâporal", - "greninja": "Amphinobi", - "bunnelby": "Sapereau", - "diggersby": "Excavarenne", - "fletchling": "Passerouge", - "fletchinder": "Braisillon", - "talonflame": "Flambusard", - "scatterbug": "Lépidonille", - "spewpa": "Pérégrain", - "vivillon": "Prismillon", - "litleo": "Hélionceau", - "pyroar": "Némélios", - "flabebe": "Flabébé", - "floette": "Floette", - "florges": "Florges", - "skiddo": "Cabriolaine", - "gogoat": "Chevroum", - "pancham": "Pandespiègle", - "pangoro": "Pandarbare", - "furfrou": "Couafarel", - "espurr": "Psystigri", - "meowstic": "Mistigrix", - "honedge": "Monorpale", - "doublade": "Dimoclès", - "aegislash": "Exagide", - "spritzee": "Fluvetin", - "aromatisse": "Cocotine", - "swirlix": "Sucroquin", - "slurpuff": "Cupcanaille", - "inkay": "Sepiatop", - "malamar": "Sepiatroce", - "binacle": "Opermine", - "barbaracle": "Golgopathe", - "skrelp": "Venalgue", - "dragalge": "Kravarech", - "clauncher": "Flingouste", - "clawitzer": "Gamblast", - "helioptile": "Galvaran", - "heliolisk": "Iguolta", - "tyrunt": "Ptyranidur", - "tyrantrum": "Rexillius", - "amaura": "Amagara", - "aurorus": "Dragmara", - "sylveon": "Nymphali", - "hawlucha": "Brutalibré", - "dedenne": "Dedenne", - "carbink": "Strassie", - "goomy": "Mucuscule", - "sliggoo": "Colimucus", - "goodra": "Muplodocus", - "klefki": "Trousselin", - "phantump": "Brocélôme", - "trevenant": "Desséliande", - "pumpkaboo": "Pitrouille", - "gourgeist": "Banshitrouye", - "bergmite": "Grelaçon", - "avalugg": "Séracrawl", - "noibat": "Sonistrelle", - "noivern": "Bruyverne", - "xerneas": "Xerneas", - "yveltal": "Yveltal", - "zygarde": "Zygarde", - "diancie": "Diancie", - "hoopa": "Hoopa", - "volcanion": "Volcanion", - "rowlet": "Brindibou", - "dartrix": "Efflèche", - "decidueye": "Archéduc", - "litten": "Flamiaou", - "torracat": "Matoufeu", - "incineroar": "Félinferno", - "popplio": "Otaquin", - "brionne": "Otarlette", - "primarina": "Oratoria", - "pikipek": "Picassaut", - "trumbeak": "Piclairon", - "toucannon": "Bazoucan", - "yungoos": "Manglouton", - "gumshoos": "Argouste", - "grubbin": "Larvibule", - "charjabug": "Chrysapile", - "vikavolt": "Lucanon", - "crabrawler": "Crabagarre", - "crabominable": "Crabominable", - "oricorio": "Plumeline", - "cutiefly": "Bombydou", - "ribombee": "Rubombelle", - "rockruff": "Rocabot", - "lycanroc": "Lougaroc", - "wishiwashi": "Froussardine", - "mareanie": "Vorastérie", - "toxapex": "Prédastérie", - "mudbray": "Tiboudet", - "mudsdale": "Bourrinos", - "dewpider": "Araqua", - "araquanid": "Tarenbulle", - "fomantis": "Mimantis", - "lurantis": "Floramantis", - "morelull": "Spododo", - "shiinotic": "Lampignon", - "salandit": "Tritox", - "salazzle": "Malamandre", - "stufful": "Nounourson", - "bewear": "Chelours", - "bounsweet": "Croquine", - "steenee": "Candine", - "tsareena": "Sucreine", - "comfey": "Guérilande", - "oranguru": "Gouroutan", - "passimian": "Quartermac", - "wimpod": "Sovkipou", - "golisopod": "Sarmuraï", - "sandygast": "Bacabouh", - "palossand": "Trépassable", - "pyukumuku": "Concombaffe", - "type_null": "Type:0", - "silvally": "Silvallié", - "minior": "Météno", - "komala": "Dodoala", - "turtonator": "Boumata", - "togedemaru": "Togedemaru", - "mimikyu": "Mimiqui", - "bruxish": "Denticrisse", - "drampa": "Draïeul", - "dhelmise": "Sinistrail", - "jangmo_o": "Bébécaille", - "hakamo_o": "Écaïd", - "kommo_o": "Ékaïser", - "tapu_koko": "Tokorico", - "tapu_lele": "Tokopiyon", - "tapu_bulu": "Tokotoro", - "tapu_fini": "Tokopisco", - "cosmog": "Cosmog", - "cosmoem": "Cosmovum", - "solgaleo": "Solgaleo", - "lunala": "Lunala", - "nihilego": "Zéroïd", - "buzzwole": "Mouscoto", - "pheromosa": "Cancrelove", - "xurkitree": "Câblifère", - "celesteela": "Bamboiselle", - "kartana": "Katagami", - "guzzlord": "Engloutyran", - "necrozma": "Necrozma", - "magearna": "Magearna", - "marshadow": "Marshadow", - "poipole": "Vémini", - "naganadel": "Mandrillon", - "stakataka": "Ama-Ama", - "blacephalon": "Pierroteknik", - "zeraora": "Zeraora", - "meltan": "Meltan", - "melmetal": "Melmetal", - "grookey": "Ouistempo", - "thwackey": "Badabouin", - "rillaboom": "Gorythmic", - "scorbunny": "Flambino", - "raboot": "Lapyro", - "cinderace": "Pyrobut", - "sobble": "Larméléon", - "drizzile": "Arrozard", - "inteleon": "Lézargus", - "skwovet": "Rongourmand", - "greedent": "Rongrigou", - "rookidee": "Minisange", - "corvisquire": "Bleuseille", - "corviknight": "Corvaillus", - "blipbug": "Larvadar", - "dottler": "Coléodôme", - "orbeetle": "Astronelle", - "nickit": "Goupilou", - "thievul": "Roublenard", - "gossifleur": "Tournicoton", - "eldegoss": "Blancoton", - "wooloo": "Moumouton", - "dubwool": "Moumouflon", - "chewtle": "Khélocrok", - "drednaw": "Torgamord", - "yamper": "Voltoutou", - "boltund": "Fulgudog", - "rolycoly": "Charbi", - "carkol": "Wagomine", - "coalossal": "Monthracite", - "applin": "Verpom", - "flapple": "Pomdrapi", - "appletun": "Dratatin", - "silicobra": "Dunaja", - "sandaconda": "Dunaconda", - "cramorant": "Nigosier", - "arrokuda": "Embrochet", - "barraskewda": "Hastacuda", - "toxel": "Toxizap", - "toxtricity": "Salarsen", - "sizzlipede": "Grillepattes", - "centiskorch": "Scolocendre", - "clobbopus": "Poulpaf", - "grapploct": "Krakos", - "sinistea": "Théffroi", - "polteageist": "Polthégeist", - "hatenna": "Bibichut", - "hattrem": "Chapotus", - "hatterene": "Sorcilence", - "impidimp": "Grimalin", - "morgrem": "Fourbelin", - "grimmsnarl": "Angoliath", - "obstagoon": "Ixon", - "perrserker": "Berserkatt", - "cursola": "Corayôme", - "sirfetchd": "Palarticho", - "mr_rime": "M. Glaquette", - "runerigus": "Tutétékri", - "milcery": "Crèmy", - "alcremie": "Charmilly", - "falinks": "Hexadron", - "pincurchin": "Wattapik", - "snom": "Frissonille", - "frosmoth": "Beldeneige", - "stonjourner": "Dolman", - "eiscue": "Bekaglaçon", - "indeedee": "Wimessir", - "morpeko": "Morpeko", - "cufant": "Charibari", - "copperajah": "Pachyradjah", - "dracozolt": "Galvagon", - "arctozolt": "Galvagla", - "dracovish": "Hydragon", - "arctovish": "Hydragla", - "duraludon": "Duralugon", - "dreepy": "Fantyrm", - "drakloak": "Dispareptil", - "dragapult": "Lanssorien", - "zacian": "Zacian", - "zamazenta": "Zamazenta", - "eternatus": "Éthernatos", - "kubfu": "Wushours", - "urshifu": "Shifours", - "zarude": "Zarude", - "regieleki": "Regieleki", - "regidrago": "Regidrago", - "glastrier": "Blizzeval", - "spectrier": "Spectreval", - "calyrex": "Sylveroy", - "wyrdeer": "Cerbyllin", - "kleavor": "Hachécateur", - "ursaluna": "Ursaking", - "basculegion": "Paragruel", - "sneasler": "Farfurex", - "overqwil": "Qwilpik", - "enamorus": "Amovénus", - "sprigatito": "Poussacha", - "floragato": "Matourgeon", - "meowscarada": "Miascarade", - "fuecoco": "Chochodile", - "crocalor": "Crocogril", - "skeledirge": "Flâmigator", - "quaxly": "Coiffeton", - "quaxwell": "Canarbello", - "quaquaval": "Palmaval", - "lechonk": "Gourmelet", - "oinkologne": "Fragroin", - "tarountula": "Tissenboule", - "spidops": "Filentrappe", - "nymble": "Lilliterelle", - "lokix": "Gambex", - "pawmi": "Pohm", - "pawmo": "Pohmotte", - "pawmot": "Pohmarmotte", - "tandemaus": "Compagnol", - "maushold": "Famignol", - "fidough": "Pâtachiot", - "dachsbun": "Briochien", - "smoliv": "Olivini", - "dolliv": "Olivado", - "arboliva": "Arboliva", - "squawkabilly": "Tapatoès", - "nacli": "Selutin", - "naclstack": "Amassel", - "garganacl": "Gigansel", - "charcadet": "Charbambin", - "armarouge": "Carmadura", - "ceruledge": "Malvalame", - "tadbulb": "Têtampoule", - "bellibolt": "Ampibidou", - "wattrel": "Zapétrel", - "kilowattrel": "Fulgulairo", - "maschiff": "Grondogue", - "mabosstiff": "Dogrino", - "shroodle": "Gribouraigne", - "grafaiai": "Tag-Tag", - "bramblin": "Virovent", - "brambleghast": "Virevorreur", - "toedscool": "Terracool", - "toedscruel": "Terracruel", - "klawf": "Craparoi", - "capsakid": "Pimito", - "scovillain": "Scovilain", - "rellor": "Léboulérou", - "rabsca": "Bérasca", - "flittle": "Flotillon", - "espathra": "Cléopsytra", - "tinkatink": "Forgerette", - "tinkatuff": "Forgella", - "tinkaton": "Forgelina", - "wiglett": "Taupikeau", - "wugtrio": "Triopikeau", - "bombirdier": "Lestombaile", - "finizen": "Dofin", - "palafin": "Superdofin", - "varoom": "Vrombi", - "revavroom": "Vrombotor", - "cyclizar": "Motorizard", - "orthworm": "Ferdeter", - "glimmet": "Germéclat", - "glimmora": "Floréclat", - "greavard": "Toutombe", - "houndstone": "Tomberro", - "flamigo": "Flamenroule", - "cetoddle": "Piétacé", - "cetitan": "Balbalèze", - "veluza": "Délestin", - "dondozo": "Oyacata", - "tatsugiri": "Nigirigon", - "annihilape": "Courrousinge", - "clodsire": "Terraiste", - "farigiraf": "Farigiraf", - "dudunsparce": "Deusolourdo", - "kingambit": "Scalpereur", - "great_tusk": "Fort-Ivoire", - "scream_tail": "Hurle-Queue", - "brute_bonnet": "Fongus-Furie", - "flutter_mane": "Flotte-Mèche", - "slither_wing": "Rampe-Ailes", - "sandy_shocks": "Pelage-Sablé", - "iron_treads": "Roue-de-Fer", - "iron_bundle": "Hotte-de-Fer", - "iron_hands": "Paume-de-Fer", - "iron_jugulis": "Têtes-de-Fer", - "iron_moth": "Mite-de-Fer", - "iron_thorns": "Épine-de-Fer", - "frigibax": "Frigodo", - "arctibax": "Cryodo", - "baxcalibur": "Glaivodo", - "gimmighoul": "Mordudor", - "gholdengo": "Gromago", - "wo_chien": "Chongjian", - "chien_pao": "Baojian", - "ting_lu": "Dinglu", - "chi_yu": "Yuyu", - "roaring_moon": "Rugit-Lune", - "iron_valiant": "Garde-de-Fer", - "koraidon": "Koraidon", - "miraidon": "Miraidon", - "walking_wake": "Serpente-Eau", - "iron_leaves": "Vert-de-Fer", - "dipplin": "Pomdramour", - "poltchageist": "Poltchageist", - "sinistcha": "Théffroyable", - "okidogi": "Félicanis", - "munkidori": "Fortusimia", - "fezandipiti": "Favianos", - "ogerpon": "Ogerpon", - "archaludon": "Pondralugon", - "hydrapple": "Pomdorochi", - "gouging_fire": "Feu-Perçant", - "raging_bolt": "Ire-Foudre", - "iron_boulder": "Roc-de-Fer", - "iron_crown": "Chef-de-Fer", - "terapagos": "Terapagos", - "pecharunt": "Pêchaminus", - "alola_rattata": "Rattata", - "alola_raticate": "Rattatac", - "alola_raichu": "Raichu", - "alola_sandshrew": "Sabelette", - "alola_sandslash": "Sablaireau", - "alola_vulpix": "Goupix", - "alola_ninetales": "Feunard", - "alola_diglett": "Taupiqueur", - "alola_dugtrio": "Triopikeur", - "alola_meowth": "Miaouss", - "alola_persian": "Persian", - "alola_geodude": "Racaillou", - "alola_graveler": "Gravalanch", - "alola_golem": "Grolem", - "alola_grimer": "Tadmorv", - "alola_muk": "Grotadmorv", - "alola_exeggutor": "Noadkoko", - "alola_marowak": "Ossatueur", - "eternal_floette": "Floette", - "galar_meowth": "Miaouss", - "galar_ponyta": "Ponyta", - "galar_rapidash": "Galopa", - "galar_slowpoke": "Ramoloss", - "galar_slowbro": "Flagadoss", - "galar_farfetchd": "Canarticho", - "galar_weezing": "Smogogo", - "galar_mr_mime": "M. Mime", - "galar_articuno": "Artikodin", - "galar_zapdos": "Électhor", - "galar_moltres": "Sulfura", - "galar_slowking": "Roigada", - "galar_corsola": "Corayon", - "galar_zigzagoon": "Zigzaton", - "galar_linoone": "Linéon", - "galar_darumaka": "Darumarond", - "galar_darmanitan": "Darumacho", - "galar_yamask": "Tutafeh", - "galar_stunfisk": "Limonde", - "hisui_growlithe": "Caninos", - "hisui_arcanine": "Arcanin", - "hisui_voltorb": "Voltorbe", - "hisui_electrode": "Électrode", - "hisui_typhlosion": "Typhlosion", - "hisui_qwilfish": "Qwilfish", - "hisui_sneasel": "Farfuret", - "hisui_samurott": "Clamiral", - "hisui_lilligant": "Fragilady", - "hisui_zorua": "Zorua", - "hisui_zoroark": "Zoroark", - "hisui_braviary": "Gueriaigle", - "hisui_sliggoo": "Colimucus", - "hisui_goodra": "Muplodocus", - "hisui_avalugg": "Séracrawl", - "hisui_decidueye": "Archéduc", - "paldea_tauros": "Tauros", - "paldea_wooper": "Axoloto", - "bloodmoon_ursaluna": "Ursaking", -} as const; \ No newline at end of file + 'bulbasaur': 'Bulbizarre', + 'ivysaur': 'Herbizarre', + 'venusaur': 'Florizarre', + 'charmander': 'Salamèche', + 'charmeleon': 'Reptincel', + 'charizard': 'Dracaufeu', + 'squirtle': 'Carapuce', + 'wartortle': 'Carabaffe', + 'blastoise': 'Tortank', + 'caterpie': 'Chenipan', + 'metapod': 'Chrysacier', + 'butterfree': 'Papilusion', + 'weedle': 'Aspicot', + 'kakuna': 'Coconfort', + 'beedrill': 'Dardargnan', + 'pidgey': 'Roucool', + 'pidgeotto': 'Roucoups', + 'pidgeot': 'Roucarnage', + 'rattata': 'Rattata', + 'raticate': 'Rattatac', + 'spearow': 'Piafabec', + 'fearow': 'Rapasdepic', + 'ekans': 'Abo', + 'arbok': 'Arbok', + 'pikachu': 'Pikachu', + 'raichu': 'Raichu', + 'sandshrew': 'Sabelette', + 'sandslash': 'Sablaireau', + 'nidoran_f': 'Nidoran♀', + 'nidorina': 'Nidorina', + 'nidoqueen': 'Nidoqueen', + 'nidoran_m': 'Nidoran♂', + 'nidorino': 'Nidorino', + 'nidoking': 'Nidoking', + 'clefairy': 'Mélofée', + 'clefable': 'Mélodelfe', + 'vulpix': 'Goupix', + 'ninetales': 'Feunard', + 'jigglypuff': 'Rondoudou', + 'wigglytuff': 'Grodoudou', + 'zubat': 'Nosferapti', + 'golbat': 'Nosferalto', + 'oddish': 'Mystherbe', + 'gloom': 'Ortide', + 'vileplume': 'Rafflesia', + 'paras': 'Paras', + 'parasect': 'Parasect', + 'venonat': 'Mimitoss', + 'venomoth': 'Aéromite', + 'diglett': 'Taupiqueur', + 'dugtrio': 'Triopikeur', + 'meowth': 'Miaouss', + 'persian': 'Persian', + 'psyduck': 'Psykokwak', + 'golduck': 'Akwakwak', + 'mankey': 'Férosinge', + 'primeape': 'Colossinge', + 'growlithe': 'Caninos', + 'arcanine': 'Arcanin', + 'poliwag': 'Ptitard', + 'poliwhirl': 'Têtarte', + 'poliwrath': 'Tartard', + 'abra': 'Abra', + 'kadabra': 'Kadabra', + 'alakazam': 'Alakazam', + 'machop': 'Machoc', + 'machoke': 'Machopeur', + 'machamp': 'Mackogneur', + 'bellsprout': 'Chétiflor', + 'weepinbell': 'Boustiflor', + 'victreebel': 'Empiflor', + 'tentacool': 'Tentacool', + 'tentacruel': 'Tentacruel', + 'geodude': 'Racaillou', + 'graveler': 'Gravalanch', + 'golem': 'Grolem', + 'ponyta': 'Ponyta', + 'rapidash': 'Galopa', + 'slowpoke': 'Ramoloss', + 'slowbro': 'Flagadoss', + 'magnemite': 'Magnéti', + 'magneton': 'Magnéton', + 'farfetchd': 'Canarticho', + 'doduo': 'Doduo', + 'dodrio': 'Dodrio', + 'seel': 'Otaria', + 'dewgong': 'Lamantine', + 'grimer': 'Tadmorv', + 'muk': 'Grotadmorv', + 'shellder': 'Kokiyas', + 'cloyster': 'Crustabri', + 'gastly': 'Fantominus', + 'haunter': 'Spectrum', + 'gengar': 'Ectoplasma', + 'onix': 'Onix', + 'drowzee': 'Soporifik', + 'hypno': 'Hypnomade', + 'krabby': 'Krabby', + 'kingler': 'Krabboss', + 'voltorb': 'Voltorbe', + 'electrode': 'Électrode', + 'exeggcute': 'Noeunoeuf', + 'exeggutor': 'Noadkoko', + 'cubone': 'Osselait', + 'marowak': 'Ossatueur', + 'hitmonlee': 'Kicklee', + 'hitmonchan': 'Tygnon', + 'lickitung': 'Excelangue', + 'koffing': 'Smogo', + 'weezing': 'Smogogo', + 'rhyhorn': 'Rhinocorne', + 'rhydon': 'Rhinoféros', + 'chansey': 'Leveinard', + 'tangela': 'Saquedeneu', + 'kangaskhan': 'Kangourex', + 'horsea': 'Hypotrempe', + 'seadra': 'Hypocéan', + 'goldeen': 'Poissirène', + 'seaking': 'Poissoroy', + 'staryu': 'Stari', + 'starmie': 'Staross', + 'mr_mime': 'M. Mime', + 'scyther': 'Insécateur', + 'jynx': 'Lippoutou', + 'electabuzz': 'Élektek', + 'magmar': 'Magmar', + 'pinsir': 'Scarabrute', + 'tauros': 'Tauros', + 'magikarp': 'Magicarpe', + 'gyarados': 'Léviator', + 'lapras': 'Lokhlass', + 'ditto': 'Métamorph', + 'eevee': 'Évoli', + 'vaporeon': 'Aquali', + 'jolteon': 'Voltali', + 'flareon': 'Pyroli', + 'porygon': 'Porygon', + 'omanyte': 'Amonita', + 'omastar': 'Amonistar', + 'kabuto': 'Kabuto', + 'kabutops': 'Kabutops', + 'aerodactyl': 'Ptéra', + 'snorlax': 'Ronflex', + 'articuno': 'Artikodin', + 'zapdos': 'Électhor', + 'moltres': 'Sulfura', + 'dratini': 'Minidraco', + 'dragonair': 'Draco', + 'dragonite': 'Dracolosse', + 'mewtwo': 'Mewtwo', + 'mew': 'Mew', + 'chikorita': 'Germignon', + 'bayleef': 'Macronium', + 'meganium': 'Méganium', + 'cyndaquil': 'Héricendre', + 'quilava': 'Feurisson', + 'typhlosion': 'Typhlosion', + 'totodile': 'Kaiminus', + 'croconaw': 'Crocrodil', + 'feraligatr': 'Aligatueur', + 'sentret': 'Fouinette', + 'furret': 'Fouinar', + 'hoothoot': 'Hoothoot', + 'noctowl': 'Noarfang', + 'ledyba': 'Coxy', + 'ledian': 'Coxyclaque', + 'spinarak': 'Mimigal', + 'ariados': 'Migalos', + 'crobat': 'Nostenfer', + 'chinchou': 'Loupio', + 'lanturn': 'Lanturn', + 'pichu': 'Pichu', + 'cleffa': 'Mélo', + 'igglybuff': 'Toudoudou', + 'togepi': 'Togepi', + 'togetic': 'Togetic', + 'natu': 'Natu', + 'xatu': 'Xatu', + 'mareep': 'Wattouat', + 'flaaffy': 'Lainergie', + 'ampharos': 'Pharamp', + 'bellossom': 'Joliflor', + 'marill': 'Marill', + 'azumarill': 'Azumarill', + 'sudowoodo': 'Simularbre', + 'politoed': 'Tarpaud', + 'hoppip': 'Granivol', + 'skiploom': 'Floravol', + 'jumpluff': 'Cotovol', + 'aipom': 'Capumain', + 'sunkern': 'Tournegrin', + 'sunflora': 'Héliatronc', + 'yanma': 'Yanma', + 'wooper': 'Axoloto', + 'quagsire': 'Maraiste', + 'espeon': 'Mentali', + 'umbreon': 'Noctali', + 'murkrow': 'Cornèbre', + 'slowking': 'Roigada', + 'misdreavus': 'Feuforêve', + 'unown': 'Zarbi', + 'wobbuffet': 'Qulbutoké', + 'girafarig': 'Girafarig', + 'pineco': 'Pomdepik', + 'forretress': 'Foretress', + 'dunsparce': 'Insolourdo', + 'gligar': 'Scorplane', + 'steelix': 'Steelix', + 'snubbull': 'Snubbull', + 'granbull': 'Granbull', + 'qwilfish': 'Qwilfish', + 'scizor': 'Cizayox', + 'shuckle': 'Caratroc', + 'heracross': 'Scarhino', + 'sneasel': 'Farfuret', + 'teddiursa': 'Teddiursa', + 'ursaring': 'Ursaring', + 'slugma': 'Limagma', + 'magcargo': 'Volcaropod', + 'swinub': 'Marcacrin', + 'piloswine': 'Cochignon', + 'corsola': 'Corayon', + 'remoraid': 'Rémoraid', + 'octillery': 'Octillery', + 'delibird': 'Cadoizo', + 'mantine': 'Démanta', + 'skarmory': 'Airmure', + 'houndour': 'Malosse', + 'houndoom': 'Démolosse', + 'kingdra': 'Hyporoi', + 'phanpy': 'Phanpy', + 'donphan': 'Donphan', + 'porygon2': 'Porygon2', + 'stantler': 'Cerfrousse', + 'smeargle': 'Queulorior', + 'tyrogue': 'Debugant', + 'hitmontop': 'Kapoera', + 'smoochum': 'Lippouti', + 'elekid': 'Élekid', + 'magby': 'Magby', + 'miltank': 'Écrémeuh', + 'blissey': 'Leuphorie', + 'raikou': 'Raikou', + 'entei': 'Entei', + 'suicune': 'Suicune', + 'larvitar': 'Embrylex', + 'pupitar': 'Ymphect', + 'tyranitar': 'Tyranocif', + 'lugia': 'Lugia', + 'ho_oh': 'Ho-Oh', + 'celebi': 'Celebi', + 'treecko': 'Arcko', + 'grovyle': 'Massko', + 'sceptile': 'Jungko', + 'torchic': 'Poussifeu', + 'combusken': 'Galifeu', + 'blaziken': 'Braségali', + 'mudkip': 'Gobou', + 'marshtomp': 'Flobio', + 'swampert': 'Laggron', + 'poochyena': 'Medhyèna', + 'mightyena': 'Grahyèna', + 'zigzagoon': 'Zigzaton', + 'linoone': 'Linéon', + 'wurmple': 'Chenipotte', + 'silcoon': 'Armulys', + 'beautifly': 'Charmillon', + 'cascoon': 'Blindalys', + 'dustox': 'Papinox', + 'lotad': 'Nénupiot', + 'lombre': 'Lombre', + 'ludicolo': 'Ludicolo', + 'seedot': 'Grainipiot', + 'nuzleaf': 'Pifeuil', + 'shiftry': 'Tengalice', + 'taillow': 'Nirondelle', + 'swellow': 'Hélédelle', + 'wingull': 'Goélise', + 'pelipper': 'Bekipan', + 'ralts': 'Tarsal', + 'kirlia': 'Kirlia', + 'gardevoir': 'Gardevoir', + 'surskit': 'Arakdo', + 'masquerain': 'Maskadra', + 'shroomish': 'Balignon', + 'breloom': 'Chapignon', + 'slakoth': 'Parecool', + 'vigoroth': 'Vigoroth', + 'slaking': 'Monaflèmit', + 'nincada': 'Ningale', + 'ninjask': 'Ninjask', + 'shedinja': 'Munja', + 'whismur': 'Chuchmur', + 'loudred': 'Ramboum', + 'exploud': 'Brouhabam', + 'makuhita': 'Makuhita', + 'hariyama': 'Hariyama', + 'azurill': 'Azurill', + 'nosepass': 'Tarinor', + 'skitty': 'Skitty', + 'delcatty': 'Delcatty', + 'sableye': 'Ténéfix', + 'mawile': 'Mysdibule', + 'aron': 'Galekid', + 'lairon': 'Galegon', + 'aggron': 'Galeking', + 'meditite': 'Méditikka', + 'medicham': 'Charmina', + 'electrike': 'Dynavolt', + 'manectric': 'Élecsprint', + 'plusle': 'Posipi', + 'minun': 'Négapi', + 'volbeat': 'Muciole', + 'illumise': 'Lumivole', + 'roselia': 'Rosélia', + 'gulpin': 'Gloupti', + 'swalot': 'Avaltout', + 'carvanha': 'Carvanha', + 'sharpedo': 'Sharpedo', + 'wailmer': 'Wailmer', + 'wailord': 'Wailord', + 'numel': 'Chamallot', + 'camerupt': 'Camérupt', + 'torkoal': 'Chartor', + 'spoink': 'Spoink', + 'grumpig': 'Groret', + 'spinda': 'Spinda', + 'trapinch': 'Kraknoix', + 'vibrava': 'Vibraninf', + 'flygon': 'Libégon', + 'cacnea': 'Cacnea', + 'cacturne': 'Cacturne', + 'swablu': 'Tylton', + 'altaria': 'Altaria', + 'zangoose': 'Mangriff', + 'seviper': 'Séviper', + 'lunatone': 'Séléroc', + 'solrock': 'Solaroc', + 'barboach': 'Barloche', + 'whiscash': 'Barbicha', + 'corphish': 'Écrapince', + 'crawdaunt': 'Colhomard', + 'baltoy': 'Balbuto', + 'claydol': 'Kaorine', + 'lileep': 'Lilia', + 'cradily': 'Vacilys', + 'anorith': 'Anorith', + 'armaldo': 'Armaldo', + 'feebas': 'Barpau', + 'milotic': 'Milobellus', + 'castform': 'Morphéo', + 'kecleon': 'Kecleon', + 'shuppet': 'Polichombr', + 'banette': 'Branette', + 'duskull': 'Skelénox', + 'dusclops': 'Téraclope', + 'tropius': 'Tropius', + 'chimecho': 'Éoko', + 'absol': 'Absol', + 'wynaut': 'Okéoké', + 'snorunt': 'Stalgamin', + 'glalie': 'Oniglali', + 'spheal': 'Obalie', + 'sealeo': 'Phogleur', + 'walrein': 'Kaimorse', + 'clamperl': 'Coquiperl', + 'huntail': 'Serpang', + 'gorebyss': 'Rosabyss', + 'relicanth': 'Relicanth', + 'luvdisc': 'Lovdisc', + 'bagon': 'Draby', + 'shelgon': 'Drackhaus', + 'salamence': 'Drattak', + 'beldum': 'Terhal', + 'metang': 'Métang', + 'metagross': 'Métalosse', + 'regirock': 'Regirock', + 'regice': 'Regice', + 'registeel': 'Registeel', + 'latias': 'Latias', + 'latios': 'Latios', + 'kyogre': 'Kyogre', + 'groudon': 'Groudon', + 'rayquaza': 'Rayquaza', + 'jirachi': 'Jirachi', + 'deoxys': 'Deoxys', + 'turtwig': 'Tortipouss', + 'grotle': 'Boskara', + 'torterra': 'Torterra', + 'chimchar': 'Ouisticram', + 'monferno': 'Chimpenfeu', + 'infernape': 'Simiabraz', + 'piplup': 'Tiplouf', + 'prinplup': 'Prinplouf', + 'empoleon': 'Pingoléon', + 'starly': 'Étourmi', + 'staravia': 'Étourvol', + 'staraptor': 'Étouraptor', + 'bidoof': 'Keunotor', + 'bibarel': 'Castorno', + 'kricketot': 'Crikzik', + 'kricketune': 'Mélokrik', + 'shinx': 'Lixy', + 'luxio': 'Luxio', + 'luxray': 'Luxray', + 'budew': 'Rozbouton', + 'roserade': 'Roserade', + 'cranidos': 'Kranidos', + 'rampardos': 'Charkos', + 'shieldon': 'Dinoclier', + 'bastiodon': 'Bastiodon', + 'burmy': 'Cheniti', + 'wormadam': 'Cheniselle', + 'mothim': 'Papilord', + 'combee': 'Apitrini', + 'vespiquen': 'Apireine', + 'pachirisu': 'Pachirisu', + 'buizel': 'Mustébouée', + 'floatzel': 'Mustéflott', + 'cherubi': 'Ceribou', + 'cherrim': 'Ceriflor', + 'shellos': 'Sancoki', + 'gastrodon': 'Tritosor', + 'ambipom': 'Capidextre', + 'drifloon': 'Baudrive', + 'drifblim': 'Grodrive', + 'buneary': 'Laporeille', + 'lopunny': 'Lockpin', + 'mismagius': 'Magirêve', + 'honchkrow': 'Corboss', + 'glameow': 'Chaglam', + 'purugly': 'Chaffreux', + 'chingling': 'Korillon', + 'stunky': 'Moufouette', + 'skuntank': 'Moufflair', + 'bronzor': 'Archéomire', + 'bronzong': 'Archéodong', + 'bonsly': 'Manzaï', + 'mime_jr': 'Mime Jr.', + 'happiny': 'Ptiravi', + 'chatot': 'Pijako', + 'spiritomb': 'Spiritomb', + 'gible': 'Griknot', + 'gabite': 'Carmache', + 'garchomp': 'Carchacrok', + 'munchlax': 'Goinfrex', + 'riolu': 'Riolu', + 'lucario': 'Lucario', + 'hippopotas': 'Hippopotas', + 'hippowdon': 'Hippodocus', + 'skorupi': 'Rapion', + 'drapion': 'Drascore', + 'croagunk': 'Cradopaud', + 'toxicroak': 'Coatox', + 'carnivine': 'Vortente', + 'finneon': 'Écayon', + 'lumineon': 'Luminéon', + 'mantyke': 'Babimanta', + 'snover': 'Blizzi', + 'abomasnow': 'Blizzaroi', + 'weavile': 'Dimoret', + 'magnezone': 'Magnézone', + 'lickilicky': 'Coudlangue', + 'rhyperior': 'Rhinastoc', + 'tangrowth': 'Bouldeneu', + 'electivire': 'Élekable', + 'magmortar': 'Maganon', + 'togekiss': 'Togekiss', + 'yanmega': 'Yanmega', + 'leafeon': 'Phyllali', + 'glaceon': 'Givrali', + 'gliscor': 'Scorvol', + 'mamoswine': 'Mammochon', + 'porygon_z': 'Porygon-Z', + 'gallade': 'Gallame', + 'probopass': 'Tarinorme', + 'dusknoir': 'Noctunoir', + 'froslass': 'Momartik', + 'rotom': 'Motisma', + 'uxie': 'Créhelf', + 'mesprit': 'Créfollet', + 'azelf': 'Créfadet', + 'dialga': 'Dialga', + 'palkia': 'Palkia', + 'heatran': 'Heatran', + 'regigigas': 'Regigigas', + 'giratina': 'Giratina', + 'cresselia': 'Cresselia', + 'phione': 'Phione', + 'manaphy': 'Manaphy', + 'darkrai': 'Darkrai', + 'shaymin': 'Shaymin', + 'arceus': 'Arceus', + 'victini': 'Victini', + 'snivy': 'Vipélierre', + 'servine': 'Lianaja', + 'serperior': 'Majaspic', + 'tepig': 'Gruikui', + 'pignite': 'Grotichon', + 'emboar': 'Roitiflam', + 'oshawott': 'Moustillon', + 'dewott': 'Mateloutre', + 'samurott': 'Clamiral', + 'patrat': 'Ratentif', + 'watchog': 'Miradar', + 'lillipup': 'Ponchiot', + 'herdier': 'Ponchien', + 'stoutland': 'Mastouffe', + 'purrloin': 'Chacripan', + 'liepard': 'Léopardus', + 'pansage': 'Feuillajou', + 'simisage': 'Feuiloutan', + 'pansear': 'Flamajou', + 'simisear': 'Flamoutan', + 'panpour': 'Flotajou', + 'simipour': 'Flotoutan', + 'munna': 'Munna', + 'musharna': 'Mushana', + 'pidove': 'Poichigeon', + 'tranquill': 'Colombeau', + 'unfezant': 'Déflaisan', + 'blitzle': 'Zébibron', + 'zebstrika': 'Zéblitz', + 'roggenrola': 'Nodulithe', + 'boldore': 'Géolithe', + 'gigalith': 'Gigalithe', + 'woobat': 'Chovsourir', + 'swoobat': 'Rhinolove', + 'drilbur': 'Rototaupe', + 'excadrill': 'Minotaupe', + 'audino': 'Nanméouïe', + 'timburr': 'Charpenti', + 'gurdurr': 'Ouvrifier', + 'conkeldurr': 'Bétochef', + 'tympole': 'Tritonde', + 'palpitoad': 'Batracné', + 'seismitoad': 'Crapustule', + 'throh': 'Judokrak', + 'sawk': 'Karaclée', + 'sewaddle': 'Larveyette', + 'swadloon': 'Couverdure', + 'leavanny': 'Manternel', + 'venipede': 'Venipatte', + 'whirlipede': 'Scobolide', + 'scolipede': 'Brutapode', + 'cottonee': 'Doudouvet', + 'whimsicott': 'Farfaduvet', + 'petilil': 'Chlorobule', + 'lilligant': 'Fragilady', + 'basculin': 'Bargantua', + 'sandile': 'Mascaïman', + 'krokorok': 'Escroco', + 'krookodile': 'Crocorible', + 'darumaka': 'Darumarond', + 'darmanitan': 'Darumacho', + 'maractus': 'Maracachi', + 'dwebble': 'Crabicoque', + 'crustle': 'Crabaraque', + 'scraggy': 'Baggiguane', + 'scrafty': 'Baggaïd', + 'sigilyph': 'Cryptéro', + 'yamask': 'Tutafeh', + 'cofagrigus': 'Tutankafer', + 'tirtouga': 'Carapagos', + 'carracosta': 'Mégapagos', + 'archen': 'Arkéapti', + 'archeops': 'Aéroptéryx', + 'trubbish': 'Miamiasme', + 'garbodor': 'Miasmax', + 'zorua': 'Zorua', + 'zoroark': 'Zoroark', + 'minccino': 'Chinchidou', + 'cinccino': 'Pashmilla', + 'gothita': 'Scrutella', + 'gothorita': 'Mesmérella', + 'gothitelle': 'Sidérella', + 'solosis': 'Nucléos', + 'duosion': 'Méios', + 'reuniclus': 'Symbios', + 'ducklett': 'Couaneton', + 'swanna': 'Lakmécygne', + 'vanillite': 'Sorbébé', + 'vanillish': 'Sorboul', + 'vanilluxe': 'Sorbouboul', + 'deerling': 'Vivaldaim', + 'sawsbuck': 'Haydaim', + 'emolga': 'Emolga', + 'karrablast': 'Carabing', + 'escavalier': 'Lançargot', + 'foongus': 'Trompignon', + 'amoonguss': 'Gaulet', + 'frillish': 'Viskuse', + 'jellicent': 'Moyade', + 'alomomola': 'Mamanbo', + 'joltik': 'Statitik', + 'galvantula': 'Mygavolt', + 'ferroseed': 'Grindur', + 'ferrothorn': 'Noacier', + 'klink': 'Tic', + 'klang': 'Clic', + 'klinklang': 'Cliticlic', + 'tynamo': 'Anchwatt', + 'eelektrik': 'Lampéroie', + 'eelektross': 'Ohmassacre', + 'elgyem': 'Lewsor', + 'beheeyem': 'Neitram', + 'litwick': 'Funécire', + 'lampent': 'Mélancolux', + 'chandelure': 'Lugulabre', + 'axew': 'Coupenotte', + 'fraxure': 'Incisache', + 'haxorus': 'Tranchodon', + 'cubchoo': 'Polarhume', + 'beartic': 'Polagriffe', + 'cryogonal': 'Hexagel', + 'shelmet': 'Escargaume', + 'accelgor': 'Limaspeed', + 'stunfisk': 'Limonde', + 'mienfoo': 'Kungfouine', + 'mienshao': 'Shaofouine', + 'druddigon': 'Drakkarmin', + 'golett': 'Gringolem', + 'golurk': 'Golemastoc', + 'pawniard': 'Scalpion', + 'bisharp': 'Scalproie', + 'bouffalant': 'Frison', + 'rufflet': 'Furaiglon', + 'braviary': 'Gueriaigle', + 'vullaby': 'Vostourno', + 'mandibuzz': 'Vaututrice', + 'heatmor': 'Aflamanoir', + 'durant': 'Fermite', + 'deino': 'Solochi', + 'zweilous': 'Diamat', + 'hydreigon': 'Trioxhydre', + 'larvesta': 'Pyronille', + 'volcarona': 'Pyrax', + 'cobalion': 'Cobaltium', + 'terrakion': 'Terrakium', + 'virizion': 'Viridium', + 'tornadus': 'Boréas', + 'thundurus': 'Fulguris', + 'reshiram': 'Reshiram', + 'zekrom': 'Zekrom', + 'landorus': 'Démétéros', + 'kyurem': 'Kyurem', + 'keldeo': 'Keldeo', + 'meloetta': 'Meloetta', + 'genesect': 'Genesect', + 'chespin': 'Marisson', + 'quilladin': 'Boguérisse', + 'chesnaught': 'Blindépique', + 'fennekin': 'Feunnec', + 'braixen': 'Roussil', + 'delphox': 'Goupelin', + 'froakie': 'Grenousse', + 'frogadier': 'Croâporal', + 'greninja': 'Amphinobi', + 'bunnelby': 'Sapereau', + 'diggersby': 'Excavarenne', + 'fletchling': 'Passerouge', + 'fletchinder': 'Braisillon', + 'talonflame': 'Flambusard', + 'scatterbug': 'Lépidonille', + 'spewpa': 'Pérégrain', + 'vivillon': 'Prismillon', + 'litleo': 'Hélionceau', + 'pyroar': 'Némélios', + 'flabebe': 'Flabébé', + 'floette': 'Floette', + 'florges': 'Florges', + 'skiddo': 'Cabriolaine', + 'gogoat': 'Chevroum', + 'pancham': 'Pandespiègle', + 'pangoro': 'Pandarbare', + 'furfrou': 'Couafarel', + 'espurr': 'Psystigri', + 'meowstic': 'Mistigrix', + 'honedge': 'Monorpale', + 'doublade': 'Dimoclès', + 'aegislash': 'Exagide', + 'spritzee': 'Fluvetin', + 'aromatisse': 'Cocotine', + 'swirlix': 'Sucroquin', + 'slurpuff': 'Cupcanaille', + 'inkay': 'Sepiatop', + 'malamar': 'Sepiatroce', + 'binacle': 'Opermine', + 'barbaracle': 'Golgopathe', + 'skrelp': 'Venalgue', + 'dragalge': 'Kravarech', + 'clauncher': 'Flingouste', + 'clawitzer': 'Gamblast', + 'helioptile': 'Galvaran', + 'heliolisk': 'Iguolta', + 'tyrunt': 'Ptyranidur', + 'tyrantrum': 'Rexillius', + 'amaura': 'Amagara', + 'aurorus': 'Dragmara', + 'sylveon': 'Nymphali', + 'hawlucha': 'Brutalibré', + 'dedenne': 'Dedenne', + 'carbink': 'Strassie', + 'goomy': 'Mucuscule', + 'sliggoo': 'Colimucus', + 'goodra': 'Muplodocus', + 'klefki': 'Trousselin', + 'phantump': 'Brocélôme', + 'trevenant': 'Desséliande', + 'pumpkaboo': 'Pitrouille', + 'gourgeist': 'Banshitrouye', + 'bergmite': 'Grelaçon', + 'avalugg': 'Séracrawl', + 'noibat': 'Sonistrelle', + 'noivern': 'Bruyverne', + 'xerneas': 'Xerneas', + 'yveltal': 'Yveltal', + 'zygarde': 'Zygarde', + 'diancie': 'Diancie', + 'hoopa': 'Hoopa', + 'volcanion': 'Volcanion', + 'rowlet': 'Brindibou', + 'dartrix': 'Efflèche', + 'decidueye': 'Archéduc', + 'litten': 'Flamiaou', + 'torracat': 'Matoufeu', + 'incineroar': 'Félinferno', + 'popplio': 'Otaquin', + 'brionne': 'Otarlette', + 'primarina': 'Oratoria', + 'pikipek': 'Picassaut', + 'trumbeak': 'Piclairon', + 'toucannon': 'Bazoucan', + 'yungoos': 'Manglouton', + 'gumshoos': 'Argouste', + 'grubbin': 'Larvibule', + 'charjabug': 'Chrysapile', + 'vikavolt': 'Lucanon', + 'crabrawler': 'Crabagarre', + 'crabominable': 'Crabominable', + 'oricorio': 'Plumeline', + 'cutiefly': 'Bombydou', + 'ribombee': 'Rubombelle', + 'rockruff': 'Rocabot', + 'lycanroc': 'Lougaroc', + 'wishiwashi': 'Froussardine', + 'mareanie': 'Vorastérie', + 'toxapex': 'Prédastérie', + 'mudbray': 'Tiboudet', + 'mudsdale': 'Bourrinos', + 'dewpider': 'Araqua', + 'araquanid': 'Tarenbulle', + 'fomantis': 'Mimantis', + 'lurantis': 'Floramantis', + 'morelull': 'Spododo', + 'shiinotic': 'Lampignon', + 'salandit': 'Tritox', + 'salazzle': 'Malamandre', + 'stufful': 'Nounourson', + 'bewear': 'Chelours', + 'bounsweet': 'Croquine', + 'steenee': 'Candine', + 'tsareena': 'Sucreine', + 'comfey': 'Guérilande', + 'oranguru': 'Gouroutan', + 'passimian': 'Quartermac', + 'wimpod': 'Sovkipou', + 'golisopod': 'Sarmuraï', + 'sandygast': 'Bacabouh', + 'palossand': 'Trépassable', + 'pyukumuku': 'Concombaffe', + 'type_null': 'Type:0', + 'silvally': 'Silvallié', + 'minior': 'Météno', + 'komala': 'Dodoala', + 'turtonator': 'Boumata', + 'togedemaru': 'Togedemaru', + 'mimikyu': 'Mimiqui', + 'bruxish': 'Denticrisse', + 'drampa': 'Draïeul', + 'dhelmise': 'Sinistrail', + 'jangmo_o': 'Bébécaille', + 'hakamo_o': 'Écaïd', + 'kommo_o': 'Ékaïser', + 'tapu_koko': 'Tokorico', + 'tapu_lele': 'Tokopiyon', + 'tapu_bulu': 'Tokotoro', + 'tapu_fini': 'Tokopisco', + 'cosmog': 'Cosmog', + 'cosmoem': 'Cosmovum', + 'solgaleo': 'Solgaleo', + 'lunala': 'Lunala', + 'nihilego': 'Zéroïd', + 'buzzwole': 'Mouscoto', + 'pheromosa': 'Cancrelove', + 'xurkitree': 'Câblifère', + 'celesteela': 'Bamboiselle', + 'kartana': 'Katagami', + 'guzzlord': 'Engloutyran', + 'necrozma': 'Necrozma', + 'magearna': 'Magearna', + 'marshadow': 'Marshadow', + 'poipole': 'Vémini', + 'naganadel': 'Mandrillon', + 'stakataka': 'Ama-Ama', + 'blacephalon': 'Pierroteknik', + 'zeraora': 'Zeraora', + 'meltan': 'Meltan', + 'melmetal': 'Melmetal', + 'grookey': 'Ouistempo', + 'thwackey': 'Badabouin', + 'rillaboom': 'Gorythmic', + 'scorbunny': 'Flambino', + 'raboot': 'Lapyro', + 'cinderace': 'Pyrobut', + 'sobble': 'Larméléon', + 'drizzile': 'Arrozard', + 'inteleon': 'Lézargus', + 'skwovet': 'Rongourmand', + 'greedent': 'Rongrigou', + 'rookidee': 'Minisange', + 'corvisquire': 'Bleuseille', + 'corviknight': 'Corvaillus', + 'blipbug': 'Larvadar', + 'dottler': 'Coléodôme', + 'orbeetle': 'Astronelle', + 'nickit': 'Goupilou', + 'thievul': 'Roublenard', + 'gossifleur': 'Tournicoton', + 'eldegoss': 'Blancoton', + 'wooloo': 'Moumouton', + 'dubwool': 'Moumouflon', + 'chewtle': 'Khélocrok', + 'drednaw': 'Torgamord', + 'yamper': 'Voltoutou', + 'boltund': 'Fulgudog', + 'rolycoly': 'Charbi', + 'carkol': 'Wagomine', + 'coalossal': 'Monthracite', + 'applin': 'Verpom', + 'flapple': 'Pomdrapi', + 'appletun': 'Dratatin', + 'silicobra': 'Dunaja', + 'sandaconda': 'Dunaconda', + 'cramorant': 'Nigosier', + 'arrokuda': 'Embrochet', + 'barraskewda': 'Hastacuda', + 'toxel': 'Toxizap', + 'toxtricity': 'Salarsen', + 'sizzlipede': 'Grillepattes', + 'centiskorch': 'Scolocendre', + 'clobbopus': 'Poulpaf', + 'grapploct': 'Krakos', + 'sinistea': 'Théffroi', + 'polteageist': 'Polthégeist', + 'hatenna': 'Bibichut', + 'hattrem': 'Chapotus', + 'hatterene': 'Sorcilence', + 'impidimp': 'Grimalin', + 'morgrem': 'Fourbelin', + 'grimmsnarl': 'Angoliath', + 'obstagoon': 'Ixon', + 'perrserker': 'Berserkatt', + 'cursola': 'Corayôme', + 'sirfetchd': 'Palarticho', + 'mr_rime': 'M. Glaquette', + 'runerigus': 'Tutétékri', + 'milcery': 'Crèmy', + 'alcremie': 'Charmilly', + 'falinks': 'Hexadron', + 'pincurchin': 'Wattapik', + 'snom': 'Frissonille', + 'frosmoth': 'Beldeneige', + 'stonjourner': 'Dolman', + 'eiscue': 'Bekaglaçon', + 'indeedee': 'Wimessir', + 'morpeko': 'Morpeko', + 'cufant': 'Charibari', + 'copperajah': 'Pachyradjah', + 'dracozolt': 'Galvagon', + 'arctozolt': 'Galvagla', + 'dracovish': 'Hydragon', + 'arctovish': 'Hydragla', + 'duraludon': 'Duralugon', + 'dreepy': 'Fantyrm', + 'drakloak': 'Dispareptil', + 'dragapult': 'Lanssorien', + 'zacian': 'Zacian', + 'zamazenta': 'Zamazenta', + 'eternatus': 'Éthernatos', + 'kubfu': 'Wushours', + 'urshifu': 'Shifours', + 'zarude': 'Zarude', + 'regieleki': 'Regieleki', + 'regidrago': 'Regidrago', + 'glastrier': 'Blizzeval', + 'spectrier': 'Spectreval', + 'calyrex': 'Sylveroy', + 'wyrdeer': 'Cerbyllin', + 'kleavor': 'Hachécateur', + 'ursaluna': 'Ursaking', + 'basculegion': 'Paragruel', + 'sneasler': 'Farfurex', + 'overqwil': 'Qwilpik', + 'enamorus': 'Amovénus', + 'sprigatito': 'Poussacha', + 'floragato': 'Matourgeon', + 'meowscarada': 'Miascarade', + 'fuecoco': 'Chochodile', + 'crocalor': 'Crocogril', + 'skeledirge': 'Flâmigator', + 'quaxly': 'Coiffeton', + 'quaxwell': 'Canarbello', + 'quaquaval': 'Palmaval', + 'lechonk': 'Gourmelet', + 'oinkologne': 'Fragroin', + 'tarountula': 'Tissenboule', + 'spidops': 'Filentrappe', + 'nymble': 'Lilliterelle', + 'lokix': 'Gambex', + 'pawmi': 'Pohm', + 'pawmo': 'Pohmotte', + 'pawmot': 'Pohmarmotte', + 'tandemaus': 'Compagnol', + 'maushold': 'Famignol', + 'fidough': 'Pâtachiot', + 'dachsbun': 'Briochien', + 'smoliv': 'Olivini', + 'dolliv': 'Olivado', + 'arboliva': 'Arboliva', + 'squawkabilly': 'Tapatoès', + 'nacli': 'Selutin', + 'naclstack': 'Amassel', + 'garganacl': 'Gigansel', + 'charcadet': 'Charbambin', + 'armarouge': 'Carmadura', + 'ceruledge': 'Malvalame', + 'tadbulb': 'Têtampoule', + 'bellibolt': 'Ampibidou', + 'wattrel': 'Zapétrel', + 'kilowattrel': 'Fulgulairo', + 'maschiff': 'Grondogue', + 'mabosstiff': 'Dogrino', + 'shroodle': 'Gribouraigne', + 'grafaiai': 'Tag-Tag', + 'bramblin': 'Virovent', + 'brambleghast': 'Virevorreur', + 'toedscool': 'Terracool', + 'toedscruel': 'Terracruel', + 'klawf': 'Craparoi', + 'capsakid': 'Pimito', + 'scovillain': 'Scovilain', + 'rellor': 'Léboulérou', + 'rabsca': 'Bérasca', + 'flittle': 'Flotillon', + 'espathra': 'Cléopsytra', + 'tinkatink': 'Forgerette', + 'tinkatuff': 'Forgella', + 'tinkaton': 'Forgelina', + 'wiglett': 'Taupikeau', + 'wugtrio': 'Triopikeau', + 'bombirdier': 'Lestombaile', + 'finizen': 'Dofin', + 'palafin': 'Superdofin', + 'varoom': 'Vrombi', + 'revavroom': 'Vrombotor', + 'cyclizar': 'Motorizard', + 'orthworm': 'Ferdeter', + 'glimmet': 'Germéclat', + 'glimmora': 'Floréclat', + 'greavard': 'Toutombe', + 'houndstone': 'Tomberro', + 'flamigo': 'Flamenroule', + 'cetoddle': 'Piétacé', + 'cetitan': 'Balbalèze', + 'veluza': 'Délestin', + 'dondozo': 'Oyacata', + 'tatsugiri': 'Nigirigon', + 'annihilape': 'Courrousinge', + 'clodsire': 'Terraiste', + 'farigiraf': 'Farigiraf', + 'dudunsparce': 'Deusolourdo', + 'kingambit': 'Scalpereur', + 'great_tusk': 'Fort-Ivoire', + 'scream_tail': 'Hurle-Queue', + 'brute_bonnet': 'Fongus-Furie', + 'flutter_mane': 'Flotte-Mèche', + 'slither_wing': 'Rampe-Ailes', + 'sandy_shocks': 'Pelage-Sablé', + 'iron_treads': 'Roue-de-Fer', + 'iron_bundle': 'Hotte-de-Fer', + 'iron_hands': 'Paume-de-Fer', + 'iron_jugulis': 'Têtes-de-Fer', + 'iron_moth': 'Mite-de-Fer', + 'iron_thorns': 'Épine-de-Fer', + 'frigibax': 'Frigodo', + 'arctibax': 'Cryodo', + 'baxcalibur': 'Glaivodo', + 'gimmighoul': 'Mordudor', + 'gholdengo': 'Gromago', + 'wo_chien': 'Chongjian', + 'chien_pao': 'Baojian', + 'ting_lu': 'Dinglu', + 'chi_yu': 'Yuyu', + 'roaring_moon': 'Rugit-Lune', + 'iron_valiant': 'Garde-de-Fer', + 'koraidon': 'Koraidon', + 'miraidon': 'Miraidon', + 'walking_wake': 'Serpente-Eau', + 'iron_leaves': 'Vert-de-Fer', + 'dipplin': 'Pomdramour', + 'poltchageist': 'Poltchageist', + 'sinistcha': 'Théffroyable', + 'okidogi': 'Félicanis', + 'munkidori': 'Fortusimia', + 'fezandipiti': 'Favianos', + 'ogerpon': 'Ogerpon', + 'archaludon': 'Pondralugon', + 'hydrapple': 'Pomdorochi', + 'gouging_fire': 'Feu-Perçant', + 'raging_bolt': 'Ire-Foudre', + 'iron_boulder': 'Roc-de-Fer', + 'iron_crown': 'Chef-de-Fer', + 'terapagos': 'Terapagos', + 'pecharunt': 'Pêchaminus', + 'alola_rattata': 'Rattata', + 'alola_raticate': 'Rattatac', + 'alola_raichu': 'Raichu', + 'alola_sandshrew': 'Sabelette', + 'alola_sandslash': 'Sablaireau', + 'alola_vulpix': 'Goupix', + 'alola_ninetales': 'Feunard', + 'alola_diglett': 'Taupiqueur', + 'alola_dugtrio': 'Triopikeur', + 'alola_meowth': 'Miaouss', + 'alola_persian': 'Persian', + 'alola_geodude': 'Racaillou', + 'alola_graveler': 'Gravalanch', + 'alola_golem': 'Grolem', + 'alola_grimer': 'Tadmorv', + 'alola_muk': 'Grotadmorv', + 'alola_exeggutor': 'Noadkoko', + 'alola_marowak': 'Ossatueur', + 'eternal_floette': 'Floette', + 'galar_meowth': 'Miaouss', + 'galar_ponyta': 'Ponyta', + 'galar_rapidash': 'Galopa', + 'galar_slowpoke': 'Ramoloss', + 'galar_slowbro': 'Flagadoss', + 'galar_farfetchd': 'Canarticho', + 'galar_weezing': 'Smogogo', + 'galar_mr_mime': 'M. Mime', + 'galar_articuno': 'Artikodin', + 'galar_zapdos': 'Électhor', + 'galar_moltres': 'Sulfura', + 'galar_slowking': 'Roigada', + 'galar_corsola': 'Corayon', + 'galar_zigzagoon': 'Zigzaton', + 'galar_linoone': 'Linéon', + 'galar_darumaka': 'Darumarond', + 'galar_darmanitan': 'Darumacho', + 'galar_yamask': 'Tutafeh', + 'galar_stunfisk': 'Limonde', + 'hisui_growlithe': 'Caninos', + 'hisui_arcanine': 'Arcanin', + 'hisui_voltorb': 'Voltorbe', + 'hisui_electrode': 'Électrode', + 'hisui_typhlosion': 'Typhlosion', + 'hisui_qwilfish': 'Qwilfish', + 'hisui_sneasel': 'Farfuret', + 'hisui_samurott': 'Clamiral', + 'hisui_lilligant': 'Fragilady', + 'hisui_zorua': 'Zorua', + 'hisui_zoroark': 'Zoroark', + 'hisui_braviary': 'Gueriaigle', + 'hisui_sliggoo': 'Colimucus', + 'hisui_goodra': 'Muplodocus', + 'hisui_avalugg': 'Séracrawl', + 'hisui_decidueye': 'Archéduc', + 'paldea_tauros': 'Tauros', + 'paldea_wooper': 'Axoloto', + 'bloodmoon_ursaluna': 'Ursaking', +} as const; diff --git a/src/locales/fr/splash-messages.ts b/src/locales/fr/splash-messages.ts index ef7a8c3335a..83e10a51e17 100644 --- a/src/locales/fr/splash-messages.ts +++ b/src/locales/fr/splash-messages.ts @@ -1,37 +1,37 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const splashMessages: SimpleTranslationEntries = { - "battlesWon": "combats gagnés !", - "joinTheDiscord": "Rejoins le Discord !", - "infiniteLevels": "Niveaux infinis !", - "everythingStacks": "Tout se cumule !", - "optionalSaveScumming": "Optional Save Scumming!", - "biomes": "35 biomes !", - "openSource": "Open Source !", - "playWithSpeed": "Joue en vitesse x5 !", - "liveBugTesting": "Tests de bugs en direct !", - "heavyInfluence": "Grosse influence de RoR2 !", - "pokemonRiskAndPokemonRain": "Pokémon Risk et Pokémon Rain !", - "nowWithMoreSalt": "Désormais avec 33% de sel en plus !", - "infiniteFusionAtHome": "Infinite Fusion, chez vous !", - "brokenEggMoves": "Des Capacités Œuf craquées !", - "magnificent": "Magnifique !", - "mubstitute": "Mubstitute !", - "thatsCrazy": "C’est une dinguerie !", - "oranceJuice": "Jus d’orange !", - "questionableBalancing": "Équilibrage douteux !", - "coolShaders": "Cool shaders !", - "aiFree": "Garanti sans IA !", - "suddenDifficultySpikes": "De soudains pics de difficultés !", - "basedOnAnUnfinishedFlashGame": "Basé sur un jeu Flash abandonné !", - "moreAddictiveThanIntended": "Plus addictif que prévu !", - "mostlyConsistentSeeds": "Des seeds à peu près stables !", - "achievementPointsDontDoAnything": "Les Points de Succès servent à rien !", - "youDoNotStartAtLevel": "Ne commence pas au Niveau 2000 !", - "dontTalkAboutTheManaphyEggIncident": "Ne parle pas de l'incident de l’Œuf de Manaphy !", - "alsoTryPokengine": "Essaye aussi Pokéngine !", - "alsoTryEmeraldRogue": "Essaye aussi Emerald Rogue!", - "alsoTryRadicalRed": "Essaye aussi Radical Red !", - "eeveeExpo": "Eevee Expo !", - "ynoproject": "YNOproject !", + 'battlesWon': 'combats gagnés !', + 'joinTheDiscord': 'Rejoins le Discord !', + 'infiniteLevels': 'Niveaux infinis !', + 'everythingStacks': 'Tout se cumule !', + 'optionalSaveScumming': 'Optional Save Scumming!', + 'biomes': '35 biomes !', + 'openSource': 'Open Source !', + 'playWithSpeed': 'Joue en vitesse x5 !', + 'liveBugTesting': 'Tests de bugs en direct !', + 'heavyInfluence': 'Grosse influence de RoR2 !', + 'pokemonRiskAndPokemonRain': 'Pokémon Risk et Pokémon Rain !', + 'nowWithMoreSalt': 'Désormais avec 33% de sel en plus !', + 'infiniteFusionAtHome': 'Infinite Fusion, chez vous !', + 'brokenEggMoves': 'Des Capacités Œuf craquées !', + 'magnificent': 'Magnifique !', + 'mubstitute': 'Mubstitute !', + 'thatsCrazy': 'C’est une dinguerie !', + 'oranceJuice': 'Jus d’orange !', + 'questionableBalancing': 'Équilibrage douteux !', + 'coolShaders': 'Cool shaders !', + 'aiFree': 'Garanti sans IA !', + 'suddenDifficultySpikes': 'De soudains pics de difficultés !', + 'basedOnAnUnfinishedFlashGame': 'Basé sur un jeu Flash abandonné !', + 'moreAddictiveThanIntended': 'Plus addictif que prévu !', + 'mostlyConsistentSeeds': 'Des seeds à peu près stables !', + 'achievementPointsDontDoAnything': 'Les Points de Succès servent à rien !', + 'youDoNotStartAtLevel': 'Ne commence pas au Niveau 2000 !', + 'dontTalkAboutTheManaphyEggIncident': 'Ne parle pas de l\'incident de l’Œuf de Manaphy !', + 'alsoTryPokengine': 'Essaye aussi Pokéngine !', + 'alsoTryEmeraldRogue': 'Essaye aussi Emerald Rogue!', + 'alsoTryRadicalRed': 'Essaye aussi Radical Red !', + 'eeveeExpo': 'Eevee Expo !', + 'ynoproject': 'YNOproject !', } as const; diff --git a/src/locales/fr/starter-select-ui-handler.ts b/src/locales/fr/starter-select-ui-handler.ts index 380f4e9fd56..3a8dc55f42d 100644 --- a/src/locales/fr/starter-select-ui-handler.ts +++ b/src/locales/fr/starter-select-ui-handler.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,39 +6,39 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const starterSelectUiHandler: SimpleTranslationEntries = { - "confirmStartTeam":'Commencer avec ces Pokémon ?', - "gen1": "1G", - "gen2": "2G", - "gen3": "3G", - "gen4": "4G", - "gen5": "5G", - "gen6": "6G", - "gen7": "7G", - "gen8": "8G", - "gen9": "9G", - "growthRate": "Croissance :", - "ability": "Talent :", - "passive": "Passif :", - "nature": "Nature :", - "eggMoves": "Capacités Œuf", - "start": "Lancer", - "addToParty": "Ajouter à l’équipe", - "toggleIVs": "Voir IVs", - "manageMoves": "Gérer Capacités", - "useCandies": "Utiliser Bonbons", - "selectMoveSwapOut": "Sélectionnez la capacité à échanger.", - "selectMoveSwapWith": "Sélectionnez laquelle échanger avec", - "unlockPassive": "Débloquer Passif", - "reduceCost": "Diminuer le cout", - "cycleShiny": "R: » Chromatiques", - "cycleForm": "F: » Formes", - "cycleGender": "G: » Sexes", - "cycleAbility": "E: » Talents", - "cycleNature": "N: » Natures", - "cycleVariant": "V: » Variants", - "enablePassive": "Activer Passif", - "disablePassive": "Désactiver Passif", - "locked": "Verrouillé", - "disabled": "Désactivé", - "uncaught": "Non-capturé" -} + 'confirmStartTeam':'Commencer avec ces Pokémon ?', + 'gen1': '1G', + 'gen2': '2G', + 'gen3': '3G', + 'gen4': '4G', + 'gen5': '5G', + 'gen6': '6G', + 'gen7': '7G', + 'gen8': '8G', + 'gen9': '9G', + 'growthRate': 'Croissance :', + 'ability': 'Talent :', + 'passive': 'Passif :', + 'nature': 'Nature :', + 'eggMoves': 'Capacités Œuf', + 'start': 'Lancer', + 'addToParty': 'Ajouter à l’équipe', + 'toggleIVs': 'Voir IVs', + 'manageMoves': 'Gérer Capacités', + 'useCandies': 'Utiliser Bonbons', + 'selectMoveSwapOut': 'Sélectionnez la capacité à échanger.', + 'selectMoveSwapWith': 'Sélectionnez laquelle échanger avec', + 'unlockPassive': 'Débloquer Passif', + 'reduceCost': 'Diminuer le cout', + 'cycleShiny': 'R: » Chromatiques', + 'cycleForm': 'F: » Formes', + 'cycleGender': 'G: » Sexes', + 'cycleAbility': 'E: » Talents', + 'cycleNature': 'N: » Natures', + 'cycleVariant': 'V: » Variants', + 'enablePassive': 'Activer Passif', + 'disablePassive': 'Désactiver Passif', + 'locked': 'Verrouillé', + 'disabled': 'Désactivé', + 'uncaught': 'Non-capturé' +}; diff --git a/src/locales/fr/trainers.ts b/src/locales/fr/trainers.ts index bfc77b5a8cf..44c97bc3644 100644 --- a/src/locales/fr/trainers.ts +++ b/src/locales/fr/trainers.ts @@ -1,244 +1,244 @@ -import {SimpleTranslationEntries} from "#app/plugins/i18n"; +import {SimpleTranslationEntries} from '#app/plugins/i18n'; // Titles of special trainers like gym leaders, elite four, and the champion export const titles: SimpleTranslationEntries = { - "elite_four": "Conseil 4", - "gym_leader": "Champion d’Arène", - "gym_leader_female": "Championne d’Arène", - "champion": "Maitre·esse", //Written in gender-inclusive language in wait of a potential split of the entry - "rival": "Rival·e", //Written in gender-inclusive language in wait of a potential split of the entry - "professor": "Professeur·e", //Written in gender-inclusive language in wait of a potential split of the entry - "frontier_brain": "Meneur·euse de Zone", //Written in gender-inclusive language in wait of a potential split of the entry - // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. + 'elite_four': 'Conseil 4', + 'gym_leader': 'Champion d’Arène', + 'gym_leader_female': 'Championne d’Arène', + 'champion': 'Maitre·esse', //Written in gender-inclusive language in wait of a potential split of the entry + 'rival': 'Rival·e', //Written in gender-inclusive language in wait of a potential split of the entry + 'professor': 'Professeur·e', //Written in gender-inclusive language in wait of a potential split of the entry + 'frontier_brain': 'Meneur·euse de Zone', //Written in gender-inclusive language in wait of a potential split of the entry + // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. } as const; // Titles of trainers like "Youngster" or "Lass" export const trainerClasses: SimpleTranslationEntries = { - "ace_trainer": "Topdresseur", - "ace_trainer_female": "Topdresseuse", - "ace_duo": "Topdresseurs", - "artist": "Artiste", - "artist_female": "Artiste", - "backers": "Pompom Girls", - "backpacker": "Randonneur", - "backpacker_female": "Randonneuse", - "backpackers": "Randonneurs", - "baker": "Boulangère", - "battle_girl": "Combattante", - "beauty": "Canon", - "beginners": "Beginners", - "biker": "Motard", - "black_belt": "Karatéka", - "breeder": "Éleveur", - "breeder_female": "Éleveuse", - "breeders": "Éleveurs", - "clerk": "Employé", - "clerk_female": "Employée", - "colleagues": "Collègues de Bureau", - "crush_kin": "Duo Baston", - "cyclist": "Cycliste", - "cyclist_female": "Cycliste", - "cyclists": "Cyclistes", - "dancer": "Danseur", - "dancer_female": "Danseuse", - "depot_agent": "Cheminot", - "doctor": "Docteur", - "doctor_female": "Docteure", - "fisherman": "Pêcheur", - "fisherman_female": "Pêcheuse", - "gentleman": "Gentleman", - "guitarist": "Guitariste", - "guitarist_female": "Guitariste", - "harlequin": "Clown", - "hiker": "Montagnard", - "hooligans": "Loubards", - "hoopster": "Basketteur", - "infielder": "Baseballeur", - "janitor": "Nettoyeur", - "lady": "Mademoiselle", - "lass": "Fillette", - "linebacker": "Quaterback", - "maid": "Gouvernante", - "madame": "Mondaine", - "medical_team": "Médecins", - "musician": "Musicien", - "hex_maniac": "Mystimaniac", - "nurse": "Infirmière", - "nursery_aide": "Institutrice", - "officer": "Policier", - "parasol_lady": "Sœur Parasol", - "pilot": "Pilote", - "pokéfan": "Poké Fan", - "pokéfan_female": "Poké Fan", - "pokéfan_family": "Couple de Pokéfans", - "preschooler": "Petit", - "preschooler_female": "Petite", - "preschoolers": "Petits", - "psychic": "Kinésiste", - "psychic_female": "Kinésiste", - "psychics": "Kinésistes", - "pokémon_ranger": "Pokémon Ranger", - "pokémon_ranger_female": "Pokémon Ranger", - "pokémon_rangers": "Pokémon Rangers", - "ranger": "Ranger", - "restaurant_staff": "Serveurs", - "rich": "Rich", - "rich_female": "Mondaine", - "rich_boy": "Gentleman", - "rich_couple": "Couple de Bourgeois", - "rich_kid": "Richard", - "rich_kid_female": "Mademoiselle", - "rich_kids": "Richards", - "roughneck": "Loubard", - "scientist": "Scientifique", - "scientist_female": "Scientifique", - "scientists": "Scientifiques", - "smasher": "Tenniswoman", - "snow_worker": "Ouvrier Alpin", - "snow_worker_female": "Ouvrière Alpine", - "striker": "Footballeur", - "school_kid": "Élève", - "school_kid_female": "Élève", - "school_kids": "Élèves", - "swimmer": "Nageur", - "swimmer_female": "Nageuse", - "swimmers": "Nageurs", - "twins": "Jumelles", - "veteran": "Vénérable", - "veteran_female": "Vénérable", - "veteran_duo": "Vénérables", - "waiter": "Serveur", - "waitress": "Serveuse", - "worker": "Ouvrier", - "worker_female": "Ouvrière", - "workers": "Ouvriers", - "youngster": "Gamin" + 'ace_trainer': 'Topdresseur', + 'ace_trainer_female': 'Topdresseuse', + 'ace_duo': 'Topdresseurs', + 'artist': 'Artiste', + 'artist_female': 'Artiste', + 'backers': 'Pompom Girls', + 'backpacker': 'Randonneur', + 'backpacker_female': 'Randonneuse', + 'backpackers': 'Randonneurs', + 'baker': 'Boulangère', + 'battle_girl': 'Combattante', + 'beauty': 'Canon', + 'beginners': 'Beginners', + 'biker': 'Motard', + 'black_belt': 'Karatéka', + 'breeder': 'Éleveur', + 'breeder_female': 'Éleveuse', + 'breeders': 'Éleveurs', + 'clerk': 'Employé', + 'clerk_female': 'Employée', + 'colleagues': 'Collègues de Bureau', + 'crush_kin': 'Duo Baston', + 'cyclist': 'Cycliste', + 'cyclist_female': 'Cycliste', + 'cyclists': 'Cyclistes', + 'dancer': 'Danseur', + 'dancer_female': 'Danseuse', + 'depot_agent': 'Cheminot', + 'doctor': 'Docteur', + 'doctor_female': 'Docteure', + 'fisherman': 'Pêcheur', + 'fisherman_female': 'Pêcheuse', + 'gentleman': 'Gentleman', + 'guitarist': 'Guitariste', + 'guitarist_female': 'Guitariste', + 'harlequin': 'Clown', + 'hiker': 'Montagnard', + 'hooligans': 'Loubards', + 'hoopster': 'Basketteur', + 'infielder': 'Baseballeur', + 'janitor': 'Nettoyeur', + 'lady': 'Mademoiselle', + 'lass': 'Fillette', + 'linebacker': 'Quaterback', + 'maid': 'Gouvernante', + 'madame': 'Mondaine', + 'medical_team': 'Médecins', + 'musician': 'Musicien', + 'hex_maniac': 'Mystimaniac', + 'nurse': 'Infirmière', + 'nursery_aide': 'Institutrice', + 'officer': 'Policier', + 'parasol_lady': 'Sœur Parasol', + 'pilot': 'Pilote', + 'pokéfan': 'Poké Fan', + 'pokéfan_female': 'Poké Fan', + 'pokéfan_family': 'Couple de Pokéfans', + 'preschooler': 'Petit', + 'preschooler_female': 'Petite', + 'preschoolers': 'Petits', + 'psychic': 'Kinésiste', + 'psychic_female': 'Kinésiste', + 'psychics': 'Kinésistes', + 'pokémon_ranger': 'Pokémon Ranger', + 'pokémon_ranger_female': 'Pokémon Ranger', + 'pokémon_rangers': 'Pokémon Rangers', + 'ranger': 'Ranger', + 'restaurant_staff': 'Serveurs', + 'rich': 'Rich', + 'rich_female': 'Mondaine', + 'rich_boy': 'Gentleman', + 'rich_couple': 'Couple de Bourgeois', + 'rich_kid': 'Richard', + 'rich_kid_female': 'Mademoiselle', + 'rich_kids': 'Richards', + 'roughneck': 'Loubard', + 'scientist': 'Scientifique', + 'scientist_female': 'Scientifique', + 'scientists': 'Scientifiques', + 'smasher': 'Tenniswoman', + 'snow_worker': 'Ouvrier Alpin', + 'snow_worker_female': 'Ouvrière Alpine', + 'striker': 'Footballeur', + 'school_kid': 'Élève', + 'school_kid_female': 'Élève', + 'school_kids': 'Élèves', + 'swimmer': 'Nageur', + 'swimmer_female': 'Nageuse', + 'swimmers': 'Nageurs', + 'twins': 'Jumelles', + 'veteran': 'Vénérable', + 'veteran_female': 'Vénérable', + 'veteran_duo': 'Vénérables', + 'waiter': 'Serveur', + 'waitress': 'Serveuse', + 'worker': 'Ouvrier', + 'worker_female': 'Ouvrière', + 'workers': 'Ouvriers', + 'youngster': 'Gamin' } as const; // Names of special trainers like gym leaders, elite four, and the champion export const trainerNames: SimpleTranslationEntries = { - "brock": "Pierre", - "misty": "Ondine", - "lt_surge": "Major Bob", - "erika": "Erika", - "janine": "Jeannine", - "sabrina": "Morgane", - "blaine": "Auguste", - "giovanni": "Giovanni", - "falkner": "Albert", - "bugsy": "Hector", - "whitney": "Blanche", - "morty": "Mortimer", - "chuck": "Chuck", - "jasmine": "Jasmine", - "pryce": "Frédo", - "clair": "Sandra", - "roxanne": "Roxanne", - "brawly": "Bastien", - "wattson": "Voltère", - "flannery": "Adriane", - "norman": "Norman", - "winona": "Alizée", - "tate": "Lévy", - "liza": "Tatia", - "juan": "Juan", - "roark": "Pierrick", - "gardenia": "Flo", - "maylene": "Mélina", - "crasher_wake": "Lovis", - "fantina": "Kiméra", - "byron": "Charles", - "candice": "Gladys", - "volkner": "Tanguy", - "cilan": "Rachid", - "chili": "Armando", - "cress": "Noa", - "cheren": "Tcheren", - "lenora": "Aloé", - "roxie": "Strykna", - "burgh": "Artie", - "elesa": "Inezia", - "clay": "Bardane", - "skyla": "Carolina", - "brycen": "Zhu", - "drayden": "Watson", - "marlon": "Amana", - "viola": "Violette", - "grant": "Lino", - "korrina": "Cornélia", - "ramos": "Amaro", - "clemont": "Lem", - "valerie": "Valériane", - "olympia": "Astera", - "wulfric": "Urup", - "milo": "Percy", - "nessa": "Donna", - "kabu": "Kabu", - "bea": "Faïza", - "allister": "Alistair", - "opal": "Sally", - "bede": "Travis", - "gordie": "Chaz", - "melony": "Lona", - "piers": "Peterson", - "marnie": "Rosemary", - "raihan": "Roy", - "katy": "Éra", - "brassius": "Colza", - "iono": "Mashynn", - "kofu": "Kombu", - "larry": "Okuba", - "ryme": "Laïm", - "tulip": "Tully", - "grusha": "Grusha", - "lorelei": "Olga", - "bruno": "Aldo", - "agatha": "Agatha", - "lance": "Peter", - "will": "Clément", - "koga": "Koga", - "karen": "Marion", - "sidney": "Damien", - "phoebe": "Spectra", - "glacia": "Glacia", - "drake": "Aragon", - "aaron": "Aaron", - "bertha": "Terry", - "flint": "Adrien", - "lucian": "Lucio", - "shauntal": "Anis", - "marshal": "Kunz", - "grimsley": "Pieris", - "caitlin": "Percila", - "malva": "Malva", - "siebold": "Narcisse", - "wikstrom": "Tileo", - "drasna": "Dracéna", - "hala": "Pectorius", - "molayne": "Molène", - "olivia": "Alyxia", - "acerola": "Margie", - "kahili": "Kahili", - "rika": "Cayenn", - "poppy": "Popi", - "hassel": "Hassa", - "crispin": "Rubépin", - "amarys": "Nérine", - "lacey": "Taro", - "drayton": "Irido", - "blue": "Blue", - "red": "Red", - "steven": "Pierre Rochard", - "wallace": "Marc", - "cynthia": "Cynthia", - "alder": "Goyah", - "iris": "Iris", - "diantha": "Dianthéa", - "hau": "Tili", - "geeta": "Alisma", - "nemona": "Menzi", - "kieran": "Kass", - "leon": "Tarak", - "rival": "Gwenaël", //Male breton name, a celtic language spoken in Brittany (France) and related to the word for "white" (gwenn). Finn meaning is also "white" in irish/goidelic which are also celtic languages. - "rival_female": "Papina", //Litteral translation of ivy, also used as Female name in a North-American indigenous language + 'brock': 'Pierre', + 'misty': 'Ondine', + 'lt_surge': 'Major Bob', + 'erika': 'Erika', + 'janine': 'Jeannine', + 'sabrina': 'Morgane', + 'blaine': 'Auguste', + 'giovanni': 'Giovanni', + 'falkner': 'Albert', + 'bugsy': 'Hector', + 'whitney': 'Blanche', + 'morty': 'Mortimer', + 'chuck': 'Chuck', + 'jasmine': 'Jasmine', + 'pryce': 'Frédo', + 'clair': 'Sandra', + 'roxanne': 'Roxanne', + 'brawly': 'Bastien', + 'wattson': 'Voltère', + 'flannery': 'Adriane', + 'norman': 'Norman', + 'winona': 'Alizée', + 'tate': 'Lévy', + 'liza': 'Tatia', + 'juan': 'Juan', + 'roark': 'Pierrick', + 'gardenia': 'Flo', + 'maylene': 'Mélina', + 'crasher_wake': 'Lovis', + 'fantina': 'Kiméra', + 'byron': 'Charles', + 'candice': 'Gladys', + 'volkner': 'Tanguy', + 'cilan': 'Rachid', + 'chili': 'Armando', + 'cress': 'Noa', + 'cheren': 'Tcheren', + 'lenora': 'Aloé', + 'roxie': 'Strykna', + 'burgh': 'Artie', + 'elesa': 'Inezia', + 'clay': 'Bardane', + 'skyla': 'Carolina', + 'brycen': 'Zhu', + 'drayden': 'Watson', + 'marlon': 'Amana', + 'viola': 'Violette', + 'grant': 'Lino', + 'korrina': 'Cornélia', + 'ramos': 'Amaro', + 'clemont': 'Lem', + 'valerie': 'Valériane', + 'olympia': 'Astera', + 'wulfric': 'Urup', + 'milo': 'Percy', + 'nessa': 'Donna', + 'kabu': 'Kabu', + 'bea': 'Faïza', + 'allister': 'Alistair', + 'opal': 'Sally', + 'bede': 'Travis', + 'gordie': 'Chaz', + 'melony': 'Lona', + 'piers': 'Peterson', + 'marnie': 'Rosemary', + 'raihan': 'Roy', + 'katy': 'Éra', + 'brassius': 'Colza', + 'iono': 'Mashynn', + 'kofu': 'Kombu', + 'larry': 'Okuba', + 'ryme': 'Laïm', + 'tulip': 'Tully', + 'grusha': 'Grusha', + 'lorelei': 'Olga', + 'bruno': 'Aldo', + 'agatha': 'Agatha', + 'lance': 'Peter', + 'will': 'Clément', + 'koga': 'Koga', + 'karen': 'Marion', + 'sidney': 'Damien', + 'phoebe': 'Spectra', + 'glacia': 'Glacia', + 'drake': 'Aragon', + 'aaron': 'Aaron', + 'bertha': 'Terry', + 'flint': 'Adrien', + 'lucian': 'Lucio', + 'shauntal': 'Anis', + 'marshal': 'Kunz', + 'grimsley': 'Pieris', + 'caitlin': 'Percila', + 'malva': 'Malva', + 'siebold': 'Narcisse', + 'wikstrom': 'Tileo', + 'drasna': 'Dracéna', + 'hala': 'Pectorius', + 'molayne': 'Molène', + 'olivia': 'Alyxia', + 'acerola': 'Margie', + 'kahili': 'Kahili', + 'rika': 'Cayenn', + 'poppy': 'Popi', + 'hassel': 'Hassa', + 'crispin': 'Rubépin', + 'amarys': 'Nérine', + 'lacey': 'Taro', + 'drayton': 'Irido', + 'blue': 'Blue', + 'red': 'Red', + 'steven': 'Pierre Rochard', + 'wallace': 'Marc', + 'cynthia': 'Cynthia', + 'alder': 'Goyah', + 'iris': 'Iris', + 'diantha': 'Dianthéa', + 'hau': 'Tili', + 'geeta': 'Alisma', + 'nemona': 'Menzi', + 'kieran': 'Kass', + 'leon': 'Tarak', + 'rival': 'Gwenaël', //Male breton name, a celtic language spoken in Brittany (France) and related to the word for "white" (gwenn). Finn meaning is also "white" in irish/goidelic which are also celtic languages. + 'rival_female': 'Papina', //Litteral translation of ivy, also used as Female name in a North-American indigenous language } as const; diff --git a/src/locales/fr/tutorial.ts b/src/locales/fr/tutorial.ts index bcd76d61da2..3b8b21d77d8 100644 --- a/src/locales/fr/tutorial.ts +++ b/src/locales/fr/tutorial.ts @@ -1,35 +1,35 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const tutorial: SimpleTranslationEntries = { - "intro": `Bienvenue dans PokéRogue, un fangame axé sur les combats Pokémon avec des éléments roguelite ! + 'intro': `Bienvenue dans PokéRogue, un fangame axé sur les combats Pokémon avec des éléments roguelite ! $Ce jeu n’est pas monétisé et nous ne prétendons pas à la propriété de Pokémon, ni des éléments sous copyright $utilisés. $Ce jeu est toujours en développement, mais entièrement jouable. $Tout signalement de bugs passe par le serveur Discord. $Si le jeu est lent, vérifiez que l’Accélération Matérielle est activée dans les paramètres du navigateur.`, - "accessMenu": `Accédez au menu avec M ou Échap lors de l’attente d’une\naction. + 'accessMenu': `Accédez au menu avec M ou Échap lors de l’attente d’une\naction. $Il contient les paramètres et diverses fonctionnalités`, - "menu": `Vous pouvez accéder aux paramètres depuis ce menu. + 'menu': `Vous pouvez accéder aux paramètres depuis ce menu. $Vous pouvez entre autres y changer la vitesse du jeu ou le style de fenêtre. $Il y a également toute une variété d’autres fonctionnalités, $jetez-y un œil !`, - "starterSelect": `Choisissez vos starters depuis cet écran.\nIls formeront votre équipe de départ. + 'starterSelect': `Choisissez vos starters depuis cet écran.\nIls formeront votre équipe de départ. $Chacun possède une valeur. Votre équipe peut avoir jusqu’à\n6 membres, tant que vous ne dépassez pas un cout de 10. $Vous pouvez aussi choisir le sexe, le talent et la forme en\nfonction des variants déjà capturés ou éclos. $Les IVs d’un starter sont les meilleurs de tous ceux de son\nespèce déjà obtenus. Essayez donc d’en obtenir plusieurs !`, - "pokerus": `Chaque jour, 3 starters tirés aléatoirement ont un contour + 'pokerus': `Chaque jour, 3 starters tirés aléatoirement ont un contour $violet. Si un starter que vous possédez l’a, essayez de $l’ajouter à votre équipe. Vérifiez bien son résumé !`, - "statChange": `Les changements de stats restent à travers les combats tant que le Pokémon n’est pas rappelé. + 'statChange': `Les changements de stats restent à travers les combats tant que le Pokémon n’est pas rappelé. $Vos Pokémon sont rappelés avant un combat de Dresseur et avant d’entrer dans un nouveau biome. $Vous pouvez également voir en combat les changements de stats d’un Pokémon en maintenant C ou Maj.`, - "selectItem": `Après chaque combat, vous avez le choix entre 3 objets\ntirés au sort. Vous ne pouvez en prendre qu’un. + 'selectItem': `Après chaque combat, vous avez le choix entre 3 objets\ntirés au sort. Vous ne pouvez en prendre qu’un. $Cela peut être des objets consommables, des objets à\nfaire tenir, ou des objets passifs aux effets permanents. $La plupart des effets des objets non-consommables se cumuleront de diverses manières. $Certains objets apparaîtront s’ils peuvent être utilisés, comme les objets d’évolution. @@ -38,7 +38,7 @@ export const tutorial: SimpleTranslationEntries = { $Vous pouvez acheter des consommables avec de l’argent.\nPlus vous progressez, plus le choix sera varié. $Choisir un des objets gratuits déclenchera le prochain combat, donc faites bien tous vos achats avant.`, - "eggGacha": `Depuis cet écran, vous pouvez échanger vos coupons\ncontre des Œufs de Pokémon. + 'eggGacha': `Depuis cet écran, vous pouvez échanger vos coupons\ncontre des Œufs de Pokémon. $Les Œufs éclosent après avoir remporté un certain nombre\nde combats. Les plus rares mettent plus de temps. $Les Pokémon éclos ne rejoindront pas votre équipe,\nmais seront ajoutés à vos starters. $Les Pokémon issus d’Œufs ont généralement de\nmeilleurs IVs que les Pokémon sauvages. diff --git a/src/locales/fr/voucher.ts b/src/locales/fr/voucher.ts index a432cfed53f..830974a9ab6 100644 --- a/src/locales/fr/voucher.ts +++ b/src/locales/fr/voucher.ts @@ -1,11 +1,11 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const voucher: SimpleTranslationEntries = { - "vouchers": "Coupons", - "eggVoucher": "Coupon Œuf", - "eggVoucherPlus": "Coupon Œuf +", - "eggVoucherPremium": "Coupon Œuf Premium", - "eggVoucherGold": "Coupon Œuf Or", - "locked": "Verrouillé", - "defeatTrainer": "Vaincre {{trainerName}}" -} as const; \ No newline at end of file + 'vouchers': 'Coupons', + 'eggVoucher': 'Coupon Œuf', + 'eggVoucherPlus': 'Coupon Œuf +', + 'eggVoucherPremium': 'Coupon Œuf Premium', + 'eggVoucherGold': 'Coupon Œuf Or', + 'locked': 'Verrouillé', + 'defeatTrainer': 'Vaincre {{trainerName}}' +} as const; diff --git a/src/locales/fr/weather.ts b/src/locales/fr/weather.ts index f00e7e08a03..9e33ca0d436 100644 --- a/src/locales/fr/weather.ts +++ b/src/locales/fr/weather.ts @@ -1,44 +1,44 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The weather namespace holds text displayed when weather is active during a battle */ export const weather: SimpleTranslationEntries = { - "sunnyStartMessage": "Les rayons du soleil brillent !", - "sunnyLapseMessage": "Les rayons du soleil brillent fort !", - "sunnyClearMessage": "Les rayons du soleil s’affaiblissent !", + 'sunnyStartMessage': 'Les rayons du soleil brillent !', + 'sunnyLapseMessage': 'Les rayons du soleil brillent fort !', + 'sunnyClearMessage': 'Les rayons du soleil s’affaiblissent !', - "rainStartMessage": "Il commence à pleuvoir !", - "rainLapseMessage": "La pluie continue de tomber !", - "rainClearMessage": "La pluie s’est arrêtée !", + 'rainStartMessage': 'Il commence à pleuvoir !', + 'rainLapseMessage': 'La pluie continue de tomber !', + 'rainClearMessage': 'La pluie s’est arrêtée !', - "sandstormStartMessage": "Une tempête de sable se prépare !", - "sandstormLapseMessage": "La tempête de sable fait rage !", - "sandstormClearMessage": "La tempête de sable se calme !", - "sandstormDamageMessage": "La tempête de sable inflige des dégâts\nà {{pokemonPrefix}}{{pokemonName}} !", + 'sandstormStartMessage': 'Une tempête de sable se prépare !', + 'sandstormLapseMessage': 'La tempête de sable fait rage !', + 'sandstormClearMessage': 'La tempête de sable se calme !', + 'sandstormDamageMessage': 'La tempête de sable inflige des dégâts\nà {{pokemonPrefix}}{{pokemonName}} !', - "hailStartMessage": "Il commence à grêler !", - "hailLapseMessage": "La grêle continue de tomber !", - "hailClearMessage": "La grêle s’est arrêtée !", - "hailDamageMessage": "La grêle inflige des dégâts\nà {{pokemonPrefix}}{{pokemonName}} !", + 'hailStartMessage': 'Il commence à grêler !', + 'hailLapseMessage': 'La grêle continue de tomber !', + 'hailClearMessage': 'La grêle s’est arrêtée !', + 'hailDamageMessage': 'La grêle inflige des dégâts\nà {{pokemonPrefix}}{{pokemonName}} !', - "snowStartMessage": "Il commence à neiger !", - "snowLapseMessage": "Il y a une tempête de neige !", - "snowClearMessage": "La neige s’est arrêtée !", + 'snowStartMessage': 'Il commence à neiger !', + 'snowLapseMessage': 'Il y a une tempête de neige !', + 'snowClearMessage': 'La neige s’est arrêtée !', - "fogStartMessage": "Le brouillard devient épais…", - "fogLapseMessage": "Le brouillard continue !", - "fogClearMessage": "Le brouillard s’est dissipé !", + 'fogStartMessage': 'Le brouillard devient épais…', + 'fogLapseMessage': 'Le brouillard continue !', + 'fogClearMessage': 'Le brouillard s’est dissipé !', - "heavyRainStartMessage": "Une pluie battante s’abat soudainement !", - "heavyRainLapseMessage": "La pluie battante continue.", - "heavyRainClearMessage": "La pluie battante s’est arrêtée…", + 'heavyRainStartMessage': 'Une pluie battante s’abat soudainement !', + 'heavyRainLapseMessage': 'La pluie battante continue.', + 'heavyRainClearMessage': 'La pluie battante s’est arrêtée…', - "harshSunStartMessage": "Les rayons du soleil s’intensifient !", - "harshSunLapseMessage": "Les rayons du soleil sont brulants !", - "harshSunClearMessage": "Les rayons du soleil s’affaiblissent !", + 'harshSunStartMessage': 'Les rayons du soleil s’intensifient !', + 'harshSunLapseMessage': 'Les rayons du soleil sont brulants !', + 'harshSunClearMessage': 'Les rayons du soleil s’affaiblissent !', - "strongWindsStartMessage": "Un vent mystérieux se lève !", - "strongWindsLapseMessage": "Le vent mystérieux souffle violemment !", - "strongWindsClearMessage": "Le vent mystérieux s’est dissipé…" -} + 'strongWindsStartMessage': 'Un vent mystérieux se lève !', + 'strongWindsLapseMessage': 'Le vent mystérieux souffle violemment !', + 'strongWindsClearMessage': 'Le vent mystérieux s’est dissipé…' +}; diff --git a/src/locales/it/ability-trigger.ts b/src/locales/it/ability-trigger.ts index 3f7d09c9221..14e6aa47eaf 100644 --- a/src/locales/it/ability-trigger.ts +++ b/src/locales/it/ability-trigger.ts @@ -1,6 +1,6 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const abilityTriggers: SimpleTranslationEntries = { - 'blockRecoilDamage' : `{{abilityName}} di {{pokemonName}}\nl'ha protetto dal contraccolpo!`, - 'badDreams': `{{pokemonName}} è tormentato!`, -} as const; \ No newline at end of file + 'blockRecoilDamage' : '{{abilityName}} di {{pokemonName}}\nl\'ha protetto dal contraccolpo!', + 'badDreams': '{{pokemonName}} è tormentato!', +} as const; diff --git a/src/locales/it/ability.ts b/src/locales/it/ability.ts index 73b50a07d18..7bc8a09d619 100644 --- a/src/locales/it/ability.ts +++ b/src/locales/it/ability.ts @@ -1,1244 +1,1244 @@ -import { AbilityTranslationEntries } from "#app/plugins/i18n.js"; +import { AbilityTranslationEntries } from '#app/plugins/i18n.js'; export const ability: AbilityTranslationEntries = { stench: { - name: "Tanfo", - description: "Quando il Pokémon attacca il bersaglio, può farlo tentennare grazie al cattivo odore che emana.", + name: 'Tanfo', + description: 'Quando il Pokémon attacca il bersaglio, può farlo tentennare grazie al cattivo odore che emana.', }, drizzle: { - name: "Piovischio", - description: "Quando il Pokémon entra in campo, attira la pioggia.", + name: 'Piovischio', + description: 'Quando il Pokémon entra in campo, attira la pioggia.', }, speedBoost: { - name: "Acceleratore", - description: "La Velocità aumenta a ogni turno.", + name: 'Acceleratore', + description: 'La Velocità aumenta a ogni turno.', }, battleArmor: { - name: "Lottascudo", - description: "Il Pokémon è protetto da una dura corazza che gli evita di subire brutti colpi.", + name: 'Lottascudo', + description: 'Il Pokémon è protetto da una dura corazza che gli evita di subire brutti colpi.', }, sturdy: { - name: "Vigore", - description: "Evita che il Pokémon vada KO in un sol colpo se ha tutti i PS, e lo rende immune alle mosse che causano KO immediato.", + name: 'Vigore', + description: 'Evita che il Pokémon vada KO in un sol colpo se ha tutti i PS, e lo rende immune alle mosse che causano KO immediato.', }, damp: { - name: "Umidità", - description: "Aumenta l'umidità circostante, impedendo l'uso di Autodistruzione e di altre mosse esplosive.", + name: 'Umidità', + description: 'Aumenta l\'umidità circostante, impedendo l\'uso di Autodistruzione e di altre mosse esplosive.', }, limber: { - name: "Scioltezza", - description: "Il corpo flessibile del Pokémon gli impedisce di subire gli effetti della paralisi.", + name: 'Scioltezza', + description: 'Il corpo flessibile del Pokémon gli impedisce di subire gli effetti della paralisi.', }, sandVeil: { - name: "Sabbiavelo", - description: "L'elusione aumenta durante le tempeste di sabbia.", + name: 'Sabbiavelo', + description: 'L\'elusione aumenta durante le tempeste di sabbia.', }, static: { - name: "Statico", - description: "Il Pokémon si ricopre di elettricità statica e può causare paralisi a chi è entrato in contatto con lui.", + name: 'Statico', + description: 'Il Pokémon si ricopre di elettricità statica e può causare paralisi a chi è entrato in contatto con lui.', }, voltAbsorb: { - name: "Assorbivolt", - description: "Se il Pokémon viene colpito da una mossa di tipo Elettro, recupera PS anziché subire danni.", + name: 'Assorbivolt', + description: 'Se il Pokémon viene colpito da una mossa di tipo Elettro, recupera PS anziché subire danni.', }, waterAbsorb: { - name: "Assorbacqua", - description: "Se il Pokémon viene colpito da una mossa di tipo Acqua, recupera PS anziché subire danni.", + name: 'Assorbacqua', + description: 'Se il Pokémon viene colpito da una mossa di tipo Acqua, recupera PS anziché subire danni.', }, oblivious: { - name: "Indifferenza", - description: "L'imperturbabilità del Pokémon lo protegge da infatuazioni, provocazioni e dall'effetto di Prepotenza.", + name: 'Indifferenza', + description: 'L\'imperturbabilità del Pokémon lo protegge da infatuazioni, provocazioni e dall\'effetto di Prepotenza.', }, cloudNine: { - name: "Antimeteo", - description: "Neutralizza gli effetti di tutte le condizioni atmosferiche.", + name: 'Antimeteo', + description: 'Neutralizza gli effetti di tutte le condizioni atmosferiche.', }, compoundEyes: { - name: "Insettocchi", - description: "La precisione del Pokémon aumenta grazie ai suoi occhi composti.", + name: 'Insettocchi', + description: 'La precisione del Pokémon aumenta grazie ai suoi occhi composti.', }, insomnia: { - name: "Insonnia", - description: "Il Pokémon soffre d'insonnia e non può addormentarsi.", + name: 'Insonnia', + description: 'Il Pokémon soffre d\'insonnia e non può addormentarsi.', }, colorChange: { - name: "Cambiacolore", - description: "Il Pokémon acquisisce il tipo della mossa subita.", + name: 'Cambiacolore', + description: 'Il Pokémon acquisisce il tipo della mossa subita.', }, immunity: { - name: "Immunità", - description: "L'immunità naturale del Pokémon gli impedisce di essere avvelenato.", + name: 'Immunità', + description: 'L\'immunità naturale del Pokémon gli impedisce di essere avvelenato.', }, flashFire: { - name: "Fuocardore", - description: "Se il Pokémon subisce una mossa di tipo Fuoco, ne sfrutta il calore per potenziare le proprie mosse di tipo Fuoco.", + name: 'Fuocardore', + description: 'Se il Pokémon subisce una mossa di tipo Fuoco, ne sfrutta il calore per potenziare le proprie mosse di tipo Fuoco.', }, shieldDust: { - name: "Polvoscudo", - description: "Il Pokémon è protetto da uno strato di scaglie che annulla gli effetti aggiuntivi delle mosse subite.", + name: 'Polvoscudo', + description: 'Il Pokémon è protetto da uno strato di scaglie che annulla gli effetti aggiuntivi delle mosse subite.', }, ownTempo: { - name: "Mente Locale", - description: "Il Pokémon affronta la vita al proprio ritmo e per questo non può essere confuso o subire l'effetto di Prepotenza.", + name: 'Mente Locale', + description: 'Il Pokémon affronta la vita al proprio ritmo e per questo non può essere confuso o subire l\'effetto di Prepotenza.', }, suctionCups: { - name: "Ventose", - description: "Il Pokémon resiste a strumenti e mosse che causano la sostituzione appiccicandosi al terreno con le ventose.", + name: 'Ventose', + description: 'Il Pokémon resiste a strumenti e mosse che causano la sostituzione appiccicandosi al terreno con le ventose.', }, intimidate: { - name: "Prepotenza", - description: "Quando il Pokémon entra in campo, la sua prepotenza crea soggezione, riducendo l'Attacco degli avversari intimiditi.", + name: 'Prepotenza', + description: 'Quando il Pokémon entra in campo, la sua prepotenza crea soggezione, riducendo l\'Attacco degli avversari intimiditi.', }, shadowTag: { - name: "Pedinombra", - description: "Il Pokémon impedisce la fuga o la sostituzione degli avversari di cui calpesta l'ombra.", + name: 'Pedinombra', + description: 'Il Pokémon impedisce la fuga o la sostituzione degli avversari di cui calpesta l\'ombra.', }, roughSkin: { - name: "Cartavetro", - description: "Quando il Pokémon subisce un attacco, grazie alla sua pelle ruvida infligge a sua volta danni al Pokémon con cui è entrato in contatto.", + name: 'Cartavetro', + description: 'Quando il Pokémon subisce un attacco, grazie alla sua pelle ruvida infligge a sua volta danni al Pokémon con cui è entrato in contatto.', }, wonderGuard: { - name: "Magidifesa", - description: "Un potere misterioso protegge il Pokémon e lo rende vulnerabile solo alle mosse superefficaci.", + name: 'Magidifesa', + description: 'Un potere misterioso protegge il Pokémon e lo rende vulnerabile solo alle mosse superefficaci.', }, levitate: { - name: "Levitazione", - description: "La capacità di levitare conferisce al Pokémon immunità agli attacchi di tipo Terra.", + name: 'Levitazione', + description: 'La capacità di levitare conferisce al Pokémon immunità agli attacchi di tipo Terra.', }, effectSpore: { - name: "Spargispora", - description: "Può causare avvelenamento, paralisi o sonno a chi attacca il Pokémon entrando in contatto con lui.", + name: 'Spargispora', + description: 'Può causare avvelenamento, paralisi o sonno a chi attacca il Pokémon entrando in contatto con lui.', }, synchronize: { - name: "Sincronismo", - description: "Se un Pokémon con questa abilità viene avvelenato, paralizzato o scottato, contagia con lo stesso problema di stato chi lo ha causato.", + name: 'Sincronismo', + description: 'Se un Pokémon con questa abilità viene avvelenato, paralizzato o scottato, contagia con lo stesso problema di stato chi lo ha causato.', }, clearBody: { - name: "Corpochiaro", - description: "Impedisce la diminuzione delle statistiche causata da abilità o mosse di altri Pokémon.", + name: 'Corpochiaro', + description: 'Impedisce la diminuzione delle statistiche causata da abilità o mosse di altri Pokémon.', }, naturalCure: { - name: "Alternacura", - description: "Quando il Pokémon lascia il campo, guarisce dai problemi di stato.", + name: 'Alternacura', + description: 'Quando il Pokémon lascia il campo, guarisce dai problemi di stato.', }, lightningRod: { - name: "Parafulmine", - description: "Il Pokémon attira e neutralizza le mosse di tipo Elettro, facendo aumentare il suo Attacco Speciale.", + name: 'Parafulmine', + description: 'Il Pokémon attira e neutralizza le mosse di tipo Elettro, facendo aumentare il suo Attacco Speciale.', }, sereneGrace: { - name: "Leggiadro", - description: "Rende più probabili gli effetti aggiuntivi delle mosse.", + name: 'Leggiadro', + description: 'Rende più probabili gli effetti aggiuntivi delle mosse.', }, swiftSwim: { - name: "Nuotovelox", - description: "Se piove, la Velocità aumenta.", + name: 'Nuotovelox', + description: 'Se piove, la Velocità aumenta.', }, chlorophyll: { - name: "Clorofilla", - description: "Se la luce del sole è intensa, la Velocità aumenta.", + name: 'Clorofilla', + description: 'Se la luce del sole è intensa, la Velocità aumenta.', }, illuminate: { - name: "Risplendi", - description: "Illuminando l'ambiente circostante, impedisce che la precisione del pokémon sia diminuita.", + name: 'Risplendi', + description: 'Illuminando l\'ambiente circostante, impedisce che la precisione del pokémon sia diminuita.', }, trace: { - name: "Traccia", - description: "Quando il Pokémon entra in campo, copia l'abilità di un avversario.", + name: 'Traccia', + description: 'Quando il Pokémon entra in campo, copia l\'abilità di un avversario.', }, hugePower: { - name: "Macroforza", - description: "Raddoppia la potenza degli attacchi fisici del Pokémon.", + name: 'Macroforza', + description: 'Raddoppia la potenza degli attacchi fisici del Pokémon.', }, poisonPoint: { - name: "Velenopunto", - description: "Può avvelenare chi entra in contatto con il Pokémon.", + name: 'Velenopunto', + description: 'Può avvelenare chi entra in contatto con il Pokémon.', }, innerFocus: { - name: "Forza Interiore", - description: "La capacità di concentrazione del Pokémon evita che tentenni per gli attacchi subiti e lo protegge dall'effetto di Prepotenza.", + name: 'Forza Interiore', + description: 'La capacità di concentrazione del Pokémon evita che tentenni per gli attacchi subiti e lo protegge dall\'effetto di Prepotenza.', }, magmaArmor: { - name: "Magmascudo", - description: "Il magma riveste il corpo del Pokémon impedendogli di venire congelato.", + name: 'Magmascudo', + description: 'Il magma riveste il corpo del Pokémon impedendogli di venire congelato.', }, waterVeil: { - name: "Idrovelo", - description: "Un velo d'acqua riveste il corpo del Pokémon impedendogli di venire scottato.", + name: 'Idrovelo', + description: 'Un velo d\'acqua riveste il corpo del Pokémon impedendogli di venire scottato.', }, magnetPull: { - name: "Magnetismo", - description: "La carica magnetica attrae i Pokémon di tipo Acciaio impedendogli la fuga o la sostituzione.", + name: 'Magnetismo', + description: 'La carica magnetica attrae i Pokémon di tipo Acciaio impedendogli la fuga o la sostituzione.', }, soundproof: { - name: "Antisuono", - description: "Il Pokémon è dotato di una sorta di isolamento acustico che lo rende immune alle mosse basate sul suono.", + name: 'Antisuono', + description: 'Il Pokémon è dotato di una sorta di isolamento acustico che lo rende immune alle mosse basate sul suono.', }, rainDish: { - name: "Copripioggia", - description: "Il Pokémon recupera PS quando piove.", + name: 'Copripioggia', + description: 'Il Pokémon recupera PS quando piove.', }, sandStream: { - name: "Sabbiafiume", - description: "Quando il Pokémon entra in campo, scatena una tempesta di sabbia.", + name: 'Sabbiafiume', + description: 'Quando il Pokémon entra in campo, scatena una tempesta di sabbia.', }, pressure: { - name: "Pressione", - description: "Il Pokémon mette pressione agli avversari, facendogli consumare più PP.", + name: 'Pressione', + description: 'Il Pokémon mette pressione agli avversari, facendogli consumare più PP.', }, thickFat: { - name: "Grassospesso", - description: "Il Pokémon è protetto da uno spesso strato di grasso che dimezza il danno causato da mosse di tipo Fuoco e Ghiaccio.", + name: 'Grassospesso', + description: 'Il Pokémon è protetto da uno spesso strato di grasso che dimezza il danno causato da mosse di tipo Fuoco e Ghiaccio.', }, earlyBird: { - name: "Sveglialampo", - description: "Anche se il Pokémon si addormenta, può risvegliarsi due volte più velocemente.", + name: 'Sveglialampo', + description: 'Anche se il Pokémon si addormenta, può risvegliarsi due volte più velocemente.', }, flameBody: { - name: "Corpodifuoco", - description: "Può scottare chi entra in contatto con il Pokémon.", + name: 'Corpodifuoco', + description: 'Può scottare chi entra in contatto con il Pokémon.', }, runAway: { - name: "Fugafacile", - description: "Garantisce la fuga dai Pokémon selvatici.", + name: 'Fugafacile', + description: 'Garantisce la fuga dai Pokémon selvatici.', }, keenEye: { - name: "Sguardofermo", - description: "La vista acuta del Pokémon impedisce che la sua precisione diminuisca.", + name: 'Sguardofermo', + description: 'La vista acuta del Pokémon impedisce che la sua precisione diminuisca.', }, hyperCutter: { - name: "Ipertaglio", - description: "Le possenti chele o tenaglie di cui è dotato il Pokémon fanno sì che il suo Attacco non possa essere diminuito da altri.", + name: 'Ipertaglio', + description: 'Le possenti chele o tenaglie di cui è dotato il Pokémon fanno sì che il suo Attacco non possa essere diminuito da altri.', }, pickup: { - name: "Raccolta", - description: "Il Pokémon può raccogliere strumenti usati da altri durante la lotta. Potrebbe raccogliere strumenti anche fuori dalla lotta.", + name: 'Raccolta', + description: 'Il Pokémon può raccogliere strumenti usati da altri durante la lotta. Potrebbe raccogliere strumenti anche fuori dalla lotta.', }, truant: { - name: "Pigrone", - description: "Quando il Pokémon usa una mossa, nel turno successivo si riposerà.", + name: 'Pigrone', + description: 'Quando il Pokémon usa una mossa, nel turno successivo si riposerà.', }, hustle: { - name: "Tuttafretta", - description: "L'Attacco aumenta, ma la precisione diminuisce.", + name: 'Tuttafretta', + description: 'L\'Attacco aumenta, ma la precisione diminuisce.', }, cuteCharm: { - name: "Incantevole", - description: "Può causare infatuazione a chi entra in contatto con il Pokémon.", + name: 'Incantevole', + description: 'Può causare infatuazione a chi entra in contatto con il Pokémon.', }, plus: { - name: "Più", - description: "L'Attacco Speciale aumenta se ci sono alleati con l'abilità Meno o Più.", + name: 'Più', + description: 'L\'Attacco Speciale aumenta se ci sono alleati con l\'abilità Meno o Più.', }, minus: { - name: "Meno", - description: "L'Attacco Speciale aumenta se ci sono alleati con l'abilità Meno o Più.", + name: 'Meno', + description: 'L\'Attacco Speciale aumenta se ci sono alleati con l\'abilità Meno o Più.', }, forecast: { - name: "Previsioni", - description: "Cambia il tipo del Pokémon in Acqua, Fuoco o Ghiaccio in base alle condizioni atmosferiche.", + name: 'Previsioni', + description: 'Cambia il tipo del Pokémon in Acqua, Fuoco o Ghiaccio in base alle condizioni atmosferiche.', }, stickyHold: { - name: "Antifurto", - description: "Gli strumenti restano appiccicati al corpo adesivo del Pokémon e non possono essere rubati.", + name: 'Antifurto', + description: 'Gli strumenti restano appiccicati al corpo adesivo del Pokémon e non possono essere rubati.', }, shedSkin: { - name: "Muta", - description: "Il Pokémon può guarire dai problemi di stato facendo la muta completa della pelle.", + name: 'Muta', + description: 'Il Pokémon può guarire dai problemi di stato facendo la muta completa della pelle.', }, guts: { - name: "Dentistretti", - description: "Se il Pokémon è affetto da un problema di stato, tira fuori la grinta e aumenta il proprio Attacco.", + name: 'Dentistretti', + description: 'Se il Pokémon è affetto da un problema di stato, tira fuori la grinta e aumenta il proprio Attacco.', }, marvelScale: { - name: "Pelledura", - description: "Se il Pokémon è affetto da un problema di stato, le squame sulla sua pelle si induriscono aumentando la sua Difesa.", + name: 'Pelledura', + description: 'Se il Pokémon è affetto da un problema di stato, le squame sulla sua pelle si induriscono aumentando la sua Difesa.', }, liquidOoze: { - name: "Melma", - description: "La melma del Pokémon infligge danni a chi la assorbe, facendogli perdere PS a causa del fortissimo tanfo.", + name: 'Melma', + description: 'La melma del Pokémon infligge danni a chi la assorbe, facendogli perdere PS a causa del fortissimo tanfo.', }, overgrow: { - name: "Erbaiuto", - description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Erba aumenta.", + name: 'Erbaiuto', + description: 'Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Erba aumenta.', }, blaze: { - name: "Aiutofuoco", - description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Fuoco aumenta.", + name: 'Aiutofuoco', + description: 'Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Fuoco aumenta.', }, torrent: { - name: "Acquaiuto", - description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Acqua aumenta.", + name: 'Acquaiuto', + description: 'Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Acqua aumenta.', }, swarm: { - name: "Aiutinsetto", - description: "Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Coleottero aumenta.", + name: 'Aiutinsetto', + description: 'Quando al Pokémon rimangono pochi PS, la potenza delle sue mosse di tipo Coleottero aumenta.', }, rockHead: { - name: "Testadura", - description: "Anche se il Pokémon usa delle mosse che causano un contraccolpo, non perde PS.", + name: 'Testadura', + description: 'Anche se il Pokémon usa delle mosse che causano un contraccolpo, non perde PS.', }, drought: { - name: "Siccità", - description: "Quando il Pokémon entra in campo, la luce solare diventa intensa.", + name: 'Siccità', + description: 'Quando il Pokémon entra in campo, la luce solare diventa intensa.', }, arenaTrap: { - name: "Trappoarena", - description: "Impedisce la fuga agli avversari.", + name: 'Trappoarena', + description: 'Impedisce la fuga agli avversari.', }, vitalSpirit: { - name: "Spiritovivo", - description: "Il Pokémon è talmente vivace che non può addormentarsi.", + name: 'Spiritovivo', + description: 'Il Pokémon è talmente vivace che non può addormentarsi.', }, whiteSmoke: { - name: "Fumochiaro", - description: "Il Pokémon è protetto da un fumo chiaro che impedisce ai nemici di diminuire le sue statistiche.", + name: 'Fumochiaro', + description: 'Il Pokémon è protetto da un fumo chiaro che impedisce ai nemici di diminuire le sue statistiche.', }, purePower: { - name: "Forzapura", - description: "L'Attacco del Pokémon raddoppia grazie alla sua padronanza delle tecniche yoga.", + name: 'Forzapura', + description: 'L\'Attacco del Pokémon raddoppia grazie alla sua padronanza delle tecniche yoga.', }, shellArmor: { - name: "Guscioscudo", - description: "Il Pokémon è protetto da un guscio robusto che gli evita di subire brutti colpi.", + name: 'Guscioscudo', + description: 'Il Pokémon è protetto da un guscio robusto che gli evita di subire brutti colpi.', }, airLock: { - name: "Riparo", - description: "Neutralizza gli effetti di tutte le condizioni atmosferiche.", + name: 'Riparo', + description: 'Neutralizza gli effetti di tutte le condizioni atmosferiche.', }, tangledFeet: { - name: "Intricopiedi", - description: "Se il Pokémon è confuso, la sua elusione aumenta.", + name: 'Intricopiedi', + description: 'Se il Pokémon è confuso, la sua elusione aumenta.', }, motorDrive: { - name: "Elettrorapid", - description: "Se il Pokémon viene colpito da una mossa di tipo Elettro, la neutralizza e sfrutta la carica elettrica per aumentare la propria Velocità.", + name: 'Elettrorapid', + description: 'Se il Pokémon viene colpito da una mossa di tipo Elettro, la neutralizza e sfrutta la carica elettrica per aumentare la propria Velocità.', }, rivalry: { - name: "Antagonismo", - description: "Rende più forti contro nemici dello stesso sesso, ma più deboli contro nemici di sesso opposto.", + name: 'Antagonismo', + description: 'Rende più forti contro nemici dello stesso sesso, ma più deboli contro nemici di sesso opposto.', }, steadfast: { - name: "Cuordeciso", - description: "Se il Pokémon tentenna, il suo animo indomito si risveglia e la sua Velocità aumenta.", + name: 'Cuordeciso', + description: 'Se il Pokémon tentenna, il suo animo indomito si risveglia e la sua Velocità aumenta.', }, snowCloak: { - name: "Mantelneve", - description: "Se grandina, l'elusione aumenta.", + name: 'Mantelneve', + description: 'Se grandina, l\'elusione aumenta.', }, gluttony: { - name: "Voracità", - description: "Il Pokémon non attende di aver perso molti PS per mangiare certe bacche, ma lo fa non appena i suoi PS scendono a metà o meno.", + name: 'Voracità', + description: 'Il Pokémon non attende di aver perso molti PS per mangiare certe bacche, ma lo fa non appena i suoi PS scendono a metà o meno.', }, angerPoint: { - name: "Grancollera", - description: "Se il Pokémon subisce un brutto colpo, monta su tutte le furie e il suo Attacco aumenta al massimo.", + name: 'Grancollera', + description: 'Se il Pokémon subisce un brutto colpo, monta su tutte le furie e il suo Attacco aumenta al massimo.', }, unburden: { - name: "Agiltecnica", - description: "Se il Pokémon usa o perde uno strumento, la sua Velocità aumenta.", + name: 'Agiltecnica', + description: 'Se il Pokémon usa o perde uno strumento, la sua Velocità aumenta.', }, heatproof: { - name: "Antifuoco", - description: "Il corpo termoresistente del Pokémon dimezza i danni che subisce dalle mosse di tipo Fuoco.", + name: 'Antifuoco', + description: 'Il corpo termoresistente del Pokémon dimezza i danni che subisce dalle mosse di tipo Fuoco.', }, simple: { - name: "Disinvoltura", - description: "Raddoppia le modifiche alle statistiche.", + name: 'Disinvoltura', + description: 'Raddoppia le modifiche alle statistiche.', }, drySkin: { - name: "Pellearsa", - description: "Il Pokémon recupera PS se piove o se subisce mosse di tipo Acqua, ma perde PS con la luce solare intensa. Subisce più danni da mosse di tipo Fuoco.", + name: 'Pellearsa', + description: 'Il Pokémon recupera PS se piove o se subisce mosse di tipo Acqua, ma perde PS con la luce solare intensa. Subisce più danni da mosse di tipo Fuoco.', }, download: { - name: "Download", - description: "Il Pokémon analizza Difesa e Difesa Speciale del nemico e, a seconda di qual è più bassa, aumenta il proprio Attacco o Attacco Speciale.", + name: 'Download', + description: 'Il Pokémon analizza Difesa e Difesa Speciale del nemico e, a seconda di qual è più bassa, aumenta il proprio Attacco o Attacco Speciale.', }, ironFist: { - name: "Ferropugno", - description: "Potenzia le mosse che utilizzano pugni.", + name: 'Ferropugno', + description: 'Potenzia le mosse che utilizzano pugni.', }, poisonHeal: { - name: "Velencura", - description: "Se il Pokémon è avvelenato, recupera PS anziché perderli.", + name: 'Velencura', + description: 'Se il Pokémon è avvelenato, recupera PS anziché perderli.', }, adaptability: { - name: "Adattabilità", - description: "Potenzia di molto le mosse dello stesso tipo del Pokémon.", + name: 'Adattabilità', + description: 'Potenzia di molto le mosse dello stesso tipo del Pokémon.', }, skillLink: { - name: "Abillegame", - description: "Le mosse multicolpo mandano a segno sempre il massimo dei colpi possibili.", + name: 'Abillegame', + description: 'Le mosse multicolpo mandano a segno sempre il massimo dei colpi possibili.', }, hydration: { - name: "Idratazione", - description: "Se piove, il Pokémon guarisce dai problemi di stato.", + name: 'Idratazione', + description: 'Se piove, il Pokémon guarisce dai problemi di stato.', }, solarPower: { - name: "Solarpotere", - description: "Se la luce del sole è intensa, l'Attacco Speciale aumenta, ma il Pokémon perde PS a ogni turno.", + name: 'Solarpotere', + description: 'Se la luce del sole è intensa, l\'Attacco Speciale aumenta, ma il Pokémon perde PS a ogni turno.', }, quickFeet: { - name: "Piedisvelti", - description: "Se il Pokémon è affetto da un problema di stato, la Velocità aumenta.", + name: 'Piedisvelti', + description: 'Se il Pokémon è affetto da un problema di stato, la Velocità aumenta.', }, normalize: { - name: "Normalità", - description: "Tutte le mosse del Pokémon diventano di tipo Normale e la loro potenza aumenta un po'.", + name: 'Normalità', + description: 'Tutte le mosse del Pokémon diventano di tipo Normale e la loro potenza aumenta un po\'.', }, sniper: { - name: "Cecchino", - description: "Aumenta ulteriormente i danni inflitti dai brutti colpi.", + name: 'Cecchino', + description: 'Aumenta ulteriormente i danni inflitti dai brutti colpi.', }, magicGuard: { - name: "Magicscudo", - description: "Il Pokémon subisce danni solo dagli attacchi.", + name: 'Magicscudo', + description: 'Il Pokémon subisce danni solo dagli attacchi.', }, noGuard: { - name: "Nullodifesa", - description: "Il Pokémon e chiunque lo attacchi abbassano la guardia e le loro mosse vanno sempre a segno.", + name: 'Nullodifesa', + description: 'Il Pokémon e chiunque lo attacchi abbassano la guardia e le loro mosse vanno sempre a segno.', }, stall: { - name: "Rallentatore", - description: "Il Pokémon agisce sempre per ultimo.", + name: 'Rallentatore', + description: 'Il Pokémon agisce sempre per ultimo.', }, technician: { - name: "Tecnico", - description: "Potenzia le mosse più deboli del Pokémon.", + name: 'Tecnico', + description: 'Potenzia le mosse più deboli del Pokémon.', }, leafGuard: { - name: "Fogliamanto", - description: "Se la luce del sole è intensa, evita i problemi di stato.", + name: 'Fogliamanto', + description: 'Se la luce del sole è intensa, evita i problemi di stato.', }, klutz: { - name: "Impaccio", - description: "Il Pokémon non può usare lo strumento che ha con sé.", + name: 'Impaccio', + description: 'Il Pokémon non può usare lo strumento che ha con sé.', }, moldBreaker: { - name: "Rompiforma", - description: "Quando il Pokémon attacca, ignora l'abilità del bersaglio se questa ha effetto sulle mosse.", + name: 'Rompiforma', + description: 'Quando il Pokémon attacca, ignora l\'abilità del bersaglio se questa ha effetto sulle mosse.', }, superLuck: { - name: "Supersorte", - description: "L'incredibile fortuna del Pokémon aumenta la sua probabilità di infliggere brutti colpi.", + name: 'Supersorte', + description: 'L\'incredibile fortuna del Pokémon aumenta la sua probabilità di infliggere brutti colpi.', }, aftermath: { - name: "Scoppio", - description: "Chi manda KO questo Pokémon con un attacco diretto subisce dei danni.", + name: 'Scoppio', + description: 'Chi manda KO questo Pokémon con un attacco diretto subisce dei danni.', }, anticipation: { - name: "Presagio", - description: "Rivela se il nemico ha mosse pericolose.", + name: 'Presagio', + description: 'Rivela se il nemico ha mosse pericolose.', }, forewarn: { - name: "Premonizione", - description: "Quando il Pokémon entra in campo, rivela una delle mosse del nemico.", + name: 'Premonizione', + description: 'Quando il Pokémon entra in campo, rivela una delle mosse del nemico.', }, unaware: { - name: "Imprudenza", - description: "Quando il Pokémon attacca, ignora le modifiche alle statistiche del nemico.", + name: 'Imprudenza', + description: 'Quando il Pokémon attacca, ignora le modifiche alle statistiche del nemico.', }, tintedLens: { - name: "Lentifumé", - description: "Permette alle mosse non molto efficaci di infliggere danni normalmente.", + name: 'Lentifumé', + description: 'Permette alle mosse non molto efficaci di infliggere danni normalmente.', }, filter: { - name: "Filtro", - description: "Riduce i danni subiti dalle mosse superefficaci.", + name: 'Filtro', + description: 'Riduce i danni subiti dalle mosse superefficaci.', }, slowStart: { - name: "Lentoinizio", - description: "Dimezza per cinque turni l'Attacco e la Velocità.", + name: 'Lentoinizio', + description: 'Dimezza per cinque turni l\'Attacco e la Velocità.', }, scrappy: { - name: "Nervisaldi", - description: "Permette di colpire Pokémon di tipo Spettro con mosse di tipo Normale e Lotta.", + name: 'Nervisaldi', + description: 'Permette di colpire Pokémon di tipo Spettro con mosse di tipo Normale e Lotta.', }, stormDrain: { - name: "Acquascolo", - description: "Il Pokémon attira e neutralizza le mosse di tipo Acqua e fa aumentare il proprio Attacco Speciale.", + name: 'Acquascolo', + description: 'Il Pokémon attira e neutralizza le mosse di tipo Acqua e fa aumentare il proprio Attacco Speciale.', }, iceBody: { - name: "Corpogelo", - description: "Se grandina, il Pokémon recupera PS.", + name: 'Corpogelo', + description: 'Se grandina, il Pokémon recupera PS.', }, solidRock: { - name: "Solidroccia", - description: "Riduce i danni subiti dalle mosse superefficaci.", + name: 'Solidroccia', + description: 'Riduce i danni subiti dalle mosse superefficaci.', }, snowWarning: { - name: "Scendineve", - description: "Quando il Pokémon entra in campo, causa l'inizio di una nevicata.", + name: 'Scendineve', + description: 'Quando il Pokémon entra in campo, causa l\'inizio di una nevicata.', }, honeyGather: { - name: "Mielincetta", - description: "Il Pokémon può raccogliere del Miele alla fine della lotta.", + name: 'Mielincetta', + description: 'Il Pokémon può raccogliere del Miele alla fine della lotta.', }, frisk: { - name: "Indagine", - description: "Quando entra in battaglia, il Pokémon può controllare il Potere di un Pokémon avversario.", + name: 'Indagine', + description: 'Quando entra in battaglia, il Pokémon può controllare il Potere di un Pokémon avversario.', }, reckless: { - name: "Temerarietà", - description: "Potenzia le mosse che causano contraccolpo.", + name: 'Temerarietà', + description: 'Potenzia le mosse che causano contraccolpo.', }, multitype: { - name: "Multitipo", - description: "Cambia il tipo del Pokémon a seconda della lastra o del Cristallo Z che ha con sé.", + name: 'Multitipo', + description: 'Cambia il tipo del Pokémon a seconda della lastra o del Cristallo Z che ha con sé.', }, flowerGift: { - name: "Regalfiore", - description: "Se la luce del sole è intensa, aumenta l'Attacco e la Difesa Speciale del Pokémon e dei suoi alleati.", + name: 'Regalfiore', + description: 'Se la luce del sole è intensa, aumenta l\'Attacco e la Difesa Speciale del Pokémon e dei suoi alleati.', }, badDreams: { - name: "Sogniamari", - description: "Infligge danni ai nemici addormentati.", + name: 'Sogniamari', + description: 'Infligge danni ai nemici addormentati.', }, pickpocket: { - name: "Arraffalesto", - description: "Se il Pokémon viene colpito da un attacco diretto, ruba lo strumento di chi lo ha attaccato.", + name: 'Arraffalesto', + description: 'Se il Pokémon viene colpito da un attacco diretto, ruba lo strumento di chi lo ha attaccato.', }, sheerForce: { - name: "Forzabruta", - description: "Aumenta la potenza delle mosse, ma ne annulla gli effetti aggiuntivi.", + name: 'Forzabruta', + description: 'Aumenta la potenza delle mosse, ma ne annulla gli effetti aggiuntivi.', }, contrary: { - name: "Inversione", - description: "Le modifiche alle statistiche hanno effetto inverso: le statistiche aumentano quando dovrebbero diminuire e viceversa.", + name: 'Inversione', + description: 'Le modifiche alle statistiche hanno effetto inverso: le statistiche aumentano quando dovrebbero diminuire e viceversa.', }, unnerve: { - name: "Agitazione", - description: "Il nemico viene intimidito e non può mangiare bacche.", + name: 'Agitazione', + description: 'Il nemico viene intimidito e non può mangiare bacche.', }, defiant: { - name: "Agonismo", - description: "L'Attacco aumenta di molto quando le statistiche diminuiscono a causa di un nemico.", + name: 'Agonismo', + description: 'L\'Attacco aumenta di molto quando le statistiche diminuiscono a causa di un nemico.', }, defeatist: { - name: "Sconforto", - description: "Quando i PS scendono a metà o meno, il Pokémon si scoraggia e l'Attacco e l'Attacco Speciale vengono dimezzati.", + name: 'Sconforto', + description: 'Quando i PS scendono a metà o meno, il Pokémon si scoraggia e l\'Attacco e l\'Attacco Speciale vengono dimezzati.', }, cursedBody: { - name: "Corpofunesto", - description: "Può bloccare la mossa subita dal Pokémon.", + name: 'Corpofunesto', + description: 'Può bloccare la mossa subita dal Pokémon.', }, healer: { - name: "Curacuore", - description: "A volte cura i problemi di stato degli alleati.", + name: 'Curacuore', + description: 'A volte cura i problemi di stato degli alleati.', }, friendGuard: { - name: "Amicoscudo", - description: "I danni inflitti agli alleati del Pokémon vengono ridotti.", + name: 'Amicoscudo', + description: 'I danni inflitti agli alleati del Pokémon vengono ridotti.', }, weakArmor: { - name: "Sottilguscio", - description: "Se il Pokémon subisce danni da mosse fisiche, la Difesa diminuisce e la Velocità aumenta di molto.", + name: 'Sottilguscio', + description: 'Se il Pokémon subisce danni da mosse fisiche, la Difesa diminuisce e la Velocità aumenta di molto.', }, heavyMetal: { - name: "Metalpesante", - description: "Raddoppia il peso del Pokémon.", + name: 'Metalpesante', + description: 'Raddoppia il peso del Pokémon.', }, lightMetal: { - name: "Metalleggero", - description: "Dimezza il peso del Pokémon.", + name: 'Metalleggero', + description: 'Dimezza il peso del Pokémon.', }, multiscale: { - name: "Multisquame", - description: "Se i PS sono al massimo, riduce il danno subito.", + name: 'Multisquame', + description: 'Se i PS sono al massimo, riduce il danno subito.', }, toxicBoost: { - name: "Velenimpeto", - description: "Se il Pokémon è avvelenato, la potenza delle sue mosse fisiche aumenta.", + name: 'Velenimpeto', + description: 'Se il Pokémon è avvelenato, la potenza delle sue mosse fisiche aumenta.', }, flareBoost: { - name: "Bruciaimpeto", - description: "Se il Pokémon è scottato, la potenza delle sue mosse speciali aumenta.", + name: 'Bruciaimpeto', + description: 'Se il Pokémon è scottato, la potenza delle sue mosse speciali aumenta.', }, harvest: { - name: "Coglibacche", - description: "Può ricreare una bacca utilizzata.", + name: 'Coglibacche', + description: 'Può ricreare una bacca utilizzata.', }, telepathy: { - name: "Telepatia", - description: "Il Pokémon prevede ed evita gli attacchi degli alleati.", + name: 'Telepatia', + description: 'Il Pokémon prevede ed evita gli attacchi degli alleati.', }, moody: { - name: "Altalena", - description: "A ogni turno, aumenta di molto una statistica e ne riduce un'altra.", + name: 'Altalena', + description: 'A ogni turno, aumenta di molto una statistica e ne riduce un\'altra.', }, overcoat: { - name: "Copricapo", - description: "Rende immuni ai danni da grandine e tempesta di sabbia, alle mosse Spora, Cottonspora, Sonnifero, Paralizzante e alle mosse “polvere”.", + name: 'Copricapo', + description: 'Rende immuni ai danni da grandine e tempesta di sabbia, alle mosse Spora, Cottonspora, Sonnifero, Paralizzante e alle mosse “polvere”.', }, poisonTouch: { - name: "Velentocco", - description: "Il Pokémon può avvelenare il nemico al solo contatto.", + name: 'Velentocco', + description: 'Il Pokémon può avvelenare il nemico al solo contatto.', }, regenerator: { - name: "Rigenergia", - description: "Il Pokémon recupera un po' di PS quando lascia il campo.", + name: 'Rigenergia', + description: 'Il Pokémon recupera un po\' di PS quando lascia il campo.', }, bigPecks: { - name: "Pettinfuori", - description: "Evita che la Difesa diminuisca.", + name: 'Pettinfuori', + description: 'Evita che la Difesa diminuisca.', }, sandRush: { - name: "Remasabbia", - description: "Se c'è una tempesta di sabbia, la Velocità aumenta.", + name: 'Remasabbia', + description: 'Se c\'è una tempesta di sabbia, la Velocità aumenta.', }, wonderSkin: { - name: "Splendicute", - description: "Il Pokémon resiste più facilmente alle mosse di stato.", + name: 'Splendicute', + description: 'Il Pokémon resiste più facilmente alle mosse di stato.', }, analytic: { - name: "Ponderazione", - description: "Se il Pokémon agisce per ultimo, la potenza della mossa aumenta.", + name: 'Ponderazione', + description: 'Se il Pokémon agisce per ultimo, la potenza della mossa aumenta.', }, illusion: { - name: "Illusione", - description: "Il Pokémon entra in campo con le sembianze dell'ultimo Pokémon della squadra.", + name: 'Illusione', + description: 'Il Pokémon entra in campo con le sembianze dell\'ultimo Pokémon della squadra.', }, imposter: { - name: "Sosia", - description: "Il Pokémon si trasforma nel nemico che ha davanti.", + name: 'Sosia', + description: 'Il Pokémon si trasforma nel nemico che ha davanti.', }, infiltrator: { - name: "Intrapasso", - description: "Il Pokémon attacca evitando le barriere e il sostituto del nemico.", + name: 'Intrapasso', + description: 'Il Pokémon attacca evitando le barriere e il sostituto del nemico.', }, mummy: { - name: "Mummia", - description: "Al contatto con il Pokémon, l'abilità del nemico diventa Mummia.", + name: 'Mummia', + description: 'Al contatto con il Pokémon, l\'abilità del nemico diventa Mummia.', }, moxie: { - name: "Arroganza", - description: "Quando manda un nemico KO, il Pokémon si fa sicuro di sé e aumenta il proprio Attacco.", + name: 'Arroganza', + description: 'Quando manda un nemico KO, il Pokémon si fa sicuro di sé e aumenta il proprio Attacco.', }, justified: { - name: "Giustizia", - description: "Quando il Pokémon viene colpito da una mossa di tipo Buio, il suo forte senso di giustizia fa sì che l'Attacco aumenti.", + name: 'Giustizia', + description: 'Quando il Pokémon viene colpito da una mossa di tipo Buio, il suo forte senso di giustizia fa sì che l\'Attacco aumenti.', }, rattled: { - name: "Paura", - description: "Le mosse di tipo Buio, Spettro e Coleottero spaventano il Pokémon aumentandone la Velocità.", + name: 'Paura', + description: 'Le mosse di tipo Buio, Spettro e Coleottero spaventano il Pokémon aumentandone la Velocità.', }, magicBounce: { - name: "Magispecchio", - description: "Il Pokémon respinge al mittente le mosse di stato senza subirne gli effetti.", + name: 'Magispecchio', + description: 'Il Pokémon respinge al mittente le mosse di stato senza subirne gli effetti.', }, sapSipper: { - name: "Mangiaerba", - description: "Se il Pokémon viene colpito da una mossa di tipo Erba, la neutralizza e aumenta il proprio Attacco.", + name: 'Mangiaerba', + description: 'Se il Pokémon viene colpito da una mossa di tipo Erba, la neutralizza e aumenta il proprio Attacco.', }, prankster: { - name: "Burla", - description: "Le mosse di stato del Pokémon acquistano priorità alta.", + name: 'Burla', + description: 'Le mosse di stato del Pokémon acquistano priorità alta.', }, sandForce: { - name: "Silicoforza", - description: "Potenzia le mosse di tipo Roccia, Terra e Acciaio durante le tempeste di sabbia.", + name: 'Silicoforza', + description: 'Potenzia le mosse di tipo Roccia, Terra e Acciaio durante le tempeste di sabbia.', }, ironBarbs: { - name: "Spineferrate", - description: "Se il Pokémon viene colpito da un attacco diretto, infligge danni a sua volta con le sue spine di ferro.", + name: 'Spineferrate', + description: 'Se il Pokémon viene colpito da un attacco diretto, infligge danni a sua volta con le sue spine di ferro.', }, zenMode: { - name: "Stato Zen", - description: "Cambia la forma del Pokémon se i PS scendono a metà o meno.", + name: 'Stato Zen', + description: 'Cambia la forma del Pokémon se i PS scendono a metà o meno.', }, victoryStar: { - name: "Vittorstella", - description: "Aumenta la precisione di tutta la squadra.", + name: 'Vittorstella', + description: 'Aumenta la precisione di tutta la squadra.', }, turboblaze: { - name: "Piroturbina", - description: "Quando il Pokémon attacca, ignora l'abilità del bersaglio se questa ha effetto sulle mosse.", + name: 'Piroturbina', + description: 'Quando il Pokémon attacca, ignora l\'abilità del bersaglio se questa ha effetto sulle mosse.', }, teravolt: { - name: "Teravolt", - description: "Quando il Pokémon attacca, ignora l'abilità del bersaglio se questa ha effetto sulle mosse.", + name: 'Teravolt', + description: 'Quando il Pokémon attacca, ignora l\'abilità del bersaglio se questa ha effetto sulle mosse.', }, aromaVeil: { - name: "Aromavelo", - description: "Protegge tutta la squadra da effetti che ne limitano la libertà di scelta delle mosse.", + name: 'Aromavelo', + description: 'Protegge tutta la squadra da effetti che ne limitano la libertà di scelta delle mosse.', }, flowerVeil: { - name: "Fiorvelo", - description: "Rende gli alleati di tipo Erba immuni alla diminuzione delle statistiche e ai problemi di stato.", + name: 'Fiorvelo', + description: 'Rende gli alleati di tipo Erba immuni alla diminuzione delle statistiche e ai problemi di stato.', }, cheekPouch: { - name: "Guancegonfie", - description: "Quando il Pokémon mangia una bacca, recupera anche dei PS.", + name: 'Guancegonfie', + description: 'Quando il Pokémon mangia una bacca, recupera anche dei PS.', }, protean: { - name: "Mutatipo", - description: "Cambia il tipo del Pokémon in quello della mossa che usa.", + name: 'Mutatipo', + description: 'Cambia il tipo del Pokémon in quello della mossa che usa.', }, furCoat: { - name: "Foltopelo", - description: "Dimezza il danno subito dalle mosse fisiche.", + name: 'Foltopelo', + description: 'Dimezza il danno subito dalle mosse fisiche.', }, magician: { - name: "Prestigiatore", - description: "Quando chi la usa colpisce un Pokémon con una mossa, gli ruba lo strumento.", + name: 'Prestigiatore', + description: 'Quando chi la usa colpisce un Pokémon con una mossa, gli ruba lo strumento.', }, bulletproof: { - name: "Antiproiettile", - description: "Protegge da alcune mosse a base di proiettili e bombe.", + name: 'Antiproiettile', + description: 'Protegge da alcune mosse a base di proiettili e bombe.', }, competitive: { - name: "Tenacia", - description: "L'Attacco Speciale aumenta di molto quando le statistiche diminuiscono a causa di un nemico.", + name: 'Tenacia', + description: 'L\'Attacco Speciale aumenta di molto quando le statistiche diminuiscono a causa di un nemico.', }, strongJaw: { - name: "Ferromascella", - description: "La robusta mascella del Pokémon permette morsi molto potenti.", + name: 'Ferromascella', + description: 'La robusta mascella del Pokémon permette morsi molto potenti.', }, refrigerate: { - name: "Pellegelo", - description: "Le mosse di tipo Normale diventano di tipo Ghiaccio e la loro potenza aumenta un po'.", + name: 'Pellegelo', + description: 'Le mosse di tipo Normale diventano di tipo Ghiaccio e la loro potenza aumenta un po\'.', }, sweetVeil: { - name: "Dolcevelo", - description: "Rende il Pokémon e i suoi alleati immuni al sonno.", + name: 'Dolcevelo', + description: 'Rende il Pokémon e i suoi alleati immuni al sonno.', }, stanceChange: { - name: "Accendilotta", - description: "Assume la Forma Spada se usa una mossa d'attacco e la Forma Scudo se usa Scudo Reale.", + name: 'Accendilotta', + description: 'Assume la Forma Spada se usa una mossa d\'attacco e la Forma Scudo se usa Scudo Reale.', }, galeWings: { - name: "Aliraffica", - description: "Se il Pokémon ha tutti i PS, le sue mosse di tipo Volante acquistano priorità alta.", + name: 'Aliraffica', + description: 'Se il Pokémon ha tutti i PS, le sue mosse di tipo Volante acquistano priorità alta.', }, megaLauncher: { - name: "Megalancio", + name: 'Megalancio', description: 'Potenzia le mosse "pulsar", Forzasfera e Ondasana.', }, grassPelt: { - name: "Peloderba", - description: "In presenza di un Campo Erboso, la Difesa aumenta.", + name: 'Peloderba', + description: 'In presenza di un Campo Erboso, la Difesa aumenta.', }, symbiosis: { - name: "Simbiosi", - description: "Se un alleato usa uno strumento, il Pokémon gli passa il proprio.", + name: 'Simbiosi', + description: 'Se un alleato usa uno strumento, il Pokémon gli passa il proprio.', }, toughClaws: { - name: "Unghiedure", - description: "Potenzia le mosse che causano un contatto fisico.", + name: 'Unghiedure', + description: 'Potenzia le mosse che causano un contatto fisico.', }, pixilate: { - name: "Pellefolletto", - description: "Le mosse di tipo Normale diventano di tipo Folletto e la loro potenza aumenta un po'.", + name: 'Pellefolletto', + description: 'Le mosse di tipo Normale diventano di tipo Folletto e la loro potenza aumenta un po\'.', }, gooey: { - name: "Viscosità", - description: "Se il Pokémon viene colpito da un attacco diretto, la Velocità di chi l'ha colpito diminuisce.", + name: 'Viscosità', + description: 'Se il Pokémon viene colpito da un attacco diretto, la Velocità di chi l\'ha colpito diminuisce.', }, aerilate: { - name: "Pellecielo", - description: "Le mosse di tipo Normale diventano di tipo Volante e la loro potenza aumenta un po'.", + name: 'Pellecielo', + description: 'Le mosse di tipo Normale diventano di tipo Volante e la loro potenza aumenta un po\'.', }, parentalBond: { - name: "Amorefiliale", - description: "Il Pokémon e il suo piccolo attaccano insieme.", + name: 'Amorefiliale', + description: 'Il Pokémon e il suo piccolo attaccano insieme.', }, darkAura: { - name: "Auratetra", - description: "Potenzia le mosse di tipo Buio di tutti i Pokémon.", + name: 'Auratetra', + description: 'Potenzia le mosse di tipo Buio di tutti i Pokémon.', }, fairyAura: { - name: "Aurafolletto", - description: "Potenzia le mosse di tipo Folletto di tutti i Pokémon.", + name: 'Aurafolletto', + description: 'Potenzia le mosse di tipo Folletto di tutti i Pokémon.', }, auraBreak: { - name: "Frangiaura", - description: "Inverte gli effetti di tutte le aure riducendone la potenza.", + name: 'Frangiaura', + description: 'Inverte gli effetti di tutte le aure riducendone la potenza.', }, primordialSea: { - name: "Mare Primordiale", - description: "Crea un clima che rende inefficaci gli attacchi di tipo Fuoco.", + name: 'Mare Primordiale', + description: 'Crea un clima che rende inefficaci gli attacchi di tipo Fuoco.', }, desolateLand: { - name: "Terra Estrema", - description: "Crea un clima che rende inefficaci gli attacchi di tipo Acqua.", + name: 'Terra Estrema', + description: 'Crea un clima che rende inefficaci gli attacchi di tipo Acqua.', }, deltaStream: { - name: "Flusso Delta", - description: "Crea un clima che annulla i punti deboli del tipo Volante.", + name: 'Flusso Delta', + description: 'Crea un clima che annulla i punti deboli del tipo Volante.', }, stamina: { - name: "Sopportazione", - description: "Se il Pokémon subisce un attacco, la sua Difesa aumenta.", + name: 'Sopportazione', + description: 'Se il Pokémon subisce un attacco, la sua Difesa aumenta.', }, wimpOut: { - name: "Fuggifuggi", - description: "Se i PS scendono a metà o meno, il Pokémon si fa prendere dalla paura e abbandona la lotta in tutta fretta.", + name: 'Fuggifuggi', + description: 'Se i PS scendono a metà o meno, il Pokémon si fa prendere dalla paura e abbandona la lotta in tutta fretta.', }, emergencyExit: { - name: "Passoindietro", - description: "Se i PS scendono a metà o meno, il Pokémon abbandona la lotta per sfuggire al pericolo.", + name: 'Passoindietro', + description: 'Se i PS scendono a metà o meno, il Pokémon abbandona la lotta per sfuggire al pericolo.', }, waterCompaction: { - name: "Idrorinforzo", - description: "Se il Pokémon subisce una mossa di tipo Acqua, la sua Difesa aumenta di molto.", + name: 'Idrorinforzo', + description: 'Se il Pokémon subisce una mossa di tipo Acqua, la sua Difesa aumenta di molto.', }, merciless: { - name: "Spietatezza", - description: "Gli attacchi sferrati su un bersaglio avvelenato producono sempre brutti colpi.", + name: 'Spietatezza', + description: 'Gli attacchi sferrati su un bersaglio avvelenato producono sempre brutti colpi.', }, shieldsDown: { - name: "Scudosoglia", - description: "Se i PS scendono a metà o meno, il guscio si rompe e il Pokémon si prepara all'offensiva.", + name: 'Scudosoglia', + description: 'Se i PS scendono a metà o meno, il guscio si rompe e il Pokémon si prepara all\'offensiva.', }, stakeout: { - name: "Sorveglianza", - description: "Raddoppia i danni inflitti a un bersaglio che è appena entrato in campo per sostituire un altro Pokémon.", + name: 'Sorveglianza', + description: 'Raddoppia i danni inflitti a un bersaglio che è appena entrato in campo per sostituire un altro Pokémon.', }, waterBubble: { - name: "Bolladacqua", - description: "Riduce i danni subiti dalle mosse di tipo Fuoco e rende immuni alle scottature.", + name: 'Bolladacqua', + description: 'Riduce i danni subiti dalle mosse di tipo Fuoco e rende immuni alle scottature.', }, steelworker: { - name: "Tempracciaio", - description: "Aumenta la potenza delle mosse di tipo Acciaio.", + name: 'Tempracciaio', + description: 'Aumenta la potenza delle mosse di tipo Acciaio.', }, berserk: { - name: "Furore", - description: "Se i PS scendono a metà o meno a causa di un attacco, l'Attacco Speciale aumenta.", + name: 'Furore', + description: 'Se i PS scendono a metà o meno a causa di un attacco, l\'Attacco Speciale aumenta.', }, slushRush: { - name: "Spalaneve", - description: "Se grandina, la Velocità aumenta.", + name: 'Spalaneve', + description: 'Se grandina, la Velocità aumenta.', }, longReach: { - name: "Distacco", - description: "Il Pokémon è in grado di usare tutte le sue mosse senza entrare in contatto diretto con il bersaglio.", + name: 'Distacco', + description: 'Il Pokémon è in grado di usare tutte le sue mosse senza entrare in contatto diretto con il bersaglio.', }, liquidVoice: { - name: "Idrovoce", - description: "Le mosse del Pokémon basate sul suono diventano di tipo Acqua.", + name: 'Idrovoce', + description: 'Le mosse del Pokémon basate sul suono diventano di tipo Acqua.', }, triage: { - name: "Primacura", - description: "Le mosse che ripristinano direttamente i PS del Pokémon acquistano priorità alta.", + name: 'Primacura', + description: 'Le mosse che ripristinano direttamente i PS del Pokémon acquistano priorità alta.', }, galvanize: { - name: "Pellelettro", - description: "Le mosse di tipo Normale diventano di tipo Elettro e la loro potenza aumenta un po'.", + name: 'Pellelettro', + description: 'Le mosse di tipo Normale diventano di tipo Elettro e la loro potenza aumenta un po\'.', }, surgeSurfer: { - name: "Codasurf", - description: "In presenza di un Campo Elettrico, la Velocità raddoppia.", + name: 'Codasurf', + description: 'In presenza di un Campo Elettrico, la Velocità raddoppia.', }, schooling: { - name: "Banco", - description: "Quando ha molti PS, il Pokémon forma un banco con i propri simili e si rafforza. Quando ne ha pochi, il banco si disperde.", + name: 'Banco', + description: 'Quando ha molti PS, il Pokémon forma un banco con i propri simili e si rafforza. Quando ne ha pochi, il banco si disperde.', }, disguise: { - name: "Fantasmanto", - description: "Il panno che ricopre il Pokémon lo protegge da un singolo attacco.", + name: 'Fantasmanto', + description: 'Il panno che ricopre il Pokémon lo protegge da un singolo attacco.', }, battleBond: { - name: "Morfosintonia", - description: "Se il Pokémon manda KO un nemico, il legame con l'Allenatore si rafforza, attivando la trasformazione in Greninja Forma Ash. Acqualame si potenzia.", + name: 'Morfosintonia', + description: 'Se il Pokémon manda KO un nemico, il legame con l\'Allenatore si rafforza, attivando la trasformazione in Greninja Forma Ash. Acqualame si potenzia.', }, powerConstruct: { - name: "Sciamefusione", - description: "Se i PS del Pokémon scendono a metà o meno, le cellule si raggruppano e gli permettono di assumere la Forma Perfetta.", + name: 'Sciamefusione', + description: 'Se i PS del Pokémon scendono a metà o meno, le cellule si raggruppano e gli permettono di assumere la Forma Perfetta.', }, corrosion: { - name: "Corrosione", - description: "Il Pokémon è in grado di avvelenare il bersaglio anche se questo è di tipo Acciaio o Veleno.", + name: 'Corrosione', + description: 'Il Pokémon è in grado di avvelenare il bersaglio anche se questo è di tipo Acciaio o Veleno.', }, comatose: { - name: "Sonno Assoluto", - description: "Il Pokémon si trova in un costante stato di dormiveglia che gli impedisce di svegliarsi. Può attaccare anche da addormentato.", + name: 'Sonno Assoluto', + description: 'Il Pokémon si trova in un costante stato di dormiveglia che gli impedisce di svegliarsi. Può attaccare anche da addormentato.', }, queenlyMajesty: { - name: "Regalità", - description: "L'aura di regalità del Pokémon impedisce al nemico di attaccarlo con mosse che hanno priorità alta.", + name: 'Regalità', + description: 'L\'aura di regalità del Pokémon impedisce al nemico di attaccarlo con mosse che hanno priorità alta.', }, innardsOut: { - name: "Espellinterno", - description: "Se il Pokémon viene mandato KO da un attacco, infligge a chi lo ha sferrato tanti danni quanti erano i suoi PS prima di ricevere il colpo.", + name: 'Espellinterno', + description: 'Se il Pokémon viene mandato KO da un attacco, infligge a chi lo ha sferrato tanti danni quanti erano i suoi PS prima di ricevere il colpo.', }, dancer: { - name: "Sincrodanza", - description: "Permette al Pokémon di copiare immediatamente qualsiasi mossa basata sulla danza usata da un altro Pokémon in campo.", + name: 'Sincrodanza', + description: 'Permette al Pokémon di copiare immediatamente qualsiasi mossa basata sulla danza usata da un altro Pokémon in campo.', }, battery: { - name: "Batteria", - description: "Aumenta la potenza delle mosse speciali degli alleati.", + name: 'Batteria', + description: 'Aumenta la potenza delle mosse speciali degli alleati.', }, fluffy: { - name: "Morbidone", - description: "Dimezza il danno causato dagli attacchi diretti di un nemico, ma raddoppia quello subito dalle mosse di tipo Fuoco.", + name: 'Morbidone', + description: 'Dimezza il danno causato dagli attacchi diretti di un nemico, ma raddoppia quello subito dalle mosse di tipo Fuoco.', }, dazzling: { - name: "Corposgargiante", - description: "Il Pokémon sbalordisce il nemico e non gli permette di attaccarlo con mosse che hanno priorità alta.", + name: 'Corposgargiante', + description: 'Il Pokémon sbalordisce il nemico e non gli permette di attaccarlo con mosse che hanno priorità alta.', }, soulHeart: { - name: "Cuoreanima", - description: "Aumenta l'Attacco Speciale ogni volta che un Pokémon va KO.", + name: 'Cuoreanima', + description: 'Aumenta l\'Attacco Speciale ogni volta che un Pokémon va KO.', }, tanglingHair: { - name: "Boccolidoro", - description: "Se il Pokémon viene colpito da un attacco diretto, la Velocità di chi l'ha colpito diminuisce.", + name: 'Boccolidoro', + description: 'Se il Pokémon viene colpito da un attacco diretto, la Velocità di chi l\'ha colpito diminuisce.', }, receiver: { - name: "Ricezione", - description: "Il Pokémon acquisisce l'abilità di un alleato andato KO.", + name: 'Ricezione', + description: 'Il Pokémon acquisisce l\'abilità di un alleato andato KO.', }, powerOfAlchemy: { - name: "Forza Chimica", - description: "Il Pokémon trasforma la propria abilità in quella di un alleato andato KO.", + name: 'Forza Chimica', + description: 'Il Pokémon trasforma la propria abilità in quella di un alleato andato KO.', }, beastBoost: { - name: "Ultraboost", - description: "Quando il Pokémon manda KO un altro Pokémon, aumenta la propria statistica di punta.", + name: 'Ultraboost', + description: 'Quando il Pokémon manda KO un altro Pokémon, aumenta la propria statistica di punta.', }, rksSystem: { - name: "Sistema Primevo", - description: "Il tipo del Pokémon cambia in base alla ROM installata.", + name: 'Sistema Primevo', + description: 'Il tipo del Pokémon cambia in base alla ROM installata.', }, electricSurge: { - name: "Elettrogenesi", - description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Elettrico.", + name: 'Elettrogenesi', + description: 'Quando il Pokémon entra in campo, lo trasforma in un Campo Elettrico.', }, psychicSurge: { - name: "Psicogenesi", - description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Psichico.", + name: 'Psicogenesi', + description: 'Quando il Pokémon entra in campo, lo trasforma in un Campo Psichico.', }, mistySurge: { - name: "Nebbiogenesi", - description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Nebbioso.", + name: 'Nebbiogenesi', + description: 'Quando il Pokémon entra in campo, lo trasforma in un Campo Nebbioso.', }, grassySurge: { - name: "Erbogenesi", - description: "Quando il Pokémon entra in campo, lo trasforma in un Campo Erboso.", + name: 'Erbogenesi', + description: 'Quando il Pokémon entra in campo, lo trasforma in un Campo Erboso.', }, fullMetalBody: { - name: "Metalprotezione", - description: "Impedisce la diminuzione delle statistiche causata da abilità o mosse di altri Pokémon.", + name: 'Metalprotezione', + description: 'Impedisce la diminuzione delle statistiche causata da abilità o mosse di altri Pokémon.', }, shadowShield: { - name: "Spettroguardia", - description: "Se i PS sono al massimo, riduce il danno subito.", + name: 'Spettroguardia', + description: 'Se i PS sono al massimo, riduce il danno subito.', }, prismArmor: { - name: "Scudoprisma", - description: "Riduce i danni subiti dalle mosse superefficaci.", + name: 'Scudoprisma', + description: 'Riduce i danni subiti dalle mosse superefficaci.', }, neuroforce: { - name: "Cerebroforza", - description: "Potenzia le mosse superefficaci.", + name: 'Cerebroforza', + description: 'Potenzia le mosse superefficaci.', }, intrepidSword: { - name: "Spada Indomita", - description: "Quando il Pokémon entra in campo, il suo Attacco aumenta.", + name: 'Spada Indomita', + description: 'Quando il Pokémon entra in campo, il suo Attacco aumenta.', }, dauntlessShield: { - name: "Scudo Saldo", - description: "Quando il Pokémon entra in campo, la sua Difesa aumenta.", + name: 'Scudo Saldo', + description: 'Quando il Pokémon entra in campo, la sua Difesa aumenta.', }, libero: { - name: "Libero", - description: "Cambia il tipo del Pokémon in quello della mossa che usa.", + name: 'Libero', + description: 'Cambia il tipo del Pokémon in quello della mossa che usa.', }, ballFetch: { - name: "Raccattapalle", - description: "Se il Pokémon non ha uno strumento con sé, raccoglie la Poké Ball del primo tentativo di cattura fallito.", + name: 'Raccattapalle', + description: 'Se il Pokémon non ha uno strumento con sé, raccoglie la Poké Ball del primo tentativo di cattura fallito.', }, cottonDown: { - name: "Lanugine", - description: "Se il Pokémon subisce un attacco, sparge della lanugine che diminuisce la Velocità di tutti i Pokémon in campo tranne la sua.", + name: 'Lanugine', + description: 'Se il Pokémon subisce un attacco, sparge della lanugine che diminuisce la Velocità di tutti i Pokémon in campo tranne la sua.', }, propellerTail: { - name: "Elicopinna", - description: "Permette di ignorare gli effetti di mosse e abilità che attirano altre mosse.", + name: 'Elicopinna', + description: 'Permette di ignorare gli effetti di mosse e abilità che attirano altre mosse.', }, mirrorArmor: { - name: "Blindospecchio", - description: "Rimanda al mittente le diminuzioni alle statistiche subite.", + name: 'Blindospecchio', + description: 'Rimanda al mittente le diminuzioni alle statistiche subite.', }, gulpMissile: { - name: "Inghiottimissile", - description: "Quando usa Surf o Sub, il Pokémon cattura una preda. Se subisce dei danni, la sputa fuori per attaccare.", + name: 'Inghiottimissile', + description: 'Quando usa Surf o Sub, il Pokémon cattura una preda. Se subisce dei danni, la sputa fuori per attaccare.', }, stalwart: { - name: "Volontà di Ferro", - description: "Permette di ignorare gli effetti di mosse e abilità che attirano altre mosse.", + name: 'Volontà di Ferro', + description: 'Permette di ignorare gli effetti di mosse e abilità che attirano altre mosse.', }, steamEngine: { - name: "Vapormacchina", - description: "Se il Pokémon viene colpito da una mossa di tipo Acqua o Fuoco, la sua Velocità aumenta moltissimo.", + name: 'Vapormacchina', + description: 'Se il Pokémon viene colpito da una mossa di tipo Acqua o Fuoco, la sua Velocità aumenta moltissimo.', }, punkRock: { - name: "Punk Rock", - description: "Aumenta la potenza delle mosse basate sul suono. Inoltre, dimezza i danni subiti dal Pokémon se viene colpito da tali mosse.", + name: 'Punk Rock', + description: 'Aumenta la potenza delle mosse basate sul suono. Inoltre, dimezza i danni subiti dal Pokémon se viene colpito da tali mosse.', }, sandSpit: { - name: "Sputasabbia", - description: "Quando il Pokémon viene colpito da un attacco, scatena una tempesta di sabbia.", + name: 'Sputasabbia', + description: 'Quando il Pokémon viene colpito da un attacco, scatena una tempesta di sabbia.', }, iceScales: { - name: "Geloscaglie", - description: "Scaglie di ghiaccio proteggono il Pokémon dalle mosse speciali, dimezzandone i danni subiti.", + name: 'Geloscaglie', + description: 'Scaglie di ghiaccio proteggono il Pokémon dalle mosse speciali, dimezzandone i danni subiti.', }, ripen: { - name: "Maturazione", - description: "Fa maturare le bacche raddoppiandone gli effetti.", + name: 'Maturazione', + description: 'Fa maturare le bacche raddoppiandone gli effetti.', }, iceFace: { - name: "Gelofaccia", - description: "Grazie al ghiaccio sulla testa, il Pokémon può incassare i danni causati da mosse fisiche, ma cambia forma. Torna al suo stato originale quando grandina.", + name: 'Gelofaccia', + description: 'Grazie al ghiaccio sulla testa, il Pokémon può incassare i danni causati da mosse fisiche, ma cambia forma. Torna al suo stato originale quando grandina.', }, powerSpot: { - name: "Fonte Energetica", - description: "Potenzia le mosse di chi si trova nelle immediate vicinanze.", + name: 'Fonte Energetica', + description: 'Potenzia le mosse di chi si trova nelle immediate vicinanze.', }, mimicry: { - name: "Mimetismo", - description: "Il tipo del Pokémon cambia a seconda dello stato del campo.", + name: 'Mimetismo', + description: 'Il tipo del Pokémon cambia a seconda dello stato del campo.', }, screenCleaner: { - name: "Annullabarriere", - description: "Quando il Pokémon entra in campo, annulla l'effetto di Schermoluce, Riflesso e Velaurora sia per i nemici che per gli alleati.", + name: 'Annullabarriere', + description: 'Quando il Pokémon entra in campo, annulla l\'effetto di Schermoluce, Riflesso e Velaurora sia per i nemici che per gli alleati.', }, steelySpirit: { - name: "Spiritoferreo", - description: "Potenzia gli attacchi di tipo Acciaio degli alleati.", + name: 'Spiritoferreo', + description: 'Potenzia gli attacchi di tipo Acciaio degli alleati.', }, perishBody: { - name: "Ultimotocco", - description: "Se il Pokémon viene colpito da un attacco diretto, dopo tre turni va KO assieme a chi lo ha attaccato. Se uno dei due viene sostituito, non va KO.", + name: 'Ultimotocco', + description: 'Se il Pokémon viene colpito da un attacco diretto, dopo tre turni va KO assieme a chi lo ha attaccato. Se uno dei due viene sostituito, non va KO.', }, wanderingSpirit: { - name: "Anima Errante", - description: "Se il Pokémon subisce un attacco diretto, scambia la sua abilità con quella di chi lo ha colpito.", + name: 'Anima Errante', + description: 'Se il Pokémon subisce un attacco diretto, scambia la sua abilità con quella di chi lo ha colpito.', }, gorillaTactics: { - name: "Vigorilla", - description: "Aumenta l'Attacco ma costringe il Pokémon a usare solo la prima mossa selezionata.", + name: 'Vigorilla', + description: 'Aumenta l\'Attacco ma costringe il Pokémon a usare solo la prima mossa selezionata.', }, neutralizingGas: { - name: "Gas Reagente", - description: "Se in campo c'è un Pokémon con Gas Reagente, gli effetti delle abilità di tutti gli altri Pokémon vengono annullati o non si attivano.", + name: 'Gas Reagente', + description: 'Se in campo c\'è un Pokémon con Gas Reagente, gli effetti delle abilità di tutti gli altri Pokémon vengono annullati o non si attivano.', }, pastelVeil: { - name: "Pastelvelo", - description: "Protegge il Pokémon e gli alleati dai problemi di stato causati dal veleno.", + name: 'Pastelvelo', + description: 'Protegge il Pokémon e gli alleati dai problemi di stato causati dal veleno.', }, hungerSwitch: { - name: "Pancialterna", - description: "Alla fine di ogni turno cambia forma, alternando tra Motivo Panciapiena e Motivo Panciavuota.", + name: 'Pancialterna', + description: 'Alla fine di ogni turno cambia forma, alternando tra Motivo Panciapiena e Motivo Panciavuota.', }, quickDraw: { - name: "Pugni Invisibili", - description: "Quando il Pokémon utilizza un attacco diretto, gli effetti di mosse protettive vengono ignorati.", + name: 'Pugni Invisibili', + description: 'Quando il Pokémon utilizza un attacco diretto, gli effetti di mosse protettive vengono ignorati.', }, unseenFist: { - name: "Colpolesto", - description: "A volte permette al Pokémon di agire per primo.", + name: 'Colpolesto', + description: 'A volte permette al Pokémon di agire per primo.', }, curiousMedicine: { - name: "Stranofarmaco", - description: "Quando il Pokémon entra in campo, sparge un farmaco dalla conchiglia che annulla le modifiche alle statistiche degli alleati.", + name: 'Stranofarmaco', + description: 'Quando il Pokémon entra in campo, sparge un farmaco dalla conchiglia che annulla le modifiche alle statistiche degli alleati.', }, transistor: { - name: "Transistor", - description: "Potenzia le mosse di tipo Elettro.", + name: 'Transistor', + description: 'Potenzia le mosse di tipo Elettro.', }, dragonsMaw: { - name: "Dragomascelle", - description: "Potenzia le mosse di tipo Drago.", + name: 'Dragomascelle', + description: 'Potenzia le mosse di tipo Drago.', }, chillingNeigh: { - name: "Nitrito Bianco", - description: "Quando manda KO il nemico, emette un nitrito agghiacciante, aumentando il proprio Attacco.", + name: 'Nitrito Bianco', + description: 'Quando manda KO il nemico, emette un nitrito agghiacciante, aumentando il proprio Attacco.', }, grimNeigh: { - name: "Nitrito Nero", - description: "Quando manda KO il nemico, emette un nitrito spettrale, aumentando il proprio Attacco Speciale.", + name: 'Nitrito Nero', + description: 'Quando manda KO il nemico, emette un nitrito spettrale, aumentando il proprio Attacco Speciale.', }, asOneGlastrier: { - name: "Sintonia Equina", - description: "Il Pokémon ha una doppia abilità: Agitazione di Calyrex e Nitrito Bianco di Glastrier", + name: 'Sintonia Equina', + description: 'Il Pokémon ha una doppia abilità: Agitazione di Calyrex e Nitrito Bianco di Glastrier', }, asOneSpectrier: { - name: "Sintonia Equina", - description: "Il Pokémon ha una doppia abilità: Agitazione di Calyrex e Nitrito Nero di Spectrier.", + name: 'Sintonia Equina', + description: 'Il Pokémon ha una doppia abilità: Agitazione di Calyrex e Nitrito Nero di Spectrier.', }, lingeringAroma: { - name: "Odore Tenace", - description: "L'abilità di chi entra in contatto con il Pokémon diventa Odore Tenace.", + name: 'Odore Tenace', + description: 'L\'abilità di chi entra in contatto con il Pokémon diventa Odore Tenace.', }, seedSower: { - name: "Spargisemi", - description: "Se il Pokémon subisce un attacco, il terreno entra nello stato di Campo Erboso.", + name: 'Spargisemi', + description: 'Se il Pokémon subisce un attacco, il terreno entra nello stato di Campo Erboso.', }, thermalExchange: { - name: "Termoscambio", - description: "Impedisce al Pokémon di venire scottato e aumenta il suo Attacco se subisce una mossa di tipo Fuoco.", + name: 'Termoscambio', + description: 'Impedisce al Pokémon di venire scottato e aumenta il suo Attacco se subisce una mossa di tipo Fuoco.', }, angerShell: { - name: "Iraguscio", - description: "Se un attacco subìto porta i PS a metà o meno, la rabbia del Pokémon ne riduce la Difesa e la Difesa Speciale ma ne aumenta l'Attacco, l'Attacco Speciale e la Velocità.", + name: 'Iraguscio', + description: 'Se un attacco subìto porta i PS a metà o meno, la rabbia del Pokémon ne riduce la Difesa e la Difesa Speciale ma ne aumenta l\'Attacco, l\'Attacco Speciale e la Velocità.', }, purifyingSalt: { - name: "Sale Purificante", - description: "Protegge il Pokémon dai problemi di stato e dimezza il danno causato dalle mosse di tipo Spettro.", + name: 'Sale Purificante', + description: 'Protegge il Pokémon dai problemi di stato e dimezza il danno causato dalle mosse di tipo Spettro.', }, wellBakedBody: { - name: "Bentostato", - description: "Se il Pokémon viene colpito da una mossa di tipo Fuoco, la neutralizza e aumenta di molto la propria Difesa.", + name: 'Bentostato', + description: 'Se il Pokémon viene colpito da una mossa di tipo Fuoco, la neutralizza e aumenta di molto la propria Difesa.', }, windRider: { - name: "Vento Propizio", - description: "L'Attacco aumenta se vengono usate mosse come Ventoincoda o se il Pokémon è colpito da una mossa basata sul vento, che viene inoltre neutralizzata.", + name: 'Vento Propizio', + description: 'L\'Attacco aumenta se vengono usate mosse come Ventoincoda o se il Pokémon è colpito da una mossa basata sul vento, che viene inoltre neutralizzata.', }, guardDog: { - name: "Cane da Guardia", - description: "Il Pokémon resiste a strumenti e mosse che causano la sostituzione. Se subisce l'effetto di Prepotenza, il suo Attacco aumenta.", + name: 'Cane da Guardia', + description: 'Il Pokémon resiste a strumenti e mosse che causano la sostituzione. Se subisce l\'effetto di Prepotenza, il suo Attacco aumenta.', }, rockyPayload: { - name: "Portamassi", - description: "Aumenta la potenza delle mosse di tipo Roccia.", + name: 'Portamassi', + description: 'Aumenta la potenza delle mosse di tipo Roccia.', }, windPower: { - name: "Energia Eolica", - description: "Se il Pokémon è esposto a una mossa basata sul vento, si carica di elettricità.", + name: 'Energia Eolica', + description: 'Se il Pokémon è esposto a una mossa basata sul vento, si carica di elettricità.', }, zeroToHero: { - name: "Supercambio", - description: "Se il Pokémon lascia il campo, assume la Forma Possente.", + name: 'Supercambio', + description: 'Se il Pokémon lascia il campo, assume la Forma Possente.', }, commander: { - name: "Torre di Comando", - description: "Quando il Pokémon entra in campo ed è presente un Dondozo alleato, si ficca nella bocca di quest'ultimo e da lì impartisce ordini.", + name: 'Torre di Comando', + description: 'Quando il Pokémon entra in campo ed è presente un Dondozo alleato, si ficca nella bocca di quest\'ultimo e da lì impartisce ordini.', }, electromorphosis: { - name: "Convertivolt", - description: "Se il Pokémon subisce danni, si carica di elettricità.", + name: 'Convertivolt', + description: 'Se il Pokémon subisce danni, si carica di elettricità.', }, protosynthesis: { - name: "Paleoattivazione", - description: "Quando il Pokémon ha con sé una Capsula energetica o la luce solare è intensa, la sua statistica più alta aumenta.", + name: 'Paleoattivazione', + description: 'Quando il Pokémon ha con sé una Capsula energetica o la luce solare è intensa, la sua statistica più alta aumenta.', }, quarkDrive: { - name: "Carica Quark", - description: "Quando il Pokémon ha con sé una Capsula energetica o è in presenza di un Campo Elettrico, la sua statistica più alta aumenta.", + name: 'Carica Quark', + description: 'Quando il Pokémon ha con sé una Capsula energetica o è in presenza di un Campo Elettrico, la sua statistica più alta aumenta.', }, goodAsGold: { - name: "Corpo Aureo", - description: "Grazie al robusto e inossidabile corpo d'oro, il Pokémon è immune alle mosse di stato sferrate da altri.", + name: 'Corpo Aureo', + description: 'Grazie al robusto e inossidabile corpo d\'oro, il Pokémon è immune alle mosse di stato sferrate da altri.', }, vesselOfRuin: { - name: "Vaso Nefasto", - description: "L'Attacco Speciale degli altri Pokémon viene indebolito dal potere del vaso che richiama le disgrazie.", + name: 'Vaso Nefasto', + description: 'L\'Attacco Speciale degli altri Pokémon viene indebolito dal potere del vaso che richiama le disgrazie.', }, swordOfRuin: { - name: "Spada Nefasta", - description: "La Difesa degli altri Pokémon viene indebolita dal potere della spada che richiama le disgrazie.", + name: 'Spada Nefasta', + description: 'La Difesa degli altri Pokémon viene indebolita dal potere della spada che richiama le disgrazie.', }, tabletsOfRuin: { - name: "Amuleto Nefasto", - description: "L'Attacco degli altri Pokémon viene indebolito dal potere delle tavolette che richiamano le disgrazie.", + name: 'Amuleto Nefasto', + description: 'L\'Attacco degli altri Pokémon viene indebolito dal potere delle tavolette che richiamano le disgrazie.', }, beadsOfRuin: { - name: "Monile Nefasto", - description: "La Difesa Speciale degli altri Pokémon viene indebolita dal potere dei gioielli che richiamano le disgrazie.", + name: 'Monile Nefasto', + description: 'La Difesa Speciale degli altri Pokémon viene indebolita dal potere dei gioielli che richiamano le disgrazie.', }, orichalcumPulse: { - name: "Ritmo d'Oricalco", - description: "Quando il Pokémon entra in campo, la luce solare diventa intensa. Con la luce solare intensa l'Attacco del Pokémon aumenta grazie al battito dell'antichità.", + name: 'Ritmo d\'Oricalco', + description: 'Quando il Pokémon entra in campo, la luce solare diventa intensa. Con la luce solare intensa l\'Attacco del Pokémon aumenta grazie al battito dell\'antichità.', }, hadronEngine: { - name: "Motore Adronico", - description: "Quando il Pokémon entra in campo, il terreno entra nello stato di Campo Elettrico. In presenza di Campo Elettrico l'Attacco Speciale aumenta grazie al motore del futuro.", + name: 'Motore Adronico', + description: 'Quando il Pokémon entra in campo, il terreno entra nello stato di Campo Elettrico. In presenza di Campo Elettrico l\'Attacco Speciale aumenta grazie al motore del futuro.', }, opportunist: { - name: "Scrocco", - description: "Quando la statistica di un avversario viene aumentata, il Pokémon se ne approfitta e aumenta anche la propria.", + name: 'Scrocco', + description: 'Quando la statistica di un avversario viene aumentata, il Pokémon se ne approfitta e aumenta anche la propria.', }, cudChew: { - name: "Ruminante", - description: "Se il Pokémon mangia una bacca, alla fine del turno successivo questa risale dal suo stomaco per essere mangiata una seconda volta.", + name: 'Ruminante', + description: 'Se il Pokémon mangia una bacca, alla fine del turno successivo questa risale dal suo stomaco per essere mangiata una seconda volta.', }, sharpness: { - name: "Affilama", - description: "Aumenta la potenza delle mosse che tagliano il bersaglio.", + name: 'Affilama', + description: 'Aumenta la potenza delle mosse che tagliano il bersaglio.', }, supremeOverlord: { - name: "Generale Supremo", - description: "Quando il Pokémon entra in campo, il suo Attacco e il suo Attacco Speciale aumentano un po' per ciascuno dei suoi compagni di squadra andati KO.", + name: 'Generale Supremo', + description: 'Quando il Pokémon entra in campo, il suo Attacco e il suo Attacco Speciale aumentano un po\' per ciascuno dei suoi compagni di squadra andati KO.', }, costar: { - name: "Coprotagonismo", - description: "Quando il Pokémon entra in campo, copia le modifiche alle statistiche dell'alleato.", + name: 'Coprotagonismo', + description: 'Quando il Pokémon entra in campo, copia le modifiche alle statistiche dell\'alleato.', }, toxicDebris: { - name: "Mantossina", - description: "Se il Pokémon subisce danni da mosse fisiche, piazza ai piedi degli avversari una trappola di punte velenose.", + name: 'Mantossina', + description: 'Se il Pokémon subisce danni da mosse fisiche, piazza ai piedi degli avversari una trappola di punte velenose.', }, armorTail: { - name: "Codarmatura", - description: "La misteriosa coda che avvolge la testa del Pokémon impedisce agli avversari di usare mosse che hanno priorità alta contro di lui o i suoi alleati.", + name: 'Codarmatura', + description: 'La misteriosa coda che avvolge la testa del Pokémon impedisce agli avversari di usare mosse che hanno priorità alta contro di lui o i suoi alleati.', }, earthEater: { - name: "Mangiaterra", - description: "Se il Pokémon viene colpito da una mossa di tipo Terra, recupera PS anziché subire danni.", + name: 'Mangiaterra', + description: 'Se il Pokémon viene colpito da una mossa di tipo Terra, recupera PS anziché subire danni.', }, myceliumMight: { - name: "Micoforza", - description: "Quando usa mosse di stato, il Pokémon agisce più lentamente, ma ignora l'abilità del bersaglio se questa ha effetto su tali mosse.", + name: 'Micoforza', + description: 'Quando usa mosse di stato, il Pokémon agisce più lentamente, ma ignora l\'abilità del bersaglio se questa ha effetto su tali mosse.', }, mindsEye: { - name: "Ospitalità", - description: "Quando un Pokémon con questa abilità entra in campo ricopre di attenzioni l'alleato, restituendogli un po' dei suoi PS.", + name: 'Ospitalità', + description: 'Quando un Pokémon con questa abilità entra in campo ricopre di attenzioni l\'alleato, restituendogli un po\' dei suoi PS.', }, supersweetSyrup: { - name: "Occhio Interiore", - description: "Permette di colpire bersagli di tipo Spettro con mosse di tipo Normale e Lotta, di ignorare modifiche alla loro elusione e di non veder ridotta la propria precisione.", + name: 'Occhio Interiore', + description: 'Permette di colpire bersagli di tipo Spettro con mosse di tipo Normale e Lotta, di ignorare modifiche alla loro elusione e di non veder ridotta la propria precisione.', }, hospitality: { - name: "Albergamemorie", - description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Turchese e aumentando la propria Velocità.", + name: 'Albergamemorie', + description: 'Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Turchese e aumentando la propria Velocità.', }, toxicChain: { - name: "Albergamemorie", - description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Pozzo e aumentando la propria Difesa Speciale.", + name: 'Albergamemorie', + description: 'Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Pozzo e aumentando la propria Difesa Speciale.', }, embodyAspectTeal: { - name: "Albergamemorie", - description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Focolare e aumentando il proprio Attacco.", + name: 'Albergamemorie', + description: 'Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Focolare e aumentando il proprio Attacco.', }, embodyAspectWellspring: { - name: "Albergamemorie", - description: "Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Fondamenta e aumentando la propria Difesa.", + name: 'Albergamemorie', + description: 'Il Pokémon riporta alla mente vecchi ricordi, facendo risplendere la Maschera Fondamenta e aumentando la propria Difesa.', }, embodyAspectHearthflame: { - name: "Catena Tossica", - description: "Quando il Pokémon colpisce il bersaglio con una mossa, può iperavvelenarlo grazie al potere della catena intrisa di tossine.", + name: 'Catena Tossica', + description: 'Quando il Pokémon colpisce il bersaglio con una mossa, può iperavvelenarlo grazie al potere della catena intrisa di tossine.', }, embodyAspectCornerstone: { - name: "Sciroppo Sublime", - description: "La prima volta che il Pokémon entra in campo, spande un odore dolciastro che diminuisce l'elusione degli avversari.", + name: 'Sciroppo Sublime', + description: 'La prima volta che il Pokémon entra in campo, spande un odore dolciastro che diminuisce l\'elusione degli avversari.', }, teraShift: { - name: "Teramorfosi", - description: "Quando il Pokémon entra in campo, assorbe l'energia circostante e assume la Forma Teracristal.", + name: 'Teramorfosi', + description: 'Quando il Pokémon entra in campo, assorbe l\'energia circostante e assume la Forma Teracristal.', }, teraShell: { - name: "Teraguscio", - description: "Grazie al suo guscio che racchiude il potere di tutti i tipi, se il Pokémon ha tutti i PS, le mosse che subisce non saranno molto efficaci.", + name: 'Teraguscio', + description: 'Grazie al suo guscio che racchiude il potere di tutti i tipi, se il Pokémon ha tutti i PS, le mosse che subisce non saranno molto efficaci.', }, teraformZero: { - name: "Zeroformazione", - description: "Quando assume la Forma Astrale, Terapagos azzera tutti gli effetti delle condizioni atmosferiche e lo stato del terreno di lotta grazie al suo potere occulto.", + name: 'Zeroformazione', + description: 'Quando assume la Forma Astrale, Terapagos azzera tutti gli effetti delle condizioni atmosferiche e lo stato del terreno di lotta grazie al suo potere occulto.', }, poisonPuppeteer: { - name: " Malia Tossica", - description: "I Pokémon avvelenati dalle mosse di Pecharunt entreranno anche in stato di confusione.", + name: ' Malia Tossica', + description: 'I Pokémon avvelenati dalle mosse di Pecharunt entreranno anche in stato di confusione.', }, } as const; diff --git a/src/locales/it/battle-message-ui-handler.ts b/src/locales/it/battle-message-ui-handler.ts index 917de48fd5e..e01a315631a 100644 --- a/src/locales/it/battle-message-ui-handler.ts +++ b/src/locales/it/battle-message-ui-handler.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battleMessageUiHandler: SimpleTranslationEntries = { - "ivBest": "Stellare", - "ivFantastic": "Eccellente", - "ivVeryGood": "Notevole", - "ivPrettyGood": "Normale", - "ivDecent": "Sufficiente", - "ivNoGood": "Mediocre", -} as const; \ No newline at end of file + 'ivBest': 'Stellare', + 'ivFantastic': 'Eccellente', + 'ivVeryGood': 'Notevole', + 'ivPrettyGood': 'Normale', + 'ivDecent': 'Sufficiente', + 'ivNoGood': 'Mediocre', +} as const; diff --git a/src/locales/it/battle.ts b/src/locales/it/battle.ts index c9cf46554c0..df9d3a8e899 100644 --- a/src/locales/it/battle.ts +++ b/src/locales/it/battle.ts @@ -1,56 +1,56 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battle: SimpleTranslationEntries = { - "bossAppeared": "{{bossName}} è apparso.", - "trainerAppeared": "{{trainerName}}\nvuole combattere!", - "trainerAppearedDouble": "{{trainerName}}\nwould like to battle!", - "singleWildAppeared": "Appare {{pokemonName}} selvatico!", - "multiWildAppeared": "Appaiono {{pokemonName1}}\ne {{pokemonName2}} salvatici!", - "playerComeBack": "Rientra, {{pokemonName}}!", - "trainerComeBack": "{{trainerName}} ha ritirato {{pokemonName}}!", - "playerGo": "Vai! {{pokemonName}}!", - "trainerGo": "{{trainerName}} manda in campo {{pokemonName}}!", - "switchQuestion": "Vuoi cambiare\n{{pokemonName}}?", - "trainerDefeated": `Hai sconfitto\n{{trainerName}}!`, - "pokemonCaught": "Preso! {{pokemonName}} è stato catturato!", - "pokemon": "Pokémon", - "sendOutPokemon": "Vai! {{pokemonName}}!", - "hitResultCriticalHit": "Brutto colpo!", - "hitResultSuperEffective": "È superefficace!", - "hitResultNotVeryEffective": "Non è molto efficace…", - "hitResultNoEffect": "Non ha effetto su {{pokemonName}}!", - "hitResultOneHitKO": "KO con un colpo!", - "attackFailed": "Ma ha fallito!", - "attackHitsCount": `Colpito {{count}} volta/e!`, - "expGain": "{{pokemonName}} ha guadagnato\n{{exp}} Punti Esperienza!", - "levelUp": "{{pokemonName}} è salito al\nlivello {{level}}!", - "learnMove": "{{pokemonName}} impara\n{{moveName}}!", - "learnMovePrompt": "{{pokemonName}} vorrebbe imparare\n{{moveName}}.", - "learnMoveLimitReached": "Tuttavia, {{pokemonName}}\nconosce già quattro mosse.", - "learnMoveReplaceQuestion": "Vuoi che ne dimentichi una e al suo\nposto apprenda {{moveName}}?", - "learnMoveStopTeaching": "Vuoi smettere di fargli imparare\n{{moveName}}?", - "learnMoveNotLearned": "{{pokemonName}} non ha imparato\n{{moveName}}.", - "learnMoveForgetQuestion": "Quale mossa deve dimenticare?", - "learnMoveForgetSuccess": "{{pokemonName}} ha dimenticato la mossa\n{{moveName}}.", - "countdownPoof": "@d{32}1, @d{15}2, @d{15}e@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}ta-daaaa!", - "learnMoveAnd": "E…", - "levelCapUp": "Il livello massimo\nè aumentato a {{levelCap}}!", - "moveNotImplemented": "{{moveName}} non è ancora implementata e non può essere selezionata.", - "moveNoPP": "Non ci sono PP rimanenti\nper questa mossa!", - "moveDisabled": "{{moveName}} è disabilitata!", - "noPokeballForce": "Una forza misteriosa\nimpedisce l'uso dell Poké Ball.", - "noPokeballTrainer": "Non puoi catturare\nPokémon di altri allenatori!", - "noPokeballMulti": "Puoi lanciare una Poké Ball\nquando rimane un solo Pokémon!", - "noPokeballStrong": "Il Pokémon avversario è troppo forte per essere catturato!\nDevi prima indebolirlo!", - "noEscapeForce": "Una forza misteriosa\nimpedisce la fuga.", - "noEscapeTrainer": "Non puoi sottrarti\nalla lotta con un'allenatore!", - "noEscapePokemon": "{{moveName}} di {{pokemonName}}\npreviene la {{escapeVerb}}!", - "runAwaySuccess": "Scampato pericolo!", - "runAwayCannotEscape": 'Non puoi fuggire!', - "escapeVerbSwitch": "cambiando", - "escapeVerbFlee": "fuggendo", - "notDisabled": "{{pokemonName}}'s {{moveName}} non è più\ndisabilitata!", - "skipItemQuestion": "Sei sicuro di non voler prendere nessun oggetto?", - "eggHatching": "Oh!", - "ivScannerUseQuestion": "Vuoi usare lo scanner di IV su {{pokemonName}}?" -} as const; \ No newline at end of file + 'bossAppeared': '{{bossName}} è apparso.', + 'trainerAppeared': '{{trainerName}}\nvuole combattere!', + 'trainerAppearedDouble': '{{trainerName}}\nwould like to battle!', + 'singleWildAppeared': 'Appare {{pokemonName}} selvatico!', + 'multiWildAppeared': 'Appaiono {{pokemonName1}}\ne {{pokemonName2}} salvatici!', + 'playerComeBack': 'Rientra, {{pokemonName}}!', + 'trainerComeBack': '{{trainerName}} ha ritirato {{pokemonName}}!', + 'playerGo': 'Vai! {{pokemonName}}!', + 'trainerGo': '{{trainerName}} manda in campo {{pokemonName}}!', + 'switchQuestion': 'Vuoi cambiare\n{{pokemonName}}?', + 'trainerDefeated': 'Hai sconfitto\n{{trainerName}}!', + 'pokemonCaught': 'Preso! {{pokemonName}} è stato catturato!', + 'pokemon': 'Pokémon', + 'sendOutPokemon': 'Vai! {{pokemonName}}!', + 'hitResultCriticalHit': 'Brutto colpo!', + 'hitResultSuperEffective': 'È superefficace!', + 'hitResultNotVeryEffective': 'Non è molto efficace…', + 'hitResultNoEffect': 'Non ha effetto su {{pokemonName}}!', + 'hitResultOneHitKO': 'KO con un colpo!', + 'attackFailed': 'Ma ha fallito!', + 'attackHitsCount': 'Colpito {{count}} volta/e!', + 'expGain': '{{pokemonName}} ha guadagnato\n{{exp}} Punti Esperienza!', + 'levelUp': '{{pokemonName}} è salito al\nlivello {{level}}!', + 'learnMove': '{{pokemonName}} impara\n{{moveName}}!', + 'learnMovePrompt': '{{pokemonName}} vorrebbe imparare\n{{moveName}}.', + 'learnMoveLimitReached': 'Tuttavia, {{pokemonName}}\nconosce già quattro mosse.', + 'learnMoveReplaceQuestion': 'Vuoi che ne dimentichi una e al suo\nposto apprenda {{moveName}}?', + 'learnMoveStopTeaching': 'Vuoi smettere di fargli imparare\n{{moveName}}?', + 'learnMoveNotLearned': '{{pokemonName}} non ha imparato\n{{moveName}}.', + 'learnMoveForgetQuestion': 'Quale mossa deve dimenticare?', + 'learnMoveForgetSuccess': '{{pokemonName}} ha dimenticato la mossa\n{{moveName}}.', + 'countdownPoof': '@d{32}1, @d{15}2, @d{15}e@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}ta-daaaa!', + 'learnMoveAnd': 'E…', + 'levelCapUp': 'Il livello massimo\nè aumentato a {{levelCap}}!', + 'moveNotImplemented': '{{moveName}} non è ancora implementata e non può essere selezionata.', + 'moveNoPP': 'Non ci sono PP rimanenti\nper questa mossa!', + 'moveDisabled': '{{moveName}} è disabilitata!', + 'noPokeballForce': 'Una forza misteriosa\nimpedisce l\'uso dell Poké Ball.', + 'noPokeballTrainer': 'Non puoi catturare\nPokémon di altri allenatori!', + 'noPokeballMulti': 'Puoi lanciare una Poké Ball\nquando rimane un solo Pokémon!', + 'noPokeballStrong': 'Il Pokémon avversario è troppo forte per essere catturato!\nDevi prima indebolirlo!', + 'noEscapeForce': 'Una forza misteriosa\nimpedisce la fuga.', + 'noEscapeTrainer': 'Non puoi sottrarti\nalla lotta con un\'allenatore!', + 'noEscapePokemon': '{{moveName}} di {{pokemonName}}\npreviene la {{escapeVerb}}!', + 'runAwaySuccess': 'Scampato pericolo!', + 'runAwayCannotEscape': 'Non puoi fuggire!', + 'escapeVerbSwitch': 'cambiando', + 'escapeVerbFlee': 'fuggendo', + 'notDisabled': '{{pokemonName}}\'s {{moveName}} non è più\ndisabilitata!', + 'skipItemQuestion': 'Sei sicuro di non voler prendere nessun oggetto?', + 'eggHatching': 'Oh!', + 'ivScannerUseQuestion': 'Vuoi usare lo scanner di IV su {{pokemonName}}?' +} as const; diff --git a/src/locales/it/berry.ts b/src/locales/it/berry.ts index 27a30438a59..e114a9ef692 100644 --- a/src/locales/it/berry.ts +++ b/src/locales/it/berry.ts @@ -1,48 +1,48 @@ -import { BerryTranslationEntries } from "#app/plugins/i18n"; +import { BerryTranslationEntries } from '#app/plugins/i18n'; export const berry: BerryTranslationEntries = { - "SITRUS": { - name: "Baccacedro", - effect: "Restituisce il 25% dei PS se i PS sono sotto il 50%", + 'SITRUS': { + name: 'Baccacedro', + effect: 'Restituisce il 25% dei PS se i PS sono sotto il 50%', }, - "LUM": { - name: "Baccaprugna", - effect: "Se tenuta da un Pokémon risolve qualsiasi problema di stato", + 'LUM': { + name: 'Baccaprugna', + effect: 'Se tenuta da un Pokémon risolve qualsiasi problema di stato', }, - "ENIGMA": { - name: "Baccaenigma", - effect: "Restituisce il 25% dei PS se viene colpito da una mossa superefficace", + 'ENIGMA': { + name: 'Baccaenigma', + effect: 'Restituisce il 25% dei PS se viene colpito da una mossa superefficace', }, - "LIECHI": { - name: "Baccalici", - effect: "Aumenta l'Attacco se i PS sono sotto il 25%", + 'LIECHI': { + name: 'Baccalici', + effect: 'Aumenta l\'Attacco se i PS sono sotto il 25%', }, - "GANLON": { - name: "Baccalongan", - effect: "Aumenta la Difesa se i PS sono sotto il 25%", + 'GANLON': { + name: 'Baccalongan', + effect: 'Aumenta la Difesa se i PS sono sotto il 25%', }, - "PETAYA": { - name: "Baccapitaya", - effect: "Aumenta l'Attacco Speciale se i PS sono sotto il 25%", + 'PETAYA': { + name: 'Baccapitaya', + effect: 'Aumenta l\'Attacco Speciale se i PS sono sotto il 25%', }, - "APICOT": { - name: "Baccacocca", - effect: "Aumenta la Difesa Speciale se i PS sono sotto il 25%", + 'APICOT': { + name: 'Baccacocca', + effect: 'Aumenta la Difesa Speciale se i PS sono sotto il 25%', }, - "SALAC": { - name: "Baccasalak", - effect: "Aumenta la Velocità se i PS sono sotto il 25%", + 'SALAC': { + name: 'Baccasalak', + effect: 'Aumenta la Velocità se i PS sono sotto il 25%', }, - "LANSAT": { - name: "Baccalangsa", - effect: "Aumenta la probabilità di Colpo Critico se i PS sono sotto il 25%", + 'LANSAT': { + name: 'Baccalangsa', + effect: 'Aumenta la probabilità di Colpo Critico se i PS sono sotto il 25%', }, - "STARF": { - name: "Baccambola", - effect: "Aumenta drasticamente una statistica casuale se i PS sono sotto il 25%", + 'STARF': { + name: 'Baccambola', + effect: 'Aumenta drasticamente una statistica casuale se i PS sono sotto il 25%', }, - "LEPPA": { - name: "Baccamela", - effect: "Ripristina 10 PP a una mossa se i suoi PP raggiungono lo 0", + 'LEPPA': { + name: 'Baccamela', + effect: 'Ripristina 10 PP a una mossa se i suoi PP raggiungono lo 0', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/it/command-ui-handler.ts b/src/locales/it/command-ui-handler.ts index 54af8f76694..b2f9e61a6af 100644 --- a/src/locales/it/command-ui-handler.ts +++ b/src/locales/it/command-ui-handler.ts @@ -1,9 +1,9 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const commandUiHandler: SimpleTranslationEntries = { - "fight": "Lotta", - "ball": "Borsa", - "pokemon": "Pokémon", - "run": "Fuga", - "actionMessage": "Cosa deve fare {{pokemonName}}?", -} as const; \ No newline at end of file + 'fight': 'Lotta', + 'ball': 'Borsa', + 'pokemon': 'Pokémon', + 'run': 'Fuga', + 'actionMessage': 'Cosa deve fare {{pokemonName}}?', +} as const; diff --git a/src/locales/it/config.ts b/src/locales/it/config.ts index 807d136040c..541890b7415 100644 --- a/src/locales/it/config.ts +++ b/src/locales/it/config.ts @@ -1,51 +1,51 @@ -import { ability } from "./ability"; -import { abilityTriggers } from "./ability-trigger"; -import { battle } from "./battle"; -import { commandUiHandler } from "./command-ui-handler"; -import { egg } from "./egg"; -import { fightUiHandler } from "./fight-ui-handler"; -import { growth } from "./growth"; -import { menu } from "./menu"; -import { menuUiHandler } from "./menu-ui-handler"; -import { modifierType } from "./modifier-type"; -import { move } from "./move"; -import { nature } from "./nature"; -import { pokeball } from "./pokeball"; -import { pokemon } from "./pokemon"; -import { pokemonInfo } from "./pokemon-info"; -import { splashMessages } from "./splash-messages"; -import { starterSelectUiHandler } from "./starter-select-ui-handler"; -import { titles, trainerClasses, trainerNames } from "./trainers"; -import { tutorial } from "./tutorial"; -import { weather } from "./weather"; -import { battleMessageUiHandler } from "./battle-message-ui-handler"; -import { berry } from "./berry"; -import { voucher } from "./voucher"; +import { ability } from './ability'; +import { abilityTriggers } from './ability-trigger'; +import { battle } from './battle'; +import { commandUiHandler } from './command-ui-handler'; +import { egg } from './egg'; +import { fightUiHandler } from './fight-ui-handler'; +import { growth } from './growth'; +import { menu } from './menu'; +import { menuUiHandler } from './menu-ui-handler'; +import { modifierType } from './modifier-type'; +import { move } from './move'; +import { nature } from './nature'; +import { pokeball } from './pokeball'; +import { pokemon } from './pokemon'; +import { pokemonInfo } from './pokemon-info'; +import { splashMessages } from './splash-messages'; +import { starterSelectUiHandler } from './starter-select-ui-handler'; +import { titles, trainerClasses, trainerNames } from './trainers'; +import { tutorial } from './tutorial'; +import { weather } from './weather'; +import { battleMessageUiHandler } from './battle-message-ui-handler'; +import { berry } from './berry'; +import { voucher } from './voucher'; export const itConfig = { - ability: ability, - abilityTriggers: abilityTriggers, - battle: battle, - commandUiHandler: commandUiHandler, - egg: egg, - fightUiHandler: fightUiHandler, - growth: growth, - menu: menu, - menuUiHandler: menuUiHandler, - modifierType: modifierType, - move: move, - nature: nature, - pokeball: pokeball, - pokemon: pokemon, - pokemonInfo: pokemonInfo, - splashMessages: splashMessages, - starterSelectUiHandler: starterSelectUiHandler, - titles: titles, - trainerClasses: trainerClasses, - trainerNames: trainerNames, - tutorial: tutorial, - weather: weather, - battleMessageUiHandler: battleMessageUiHandler, - berry: berry, - voucher: voucher, -} + ability: ability, + abilityTriggers: abilityTriggers, + battle: battle, + commandUiHandler: commandUiHandler, + egg: egg, + fightUiHandler: fightUiHandler, + growth: growth, + menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, + move: move, + nature: nature, + pokeball: pokeball, + pokemon: pokemon, + pokemonInfo: pokemonInfo, + splashMessages: splashMessages, + starterSelectUiHandler: starterSelectUiHandler, + titles: titles, + trainerClasses: trainerClasses, + trainerNames: trainerNames, + tutorial: tutorial, + weather: weather, + battleMessageUiHandler: battleMessageUiHandler, + berry: berry, + voucher: voucher, +}; diff --git a/src/locales/it/egg.ts b/src/locales/it/egg.ts index 5634a2ae15b..c039ccc1f07 100644 --- a/src/locales/it/egg.ts +++ b/src/locales/it/egg.ts @@ -1,21 +1,21 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const egg: SimpleTranslationEntries = { - "egg": "Uovo", - "defaultTier": "Comune", - "greatTier": "Raro", - "ultraTier": "Epico", - "masterTier": "Leggendario", - "hatchWavesMessageSoon": "Si sentono dei suoni provenienti dall'interno! Si schiuderà presto!", - "hatchWavesMessageClose": "Sembra muoversi di tanto in tanto. Potrebbe essere prossimo alla schiusa.", - "hatchWavesMessageNotClose": "Cosa uscirà da qui? Non sembra si schiuderà presto.", - "hatchWavesMessageLongTime": "Sembra che questo uovo impiegherà molto tempo per schiudersi.", - "gachaTypeLegendary": "Tasso dei Leggendari Aumentato", - "gachaTypeMove": "Tasso delle Mosse Rare delle Uova Aumentato", - "gachaTypeShiny": "Tasso degli Shiny Aumentato", - "selectMachine": "Seleziona un distributore.", - "notEnoughVouchers": "Non hai abbastanza Biglietti!", - "tooManyEggs": "Hai troppe Uova!", - "pull": "Tiro", - "pulls": "Tiri" -} as const; \ No newline at end of file + 'egg': 'Uovo', + 'defaultTier': 'Comune', + 'greatTier': 'Raro', + 'ultraTier': 'Epico', + 'masterTier': 'Leggendario', + 'hatchWavesMessageSoon': 'Si sentono dei suoni provenienti dall\'interno! Si schiuderà presto!', + 'hatchWavesMessageClose': 'Sembra muoversi di tanto in tanto. Potrebbe essere prossimo alla schiusa.', + 'hatchWavesMessageNotClose': 'Cosa uscirà da qui? Non sembra si schiuderà presto.', + 'hatchWavesMessageLongTime': 'Sembra che questo uovo impiegherà molto tempo per schiudersi.', + 'gachaTypeLegendary': 'Tasso dei Leggendari Aumentato', + 'gachaTypeMove': 'Tasso delle Mosse Rare delle Uova Aumentato', + 'gachaTypeShiny': 'Tasso degli Shiny Aumentato', + 'selectMachine': 'Seleziona un distributore.', + 'notEnoughVouchers': 'Non hai abbastanza Biglietti!', + 'tooManyEggs': 'Hai troppe Uova!', + 'pull': 'Tiro', + 'pulls': 'Tiri' +} as const; diff --git a/src/locales/it/fight-ui-handler.ts b/src/locales/it/fight-ui-handler.ts index e6dacf48f68..06127286deb 100644 --- a/src/locales/it/fight-ui-handler.ts +++ b/src/locales/it/fight-ui-handler.ts @@ -1,7 +1,7 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const fightUiHandler: SimpleTranslationEntries = { - "pp": "PP", - "power": "Potenza", - "accuracy": "Precisione", -} as const; \ No newline at end of file + 'pp': 'PP', + 'power': 'Potenza', + 'accuracy': 'Precisione', +} as const; diff --git a/src/locales/it/growth.ts b/src/locales/it/growth.ts index f761b25a229..50a3dff354c 100644 --- a/src/locales/it/growth.ts +++ b/src/locales/it/growth.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const growth: SimpleTranslationEntries = { - "Erratic": "Irregolare", - "Fast": "Veloce", - "Medium_Fast": "Medio-Veloce", - "Medium_Slow": "Medio-Lenta", - "Slow": "Lenta", - "Fluctuating": "Fluttuante" -} as const; \ No newline at end of file + 'Erratic': 'Irregolare', + 'Fast': 'Veloce', + 'Medium_Fast': 'Medio-Veloce', + 'Medium_Slow': 'Medio-Lenta', + 'Slow': 'Lenta', + 'Fluctuating': 'Fluttuante' +} as const; diff --git a/src/locales/it/menu-ui-handler.ts b/src/locales/it/menu-ui-handler.ts index e0328fccdc1..7f74173126b 100644 --- a/src/locales/it/menu-ui-handler.ts +++ b/src/locales/it/menu-ui-handler.ts @@ -1,23 +1,23 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const menuUiHandler: SimpleTranslationEntries = { - "GAME_SETTINGS": 'Impostazioni', - "ACHIEVEMENTS": "Risultati", - "STATS": "Statistiche", - "VOUCHERS": "Biglietti", - "EGG_LIST": "Lista Uova", - "EGG_GACHA": "Gacha Uova", - "MANAGE_DATA": "Gestisci Dati", - "COMMUNITY": "Community", - "SAVE_AND_QUIT": "Salva ed Esci", - "LOG_OUT": "Disconnettiti", - "slot": "Slot {{slotNumber}}", - "importSession": "Importa Sessione", - "importSlotSelect": "Seleziona uno slot in cui importare.", - "exportSession": "Esporta Sessione", - "exportSlotSelect": "Seleziona uno slot da cui esportare.", - "importData": "Importa Dati", - "exportData": "Esporta Dati", - "cancel": "Annulla", - "losingProgressionWarning": "Perderai tutti i progressi dall'inizio della battaglia. Procedere?" -} as const; \ No newline at end of file + 'GAME_SETTINGS': 'Impostazioni', + 'ACHIEVEMENTS': 'Risultati', + 'STATS': 'Statistiche', + 'VOUCHERS': 'Biglietti', + 'EGG_LIST': 'Lista Uova', + 'EGG_GACHA': 'Gacha Uova', + 'MANAGE_DATA': 'Gestisci Dati', + 'COMMUNITY': 'Community', + 'SAVE_AND_QUIT': 'Salva ed Esci', + 'LOG_OUT': 'Disconnettiti', + 'slot': 'Slot {{slotNumber}}', + 'importSession': 'Importa Sessione', + 'importSlotSelect': 'Seleziona uno slot in cui importare.', + 'exportSession': 'Esporta Sessione', + 'exportSlotSelect': 'Seleziona uno slot da cui esportare.', + 'importData': 'Importa Dati', + 'exportData': 'Esporta Dati', + 'cancel': 'Annulla', + 'losingProgressionWarning': 'Perderai tutti i progressi dall\'inizio della battaglia. Procedere?' +} as const; diff --git a/src/locales/it/menu.ts b/src/locales/it/menu.ts index e86a6be25ed..774216db06e 100644 --- a/src/locales/it/menu.ts +++ b/src/locales/it/menu.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,46 +6,46 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const menu: SimpleTranslationEntries = { - "cancel": "Annulla", - "continue": "Continua", - "newGame": "Nuova Partita", - "loadGame": "Carica Partita", - "dailyRun": "Corsa Giornaliera (Beta)", - "selectGameMode": "Seleziona una modalità di gioco.", - "logInOrCreateAccount": "Accedi o crea un nuovo account per iniziare. Non è richiesta un'email!", - "username": "Nome Utente", - "password": "Password", - "login": "Accedi", - "register": "Registrati", - "emptyUsername": "Nome utente mancante!", - "invalidLoginUsername": "Nome utente non valido!", - "invalidRegisterUsername": "Il nome utente può contenere solo lettere, numeri o trattini bassi", - "invalidLoginPassword": "Password non valida!", - "invalidRegisterPassword": "La password deve contenere almeno 6 caratteri", - "usernameAlreadyUsed": "Il nome utente inserito è stato già utilizzato!", - "accountNonExistent": "Account inesistente!", - "unmatchingPassword": "La password inserita non è corretta!", - "passwordNotMatchingConfirmPassword": "La password deve essere uguale alla conferma password!", - "confirmPassword": "Conferma Password", - "registrationAgeWarning": "Registrandoti confermi di avere 13 anni o più.", - "backToLogin": "Torna all'accesso", - "failedToLoadSaveData": "Impossibile caricare i dati di salvataggio. Ricarica la pagina.\nSe il problema persiste, contatta l'amministratore.", - "sessionSuccess": "Sessione caricata correttamente.", - "failedToLoadSession": "Impossibile caricare i dati della sessione.\nPotrebbero essere danneggiati.", - "boyOrGirl": "Sei un ragazzo o una ragazza?", - "boy": "Ragazzo", - "girl": "Ragazza", - "dailyRankings": "Classifica Giornaliera", - "weeklyRankings": "Classifica Settimanale", - "noRankings": "Nessuna Classifica", - "loading": "Caricamento…", - "playersOnline": "Giocatori Online", - "evolving": "Cosa?\n{{pokemonName}} si evolvendo!", - "stoppedEvolving": "{{pokemonName}} ha smesso di evolversi.", - "pauseEvolutionsQuestion": "Vuoi sospendere le evoluzioni per {{pokemonName}}?\nLe evoluzioni possono essere riattivate dalla schermata del party.", - "evolutionsPaused": "Le evoluzioni sono state sospese per {{pokemonName}}.", - "evolutionDone": "Congratulazioni!\n{{pokemonName}} si è evoluto in {{evolvedPokemonName}}!", - "empty":"Vuoto", - "yes":"Si", - "no":"No", -} as const; \ No newline at end of file + 'cancel': 'Annulla', + 'continue': 'Continua', + 'newGame': 'Nuova Partita', + 'loadGame': 'Carica Partita', + 'dailyRun': 'Corsa Giornaliera (Beta)', + 'selectGameMode': 'Seleziona una modalità di gioco.', + 'logInOrCreateAccount': 'Accedi o crea un nuovo account per iniziare. Non è richiesta un\'email!', + 'username': 'Nome Utente', + 'password': 'Password', + 'login': 'Accedi', + 'register': 'Registrati', + 'emptyUsername': 'Nome utente mancante!', + 'invalidLoginUsername': 'Nome utente non valido!', + 'invalidRegisterUsername': 'Il nome utente può contenere solo lettere, numeri o trattini bassi', + 'invalidLoginPassword': 'Password non valida!', + 'invalidRegisterPassword': 'La password deve contenere almeno 6 caratteri', + 'usernameAlreadyUsed': 'Il nome utente inserito è stato già utilizzato!', + 'accountNonExistent': 'Account inesistente!', + 'unmatchingPassword': 'La password inserita non è corretta!', + 'passwordNotMatchingConfirmPassword': 'La password deve essere uguale alla conferma password!', + 'confirmPassword': 'Conferma Password', + 'registrationAgeWarning': 'Registrandoti confermi di avere 13 anni o più.', + 'backToLogin': 'Torna all\'accesso', + 'failedToLoadSaveData': 'Impossibile caricare i dati di salvataggio. Ricarica la pagina.\nSe il problema persiste, contatta l\'amministratore.', + 'sessionSuccess': 'Sessione caricata correttamente.', + 'failedToLoadSession': 'Impossibile caricare i dati della sessione.\nPotrebbero essere danneggiati.', + 'boyOrGirl': 'Sei un ragazzo o una ragazza?', + 'boy': 'Ragazzo', + 'girl': 'Ragazza', + 'dailyRankings': 'Classifica Giornaliera', + 'weeklyRankings': 'Classifica Settimanale', + 'noRankings': 'Nessuna Classifica', + 'loading': 'Caricamento…', + 'playersOnline': 'Giocatori Online', + 'evolving': 'Cosa?\n{{pokemonName}} si evolvendo!', + 'stoppedEvolving': '{{pokemonName}} ha smesso di evolversi.', + 'pauseEvolutionsQuestion': 'Vuoi sospendere le evoluzioni per {{pokemonName}}?\nLe evoluzioni possono essere riattivate dalla schermata del party.', + 'evolutionsPaused': 'Le evoluzioni sono state sospese per {{pokemonName}}.', + 'evolutionDone': 'Congratulazioni!\n{{pokemonName}} si è evoluto in {{evolvedPokemonName}}!', + 'empty':'Vuoto', + 'yes':'Si', + 'no':'No', +} as const; diff --git a/src/locales/it/modifier-type.ts b/src/locales/it/modifier-type.ts index 70303dd7acd..c21bf6361ed 100644 --- a/src/locales/it/modifier-type.ts +++ b/src/locales/it/modifier-type.ts @@ -1,387 +1,387 @@ -import { ModifierTypeTranslationEntries } from "#app/plugins/i18n"; +import { ModifierTypeTranslationEntries } from '#app/plugins/i18n'; export const modifierType: ModifierTypeTranslationEntries = { ModifierType: { - "AddPokeballModifierType": { - name: "{{modifierCount}}x {{pokeballName}}", - description: "Ricevi {{pokeballName}} x{{modifierCount}} (Inventario: {{pokeballAmount}}) \nTasso di cattura: {{catchRate}}", + 'AddPokeballModifierType': { + name: '{{modifierCount}}x {{pokeballName}}', + description: 'Ricevi {{pokeballName}} x{{modifierCount}} (Inventario: {{pokeballAmount}}) \nTasso di cattura: {{catchRate}}', }, - "AddVoucherModifierType": { - name: "{{modifierCount}}x {{voucherTypeName}}", - description: "Ricevi {{voucherTypeName}} x{{modifierCount}}", + 'AddVoucherModifierType': { + name: '{{modifierCount}}x {{voucherTypeName}}', + description: 'Ricevi {{voucherTypeName}} x{{modifierCount}}', }, - "PokemonHeldItemModifierType": { + 'PokemonHeldItemModifierType': { extra: { - "inoperable": "{{pokemonName}} non può prendere\nquesto oggetto!", - "tooMany": "{{pokemonName}} ne ha troppi\ndi questo oggetto!", + 'inoperable': '{{pokemonName}} non può prendere\nquesto oggetto!', + 'tooMany': '{{pokemonName}} ne ha troppi\ndi questo oggetto!', } }, - "PokemonHpRestoreModifierType": { - description: "Restituisce {{restorePoints}} PS o {{restorePercent}}% PS ad un Pokémon, a seconda del valore più alto", + 'PokemonHpRestoreModifierType': { + description: 'Restituisce {{restorePoints}} PS o {{restorePercent}}% PS ad un Pokémon, a seconda del valore più alto', extra: { - "fully": "Restituisce tutti i PS ad un Pokémon", - "fullyWithStatus": "Restituisce tutti i PS ad un Pokémon e lo cura da ogni stato", + 'fully': 'Restituisce tutti i PS ad un Pokémon', + 'fullyWithStatus': 'Restituisce tutti i PS ad un Pokémon e lo cura da ogni stato', } }, - "PokemonReviveModifierType": { - description: "Rianima un Pokémon esausto e gli restituisce il {{restorePercent}}% PS", + 'PokemonReviveModifierType': { + description: 'Rianima un Pokémon esausto e gli restituisce il {{restorePercent}}% PS', }, - "PokemonStatusHealModifierType": { - description: "Cura tutti i problemi di stato di un Pokémon", + 'PokemonStatusHealModifierType': { + description: 'Cura tutti i problemi di stato di un Pokémon', }, - "PokemonPpRestoreModifierType": { - description: "Restituisce {{restorePoints}} PP per una mossa di un Pokémon ", + 'PokemonPpRestoreModifierType': { + description: 'Restituisce {{restorePoints}} PP per una mossa di un Pokémon ', extra: { - "fully": "Restituisce tutti i PP di una mossa", + 'fully': 'Restituisce tutti i PP di una mossa', } }, - "PokemonAllMovePpRestoreModifierType": { - description: "Restituisce {{restorePoints}} PP a tutte le mosse di un Pokémon", + 'PokemonAllMovePpRestoreModifierType': { + description: 'Restituisce {{restorePoints}} PP a tutte le mosse di un Pokémon', extra: { - "fully": "Restituisce tutti i PP a tutte le mosse di un Pokémon", + 'fully': 'Restituisce tutti i PP a tutte le mosse di un Pokémon', } }, - "PokemonPpUpModifierType": { - description: "Aumenta i PP di una mossa di {{upPoints}} per ogni 5 PP (massimo 3)", + 'PokemonPpUpModifierType': { + description: 'Aumenta i PP di una mossa di {{upPoints}} per ogni 5 PP (massimo 3)', }, - "PokemonNatureChangeModifierType": { - name: "Menta {{natureName}}", - description: "Cambia la natura del Pokémon in {{natureName}} e sblocca la natura per il Pokémon iniziale", + 'PokemonNatureChangeModifierType': { + name: 'Menta {{natureName}}', + description: 'Cambia la natura del Pokémon in {{natureName}} e sblocca la natura per il Pokémon iniziale', }, - "DoubleBattleChanceBoosterModifierType": { - description: "Raddoppia la possibilità di imbattersi in doppie battaglie per {{battleCount}} battaglie", + 'DoubleBattleChanceBoosterModifierType': { + description: 'Raddoppia la possibilità di imbattersi in doppie battaglie per {{battleCount}} battaglie', }, - "TempBattleStatBoosterModifierType": { - description: "Aumenta {{tempBattleStatName}} di un livello a tutti i Pokémon nel gruppo per 5 battaglie", + 'TempBattleStatBoosterModifierType': { + description: 'Aumenta {{tempBattleStatName}} di un livello a tutti i Pokémon nel gruppo per 5 battaglie', }, - "AttackTypeBoosterModifierType": { - description: "Aumenta la potenza delle mosse di tipo {{moveType}} del 20% per un Pokémon", + 'AttackTypeBoosterModifierType': { + description: 'Aumenta la potenza delle mosse di tipo {{moveType}} del 20% per un Pokémon', }, - "PokemonLevelIncrementModifierType": { - description: "Fa salire un Pokémon di un livello", + 'PokemonLevelIncrementModifierType': { + description: 'Fa salire un Pokémon di un livello', }, - "AllPokemonLevelIncrementModifierType": { - description: "Aumenta il livello di tutti i Pokémon nel gruppo di 1", + 'AllPokemonLevelIncrementModifierType': { + description: 'Aumenta il livello di tutti i Pokémon nel gruppo di 1', }, - "PokemonBaseStatBoosterModifierType": { - description: "Aumenta {{statName}} di base del possessore del 10%", + 'PokemonBaseStatBoosterModifierType': { + description: 'Aumenta {{statName}} di base del possessore del 10%', }, - "AllPokemonFullHpRestoreModifierType": { - description: "Recupera il 100% dei PS per tutti i Pokémon", + 'AllPokemonFullHpRestoreModifierType': { + description: 'Recupera il 100% dei PS per tutti i Pokémon', }, - "AllPokemonFullReviveModifierType": { - description: "Rianima tutti i Pokémon esausti restituendogli tutti i PS", + 'AllPokemonFullReviveModifierType': { + description: 'Rianima tutti i Pokémon esausti restituendogli tutti i PS', }, - "MoneyRewardModifierType": { - description: "Garantisce una {{moneyMultiplier}} quantità di soldi (₽{{moneyAmount}})", + 'MoneyRewardModifierType': { + description: 'Garantisce una {{moneyMultiplier}} quantità di soldi (₽{{moneyAmount}})', extra: { - "small": "poca", - "moderate": "moderata", - "large": "grande", + 'small': 'poca', + 'moderate': 'moderata', + 'large': 'grande', }, }, - "ExpBoosterModifierType": { - description: "Aumenta il guadagno di Punti Esperienza del {{boostPercent}}%", + 'ExpBoosterModifierType': { + description: 'Aumenta il guadagno di Punti Esperienza del {{boostPercent}}%', }, - "PokemonExpBoosterModifierType": { - description: "Aumenta il guadagno di Punti Esperienza del possessore del {{boostPercent}}%", + 'PokemonExpBoosterModifierType': { + description: 'Aumenta il guadagno di Punti Esperienza del possessore del {{boostPercent}}%', }, - "PokemonFriendshipBoosterModifierType": { - description: "Aumenta del 50% il guadagno di amicizia per vittoria", + 'PokemonFriendshipBoosterModifierType': { + description: 'Aumenta del 50% il guadagno di amicizia per vittoria', }, - "PokemonMoveAccuracyBoosterModifierType": { - description: "Aumenta l'accuratezza delle mosse di {{accuracyAmount}} (massimo 100)", + 'PokemonMoveAccuracyBoosterModifierType': { + description: 'Aumenta l\'accuratezza delle mosse di {{accuracyAmount}} (massimo 100)', }, - "PokemonMultiHitModifierType": { - description: "Gli attacchi colpiscono una volta in più al costo di una riduzione di potenza del 60/75/82,5% per mossa", + 'PokemonMultiHitModifierType': { + description: 'Gli attacchi colpiscono una volta in più al costo di una riduzione di potenza del 60/75/82,5% per mossa', }, - "TmModifierType": { - name: "MT{{moveId}} - {{moveName}}", - description: "Insegna {{moveName}} a un Pokémon", + 'TmModifierType': { + name: 'MT{{moveId}} - {{moveName}}', + description: 'Insegna {{moveName}} a un Pokémon', }, - "EvolutionItemModifierType": { - description: "Fa evolvere determinate specie di Pokémon", + 'EvolutionItemModifierType': { + description: 'Fa evolvere determinate specie di Pokémon', }, - "FormChangeItemModifierType": { - description: "Fa cambiare forma a determinati Pokémon", + 'FormChangeItemModifierType': { + description: 'Fa cambiare forma a determinati Pokémon', }, - "FusePokemonModifierType": { - description: "Combina due Pokémon (trasferisce i poteri, divide le statistiche e i tipi base, condivide il pool di mosse)", + 'FusePokemonModifierType': { + description: 'Combina due Pokémon (trasferisce i poteri, divide le statistiche e i tipi base, condivide il pool di mosse)', }, - "TerastallizeModifierType": { - name: "Teralite {{teraType}}", - description: "Teracristallizza in {{teraType}} il possessore per massimo 10 battaglie", + 'TerastallizeModifierType': { + name: 'Teralite {{teraType}}', + description: 'Teracristallizza in {{teraType}} il possessore per massimo 10 battaglie', }, - "ContactHeldItemTransferChanceModifierType": { - description: "Quando si attacca, c'è una probabilità del {{chancePercent}}% che l'oggetto in possesso del nemico venga rubato", + 'ContactHeldItemTransferChanceModifierType': { + description: 'Quando si attacca, c\'è una probabilità del {{chancePercent}}% che l\'oggetto in possesso del nemico venga rubato', }, - "TurnHeldItemTransferModifierType": { - description: "Ogni turno, il possessore acquisisce un oggetto posseduto dal nemico", + 'TurnHeldItemTransferModifierType': { + description: 'Ogni turno, il possessore acquisisce un oggetto posseduto dal nemico', }, - "EnemyAttackStatusEffectChanceModifierType": { - description: "Aggiunge una probabilità del {{chancePercent}}% di infliggere {{statusEffect}} con le mosse d'attacco", + 'EnemyAttackStatusEffectChanceModifierType': { + description: 'Aggiunge una probabilità del {{chancePercent}}% di infliggere {{statusEffect}} con le mosse d\'attacco', }, - "EnemyEndureChanceModifierType": { - description: "Aggiunge una probabilità del {{probabilitàPercent}}% di resistere ad un colpo", + 'EnemyEndureChanceModifierType': { + description: 'Aggiunge una probabilità del {{probabilitàPercent}}% di resistere ad un colpo', }, - "RARE_CANDY": { name: "Caramella Rara" }, - "RARER_CANDY": { name: "Caramella Molto Rara" }, + 'RARE_CANDY': { name: 'Caramella Rara' }, + 'RARER_CANDY': { name: 'Caramella Molto Rara' }, - "MEGA_BRACELET": { name: "Megapolsiera", description: "Le Megapietre sono disponibili" }, - "DYNAMAX_BAND": { name: "Polsino Dynamax", description: "I Fungomax sono disponibili" }, - "TERA_ORB": { name: "Terasfera", description: "I Teraliti sono disponibili" }, + 'MEGA_BRACELET': { name: 'Megapolsiera', description: 'Le Megapietre sono disponibili' }, + 'DYNAMAX_BAND': { name: 'Polsino Dynamax', description: 'I Fungomax sono disponibili' }, + 'TERA_ORB': { name: 'Terasfera', description: 'I Teraliti sono disponibili' }, - "MAP": { name: "Mappa", description: "Permette di scegliere la propria strada a un bivio" }, + 'MAP': { name: 'Mappa', description: 'Permette di scegliere la propria strada a un bivio' }, - "POTION": { name: "Pozione" }, - "SUPER_POTION": { name: "Superpozione" }, - "HYPER_POTION": { name: "Iperpozione" }, - "MAX_POTION": { name: "Pozione Max" }, - "FULL_RESTORE": { name: "Ricarica Totale" }, + 'POTION': { name: 'Pozione' }, + 'SUPER_POTION': { name: 'Superpozione' }, + 'HYPER_POTION': { name: 'Iperpozione' }, + 'MAX_POTION': { name: 'Pozione Max' }, + 'FULL_RESTORE': { name: 'Ricarica Totale' }, - "REVIVE": { name: "Revitalizzante" }, - "MAX_REVIVE": { name: "Revitalizzante Max" }, + 'REVIVE': { name: 'Revitalizzante' }, + 'MAX_REVIVE': { name: 'Revitalizzante Max' }, - "FULL_HEAL": { name: "Cura Totale" }, + 'FULL_HEAL': { name: 'Cura Totale' }, - "SACRED_ASH": { name: "Cenere Magica" }, + 'SACRED_ASH': { name: 'Cenere Magica' }, - "REVIVER_SEED": { name: "Revitalseme", description: "Il possessore recupera 1/2 di PS in caso di svenimento" }, + 'REVIVER_SEED': { name: 'Revitalseme', description: 'Il possessore recupera 1/2 di PS in caso di svenimento' }, - "ETHER": { name: "Etere" }, - "MAX_ETHER": { name: "Etere Max" }, + 'ETHER': { name: 'Etere' }, + 'MAX_ETHER': { name: 'Etere Max' }, - "ELIXIR": { name: "Elisir" }, - "MAX_ELIXIR": { name: "Elisir Max" }, + 'ELIXIR': { name: 'Elisir' }, + 'MAX_ELIXIR': { name: 'Elisir Max' }, - "PP_UP": { name: "PP-su" }, - "PP_MAX": { name: "PP-max" }, + 'PP_UP': { name: 'PP-su' }, + 'PP_MAX': { name: 'PP-max' }, - "LURE": { name: "Profumo Invito" }, - "SUPER_LURE": { name: "Profumo Invito Super" }, - "MAX_LURE": { name: "Profumo Invito Max" }, + 'LURE': { name: 'Profumo Invito' }, + 'SUPER_LURE': { name: 'Profumo Invito Super' }, + 'MAX_LURE': { name: 'Profumo Invito Max' }, - "MEMORY_MUSHROOM": { name: "Fungo della Memoria", description: "Ricorda la mossa dimenticata di un Pokémon" }, + 'MEMORY_MUSHROOM': { name: 'Fungo della Memoria', description: 'Ricorda la mossa dimenticata di un Pokémon' }, - "EXP_SHARE": { name: "Condividi Esperienza", description: "Tutti i Pokémon della squadra ricevono il 20% dei Punti Esperienza dalla lotta anche se non vi hanno partecipato" }, - "EXP_BALANCE": { name: "Bilancia Esperienza", description: "Bilancia i Punti Esperienza ricevuti verso i Pokémon del gruppo di livello inferiore" }, + 'EXP_SHARE': { name: 'Condividi Esperienza', description: 'Tutti i Pokémon della squadra ricevono il 20% dei Punti Esperienza dalla lotta anche se non vi hanno partecipato' }, + 'EXP_BALANCE': { name: 'Bilancia Esperienza', description: 'Bilancia i Punti Esperienza ricevuti verso i Pokémon del gruppo di livello inferiore' }, - "OVAL_CHARM": { name: "Ovamuleto", description: "Quando più Pokémon partecipano a una battaglia, ognuno di essi riceve il 10% in più dell'esperienza totale" }, + 'OVAL_CHARM': { name: 'Ovamuleto', description: 'Quando più Pokémon partecipano a una battaglia, ognuno di essi riceve il 10% in più dell\'esperienza totale' }, - "EXP_CHARM": { name: "Esperienzamuleto" }, - "SUPER_EXP_CHARM": { name: "Esperienzamuleto Super" }, - "GOLDEN_EXP_CHARM": { name: "Esperienzamuleto Oro" }, + 'EXP_CHARM': { name: 'Esperienzamuleto' }, + 'SUPER_EXP_CHARM': { name: 'Esperienzamuleto Super' }, + 'GOLDEN_EXP_CHARM': { name: 'Esperienzamuleto Oro' }, - "LUCKY_EGG": { name: "Uovo Fortunato" }, - "GOLDEN_EGG": { name: "Uovo d'Oro" }, + 'LUCKY_EGG': { name: 'Uovo Fortunato' }, + 'GOLDEN_EGG': { name: 'Uovo d\'Oro' }, - "SOOTHE_BELL": { name: "Calmanella" }, + 'SOOTHE_BELL': { name: 'Calmanella' }, - "SOUL_DEW": { name: "Cuorugiada", description: "Aumenta del 10% l'influenza della natura di un Pokémon sulle sue statistiche (Aggiuntivo)" }, + 'SOUL_DEW': { name: 'Cuorugiada', description: 'Aumenta del 10% l\'influenza della natura di un Pokémon sulle sue statistiche (Aggiuntivo)' }, - "NUGGET": { name: "Pepita" }, - "BIG_NUGGET": { name: "Granpepita" }, - "RELIC_GOLD": { name: " Dobloantico" }, + 'NUGGET': { name: 'Pepita' }, + 'BIG_NUGGET': { name: 'Granpepita' }, + 'RELIC_GOLD': { name: ' Dobloantico' }, - "AMULET_COIN": { name: "Monetamuleto", description: "Aumenta le ricompense in denaro del 20%" }, - "GOLDEN_PUNCH": { name: "Pugno Dorato", description: "Garantisce il 50% dei danni inflitti come denaro" }, - "COIN_CASE": { name: " Salvadanaio", description: "Dopo ogni 10° battaglia, riceverete il 10% del vostro denaro in interessi" }, + 'AMULET_COIN': { name: 'Monetamuleto', description: 'Aumenta le ricompense in denaro del 20%' }, + 'GOLDEN_PUNCH': { name: 'Pugno Dorato', description: 'Garantisce il 50% dei danni inflitti come denaro' }, + 'COIN_CASE': { name: ' Salvadanaio', description: 'Dopo ogni 10° battaglia, riceverete il 10% del vostro denaro in interessi' }, - "LOCK_CAPSULE": { name: "Capsula Scrigno", description: "Permette di bloccare le rarità degli oggetti quando si fa un reroll degli oggetti" }, + 'LOCK_CAPSULE': { name: 'Capsula Scrigno', description: 'Permette di bloccare le rarità degli oggetti quando si fa un reroll degli oggetti' }, - "GRIP_CLAW": { name: "Presartigli" }, - "WIDE_LENS": { name: "Grandelente" }, + 'GRIP_CLAW': { name: 'Presartigli' }, + 'WIDE_LENS': { name: 'Grandelente' }, - "MULTI_LENS": { name: "Multilente" }, + 'MULTI_LENS': { name: 'Multilente' }, - "HEALING_CHARM": { name: "Curamuleto", description: "Aumenta del 10% l'efficacia delle mosse e degli oggetti che ripristinano i PS (escluse le rianimazioni)" }, - "CANDY_JAR": { name: "Barattolo di caramelle", description: "Aumenta di 1 il numero di livelli aggiunti dalle Caramelle Rare" }, + 'HEALING_CHARM': { name: 'Curamuleto', description: 'Aumenta del 10% l\'efficacia delle mosse e degli oggetti che ripristinano i PS (escluse le rianimazioni)' }, + 'CANDY_JAR': { name: 'Barattolo di caramelle', description: 'Aumenta di 1 il numero di livelli aggiunti dalle Caramelle Rare' }, - "BERRY_POUCH": { name: "Porta Bacche", description: "Aggiunge il 25% di possibilità che una bacca usata non venga consumata" }, + 'BERRY_POUCH': { name: 'Porta Bacche', description: 'Aggiunge il 25% di possibilità che una bacca usata non venga consumata' }, - "FOCUS_BAND": { name: "Bandana", description: "Chi ce l'ha ottiene il 10% di possibilità aggiuntivo di evitare un potenziale KO e rimanere con un solo PS" }, + 'FOCUS_BAND': { name: 'Bandana', description: 'Chi ce l\'ha ottiene il 10% di possibilità aggiuntivo di evitare un potenziale KO e rimanere con un solo PS' }, - "QUICK_CLAW": { name: "Rapidartigli", description: "Aggiunge una probabilità del 10% di muoversi per primi, indipendentemente dalla velocità (dopo la priorità)" }, + 'QUICK_CLAW': { name: 'Rapidartigli', description: 'Aggiunge una probabilità del 10% di muoversi per primi, indipendentemente dalla velocità (dopo la priorità)' }, - "KINGS_ROCK": { name: "Roccia di re", description: "Aggiunge il 10% di possibilità che una mossa d'attacco faccia tentennare l'avversario" }, + 'KINGS_ROCK': { name: 'Roccia di re', description: 'Aggiunge il 10% di possibilità che una mossa d\'attacco faccia tentennare l\'avversario' }, - "LEFTOVERS": { name: "Avanzi", description: "Ripristina 1/16 dei PS massimi di un Pokémon ogni turno" }, - "SHELL_BELL": { name: "Conchinella", description: "Guarisce 1/8 del danno inflitto a un Pokémon" }, + 'LEFTOVERS': { name: 'Avanzi', description: 'Ripristina 1/16 dei PS massimi di un Pokémon ogni turno' }, + 'SHELL_BELL': { name: 'Conchinella', description: 'Guarisce 1/8 del danno inflitto a un Pokémon' }, - "BATON": { name: "Staffetta", description: "Permette di trasmettere gli effetti quando si cambia Pokémon, aggirando anche le trappole" }, + 'BATON': { name: 'Staffetta', description: 'Permette di trasmettere gli effetti quando si cambia Pokémon, aggirando anche le trappole' }, - "SHINY_CHARM": { name: "Cromamuleto", description: "Misterioso amuleto luminoso che aumenta la probabilità di incontrare Pokémon cromatici" }, - "ABILITY_CHARM": { name: "Abilitamuleto", description: "Aumenta drasticamente la possibilità che un Pokémon selvatico abbia un'abilità nascosta" }, + 'SHINY_CHARM': { name: 'Cromamuleto', description: 'Misterioso amuleto luminoso che aumenta la probabilità di incontrare Pokémon cromatici' }, + 'ABILITY_CHARM': { name: 'Abilitamuleto', description: 'Aumenta drasticamente la possibilità che un Pokémon selvatico abbia un\'abilità nascosta' }, - "IV_SCANNER": { name: "Scanner IV", description: "Permette di scansionare gli IV dei Pokémon selvatici. Vengono rivelati 2 IV per pila. I migliori IV vengono mostrati per primi" }, + 'IV_SCANNER': { name: 'Scanner IV', description: 'Permette di scansionare gli IV dei Pokémon selvatici. Vengono rivelati 2 IV per pila. I migliori IV vengono mostrati per primi' }, - "DNA_SPLICERS": { name: " Cuneo DNA" }, + 'DNA_SPLICERS': { name: ' Cuneo DNA' }, - "MINI_BLACK_HOLE": { name: "Piccolo Buco Nero" }, + 'MINI_BLACK_HOLE': { name: 'Piccolo Buco Nero' }, - "GOLDEN_POKEBALL": { name: "Poké Ball Oro", description: "Aggiunge 1 opzione di oggetto extra alla fine di ogni battaglia" }, + 'GOLDEN_POKEBALL': { name: 'Poké Ball Oro', description: 'Aggiunge 1 opzione di oggetto extra alla fine di ogni battaglia' }, - "ENEMY_DAMAGE_BOOSTER": { name: "Gettone del Danno", description: "Aumenta il danno del 5%" }, - "ENEMY_DAMAGE_REDUCTION": { name: "Gettone della Protezione", description: "Riduce i danni ricevuti del 2.5%" }, - "ENEMY_HEAL": { name: "Gettone del Recupero", description: "Cura il 2% dei PS massimi ogni turno" }, - "ENEMY_ATTACK_POISON_CHANCE": { name: "Gettone del Veleno" }, - "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Gettone della Paralisi" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Gettone del Sonno" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Gettone del Congelamento" }, - "ENEMY_ATTACK_BURN_CHANCE": { name: "Gettone della Bruciatura" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Gettone Guarigione Completa", description: "Aggiunge una probabilità del 10% a ogni turno di curare una condizione di stato" }, - "ENEMY_ENDURE_CHANCE": { name: "Gettone di Resistenza" }, - "ENEMY_FUSED_CHANCE": { name: "Gettone della fusione", description: "Aggiunge l'1% di possibilità che un Pokémon selvatico sia una fusione" }, + 'ENEMY_DAMAGE_BOOSTER': { name: 'Gettone del Danno', description: 'Aumenta il danno del 5%' }, + 'ENEMY_DAMAGE_REDUCTION': { name: 'Gettone della Protezione', description: 'Riduce i danni ricevuti del 2.5%' }, + 'ENEMY_HEAL': { name: 'Gettone del Recupero', description: 'Cura il 2% dei PS massimi ogni turno' }, + 'ENEMY_ATTACK_POISON_CHANCE': { name: 'Gettone del Veleno' }, + 'ENEMY_ATTACK_PARALYZE_CHANCE': { name: 'Gettone della Paralisi' }, + 'ENEMY_ATTACK_SLEEP_CHANCE': { name: 'Gettone del Sonno' }, + 'ENEMY_ATTACK_FREEZE_CHANCE': { name: 'Gettone del Congelamento' }, + 'ENEMY_ATTACK_BURN_CHANCE': { name: 'Gettone della Bruciatura' }, + 'ENEMY_STATUS_EFFECT_HEAL_CHANCE': { name: 'Gettone Guarigione Completa', description: 'Aggiunge una probabilità del 10% a ogni turno di curare una condizione di stato' }, + 'ENEMY_ENDURE_CHANCE': { name: 'Gettone di Resistenza' }, + 'ENEMY_FUSED_CHANCE': { name: 'Gettone della fusione', description: 'Aggiunge l\'1% di possibilità che un Pokémon selvatico sia una fusione' }, }, TempBattleStatBoosterItem: { - "x_attack": "Attacco X", - "x_defense": "Difesa X", - "x_sp_atk": "Att. Speciale X", - "x_sp_def": "Dif. Speciale X", - "x_speed": "Velocità X", - "x_accuracy": "Precisione X", - "dire_hit": "Supercolpo", + 'x_attack': 'Attacco X', + 'x_defense': 'Difesa X', + 'x_sp_atk': 'Att. Speciale X', + 'x_sp_def': 'Dif. Speciale X', + 'x_speed': 'Velocità X', + 'x_accuracy': 'Precisione X', + 'dire_hit': 'Supercolpo', }, AttackTypeBoosterItem: { - "silk_scarf": "Sciarpa seta", - "black_belt": "Cinturanera", - "sharp_beak": "Beccaffilato", - "poison_barb": "Velenaculeo", - "soft_sand": "Sabbia soffice", - "hard_stone": "Pietradura", - "silver_powder": "Argenpolvere", - "spell_tag": "Spettrotarga", - "metal_coat": "Metalcopertura", - "charcoal": "Carbonella", - "mystic_water": "Acqua magica", - "miracle_seed": "Miracolseme", - "magnet": "Magnete", - "twisted_spoon": "Cucchiaio torto", - "never_melt_ice": "Gelomai", - "dragon_fang": "Dente di drago", - "black_glasses": "Occhialineri", - "fairy_feather": "Piuma fatata", + 'silk_scarf': 'Sciarpa seta', + 'black_belt': 'Cinturanera', + 'sharp_beak': 'Beccaffilato', + 'poison_barb': 'Velenaculeo', + 'soft_sand': 'Sabbia soffice', + 'hard_stone': 'Pietradura', + 'silver_powder': 'Argenpolvere', + 'spell_tag': 'Spettrotarga', + 'metal_coat': 'Metalcopertura', + 'charcoal': 'Carbonella', + 'mystic_water': 'Acqua magica', + 'miracle_seed': 'Miracolseme', + 'magnet': 'Magnete', + 'twisted_spoon': 'Cucchiaio torto', + 'never_melt_ice': 'Gelomai', + 'dragon_fang': 'Dente di drago', + 'black_glasses': 'Occhialineri', + 'fairy_feather': 'Piuma fatata', }, BaseStatBoosterItem: { - "hp_up": "PS-su", - "protein": "Proteina", - "iron": "Ferro", - "calcium": "Calcio", - "zinc": "Zinco", - "carbos": "Carburante", + 'hp_up': 'PS-su', + 'protein': 'Proteina', + 'iron': 'Ferro', + 'calcium': 'Calcio', + 'zinc': 'Zinco', + 'carbos': 'Carburante', }, EvolutionItem: { - "NONE": "Nessuno", + 'NONE': 'Nessuno', - "LINKING_CORD": "Filo dell'unione", - "SUN_STONE": "Pietrasolare", - "MOON_STONE": "Pietralunare", - "LEAF_STONE": "Pietrafoglia", - "FIRE_STONE": "Pietrafocaia", - "WATER_STONE": "Pietraidrica", - "THUNDER_STONE": "Pietratuono", - "ICE_STONE": "Pietragelo", - "DUSK_STONE": "Neropietra", - "DAWN_STONE": "Pietralbore", - "SHINY_STONE": "Pietrabrillo", - "CRACKED_POT": "Teiera rotta", - "SWEET_APPLE": "Dolcepomo", - "TART_APPLE": "Aspropomo", - "STRAWBERRY_SWEET": "Bonbonfragola", - "UNREMARKABLE_TEACUP": "Tazza dozzinale", + 'LINKING_CORD': 'Filo dell\'unione', + 'SUN_STONE': 'Pietrasolare', + 'MOON_STONE': 'Pietralunare', + 'LEAF_STONE': 'Pietrafoglia', + 'FIRE_STONE': 'Pietrafocaia', + 'WATER_STONE': 'Pietraidrica', + 'THUNDER_STONE': 'Pietratuono', + 'ICE_STONE': 'Pietragelo', + 'DUSK_STONE': 'Neropietra', + 'DAWN_STONE': 'Pietralbore', + 'SHINY_STONE': 'Pietrabrillo', + 'CRACKED_POT': 'Teiera rotta', + 'SWEET_APPLE': 'Dolcepomo', + 'TART_APPLE': 'Aspropomo', + 'STRAWBERRY_SWEET': 'Bonbonfragola', + 'UNREMARKABLE_TEACUP': 'Tazza dozzinale', - "CHIPPED_POT": "Teiera crepata", - "BLACK_AUGURITE": "Augite nera", - "GALARICA_CUFF": "Fascia Galarnoce", - "GALARICA_WREATH": "Corona Galarnoce", - "PEAT_BLOCK": "Blocco di torba", - "AUSPICIOUS_ARMOR": "Armatura fausta", - "MALICIOUS_ARMOR": "Armatura infausta", - "MASTERPIECE_TEACUP": "Tazza eccezionale", - "METAL_ALLOY": "Metallo composito", - "SCROLL_OF_DARKNESS": "Rotolo del Buio", - "SCROLL_OF_WATERS": "Rotolo dell'Acqua", - "SYRUPY_APPLE": "Sciroppomo", + 'CHIPPED_POT': 'Teiera crepata', + 'BLACK_AUGURITE': 'Augite nera', + 'GALARICA_CUFF': 'Fascia Galarnoce', + 'GALARICA_WREATH': 'Corona Galarnoce', + 'PEAT_BLOCK': 'Blocco di torba', + 'AUSPICIOUS_ARMOR': 'Armatura fausta', + 'MALICIOUS_ARMOR': 'Armatura infausta', + 'MASTERPIECE_TEACUP': 'Tazza eccezionale', + 'METAL_ALLOY': 'Metallo composito', + 'SCROLL_OF_DARKNESS': 'Rotolo del Buio', + 'SCROLL_OF_WATERS': 'Rotolo dell\'Acqua', + 'SYRUPY_APPLE': 'Sciroppomo', }, FormChangeItem: { - "NONE": "Nessuno", + 'NONE': 'Nessuno', - "ABOMASITE": "Abomasnowite", - "ABSOLITE": "Absolite", - "AERODACTYLITE": "Aerodactylite", - "AGGRONITE": "Aggronite", - "ALAKAZITE": "Alakazamite", - "ALTARIANITE": "Altarite", - "AMPHAROSITE": "Ampharosite", - "AUDINITE": "Audinite", - "BANETTITE": "Banettite", - "BEEDRILLITE": "Beedrillite", - "BLASTOISINITE": "Blastoisite", - "BLAZIKENITE": "Blazikenite", - "CAMERUPTITE": "Cameruptite", - "CHARIZARDITE_X": "Charizardite X", - "CHARIZARDITE_Y": "Charizardite Y", - "DIANCITE": "Diancite", - "GALLADITE": "Galladite", - "GARCHOMPITE": "Garchompite", - "GARDEVOIRITE": "Gardevoirite", - "GENGARITE": "Gengarite", - "GLALITITE": "Glalite", - "GYARADOSITE": "Gyaradosite", - "HERACRONITE": "Heracronite", - "HOUNDOOMINITE": "Houndoomite", - "KANGASKHANITE": "Kangaskhanite", - "LATIASITE": "Latiasite", - "LATIOSITE": "Latiosite", - "LOPUNNITE": "Lopunnite", - "LUCARIONITE": "Lucarite", - "MANECTITE": "Manectricite", - "MAWILITE": "Mawilite", - "MEDICHAMITE": "Medichamite", - "METAGROSSITE": "Metagrossite", - "MEWTWONITE_X": "Mewtwoite X", - "MEWTWONITE_Y": "Mewtwoite Y", - "PIDGEOTITE": "Pidgeotite", - "PINSIRITE": "Pinsirite", - "RAYQUAZITE": "Rayquazite", - "SABLENITE": "Sableyite", - "SALAMENCITE": "Salamencite", - "SCEPTILITE": "Sceptilite", - "SCIZORITE": "Scizorite", - "SHARPEDONITE": "Sharpedite", - "SLOWBRONITE": "Slowbroite", - "STEELIXITE": "Steelixite", - "SWAMPERTITE": "Swampertite", - "TYRANITARITE": "Tyranitarite", - "VENUSAURITE": "Venusaurite", + 'ABOMASITE': 'Abomasnowite', + 'ABSOLITE': 'Absolite', + 'AERODACTYLITE': 'Aerodactylite', + 'AGGRONITE': 'Aggronite', + 'ALAKAZITE': 'Alakazamite', + 'ALTARIANITE': 'Altarite', + 'AMPHAROSITE': 'Ampharosite', + 'AUDINITE': 'Audinite', + 'BANETTITE': 'Banettite', + 'BEEDRILLITE': 'Beedrillite', + 'BLASTOISINITE': 'Blastoisite', + 'BLAZIKENITE': 'Blazikenite', + 'CAMERUPTITE': 'Cameruptite', + 'CHARIZARDITE_X': 'Charizardite X', + 'CHARIZARDITE_Y': 'Charizardite Y', + 'DIANCITE': 'Diancite', + 'GALLADITE': 'Galladite', + 'GARCHOMPITE': 'Garchompite', + 'GARDEVOIRITE': 'Gardevoirite', + 'GENGARITE': 'Gengarite', + 'GLALITITE': 'Glalite', + 'GYARADOSITE': 'Gyaradosite', + 'HERACRONITE': 'Heracronite', + 'HOUNDOOMINITE': 'Houndoomite', + 'KANGASKHANITE': 'Kangaskhanite', + 'LATIASITE': 'Latiasite', + 'LATIOSITE': 'Latiosite', + 'LOPUNNITE': 'Lopunnite', + 'LUCARIONITE': 'Lucarite', + 'MANECTITE': 'Manectricite', + 'MAWILITE': 'Mawilite', + 'MEDICHAMITE': 'Medichamite', + 'METAGROSSITE': 'Metagrossite', + 'MEWTWONITE_X': 'Mewtwoite X', + 'MEWTWONITE_Y': 'Mewtwoite Y', + 'PIDGEOTITE': 'Pidgeotite', + 'PINSIRITE': 'Pinsirite', + 'RAYQUAZITE': 'Rayquazite', + 'SABLENITE': 'Sableyite', + 'SALAMENCITE': 'Salamencite', + 'SCEPTILITE': 'Sceptilite', + 'SCIZORITE': 'Scizorite', + 'SHARPEDONITE': 'Sharpedite', + 'SLOWBRONITE': 'Slowbroite', + 'STEELIXITE': 'Steelixite', + 'SWAMPERTITE': 'Swampertite', + 'TYRANITARITE': 'Tyranitarite', + 'VENUSAURITE': 'Venusaurite', - "BLUE_ORB": "Gemma Blu", - "RED_ORB": "Gemma Rossa", - "SHARP_METEORITE": "Meteorite Tagliente", - "HARD_METEORITE": "Meteorite Dura", - "SMOOTH_METEORITE": "Meteorite Liscia", - "ADAMANT_CRYSTAL": "Adamasferoide", - "LUSTROUS_ORB": "Splendisfera", - "GRISEOUS_CORE": "Grigiosferoide", - "REVEAL_GLASS": "Verispecchio", - "GRACIDEA": "Gracidea", - "MAX_MUSHROOMS": "Fungomax", - "DARK_STONE": "Scurolite", - "LIGHT_STONE": "Chiarolite", - "PRISON_BOTTLE": "Vaso del Vincolo", - "N_LUNARIZER": "Necrolunix", - "N_SOLARIZER": "Necrosolix", - "RUSTED_SWORD": "Spada Rovinata", - "RUSTED_SHIELD": "Scudo Rovinato", - "ICY_REINS_OF_UNITY": "Briglie Legame Giaccio", - "SHADOW_REINS_OF_UNITY": "Briglie legame Ombra", - "WELLSPRING_MASK": "Maschera Pozzo", - "HEARTHFLAME_MASK": "Maschera Focolare", - "CORNERSTONE_MASK": "Maschera Fondamenta", - "SHOCK_DRIVE": "Voltmodulo", - "BURN_DRIVE": "Piromodulo", - "CHILL_DRIVE": "Gelomodulo", - "DOUSE_DRIVE": "Idromodulo", + 'BLUE_ORB': 'Gemma Blu', + 'RED_ORB': 'Gemma Rossa', + 'SHARP_METEORITE': 'Meteorite Tagliente', + 'HARD_METEORITE': 'Meteorite Dura', + 'SMOOTH_METEORITE': 'Meteorite Liscia', + 'ADAMANT_CRYSTAL': 'Adamasferoide', + 'LUSTROUS_ORB': 'Splendisfera', + 'GRISEOUS_CORE': 'Grigiosferoide', + 'REVEAL_GLASS': 'Verispecchio', + 'GRACIDEA': 'Gracidea', + 'MAX_MUSHROOMS': 'Fungomax', + 'DARK_STONE': 'Scurolite', + 'LIGHT_STONE': 'Chiarolite', + 'PRISON_BOTTLE': 'Vaso del Vincolo', + 'N_LUNARIZER': 'Necrolunix', + 'N_SOLARIZER': 'Necrosolix', + 'RUSTED_SWORD': 'Spada Rovinata', + 'RUSTED_SHIELD': 'Scudo Rovinato', + 'ICY_REINS_OF_UNITY': 'Briglie Legame Giaccio', + 'SHADOW_REINS_OF_UNITY': 'Briglie legame Ombra', + 'WELLSPRING_MASK': 'Maschera Pozzo', + 'HEARTHFLAME_MASK': 'Maschera Focolare', + 'CORNERSTONE_MASK': 'Maschera Fondamenta', + 'SHOCK_DRIVE': 'Voltmodulo', + 'BURN_DRIVE': 'Piromodulo', + 'CHILL_DRIVE': 'Gelomodulo', + 'DOUSE_DRIVE': 'Idromodulo', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/it/move.ts b/src/locales/it/move.ts index 85babbfd36b..a3ccb87b451 100644 --- a/src/locales/it/move.ts +++ b/src/locales/it/move.ts @@ -1,3812 +1,3812 @@ -import { MoveTranslationEntries } from "#app/plugins/i18n"; +import { MoveTranslationEntries } from '#app/plugins/i18n'; export const move: MoveTranslationEntries = { pound: { - name: "Botta", - effect: "Colpisce il nemico con la coda o le zampe anteriori.", + name: 'Botta', + effect: 'Colpisce il nemico con la coda o le zampe anteriori.', }, karateChop: { - name: "Colpokarate", - effect: "Colpisce il nemico con un colpo netto. Probabile brutto colpo.", + name: 'Colpokarate', + effect: 'Colpisce il nemico con un colpo netto. Probabile brutto colpo.', }, doubleSlap: { - name: "Doppiasberla", - effect: "Schiaffeggia il nemico da due a cinque volte di fila.", + name: 'Doppiasberla', + effect: 'Schiaffeggia il nemico da due a cinque volte di fila.', }, cometPunch: { - name: "Cometapugno", - effect: "Colpisce il nemico con una scarica di pugni da due a cinque volte di fila.", + name: 'Cometapugno', + effect: 'Colpisce il nemico con una scarica di pugni da due a cinque volte di fila.', }, megaPunch: { - name: "Megapugno", - effect: "Colpisce il nemico con un pugno poderoso.", + name: 'Megapugno', + effect: 'Colpisce il nemico con un pugno poderoso.', }, payDay: { - name: "Giornopaga", - effect: "Colpisce il nemico con una gran quantità di monete recuperabili dopo la lotta.", + name: 'Giornopaga', + effect: 'Colpisce il nemico con una gran quantità di monete recuperabili dopo la lotta.', }, firePunch: { - name: "Fuocopugno", - effect: "Colpisce il nemico con un pugno ardente che può scottarlo.", + name: 'Fuocopugno', + effect: 'Colpisce il nemico con un pugno ardente che può scottarlo.', }, icePunch: { - name: "Gelopugno", - effect: "Colpisce il nemico con un pugno di ghiaccio che può congelarlo.", + name: 'Gelopugno', + effect: 'Colpisce il nemico con un pugno di ghiaccio che può congelarlo.', }, thunderPunch: { - name: "Tuonopugno", - effect: "Colpisce il nemico con un pugno elettrico che può paralizzarlo.", + name: 'Tuonopugno', + effect: 'Colpisce il nemico con un pugno elettrico che può paralizzarlo.', }, scratch: { - name: "Graffio", - effect: "Infligge danni al nemico con artigli acuminati, duri e affilati.", + name: 'Graffio', + effect: 'Infligge danni al nemico con artigli acuminati, duri e affilati.', }, viseGrip: { - name: "Presa", - effect: "Stringe il nemico in una morsa usando enormi e possenti tenaglie.", + name: 'Presa', + effect: 'Stringe il nemico in una morsa usando enormi e possenti tenaglie.', }, guillotine: { - name: "Ghigliottina", - effect: "Attacca il nemico con pericolose tenaglie. Se l'attacco va a segno, il nemico va subito KO.", + name: 'Ghigliottina', + effect: 'Attacca il nemico con pericolose tenaglie. Se l\'attacco va a segno, il nemico va subito KO.', }, razorWind: { - name: "Ventagliente", - effect: "Chi la usa genera un turbine al primo turno e attacca al secondo. Probabile brutto colpo.", + name: 'Ventagliente', + effect: 'Chi la usa genera un turbine al primo turno e attacca al secondo. Probabile brutto colpo.', }, swordsDance: { - name: "Danzaspada", - effect: "Danza frenetica che incrementa lo spirito combattivo. Chi la usa aumenta di molto il suo Attacco.", + name: 'Danzaspada', + effect: 'Danza frenetica che incrementa lo spirito combattivo. Chi la usa aumenta di molto il suo Attacco.', }, cut: { - name: "Taglio", - effect: "Attacca il nemico con artigli o falci affilate. Fuori dalla lotta si usa per tagliare piccoli alberi.", + name: 'Taglio', + effect: 'Attacca il nemico con artigli o falci affilate. Fuori dalla lotta si usa per tagliare piccoli alberi.', }, gust: { - name: "Raffica", - effect: "Infligge danni al nemico con una folata di vento sollevata dalle ali.", + name: 'Raffica', + effect: 'Infligge danni al nemico con una folata di vento sollevata dalle ali.', }, wingAttack: { - name: "Attacco d'Ala", - effect: "Infligge danni al nemico spiegando delle grandi ali possenti.", + name: 'Attacco d\'Ala', + effect: 'Infligge danni al nemico spiegando delle grandi ali possenti.', }, whirlwind: { - name: "Turbine", - effect: "Il bersaglio è spazzato via ed è costretto a lasciare il posto ad un altro. Se è selvatico, la lotta finisce.", + name: 'Turbine', + effect: 'Il bersaglio è spazzato via ed è costretto a lasciare il posto ad un altro. Se è selvatico, la lotta finisce.', }, fly: { - name: "Volo", - effect: "Chi la usa si alza in volo per attaccare al turno seguente. Fuori dalla lotta permette di volare in città già visitate.", + name: 'Volo', + effect: 'Chi la usa si alza in volo per attaccare al turno seguente. Fuori dalla lotta permette di volare in città già visitate.', }, bind: { - name: "Legatutto", - effect: "Lega e stritola il nemico per quattro o cinque turni con tentacoli o con un corpo lungo.", + name: 'Legatutto', + effect: 'Lega e stritola il nemico per quattro o cinque turni con tentacoli o con un corpo lungo.', }, slam: { - name: "Schianto", - effect: "Infligge danni al nemico con una coda, una liana o simili.", + name: 'Schianto', + effect: 'Infligge danni al nemico con una coda, una liana o simili.', }, vineWhip: { - name: "Frustata", - effect: "Infligge danni al nemico con liane sottili simili a fruste.", + name: 'Frustata', + effect: 'Infligge danni al nemico con liane sottili simili a fruste.', }, stomp: { - name: "Pestone", - effect: "Colpisce il nemico con un grosso piede e può anche farlo tentennare.", + name: 'Pestone', + effect: 'Colpisce il nemico con un grosso piede e può anche farlo tentennare.', }, doubleKick: { - name: "Doppiocalcio", - effect: "Colpisce il nemico due volte con un paio di rapidi calci inferti con entrambi i piedi.", + name: 'Doppiocalcio', + effect: 'Colpisce il nemico due volte con un paio di rapidi calci inferti con entrambi i piedi.', }, megaKick: { - name: "Megacalcio", - effect: "Colpisce il nemico con un calcio sferrato con la forza di muscoli poderosi.", + name: 'Megacalcio', + effect: 'Colpisce il nemico con un calcio sferrato con la forza di muscoli poderosi.', }, jumpKick: { - name: "Calciosalto", - effect: "Permette di saltare in alto per attaccare con un calcio. Se non va a buon fine, chi la usa si ferisce.", + name: 'Calciosalto', + effect: 'Permette di saltare in alto per attaccare con un calcio. Se non va a buon fine, chi la usa si ferisce.', }, rollingKick: { - name: "Calciorullo", - effect: "Chi la usa infierisce sul nemico con un calcio rotante. Può anche farlo tentennare.", + name: 'Calciorullo', + effect: 'Chi la usa infierisce sul nemico con un calcio rotante. Può anche farlo tentennare.', }, sandAttack: { - name: "Turbosabbia", - effect: "Getta sabbia in faccia al nemico e ne riduce la precisione.", + name: 'Turbosabbia', + effect: 'Getta sabbia in faccia al nemico e ne riduce la precisione.', }, headbutt: { - name: "Bottintesta", - effect: "Chi la usa si lancia diritto di testa contro il nemico. Può anche far tentennare.", + name: 'Bottintesta', + effect: 'Chi la usa si lancia diritto di testa contro il nemico. Può anche far tentennare.', }, hornAttack: { - name: "Incornata", - effect: "Danneggia il nemico infilzandolo con un corno affilato.", + name: 'Incornata', + effect: 'Danneggia il nemico infilzandolo con un corno affilato.', }, furyAttack: { - name: "Furia", - effect: "Infilza il nemico con corna affilate o un becco da due a cinque volte di fila.", + name: 'Furia', + effect: 'Infilza il nemico con corna affilate o un becco da due a cinque volte di fila.', }, hornDrill: { - name: "Perforcorno", - effect: "Colpisce il nemico con un corno perforante come un trapano. Se il colpo va a segno, il nemico va KO.", + name: 'Perforcorno', + effect: 'Colpisce il nemico con un corno perforante come un trapano. Se il colpo va a segno, il nemico va KO.', }, tackle: { - name: "Azione", - effect: "Attacco fisico che colpisce il nemico investendolo con tutto il corpo.", + name: 'Azione', + effect: 'Attacco fisico che colpisce il nemico investendolo con tutto il corpo.', }, bodySlam: { - name: "Corposcontro", - effect: "Chi la usa carica il nemico con tutto il corpo. Può causarne anche la paralisi.", + name: 'Corposcontro', + effect: 'Chi la usa carica il nemico con tutto il corpo. Può causarne anche la paralisi.', }, wrap: { - name: "Avvolgibotta", - effect: "Avvolge e stritola il nemico con un corpo lungo o con piante rampicanti per quattro o cinque turni.", + name: 'Avvolgibotta', + effect: 'Avvolge e stritola il nemico con un corpo lungo o con piante rampicanti per quattro o cinque turni.', }, takeDown: { - name: "Riduttore", - effect: "Carica spericolata con tutto il corpo contro il nemico. Danneggia un po' anche chi la usa.", + name: 'Riduttore', + effect: 'Carica spericolata con tutto il corpo contro il nemico. Danneggia un po\' anche chi la usa.', }, thrash: { - name: "Colpo", - effect: "Assale e attacca il nemico per due o tre turni, ma confonde chi la usa.", + name: 'Colpo', + effect: 'Assale e attacca il nemico per due o tre turni, ma confonde chi la usa.', }, doubleEdge: { - name: "Sdoppiatore", - effect: "Carica spietata e pericolosa che danneggia molto anche chi la usa.", + name: 'Sdoppiatore', + effect: 'Carica spietata e pericolosa che danneggia molto anche chi la usa.', }, tailWhip: { - name: "Colpocoda", - effect: "Chi la usa agita la coda per distrarre i nemici, riducendone la Difesa.", + name: 'Colpocoda', + effect: 'Chi la usa agita la coda per distrarre i nemici, riducendone la Difesa.', }, poisonSting: { - name: "Velenospina", - effect: "Colpisce il nemico con un aculeo tossico che può anche avvelenarlo.", + name: 'Velenospina', + effect: 'Colpisce il nemico con un aculeo tossico che può anche avvelenarlo.', }, twineedle: { - name: "Doppio Ago", - effect: "Colpisce il nemico due volte di seguito con un paio di aghi. Può anche avvelenarlo.", + name: 'Doppio Ago', + effect: 'Colpisce il nemico due volte di seguito con un paio di aghi. Può anche avvelenarlo.', }, pinMissile: { - name: "Missilspillo", - effect: "Il nemico viene colpito da due a cinque volte con spilli appuntiti in rapida successione.", + name: 'Missilspillo', + effect: 'Il nemico viene colpito da due a cinque volte con spilli appuntiti in rapida successione.', }, leer: { - name: "Fulmisguardo", - effect: "Il nemico viene guardato con sguardo intimidatorio da occhi acuti. Viene ridotta la difesa dell'avversario.", + name: 'Fulmisguardo', + effect: 'Il nemico viene guardato con sguardo intimidatorio da occhi acuti. Viene ridotta la difesa dell\'avversario.', }, bite: { - name: "Morso", - effect: "Il nemico viene morso da denti affilatissimi che possono farlo tentennare.", + name: 'Morso', + effect: 'Il nemico viene morso da denti affilatissimi che possono farlo tentennare.', }, growl: { - name: "Ruggito", - effect: "Il Pokémon ruggisce con cattiveria. Viene ridotto l'attacco dell'avversario.", + name: 'Ruggito', + effect: 'Il Pokémon ruggisce con cattiveria. Viene ridotto l\'attacco dell\'avversario.', }, roar: { - name: "Boato", - effect: "Il bersaglio è costretto a lasciare il campo e viene sostituito. Mette fine alle lotte contro Pokémon selvatici.", + name: 'Boato', + effect: 'Il bersaglio è costretto a lasciare il campo e viene sostituito. Mette fine alle lotte contro Pokémon selvatici.', }, sing: { - name: "Canto", - effect: "Una ninna nanna è cantata con voce calma per far addormentare il nemico.", + name: 'Canto', + effect: 'Una ninna nanna è cantata con voce calma per far addormentare il nemico.', }, supersonic: { - name: "Supersuono", - effect: "Chi la usa genera dal proprio corpo strane onde acustiche che possono confondere il nemico.", + name: 'Supersuono', + effect: 'Chi la usa genera dal proprio corpo strane onde acustiche che possono confondere il nemico.', }, sonicBoom: { - name: "Sonicboom", - effect: "Il nemico viene colpito con un suono distruttivo che infligge un danno sempre 20 PS.", + name: 'Sonicboom', + effect: 'Il nemico viene colpito con un suono distruttivo che infligge un danno sempre 20 PS.', }, disable: { - name: "Inibitore", - effect: "Per quattro turni impedisce al bersaglio di riutilizzare l'ultima mossa usata.", + name: 'Inibitore', + effect: 'Per quattro turni impedisce al bersaglio di riutilizzare l\'ultima mossa usata.', }, acid: { - name: "Acido", - effect: "Colpisce i nemici intorno spruzzando un acido corrosivo. Può anche ridurne la Difesa Speciale.", + name: 'Acido', + effect: 'Colpisce i nemici intorno spruzzando un acido corrosivo. Può anche ridurne la Difesa Speciale.', }, ember: { - name: "Braciere", - effect: "Il Pokémon attacca con piccole fiamme. Possono scottare il nemico.", + name: 'Braciere', + effect: 'Il Pokémon attacca con piccole fiamme. Possono scottare il nemico.', }, flamethrower: { - name: "Lanciafiamme", - effect: "Il nemico viene colpito da intense fiammate che possono anche scottarlo.", + name: 'Lanciafiamme', + effect: 'Il nemico viene colpito da intense fiammate che possono anche scottarlo.', }, mist: { - name: "Nebbia", - effect: "Chi la usa attira una nebbia che blocca la riduzione alle statistiche della sua squadra per cinque turni.", + name: 'Nebbia', + effect: 'Chi la usa attira una nebbia che blocca la riduzione alle statistiche della sua squadra per cinque turni.', }, waterGun: { - name: "Pistolacqua", - effect: "Il nemico è colpito da un potente getto d'acqua.", + name: 'Pistolacqua', + effect: 'Il nemico è colpito da un potente getto d\'acqua.', }, hydroPump: { - name: "Idropompa", - effect: "Il nemico è travolto da un potente getto d'acqua spruzzato ad altissima pressione.", + name: 'Idropompa', + effect: 'Il nemico è travolto da un potente getto d\'acqua spruzzato ad altissima pressione.', }, surf: { - name: "Surf", - effect: "Un'onda enorme sommerge il campo di lotta. Fuori dalla lotta si usa per spostarsi sull'acqua.", + name: 'Surf', + effect: 'Un\'onda enorme sommerge il campo di lotta. Fuori dalla lotta si usa per spostarsi sull\'acqua.', }, iceBeam: { - name: "Geloraggio", - effect: "Il nemico è colpito da un raggio di energia gelida che può anche congelarlo.", + name: 'Geloraggio', + effect: 'Il nemico è colpito da un raggio di energia gelida che può anche congelarlo.', }, blizzard: { - name: "Bora", - effect: "Colpisce i bersagli con una tremenda tempesta di ghiaccio che può anche congelarli.", + name: 'Bora', + effect: 'Colpisce i bersagli con una tremenda tempesta di ghiaccio che può anche congelarli.', }, psybeam: { - name: "Psicoraggio", - effect: "Il nemico è attaccato con un raggio psichico. Può anche lasciare il nemico confuso.", + name: 'Psicoraggio', + effect: 'Il nemico è attaccato con un raggio psichico. Può anche lasciare il nemico confuso.', }, bubbleBeam: { - name: "Bollaraggio", - effect: "Colpisce il nemico con una forte scarica di bolle. Può anche ridurne la Velocità.", + name: 'Bollaraggio', + effect: 'Colpisce il nemico con una forte scarica di bolle. Può anche ridurne la Velocità.', }, auroraBeam: { - name: "Raggiaurora", - effect: "Il nemico viene colpito da un fascio color arcobaleno. Può ridurre l'attacco dell'avversario.", + name: 'Raggiaurora', + effect: 'Il nemico viene colpito da un fascio color arcobaleno. Può ridurre l\'attacco dell\'avversario.', }, hyperBeam: { - name: "Iper Raggio", - effect: "Colpisce il nemico con un potente raggio. Chi la usa salta il turno successivo per recuperare energia.", + name: 'Iper Raggio', + effect: 'Colpisce il nemico con un potente raggio. Chi la usa salta il turno successivo per recuperare energia.', }, peck: { - name: "Beccata", - effect: "Colpisce il nemico con un becco appuntito o un corno.", + name: 'Beccata', + effect: 'Colpisce il nemico con un becco appuntito o un corno.', }, drillPeck: { - name: "Perforbecco", - effect: "Attacco a spirale con un becco aguzzo che fa da trapano.", + name: 'Perforbecco', + effect: 'Attacco a spirale con un becco aguzzo che fa da trapano.', }, submission: { - name: "Sottomissione", - effect: "Chi la usa carica il nemico in modo spericolato, ma danneggia anche se stesso.", + name: 'Sottomissione', + effect: 'Chi la usa carica il nemico in modo spericolato, ma danneggia anche se stesso.', }, lowKick: { - name: "Colpo Basso", - effect: "Un calcio basso e potente che fa cadere il nemico. Danneggia maggiormente i nemici più pesanti.", + name: 'Colpo Basso', + effect: 'Un calcio basso e potente che fa cadere il nemico. Danneggia maggiormente i nemici più pesanti.', }, counter: { - name: "Contrattacco", - effect: "Una mossa di ritorsione che contrasta qualsiasi attacco fisico, infliggendo il doppio dei danni subiti.", + name: 'Contrattacco', + effect: 'Una mossa di ritorsione che contrasta qualsiasi attacco fisico, infliggendo il doppio dei danni subiti.', }, seismicToss: { - name: "Movimento Sismico", - effect: "Colpisce il bersaglio con la forza di gravità. Infligge un danno pari al livello di chi la usa.", + name: 'Movimento Sismico', + effect: 'Colpisce il bersaglio con la forza di gravità. Infligge un danno pari al livello di chi la usa.', }, strength: { - name: "Forza", - effect: "Colpisce il nemico con un'enorme energia. Fuori dalla lotta si usa per spostare i massi.", + name: 'Forza', + effect: 'Colpisce il nemico con un\'enorme energia. Fuori dalla lotta si usa per spostare i massi.', }, absorb: { - name: "Assorbimento", - effect: "Mossa che assorbe PS. Chi la usa recupera una quantità di PS pari alla metà del danno inferto.", + name: 'Assorbimento', + effect: 'Mossa che assorbe PS. Chi la usa recupera una quantità di PS pari alla metà del danno inferto.', }, megaDrain: { - name: "Megassorbimento", - effect: "Mossa che assorbe PS. Chi la usa recupera un quantità di PS pari alla metà del danno inferto.", + name: 'Megassorbimento', + effect: 'Mossa che assorbe PS. Chi la usa recupera un quantità di PS pari alla metà del danno inferto.', }, leechSeed: { - name: "Parassiseme", - effect: "Vengono piantati semi sul bersaglio. Questi sottraggono PS a ogni turno permettendo a chi la usa di curarsi.", + name: 'Parassiseme', + effect: 'Vengono piantati semi sul bersaglio. Questi sottraggono PS a ogni turno permettendo a chi la usa di curarsi.', }, growth: { - name: "Crescita", - effect: "Provoca la crescita immediata del corpo e l'aumento dell'Attacco e dell'Attacco Speciale di chi la usa.", + name: 'Crescita', + effect: 'Provoca la crescita immediata del corpo e l\'aumento dell\'Attacco e dell\'Attacco Speciale di chi la usa.', }, razorLeaf: { - name: "Foglielama", - effect: "Foglie taglienti sferzano i nemici intorno. Probabile brutto colpo.", + name: 'Foglielama', + effect: 'Foglie taglienti sferzano i nemici intorno. Probabile brutto colpo.', }, solarBeam: { - name: "Solarraggio", - effect: "Chi la usa assorbe luce al primo turno per proiettare un raggio intenso al turno successivo.", + name: 'Solarraggio', + effect: 'Chi la usa assorbe luce al primo turno per proiettare un raggio intenso al turno successivo.', }, poisonPowder: { - name: "Velenpolvere", - effect: "Una nube di polvere velenosa è sparsa sul nemico. Può avvelenare il bersaglio.", + name: 'Velenpolvere', + effect: 'Una nube di polvere velenosa è sparsa sul nemico. Può avvelenare il bersaglio.', }, stunSpore: { - name: "Paralizzante", - effect: "Investe il bersaglio con una nuvola di polvere che paralizza.", + name: 'Paralizzante', + effect: 'Investe il bersaglio con una nuvola di polvere che paralizza.', }, sleepPowder: { - name: "Sonnifero", - effect: "Investe il bersaglio con una grande nuvola di polvere soporifera che lo fa addormentare.", + name: 'Sonnifero', + effect: 'Investe il bersaglio con una grande nuvola di polvere soporifera che lo fa addormentare.', }, petalDance: { - name: "Petalodanza", - effect: "Attacca il nemico cospargendolo di petali per due o tre turni, ma chi la usa rimane confuso.", + name: 'Petalodanza', + effect: 'Attacca il nemico cospargendolo di petali per due o tre turni, ma chi la usa rimane confuso.', }, stringShot: { - name: "Millebave", - effect: "Chi la usa produce della seta che avvolge i nemici e ne riduce la Velocità.", + name: 'Millebave', + effect: 'Chi la usa produce della seta che avvolge i nemici e ne riduce la Velocità.', }, dragonRage: { - name: "Ira di Drago", - effect: "Colpisce il nemico con un'onda d'urto generata dall'ira. Questo attacco provoca sempre un danno di 40 PS.", + name: 'Ira di Drago', + effect: 'Colpisce il nemico con un\'onda d\'urto generata dall\'ira. Questo attacco provoca sempre un danno di 40 PS.', }, fireSpin: { - name: "Turbofuoco", - effect: "Intrappola il bersaglio in un turbine di fuoco che dura per quattro o cinque turni.", + name: 'Turbofuoco', + effect: 'Intrappola il bersaglio in un turbine di fuoco che dura per quattro o cinque turni.', }, thunderShock: { - name: "Tuonoshock", - effect: "Danneggia il bersaglio con una scarica elettrica che può anche paralizzarlo.", + name: 'Tuonoshock', + effect: 'Danneggia il bersaglio con una scarica elettrica che può anche paralizzarlo.', }, thunderbolt: { - name: "Fulmine", - effect: "Il bersaglio viene colpito da una potente scarica elettrica che può anche paralizzarlo.", + name: 'Fulmine', + effect: 'Il bersaglio viene colpito da una potente scarica elettrica che può anche paralizzarlo.', }, thunderWave: { - name: "Tuononda", - effect: "Il nemico viene colpito da una debole scarica elettrica che, se va a segno, ne causa la paralisi.", + name: 'Tuononda', + effect: 'Il nemico viene colpito da una debole scarica elettrica che, se va a segno, ne causa la paralisi.', }, thunder: { - name: "Tuono", - effect: "Il nemico è colpito da un lampo molto violento che può anche paralizzarlo.", + name: 'Tuono', + effect: 'Il nemico è colpito da un lampo molto violento che può anche paralizzarlo.', }, rockThrow: { - name: "Sassata", - effect: "Chi la usa solleva una roccia e la lancia contro il nemico.", + name: 'Sassata', + effect: 'Chi la usa solleva una roccia e la lancia contro il nemico.', }, earthquake: { - name: "Terremoto", - effect: "Chi la usa provoca un potente sisma che colpisce gli altri Pokémon in campo.", + name: 'Terremoto', + effect: 'Chi la usa provoca un potente sisma che colpisce gli altri Pokémon in campo.', }, fissure: { - name: "Abisso", - effect: "Chi la usa crea una spaccatura nel terreno e cerca di gettarvici dentro il nemico. Se va a segno, il nemico va KO.", + name: 'Abisso', + effect: 'Chi la usa crea una spaccatura nel terreno e cerca di gettarvici dentro il nemico. Se va a segno, il nemico va KO.', }, dig: { - name: "Fossa", - effect: "Chi la usa scava al primo turno e attacca al successivo. Fuori dalla lotta fa uscire da alcuni luoghi.", + name: 'Fossa', + effect: 'Chi la usa scava al primo turno e attacca al successivo. Fuori dalla lotta fa uscire da alcuni luoghi.', }, toxic: { - name: "Tossina", - effect: "Una mossa che lascia l'obiettivo gravemente avvelenato. Il danno da veleno peggiora ad ogni turno.", + name: 'Tossina', + effect: 'Una mossa che lascia l\'obiettivo gravemente avvelenato. Il danno da veleno peggiora ad ogni turno.', }, confusion: { - name: "Confusione", - effect: "Colpisce il nemico con una leggera forza telecinetica e può anche confonderlo.", + name: 'Confusione', + effect: 'Colpisce il nemico con una leggera forza telecinetica e può anche confonderlo.', }, psychic: { - name: "Psichico", - effect: "Il nemico viene colpito da una potente forza telecinetica che può anche ridurne la Difesa Speciale.", + name: 'Psichico', + effect: 'Il nemico viene colpito da una potente forza telecinetica che può anche ridurne la Difesa Speciale.', }, hypnosis: { - name: "Ipnosi", - effect: "Chi la usa si avvale della suggestione ipnotica per far addormentare il nemico.", + name: 'Ipnosi', + effect: 'Chi la usa si avvale della suggestione ipnotica per far addormentare il nemico.', }, meditate: { - name: "Meditazione", - effect: "Il Pokémon medita risvegliando il potere nel profondo del suo corpo ed aumentando il suo Attacco.", + name: 'Meditazione', + effect: 'Il Pokémon medita risvegliando il potere nel profondo del suo corpo ed aumentando il suo Attacco.', }, agility: { - name: "Agilità", - effect: "Chi la usa rilassa e alleggerisce il proprio corpo per far salire di molto la Velocità.", + name: 'Agilità', + effect: 'Chi la usa rilassa e alleggerisce il proprio corpo per far salire di molto la Velocità.', }, quickAttack: { - name: "Attacco Rapido", - effect: "Chi la usa colpisce sempre per primo e ad una tale velocità da rendersi quasi invisibile.", + name: 'Attacco Rapido', + effect: 'Chi la usa colpisce sempre per primo e ad una tale velocità da rendersi quasi invisibile.', }, rage: { - name: "Ira", - effect: "Questa mossa ha il potere di aumentare la statistica Attacco ogni volta che chi la usa viene colpito durante una lotta.", + name: 'Ira', + effect: 'Questa mossa ha il potere di aumentare la statistica Attacco ogni volta che chi la usa viene colpito durante una lotta.', }, teleport: { - name: "Teletrasporto", - effect: "Fa fuggire dai Pokémon selvatici. Fuori dalla lotta porta all'ultimo Centro Pokémon visitato.", + name: 'Teletrasporto', + effect: 'Fa fuggire dai Pokémon selvatici. Fuori dalla lotta porta all\'ultimo Centro Pokémon visitato.', }, nightShade: { - name: "Ombra Notturna", - effect: "Fa apparire un orribile miraggio al nemico e infligge un danno pari al livello di chi la usa.", + name: 'Ombra Notturna', + effect: 'Fa apparire un orribile miraggio al nemico e infligge un danno pari al livello di chi la usa.', }, mimic: { - name: "Mimica", - effect: "Copia l'ultima mossa usata dal bersaglio. La mossa copiata si può utilizzare fino alla sostituzione del Pokémon.", + name: 'Mimica', + effect: 'Copia l\'ultima mossa usata dal bersaglio. La mossa copiata si può utilizzare fino alla sostituzione del Pokémon.', }, screech: { - name: "Stridio", - effect: "Stridio assordante che riduce di molto la Difesa del nemico.", + name: 'Stridio', + effect: 'Stridio assordante che riduce di molto la Difesa del nemico.', }, doubleTeam: { - name: "Doppioteam", - effect: "Chi la usa si muove in fretta e crea copie illusorie di se stesso che aumentano la capacità di elusione.", + name: 'Doppioteam', + effect: 'Chi la usa si muove in fretta e crea copie illusorie di se stesso che aumentano la capacità di elusione.', }, recover: { - name: "Ripresa", - effect: "Una mossa di auto-guarigione. Il Pokémon ripristina i suoi PS fino a metà dei suoi PS massimi.", + name: 'Ripresa', + effect: 'Una mossa di auto-guarigione. Il Pokémon ripristina i suoi PS fino a metà dei suoi PS massimi.', }, harden: { - name: "Rafforzatore", - effect: "Tutti i muscoli del corpo si tonificano per aumentare la Difesa.", + name: 'Rafforzatore', + effect: 'Tutti i muscoli del corpo si tonificano per aumentare la Difesa.', }, minimize: { - name: "Minimizzato", - effect: "Il corpo di chi la usa si comprime e diventa più piccolo. La sua capacità di elusione aumenta di molto.", + name: 'Minimizzato', + effect: 'Il corpo di chi la usa si comprime e diventa più piccolo. La sua capacità di elusione aumenta di molto.', }, smokescreen: { - name: "Muro di Fumo", - effect: "Il Pokémon rilascia un'oscura cortina di fumo che riduce la precisione del nemico.", + name: 'Muro di Fumo', + effect: 'Il Pokémon rilascia un\'oscura cortina di fumo che riduce la precisione del nemico.', }, confuseRay: { - name: "Stordiraggio", - effect: "Il nemico è colpito da un raggio sinistro che lo confonde.", + name: 'Stordiraggio', + effect: 'Il nemico è colpito da un raggio sinistro che lo confonde.', }, withdraw: { - name: "Ritirata", - effect: "Il corpo si ritira nel suo duro guscio per aumentare la Difesa.", + name: 'Ritirata', + effect: 'Il corpo si ritira nel suo duro guscio per aumentare la Difesa.', }, defenseCurl: { - name: "Ricciolscudo", - effect: "Chi la usa si raggomitola per nascondere i punti deboli e aumentare la propria Difesa.", + name: 'Ricciolscudo', + effect: 'Chi la usa si raggomitola per nascondere i punti deboli e aumentare la propria Difesa.', }, barrier: { - name: "Barriera", - effect: "Innalza una barriera resistente che aumenta molto la Difesa.", + name: 'Barriera', + effect: 'Innalza una barriera resistente che aumenta molto la Difesa.', }, lightScreen: { - name: "Schermoluce", - effect: "Innalza una barriera di luce fantastica per ridurre i danni degli attacchi speciali alla squadra per cinque turni.", + name: 'Schermoluce', + effect: 'Innalza una barriera di luce fantastica per ridurre i danni degli attacchi speciali alla squadra per cinque turni.', }, haze: { - name: "Nube", - effect: "Chi la usa crea una nube nera che annulla ogni modifica delle statistiche di tutti i Pokémon in campo.", + name: 'Nube', + effect: 'Chi la usa crea una nube nera che annulla ogni modifica delle statistiche di tutti i Pokémon in campo.', }, reflect: { - name: "Riflesso", - effect: "Innalza una barriera di luce fantastica per ridurre i danni degli attacchi fisici alla squadra per cinque turni.", + name: 'Riflesso', + effect: 'Innalza una barriera di luce fantastica per ridurre i danni degli attacchi fisici alla squadra per cinque turni.', }, focusEnergy: { - name: "Focalenergia", - effect: "Chi la usa fa un profondo respiro e si concentra per rendere più probabili i brutti colpi.", + name: 'Focalenergia', + effect: 'Chi la usa fa un profondo respiro e si concentra per rendere più probabili i brutti colpi.', }, bide: { - name: "Pazienza", - effect: "Chi la usa subisce attacchi per due turni e poi restituisce il danno moltiplicato per due.", + name: 'Pazienza', + effect: 'Chi la usa subisce attacchi per due turni e poi restituisce il danno moltiplicato per due.', }, metronome: { - name: "Metronomo", - effect: "Il Pokémon fa di no con il dito e stimola il cervello a usare a caso una delle tante mosse esistenti.", + name: 'Metronomo', + effect: 'Il Pokémon fa di no con il dito e stimola il cervello a usare a caso una delle tante mosse esistenti.', }, mirrorMove: { - name: "Speculmossa", - effect: "Chi la usa colpisce il bersaglio copiandone l'ultima mossa usata.", + name: 'Speculmossa', + effect: 'Chi la usa colpisce il bersaglio copiandone l\'ultima mossa usata.', }, selfDestruct: { - name: "Autodistruzione", - effect: "Chi la usa esplode e infligge danni agli altri Pokémon in campo, ma poi va KO.", + name: 'Autodistruzione', + effect: 'Chi la usa esplode e infligge danni agli altri Pokémon in campo, ma poi va KO.', }, eggBomb: { - name: "Uovobomba", - effect: "Colpisce il nemico con un grande uovo scaraventato con enorme forza.", + name: 'Uovobomba', + effect: 'Colpisce il nemico con un grande uovo scaraventato con enorme forza.', }, lick: { - name: "Leccata", - effect: "Una lingua lunga infligge danni al nemico e può anche paralizzarlo.", + name: 'Leccata', + effect: 'Una lingua lunga infligge danni al nemico e può anche paralizzarlo.', }, smog: { - name: "Smog", - effect: "Colpisce il nemico con una scarica di gas maleodoranti. Può anche avvelenarlo.", + name: 'Smog', + effect: 'Colpisce il nemico con una scarica di gas maleodoranti. Può anche avvelenarlo.', }, sludge: { - name: "Fango", - effect: "Lancio di fango malsano che arreca danno al nemico. Può anche avvelenarlo.", + name: 'Fango', + effect: 'Lancio di fango malsano che arreca danno al nemico. Può anche avvelenarlo.', }, boneClub: { - name: "Ossoclava", - effect: "Il Pokémon colpisce il nemico con un bastone d'osso. Può anche fare tentennare l'obiettivo.", + name: 'Ossoclava', + effect: 'Il Pokémon colpisce il nemico con un bastone d\'osso. Può anche fare tentennare l\'obiettivo.', }, fireBlast: { - name: "Fuocobomba", - effect: "Investe il nemico con un'intensa fiammata che fa terra bruciata. Può anche scottarlo.", + name: 'Fuocobomba', + effect: 'Investe il nemico con un\'intensa fiammata che fa terra bruciata. Può anche scottarlo.', }, waterfall: { - name: "Cascata", - effect: "Carica il nemico a grande velocità e può farlo tentennare. Fuori dalla lotta fa risalire le cascate.", + name: 'Cascata', + effect: 'Carica il nemico a grande velocità e può farlo tentennare. Fuori dalla lotta fa risalire le cascate.', }, clamp: { - name: "Tenaglia", - effect: "Chi la usa intrappola e stritola il nemico con la sua corazza spessa e forte per quattro o cinque turni.", + name: 'Tenaglia', + effect: 'Chi la usa intrappola e stritola il nemico con la sua corazza spessa e forte per quattro o cinque turni.', }, swift: { - name: "Comete", - effect: "Colpisce i nemici con raggi a forma di stella. Questo attacco è infallibile.", + name: 'Comete', + effect: 'Colpisce i nemici con raggi a forma di stella. Questo attacco è infallibile.', }, skullBash: { - name: "Capocciata", - effect: "Chi la usa ritira la testa per aumentare la Difesa e poi attacca al turno successivo.", + name: 'Capocciata', + effect: 'Chi la usa ritira la testa per aumentare la Difesa e poi attacca al turno successivo.', }, spikeCannon: { - name: "Sparalance", - effect: "Il nemico viene colpito da due a cinque volte in rapida successione da spilli appuntiti.", + name: 'Sparalance', + effect: 'Il nemico viene colpito da due a cinque volte in rapida successione da spilli appuntiti.', }, constrict: { - name: "Limitazione", - effect: "Colpisce il nemico con lunghi tentacoli o piante rampicanti. Può anche ridurne la Velocità.", + name: 'Limitazione', + effect: 'Colpisce il nemico con lunghi tentacoli o piante rampicanti. Può anche ridurne la Velocità.', }, amnesia: { - name: "Amnesia", - effect: "Vuoto di memoria che aumenta esponenzialmente la difesa speciale.", + name: 'Amnesia', + effect: 'Vuoto di memoria che aumenta esponenzialmente la difesa speciale.', }, kinesis: { - name: "Cinèsi", - effect: "Chi la usa distrae il bersaglio piegando un cucchiaio e ne riduce la precisione.", + name: 'Cinèsi', + effect: 'Chi la usa distrae il bersaglio piegando un cucchiaio e ne riduce la precisione.', }, softBoiled: { - name: "Covauova", - effect: "Chi la usa recupera metà dei propri PS massimi. Fuori dalla lotta può anche far trasferire PS ai propri compagni.", + name: 'Covauova', + effect: 'Chi la usa recupera metà dei propri PS massimi. Fuori dalla lotta può anche far trasferire PS ai propri compagni.', }, highJumpKick: { - name: "Calcinvolo", - effect: "Chi la usa colpisce il nemico con una ginocchiata in volo: se fallisce, subisce danni.", + name: 'Calcinvolo', + effect: 'Chi la usa colpisce il nemico con una ginocchiata in volo: se fallisce, subisce danni.', }, glare: { - name: "Sguardo Feroce", - effect: "Chi la usa spaventa il nemico con uno sguardo terrificante e ne causa la paralisi.", + name: 'Sguardo Feroce', + effect: 'Chi la usa spaventa il nemico con uno sguardo terrificante e ne causa la paralisi.', }, dreamEater: { - name: "Mangiasogni", - effect: "Attacco che funziona solo su un nemico che dorme. Chi lo usa riceve metà dei PS persi dal nemico.", + name: 'Mangiasogni', + effect: 'Attacco che funziona solo su un nemico che dorme. Chi lo usa riceve metà dei PS persi dal nemico.', }, poisonGas: { - name: "Velenogas", - effect: "Spruzza in faccia al nemico una nuvola di gas tossico che avvelena.", + name: 'Velenogas', + effect: 'Spruzza in faccia al nemico una nuvola di gas tossico che avvelena.', }, barrage: { - name: "Attacco Pioggia", - effect: "Piovono enormi sfere sulla testa del nemico da due a cinque volte di fila.", + name: 'Attacco Pioggia', + effect: 'Piovono enormi sfere sulla testa del nemico da due a cinque volte di fila.', }, leechLife: { - name: "Sanguisuga", - effect: "Mossa succhiasangue. Chi la usa recupera una quantità di PS pari alla metà del danno inferto.", + name: 'Sanguisuga', + effect: 'Mossa succhiasangue. Chi la usa recupera una quantità di PS pari alla metà del danno inferto.', }, lovelyKiss: { - name: "Demonbacio", - effect: "Chi la usa intimidisce il bersaglio con una faccia paurosa e gli schiocca un bacio che lo fa addormentare.", + name: 'Demonbacio', + effect: 'Chi la usa intimidisce il bersaglio con una faccia paurosa e gli schiocca un bacio che lo fa addormentare.', }, skyAttack: { - name: "Aeroattacco", - effect: "Un attacco in due turni e probabile brutto colpo. Può anche far tentennare il nemico.", + name: 'Aeroattacco', + effect: 'Un attacco in due turni e probabile brutto colpo. Può anche far tentennare il nemico.', }, transform: { - name: "Trasformazione", - effect: "Chi la usa si trasforma in una copia esatta del bersaglio per sfruttarne le caratteristiche.", + name: 'Trasformazione', + effect: 'Chi la usa si trasforma in una copia esatta del bersaglio per sfruttarne le caratteristiche.', }, bubble: { - name: "Bolla", - effect: "Uno spruzzo di bolle viene lanciato sul nemico. Può ridurne la velocità.", + name: 'Bolla', + effect: 'Uno spruzzo di bolle viene lanciato sul nemico. Può ridurne la velocità.', }, dizzyPunch: { - name: "Stordipugno", - effect: "Colpisce il bersaglio con una sequenza di pugni che può anche confonderlo.", + name: 'Stordipugno', + effect: 'Colpisce il bersaglio con una sequenza di pugni che può anche confonderlo.', }, spore: { - name: "Spora", - effect: "Nube di spore che fa sempre addormentare il bersaglio.", + name: 'Spora', + effect: 'Nube di spore che fa sempre addormentare il bersaglio.', }, flash: { - name: "Flash", - effect: "Il Pokémon usa un lampo di luce contro il nemico riducendone la precisione. Può essere usata per illuminare luoghi oscuri.", + name: 'Flash', + effect: 'Il Pokémon usa un lampo di luce contro il nemico riducendone la precisione. Può essere usata per illuminare luoghi oscuri.', }, psywave: { - name: "Psiconda", - effect: "Il nemico è attaccato con una strana onda di energia. L'intensità dell'attacco è variabile.", + name: 'Psiconda', + effect: 'Il nemico è attaccato con una strana onda di energia. L\'intensità dell\'attacco è variabile.', }, splash: { - name: "Splash", - effect: "Chi la usa sguazza nell'acqua, senza ottenere alcun effetto.", + name: 'Splash', + effect: 'Chi la usa sguazza nell\'acqua, senza ottenere alcun effetto.', }, acidArmor: { - name: "Scudo Acido", - effect: "Il Pokémon modifica la sua struttura cellulare liquefandosi, per aumentare esponenzialmente la sua difesa.", + name: 'Scudo Acido', + effect: 'Il Pokémon modifica la sua struttura cellulare liquefandosi, per aumentare esponenzialmente la sua difesa.', }, crabhammer: { - name: "Martellata", - effect: "Colpisce il nemico con una grande tenaglia. Probabile brutto colpo.", + name: 'Martellata', + effect: 'Colpisce il nemico con una grande tenaglia. Probabile brutto colpo.', }, explosion: { - name: "Esplosione", - effect: "Chi la usa esplode per infliggere danni agli altri Pokémon attorno, ma va KO.", + name: 'Esplosione', + effect: 'Chi la usa esplode per infliggere danni agli altri Pokémon attorno, ma va KO.', }, furySwipes: { - name: "Sfuriate", - effect: "Colpisce il nemico con artigli o falci affilate da due a cinque volte in rapida successione.", + name: 'Sfuriate', + effect: 'Colpisce il nemico con artigli o falci affilate da due a cinque volte in rapida successione.', }, bonemerang: { - name: "Ossomerang", - effect: "Chi la usa lancia l'osso che tiene. L'osso colpisce due volte e ritorna come un vero e proprio boomerang.", + name: 'Ossomerang', + effect: 'Chi la usa lancia l\'osso che tiene. L\'osso colpisce due volte e ritorna come un vero e proprio boomerang.', }, rest: { - name: "Riposo", - effect: "Il Pokémon si addormenta per due turni per curare tutti i PS e qualsiasi problema di stato.", + name: 'Riposo', + effect: 'Il Pokémon si addormenta per due turni per curare tutti i PS e qualsiasi problema di stato.', }, rockSlide: { - name: "Frana", - effect: "I nemici vengono colpiti da grandi massi che possono anche farli tentennare.", + name: 'Frana', + effect: 'I nemici vengono colpiti da grandi massi che possono anche farli tentennare.', }, hyperFang: { - name: "Iperzanna", - effect: "Il Pokémon morde il nemico con zanne taglienti. Può anche farlo tentennare.", + name: 'Iperzanna', + effect: 'Il Pokémon morde il nemico con zanne taglienti. Può anche farlo tentennare.', }, sharpen: { - name: "Affilatore", - effect: "Chi la usa riduce il numero di poligoni sul proprio corpo per accentuarne gli spigoli e aumentare l'Attacco.", + name: 'Affilatore', + effect: 'Chi la usa riduce il numero di poligoni sul proprio corpo per accentuarne gli spigoli e aumentare l\'Attacco.', }, conversion: { - name: "Conversione", - effect: "Il tipo di chi la usa muta in quello di una sua mossa a caso.", + name: 'Conversione', + effect: 'Il tipo di chi la usa muta in quello di una sua mossa a caso.', }, triAttack: { - name: "Tripletta", - effect: "Colpisce il nemico con tre sfere simultanee che possono anche paralizzarlo, scottarlo o congelarlo.", + name: 'Tripletta', + effect: 'Colpisce il nemico con tre sfere simultanee che possono anche paralizzarlo, scottarlo o congelarlo.', }, superFang: { - name: "Superzanna", - effect: "Chi la usa salta sul nemico azzannandolo con i suoi incisivi affilati e facendogli perdere metà dei PS.", + name: 'Superzanna', + effect: 'Chi la usa salta sul nemico azzannandolo con i suoi incisivi affilati e facendogli perdere metà dei PS.', }, slash: { - name: "Lacerazione", - effect: "Attacca il nemico con artigli, falci o altro. Probabile brutto colpo.", + name: 'Lacerazione', + effect: 'Attacca il nemico con artigli, falci o altro. Probabile brutto colpo.', }, substitute: { - name: "Sostituto", - effect: "Chi la usa crea una copia di se stesso usando alcuni PS. La copia serve come esca per il nemico.", + name: 'Sostituto', + effect: 'Chi la usa crea una copia di se stesso usando alcuni PS. La copia serve come esca per il nemico.', }, struggle: { - name: "Scontro", - effect: "Mossa da usare solo in caso estremo, quando non si hanno più PP. Danneggia anche chi la usa.", + name: 'Scontro', + effect: 'Mossa da usare solo in caso estremo, quando non si hanno più PP. Danneggia anche chi la usa.', }, sketch: { - name: "Schizzo", - effect: "Permette a chi la usa di imparare l'ultima mossa usata dal bersaglio. La nuova mossa appresa sostituisce Schizzo.", + name: 'Schizzo', + effect: 'Permette a chi la usa di imparare l\'ultima mossa usata dal bersaglio. La nuova mossa appresa sostituisce Schizzo.', }, tripleKick: { - name: "Triplocalcio", - effect: "Chi la usa esegue fino a tre calci consecutivi la cui potenza aumenta ad ogni colpo.", + name: 'Triplocalcio', + effect: 'Chi la usa esegue fino a tre calci consecutivi la cui potenza aumenta ad ogni colpo.', }, thief: { - name: "Furto", - effect: "Il Pokémon attacca e contemporaneamente ruba lo strumento tenuto dal nemico. Non ruberà nulla, se si possiede già uno strumento.", + name: 'Furto', + effect: 'Il Pokémon attacca e contemporaneamente ruba lo strumento tenuto dal nemico. Non ruberà nulla, se si possiede già uno strumento.', }, spiderWeb: { - name: "Ragnatela", - effect: "Copre il nemico con un filo di seta sottile e appiccicoso. Il nemico non può fuggire.", + name: 'Ragnatela', + effect: 'Copre il nemico con un filo di seta sottile e appiccicoso. Il nemico non può fuggire.', }, mindReader: { - name: "Leggimente", - effect: "Il Pokémon percepisce i movimenti del nemico con la mente per garantire il successo della mossa successiva.", + name: 'Leggimente', + effect: 'Il Pokémon percepisce i movimenti del nemico con la mente per garantire il successo della mossa successiva.', }, nightmare: { - name: "Incubo", - effect: "Il nemico addormentato ha un incubo e perde PS ad ogni turno.", + name: 'Incubo', + effect: 'Il nemico addormentato ha un incubo e perde PS ad ogni turno.', }, flameWheel: { - name: "Ruotafuoco", - effect: "Il Pokémon si avvolge nel fuoco e carica il nemico. Può scottare.", + name: 'Ruotafuoco', + effect: 'Il Pokémon si avvolge nel fuoco e carica il nemico. Può scottare.', }, snore: { - name: "Russare", - effect: "Mossa da usare solo mentre si dorme. Il chiasso assordante può anche far tentennare il nemico.", + name: 'Russare', + effect: 'Mossa da usare solo mentre si dorme. Il chiasso assordante può anche far tentennare il nemico.', }, curse: { - name: "Maledizione", - effect: "Una mossa che agisce in modo diverso se chi la usa è di tipo Spettro.", + name: 'Maledizione', + effect: 'Una mossa che agisce in modo diverso se chi la usa è di tipo Spettro.', }, flail: { - name: "Flagello", - effect: "Chi la usa si dimena per attaccare. È più efficace se i suoi PS sono bassi.", + name: 'Flagello', + effect: 'Chi la usa si dimena per attaccare. È più efficace se i suoi PS sono bassi.', }, conversion2: { - name: "Conversione2", - effect: "Chi la usa cambia tipo per rendersi resistente al tipo dell'ultima mossa usata dal bersaglio.", + name: 'Conversione2', + effect: 'Chi la usa cambia tipo per rendersi resistente al tipo dell\'ultima mossa usata dal bersaglio.', }, aeroblast: { - name: "Aerocolpo", - effect: "Colpisce il nemico con un vortice d'aria per danneggiarlo. Probabile brutto colpo.", + name: 'Aerocolpo', + effect: 'Colpisce il nemico con un vortice d\'aria per danneggiarlo. Probabile brutto colpo.', }, cottonSpore: { - name: "Cottonspora", - effect: "Rilascia spore simili al cotone che si attaccano ai nemici nei paraggi e ne riducono di molto la Velocità.", + name: 'Cottonspora', + effect: 'Rilascia spore simili al cotone che si attaccano ai nemici nei paraggi e ne riducono di molto la Velocità.', }, reversal: { - name: "Contropiede", - effect: "Chi la usa attacca con tutte le sue forze. Più i PS sono bassi, maggiore è la potenza di questa mossa.", + name: 'Contropiede', + effect: 'Chi la usa attacca con tutte le sue forze. Più i PS sono bassi, maggiore è la potenza di questa mossa.', }, spite: { - name: "Dispetto", - effect: "Chi la usa sfoga la propria rabbia sull'ultima mossa usata dal bersaglio e le sottrae quattro PP.", + name: 'Dispetto', + effect: 'Chi la usa sfoga la propria rabbia sull\'ultima mossa usata dal bersaglio e le sottrae quattro PP.', }, powderSnow: { - name: "Polneve", - effect: "Attacca il nemico con una raffica di neve farinosa e può anche congelarlo.", + name: 'Polneve', + effect: 'Attacca il nemico con una raffica di neve farinosa e può anche congelarlo.', }, protect: { - name: "Protezione", - effect: "Permette di eludere tutti gli attacchi. Se usata in successione può fallire.", + name: 'Protezione', + effect: 'Permette di eludere tutti gli attacchi. Se usata in successione può fallire.', }, machPunch: { - name: "Pugnorapido", - effect: "Chi la usa tira un pugno a velocità impressionante e colpisce di sicuro per primo.", + name: 'Pugnorapido', + effect: 'Chi la usa tira un pugno a velocità impressionante e colpisce di sicuro per primo.', }, scaryFace: { - name: "Visotruce", - effect: "Chi la usa spaventa il nemico con una faccia terribile e ne riduce di molto la Velocità.", + name: 'Visotruce', + effect: 'Chi la usa spaventa il nemico con una faccia terribile e ne riduce di molto la Velocità.', }, feintAttack: { - name: "Finta", - effect: "Chi la usa si avvicina al nemico facendo finta di niente, per poi scagliare un pugno infallibile a tradimento.", + name: 'Finta', + effect: 'Chi la usa si avvicina al nemico facendo finta di niente, per poi scagliare un pugno infallibile a tradimento.', }, sweetKiss: { - name: "Dolcebacio", - effect: "Chi la usa bacia il nemico con una dolcezza angelica, confondendolo.", + name: 'Dolcebacio', + effect: 'Chi la usa bacia il nemico con una dolcezza angelica, confondendolo.', }, bellyDrum: { - name: "Panciamburo", - effect: "Chi la usa massimizza l'Attacco in cambio di metà dei PS massimi.", + name: 'Panciamburo', + effect: 'Chi la usa massimizza l\'Attacco in cambio di metà dei PS massimi.', }, sludgeBomb: { - name: "Fangobomba", - effect: "Chi la usa attacca lanciando fango sul bersaglio. Può anche avvelenarlo.", + name: 'Fangobomba', + effect: 'Chi la usa attacca lanciando fango sul bersaglio. Può anche avvelenarlo.', }, mudSlap: { - name: "Fangosberla", - effect: "Chi la usa butta fango in faccia al nemico per arrecargli danni e ridurne la precisione.", + name: 'Fangosberla', + effect: 'Chi la usa butta fango in faccia al nemico per arrecargli danni e ridurne la precisione.', }, octazooka: { - name: "Octazooka", - effect: "Chi la usa spruzza del'inchiostro in faccia al nemico. Può anche ridurne la precisione.", + name: 'Octazooka', + effect: 'Chi la usa spruzza del\'inchiostro in faccia al nemico. Può anche ridurne la precisione.', }, spikes: { - name: "Punte", - effect: "Chi la usa piazza sul terreno una trappola di punte che danneggia i nemici quando scendono in campo.", + name: 'Punte', + effect: 'Chi la usa piazza sul terreno una trappola di punte che danneggia i nemici quando scendono in campo.', }, zapCannon: { - name: "Falcecannone", - effect: "Chi la usa provoca un'esplosione elettrica che infligge danni e paralizza il nemico.", + name: 'Falcecannone', + effect: 'Chi la usa provoca un\'esplosione elettrica che infligge danni e paralizza il nemico.', }, foresight: { - name: "Preveggenza", - effect: "Chi la usa rende i Pokémon di tipo Spettro vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.", + name: 'Preveggenza', + effect: 'Chi la usa rende i Pokémon di tipo Spettro vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.', }, destinyBond: { - name: "Destinobbligato", - effect: "Se chi la usa va KO prima del proprio turno, chi ha sferrato il colpo da KO fa la stessa fine.", + name: 'Destinobbligato', + effect: 'Se chi la usa va KO prima del proprio turno, chi ha sferrato il colpo da KO fa la stessa fine.', }, perishSong: { - name: "Ultimocanto", - effect: "Ogni Pokémon che sente questo canto va KO in tre turni, se non lo si sostituisce.", + name: 'Ultimocanto', + effect: 'Ogni Pokémon che sente questo canto va KO in tre turni, se non lo si sostituisce.', }, icyWind: { - name: "Ventogelato", - effect: "Chi la usa attacca i nemici con una folata di aria gelida e ne riduce anche la Velocità.", + name: 'Ventogelato', + effect: 'Chi la usa attacca i nemici con una folata di aria gelida e ne riduce anche la Velocità.', }, detect: { - name: "Individua", - effect: "Consente al Pokémon di evitare tutti gli attacchi. Può fallire se usato in successione.", + name: 'Individua', + effect: 'Consente al Pokémon di evitare tutti gli attacchi. Può fallire se usato in successione.', }, boneRush: { - name: "Ossoraffica", - effect: "Chi la usa colpisce il nemico con un osso duro, da 2 a 5 volte di fila.", + name: 'Ossoraffica', + effect: 'Chi la usa colpisce il nemico con un osso duro, da 2 a 5 volte di fila.', }, lockOn: { - name: "Localizza", - effect: "Chi la usa punta il nemico con precisione. La mossa successiva andrà a segno.", + name: 'Localizza', + effect: 'Chi la usa punta il nemico con precisione. La mossa successiva andrà a segno.', }, outrage: { - name: "Oltraggio", - effect: "Chi la usa sfoga la sua ira e attacca il nemico per due o tre turni prima di essere lasciato in preda alla confusione.", + name: 'Oltraggio', + effect: 'Chi la usa sfoga la sua ira e attacca il nemico per due o tre turni prima di essere lasciato in preda alla confusione.', }, sandstorm: { - name: "Terrempesta", - effect: "Causa una tempesta di sabbia per cinque turni che danneggia tutti i tipi in campo esclusi Terra, Roccia e Acciaio.", + name: 'Terrempesta', + effect: 'Causa una tempesta di sabbia per cinque turni che danneggia tutti i tipi in campo esclusi Terra, Roccia e Acciaio.', }, gigaDrain: { - name: "Gigassorbimento", - effect: "Mossa che assorbe PS. Chi la usa recupera un quantità di PS pari alla metà del danno inferto.", + name: 'Gigassorbimento', + effect: 'Mossa che assorbe PS. Chi la usa recupera un quantità di PS pari alla metà del danno inferto.', }, endure: { - name: "Resistenza", - effect: "Chi la usa resta con un PS anche se subisce un colpo da KO in quel turno. Usata in successione può fallire.", + name: 'Resistenza', + effect: 'Chi la usa resta con un PS anche se subisce un colpo da KO in quel turno. Usata in successione può fallire.', }, charm: { - name: "Fascino", - effect: "Ammalia il nemico con lo sguardo per renderlo meno cauto. Riduce molto l'Attacco del nemico.", + name: 'Fascino', + effect: 'Ammalia il nemico con lo sguardo per renderlo meno cauto. Riduce molto l\'Attacco del nemico.', }, rollout: { - name: "Rotolamento", - effect: "Chi la usa colpisce il nemico rotolando per cinque turni, con aumento progressivo della potenza ogni volta che va a segno.", + name: 'Rotolamento', + effect: 'Chi la usa colpisce il nemico rotolando per cinque turni, con aumento progressivo della potenza ogni volta che va a segno.', }, falseSwipe: { - name: "Falsofinale", - effect: "Chi la usa trattiene il colpo per impedire al nemico di andare KO, lasciandolo con almeno un PS.", + name: 'Falsofinale', + effect: 'Chi la usa trattiene il colpo per impedire al nemico di andare KO, lasciandolo con almeno un PS.', }, swagger: { - name: "Bullo", - effect: "Chi la usa provoca il bersaglio e lo confonde, facendo aumentare però di molto il suo Attacco.", + name: 'Bullo', + effect: 'Chi la usa provoca il bersaglio e lo confonde, facendo aumentare però di molto il suo Attacco.', }, milkDrink: { - name: "Buonlatte", - effect: "Chi la usa recupera metà dei propri PS massimi. Fuori dalla lotta può anche far trasferire PS ai propri compagni.", + name: 'Buonlatte', + effect: 'Chi la usa recupera metà dei propri PS massimi. Fuori dalla lotta può anche far trasferire PS ai propri compagni.', }, spark: { - name: "Scintilla", - effect: "Colpisce il nemico con una carica elettrica e può anche paralizzarlo.", + name: 'Scintilla', + effect: 'Colpisce il nemico con una carica elettrica e può anche paralizzarlo.', }, furyCutter: { - name: "Tagliofuria", - effect: "Colpisce il nemico con falci o artigli. Se usata in successione aumenta di potenza ogni volta che va a segno.", + name: 'Tagliofuria', + effect: 'Colpisce il nemico con falci o artigli. Se usata in successione aumenta di potenza ogni volta che va a segno.', }, steelWing: { - name: "Alacciaio", - effect: "Colpisce il nemico con ali d'acciaio. Può anche aumentare la Difesa di chi la usa.", + name: 'Alacciaio', + effect: 'Colpisce il nemico con ali d\'acciaio. Può anche aumentare la Difesa di chi la usa.', }, meanLook: { - name: "Malosguardo", - effect: "Chi la usa blocca il nemico con uno sguardo oscuro e ammaliante, impedendogli la fuga.", + name: 'Malosguardo', + effect: 'Chi la usa blocca il nemico con uno sguardo oscuro e ammaliante, impedendogli la fuga.', }, attract: { - name: "Attrazione", - effect: "Se il nemico è del sesso opposto, s'infatua e attacca con meno probabilità.", + name: 'Attrazione', + effect: 'Se il nemico è del sesso opposto, s\'infatua e attacca con meno probabilità.', }, sleepTalk: { - name: "Sonnolalia", - effect: "Chi la usa sfodera a caso una delle proprie mosse mentre sta dormendo.", + name: 'Sonnolalia', + effect: 'Chi la usa sfodera a caso una delle proprie mosse mentre sta dormendo.', }, healBell: { - name: "Rintoccasana", - effect: "Chi la usa fa suonare le campane per curare completamente tutta la squadra.", + name: 'Rintoccasana', + effect: 'Chi la usa fa suonare le campane per curare completamente tutta la squadra.', }, return: { - name: "Ritorno", - effect: "Mossa che diventa tanto più potente quanto maggiore è il grado di affezione del Pokémon per il proprio Allenatore.", + name: 'Ritorno', + effect: 'Mossa che diventa tanto più potente quanto maggiore è il grado di affezione del Pokémon per il proprio Allenatore.', }, present: { - name: "Regalino", - effect: "Chi la usa dà un regalo bomba al bersaglio. A volte, però, può fargli recuperare PS.", + name: 'Regalino', + effect: 'Chi la usa dà un regalo bomba al bersaglio. A volte, però, può fargli recuperare PS.', }, frustration: { - name: "Frustrazione", - effect: "Mossa che diventa tanto più potente quanto minore è il grado di affezione del Pokémon per il proprio Allenatore.", + name: 'Frustrazione', + effect: 'Mossa che diventa tanto più potente quanto minore è il grado di affezione del Pokémon per il proprio Allenatore.', }, safeguard: { - name: "Salvaguardia", - effect: "Chi la usa crea un campo protettivo che difende tutta la squadra dai problemi di stato per cinque turni.", + name: 'Salvaguardia', + effect: 'Chi la usa crea un campo protettivo che difende tutta la squadra dai problemi di stato per cinque turni.', }, painSplit: { - name: "Malcomune", - effect: "Chi la usa somma i propri PS a quelli di un altro Pokémon per poi dividerli in parti uguali.", + name: 'Malcomune', + effect: 'Chi la usa somma i propri PS a quelli di un altro Pokémon per poi dividerli in parti uguali.', }, sacredFire: { - name: "Magifuoco", - effect: "Colpisce il nemico con un fuoco mistico di enorme intensità che può anche causargli una scottatura.", + name: 'Magifuoco', + effect: 'Colpisce il nemico con un fuoco mistico di enorme intensità che può anche causargli una scottatura.', }, magnitude: { - name: "Magnitudo", - effect: "Chi la usa scatena un terremoto d'intensità variabile che danneggia gli altri Pokémon in campo.", + name: 'Magnitudo', + effect: 'Chi la usa scatena un terremoto d\'intensità variabile che danneggia gli altri Pokémon in campo.', }, dynamicPunch: { - name: "Dinamipugno", - effect: "Colpisce il nemico con un pugno davvero forte. Se va a segno, lo confonde.", + name: 'Dinamipugno', + effect: 'Colpisce il nemico con un pugno davvero forte. Se va a segno, lo confonde.', }, megahorn: { - name: "Megacorno", - effect: "Chi la usa utilizza il suo corno per montare con grande forza il nemico.", + name: 'Megacorno', + effect: 'Chi la usa utilizza il suo corno per montare con grande forza il nemico.', }, dragonBreath: { - name: "Dragospiro", - effect: "Investe il nemico con una raffica potentissima che arreca danni. Può anche paralizzarlo.", + name: 'Dragospiro', + effect: 'Investe il nemico con una raffica potentissima che arreca danni. Può anche paralizzarlo.', }, batonPass: { - name: "Staffetta", - effect: "Chi la usa è sostituito da un Pokémon della squadra, che eredita anche ogni modifica alle statistiche.", + name: 'Staffetta', + effect: 'Chi la usa è sostituito da un Pokémon della squadra, che eredita anche ogni modifica alle statistiche.', }, encore: { - name: "Ripeti", - effect: "Chi la usa costringe il nemico a continuare ad utilizzare solo l'ultima mossa utilizzata da 2 a 6 turni.", + name: 'Ripeti', + effect: 'Chi la usa costringe il nemico a continuare ad utilizzare solo l\'ultima mossa utilizzata da 2 a 6 turni.', }, pursuit: { - name: "Inseguimento", - effect: "Una mossa d'attacco che infligge un danno doppio se il nemico è in fase di sostituzione.", + name: 'Inseguimento', + effect: 'Una mossa d\'attacco che infligge un danno doppio se il nemico è in fase di sostituzione.', }, rapidSpin: { - name: "Rapigiro", - effect: "Un attacco roteante che elimina gli effetti delle mosse Legatutto, Avvolgibotta, Parassiseme e Punte.", + name: 'Rapigiro', + effect: 'Un attacco roteante che elimina gli effetti delle mosse Legatutto, Avvolgibotta, Parassiseme e Punte.', }, sweetScent: { - name: "Profumino", - effect: "Un dolce profumo che alletta il nemico per ridurne l'elusione. Attira anche Pokémon selvatici.", + name: 'Profumino', + effect: 'Un dolce profumo che alletta il nemico per ridurne l\'elusione. Attira anche Pokémon selvatici.', }, ironTail: { - name: "Codacciaio", - effect: "Il nemico viene colpito da una robusta coda d'acciaio. Può anche ridurne la Difesa.", + name: 'Codacciaio', + effect: 'Il nemico viene colpito da una robusta coda d\'acciaio. Può anche ridurne la Difesa.', }, metalClaw: { - name: "Ferrartigli", - effect: "Colpisce il nemico con artigli d'acciaio. Può anche aumentare l'Attacco di chi la usa.", + name: 'Ferrartigli', + effect: 'Colpisce il nemico con artigli d\'acciaio. Può anche aumentare l\'Attacco di chi la usa.', }, vitalThrow: { - name: "Vitaltiro", - effect: "Chi la usa attacca per ultimo, ma il colpo è sempre infallibile.", + name: 'Vitaltiro', + effect: 'Chi la usa attacca per ultimo, ma il colpo è sempre infallibile.', }, morningSun: { - name: "Mattindoro", - effect: "Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.", + name: 'Mattindoro', + effect: 'Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.', }, synthesis: { - name: "Sintesi", - effect: "Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.", + name: 'Sintesi', + effect: 'Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.', }, moonlight: { - name: "Lucelunare", - effect: "Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.", + name: 'Lucelunare', + effect: 'Chi la usa recupera PS. Il numero di PS recuperati dipende dalle condizioni atmosferiche.', }, hiddenPower: { - name: "Introforza", - effect: "Mossa singolare che cambia tipo e potenza a seconda del Pokémon che la usa.", + name: 'Introforza', + effect: 'Mossa singolare che cambia tipo e potenza a seconda del Pokémon che la usa.', }, crossChop: { - name: "Incrocolpo", - effect: "Investe il nemico con un colpo sferrato con entrambe le braccia incrociate. Probabile brutto colpo.", + name: 'Incrocolpo', + effect: 'Investe il nemico con un colpo sferrato con entrambe le braccia incrociate. Probabile brutto colpo.', }, twister: { - name: "Tornado", - effect: "Un potente tornado si abbatte sul nemico. Può anche far tentennare.", + name: 'Tornado', + effect: 'Un potente tornado si abbatte sul nemico. Può anche far tentennare.', }, rainDance: { - name: "Pioggiadanza", - effect: "Chi la usa provoca una forte pioggia per cinque turni, potenziando le mosse di tipo Acqua.", + name: 'Pioggiadanza', + effect: 'Chi la usa provoca una forte pioggia per cinque turni, potenziando le mosse di tipo Acqua.', }, sunnyDay: { - name: "Giornodisole", - effect: "Chi la usa intensifica i raggi solari per cinque turni, potenziando le mosse di tipo Fuoco.", + name: 'Giornodisole', + effect: 'Chi la usa intensifica i raggi solari per cinque turni, potenziando le mosse di tipo Fuoco.', }, crunch: { - name: "Sgranocchio", - effect: "Il nemico viene morso con denti affilati. Può anche ridurne la Difesa.", + name: 'Sgranocchio', + effect: 'Il nemico viene morso con denti affilati. Può anche ridurne la Difesa.', }, mirrorCoat: { - name: "Specchiovelo", - effect: "Mossa che replica ogni attacco speciale, arrecando il doppio del danno ricevuto.", + name: 'Specchiovelo', + effect: 'Mossa che replica ogni attacco speciale, arrecando il doppio del danno ricevuto.', }, psychUp: { - name: "Psicamisù", - effect: "Chi la usa s'ipnotizza per copiare ogni modifica alle statistiche del bersaglio.", + name: 'Psicamisù', + effect: 'Chi la usa s\'ipnotizza per copiare ogni modifica alle statistiche del bersaglio.', }, extremeSpeed: { - name: "Extrarapido", - effect: "Chi la usa carica il nemico a velocità impressionante ed attacca sempre per primo.", + name: 'Extrarapido', + effect: 'Chi la usa carica il nemico a velocità impressionante ed attacca sempre per primo.', }, ancientPower: { - name: "Forzantica", - effect: "Colpisce il nemico con una forza primordiale. Può aumentare tutte le statistiche.", + name: 'Forzantica', + effect: 'Colpisce il nemico con una forza primordiale. Può aumentare tutte le statistiche.', }, shadowBall: { - name: "Palla Ombra", - effect: "Lancia sul nemico una sfera nera. Può anche ridurne la Difesa Speciale.", + name: 'Palla Ombra', + effect: 'Lancia sul nemico una sfera nera. Può anche ridurne la Difesa Speciale.', }, futureSight: { - name: "Divinazione", - effect: "Due turni dopo l'utilizzo di questa mossa, il nemico viene attaccato con energia psichica.", + name: 'Divinazione', + effect: 'Due turni dopo l\'utilizzo di questa mossa, il nemico viene attaccato con energia psichica.', }, rockSmash: { - name: "Spaccaroccia", - effect: "Il nemico viene colpito da un pugno in grado di frantumare anche la roccia. Può anche ridurne la Difesa.", + name: 'Spaccaroccia', + effect: 'Il nemico viene colpito da un pugno in grado di frantumare anche la roccia. Può anche ridurne la Difesa.', }, whirlpool: { - name: "Mulinello", - effect: "Intrappola il nemico in un turbine d'acqua che dura per quattro o cinque turni infliggendogli dei danni ogni turno.", + name: 'Mulinello', + effect: 'Intrappola il nemico in un turbine d\'acqua che dura per quattro o cinque turni infliggendogli dei danni ogni turno.', }, beatUp: { - name: "Picchiaduro", - effect: "Chi la usa chiama in aiuto i Pokémon della squadra: più ce ne sono, maggiore è il numero di attacchi.", + name: 'Picchiaduro', + effect: 'Chi la usa chiama in aiuto i Pokémon della squadra: più ce ne sono, maggiore è il numero di attacchi.', }, fakeOut: { - name: "Bruciapelo", - effect: "Mossa che fa agire per primo e fa tentennare il nemico. Funziona solo appena sceso in campo.", + name: 'Bruciapelo', + effect: 'Mossa che fa agire per primo e fa tentennare il nemico. Funziona solo appena sceso in campo.', }, uproar: { - name: "Baraonda", - effect: "Chi la usa attacca per tre turni con un frastuono che non fa dormire nessuno.", + name: 'Baraonda', + effect: 'Chi la usa attacca per tre turni con un frastuono che non fa dormire nessuno.', }, stockpile: { - name: "Accumulo", - effect: "Chi la usa accumula energia aumentando la Difesa e la Difesa Speciale. Si può utilizzare tre volte.", + name: 'Accumulo', + effect: 'Chi la usa accumula energia aumentando la Difesa e la Difesa Speciale. Si può utilizzare tre volte.', }, spitUp: { - name: "Sfoghenergia", - effect: "Tutta l'energia accumulata in precedenza con Accumulo è rilasciata nell'attacco. Maggiore è l'energia, più danni si arrecano.", + name: 'Sfoghenergia', + effect: 'Tutta l\'energia accumulata in precedenza con Accumulo è rilasciata nell\'attacco. Maggiore è l\'energia, più danni si arrecano.', }, swallow: { - name: "Introenergia", - effect: "Chi la usa assorbe l'energia raccolta con la mossa Accumulo e recupera PS. Maggiore è l'energia, più PS si recuperano.", + name: 'Introenergia', + effect: 'Chi la usa assorbe l\'energia raccolta con la mossa Accumulo e recupera PS. Maggiore è l\'energia, più PS si recuperano.', }, heatWave: { - name: "Ondacalda", - effect: "Chi la usa investe i nemici con una folata di vento caldo. Può anche scottare.", + name: 'Ondacalda', + effect: 'Chi la usa investe i nemici con una folata di vento caldo. Può anche scottare.', }, hail: { - name: "Grandine", - effect: "Chi la usa causa una grandinata che dura cinque turni. Danneggia tutti i Pokémon tranne quelli di tipo Ghiaccio.", + name: 'Grandine', + effect: 'Chi la usa causa una grandinata che dura cinque turni. Danneggia tutti i Pokémon tranne quelli di tipo Ghiaccio.', }, torment: { - name: "Attaccalite", - effect: "Chi la usa tormenta e fa infuriare il nemico, impedendogli di usare la stessa mossa due volte di seguito.", + name: 'Attaccalite', + effect: 'Chi la usa tormenta e fa infuriare il nemico, impedendogli di usare la stessa mossa due volte di seguito.', }, flatter: { - name: "Adulazione", - effect: "Adula il bersaglio e lo confonde, ma ne aumenta l'Attacco Speciale.", + name: 'Adulazione', + effect: 'Adula il bersaglio e lo confonde, ma ne aumenta l\'Attacco Speciale.', }, willOWisp: { - name: "Fuocofatuo", - effect: "Fiamme intense di colore viola causano una scottatura al nemico.", + name: 'Fuocofatuo', + effect: 'Fiamme intense di colore viola causano una scottatura al nemico.', }, memento: { - name: "Memento", - effect: "Chi la usa va KO. Tuttavia, riduce di molto l'Attacco e l'Attacco Speciale del nemico.", + name: 'Memento', + effect: 'Chi la usa va KO. Tuttavia, riduce di molto l\'Attacco e l\'Attacco Speciale del nemico.', }, facade: { - name: "Facciata", - effect: "Mossa d'attacco che raddoppia la potenza se chi la usa è scottato, avvelenato o paralizzato.", + name: 'Facciata', + effect: 'Mossa d\'attacco che raddoppia la potenza se chi la usa è scottato, avvelenato o paralizzato.', }, focusPunch: { - name: "Centripugno", - effect: "Chi la usa prende la mira prima di sferrare un pugno. Fallirà se verrà colpito prima di eseguire la mossa.", + name: 'Centripugno', + effect: 'Chi la usa prende la mira prima di sferrare un pugno. Fallirà se verrà colpito prima di eseguire la mossa.', }, smellingSalts: { - name: "Maniereforti", - effect: "Infligge un danno doppio ad un bersaglio paralizzato, ma ne cura anche la paralisi.", + name: 'Maniereforti', + effect: 'Infligge un danno doppio ad un bersaglio paralizzato, ma ne cura anche la paralisi.', }, followMe: { - name: "Sonoqui", - effect: "Chi la usa attrae l'attenzione su di sé, costringendo i nemici a sceglierlo sempre come bersaglio.", + name: 'Sonoqui', + effect: 'Chi la usa attrae l\'attenzione su di sé, costringendo i nemici a sceglierlo sempre come bersaglio.', }, naturePower: { - name: "Naturforza", - effect: "Mossa che fa uso della forza della natura. Il suo effetto varia in base all'ambiente.", + name: 'Naturforza', + effect: 'Mossa che fa uso della forza della natura. Il suo effetto varia in base all\'ambiente.', }, charge: { - name: "Sottocarica", - effect: "Potenzia la mossa di tipo Elettro usata subito dopo. Aumenta anche la Difesa Speciale di chi la usa.", + name: 'Sottocarica', + effect: 'Potenzia la mossa di tipo Elettro usata subito dopo. Aumenta anche la Difesa Speciale di chi la usa.', }, taunt: { - name: "Provocazione", - effect: "Provoca il nemico, inducendolo ad usare solo mosse d'attacco per tre turni.", + name: 'Provocazione', + effect: 'Provoca il nemico, inducendolo ad usare solo mosse d\'attacco per tre turni.', }, helpingHand: { - name: "Altruismo", - effect: "Mossa che aumenta la potenza dell'attacco di un alleato.", + name: 'Altruismo', + effect: 'Mossa che aumenta la potenza dell\'attacco di un alleato.', }, trick: { - name: "Raggiro", - effect: "Chi la usa coglie il bersaglio in contropiede e l'obbliga a cambiare il suo strumento con il proprio.", + name: 'Raggiro', + effect: 'Chi la usa coglie il bersaglio in contropiede e l\'obbliga a cambiare il suo strumento con il proprio.', }, rolePlay: { - name: "Giocodiruolo", - effect: "Chi la usa mima in tutto il bersaglio, copiandone l'abilità.", + name: 'Giocodiruolo', + effect: 'Chi la usa mima in tutto il bersaglio, copiandone l\'abilità.', }, wish: { - name: "Desiderio", - effect: "Permette di recuperare metà dei PS massimi al turno successivo.", + name: 'Desiderio', + effect: 'Permette di recuperare metà dei PS massimi al turno successivo.', }, assist: { - name: "Assistente", - effect: "Chi la usa utilizza in fretta e a caso una delle mosse degli altri Pokémon della squadra.", + name: 'Assistente', + effect: 'Chi la usa utilizza in fretta e a caso una delle mosse degli altri Pokémon della squadra.', }, ingrain: { - name: "Radicamento", - effect: "Chi la usa mette delle radici che gli fanno recuperare PS a ogni turno. Non può essere sostituito.", + name: 'Radicamento', + effect: 'Chi la usa mette delle radici che gli fanno recuperare PS a ogni turno. Non può essere sostituito.', }, superpower: { - name: "Troppoforte", - effect: "Chi la usa attacca il nemico con grande forza, ma il suo Attacco e la sua Difesa diminuiscono.", + name: 'Troppoforte', + effect: 'Chi la usa attacca il nemico con grande forza, ma il suo Attacco e la sua Difesa diminuiscono.', }, magicCoat: { - name: "Magivelo", - effect: "Una barriera rimanda al mittente l'effetto di mosse come Parassiseme e di mosse che influenzano lo stato.", + name: 'Magivelo', + effect: 'Una barriera rimanda al mittente l\'effetto di mosse come Parassiseme e di mosse che influenzano lo stato.', }, recycle: { - name: "Riciclo", - effect: "Chi la usa ricicla uno strumento tenuto, già usato nella lotta, e lo può riutilizzare.", + name: 'Riciclo', + effect: 'Chi la usa ricicla uno strumento tenuto, già usato nella lotta, e lo può riutilizzare.', }, revenge: { - name: "Vendetta", - effect: "Mossa d'attacco che infligge un danno doppio se si è stati colpiti dal nemico nello stesso turno.", + name: 'Vendetta', + effect: 'Mossa d\'attacco che infligge un danno doppio se si è stati colpiti dal nemico nello stesso turno.', }, brickBreak: { - name: "Breccia", - effect: "Colpisce il nemico con una mano e rompe barriere come Riflesso e Schermoluce.", + name: 'Breccia', + effect: 'Colpisce il nemico con una mano e rompe barriere come Riflesso e Schermoluce.', }, yawn: { - name: "Sbadiglio", - effect: "Chi la usa fa un grande sbadiglio che addormenta il nemico al turno seguente.", + name: 'Sbadiglio', + effect: 'Chi la usa fa un grande sbadiglio che addormenta il nemico al turno seguente.', }, knockOff: { - name: "Privazione", - effect: "Attacco che blocca anche lo strumento tenuto dal nemico, impedendone l'uso nella lotta.", + name: 'Privazione', + effect: 'Attacco che blocca anche lo strumento tenuto dal nemico, impedendone l\'uso nella lotta.', }, endeavor: { - name: "Rimonta", - effect: "Attacco che riduce i PS del nemico a una quantità pari ai PS di chi la usa.", + name: 'Rimonta', + effect: 'Attacco che riduce i PS del nemico a una quantità pari ai PS di chi la usa.', }, eruption: { - name: "Eruzione", - effect: "Attacco impetuoso ed esplosivo la cui potenza è proporzionale ai PS di chi lo usa.", + name: 'Eruzione', + effect: 'Attacco impetuoso ed esplosivo la cui potenza è proporzionale ai PS di chi lo usa.', }, skillSwap: { - name: "Baratto", - effect: "Chi la usa sfrutta le sue facoltà mentali per scambiare l'abilità con il bersaglio.", + name: 'Baratto', + effect: 'Chi la usa sfrutta le sue facoltà mentali per scambiare l\'abilità con il bersaglio.', }, imprison: { - name: "Esclusiva", - effect: "Chi la usa impedisce al nemico di usare mosse che conoscono entrambi.", + name: 'Esclusiva', + effect: 'Chi la usa impedisce al nemico di usare mosse che conoscono entrambi.', }, refresh: { - name: "Rinfrescata", - effect: "Chi la usa riposa per curarsi da avvelenamento, paralisi e scottatura.", + name: 'Rinfrescata', + effect: 'Chi la usa riposa per curarsi da avvelenamento, paralisi e scottatura.', }, grudge: { - name: "Rancore", - effect: "Se chi la usa va KO, i PP della mossa nemica che lo ha messo fuori gioco si azzerano.", + name: 'Rancore', + effect: 'Se chi la usa va KO, i PP della mossa nemica che lo ha messo fuori gioco si azzerano.', }, snatch: { - name: "Scippo", - effect: "Chi la usa ruba e utilizza la mossa curativa o modifica-statistiche che il bersaglio stava per usare.", + name: 'Scippo', + effect: 'Chi la usa ruba e utilizza la mossa curativa o modifica-statistiche che il bersaglio stava per usare.', }, secretPower: { - name: "Forzasegreta", - effect: "Attacco che può avere un effetto aggiuntivo a seconda del luogo in cui si trova chi lo usa.", + name: 'Forzasegreta', + effect: 'Attacco che può avere un effetto aggiuntivo a seconda del luogo in cui si trova chi lo usa.', }, dive: { - name: "Sub", - effect: "Chi la usa si tuffa in acqua per emergere e attaccare al turno seguente. Fuori dalla lotta permette di immergersi sott'acqua.", + name: 'Sub', + effect: 'Chi la usa si tuffa in acqua per emergere e attaccare al turno seguente. Fuori dalla lotta permette di immergersi sott\'acqua.', }, armThrust: { - name: "Sberletese", - effect: "Raffica di ceffoni che colpisce da due a cinque volte di fila.", + name: 'Sberletese', + effect: 'Raffica di ceffoni che colpisce da due a cinque volte di fila.', }, camouflage: { - name: "Camuffamento", - effect: "Modifica il tipo di chi la usa a seconda del luogo, ad esempio sull'acqua, nell'erba o in una grotta.", + name: 'Camuffamento', + effect: 'Modifica il tipo di chi la usa a seconda del luogo, ad esempio sull\'acqua, nell\'erba o in una grotta.', }, tailGlow: { - name: "Codadiluce", - effect: "Chi la usa fissa una luce forte per concentrarsi e aumentare moltissimo l'Attacco Speciale.", + name: 'Codadiluce', + effect: 'Chi la usa fissa una luce forte per concentrarsi e aumentare moltissimo l\'Attacco Speciale.', }, lusterPurge: { - name: "Abbagliante", - effect: "Chi la usa scatena un'esplosione abbagliante che può anche ridurre la Difesa Speciale del Pokémon colpito.", + name: 'Abbagliante', + effect: 'Chi la usa scatena un\'esplosione abbagliante che può anche ridurre la Difesa Speciale del Pokémon colpito.', }, mistBall: { - name: "Foschisfera", - effect: "Una sfera coperta di nebbia danneggia il nemico. Può anche ridurre l'Attacco Speciale.", + name: 'Foschisfera', + effect: 'Una sfera coperta di nebbia danneggia il nemico. Può anche ridurre l\'Attacco Speciale.', }, featherDance: { - name: "Danzadipiume", - effect: "Chi la usa copre il nemico con un manto di piume che riduce di molto il suo Attacco.", + name: 'Danzadipiume', + effect: 'Chi la usa copre il nemico con un manto di piume che riduce di molto il suo Attacco.', }, teeterDance: { - name: "Strampadanza", - effect: "Chi la usa esegue una danza goffa che confonde tutti i Pokémon attorno.", + name: 'Strampadanza', + effect: 'Chi la usa esegue una danza goffa che confonde tutti i Pokémon attorno.', }, blazeKick: { - name: "Calciardente", - effect: "Chi la usa tira un calcio. Probabile brutto colpo. Può anche causare una scottatura.", + name: 'Calciardente', + effect: 'Chi la usa tira un calcio. Probabile brutto colpo. Può anche causare una scottatura.', }, mudSport: { - name: "Fangata", - effect: "Chi la usa si ricopre di fango indebolendo le mosse di tipo Elettro finché resta in campo.", + name: 'Fangata', + effect: 'Chi la usa si ricopre di fango indebolendo le mosse di tipo Elettro finché resta in campo.', }, iceBall: { - name: "Palla Gelo", - effect: "Chi la usa attacca il nemico rotolando per cinque turni, con aumento progressivo della potenza ogni volta che va a segno.", + name: 'Palla Gelo', + effect: 'Chi la usa attacca il nemico rotolando per cinque turni, con aumento progressivo della potenza ogni volta che va a segno.', }, needleArm: { - name: "Pugnospine", - effect: "Chi la usa attacca colpendo il bersaglio con i suoi arti pieni di spine. Può far tentennare il Pokémon colpito.", + name: 'Pugnospine', + effect: 'Chi la usa attacca colpendo il bersaglio con i suoi arti pieni di spine. Può far tentennare il Pokémon colpito.', }, slackOff: { - name: "Pigro", - effect: "Chi la usa si rilassa recuperando metà dei propri PS massimi.", + name: 'Pigro', + effect: 'Chi la usa si rilassa recuperando metà dei propri PS massimi.', }, hyperVoice: { - name: "Granvoce", - effect: "Chi la usa lancia un urlo straziante che danneggia i nemici.", + name: 'Granvoce', + effect: 'Chi la usa lancia un urlo straziante che danneggia i nemici.', }, poisonFang: { - name: "Velenodenti", - effect: "Chi la usa morde il nemico con denti avvelenati che possono anche iperavvelenarlo.", + name: 'Velenodenti', + effect: 'Chi la usa morde il nemico con denti avvelenati che possono anche iperavvelenarlo.', }, crushClaw: { - name: "Tritartigli", - effect: "Colpisce il nemico con artigli robusti e affilati che possono ridurne la Difesa.", + name: 'Tritartigli', + effect: 'Colpisce il nemico con artigli robusti e affilati che possono ridurne la Difesa.', }, blastBurn: { - name: "Incendio", - effect: "Potente esplosione che danneggia il nemico, ma fa saltare il turno successivo a chi la provoca.", + name: 'Incendio', + effect: 'Potente esplosione che danneggia il nemico, ma fa saltare il turno successivo a chi la provoca.', }, hydroCannon: { - name: "Idrocannone", - effect: "Colpisce il nemico con un potente getto d'acqua. Chi la usa salta il turno successivo.", + name: 'Idrocannone', + effect: 'Colpisce il nemico con un potente getto d\'acqua. Chi la usa salta il turno successivo.', }, meteorMash: { - name: "Meteorpugno", - effect: "Colpisce il nemico con un pugno veloce come una meteora. Può far pure salire l'Attacco di chi la usa.", + name: 'Meteorpugno', + effect: 'Colpisce il nemico con un pugno veloce come una meteora. Può far pure salire l\'Attacco di chi la usa.', }, astonish: { - name: "Sgomento", - effect: "Chi la usa attacca il bersaglio emettendo un verso terrificante. Può anche farlo tentennare.", + name: 'Sgomento', + effect: 'Chi la usa attacca il bersaglio emettendo un verso terrificante. Può anche farlo tentennare.', }, weatherBall: { - name: "Palla Clima", - effect: "Mossa d'attacco che varia tipo e forza in base alle condizioni atmosferiche.", + name: 'Palla Clima', + effect: 'Mossa d\'attacco che varia tipo e forza in base alle condizioni atmosferiche.', }, aromatherapy: { - name: "Aromaterapia", - effect: "Chi la usa rilascia un dolce profumo che cura tutti problemi di stato propri e degli alleati.", + name: 'Aromaterapia', + effect: 'Chi la usa rilascia un dolce profumo che cura tutti problemi di stato propri e degli alleati.', }, fakeTears: { - name: "Falselacrime", - effect: "Chi la usa inscena un pianto teatrale per commuovere il nemico. Ne riduce di molto la Difesa Speciale.", + name: 'Falselacrime', + effect: 'Chi la usa inscena un pianto teatrale per commuovere il nemico. Ne riduce di molto la Difesa Speciale.', }, airCutter: { - name: "Aerasoio", - effect: "Chi la usa provoca un vento tagliente che sferza i nemici. Probabile brutto colpo.", + name: 'Aerasoio', + effect: 'Chi la usa provoca un vento tagliente che sferza i nemici. Probabile brutto colpo.', }, overheat: { - name: "Vampata", - effect: "Chi la usa sferra un potente attacco, ma il contraccolpo riduce di molto il suo Attacco Speciale.", + name: 'Vampata', + effect: 'Chi la usa sferra un potente attacco, ma il contraccolpo riduce di molto il suo Attacco Speciale.', }, odorSleuth: { - name: "Segugio", - effect: "Chi la usa rende i Pokémon di tipo Spettro vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.", + name: 'Segugio', + effect: 'Chi la usa rende i Pokémon di tipo Spettro vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.', }, rockTomb: { - name: "Rocciotomba", - effect: "Colpisce il nemico con rocce. Inoltre, lo rallenta riducendone la Velocità.", + name: 'Rocciotomba', + effect: 'Colpisce il nemico con rocce. Inoltre, lo rallenta riducendone la Velocità.', }, silverWind: { - name: "Ventargenteo", - effect: "Attacca con un forte vento di polvere di squame. Tutte le statistiche di chi la usa possono salire.", + name: 'Ventargenteo', + effect: 'Attacca con un forte vento di polvere di squame. Tutte le statistiche di chi la usa possono salire.', }, metalSound: { - name: "Ferrostrido", - effect: "Orribile stridio, simile a quello prodotto dal metallo, che riduce di molto la Difesa Speciale del nemico.", + name: 'Ferrostrido', + effect: 'Orribile stridio, simile a quello prodotto dal metallo, che riduce di molto la Difesa Speciale del nemico.', }, grassWhistle: { - name: "Meloderba", - effect: "Una dolce melodia culla il bersaglio e lo costringe ad addormentarsi.", + name: 'Meloderba', + effect: 'Una dolce melodia culla il bersaglio e lo costringe ad addormentarsi.', }, tickle: { - name: "Solletico", - effect: "Chi la usa solletica il nemico e lo fa ridere, riducendo il suo Attacco e la sua Difesa.", + name: 'Solletico', + effect: 'Chi la usa solletica il nemico e lo fa ridere, riducendo il suo Attacco e la sua Difesa.', }, cosmicPower: { - name: "Cosmoforza", - effect: "Chi la usa assorbe una forza mistica dallo spazio che aumenta la Difesa e la Difesa Speciale.", + name: 'Cosmoforza', + effect: 'Chi la usa assorbe una forza mistica dallo spazio che aumenta la Difesa e la Difesa Speciale.', }, waterSpout: { - name: "Zampillo", - effect: "Lancia un getto d'acqua contro il nemico che ha davanti e quelli adiacenti. La potenza è proporzionale al numero di PS di chi la usa.", + name: 'Zampillo', + effect: 'Lancia un getto d\'acqua contro il nemico che ha davanti e quelli adiacenti. La potenza è proporzionale al numero di PS di chi la usa.', }, signalBeam: { - name: "Segnoraggio", - effect: "Chi la usa attacca con uno strano raggio di luce che può anche confondere il Pokémon colpito.", + name: 'Segnoraggio', + effect: 'Chi la usa attacca con uno strano raggio di luce che può anche confondere il Pokémon colpito.', }, shadowPunch: { - name: "Pugnodombra", - effect: "Il nemico riceve un pugno proveniente dalle tenebre. Questa mossa è infallibile.", + name: 'Pugnodombra', + effect: 'Il nemico riceve un pugno proveniente dalle tenebre. Questa mossa è infallibile.', }, extrasensory: { - name: "Extrasenso", - effect: "Chi la usa attacca con una misteriosa forza invisibile. Può far tentennare il nemico.", + name: 'Extrasenso', + effect: 'Chi la usa attacca con una misteriosa forza invisibile. Può far tentennare il nemico.', }, skyUppercut: { - name: "Stramontante", - effect: "Chi la usa attacca il nemico con un montante che può arrivare fino in cielo.", + name: 'Stramontante', + effect: 'Chi la usa attacca il nemico con un montante che può arrivare fino in cielo.', }, sandTomb: { - name: "Sabbiotomba", - effect: "Chi la usa intrappola il nemico in un turbine di sabbia per quattro o cinque turni.", + name: 'Sabbiotomba', + effect: 'Chi la usa intrappola il nemico in un turbine di sabbia per quattro o cinque turni.', }, sheerCold: { - name: "Purogelo", - effect: "Ondata di freddo penetrante che, se va a segno, fa andare KO il nemico.", + name: 'Purogelo', + effect: 'Ondata di freddo penetrante che, se va a segno, fa andare KO il nemico.', }, muddyWater: { - name: "Fanghiglia", - effect: "Chi la usa attacca con un getto di fango che può anche ridurre la precisione dei nemici.", + name: 'Fanghiglia', + effect: 'Chi la usa attacca con un getto di fango che può anche ridurre la precisione dei nemici.', }, bulletSeed: { - name: "Semitraglia", - effect: "Chi la usa spara da due a cinque raffiche di semi contro il bersaglio in successione.", + name: 'Semitraglia', + effect: 'Chi la usa spara da due a cinque raffiche di semi contro il bersaglio in successione.', }, aerialAce: { - name: "Aeroassalto", - effect: "Chi la usa attacca il nemico a grande velocità. Questa mossa è infallibile.", + name: 'Aeroassalto', + effect: 'Chi la usa attacca il nemico a grande velocità. Questa mossa è infallibile.', }, icicleSpear: { - name: "Gelolancia", - effect: "Chi la usa spara ghiaccioli affilati contro il nemico da due a cinque volte di fila.", + name: 'Gelolancia', + effect: 'Chi la usa spara ghiaccioli affilati contro il nemico da due a cinque volte di fila.', }, ironDefense: { - name: "Ferroscudo", - effect: "Il corpo di chi la usa si indurisce come il ferro, facendone salire di molto la Difesa.", + name: 'Ferroscudo', + effect: 'Il corpo di chi la usa si indurisce come il ferro, facendone salire di molto la Difesa.', }, block: { - name: "Blocco", - effect: "Chi la usa sbarra la strada al nemico impedendone la fuga o la sostituzione.", + name: 'Blocco', + effect: 'Chi la usa sbarra la strada al nemico impedendone la fuga o la sostituzione.', }, howl: { - name: "Gridodilotta", - effect: "Chi la usa emette un verso molto forte per darsi coraggio e aumentare l'Attacco.", + name: 'Gridodilotta', + effect: 'Chi la usa emette un verso molto forte per darsi coraggio e aumentare l\'Attacco.', }, dragonClaw: { - name: "Dragartigli", - effect: "Chi la usa attacca con artigli affilati che graffiano il nemico rapidamente e con grande forza.", + name: 'Dragartigli', + effect: 'Chi la usa attacca con artigli affilati che graffiano il nemico rapidamente e con grande forza.', }, frenzyPlant: { - name: "Radicalbero", - effect: "Un groviglio di radici colpisce il nemico. Chi la usa salta il turno successivo.", + name: 'Radicalbero', + effect: 'Un groviglio di radici colpisce il nemico. Chi la usa salta il turno successivo.', }, bulkUp: { - name: "Granfisico", - effect: "Chi la usa tende i muscoli per gonfiare il corpo, aumentando Difesa e Attacco.", + name: 'Granfisico', + effect: 'Chi la usa tende i muscoli per gonfiare il corpo, aumentando Difesa e Attacco.', }, bounce: { - name: "Rimbalzo", - effect: "Chi la usa balza in alto e ricade sul nemico dopo un turno. Può anche paralizzare.", + name: 'Rimbalzo', + effect: 'Chi la usa balza in alto e ricade sul nemico dopo un turno. Può anche paralizzare.', }, mudShot: { - name: "Colpodifango", - effect: "Chi la usa attacca lanciando fango sul nemico. Riduce anche la Velocità.", + name: 'Colpodifango', + effect: 'Chi la usa attacca lanciando fango sul nemico. Riduce anche la Velocità.', }, poisonTail: { - name: "Velenocoda", - effect: "Chi la usa colpisce con la coda e può avvelenare il nemico. Probabile brutto colpo.", + name: 'Velenocoda', + effect: 'Chi la usa colpisce con la coda e può avvelenare il nemico. Probabile brutto colpo.', }, covet: { - name: "Supplica", - effect: "Chi la usa attacca il bersaglio sorridendo e gli ruba lo strumento che tiene.", + name: 'Supplica', + effect: 'Chi la usa attacca il bersaglio sorridendo e gli ruba lo strumento che tiene.', }, voltTackle: { - name: "Locomovolt", - effect: "Chi la usa si carica di elettricità e poi attacca. Può paralizzare il nemico. Il contraccolpo causa seri danni.", + name: 'Locomovolt', + effect: 'Chi la usa si carica di elettricità e poi attacca. Può paralizzare il nemico. Il contraccolpo causa seri danni.', }, magicalLeaf: { - name: "Fogliamagica", - effect: "Chi la usa sparpaglia strane foglie che inseguono il bersaglio. Questa mossa è infallibile.", + name: 'Fogliamagica', + effect: 'Chi la usa sparpaglia strane foglie che inseguono il bersaglio. Questa mossa è infallibile.', }, waterSport: { - name: "Docciascudo", - effect: "Chi la usa s'impregna d'acqua indebolendo le mosse di tipo Fuoco finché resta in campo.", + name: 'Docciascudo', + effect: 'Chi la usa s\'impregna d\'acqua indebolendo le mosse di tipo Fuoco finché resta in campo.', }, calmMind: { - name: "Calmamente", - effect: "Chi la usa, meditando, placa il proprio spirito per aumentare l'Attacco Speciale e la Difesa Speciale.", + name: 'Calmamente', + effect: 'Chi la usa, meditando, placa il proprio spirito per aumentare l\'Attacco Speciale e la Difesa Speciale.', }, leafBlade: { - name: "Fendifoglia", - effect: "Colpisce il nemico usando una foglia affilata come una spada. Probabile brutto colpo.", + name: 'Fendifoglia', + effect: 'Colpisce il nemico usando una foglia affilata come una spada. Probabile brutto colpo.', }, dragonDance: { - name: "Dragodanza", - effect: "Danza mistica e vigorosa che aumenta l'Attacco e la Velocità di chi la usa.", + name: 'Dragodanza', + effect: 'Danza mistica e vigorosa che aumenta l\'Attacco e la Velocità di chi la usa.', }, rockBlast: { - name: "Cadutamassi", - effect: "Colpisce il nemico con dei massi pesanti lanciati in rapida successione. Il numero di massi varia da due a cinque.", + name: 'Cadutamassi', + effect: 'Colpisce il nemico con dei massi pesanti lanciati in rapida successione. Il numero di massi varia da due a cinque.', }, shockWave: { - name: "Ondashock", - effect: "Chi la usa colpisce il nemico con una scossa di elettricità. È impossibile eludere questa mossa.", + name: 'Ondashock', + effect: 'Chi la usa colpisce il nemico con una scossa di elettricità. È impossibile eludere questa mossa.', }, waterPulse: { - name: "Idropulsar", - effect: "Il nemico viene colpito da un getto d'acqua potentissimo che può anche confonderlo.", + name: 'Idropulsar', + effect: 'Il nemico viene colpito da un getto d\'acqua potentissimo che può anche confonderlo.', }, doomDesire: { - name: "Desiderio Fatale", - effect: "Intensa luce solare che colpisce il nemico dopo due turni dall'uso della mossa.", + name: 'Desiderio Fatale', + effect: 'Intensa luce solare che colpisce il nemico dopo due turni dall\'uso della mossa.', }, psychoBoost: { - name: "Psicoslancio", - effect: "Chi la usa sferra un potente attacco, ma il contraccolpo riduce di molto il suo Attacco Speciale.", + name: 'Psicoslancio', + effect: 'Chi la usa sferra un potente attacco, ma il contraccolpo riduce di molto il suo Attacco Speciale.', }, roost: { - name: "Trespolo", - effect: "Chi la usa sta fermo e riposa, recuperando metà dei propri PS massimi.", + name: 'Trespolo', + effect: 'Chi la usa sta fermo e riposa, recuperando metà dei propri PS massimi.', }, gravity: { - name: "Gravità", - effect: "Intensifica la gravità per cinque turni. Le mosse che fanno volare e Levitazione sono inutilizzabili.", + name: 'Gravità', + effect: 'Intensifica la gravità per cinque turni. Le mosse che fanno volare e Levitazione sono inutilizzabili.', }, miracleEye: { - name: "Miracolvista", - effect: "Chi la usa rende i Pokémon di tipo Buio vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.", + name: 'Miracolvista', + effect: 'Chi la usa rende i Pokémon di tipo Buio vulnerabili a qualsiasi tipo di mossa e può, inoltre, colpire i nemici sfuggenti.', }, wakeUpSlap: { - name: "Svegliopacca", - effect: "Un attacco che infligge doppi danni se il nemico è Addormentato. Inoltre, lo sveglierà dal sonno.", + name: 'Svegliopacca', + effect: 'Un attacco che infligge doppi danni se il nemico è Addormentato. Inoltre, lo sveglierà dal sonno.', }, hammerArm: { - name: "Martelpugno", - effect: "Chi la usa colpisce il nemico con il suo pugno forte e pesante, ma perde Velocità.", + name: 'Martelpugno', + effect: 'Chi la usa colpisce il nemico con il suo pugno forte e pesante, ma perde Velocità.', }, gyroBall: { - name: "Vortexpalla", - effect: "Chi la usa colpisce il nemico con un vortice rapidissimo. Più lento è chi la usa, maggiore è il danno.", + name: 'Vortexpalla', + effect: 'Chi la usa colpisce il nemico con un vortice rapidissimo. Più lento è chi la usa, maggiore è il danno.', }, healingWish: { - name: "Curardore", - effect: "Chi la usa va KO, ma il Pokémon che lo sostituisce recupera tutti i PS e risolve i problemi di stato.", + name: 'Curardore', + effect: 'Chi la usa va KO, ma il Pokémon che lo sostituisce recupera tutti i PS e risolve i problemi di stato.', }, brine: { - name: "Acquadisale", - effect: "Se i PS del nemico sono scesi a metà o meno, questa mossa colpirà con il doppio della potenza.", + name: 'Acquadisale', + effect: 'Se i PS del nemico sono scesi a metà o meno, questa mossa colpirà con il doppio della potenza.', }, naturalGift: { - name: "Dononaturale", - effect: "Chi la usa trae forza dalla Bacca che tiene. Da questa dipendono il tipo e la forza dell'attacco.", + name: 'Dononaturale', + effect: 'Chi la usa trae forza dalla Bacca che tiene. Da questa dipendono il tipo e la forza dell\'attacco.', }, feint: { - name: "Fintoattacco", - effect: "Un attacco che colpisce un nemico che ha usato Protezione od Individua. Ne rimuoverà inoltre gli effetti.", + name: 'Fintoattacco', + effect: 'Un attacco che colpisce un nemico che ha usato Protezione od Individua. Ne rimuoverà inoltre gli effetti.', }, pluck: { - name: "Spennata", - effect: "Chi la usa becca il bersaglio. Inoltre, se questi tiene una Bacca, gliela ruba e ne sfrutta gli effetti.", + name: 'Spennata', + effect: 'Chi la usa becca il bersaglio. Inoltre, se questi tiene una Bacca, gliela ruba e ne sfrutta gli effetti.', }, tailwind: { - name: "Ventoincoda", - effect: "Chi la usa crea turbolente raffiche di vento che aumentano la sua Velocità e quella di tutti i Pokémon della squadra.", + name: 'Ventoincoda', + effect: 'Chi la usa crea turbolente raffiche di vento che aumentano la sua Velocità e quella di tutti i Pokémon della squadra.', }, acupressure: { - name: "Acupressione", - effect: "Chi la usa esercita pressione su alcuni punti nevralgici e aumenta di molto una statistica a caso.", + name: 'Acupressione', + effect: 'Chi la usa esercita pressione su alcuni punti nevralgici e aumenta di molto una statistica a caso.', }, metalBurst: { - name: "Metalscoppio", - effect: "Chi la usa si vendica sul nemico che l'ha appena ferito con una mossa anche più potente.", + name: 'Metalscoppio', + effect: 'Chi la usa si vendica sul nemico che l\'ha appena ferito con una mossa anche più potente.', }, uTurn: { - name: "Retromarcia", - effect: "Dopo aver selezionato questo attacco, chi la usa colpisce il nemico per poi essere sostituito con un altro Pokémon della squadra.", + name: 'Retromarcia', + effect: 'Dopo aver selezionato questo attacco, chi la usa colpisce il nemico per poi essere sostituito con un altro Pokémon della squadra.', }, closeCombat: { - name: "Zuffa", - effect: "Chi la usa attacca abbassando la guardia. La propria Difesa e la Difesa Speciale si riducono.", + name: 'Zuffa', + effect: 'Chi la usa attacca abbassando la guardia. La propria Difesa e la Difesa Speciale si riducono.', }, payback: { - name: "Rivincita", - effect: "Chi la usa accumula forza, poi attacca. La potenza raddoppia se agisce dopo il Pokémon nemico.", + name: 'Rivincita', + effect: 'Chi la usa accumula forza, poi attacca. La potenza raddoppia se agisce dopo il Pokémon nemico.', }, assurance: { - name: "Garanzia", - effect: "Se il nemico ha già subito dei danni nello stesso turno, la potenza di questa mossa raddoppia.", + name: 'Garanzia', + effect: 'Se il nemico ha già subito dei danni nello stesso turno, la potenza di questa mossa raddoppia.', }, embargo: { - name: "Divieto", - effect: "Impedisce al nemico di usare lo strumento che tiene e al suo Allenatore di usarne altri sul Pokémon.", + name: 'Divieto', + effect: 'Impedisce al nemico di usare lo strumento che tiene e al suo Allenatore di usarne altri sul Pokémon.', }, fling: { - name: "Lancio", - effect: "Chi la usa lancia sul nemico lo strumento che tiene. La forza e l'effetto dipendono dallo strumento.", + name: 'Lancio', + effect: 'Chi la usa lancia sul nemico lo strumento che tiene. La forza e l\'effetto dipendono dallo strumento.', }, psychoShift: { - name: "Psicotrasfer", - effect: "Con la forza psichica e la suggestione, chi la usa può trasferire i suoi problemi di stato al Pokémon colpito.", + name: 'Psicotrasfer', + effect: 'Con la forza psichica e la suggestione, chi la usa può trasferire i suoi problemi di stato al Pokémon colpito.', }, trumpCard: { - name: "Asso", - effect: "Minori PP rimangono a questa mossa, e maggiori danni apporterà al nemico.", + name: 'Asso', + effect: 'Minori PP rimangono a questa mossa, e maggiori danni apporterà al nemico.', }, healBlock: { - name: "Anticura", - effect: "Chi la usa impedisce al nemico di utilizzare mosse o abilità recupera-PS per cinque turni.", + name: 'Anticura', + effect: 'Chi la usa impedisce al nemico di utilizzare mosse o abilità recupera-PS per cinque turni.', }, wringOut: { - name: "Strizzata", - effect: "Chi la usa stritola con forza il nemico. Più PS ha il nemico, maggiore è la potenza della mossa.", + name: 'Strizzata', + effect: 'Chi la usa stritola con forza il nemico. Più PS ha il nemico, maggiore è la potenza della mossa.', }, powerTrick: { - name: "Ingannoforza", - effect: "Mossa psichica che permette a chi la usa di scambiare i valori delle sue statistiche di Attacco e Difesa.", + name: 'Ingannoforza', + effect: 'Mossa psichica che permette a chi la usa di scambiare i valori delle sue statistiche di Attacco e Difesa.', }, gastroAcid: { - name: "Gastroacido", - effect: "Chi la usa lancia acidi gastrici sul nemico. Il fluido annulla l'abilità del nemico.", + name: 'Gastroacido', + effect: 'Chi la usa lancia acidi gastrici sul nemico. Il fluido annulla l\'abilità del nemico.', }, luckyChant: { - name: "Fortuncanto", - effect: "Chi la usa rivolge un incantesimo al cielo, impedendo al nemico di sferrare brutti colpi alla squadra.", + name: 'Fortuncanto', + effect: 'Chi la usa rivolge un incantesimo al cielo, impedendo al nemico di sferrare brutti colpi alla squadra.', }, meFirst: { - name: "Precedenza", - effect: "Se chi la usa è più veloce del nemico, gli ruba la mossa e gliela ritorce contro con potenza persino maggiore.", + name: 'Precedenza', + effect: 'Se chi la usa è più veloce del nemico, gli ruba la mossa e gliela ritorce contro con potenza persino maggiore.', }, copycat: { - name: "Copione", - effect: "Chi la usa imita l'ultima mossa usata dal nemico. La mossa fallisce se questo non ha selezionato alcuna mossa.", + name: 'Copione', + effect: 'Chi la usa imita l\'ultima mossa usata dal nemico. La mossa fallisce se questo non ha selezionato alcuna mossa.', }, powerSwap: { - name: "Barattoforza", - effect: "Chi la usa sfrutta la sua forza psichica per scambiare le modifiche ad Attacco e Attacco Speciale con il bersaglio.", + name: 'Barattoforza', + effect: 'Chi la usa sfrutta la sua forza psichica per scambiare le modifiche ad Attacco e Attacco Speciale con il bersaglio.', }, guardSwap: { - name: "Barattoscudo", - effect: "Chi la usa sfrutta la sua forza psichica per scambiare le modifiche a Difesa e a Difesa Speciale con il bersaglio.", + name: 'Barattoscudo', + effect: 'Chi la usa sfrutta la sua forza psichica per scambiare le modifiche a Difesa e a Difesa Speciale con il bersaglio.', }, punishment: { - name: "Punizione", - effect: "Questa mossa diventa più potente ogni volta che il nemico aumenta le proprie statistiche.", + name: 'Punizione', + effect: 'Questa mossa diventa più potente ogni volta che il nemico aumenta le proprie statistiche.', }, lastResort: { - name: "Ultimascelta", - effect: "Per usare questa mossa, bisogna prima avvalersi in lotta di tutte le altre mosse conosciute.", + name: 'Ultimascelta', + effect: 'Per usare questa mossa, bisogna prima avvalersi in lotta di tutte le altre mosse conosciute.', }, worrySeed: { - name: "Affannoseme", - effect: "Un seme che causa ansia viene piantato sul bersaglio. Ne muta l'abilità in Insonnia e ne previene o rimuove il sonno.", + name: 'Affannoseme', + effect: 'Un seme che causa ansia viene piantato sul bersaglio. Ne muta l\'abilità in Insonnia e ne previene o rimuove il sonno.', }, suckerPunch: { - name: "Sbigoattacco", - effect: "Chi la usa può attaccare per primo. Fallisce se il nemico non sta preparando un attacco.", + name: 'Sbigoattacco', + effect: 'Chi la usa può attaccare per primo. Fallisce se il nemico non sta preparando un attacco.', }, toxicSpikes: { - name: "Fielepunte", - effect: "Chi la usa piazza ai piedi del nemico delle punte avvelenate. Avvelena ogni nemico che entra in lotta.", + name: 'Fielepunte', + effect: 'Chi la usa piazza ai piedi del nemico delle punte avvelenate. Avvelena ogni nemico che entra in lotta.', }, heartSwap: { - name: "Cuorbaratto", - effect: "Chi la usa sfrutta la sua forza psichica per scambiare le modifiche alle statistiche con il bersaglio.", + name: 'Cuorbaratto', + effect: 'Chi la usa sfrutta la sua forza psichica per scambiare le modifiche alle statistiche con il bersaglio.', }, aquaRing: { - name: "Acquanello", - effect: "Chi la usa si avvolge in un velo d'acqua. Recupera alcuni PS ad ogni turno.", + name: 'Acquanello', + effect: 'Chi la usa si avvolge in un velo d\'acqua. Recupera alcuni PS ad ogni turno.', }, magnetRise: { - name: "Magnetascesa", - effect: "Chi la usa si solleva in aria per cinque turni grazie a un campo elettromagnetico.", + name: 'Magnetascesa', + effect: 'Chi la usa si solleva in aria per cinque turni grazie a un campo elettromagnetico.', }, flareBlitz: { - name: "Fuococarica", - effect: "Chi la usa si ricopre di fuoco e carica il bersaglio, ma subisce il contraccolpo. Può anche scottare.", + name: 'Fuococarica', + effect: 'Chi la usa si ricopre di fuoco e carica il bersaglio, ma subisce il contraccolpo. Può anche scottare.', }, forcePalm: { - name: "Palmoforza", - effect: "Chi la usa attacca con un'onda d'urto che può anche paralizzare il bersaglio.", + name: 'Palmoforza', + effect: 'Chi la usa attacca con un\'onda d\'urto che può anche paralizzare il bersaglio.', }, auraSphere: { - name: "Sferapulsar", - effect: "Chi la usa rilascia una forza eterea dal profondo del corpo. La mossa è infallibile.", + name: 'Sferapulsar', + effect: 'Chi la usa rilascia una forza eterea dal profondo del corpo. La mossa è infallibile.', }, rockPolish: { - name: "Lucidatura", - effect: "Chi la usa leviga il proprio corpo per ridurne l'attrito. Aumenta di molto la Velocità.", + name: 'Lucidatura', + effect: 'Chi la usa leviga il proprio corpo per ridurne l\'attrito. Aumenta di molto la Velocità.', }, poisonJab: { - name: "Velenpuntura", - effect: "Il nemico viene colpito con un tentacolo od un braccio intriso di veleno. Può anche avvelenarlo.", + name: 'Velenpuntura', + effect: 'Il nemico viene colpito con un tentacolo od un braccio intriso di veleno. Può anche avvelenarlo.', }, darkPulse: { - name: "Neropulsar", - effect: "Chi la usa emana un'aura impregnata di oscuri pensieri. Può anche far tentennare il Pokémon colpito.", + name: 'Neropulsar', + effect: 'Chi la usa emana un\'aura impregnata di oscuri pensieri. Può anche far tentennare il Pokémon colpito.', }, nightSlash: { - name: "Nottesferza", - effect: "Chi la usa colpisce il nemico appena si presenta l'occasione. Probabile brutto colpo.", + name: 'Nottesferza', + effect: 'Chi la usa colpisce il nemico appena si presenta l\'occasione. Probabile brutto colpo.', }, aquaTail: { - name: "Idrondata", - effect: "Chi la usa attacca agitando la coda come se fosse una violenta ondata in una tempesta furiosa.", + name: 'Idrondata', + effect: 'Chi la usa attacca agitando la coda come se fosse una violenta ondata in una tempesta furiosa.', }, seedBomb: { - name: "Semebomba", - effect: "Chi la usa emette una raffica di semi dal guscio duro che colpiscono il bersaglio dall'alto.", + name: 'Semebomba', + effect: 'Chi la usa emette una raffica di semi dal guscio duro che colpiscono il bersaglio dall\'alto.', }, airSlash: { - name: "Eterelama", - effect: "Chi la usa attacca con un vento tagliente che squarcia il cielo. Può anche far tentennare il Pokémon colpito.", + name: 'Eterelama', + effect: 'Chi la usa attacca con un vento tagliente che squarcia il cielo. Può anche far tentennare il Pokémon colpito.', }, xScissor: { - name: "Forbice X", - effect: "Chi la usa colpisce il nemico usando le sue falci o artigli come se fossero un paio di forbici.", + name: 'Forbice X', + effect: 'Chi la usa colpisce il nemico usando le sue falci o artigli come se fossero un paio di forbici.', }, bugBuzz: { - name: "Ronzio", - effect: "Chi la usa muove le ali per creare un suono che danneggia il nemico. Può anche ridurne la Difesa Speciale.", + name: 'Ronzio', + effect: 'Chi la usa muove le ali per creare un suono che danneggia il nemico. Può anche ridurne la Difesa Speciale.', }, dragonPulse: { - name: "Dragopulsar", - effect: "Chi la usa attacca un'onda d'urto generata spalancando la bocca.", + name: 'Dragopulsar', + effect: 'Chi la usa attacca un\'onda d\'urto generata spalancando la bocca.', }, dragonRush: { - name: "Dragofuria", - effect: "Chi la usa attacca con fare minaccioso e in questo modo può anche far tentennare il nemico.", + name: 'Dragofuria', + effect: 'Chi la usa attacca con fare minaccioso e in questo modo può anche far tentennare il nemico.', }, powerGem: { - name: "Gemmoforza", - effect: "Chi la usa attacca con un raggio di luce che brilla come se fosse fatto di pietre preziose.", + name: 'Gemmoforza', + effect: 'Chi la usa attacca con un raggio di luce che brilla come se fosse fatto di pietre preziose.', }, drainPunch: { - name: "Assorbipugno", - effect: "Pugno che assorbe energia. Fa recuperare una quantità di PS pari alla metà del danno inferto.", + name: 'Assorbipugno', + effect: 'Pugno che assorbe energia. Fa recuperare una quantità di PS pari alla metà del danno inferto.', }, vacuumWave: { - name: "Vuotonda", - effect: "Chi la usa rotea i pugni per lanciare un'onda di vuoto assoluto verso il nemico. Attacca per primo.", + name: 'Vuotonda', + effect: 'Chi la usa rotea i pugni per lanciare un\'onda di vuoto assoluto verso il nemico. Attacca per primo.', }, focusBlast: { - name: "Focalcolpo", - effect: "Chi la usa incrementa la sua concentrazione mentale per scatenare il suo potere. Può ridurre la Difesa Speciale del nemico.", + name: 'Focalcolpo', + effect: 'Chi la usa incrementa la sua concentrazione mentale per scatenare il suo potere. Può ridurre la Difesa Speciale del nemico.', }, energyBall: { - name: "Energipalla", - effect: "Chi la usa attinge energia dalla natura e la scaglia contro il bersaglio. Può anche ridurne la Difesa Speciale.", + name: 'Energipalla', + effect: 'Chi la usa attinge energia dalla natura e la scaglia contro il bersaglio. Può anche ridurne la Difesa Speciale.', }, braveBird: { - name: "Baldeali", - effect: "Chi la usa si nasconde sotto le ali e carica da bassa quota. Tuttavia, subisce considerevoli danni.", + name: 'Baldeali', + effect: 'Chi la usa si nasconde sotto le ali e carica da bassa quota. Tuttavia, subisce considerevoli danni.', }, earthPower: { - name: "Geoforza", - effect: "Dal terreno sotto il nemico si sprigiona una forza devastante. Può anche ridurne la Difesa Speciale.", + name: 'Geoforza', + effect: 'Dal terreno sotto il nemico si sprigiona una forza devastante. Può anche ridurne la Difesa Speciale.', }, switcheroo: { - name: "Rapidscambio", - effect: "Chi la usa scambia in maniera fulminea il proprio oggetto con quello del nemico.", + name: 'Rapidscambio', + effect: 'Chi la usa scambia in maniera fulminea il proprio oggetto con quello del nemico.', }, gigaImpact: { - name: "Gigaimpatto", - effect: "Chi la usa carica il nemico usando tutta la sua forza, ma al turno successivo deve riposare.", + name: 'Gigaimpatto', + effect: 'Chi la usa carica il nemico usando tutta la sua forza, ma al turno successivo deve riposare.', }, nastyPlot: { - name: "Congiura", - effect: "Chi la usa stimola il cervello pensando a cose cattive. Aumenta di molto l'Attacco Speciale.", + name: 'Congiura', + effect: 'Chi la usa stimola il cervello pensando a cose cattive. Aumenta di molto l\'Attacco Speciale.', }, bulletPunch: { - name: "Pugnoscarica", - effect: "Chi la usa attacca con una scarica di pugni veloci come proiettili. Con questa mossa si colpisce per primi.", + name: 'Pugnoscarica', + effect: 'Chi la usa attacca con una scarica di pugni veloci come proiettili. Con questa mossa si colpisce per primi.', }, avalanche: { - name: "Slavina", - effect: "Un attacco che infligge doppi danni se l'utilizzatore ha subito un attacco nello stesso turno.", + name: 'Slavina', + effect: 'Un attacco che infligge doppi danni se l\'utilizzatore ha subito un attacco nello stesso turno.', }, iceShard: { - name: "Geloscheggia", - effect: "Chi la usa crea dei pezzi di ghiaccio e li lancia. Con questa mossa si colpisce per primi.", + name: 'Geloscheggia', + effect: 'Chi la usa crea dei pezzi di ghiaccio e li lancia. Con questa mossa si colpisce per primi.', }, shadowClaw: { - name: "Ombrartigli", - effect: "Chi la usa attacca con artigli d'ombra che colpiscono con gran forza. Probabile brutto colpo.", + name: 'Ombrartigli', + effect: 'Chi la usa attacca con artigli d\'ombra che colpiscono con gran forza. Probabile brutto colpo.', }, thunderFang: { - name: "Fulmindenti", - effect: "Chi la usa morde con denti elettrificati che possono anche paralizzare o far tentennare il nemico.", + name: 'Fulmindenti', + effect: 'Chi la usa morde con denti elettrificati che possono anche paralizzare o far tentennare il nemico.', }, iceFang: { - name: "Gelodenti", - effect: "Chi la usa morde il nemico con denti di ghiaccio. Può causare congelamento e tentennamento.", + name: 'Gelodenti', + effect: 'Chi la usa morde il nemico con denti di ghiaccio. Può causare congelamento e tentennamento.', }, fireFang: { - name: "Rogodenti", - effect: "Chi la usa morde il nemico con denti infuocati. Può causare scottatura e tentennamento.", + name: 'Rogodenti', + effect: 'Chi la usa morde il nemico con denti infuocati. Può causare scottatura e tentennamento.', }, shadowSneak: { - name: "Furtivombra", - effect: "Chi la usa estende la sua ombra e attacca il nemico alle spalle. Con questa mossa si colpisce per primi.", + name: 'Furtivombra', + effect: 'Chi la usa estende la sua ombra e attacca il nemico alle spalle. Con questa mossa si colpisce per primi.', }, mudBomb: { - name: "Pantanobomba", - effect: "Chi la usa lancia dure palle di fango sul nemico. Può anche ridurne la Precisione.", + name: 'Pantanobomba', + effect: 'Chi la usa lancia dure palle di fango sul nemico. Può anche ridurne la Precisione.', }, psychoCut: { - name: "Psicotaglio", - effect: "Chi la usa colpisce il nemico con lame fatte di forza psichica. Probabile brutto colpo.", + name: 'Psicotaglio', + effect: 'Chi la usa colpisce il nemico con lame fatte di forza psichica. Probabile brutto colpo.', }, zenHeadbutt: { - name: "Cozzata Zen", - effect: "Chi la usa concentra la forza nella testa e si lancia contro il nemico. Può anche farlo tentennare.", + name: 'Cozzata Zen', + effect: 'Chi la usa concentra la forza nella testa e si lancia contro il nemico. Può anche farlo tentennare.', }, mirrorShot: { - name: "Cristalcolpo", - effect: "Chi la usa colpisce il nemico lanciando fasci d'energia dal suo corpo. Può ridurne la precisione.", + name: 'Cristalcolpo', + effect: 'Chi la usa colpisce il nemico lanciando fasci d\'energia dal suo corpo. Può ridurne la precisione.', }, flashCannon: { - name: "Cannonflash", - effect: "Chi la usa attacca raccogliendo e rilasciando energia luminosa. Può ridurre la Difesa Speciale del nemico.", + name: 'Cannonflash', + effect: 'Chi la usa attacca raccogliendo e rilasciando energia luminosa. Può ridurre la Difesa Speciale del nemico.', }, rockClimb: { - name: "Scalaroccia", - effect: "Chi la usa carica con impeto incredibile. Il colpo può confondere il nemico.", + name: 'Scalaroccia', + effect: 'Chi la usa carica con impeto incredibile. Il colpo può confondere il nemico.', }, defog: { - name: "Scacciabruma", - effect: "Chi la usa spazza via barriere come Riflesso e Schermoluce con un forte vento e riduce la capacità d'elusione del nemico.", + name: 'Scacciabruma', + effect: 'Chi la usa spazza via barriere come Riflesso e Schermoluce con un forte vento e riduce la capacità d\'elusione del nemico.', }, trickRoom: { - name: "Distortozona", - effect: "Chi la usa crea una dimensione in cui i Pokémon più lenti si muovono per primi per cinque turni.", + name: 'Distortozona', + effect: 'Chi la usa crea una dimensione in cui i Pokémon più lenti si muovono per primi per cinque turni.', }, dracoMeteor: { - name: "Dragobolide", - effect: "Attacca con meteore che cadono dal cielo. Il contraccolpo fa calare di molto l'Attacco Speciale di chi la usa.", + name: 'Dragobolide', + effect: 'Attacca con meteore che cadono dal cielo. Il contraccolpo fa calare di molto l\'Attacco Speciale di chi la usa.', }, discharge: { - name: "Scarica", - effect: "Chi la usa colpisce i Pokémon che ha intorno con un bagliore elettrico. Può anche causare paralisi.", + name: 'Scarica', + effect: 'Chi la usa colpisce i Pokémon che ha intorno con un bagliore elettrico. Può anche causare paralisi.', }, lavaPlume: { - name: "Lavasbuffo", - effect: "Chi la usa lancia fiamme scarlatte sugli altri Pokémon in campo. Può anche scottare.", + name: 'Lavasbuffo', + effect: 'Chi la usa lancia fiamme scarlatte sugli altri Pokémon in campo. Può anche scottare.', }, leafStorm: { - name: "Verdebufera", - effect: "Si forma una tempesta di foglie affilate. Il contraccolpo riduce di molto l'Attacco Speciale di chi la usa.", + name: 'Verdebufera', + effect: 'Si forma una tempesta di foglie affilate. Il contraccolpo riduce di molto l\'Attacco Speciale di chi la usa.', }, powerWhip: { - name: "Vigorcolpo", - effect: "Chi la usa agita violentemente liane o tentacoli per sferzare il bersaglio.", + name: 'Vigorcolpo', + effect: 'Chi la usa agita violentemente liane o tentacoli per sferzare il bersaglio.', }, rockWrecker: { - name: "Devastomasso", - effect: "Chi la usa attacca il nemico con un enorme masso, ma si deve riposare al turno successivo.", + name: 'Devastomasso', + effect: 'Chi la usa attacca il nemico con un enorme masso, ma si deve riposare al turno successivo.', }, crossPoison: { - name: "Velenocroce", - effect: "Attacco con zanne avvelenate che può anche avvelenare il Pokémon colpito. Probabile brutto colpo.", + name: 'Velenocroce', + effect: 'Attacco con zanne avvelenate che può anche avvelenare il Pokémon colpito. Probabile brutto colpo.', }, gunkShot: { - name: "Sporcolancio", - effect: "Chi la usa attacca il nemico con rifiuti sudici che possono anche avvelenarlo.", + name: 'Sporcolancio', + effect: 'Chi la usa attacca il nemico con rifiuti sudici che possono anche avvelenarlo.', }, ironHead: { - name: "Metaltestata", - effect: "Chi la usa colpisce il nemico con la sua testa dura come l'acciaio. Può anche farlo tentennare.", + name: 'Metaltestata', + effect: 'Chi la usa colpisce il nemico con la sua testa dura come l\'acciaio. Può anche farlo tentennare.', }, magnetBomb: { - name: "Bombagnete", - effect: "Chi la usa lancia bombe d'acciaio che si attaccano al nemico. Una mossa infallibile.", + name: 'Bombagnete', + effect: 'Chi la usa lancia bombe d\'acciaio che si attaccano al nemico. Una mossa infallibile.', }, stoneEdge: { - name: "Pietrataglio", - effect: "Chi la usa colpisce il nemico dal basso con pietre affilate. Probabile brutto colpo.", + name: 'Pietrataglio', + effect: 'Chi la usa colpisce il nemico dal basso con pietre affilate. Probabile brutto colpo.', }, captivate: { - name: "Incanto", - effect: "Se il nemico è del sesso opposto di chi la usa, sarà ammaliato e il suo Attacco Speciale diminuirà di molto.", + name: 'Incanto', + effect: 'Se il nemico è del sesso opposto di chi la usa, sarà ammaliato e il suo Attacco Speciale diminuirà di molto.', }, stealthRock: { - name: "Levitoroccia", - effect: "Chi la usa piazza una trappola di rocce sospese che danneggia i nemici che entrano in lotta.", + name: 'Levitoroccia', + effect: 'Chi la usa piazza una trappola di rocce sospese che danneggia i nemici che entrano in lotta.', }, grassKnot: { - name: "Laccioerboso", - effect: "Chi la usa intrappola il bersaglio con l'erba e lo fa cadere. Danneggia maggiormente i Pokémon più pesanti.", + name: 'Laccioerboso', + effect: 'Chi la usa intrappola il bersaglio con l\'erba e lo fa cadere. Danneggia maggiormente i Pokémon più pesanti.', }, chatter: { - name: "Schiamazzo", - effect: "Chi la usa attacca creando un'onda sonora con le parole imparate. Può anche confondere il nemico.", + name: 'Schiamazzo', + effect: 'Chi la usa attacca creando un\'onda sonora con le parole imparate. Può anche confondere il nemico.', }, judgment: { - name: "Giudizio", - effect: "Chi la usa rilascia numerosi colpi di luce. Il tipo varia a seconda della Lastra tenuta.", + name: 'Giudizio', + effect: 'Chi la usa rilascia numerosi colpi di luce. Il tipo varia a seconda della Lastra tenuta.', }, bugBite: { - name: "Coleomorso", - effect: "Chi la usa morde il nemico. Inoltre, se questi tiene una Bacca, gliela ruba e ne sfrutta gli effetti.", + name: 'Coleomorso', + effect: 'Chi la usa morde il nemico. Inoltre, se questi tiene una Bacca, gliela ruba e ne sfrutta gli effetti.', }, chargeBeam: { - name: "Raggioscossa", - effect: "Chi la usa lancia un fascio di elettricità molto intensa. Può anche aumentare il suo Attacco Speciale.", + name: 'Raggioscossa', + effect: 'Chi la usa lancia un fascio di elettricità molto intensa. Può anche aumentare il suo Attacco Speciale.', }, woodHammer: { - name: "Mazzuolegno", - effect: "Chi la usa si lancia con tutto il corpo contro il bersaglio, ma subisce anche considerevoli danni.", + name: 'Mazzuolegno', + effect: 'Chi la usa si lancia con tutto il corpo contro il bersaglio, ma subisce anche considerevoli danni.', }, aquaJet: { - name: "Acquagetto", - effect: "Chi la usa colpisce sempre per primo e a una tale velocità da rendersi quasi invisibile.", + name: 'Acquagetto', + effect: 'Chi la usa colpisce sempre per primo e a una tale velocità da rendersi quasi invisibile.', }, attackOrder: { - name: "Comandourto", - effect: "Chi la usa raduna i suoi sgherri per colpire il nemico. Probabile brutto colpo.", + name: 'Comandourto', + effect: 'Chi la usa raduna i suoi sgherri per colpire il nemico. Probabile brutto colpo.', }, defendOrder: { - name: "Comandoscudo", - effect: "Chi la usa raduna i suoi sgherri per creare uno scudo, aumentando Difesa e Difesa Speciale.", + name: 'Comandoscudo', + effect: 'Chi la usa raduna i suoi sgherri per creare uno scudo, aumentando Difesa e Difesa Speciale.', }, healOrder: { - name: "Comandocura", - effect: "Chi la usa raduna i propri sgherri per farsi curare. Recupera metà dei PS massimi.", + name: 'Comandocura', + effect: 'Chi la usa raduna i propri sgherri per farsi curare. Recupera metà dei PS massimi.', }, headSmash: { - name: "Zuccata", - effect: "Chi la usa attacca con tutta la potenza di cui dispone, ma subisce danni considerevoli.", + name: 'Zuccata', + effect: 'Chi la usa attacca con tutta la potenza di cui dispone, ma subisce danni considerevoli.', }, doubleHit: { - name: "Doppiosmash", - effect: "Chi la usa colpisce il nemico con la coda due volte di fila.", + name: 'Doppiosmash', + effect: 'Chi la usa colpisce il nemico con la coda due volte di fila.', }, roarOfTime: { - name: "Fragortempo", - effect: "Chi la usa colpisce il nemico con una forza capace di alterare il tempo, ma deve stare fermo il turno dopo.", + name: 'Fragortempo', + effect: 'Chi la usa colpisce il nemico con una forza capace di alterare il tempo, ma deve stare fermo il turno dopo.', }, spacialRend: { - name: "Fendispazio", - effect: "Chi la usa lacera il nemico e lo spazio che lo circonda. Probabile brutto colpo.", + name: 'Fendispazio', + effect: 'Chi la usa lacera il nemico e lo spazio che lo circonda. Probabile brutto colpo.', }, lunarDance: { - name: "Lunardanza", - effect: "Chi la usa va KO. Il Pokémon che lo sostituisce risolve i propri problemi di stato e recupera PS e PP.", + name: 'Lunardanza', + effect: 'Chi la usa va KO. Il Pokémon che lo sostituisce risolve i propri problemi di stato e recupera PS e PP.', }, crushGrip: { - name: "Sbriciolmano", - effect: "Colpisce il nemico con grande forza. Più PS ha il nemico, maggiore è la potenza della mossa.", + name: 'Sbriciolmano', + effect: 'Colpisce il nemico con grande forza. Più PS ha il nemico, maggiore è la potenza della mossa.', }, magmaStorm: { - name: "Magmaclisma", - effect: "Intrappola il nemico in un turbine di fuoco che dura per quattro o cinque turni.", + name: 'Magmaclisma', + effect: 'Intrappola il nemico in un turbine di fuoco che dura per quattro o cinque turni.', }, darkVoid: { - name: "Vuototetro", - effect: "Trascina i nemici in un mondo di totale oscurità e li fa addormentare.", + name: 'Vuototetro', + effect: 'Trascina i nemici in un mondo di totale oscurità e li fa addormentare.', }, seedFlare: { - name: "Infuriaseme", - effect: "Chi la usa genera un'onda d'urto dal suo corpo. Può anche ridurre di molto la Difesa Speciale del bersaglio.", + name: 'Infuriaseme', + effect: 'Chi la usa genera un\'onda d\'urto dal suo corpo. Può anche ridurre di molto la Difesa Speciale del bersaglio.', }, ominousWind: { - name: "Funestovento", - effect: "Chi la usa crea una raffica di vento ripugnante. Può aumentare tutte le statistiche di chi la usa.", + name: 'Funestovento', + effect: 'Chi la usa crea una raffica di vento ripugnante. Può aumentare tutte le statistiche di chi la usa.', }, shadowForce: { - name: "Oscurotuffo", - effect: "Chi la usa sparisce e poi colpisce il nemico al turno successivo. Evita pure Protezione o Individua.", + name: 'Oscurotuffo', + effect: 'Chi la usa sparisce e poi colpisce il nemico al turno successivo. Evita pure Protezione o Individua.', }, honeClaws: { - name: "Unghiaguzze", - effect: "Chi la usa affila i propri artigli, aumentando Attacco e precisione.", + name: 'Unghiaguzze', + effect: 'Chi la usa affila i propri artigli, aumentando Attacco e precisione.', }, wideGuard: { - name: "Bodyguard", - effect: "Chi la usa para tutti i colpi diretti alla intera squadra per un turno. Se usata in successione può fallire.", + name: 'Bodyguard', + effect: 'Chi la usa para tutti i colpi diretti alla intera squadra per un turno. Se usata in successione può fallire.', }, guardSplit: { - name: "Paridifesa", - effect: "Chi la usa sfrutta la sua forza psichica per sommare Difesa e Difesa Speciale a quelle del bersaglio e dividerle equamente.", + name: 'Paridifesa', + effect: 'Chi la usa sfrutta la sua forza psichica per sommare Difesa e Difesa Speciale a quelle del bersaglio e dividerle equamente.', }, powerSplit: { - name: "Pariattacco", - effect: "Chi la usa sfrutta la sua forza psichica per sommare Attacco e Attacco Speciale a quelli del bersaglio e dividerli equamente.", + name: 'Pariattacco', + effect: 'Chi la usa sfrutta la sua forza psichica per sommare Attacco e Attacco Speciale a quelli del bersaglio e dividerli equamente.', }, wonderRoom: { - name: "Mirabilzona", - effect: "Chi la usa crea una dimensione in cui Difesa e Difesa Speciale di tutti i Pokémon vengono scambiate per cinque turni.", + name: 'Mirabilzona', + effect: 'Chi la usa crea una dimensione in cui Difesa e Difesa Speciale di tutti i Pokémon vengono scambiate per cinque turni.', }, psyshock: { - name: "Psicoshock", - effect: "Chi la usa attacca il bersaglio facendo materializzare un misterioso raggio psichico che provoca danni fisici.", + name: 'Psicoshock', + effect: 'Chi la usa attacca il bersaglio facendo materializzare un misterioso raggio psichico che provoca danni fisici.', }, venoshock: { - name: "Velenoshock", - effect: "Lancia uno speciale liquido tossico sul bersaglio. Se questi è avvelenato, il danno provocato raddoppia.", + name: 'Velenoshock', + effect: 'Lancia uno speciale liquido tossico sul bersaglio. Se questi è avvelenato, il danno provocato raddoppia.', }, autotomize: { - name: "Sganciapesi", - effect: "Chi la usa si libera di tutti i pesi in eccesso, alleggerendosi e aumentando di molto la propria Velocità.", + name: 'Sganciapesi', + effect: 'Chi la usa si libera di tutti i pesi in eccesso, alleggerendosi e aumentando di molto la propria Velocità.', }, ragePowder: { - name: "Polverabbia", - effect: "Chi la usa attira l'attenzione dei nemici cospargendosi di una polvere irritante e diventando bersaglio di tutti gli attacchi.", + name: 'Polverabbia', + effect: 'Chi la usa attira l\'attenzione dei nemici cospargendosi di una polvere irritante e diventando bersaglio di tutti gli attacchi.', }, telekinesis: { - name: "Telecinesi", - effect: "Chi la usa fa fluttuare in aria il bersaglio, rendendolo facile da colpire per tre turni.", + name: 'Telecinesi', + effect: 'Chi la usa fa fluttuare in aria il bersaglio, rendendolo facile da colpire per tre turni.', }, magicRoom: { - name: "Magicozona", - effect: "Chi la usa crea una dimensione in cui l'effetto degli strumenti tenuti da tutti i Pokémon è annullato per cinque turni.", + name: 'Magicozona', + effect: 'Chi la usa crea una dimensione in cui l\'effetto degli strumenti tenuti da tutti i Pokémon è annullato per cinque turni.', }, smackDown: { - name: "Abbattimento", - effect: "Chi la usa lancia una pietra o un proiettile. Può colpire anche un bersaglio in volo e farlo cadere.", + name: 'Abbattimento', + effect: 'Chi la usa lancia una pietra o un proiettile. Può colpire anche un bersaglio in volo e farlo cadere.', }, stormThrow: { - name: "Tempestretta", - effect: "Chi la usa sferra un colpo micidiale al bersaglio, stritolandolo. Brutto colpo assicurato.", + name: 'Tempestretta', + effect: 'Chi la usa sferra un colpo micidiale al bersaglio, stritolandolo. Brutto colpo assicurato.', }, flameBurst: { - name: "Pirolancio", - effect: "Chi la usa emana una fiammata che colpisce il bersaglio e si propaga fino a raggiungere i Pokémon accanto.", + name: 'Pirolancio', + effect: 'Chi la usa emana una fiammata che colpisce il bersaglio e si propaga fino a raggiungere i Pokémon accanto.', }, sludgeWave: { - name: "Fangonda", - effect: "Lancia un'onda di fango che attacca tutti i Pokémon nelle vicinanze. Può anche avvelenare.", + name: 'Fangonda', + effect: 'Lancia un\'onda di fango che attacca tutti i Pokémon nelle vicinanze. Può anche avvelenare.', }, quiverDance: { - name: "Eledanza", - effect: "Danza leggiadra ed elegante che aumenta l'Attacco Speciale, la Difesa Speciale e la Velocità di chi la usa.", + name: 'Eledanza', + effect: 'Danza leggiadra ed elegante che aumenta l\'Attacco Speciale, la Difesa Speciale e la Velocità di chi la usa.', }, heavySlam: { - name: "Pesobomba", - effect: "Chi la usa si lancia contro il bersaglio con tutto il proprio peso. Più è pesante rispetto ad esso e più danni causa.", + name: 'Pesobomba', + effect: 'Chi la usa si lancia contro il bersaglio con tutto il proprio peso. Più è pesante rispetto ad esso e più danni causa.', }, synchronoise: { - name: "Sincrumore", - effect: "Chi la usa infligge danni a tutti i Pokémon del suo stesso tipo che ha vicino usando misteriose onde elettromagnetiche.", + name: 'Sincrumore', + effect: 'Chi la usa infligge danni a tutti i Pokémon del suo stesso tipo che ha vicino usando misteriose onde elettromagnetiche.', }, electroBall: { - name: "Energisfera", - effect: "Chi la usa attacca con una sfera d'energia elettrica. Più è rapido rispetto al bersaglio e più danni arreca.", + name: 'Energisfera', + effect: 'Chi la usa attacca con una sfera d\'energia elettrica. Più è rapido rispetto al bersaglio e più danni arreca.', }, soak: { - name: "Inondazione", - effect: "Chi la usa proietta un lungo getto d'acqua contro il bersaglio e lo rende un Pokémon di tipo Acqua.", + name: 'Inondazione', + effect: 'Chi la usa proietta un lungo getto d\'acqua contro il bersaglio e lo rende un Pokémon di tipo Acqua.', }, flameCharge: { - name: "Nitrocarica", - effect: "Chi la usa si copre di fuoco e attacca il bersaglio. Concentrandosi aumenta, inoltre, la propria Velocità.", + name: 'Nitrocarica', + effect: 'Chi la usa si copre di fuoco e attacca il bersaglio. Concentrandosi aumenta, inoltre, la propria Velocità.', }, coil: { - name: "Arrotola", - effect: "Chi la usa si concentra, aumentando Attacco, Difesa e precisione.", + name: 'Arrotola', + effect: 'Chi la usa si concentra, aumentando Attacco, Difesa e precisione.', }, lowSweep: { - name: "Calciobasso", - effect: "Chi la usa colpisce con un attacco fulmineo la parte inferiore del corpo del bersaglio, riducendone la Velocità.", + name: 'Calciobasso', + effect: 'Chi la usa colpisce con un attacco fulmineo la parte inferiore del corpo del bersaglio, riducendone la Velocità.', }, acidSpray: { - name: "Acidobomba", - effect: "Chi la usa attacca il bersaglio con un acido altamente corrosivo. Il fluido riduce di molto la Difesa Speciale del bersaglio.", + name: 'Acidobomba', + effect: 'Chi la usa attacca il bersaglio con un acido altamente corrosivo. Il fluido riduce di molto la Difesa Speciale del bersaglio.', }, foulPlay: { - name: "Ripicca", - effect: "Chi la usa sfrutta la forza del bersaglio. Il danno inflitto è proporzionale all'Attacco dell'avversario.", + name: 'Ripicca', + effect: 'Chi la usa sfrutta la forza del bersaglio. Il danno inflitto è proporzionale all\'Attacco dell\'avversario.', }, simpleBeam: { - name: "Ondisinvolta", - effect: "Chi la usa emette un misterioso raggio psichico che trasforma l'abilità del Pokémon colpito in Disinvoltura.", + name: 'Ondisinvolta', + effect: 'Chi la usa emette un misterioso raggio psichico che trasforma l\'abilità del Pokémon colpito in Disinvoltura.', }, entrainment: { - name: "Saltamicizia", - effect: "Chi la usa saltella con un buffo ritmo, invitando il bersaglio a imitarlo e rendendo la sua abilità identica alla propria.", + name: 'Saltamicizia', + effect: 'Chi la usa saltella con un buffo ritmo, invitando il bersaglio a imitarlo e rendendo la sua abilità identica alla propria.', }, afterYou: { - name: "Cortesia", - effect: "Chi la usa aiuta un bersaglio più lento permettendogli di agire subito dopo.", + name: 'Cortesia', + effect: 'Chi la usa aiuta un bersaglio più lento permettendogli di agire subito dopo.', }, round: { - name: "Coro", - effect: "Attacca il bersaglio con una melodia. Se usata ripetutamente da uno o più Pokémon i danni inflitti aumentano.", + name: 'Coro', + effect: 'Attacca il bersaglio con una melodia. Se usata ripetutamente da uno o più Pokémon i danni inflitti aumentano.', }, echoedVoice: { - name: "Echeggiavoce", - effect: "Attacca il bersaglio con la propria voce echeggiante. Se usata a ripetizione da uno o più Pokémon il danno aumenta.", + name: 'Echeggiavoce', + effect: 'Attacca il bersaglio con la propria voce echeggiante. Se usata a ripetizione da uno o più Pokémon il danno aumenta.', }, chipAway: { - name: "Insidia", - effect: "Chi la usa attacca non appena il bersaglio abbassa la guardia. Il danno inflitto prescinde dalle modifiche alle statistiche.", + name: 'Insidia', + effect: 'Chi la usa attacca non appena il bersaglio abbassa la guardia. Il danno inflitto prescinde dalle modifiche alle statistiche.', }, clearSmog: { - name: "Pulifumo", - effect: "Attacca il bersaglio lanciandogli contro una nuvola di fumo speciale, che annulla ogni modifica alle statistiche.", + name: 'Pulifumo', + effect: 'Attacca il bersaglio lanciandogli contro una nuvola di fumo speciale, che annulla ogni modifica alle statistiche.', }, storedPower: { - name: "Veicolaforza", - effect: "Attacca il bersaglio con l'energia accumulata. Più sono state aumentate le statistiche, maggiore è il danno inflitto.", + name: 'Veicolaforza', + effect: 'Attacca il bersaglio con l\'energia accumulata. Più sono state aumentate le statistiche, maggiore è il danno inflitto.', }, quickGuard: { - name: "Anticipo", - effect: "Chi la usa protegge tutta la squadra dalle mosse dei nemici che fanno colpire per primi. Se usata in successione può fallire.", + name: 'Anticipo', + effect: 'Chi la usa protegge tutta la squadra dalle mosse dei nemici che fanno colpire per primi. Se usata in successione può fallire.', }, allySwitch: { - name: "Cambiaposto", - effect: "Chi la usa si teletrasporta al posto di un compagno in campo, grazie ad un misterioso potere.", + name: 'Cambiaposto', + effect: 'Chi la usa si teletrasporta al posto di un compagno in campo, grazie ad un misterioso potere.', }, scald: { - name: "Idrovampata", - effect: "Chi la usa attacca il bersaglio con un getto d'acqua bollente che può anche scottarlo.", + name: 'Idrovampata', + effect: 'Chi la usa attacca il bersaglio con un getto d\'acqua bollente che può anche scottarlo.', }, shellSmash: { - name: "Gettaguscio", - effect: "Chi la usa si disfa del guscio. Difesa e Dif. Sp. calano, ma aumentano di molto Attacco, Att. Sp. e Velocità.", + name: 'Gettaguscio', + effect: 'Chi la usa si disfa del guscio. Difesa e Dif. Sp. calano, ma aumentano di molto Attacco, Att. Sp. e Velocità.', }, healPulse: { - name: "Curapulsar", - effect: "Chi la usa lancia un'onda rilassante che fa recuperare al bersaglio metà dei suoi PS massimi.", + name: 'Curapulsar', + effect: 'Chi la usa lancia un\'onda rilassante che fa recuperare al bersaglio metà dei suoi PS massimi.', }, hex: { - name: "Sciagura", - effect: "Attacco che causa un danno enorme se il bersaglio ha problemi di stato.", + name: 'Sciagura', + effect: 'Attacco che causa un danno enorme se il bersaglio ha problemi di stato.', }, skyDrop: { - name: "Cadutalibera", - effect: "Porta il bersaglio in cielo e lo scaglia a terra al turno successivo. Il bersaglio catturato non può muoversi.", + name: 'Cadutalibera', + effect: 'Porta il bersaglio in cielo e lo scaglia a terra al turno successivo. Il bersaglio catturato non può muoversi.', }, shiftGear: { - name: "Cambiomarcia", - effect: "Facendo ruotare gli ingranaggi, chi la usa aumenta non solo il proprio Attacco, ma anche di molto la propria Velocità.", + name: 'Cambiomarcia', + effect: 'Facendo ruotare gli ingranaggi, chi la usa aumenta non solo il proprio Attacco, ma anche di molto la propria Velocità.', }, circleThrow: { - name: "Ribaltiro", - effect: "Il bersaglio è scaraventato via ed è costretto a lasciare il posto a un altro. Se è selvatico, la lotta finisce.", + name: 'Ribaltiro', + effect: 'Il bersaglio è scaraventato via ed è costretto a lasciare il posto a un altro. Se è selvatico, la lotta finisce.', }, incinerate: { - name: "Bruciatutto", - effect: "Attacca il nemico con una fiammata. Se il nemico ha una Bacca, viene divorata dalle fiamme.", + name: 'Bruciatutto', + effect: 'Attacca il nemico con una fiammata. Se il nemico ha una Bacca, viene divorata dalle fiamme.', }, quash: { - name: "Spintone", - effect: "Chi la usa trattiene il bersaglio, costringendolo ad agire per ultimo.", + name: 'Spintone', + effect: 'Chi la usa trattiene il bersaglio, costringendolo ad agire per ultimo.', }, acrobatics: { - name: "Acrobazia", - effect: "Attacca rapidamente il bersaglio. Se chi la usa non ha uno strumento, infligge al nemico grossi danni.", + name: 'Acrobazia', + effect: 'Attacca rapidamente il bersaglio. Se chi la usa non ha uno strumento, infligge al nemico grossi danni.', }, reflectType: { - name: "Riflettipo", - effect: "Chi la usa cambia il proprio tipo in quello del bersaglio.", + name: 'Riflettipo', + effect: 'Chi la usa cambia il proprio tipo in quello del bersaglio.', }, retaliate: { - name: "Nemesi", - effect: "Vendica un compagno messo KO. Se ciò è accaduto al turno precedente, il danno è maggiore.", + name: 'Nemesi', + effect: 'Vendica un compagno messo KO. Se ciò è accaduto al turno precedente, il danno è maggiore.', }, finalGambit: { - name: "Azzardo", - effect: "Chi la usa attacca con tutta la potenza di cui dispone e va KO, ma infligge al bersaglio un danno pari ai PS che ha perso.", + name: 'Azzardo', + effect: 'Chi la usa attacca con tutta la potenza di cui dispone e va KO, ma infligge al bersaglio un danno pari ai PS che ha perso.', }, bestow: { - name: "Cediregalo", - effect: "Chi la usa consegna il proprio strumento al bersaglio se ne è sprovvisto.", + name: 'Cediregalo', + effect: 'Chi la usa consegna il proprio strumento al bersaglio se ne è sprovvisto.', }, inferno: { - name: "Marchiatura", - effect: "Il bersaglio viene avvolto da intense fiammate che causano scottature.", + name: 'Marchiatura', + effect: 'Il bersaglio viene avvolto da intense fiammate che causano scottature.', }, waterPledge: { - name: "Acquapatto", - effect: "Attacca il nemico con una colonna d'acqua. Se usata con Fiammapatto, aumentano gli effetti e un arcobaleno appare in cielo.", + name: 'Acquapatto', + effect: 'Attacca il nemico con una colonna d\'acqua. Se usata con Fiammapatto, aumentano gli effetti e un arcobaleno appare in cielo.', }, firePledge: { - name: "Fiammapatto", - effect: "Attacca il nemico con una colonna di fuoco. Se usata con Erbapatto, aumentano gli effetti e il campo diventa un mare di fuoco.", + name: 'Fiammapatto', + effect: 'Attacca il nemico con una colonna di fuoco. Se usata con Erbapatto, aumentano gli effetti e il campo diventa un mare di fuoco.', }, grassPledge: { - name: "Erbapatto", - effect: "Attacca il bersaglio con una colonna d'erba. Se usata con Acquapatto, gli effetti aumentano e il campo diventa una palude.", + name: 'Erbapatto', + effect: 'Attacca il bersaglio con una colonna d\'erba. Se usata con Acquapatto, gli effetti aumentano e il campo diventa una palude.', }, voltSwitch: { - name: "Invertivolt", - effect: "Chi usa questa mossa fa marcia indietro per farsi sostituire dopo aver sferrato l'attacco.", + name: 'Invertivolt', + effect: 'Chi usa questa mossa fa marcia indietro per farsi sostituire dopo aver sferrato l\'attacco.', }, struggleBug: { - name: "Entomoblocco", - effect: "Colpisce i nemici opponendo resistenza e riducendo il loro Attacco Speciale.", + name: 'Entomoblocco', + effect: 'Colpisce i nemici opponendo resistenza e riducendo il loro Attacco Speciale.', }, bulldoze: { - name: "Battiterra", - effect: "Chi la usa calpesta il terreno e scatena un terremoto che danneggia tutti i Pokémon nei paraggi e ne riduce anche la Velocità.", + name: 'Battiterra', + effect: 'Chi la usa calpesta il terreno e scatena un terremoto che danneggia tutti i Pokémon nei paraggi e ne riduce anche la Velocità.', }, frostBreath: { - name: "Alitogelido", - effect: "Chi la usa attacca il bersaglio con un soffio d'aria gelida. Brutto colpo assicurato.", + name: 'Alitogelido', + effect: 'Chi la usa attacca il bersaglio con un soffio d\'aria gelida. Brutto colpo assicurato.', }, dragonTail: { - name: "Codadrago", - effect: "Chi la usa fa volar via il bersaglio in modo che venga sostituito. Se il bersaglio è un Pokémon selvatico, la lotta finisce.", + name: 'Codadrago', + effect: 'Chi la usa fa volar via il bersaglio in modo che venga sostituito. Se il bersaglio è un Pokémon selvatico, la lotta finisce.', }, workUp: { - name: "Cuordileone", - effect: "Chi la usa si tira su di morale, aumentando il proprio Attacco e l'Attacco Speciale.", + name: 'Cuordileone', + effect: 'Chi la usa si tira su di morale, aumentando il proprio Attacco e l\'Attacco Speciale.', }, electroweb: { - name: "Elettrotela", - effect: "Chi la usa attacca i nemici catturandoli con una ragnatela elettrica e riducendone la Velocità.", + name: 'Elettrotela', + effect: 'Chi la usa attacca i nemici catturandoli con una ragnatela elettrica e riducendone la Velocità.', }, wildCharge: { - name: "Sprizzalampo", - effect: "Chi la usa si carica di elettricità per poi scagliarsi sul bersaglio, ma subisce dei danni per il contraccolpo.", + name: 'Sprizzalampo', + effect: 'Chi la usa si carica di elettricità per poi scagliarsi sul bersaglio, ma subisce dei danni per il contraccolpo.', }, drillRun: { - name: "Giravvita", - effect: "Chi la usa si scaglia sul bersaglio ruotando su se stesso come un trapano perforante. Probabile brutto colpo.", + name: 'Giravvita', + effect: 'Chi la usa si scaglia sul bersaglio ruotando su se stesso come un trapano perforante. Probabile brutto colpo.', }, dualChop: { - name: "Doppiocolpo", - effect: "Chi la usa attacca due volte il bersaglio con dei colpi estremamente forti.", + name: 'Doppiocolpo', + effect: 'Chi la usa attacca due volte il bersaglio con dei colpi estremamente forti.', }, heartStamp: { - name: "Cuorestampo", - effect: "Chi la usa distrae il nemico con un faccino innocente per poi sferrargli un colpo devastante che può farlo tentennare.", + name: 'Cuorestampo', + effect: 'Chi la usa distrae il nemico con un faccino innocente per poi sferrargli un colpo devastante che può farlo tentennare.', }, hornLeech: { - name: "Legnicorno", - effect: "Chi la usa infilza il bersaglio con le corna e assorbe una quantità di PS pari a metà del danno inferto.", + name: 'Legnicorno', + effect: 'Chi la usa infilza il bersaglio con le corna e assorbe una quantità di PS pari a metà del danno inferto.', }, sacredSword: { - name: "Spadasolenne", - effect: "Chi la usa taglia il nemico con una spada magica. Il danno inflitto ignora le modifiche alle statistiche del bersaglio.", + name: 'Spadasolenne', + effect: 'Chi la usa taglia il nemico con una spada magica. Il danno inflitto ignora le modifiche alle statistiche del bersaglio.', }, razorShell: { - name: "Conchilama", - effect: "Chi la usa colpisce il bersaglio con il suo guscio affilato. Il colpo può anche ridurre la Difesa del bersaglio.", + name: 'Conchilama', + effect: 'Chi la usa colpisce il bersaglio con il suo guscio affilato. Il colpo può anche ridurre la Difesa del bersaglio.', }, heatCrash: { - name: "Marchiafuoco", - effect: "Chi la usa carica con il suo corpo rovente. Più è pesante rispetto al bersaglio e più danni causa.", + name: 'Marchiafuoco', + effect: 'Chi la usa carica con il suo corpo rovente. Più è pesante rispetto al bersaglio e più danni causa.', }, leafTornado: { - name: "Vorticerba", - effect: "Chi la usa avvolge e attacca il bersaglio con foglie affilate che possono anche ridurne la precisione.", + name: 'Vorticerba', + effect: 'Chi la usa avvolge e attacca il bersaglio con foglie affilate che possono anche ridurne la precisione.', }, steamroller: { - name: "Rulloduro", - effect: "Chi la usa ruota su se stesso ad alta velocità e schiaccia il bersaglio. Può anche farlo tentennare.", + name: 'Rulloduro', + effect: 'Chi la usa ruota su se stesso ad alta velocità e schiaccia il bersaglio. Può anche farlo tentennare.', }, cottonGuard: { - name: "Cotonscudo", - effect: "Chi la usa avvolge il proprio corpo con del cotone molto morbido, proteggendosi e aumentando moltissimo la propria Difesa.", + name: 'Cotonscudo', + effect: 'Chi la usa avvolge il proprio corpo con del cotone molto morbido, proteggendosi e aumentando moltissimo la propria Difesa.', }, nightDaze: { - name: "Urtoscuro", - effect: "Chi la usa attacca il bersaglio con un'onda d'urto oscura che può ridurne la precisione.", + name: 'Urtoscuro', + effect: 'Chi la usa attacca il bersaglio con un\'onda d\'urto oscura che può ridurne la precisione.', }, psystrike: { - name: "Psicobotta", - effect: "Chi la usa attacca il bersaglio facendo materializzare un misterioso raggio psichico che provoca danni fisici.", + name: 'Psicobotta', + effect: 'Chi la usa attacca il bersaglio facendo materializzare un misterioso raggio psichico che provoca danni fisici.', }, tailSlap: { - name: "Spazzasberla", - effect: "Chi la usa colpisce il bersaglio con la sua coda dura da due a cinque volte di fila.", + name: 'Spazzasberla', + effect: 'Chi la usa colpisce il bersaglio con la sua coda dura da due a cinque volte di fila.', }, hurricane: { - name: "Tifone", - effect: "Chi la usa attacca il bersaglio avvolgendolo con un vento fortissimo. Può anche confonderlo.", + name: 'Tifone', + effect: 'Chi la usa attacca il bersaglio avvolgendolo con un vento fortissimo. Può anche confonderlo.', }, headCharge: { - name: "Ricciolata", - effect: "Chi la usa carica il bersaglio con la sua testa in stile afro, ma subisce un po' di danni per il contraccolpo.", + name: 'Ricciolata', + effect: 'Chi la usa carica il bersaglio con la sua testa in stile afro, ma subisce un po\' di danni per il contraccolpo.', }, gearGrind: { - name: "Ingracolpo", - effect: "Chi la usa colpisce il bersaglio due volte di fila lanciandogli contro dei dischi d'acciaio.", + name: 'Ingracolpo', + effect: 'Chi la usa colpisce il bersaglio due volte di fila lanciandogli contro dei dischi d\'acciaio.', }, searingShot: { - name: "Sparafuoco", - effect: "Chi la usa lancia fiamme scarlatte sui Pokémon intorno a sé. Può anche scottare.", + name: 'Sparafuoco', + effect: 'Chi la usa lancia fiamme scarlatte sui Pokémon intorno a sé. Può anche scottare.', }, technoBlast: { - name: "Tecnobotto", - effect: "Chi la usa rilascia un colpo di luce contro il bersaglio. Il tipo varia a seconda del modulo che ha.", + name: 'Tecnobotto', + effect: 'Chi la usa rilascia un colpo di luce contro il bersaglio. Il tipo varia a seconda del modulo che ha.', }, relicSong: { - name: "Cantoantico", - effect: "Chi la usa attacca i nemici intonando un'antica melodia che colpisce il loro spirito. Può anche farli addormentare.", + name: 'Cantoantico', + effect: 'Chi la usa attacca i nemici intonando un\'antica melodia che colpisce il loro spirito. Può anche farli addormentare.', }, secretSword: { - name: "Spadamistica", - effect: "Chi la usa attacca il bersaglio tagliandolo con una spada mistica. La misteriosa energia sprigionata provoca danni fisici.", + name: 'Spadamistica', + effect: 'Chi la usa attacca il bersaglio tagliandolo con una spada mistica. La misteriosa energia sprigionata provoca danni fisici.', }, glaciate: { - name: "Gelamondo", - effect: "Chi la usa attacca i nemici con una folata d'aria gelida e ne riduce anche la Velocità.", + name: 'Gelamondo', + effect: 'Chi la usa attacca i nemici con una folata d\'aria gelida e ne riduce anche la Velocità.', }, boltStrike: { - name: "Lucesiluro", - effect: "Colpisce il bersaglio con una possente carica elettrica e può anche paralizzarlo.", + name: 'Lucesiluro', + effect: 'Colpisce il bersaglio con una possente carica elettrica e può anche paralizzarlo.', }, blueFlare: { - name: "Fuocoblu", - effect: "Chi la usa attacca il bersaglio avvolgendolo con magnifiche e intense fiamme blu che possono anche scottarlo.", + name: 'Fuocoblu', + effect: 'Chi la usa attacca il bersaglio avvolgendolo con magnifiche e intense fiamme blu che possono anche scottarlo.', }, fieryDance: { - name: "Voldifuoco", - effect: "Chi la usa avvolge il bersaglio tra le fiamme. Può anche aumentare l'Attacco Speciale.", + name: 'Voldifuoco', + effect: 'Chi la usa avvolge il bersaglio tra le fiamme. Può anche aumentare l\'Attacco Speciale.', }, freezeShock: { - name: "Elettrogelo", - effect: "Chi la usa lancia contro il nemico al turno successivo una sfera di ghiaccio ricoperta di elettricità. Può anche paralizzarlo.", + name: 'Elettrogelo', + effect: 'Chi la usa lancia contro il nemico al turno successivo una sfera di ghiaccio ricoperta di elettricità. Può anche paralizzarlo.', }, iceBurn: { - name: "Vampagelida", - effect: "Chi la usa attacca il bersaglio al turno successivo e lo avvolge in un soffio d'aria congelata. Può anche scottarlo.", + name: 'Vampagelida', + effect: 'Chi la usa attacca il bersaglio al turno successivo e lo avvolge in un soffio d\'aria congelata. Può anche scottarlo.', }, snarl: { - name: "Urlorabbia", - effect: "Chi la usa si mette a urlare per un po', riducendo l'Attacco Speciale dei nemici.", + name: 'Urlorabbia', + effect: 'Chi la usa si mette a urlare per un po\', riducendo l\'Attacco Speciale dei nemici.', }, icicleCrash: { - name: "Scagliagelo", - effect: "Chi la usa attacca violentemente il nemico con grosse stalattiti di ghiaccio che possono anche farlo tentennare.", + name: 'Scagliagelo', + effect: 'Chi la usa attacca violentemente il nemico con grosse stalattiti di ghiaccio che possono anche farlo tentennare.', }, vCreate: { - name: "Generatore V", - effect: "Chi la usa carica emettendo fiamme ardenti dalla fronte, a costo di una riduzione di Difesa, Difesa Speciale e Velocità.", + name: 'Generatore V', + effect: 'Chi la usa carica emettendo fiamme ardenti dalla fronte, a costo di una riduzione di Difesa, Difesa Speciale e Velocità.', }, fusionFlare: { - name: "Incrofiamma", - effect: "Chi la usa lancia una fiammata enorme. Se usata in combinazione con Incrotuono, il danno provocato dalla mossa aumenta.", + name: 'Incrofiamma', + effect: 'Chi la usa lancia una fiammata enorme. Se usata in combinazione con Incrotuono, il danno provocato dalla mossa aumenta.', }, fusionBolt: { - name: "Incrotuono", - effect: "Chi la usa lancia un fulmine enorme. Se usata in combinazione con Incrofiamma, il danno provocato dalla mossa aumenta.", + name: 'Incrotuono', + effect: 'Chi la usa lancia un fulmine enorme. Se usata in combinazione con Incrofiamma, il danno provocato dalla mossa aumenta.', }, flyingPress: { - name: "Schiacciatuffo", - effect: "Chi la usa si tuffa sul bersaglio dall'alto. È una mossa di tipo Lotta e Volante allo stesso tempo.", + name: 'Schiacciatuffo', + effect: 'Chi la usa si tuffa sul bersaglio dall\'alto. È una mossa di tipo Lotta e Volante allo stesso tempo.', }, matBlock: { - name: "Ribaltappeto", - effect: "Chi la usa protegge se stesso e i propri alleati dai danni di mosse nemiche, adoperando un tappetino come scudo. Non è efficace contro mosse di stato.", + name: 'Ribaltappeto', + effect: 'Chi la usa protegge se stesso e i propri alleati dai danni di mosse nemiche, adoperando un tappetino come scudo. Non è efficace contro mosse di stato.', }, belch: { - name: "Rutto", - effect: "Chi la usa attacca il bersaglio con un rutto potente. Per utilizzare questa mossa, il Pokémon deve mangiare la bacca che possiede.", + name: 'Rutto', + effect: 'Chi la usa attacca il bersaglio con un rutto potente. Per utilizzare questa mossa, il Pokémon deve mangiare la bacca che possiede.', }, rototiller: { - name: "Aracampo", - effect: "Chi la usa dissoda la terra per far crescere meglio l'erba. Questa mossa aumenta l'attacco e l'attacco speciale dei Pokémon di tipo Erba.", + name: 'Aracampo', + effect: 'Chi la usa dissoda la terra per far crescere meglio l\'erba. Questa mossa aumenta l\'attacco e l\'attacco speciale dei Pokémon di tipo Erba.', }, stickyWeb: { - name: "Rete Vischiosa", - effect: "Chi la usa intreccia una rete appiccicosa attorno alla squadra avversaria, diminuendo la Velocità dei Pokémon nemici che entreranno in campo.", + name: 'Rete Vischiosa', + effect: 'Chi la usa intreccia una rete appiccicosa attorno alla squadra avversaria, diminuendo la Velocità dei Pokémon nemici che entreranno in campo.', }, fellStinger: { - name: "Pungiglione", - effect: "L'Attacco di chi la usa aumenta notevolmente se grazie alla mossa il bersaglio va KO.", + name: 'Pungiglione', + effect: 'L\'Attacco di chi la usa aumenta notevolmente se grazie alla mossa il bersaglio va KO.', }, phantomForce: { - name: "Spettrotuffo", - effect: "Chi la usa scompare improvvisamente per attaccare poi nel turno seguente. Questa mossa neutralizza le difese del bersaglio.", + name: 'Spettrotuffo', + effect: 'Chi la usa scompare improvvisamente per attaccare poi nel turno seguente. Questa mossa neutralizza le difese del bersaglio.', }, trickOrTreat: { - name: "Halloween", - effect: "Il bersaglio viene invitato a festeggiare Halloween e aggiunge così al proprio tipo anche il tipo Spettro.", + name: 'Halloween', + effect: 'Il bersaglio viene invitato a festeggiare Halloween e aggiunge così al proprio tipo anche il tipo Spettro.', }, nobleRoar: { - name: "Urlo", - effect: "Chi la usa emette un urlo potente che intimidisce il bersaglio, riducendone l'Attacco e l'Attacco Speciale.", + name: 'Urlo', + effect: 'Chi la usa emette un urlo potente che intimidisce il bersaglio, riducendone l\'Attacco e l\'Attacco Speciale.', }, ionDeluge: { - name: "Pioggiaplasma", - effect: "Chi la usa disperde delle particelle elettrizzate che trasformano le mosse di tipo Normale in mosse di tipo Elettro.", + name: 'Pioggiaplasma', + effect: 'Chi la usa disperde delle particelle elettrizzate che trasformano le mosse di tipo Normale in mosse di tipo Elettro.', }, parabolicCharge: { - name: "Caricaparabola", - effect: "Chi la usa attacca tutto ciò che lo circonda e recupera PS pari alla metà del danno inflitto.", + name: 'Caricaparabola', + effect: 'Chi la usa attacca tutto ciò che lo circonda e recupera PS pari alla metà del danno inflitto.', }, forestsCurse: { - name: "Boscomalocchio", - effect: "Il Pokémon invoca la maledizione del bosco sul bersaglio, che acquisisce così anche il tipo Erba.", + name: 'Boscomalocchio', + effect: 'Il Pokémon invoca la maledizione del bosco sul bersaglio, che acquisisce così anche il tipo Erba.', }, petalBlizzard: { - name: "Fiortempesta", - effect: "Infligge danni ai Pokémon che ha intorno attaccandoli con una tempesta di fiori.", + name: 'Fiortempesta', + effect: 'Infligge danni ai Pokémon che ha intorno attaccandoli con una tempesta di fiori.', }, freezeDry: { - name: "Liofilizzazione", - effect: "Chi la usa raffredda rapidamente il bersaglio. Può anche congelarlo. Questa mossa è superefficace contro i Pokémon Acqua.", + name: 'Liofilizzazione', + effect: 'Chi la usa raffredda rapidamente il bersaglio. Può anche congelarlo. Questa mossa è superefficace contro i Pokémon Acqua.', }, disarmingVoice: { - name: "Incantavoce", - effect: "Chi la usa infligge un danno spirituale ai nemici nei paraggi con una voce suadente. L'attacco andrà immancabilmente a segno.", + name: 'Incantavoce', + effect: 'Chi la usa infligge un danno spirituale ai nemici nei paraggi con una voce suadente. L\'attacco andrà immancabilmente a segno.', }, partingShot: { - name: "Monito", - effect: "Nessuna descrizione disponibile.", + name: 'Monito', + effect: 'Nessuna descrizione disponibile.', }, topsyTurvy: { - name: "Sottosopra", - effect: "Inverte tutte le modifiche alle statistiche del Pokémon bersaglio.", + name: 'Sottosopra', + effect: 'Inverte tutte le modifiche alle statistiche del Pokémon bersaglio.', }, drainingKiss: { - name: "Assorbibacio", - effect: "Un bacio fatato che assorbe le energie al nemico.", + name: 'Assorbibacio', + effect: 'Un bacio fatato che assorbe le energie al nemico.', }, craftyShield: { - name: "Truccodifesa", - effect: "Chi la usa protegge se stesso e i suoi alleati usando un potere misterioso. Non blocca le mosse che infliggono danno.", + name: 'Truccodifesa', + effect: 'Chi la usa protegge se stesso e i suoi alleati usando un potere misterioso. Non blocca le mosse che infliggono danno.', }, flowerShield: { - name: "Fiordifesa", - effect: "Grazie a un misterioso potere, aumenta la Difesa di tutti i Pokémon di tipo Erba presenti in campo.", + name: 'Fiordifesa', + effect: 'Grazie a un misterioso potere, aumenta la Difesa di tutti i Pokémon di tipo Erba presenti in campo.', }, grassyTerrain: { - name: "Campo Erboso", - effect: "Per cinque turni trasforma il terreno di lotta in un campo erboso, facendo recuperare PS ai Pokémon a terra in ogni turno.", + name: 'Campo Erboso', + effect: 'Per cinque turni trasforma il terreno di lotta in un campo erboso, facendo recuperare PS ai Pokémon a terra in ogni turno.', }, mistyTerrain: { - name: "Campo Nebbioso", - effect: "Per cinque turni trasforma il terreno di lotta in un campo nebbioso, impedendo ai Pokémon a terra di essere colpiti da problemi di stato.", + name: 'Campo Nebbioso', + effect: 'Per cinque turni trasforma il terreno di lotta in un campo nebbioso, impedendo ai Pokémon a terra di essere colpiti da problemi di stato.', }, electrify: { - name: "Elettrocontagio", - effect: "Se si contagia il bersaglio prima che usi la sua mossa, per quel turno le sue mosse saranno di tipo Elettro.", + name: 'Elettrocontagio', + effect: 'Se si contagia il bersaglio prima che usi la sua mossa, per quel turno le sue mosse saranno di tipo Elettro.', }, playRough: { - name: "Carineria", - effect: "Chi la usa attacca il bersaglio con delle carinerie. Può anche ridurne l'attacco.", + name: 'Carineria', + effect: 'Chi la usa attacca il bersaglio con delle carinerie. Può anche ridurne l\'attacco.', }, fairyWind: { - name: "Vento di Fata", - effect: "Attacca con un forte vento fatato.", + name: 'Vento di Fata', + effect: 'Attacca con un forte vento fatato.', }, moonblast: { - name: "Forza Lunare", - effect: "Accumula la forza proveniente dalla luna e la libera sul nemico. Può ridurre l'Attacco Speciale.", + name: 'Forza Lunare', + effect: 'Accumula la forza proveniente dalla luna e la libera sul nemico. Può ridurre l\'Attacco Speciale.', }, boomburst: { - name: "Ondaboato", - effect: "Colpisce i Pokémon che ha intorno con la forza di un boato distruttivo.", + name: 'Ondaboato', + effect: 'Colpisce i Pokémon che ha intorno con la forza di un boato distruttivo.', }, fairyLock: { - name: "Blocco Fatato", - effect: "Bloccando il campo di battaglia, chi la usa impedisce a tutti i Pokémon di fuggire durante il prossimo turno.", + name: 'Blocco Fatato', + effect: 'Bloccando il campo di battaglia, chi la usa impedisce a tutti i Pokémon di fuggire durante il prossimo turno.', }, kingsShield: { - name: "Scudo Reale", - effect: "L'utilizzatore assume una posizione difensiva mentre si difende. Riduce inoltre l'Attacco di ogni utilizzatore di mosse da contatto.", + name: 'Scudo Reale', + effect: 'L\'utilizzatore assume una posizione difensiva mentre si difende. Riduce inoltre l\'Attacco di ogni utilizzatore di mosse da contatto.', }, playNice: { - name: "Simpatia", - effect: "Chi la usa diventa amico del bersaglio, rabbonendolo e riducendone così l'Attacco.", + name: 'Simpatia', + effect: 'Chi la usa diventa amico del bersaglio, rabbonendolo e riducendone così l\'Attacco.', }, confide: { - name: "Confidenza", - effect: "Chi la usa svela dei segreti al bersaglio, distraendolo e riducendone l'Attacco Speciale.", + name: 'Confidenza', + effect: 'Chi la usa svela dei segreti al bersaglio, distraendolo e riducendone l\'Attacco Speciale.', }, diamondStorm: { - name: "Diamantempesta", - effect: "Colpisce i nemici che ha intorno con una tempesta di diamanti. Può anche aumentare la Difesa di chi la usa.", + name: 'Diamantempesta', + effect: 'Colpisce i nemici che ha intorno con una tempesta di diamanti. Può anche aumentare la Difesa di chi la usa.', }, steamEruption: { - name: "Vaporscoppio", - effect: "Travolge il bersaglio con un'ondata di vapore rovente che può anche scottarlo.", + name: 'Vaporscoppio', + effect: 'Travolge il bersaglio con un\'ondata di vapore rovente che può anche scottarlo.', }, hyperspaceHole: { - name: "Forodimensionale", - effect: "Chi la usa, sfrutta un passaggio interdimensionale per comparire a fianco del bersaglio e colpirlo, eludendo mosse come Protezione e Individua.", + name: 'Forodimensionale', + effect: 'Chi la usa, sfrutta un passaggio interdimensionale per comparire a fianco del bersaglio e colpirlo, eludendo mosse come Protezione e Individua.', }, waterShuriken: { - name: "Acqualame", - effect: "Chi la usa attacca sempre per primo, colpendo il bersaglio con uno shuriken di muco da due a cinque volte di fila.", + name: 'Acqualame', + effect: 'Chi la usa attacca sempre per primo, colpendo il bersaglio con uno shuriken di muco da due a cinque volte di fila.', }, mysticalFire: { - name: "Magifiamma", - effect: "Colpisce il bersaglio soffiandogli contro delle fiammate incredibilmente roventi, riducendone l'Attacco Speciale.", + name: 'Magifiamma', + effect: 'Colpisce il bersaglio soffiandogli contro delle fiammate incredibilmente roventi, riducendone l\'Attacco Speciale.', }, spikyShield: { - name: "Agodifesa", - effect: "Protegge dagli attacchi, riducendo inoltre i PS dei Pokémon che entrano in contatto con chi la usa.", + name: 'Agodifesa', + effect: 'Protegge dagli attacchi, riducendo inoltre i PS dei Pokémon che entrano in contatto con chi la usa.', }, aromaticMist: { - name: "Nebularoma", - effect: "Aumenta la Difesa Speciale di un alleato tramite un misterioso aroma.", + name: 'Nebularoma', + effect: 'Aumenta la Difesa Speciale di un alleato tramite un misterioso aroma.', }, eerieImpulse: { - name: "Elettromistero", - effect: "Il corpo dell'utilizzatore genera un impulso misterioso. Esponendovi il bersaglio, ne riduce di molto l'Attacco Speciale.", + name: 'Elettromistero', + effect: 'Il corpo dell\'utilizzatore genera un impulso misterioso. Esponendovi il bersaglio, ne riduce di molto l\'Attacco Speciale.', }, venomDrench: { - name: "Velenotrappola", - effect: "Emette un liquido particolare che riduce l'Attacco, l'Attacco Speciale e la Velocità dei nemici avvelenati intorno a chi la usa.", + name: 'Velenotrappola', + effect: 'Emette un liquido particolare che riduce l\'Attacco, l\'Attacco Speciale e la Velocità dei nemici avvelenati intorno a chi la usa.', }, powder: { - name: "Pulviscoppio", - effect: "Il bersaglio viene coperto da un pulviscolo che esplode danneggiandolo se questi utilizza una mossa di tipo Fuoco nello stesso turno.", + name: 'Pulviscoppio', + effect: 'Il bersaglio viene coperto da un pulviscolo che esplode danneggiandolo se questi utilizza una mossa di tipo Fuoco nello stesso turno.', }, geomancy: { - name: "Geocontrollo", - effect: "Un'energia pura forza della natura si sprigiona per tutto il campo.", + name: 'Geocontrollo', + effect: 'Un\'energia pura forza della natura si sprigiona per tutto il campo.', }, magneticFlux: { - name: "Controllo Polare", - effect: "Tramite il controllo dei campi magnetici, aumenta la Difesa e la Difesa Speciale dei Pokémon alleati dotati dell'abilità Più o Meno.", + name: 'Controllo Polare', + effect: 'Tramite il controllo dei campi magnetici, aumenta la Difesa e la Difesa Speciale dei Pokémon alleati dotati dell\'abilità Più o Meno.', }, happyHour: { - name: "Cuccagna", - effect: "Questa mossa raddoppia la ricompensa ricevuta dopo aver vinto una lotta.", + name: 'Cuccagna', + effect: 'Questa mossa raddoppia la ricompensa ricevuta dopo aver vinto una lotta.', }, electricTerrain: { - name: "Campo Elettrico", - effect: "Per cinque turni trasforma il terreno di lotta in un campo elettrico, impedendo ai Pokémon a terra di addormentarsi.", + name: 'Campo Elettrico', + effect: 'Per cinque turni trasforma il terreno di lotta in un campo elettrico, impedendo ai Pokémon a terra di addormentarsi.', }, dazzlingGleam: { - name: "Magibrillio", - effect: "Emette una luce potentissima che infligge danni al bersaglio.", + name: 'Magibrillio', + effect: 'Emette una luce potentissima che infligge danni al bersaglio.', }, celebrate: { - name: "Auguri", - effect: "Il Pokémon ti fa gli auguri nel tuo giorno speciale", + name: 'Auguri', + effect: 'Il Pokémon ti fa gli auguri nel tuo giorno speciale', }, holdHands: { - name: "Mano nella mano", - effect: "Il Pokémon che la usa e un alleato si prendono per mano e fanno salti di gioia.", + name: 'Mano nella mano', + effect: 'Il Pokémon che la usa e un alleato si prendono per mano e fanno salti di gioia.', }, babyDollEyes: { - name: "Occhioni Teneri", - effect: "Chi la usa rivolge i propri occhioni languidi al bersaglio, riducendone l'Attacco. Colpisce sempre per primo.", + name: 'Occhioni Teneri', + effect: 'Chi la usa rivolge i propri occhioni languidi al bersaglio, riducendone l\'Attacco. Colpisce sempre per primo.', }, nuzzle: { - name: "Elettrococcola", - effect: "Nonostante il tenero nome è una mossa piuttosto pericolosa.", + name: 'Elettrococcola', + effect: 'Nonostante il tenero nome è una mossa piuttosto pericolosa.', }, holdBack: { - name: "Riguardo", - effect: "Chi la usa attacca il bersaglio, modulando il colpo in modo da lasciargli almeno un PS.", + name: 'Riguardo', + effect: 'Chi la usa attacca il bersaglio, modulando il colpo in modo da lasciargli almeno un PS.', }, infestation: { - name: "Assillo", - effect: "Chi la usa lancia un attacco che tormenta il bersaglio per quattro o cinque turni, durante i quali gli impedisce di fuggire.", + name: 'Assillo', + effect: 'Chi la usa lancia un attacco che tormenta il bersaglio per quattro o cinque turni, durante i quali gli impedisce di fuggire.', }, powerUpPunch: { - name: "Crescipugno", - effect: "Rende i pugni più duri a ogni colpo inferto. Se i pugni vanno a segno, aumenta l'Attacco.", + name: 'Crescipugno', + effect: 'Rende i pugni più duri a ogni colpo inferto. Se i pugni vanno a segno, aumenta l\'Attacco.', }, oblivionWing: { - name: "Ali del Fato", - effect: "Chi la usa assorbe energia dal bersaglio recuperando una quantità di PS pari a più della metà del danno inferto.", + name: 'Ali del Fato', + effect: 'Chi la usa assorbe energia dal bersaglio recuperando una quantità di PS pari a più della metà del danno inferto.', }, thousandArrows: { - name: "Mille Frecce", - effect: "Colpisce anche i Pokémon che fluttuano in aria. I nemici nei paraggi vengono scaraventati a terra.", + name: 'Mille Frecce', + effect: 'Colpisce anche i Pokémon che fluttuano in aria. I nemici nei paraggi vengono scaraventati a terra.', }, thousandWaves: { - name: "Mille Onde", - effect: "Un’onda strisciante investe i nemici intorno impedendo loro di fuggire.", + name: 'Mille Onde', + effect: 'Un’onda strisciante investe i nemici intorno impedendo loro di fuggire.', }, landsWrath: { - name: "Forza Tellurica", - effect: "Chi la usa raccoglie energia tellurica e ne concentra il potere sui nemici che ha intorno danneggiandoli.", + name: 'Forza Tellurica', + effect: 'Chi la usa raccoglie energia tellurica e ne concentra il potere sui nemici che ha intorno danneggiandoli.', }, lightOfRuin: { - name: "Luce Nefasta", - effect: "Traendo potere dal Fiore Eterno, chi lo utilizza spara un potente raggio di luce. Ciò danneggia parecchio anche chi la usa.", + name: 'Luce Nefasta', + effect: 'Traendo potere dal Fiore Eterno, chi lo utilizza spara un potente raggio di luce. Ciò danneggia parecchio anche chi la usa.', }, originPulse: { - name: "Primopulsar", - effect: "Attacca i nemici intorno colpendoli con miriadi di raggi di luce blu.", + name: 'Primopulsar', + effect: 'Attacca i nemici intorno colpendoli con miriadi di raggi di luce blu.', }, precipiceBlades: { - name: "Spade Telluriche", - effect: "Attacca i nemici intorno trasformando la potenza della terra in lame affilate.", + name: 'Spade Telluriche', + effect: 'Attacca i nemici intorno trasformando la potenza della terra in lame affilate.', }, dragonAscent: { - name: "Ascesa del Drago", - effect: "Permette di proiettarsi in aria e fiondarsi sul bersaglio attaccando ad altissima velocità. Riduce la Difesa e la Difesa Speciale di chi la usa.", + name: 'Ascesa del Drago', + effect: 'Permette di proiettarsi in aria e fiondarsi sul bersaglio attaccando ad altissima velocità. Riduce la Difesa e la Difesa Speciale di chi la usa.', }, hyperspaceFury: { - name: "Urtodimensionale", - effect: "Permette di attaccare ripetutamente grazie ai molti arti, ignorando mosse come Protezione o Individua. Riduce la Difesa di chi la usa.", + name: 'Urtodimensionale', + effect: 'Permette di attaccare ripetutamente grazie ai molti arti, ignorando mosse come Protezione o Individua. Riduce la Difesa di chi la usa.', }, breakneckBlitzPhysical: { - name: "Carica Travolgente", - effect: "Grazie al Potere Z, chi la usa accumula energia e si lancia a tutta forza contro il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + name: 'Carica Travolgente', + effect: 'Grazie al Potere Z, chi la usa accumula energia e si lancia a tutta forza contro il bersaglio. La potenza varia a seconda della mossa su cui si basa.', }, breakneckBlitzSpecial: { - name: "Carica Travolgente", - effect: "Dati Mancanti", + name: 'Carica Travolgente', + effect: 'Dati Mancanti', }, allOutPummelingPhysical: { - name: "Iperscarica Furiosa", - effect: "Chi la usa scaglia sul bersaglio una scarica di colpi carichi di Potere Z. La potenza varia a seconda della mossa su cui si basa.", + name: 'Iperscarica Furiosa', + effect: 'Chi la usa scaglia sul bersaglio una scarica di colpi carichi di Potere Z. La potenza varia a seconda della mossa su cui si basa.', }, allOutPummelingSpecial: { - name: "Iperscarica Furiosa", - effect: "Dati Mancanti", + name: 'Iperscarica Furiosa', + effect: 'Dati Mancanti', }, supersonicSkystrikePhysical: { - name: "Picchiata Devastante", - effect: "Chi la usa si serve del Potere Z per alzarsi in volo e attaccare il bersaglio piombandogli addosso. La potenza varia a seconda della mossa su cui si basa.", + name: 'Picchiata Devastante', + effect: 'Chi la usa si serve del Potere Z per alzarsi in volo e attaccare il bersaglio piombandogli addosso. La potenza varia a seconda della mossa su cui si basa.', }, supersonicSkystrikeSpecial: { - name: "Picchiata Devastante", - effect: "Dati Mancanti", + name: 'Picchiata Devastante', + effect: 'Dati Mancanti', }, acidDownpourPhysical: { - name: "Acidiluvio Corrosivo", - effect: "Chi la usa sfrutta il Potere Z per creare una palude velenosa che sommerge il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + name: 'Acidiluvio Corrosivo', + effect: 'Chi la usa sfrutta il Potere Z per creare una palude velenosa che sommerge il bersaglio. La potenza varia a seconda della mossa su cui si basa.', }, acidDownpourSpecial: { - name: "Acidiluvio Corrosivo", - effect: "Dati Mancanti", + name: 'Acidiluvio Corrosivo', + effect: 'Dati Mancanti', }, tectonicRagePhysical: { - name: "Furore della Terra", - effect: "Grazie al Potere Z, chi la usa si tuffa nelle viscere della terra e colpisce con violenza il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + name: 'Furore della Terra', + effect: 'Grazie al Potere Z, chi la usa si tuffa nelle viscere della terra e colpisce con violenza il bersaglio. La potenza varia a seconda della mossa su cui si basa.', }, tectonicRageSpecial: { - name: "Furore della Terra", - effect: "Dati Mancanti", + name: 'Furore della Terra', + effect: 'Dati Mancanti', }, continentalCrushPhysical: { - name: "Gigamacigno Polverizzante", - effect: "Grazie al Potere Z, chi la usa crea un masso enorme e lo lancia sul bersaglio schiacciandolo. La potenza varia a seconda della mossa su cui si basa.", + name: 'Gigamacigno Polverizzante', + effect: 'Grazie al Potere Z, chi la usa crea un masso enorme e lo lancia sul bersaglio schiacciandolo. La potenza varia a seconda della mossa su cui si basa.', }, continentalCrushSpecial: { - name: "Gigamacigno Polverizzante", - effect: "Dati Mancanti", + name: 'Gigamacigno Polverizzante', + effect: 'Dati Mancanti', }, savageSpinOutPhysical: { - name: "Bozzolo Fatale", - effect: "Chi la usa sfrutta il potere Z per creare dei filamenti che intrappolano il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + name: 'Bozzolo Fatale', + effect: 'Chi la usa sfrutta il potere Z per creare dei filamenti che intrappolano il bersaglio. La potenza varia a seconda della mossa su cui si basa.', }, savageSpinOutSpecial: { - name: "Bozzolo Fatale", - effect: "Dati Mancanti", + name: 'Bozzolo Fatale', + effect: 'Dati Mancanti', }, neverEndingNightmarePhysical: { - name: "Abbraccio Spettrale", - effect: "Grazie al Potere Z, chi la usa intrappola il bersaglio in una morsa generata dal proprio rancore. La potenza varia a seconda della mossa su cui si basa.", + name: 'Abbraccio Spettrale', + effect: 'Grazie al Potere Z, chi la usa intrappola il bersaglio in una morsa generata dal proprio rancore. La potenza varia a seconda della mossa su cui si basa.', }, neverEndingNightmareSpecial: { - name: "Abbraccio Spettrale", - effect: "Dati Mancanti", + name: 'Abbraccio Spettrale', + effect: 'Dati Mancanti', }, corkscrewCrashPhysical: { - name: "Spirale Perforante", - effect: "Grazie al Potere Z, chi la usa vortica su se stesso e si scaglia sul bersaglio con tutte le sue forze. La potenza varia a seconda della mossa su cui si basa", + name: 'Spirale Perforante', + effect: 'Grazie al Potere Z, chi la usa vortica su se stesso e si scaglia sul bersaglio con tutte le sue forze. La potenza varia a seconda della mossa su cui si basa', }, corkscrewCrashSpecial: { - name: "Spirale Perforante", - effect: "Dati Mancanti", + name: 'Spirale Perforante', + effect: 'Dati Mancanti', }, infernoOverdrivePhysical: { - name: "Fiammobomba Detonante", - effect: "Chi la usa sfrutta il Potere Z per emettere fiamme incandescenti che inceneriscono il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + name: 'Fiammobomba Detonante', + effect: 'Chi la usa sfrutta il Potere Z per emettere fiamme incandescenti che inceneriscono il bersaglio. La potenza varia a seconda della mossa su cui si basa.', }, infernoOverdriveSpecial: { - name: "Fiammobomba Detonante", - effect: "Dati Mancanti", + name: 'Fiammobomba Detonante', + effect: 'Dati Mancanti', }, hydroVortexPhysical: { - name: "Idrovortice Abissale", - effect: "Grazie al Potere Z, chi la usa crea un enorme vortice che inghiotte il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + name: 'Idrovortice Abissale', + effect: 'Grazie al Potere Z, chi la usa crea un enorme vortice che inghiotte il bersaglio. La potenza varia a seconda della mossa su cui si basa.', }, hydroVortexSpecial: { - name: "Idrovortice Abissale", - effect: "Dati Mancanti", + name: 'Idrovortice Abissale', + effect: 'Dati Mancanti', }, bloomDoomPhysical: { - name: "Floriscoppio Sfolgorante", - effect: "Grazie al Potere Z, chi la usa concentra l'energia delle piante per scatenare un potente attacco. La potenza varia a seconda della mossa su cui si basa.", + name: 'Floriscoppio Sfolgorante', + effect: 'Grazie al Potere Z, chi la usa concentra l\'energia delle piante per scatenare un potente attacco. La potenza varia a seconda della mossa su cui si basa.', }, bloomDoomSpecial: { - name: "Floriscoppio Sfolgorante", - effect: "Dati Mancanti", + name: 'Floriscoppio Sfolgorante', + effect: 'Dati Mancanti', }, gigavoltHavocPhysical: { - name: "Gigascarica Folgorante", - effect: "Grazie al Potere Z, chi la usa genera una fortissima scarica elettrica che colpisce il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + name: 'Gigascarica Folgorante', + effect: 'Grazie al Potere Z, chi la usa genera una fortissima scarica elettrica che colpisce il bersaglio. La potenza varia a seconda della mossa su cui si basa.', }, gigavoltHavocSpecial: { - name: "Gigascarica Folgorante", - effect: "Dati Mancanti", + name: 'Gigascarica Folgorante', + effect: 'Dati Mancanti', }, shatteredPsychePhysical: { - name: "Impatto Psicocinetico", - effect: "Chi la usa si serve del Potere Z per manipolare la mente del bersaglio causando ingenti danni. La potenza varia a seconda della mossa su cui si basa.", + name: 'Impatto Psicocinetico', + effect: 'Chi la usa si serve del Potere Z per manipolare la mente del bersaglio causando ingenti danni. La potenza varia a seconda della mossa su cui si basa.', }, shatteredPsycheSpecial: { - name: "Impatto Psicocinetico", - effect: "Dati Mancanti", + name: 'Impatto Psicocinetico', + effect: 'Dati Mancanti', }, subzeroSlammerPhysical: { - name: "Criodistruzione Polare", - effect: "Chi la usa sfrutta il Potere Z per far calare di colpo la temperatura e congelare il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + name: 'Criodistruzione Polare', + effect: 'Chi la usa sfrutta il Potere Z per far calare di colpo la temperatura e congelare il bersaglio. La potenza varia a seconda della mossa su cui si basa.', }, subzeroSlammerSpecial: { - name: "Criodistruzione Polare", - effect: "Dati Mancanti", + name: 'Criodistruzione Polare', + effect: 'Dati Mancanti', }, devastatingDrakePhysical: { - name: "Dragoschianto Finale", - effect: "Grazie al Potere Z, chi la usa materializza la propria aura per colpire con forza il nemico. La potenza varia a seconda della mossa su cui si basa.", + name: 'Dragoschianto Finale', + effect: 'Grazie al Potere Z, chi la usa materializza la propria aura per colpire con forza il nemico. La potenza varia a seconda della mossa su cui si basa.', }, devastatingDrakeSpecial: { - name: "Dragoschianto Finale", - effect: "Dati Mancanti", + name: 'Dragoschianto Finale', + effect: 'Dati Mancanti', }, blackHoleEclipsePhysical: { - name: "Buco Nero del Non Ritorno", - effect: "Chi la usa si serve del Potere Z per concentrare energia negativa con cui inghiotte il bersaglio. La potenza varia a seconda della mossa su cui si basa.", + name: 'Buco Nero del Non Ritorno', + effect: 'Chi la usa si serve del Potere Z per concentrare energia negativa con cui inghiotte il bersaglio. La potenza varia a seconda della mossa su cui si basa.', }, blackHoleEclipseSpecial: { - name: "Buco Nero del Non Ritorno", - effect: "Dati Mancanti", + name: 'Buco Nero del Non Ritorno', + effect: 'Dati Mancanti', }, twinkleTacklePhysical: { - name: "Astroimpatto Fatato", - effect: "Grazie al Potere Z, chi la usa crea una dimensione fatata in cui fa ciò che vuole del proprio bersaglio. La potenza varia a seconda della mossa su cui si basa.", + name: 'Astroimpatto Fatato', + effect: 'Grazie al Potere Z, chi la usa crea una dimensione fatata in cui fa ciò che vuole del proprio bersaglio. La potenza varia a seconda della mossa su cui si basa.', }, twinkleTackleSpecial: { - name: "Astroimpatto Fatato", - effect: "Dati Mancanti", + name: 'Astroimpatto Fatato', + effect: 'Dati Mancanti', }, catastropika: { - name: "Super Pikaboom", - effect: "Grazie al Potere Z, Pikachu accumula un'enorme quantità di energia elettrica e si lancia contro il bersaglio a tutta forza.", + name: 'Super Pikaboom', + effect: 'Grazie al Potere Z, Pikachu accumula un\'enorme quantità di energia elettrica e si lancia contro il bersaglio a tutta forza.', }, shoreUp: { - name: "Sabbiaccumulo", - effect: "Chi la usa recupera metà dei propri PS massimi. Durante le tempeste di sabbia ne recupera di più.", + name: 'Sabbiaccumulo', + effect: 'Chi la usa recupera metà dei propri PS massimi. Durante le tempeste di sabbia ne recupera di più.', }, firstImpression: { - name: "Schermaglia", - effect: "È una mossa molto potente, ma funziona solo appena scesi in campo.", + name: 'Schermaglia', + effect: 'È una mossa molto potente, ma funziona solo appena scesi in campo.', }, banefulBunker: { - name: "Fortino", - effect: "L'utilizzatore si protegge e se l'avversario attacca con una mossa da contatto viene avvelenato.", + name: 'Fortino', + effect: 'L\'utilizzatore si protegge e se l\'avversario attacca con una mossa da contatto viene avvelenato.', }, spiritShackle: { - name: "Cucitura d'Ombra", - effect: "Chi la usa attacca il bersaglio e fissa la sua ombra a terra impedendogli di fuggire.", + name: 'Cucitura d\'Ombra', + effect: 'Chi la usa attacca il bersaglio e fissa la sua ombra a terra impedendogli di fuggire.', }, darkestLariat: { - name: "Braccioteso", - effect: "Chi la usa attacca il bersaglio mulinando gli arti. Il danno inflitto ignora le modifiche alle statistiche del bersaglio.", + name: 'Braccioteso', + effect: 'Chi la usa attacca il bersaglio mulinando gli arti. Il danno inflitto ignora le modifiche alle statistiche del bersaglio.', }, sparklingAria: { - name: "Canto Effimero", - effect: "Chi la usa si mette a cantare emettendo tanti palloncini d’acqua. I Pokémon che subiscono danni da questa mossa guariscono dalle scottature.", + name: 'Canto Effimero', + effect: 'Chi la usa si mette a cantare emettendo tanti palloncini d’acqua. I Pokémon che subiscono danni da questa mossa guariscono dalle scottature.', }, iceHammer: { - name: "Martelgelo", - effect: "Infligge danni al bersaglio colpendolo con un pugno molto potente. Riduce la velocità di chi la usa.", + name: 'Martelgelo', + effect: 'Infligge danni al bersaglio colpendolo con un pugno molto potente. Riduce la velocità di chi la usa.', }, floralHealing: { - name: "Cura Floreale", - effect: "Fa recuperare metà dei PS massimi al bersaglio. È più efficace quando il terreno di lotta è nello stato di Campo Erboso.", + name: 'Cura Floreale', + effect: 'Fa recuperare metà dei PS massimi al bersaglio. È più efficace quando il terreno di lotta è nello stato di Campo Erboso.', }, highHorsepower: { - name: "Forza Equina", - effect: "Il Pokémon travolge il bersaglio con un attacco possente.", + name: 'Forza Equina', + effect: 'Il Pokémon travolge il bersaglio con un attacco possente.', }, strengthSap: { - name: "Assorbiforza", - effect: "Fa recuperare una quantità di PS pari all'Attacco del bersaglio, che vedrà diminuire questa statistica.", + name: 'Assorbiforza', + effect: 'Fa recuperare una quantità di PS pari all\'Attacco del bersaglio, che vedrà diminuire questa statistica.', }, solarBlade: { - name: "Lama Solare", - effect: "Il Pokémon assorbe la luce al primo turno per poi condensarla in una lama e attaccare al turno successivo.", + name: 'Lama Solare', + effect: 'Il Pokémon assorbe la luce al primo turno per poi condensarla in una lama e attaccare al turno successivo.', }, leafage: { - name: "Fogliame", - effect: "Attacca il bersaglio con delle foglie.", + name: 'Fogliame', + effect: 'Attacca il bersaglio con delle foglie.', }, spotlight: { - name: "Riflettore", - effect: "Nessuna descrizione disponibile.", + name: 'Riflettore', + effect: 'Nessuna descrizione disponibile.', }, toxicThread: { - name: "Velenotela", - effect: "Avvelena il bersaglio avvolgendolo con filamenti tossici e ne riduce la Velocità.", + name: 'Velenotela', + effect: 'Avvelena il bersaglio avvolgendolo con filamenti tossici e ne riduce la Velocità.', }, laserFocus: { - name: "Concentrazione", - effect: "Chi la usa si concentra e nel turno successivo metterà sicuramente a segno un brutto colpo.", + name: 'Concentrazione', + effect: 'Chi la usa si concentra e nel turno successivo metterà sicuramente a segno un brutto colpo.', }, gearUp: { - name: "Marciainpiù", - effect: "Dà una marcia in più agli alleati con le abilità Meno o Più aumentandone l’Attacco e l’Attacco Speciale.", + name: 'Marciainpiù', + effect: 'Dà una marcia in più agli alleati con le abilità Meno o Più aumentandone l’Attacco e l’Attacco Speciale.', }, throatChop: { - name: "Colpo Infernale", - effect: "Chi viene colpito da questa mossa prova un dolore lancinante e non può più usare mosse basate sul suono per due turni.", + name: 'Colpo Infernale', + effect: 'Chi viene colpito da questa mossa prova un dolore lancinante e non può più usare mosse basate sul suono per due turni.', }, pollenPuff: { - name: "Sferapolline", - effect: "Chi la usa attacca il nemico con una sfera esplosiva. Se colpisce degli alleati, fa recuperare loro dei PS.", + name: 'Sferapolline', + effect: 'Chi la usa attacca il nemico con una sfera esplosiva. Se colpisce degli alleati, fa recuperare loro dei PS.', }, anchorShot: { - name: "Colpo d'Ancora", - effect: "Chi la usa colpisce il nemico con un'ancora e lo intrappola nella catena impedendogli di fuggire.", + name: 'Colpo d\'Ancora', + effect: 'Chi la usa colpisce il nemico con un\'ancora e lo intrappola nella catena impedendogli di fuggire.', }, psychicTerrain: { - name: "Campo Psichico", - effect: "Per cinque turni il terreno entra nello stato di Campo Psichico: i Pokémon a terra non subiscono mosse ad alta priorità e la potenza delle mosse di tipo Psico aumenta.", + name: 'Campo Psichico', + effect: 'Per cinque turni il terreno entra nello stato di Campo Psichico: i Pokémon a terra non subiscono mosse ad alta priorità e la potenza delle mosse di tipo Psico aumenta.', }, lunge: { - name: "Assalto", - effect: "Chi la usa si lancia con tutte le sue forze sul bersaglio e ne riduce l'Attacco.", + name: 'Assalto', + effect: 'Chi la usa si lancia con tutte le sue forze sul bersaglio e ne riduce l\'Attacco.', }, fireLash: { - name: "Frusta di Fuoco", - effect: "Colpisce il bersaglio con una frusta infuocata e ne riduce la Difesa.", + name: 'Frusta di Fuoco', + effect: 'Colpisce il bersaglio con una frusta infuocata e ne riduce la Difesa.', }, powerTrip: { - name: "Tracotanza", - effect: "Chi la usa attacca il bersaglio sfoggiando la propria forza. Più le sue statistiche sono state aumentate, più la mossa è potente.", + name: 'Tracotanza', + effect: 'Chi la usa attacca il bersaglio sfoggiando la propria forza. Più le sue statistiche sono state aumentate, più la mossa è potente.', }, burnUp: { - name: "Ultima Fiamma", - effect: "Chi la usa attacca sfruttando tutta la sua potenza incendiaria per infliggere gravi danni al bersaglio, ma come conseguenza perde il tipo Fuoco.", + name: 'Ultima Fiamma', + effect: 'Chi la usa attacca sfruttando tutta la sua potenza incendiaria per infliggere gravi danni al bersaglio, ma come conseguenza perde il tipo Fuoco.', }, speedSwap: { - name: "Velociscambio", - effect: "Chi la usa scambia la propria Velocità con quella del bersaglio.", + name: 'Velociscambio', + effect: 'Chi la usa scambia la propria Velocità con quella del bersaglio.', }, smartStrike: { - name: "Sottilcorno", - effect: "Chi la usa colpisce il bersaglio con un corno appuntito. Questa mossa va sempre a segno.", + name: 'Sottilcorno', + effect: 'Chi la usa colpisce il bersaglio con un corno appuntito. Questa mossa va sempre a segno.', }, purify: { - name: "Purificazione", - effect: "Il bersaglio della mossa viene curato dalle alterazioni di stato inoltre l'utilizzatore ripristina i propri PS se la mossa va a segno.", + name: 'Purificazione', + effect: 'Il bersaglio della mossa viene curato dalle alterazioni di stato inoltre l\'utilizzatore ripristina i propri PS se la mossa va a segno.', }, revelationDance: { - name: "Mutadanza", - effect: "Chi la usa si lancia in una danza e attacca il nemico con tutte le sue forze. Il tipo della mossa corrisponde al tipo del Pokémon che la usa.", + name: 'Mutadanza', + effect: 'Chi la usa si lancia in una danza e attacca il nemico con tutte le sue forze. Il tipo della mossa corrisponde al tipo del Pokémon che la usa.', }, coreEnforcer: { - name: "Nucleocastigo", - effect: "Il bersaglio subisce dei danni e, se ha già agito nel turno, perde la sua abilità.", + name: 'Nucleocastigo', + effect: 'Il bersaglio subisce dei danni e, se ha già agito nel turno, perde la sua abilità.', }, tropKick: { - name: "Tropicalcio", - effect: "Chi la usa colpisce il bersaglio con un potente calcio sfruttando una tecnica originaria dei paesi tropicali e ne riduce l'Attacco.", + name: 'Tropicalcio', + effect: 'Chi la usa colpisce il bersaglio con un potente calcio sfruttando una tecnica originaria dei paesi tropicali e ne riduce l\'Attacco.', }, instruct: { - name: "Imposizione", - effect: "Nessuna descrizione disponibile.", + name: 'Imposizione', + effect: 'Nessuna descrizione disponibile.', }, beakBlast: { - name: "Cannonbecco", - effect: "Chi la usa arroventa il proprio becco e poi attacca. Se un Pokémon lo colpisce con un attacco diretto mentre sta accumulando calore, resta scottato.", + name: 'Cannonbecco', + effect: 'Chi la usa arroventa il proprio becco e poi attacca. Se un Pokémon lo colpisce con un attacco diretto mentre sta accumulando calore, resta scottato.', }, clangingScales: { - name: "Clamorsquame", - effect: "Chi la usa attacca il bersaglio con un suono fortissimo che genera sfregando le scaglie del corpo. Dopo aver attaccato, la sua Difesa diminuisce.", + name: 'Clamorsquame', + effect: 'Chi la usa attacca il bersaglio con un suono fortissimo che genera sfregando le scaglie del corpo. Dopo aver attaccato, la sua Difesa diminuisce.', }, dragonHammer: { - name: "Marteldrago", - effect: "Chi la usa infligge danni al bersaglio usando il proprio corpo come se fosse un martello.", + name: 'Marteldrago', + effect: 'Chi la usa infligge danni al bersaglio usando il proprio corpo come se fosse un martello.', }, brutalSwing: { - name: "Vorticolpo", - effect: "Chi la usa infligge danni intorno a sé facendo ruotare una parte del suo corpo.", + name: 'Vorticolpo', + effect: 'Chi la usa infligge danni intorno a sé facendo ruotare una parte del suo corpo.', }, auroraVeil: { - name: "Velaurora", - effect: "Questa mossa riduce i danni provocati dalle mosse fisiche e speciali per 5 turni. Può essere usata solo mentre grandina.", + name: 'Velaurora', + effect: 'Questa mossa riduce i danni provocati dalle mosse fisiche e speciali per 5 turni. Può essere usata solo mentre grandina.', }, sinisterArrowRaid: { - name: "Dardoassalto Spettrale", - effect: "Grazie al Potere Z, Decidueye crea una formazione di frecce che colpisce il bersaglio a gran velocità.", + name: 'Dardoassalto Spettrale', + effect: 'Grazie al Potere Z, Decidueye crea una formazione di frecce che colpisce il bersaglio a gran velocità.', }, maliciousMoonsault: { - name: "Iperschianto delle Tenebre", - effect: "Grazie al Potere Z, Incineroar richiama tutta la sua forza e si lancia impetuosamente sul bersaglio.", + name: 'Iperschianto delle Tenebre', + effect: 'Grazie al Potere Z, Incineroar richiama tutta la sua forza e si lancia impetuosamente sul bersaglio.', }, oceanicOperetta: { - name: "Sinfonia del Mare", - effect: "Grazie al Potere Z, Primarina concentra un’enorme quantità d’acqua e attacca il bersaglio con una potenza smisurata.", + name: 'Sinfonia del Mare', + effect: 'Grazie al Potere Z, Primarina concentra un’enorme quantità d’acqua e attacca il bersaglio con una potenza smisurata.', }, guardianOfAlola: { - name: "Collera del Guardiano", - effect: "Grazie al Potere Z, il Nume Locale evoca l’energia di Alola e attacca con grande potenza, facendo perdere al bersaglio la maggior parte dei suoi PS.", + name: 'Collera del Guardiano', + effect: 'Grazie al Potere Z, il Nume Locale evoca l’energia di Alola e attacca con grande potenza, facendo perdere al bersaglio la maggior parte dei suoi PS.', }, soulStealing7StarStrike: { - name: "Colpo Eptastellare Rubanima", - effect: "Grazie al Potere Z, Marshadow fa appello a tutte le sue forze e colpisce il bersaglio con una scarica di calci e pugni potentissimi.", + name: 'Colpo Eptastellare Rubanima', + effect: 'Grazie al Potere Z, Marshadow fa appello a tutte le sue forze e colpisce il bersaglio con una scarica di calci e pugni potentissimi.', }, stokedSparksurfer: { - name: "Elettrosurf Folgorante", - effect: "Grazie al Potere Z, il Raichu di Alola attacca con tutta la sua potenza e paralizza il bersaglio.", + name: 'Elettrosurf Folgorante', + effect: 'Grazie al Potere Z, il Raichu di Alola attacca con tutta la sua potenza e paralizza il bersaglio.', }, pulverizingPancake: { - name: "Adesso Faccio sul Serio", - effect: "Grazie al Potere Z, Snorlax tira fuori la grinta e, muovendo energicamente il suo enorme corpo, attacca il bersaglio con tutta la sua forza.", + name: 'Adesso Faccio sul Serio', + effect: 'Grazie al Potere Z, Snorlax tira fuori la grinta e, muovendo energicamente il suo enorme corpo, attacca il bersaglio con tutta la sua forza.', }, extremeEvoboost: { - name: "Potenziamento Eevolutivo", - effect: "Grazie al Potere Z, Eevee evoca a sé tutta l’energia delle sue possibili evoluzioni e aumenta di molto le sue statistiche", + name: 'Potenziamento Eevolutivo', + effect: 'Grazie al Potere Z, Eevee evoca a sé tutta l’energia delle sue possibili evoluzioni e aumenta di molto le sue statistiche', }, genesisSupernova: { - name: "Supernova delle Origini", - effect: "Grazie al Potere Z, Mew attacca il bersaglio con tutta la sua forza e genera un Campo Psichico a terra.", + name: 'Supernova delle Origini', + effect: 'Grazie al Potere Z, Mew attacca il bersaglio con tutta la sua forza e genera un Campo Psichico a terra.', }, shellTrap: { - name: "Gusciotrappola", - effect: "Il guscio del Pokémon diventa una trappola. Se un nemico lo colpisce con una mossa fisica, innesca un'esplosione e subisce dei danni.", + name: 'Gusciotrappola', + effect: 'Il guscio del Pokémon diventa una trappola. Se un nemico lo colpisce con una mossa fisica, innesca un\'esplosione e subisce dei danni.', }, fleurCannon: { - name: "Cannonfiore", - effect: "Colpisce il bersaglio con un potente raggio, ma riduce di molto l'Attacco Speciale di chi la usa.", + name: 'Cannonfiore', + effect: 'Colpisce il bersaglio con un potente raggio, ma riduce di molto l\'Attacco Speciale di chi la usa.', }, psychicFangs: { - name: "Psicozanna", - effect: "L'utilizzatore morde il bersaglio, rompendo barriere come Schermoluce e Riflesso.", + name: 'Psicozanna', + effect: 'L\'utilizzatore morde il bersaglio, rompendo barriere come Schermoluce e Riflesso.', }, stompingTantrum: { - name: "Battipiedi", - effect: "Chi la usa attacca battendo i piedi per la rabbia. Se la mossa usata al turno precedente non è andata a segno, la potenza raddoppia.", + name: 'Battipiedi', + effect: 'Chi la usa attacca battendo i piedi per la rabbia. Se la mossa usata al turno precedente non è andata a segno, la potenza raddoppia.', }, shadowBone: { - name: "Ossotetro", - effect: "Chi la usa colpisce il bersaglio con un osso in cui alberga uno spirito. Può anche ridurne la Difesa.", + name: 'Ossotetro', + effect: 'Chi la usa colpisce il bersaglio con un osso in cui alberga uno spirito. Può anche ridurne la Difesa.', }, accelerock: { - name: "Rocciarapida", - effect: "Chi la usa attacca il bersaglio colpendolo a tutta velocità. Questa mossa ha priorità alta.", + name: 'Rocciarapida', + effect: 'Chi la usa attacca il bersaglio colpendolo a tutta velocità. Questa mossa ha priorità alta.', }, liquidation: { - name: "Idrobreccia", - effect: "Chi la usa colpisce il bersaglio con la forza dell'acqua. Può anche ridurne la Difesa.", + name: 'Idrobreccia', + effect: 'Chi la usa colpisce il bersaglio con la forza dell\'acqua. Può anche ridurne la Difesa.', }, prismaticLaser: { - name: "Prismalaser", - effect: "Chi la usa proietta dei potenti raggi di luce grazie alla potenza del suo prisma, ma non può agire nel turno successivo.", + name: 'Prismalaser', + effect: 'Chi la usa proietta dei potenti raggi di luce grazie alla potenza del suo prisma, ma non può agire nel turno successivo.', }, spectralThief: { - name: "Ombrafurto", - effect: "Chi la usa ruba gli aumenti delle statistiche del bersaglio, poi si nasconde nella sua ombra e lo attacca.", + name: 'Ombrafurto', + effect: 'Chi la usa ruba gli aumenti delle statistiche del bersaglio, poi si nasconde nella sua ombra e lo attacca.', }, sunsteelStrike: { - name: "Astrocarica", - effect: "Chi la usa travolge il bersaglio con la potenza di una meteora. Questo attacco ignora l'abilità del bersaglio.", + name: 'Astrocarica', + effect: 'Chi la usa travolge il bersaglio con la potenza di una meteora. Questo attacco ignora l\'abilità del bersaglio.', }, moongeistBeam: { - name: "Raggio d'Ombra", - effect: "Chi la usa proietta sul bersaglio un misterioso raggio di luce. Questo attacco ignora l'abilità del bersaglio.", + name: 'Raggio d\'Ombra', + effect: 'Chi la usa proietta sul bersaglio un misterioso raggio di luce. Questo attacco ignora l\'abilità del bersaglio.', }, tearfulLook: { - name: "Occhionilucidi", - effect: "Chi la usa guarda il bersaglio con gli occhi pieni di lacrime e gli fa perdere lo spirito combattivo, riducendone l'Attacco e l'Attacco Speciale", + name: 'Occhionilucidi', + effect: 'Chi la usa guarda il bersaglio con gli occhi pieni di lacrime e gli fa perdere lo spirito combattivo, riducendone l\'Attacco e l\'Attacco Speciale', }, zingZap: { - name: "Elettropizzico", - effect: "Chi la usa colpisce il bersaglio investendolo con una potente scarica elettrica che può anche farlo tentennare.", + name: 'Elettropizzico', + effect: 'Chi la usa colpisce il bersaglio investendolo con una potente scarica elettrica che può anche farlo tentennare.', }, naturesMadness: { - name: "Ira della Natura", - effect: "Scatena l’ira della natura sul bersaglio e ne dimezza i PS.", + name: 'Ira della Natura', + effect: 'Scatena l’ira della natura sul bersaglio e ne dimezza i PS.', }, multiAttack: { - name: "Multiattacco", - effect: "Chi la usa si avvolge in un potente campo energetico e colpisce il bersaglio. Il tipo della mossa varia in base alla ROM installata.", + name: 'Multiattacco', + effect: 'Chi la usa si avvolge in un potente campo energetico e colpisce il bersaglio. Il tipo della mossa varia in base alla ROM installata.', }, tenMillionVoltThunderbolt: { - name: "Iperfulmine", - effect: "Grazie al Potere Z, Pikachu con il berretto scatena una potentissima scarica elettrica. Probabile brutto colpo.", + name: 'Iperfulmine', + effect: 'Grazie al Potere Z, Pikachu con il berretto scatena una potentissima scarica elettrica. Probabile brutto colpo.', }, mindBlown: { - name: "Sbalorditesta", - effect: "Chi la usa fa esplodere la propria testa per attaccare tutti i Pokémon che ha intorno, ma subisce danni.", + name: 'Sbalorditesta', + effect: 'Chi la usa fa esplodere la propria testa per attaccare tutti i Pokémon che ha intorno, ma subisce danni.', }, plasmaFists: { - name: "Pugni Plasma", - effect: "Chi la usa attacca con pugni carichi di elettricità. Trasforma le mosse di tipo Normale in mosse di tipo Elettro.", + name: 'Pugni Plasma', + effect: 'Chi la usa attacca con pugni carichi di elettricità. Trasforma le mosse di tipo Normale in mosse di tipo Elettro.', }, photonGeyser: { - name: "Geyser Fotonico", - effect: "Infligge danni in base all’Attacco o all’Attacco Speciale scegliendo il più alto tra i due. Questo attacco ignora l’abilità del bersaglio.", + name: 'Geyser Fotonico', + effect: 'Infligge danni in base all’Attacco o all’Attacco Speciale scegliendo il più alto tra i due. Questo attacco ignora l’abilità del bersaglio.', }, lightThatBurnsTheSky: { - name: "Fotodistruzione Apocalittica", - effect: "Infligge danni in base all’Attacco o all’Attacco Speciale scegliendo il più alto tra i due. Questo attacco ignora l’abilità del bersaglio.", + name: 'Fotodistruzione Apocalittica', + effect: 'Infligge danni in base all’Attacco o all’Attacco Speciale scegliendo il più alto tra i due. Questo attacco ignora l’abilità del bersaglio.', }, searingSunrazeSmash: { - name: "Supercollisione Solare", - effect: "Grazie al Potere Z, Solgaleo attacca il bersaglio con tutta la sua forza. Questo attacco ignora l’abilità del bersaglio se questa ha effetto sulle mosse.", + name: 'Supercollisione Solare', + effect: 'Grazie al Potere Z, Solgaleo attacca il bersaglio con tutta la sua forza. Questo attacco ignora l’abilità del bersaglio se questa ha effetto sulle mosse.', }, menacingMoonrazeMaelstrom: { - name: "Deflagrazione Lunare", - effect: "Grazie al Potere Z, Lunala attacca il bersaglio con tutta la sua forza. Questo attacco ignora l’abilità del bersaglio se questa ha effetto sulle mosse.", + name: 'Deflagrazione Lunare', + effect: 'Grazie al Potere Z, Lunala attacca il bersaglio con tutta la sua forza. Questo attacco ignora l’abilità del bersaglio se questa ha effetto sulle mosse.', }, letsSnuggleForever: { - name: "Dolcesacco di Botte", - effect: "Grazie al Potere Z, Mimikyu fa appello a tutte le sue forze e attacca il bersaglio tempestandolo di colpi.", + name: 'Dolcesacco di Botte', + effect: 'Grazie al Potere Z, Mimikyu fa appello a tutte le sue forze e attacca il bersaglio tempestandolo di colpi.', }, splinteredStormshards: { - name: "Litotempesta Radiale", - effect: "Grazie al Potere Z, Lycanroc attacca il bersaglio con tutta la sua forza. Questa mossa annulla anche gli eventuali campi attivi.", + name: 'Litotempesta Radiale', + effect: 'Grazie al Potere Z, Lycanroc attacca il bersaglio con tutta la sua forza. Questa mossa annulla anche gli eventuali campi attivi.', }, clangorousSoulblaze: { - name: "Dracofonia Divampante", - effect: "Grazie al Potere Z, Kommo-o attacca i nemici con tutta la sua forza. Inoltre, aumenta le proprie statistiche.", + name: 'Dracofonia Divampante', + effect: 'Grazie al Potere Z, Kommo-o attacca i nemici con tutta la sua forza. Inoltre, aumenta le proprie statistiche.', }, zippyZap: { - name: "Sprintaboom", - effect: "The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user's evasiveness.", + name: 'Sprintaboom', + effect: 'The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user\'s evasiveness.', }, splishySplash: { - name: "Surfasplash", - effect: "Colpisce il bersaglio con un'enorme onda caricata di elettricità che può anche paralizzarlo.", + name: 'Surfasplash', + effect: 'Colpisce il bersaglio con un\'enorme onda caricata di elettricità che può anche paralizzarlo.', }, floatyFall: { - name: "Piombaflap", - effect: "Chi la usa si libra in aria per poi piombare addosso al bersaglio. Può anche far tentennare il Pokémon colpito.", + name: 'Piombaflap', + effect: 'Chi la usa si libra in aria per poi piombare addosso al bersaglio. Può anche far tentennare il Pokémon colpito.', }, pikaPapow: { - name: "Pikasaetta", - effect: "Questa mossa infallibile diventa più potente con il rafforzarsi del rapporto tra Pikachu e l'Allenatore.", + name: 'Pikasaetta', + effect: 'Questa mossa infallibile diventa più potente con il rafforzarsi del rapporto tra Pikachu e l\'Allenatore.', }, bouncyBubble: { - name: "Bollaslurp", - effect: "Chi la usa colpisce il bersaglio con una raffica di bolle, per poi assorbirle e recuperare una quantità di PS pari alla metà del danno inferto.", + name: 'Bollaslurp', + effect: 'Chi la usa colpisce il bersaglio con una raffica di bolle, per poi assorbirle e recuperare una quantità di PS pari alla metà del danno inferto.', }, buzzyBuzz: { - name: "Elettrozap", - effect: "Colpisce il bersaglio con una scarica elettrica che lo paralizza.", + name: 'Elettrozap', + effect: 'Colpisce il bersaglio con una scarica elettrica che lo paralizza.', }, sizzlySlide: { - name: "Fiammabam", - effect: "Chi la usa viene avvolto dalle fiamme e colpisce il bersaglio con forza, scottandolo.", + name: 'Fiammabam', + effect: 'Chi la usa viene avvolto dalle fiamme e colpisce il bersaglio con forza, scottandolo.', }, glitzyGlow: { - name: "Auraswoosh", - effect: "Colpisce il bersaglio ripetutamente con onde di forza psicocinetica e innalza una barriera fantastica che riduce i danni degli attacchi speciali nemici.", + name: 'Auraswoosh', + effect: 'Colpisce il bersaglio ripetutamente con onde di forza psicocinetica e innalza una barriera fantastica che riduce i danni degli attacchi speciali nemici.', }, baddyBad: { - name: "Zona Buiabuia", - effect: "Chi la usa scatena l’oscurità che ha dentro, colpendo il bersaglio e innalzando una barriera fantastica che riduce i danni degli attacchi fisici nemici.", + name: 'Zona Buiabuia', + effect: 'Chi la usa scatena l’oscurità che ha dentro, colpendo il bersaglio e innalzando una barriera fantastica che riduce i danni degli attacchi fisici nemici.', }, sappySeed: { - name: "Bombafrush", - effect: "Fa crescere un'enorme pianta che colpisce il bersaglio con una pioggia di semi. Questi sottraggono PS a ogni turno permettendo a chi la usa di curarsi.", + name: 'Bombafrush', + effect: 'Fa crescere un\'enorme pianta che colpisce il bersaglio con una pioggia di semi. Questi sottraggono PS a ogni turno permettendo a chi la usa di curarsi.', }, freezyFrost: { - name: "Scricchiagelo", - effect: "Chi la usa attacca il bersaglio con un cristallo formato da una nube nera congelata, che annulla ogni modifica alle statistiche di tutti i Pokémon.", + name: 'Scricchiagelo', + effect: 'Chi la usa attacca il bersaglio con un cristallo formato da una nube nera congelata, che annulla ogni modifica alle statistiche di tutti i Pokémon.', }, sparklySwirl: { - name: "Sbrilluccibufera", - effect: "Chi la usa attacca il bersaglio avvolgendolo in un turbine di profumi soffocanti e cura i problemi di stato propri e degli alleati.", + name: 'Sbrilluccibufera', + effect: 'Chi la usa attacca il bersaglio avvolgendolo in un turbine di profumi soffocanti e cura i problemi di stato propri e degli alleati.', }, veeveeVolley: { - name: "Eeveempatto", - effect: "Questa mossa infallibile diventa più potente con il rafforzarsi del rapporto tra Eevee e l'Allenatore.", + name: 'Eeveempatto', + effect: 'Questa mossa infallibile diventa più potente con il rafforzarsi del rapporto tra Eevee e l\'Allenatore.', }, doubleIronBash: { - name: "Pugni Corazzati", - effect: "L'utilizzatore ruota, centrando il dado esagonale nel petto, quindi colpisce con le braccia due volte di seguito. Ciò potrebbe anche far tentennare il bersaglio.", + name: 'Pugni Corazzati', + effect: 'L\'utilizzatore ruota, centrando il dado esagonale nel petto, quindi colpisce con le braccia due volte di seguito. Ciò potrebbe anche far tentennare il bersaglio.', }, maxGuard: { - name: "Dynabarriera", - effect: "Questa mossa permette di eludere tutti gli attacchi. Se usata in successione può fallire.", + name: 'Dynabarriera', + effect: 'Questa mossa permette di eludere tutti gli attacchi. Se usata in successione può fallire.', }, dynamaxCannon: { - name: "Cannone Dynamax", - effect: "Il Pokémon attacca emettendo dal suo nucleo l'energia concentrata nel corpo.", + name: 'Cannone Dynamax', + effect: 'Il Pokémon attacca emettendo dal suo nucleo l\'energia concentrata nel corpo.', }, snipeShot: { - name: "Tiromirato", - effect: "Permette di attaccare il bersaglio ignorando gli effetti di mosse e abilità che alterano le mosse", + name: 'Tiromirato', + effect: 'Permette di attaccare il bersaglio ignorando gli effetti di mosse e abilità che alterano le mosse', }, jawLock: { - name: "Morsostretto", - effect: "Impedisce a chi la usa e al bersaglio di essere sostituiti finché non vanno KO. L'effetto svanisce se uno dei due lascia il campo.", + name: 'Morsostretto', + effect: 'Impedisce a chi la usa e al bersaglio di essere sostituiti finché non vanno KO. L\'effetto svanisce se uno dei due lascia il campo.', }, stuffCheeks: { - name: "Riempiguance", - effect: "Se chi la usa ha con sé una bacca, la mangia e la sua Difesa aumenta di molto.", + name: 'Riempiguance', + effect: 'Se chi la usa ha con sé una bacca, la mangia e la sua Difesa aumenta di molto.', }, noRetreat: { - name: "Spalle al Muro", - effect: "Il Pokémon aumenta tutte le sue statistiche ma non può più fuggire o essere sostituito.", + name: 'Spalle al Muro', + effect: 'Il Pokémon aumenta tutte le sue statistiche ma non può più fuggire o essere sostituito.', }, tarShot: { - name: "Colpocatrame", - effect: "Chi la usa getta catrame appiccicoso sul bersaglio abbassandone la Velocità e rendendolo vulnerabile al tipo Fuoco.", + name: 'Colpocatrame', + effect: 'Chi la usa getta catrame appiccicoso sul bersaglio abbassandone la Velocità e rendendolo vulnerabile al tipo Fuoco.', }, magicPowder: { - name: "Magipolvere", - effect: "Chi la usa getta addosso al bersaglio una polvere magica che lo rende di tipo Psico.", + name: 'Magipolvere', + effect: 'Chi la usa getta addosso al bersaglio una polvere magica che lo rende di tipo Psico.', }, dragonDarts: { - name: "Dragofrecce", - effect: "L'utilizzatore attacca due volte usando Dreepy. Se ci sono due obiettivi, questa mossa colpisce una volta ogni obiettivo.", + name: 'Dragofrecce', + effect: 'L\'utilizzatore attacca due volte usando Dreepy. Se ci sono due obiettivi, questa mossa colpisce una volta ogni obiettivo.', }, teatime: { - name: "Ora del Tè", - effect: "Chi la usa invita tutti i Pokémon in campo a prendere il tè. Quelli che hanno con sé una bacca la mangiano.", + name: 'Ora del Tè', + effect: 'Chi la usa invita tutti i Pokémon in campo a prendere il tè. Quelli che hanno con sé una bacca la mangiano.', }, octolock: { - name: "Tentacolock", - effect: "Chi la usa immobilizza il bersaglio impedendogli di fuggire e ne diminuisce la Difesa e la Difesa Speciale a ogni turno.", + name: 'Tentacolock', + effect: 'Chi la usa immobilizza il bersaglio impedendogli di fuggire e ne diminuisce la Difesa e la Difesa Speciale a ogni turno.', }, boltBeak: { - name: "Beccoshock", - effect: "Chi la usa attacca il bersaglio con il becco appuntito carico d'elettricità. Se attacca per primo, la potenza della mossa raddoppia.", + name: 'Beccoshock', + effect: 'Chi la usa attacca il bersaglio con il becco appuntito carico d\'elettricità. Se attacca per primo, la potenza della mossa raddoppia.', }, fishiousRend: { - name: "Branchiomorso", - effect: "Chi la usa morde il bersaglio con le dure branchie. Se attacca per primo, la potenza della mossa raddoppia.", + name: 'Branchiomorso', + effect: 'Chi la usa morde il bersaglio con le dure branchie. Se attacca per primo, la potenza della mossa raddoppia.', }, courtChange: { - name: "Cambiocampo", - effect: "Una forza misteriosa inverte gli effetti attivi sul campo alleato e sul campo avversario.", + name: 'Cambiocampo', + effect: 'Una forza misteriosa inverte gli effetti attivi sul campo alleato e sul campo avversario.', }, maxFlare: { - name: "Dynafiammata", - effect: "Un attacco di tipo Fuoco che può essere eseguito dai Pokémon dynamaxizzati. Intensifica i raggi solari per cinque turni.", + name: 'Dynafiammata', + effect: 'Un attacco di tipo Fuoco che può essere eseguito dai Pokémon dynamaxizzati. Intensifica i raggi solari per cinque turni.', }, maxFlutterby: { - name: "Dynainsetto", - effect: "Un attacco di tipo Coleottero che può essere eseguito dai Pokémon dynamaxizzati. Riduce l'Attacco Speciale degli avversari.", + name: 'Dynainsetto', + effect: 'Un attacco di tipo Coleottero che può essere eseguito dai Pokémon dynamaxizzati. Riduce l\'Attacco Speciale degli avversari.', }, maxLightning: { - name: "Dynasaetta", - effect: "Un attacco di tipo Elettro che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Elettrico.", + name: 'Dynasaetta', + effect: 'Un attacco di tipo Elettro che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Elettrico.', }, maxStrike: { - name: "Dynattacco", - effect: "Un attacco di tipo Normale che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Velocità degli avversari.", + name: 'Dynattacco', + effect: 'Un attacco di tipo Normale che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Velocità degli avversari.', }, maxKnuckle: { - name: "Dynapugno", - effect: "Un attacco di tipo Lotta che può essere eseguito dai Pokémon dynamaxizzati. Aumenta l'Attacco degli alleati.", + name: 'Dynapugno', + effect: 'Un attacco di tipo Lotta che può essere eseguito dai Pokémon dynamaxizzati. Aumenta l\'Attacco degli alleati.', }, maxPhantasm: { - name: "Dynavuoto", - effect: "Un attacco di tipo Spettro che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Difesa degli avversari.", + name: 'Dynavuoto', + effect: 'Un attacco di tipo Spettro che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Difesa degli avversari.', }, maxHailstorm: { - name: "Dynagelo", - effect: "Un attacco di tipo Ghiaccio che può essere eseguito dai Pokémon dynamaxizzati. Causa una nevicata che dura per cinque turni.", + name: 'Dynagelo', + effect: 'Un attacco di tipo Ghiaccio che può essere eseguito dai Pokémon dynamaxizzati. Causa una nevicata che dura per cinque turni.', }, maxOoze: { - name: "Dynacorrosione", - effect: "Un attacco di tipo Veleno che può essere eseguito dai Pokémon dynamaxizzati. Aumenta l'Attacco Speciale degli alleati.", + name: 'Dynacorrosione', + effect: 'Un attacco di tipo Veleno che può essere eseguito dai Pokémon dynamaxizzati. Aumenta l\'Attacco Speciale degli alleati.', }, maxGeyser: { - name: "Dynaflusso", - effect: "Un attacco di tipo Acqua che può essere eseguito dai Pokémon dynamaxizzati. Provoca una forte pioggia per cinque turni.", + name: 'Dynaflusso', + effect: 'Un attacco di tipo Acqua che può essere eseguito dai Pokémon dynamaxizzati. Provoca una forte pioggia per cinque turni.', }, maxAirstream: { - name: "Dynajet", - effect: "Un attacco di tipo Volante che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Velocità degli alleati.", + name: 'Dynajet', + effect: 'Un attacco di tipo Volante che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Velocità degli alleati.', }, maxStarfall: { - name: "Dynafata", - effect: "Un attacco di tipo Folletto che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Nebbioso.", + name: 'Dynafata', + effect: 'Un attacco di tipo Folletto che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Nebbioso.', }, maxWyrmwind: { - name: "Dynadragone", - effect: "Un attacco di tipo Drago che può essere eseguito dai Pokémon dynamaxizzati. Riduce l'Attacco degli avversari.", + name: 'Dynadragone', + effect: 'Un attacco di tipo Drago che può essere eseguito dai Pokémon dynamaxizzati. Riduce l\'Attacco degli avversari.', }, maxMindstorm: { - name: "Dynapsiche", - effect: "Un attacco di tipo Psico che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Psichico.", + name: 'Dynapsiche', + effect: 'Un attacco di tipo Psico che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Psichico.', }, maxRockfall: { - name: "Dynamacigno", - effect: "Un attacco di tipo Roccia che può essere eseguito dai Pokémon dynamaxizzati. Causa una tempesta di sabbia per cinque turni.", + name: 'Dynamacigno', + effect: 'Un attacco di tipo Roccia che può essere eseguito dai Pokémon dynamaxizzati. Causa una tempesta di sabbia per cinque turni.', }, maxQuake: { - name: "Dynasisma", - effect: "Un attacco di tipo Terra che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Difesa Speciale degli alleati.", + name: 'Dynasisma', + effect: 'Un attacco di tipo Terra che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Difesa Speciale degli alleati.', }, maxDarkness: { - name: "Dynatenebre", - effect: "Un attacco di tipo Buio che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Difesa Speciale degli avversari.", + name: 'Dynatenebre', + effect: 'Un attacco di tipo Buio che può essere eseguito dai Pokémon dynamaxizzati. Riduce la Difesa Speciale degli avversari.', }, maxOvergrowth: { - name: "Dynaflora", - effect: "Un attacco di tipo Erba che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Erboso.", + name: 'Dynaflora', + effect: 'Un attacco di tipo Erba che può essere eseguito dai Pokémon dynamaxizzati. Per cinque turni il terreno entra nello stato di Campo Erboso.', }, maxSteelspike: { - name: "Dynametallo", - effect: "Un attacco di tipo Acciaio che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Difesa degli alleati.", + name: 'Dynametallo', + effect: 'Un attacco di tipo Acciaio che può essere eseguito dai Pokémon dynamaxizzati. Aumenta la Difesa degli alleati.', }, clangorousSoul: { - name: "Dracofonia", - effect: "Chi la usa sacrifica un po' dei suoi PS per aumentare tutte le sue statistiche.", + name: 'Dracofonia', + effect: 'Chi la usa sacrifica un po\' dei suoi PS per aumentare tutte le sue statistiche.', }, bodyPress: { - name: "Schiacciacorpo", - effect: "Chi la usa schiaccia il bersaglio con il suo corpo. Più la sua Difesa è alta, maggiori sono i danni inflitti.", + name: 'Schiacciacorpo', + effect: 'Chi la usa schiaccia il bersaglio con il suo corpo. Più la sua Difesa è alta, maggiori sono i danni inflitti.', }, decorate: { - name: "Decorazione", - effect: "Chi la usa agghinda il bersaglio con delle decorazioni aumentandone di molto l'Attacco e l'Attacco Speciale.", + name: 'Decorazione', + effect: 'Chi la usa agghinda il bersaglio con delle decorazioni aumentandone di molto l\'Attacco e l\'Attacco Speciale.', }, drumBeating: { - name: "Tamburattacco", - effect: "Chi la usa percuote il proprio tamburo per controllarne le radici e attaccare il bersaglio, riducendone la Velocità.", + name: 'Tamburattacco', + effect: 'Chi la usa percuote il proprio tamburo per controllarne le radici e attaccare il bersaglio, riducendone la Velocità.', }, snapTrap: { - name: "Tagliola", - effect: "Chi la usa intrappola il bersaglio in una tagliola e lo attacca per quattro o cinque turni.", + name: 'Tagliola', + effect: 'Chi la usa intrappola il bersaglio in una tagliola e lo attacca per quattro o cinque turni.', }, pyroBall: { - name: "Palla Infuocata", - effect: "l Pokémon attacca con una palla creata incendiando una piccola pietra. Può anche scottare il bersaglio.", + name: 'Palla Infuocata', + effect: 'l Pokémon attacca con una palla creata incendiando una piccola pietra. Può anche scottare il bersaglio.', }, behemothBlade: { - name: "Taglio Maestoso", - effect: "Il Pokémon brandisce un'enorme spada e attacca vibrando un poderoso fendente.", + name: 'Taglio Maestoso', + effect: 'Il Pokémon brandisce un\'enorme spada e attacca vibrando un poderoso fendente.', }, behemothBash: { - name: "Colpo Maestoso", - effect: "Il Pokémon trasforma il suo corpo in un robusto scudo e attacca caricando con forza.", + name: 'Colpo Maestoso', + effect: 'Il Pokémon trasforma il suo corpo in un robusto scudo e attacca caricando con forza.', }, auraWheel: { - name: "Ruota d'Aura", - effect: "Il Pokémon emette l'energia accumulata nelle guance per attaccare e aumentare la Velocità. Il tipo della mossa cambia in base alla forma assunta da Morpeko.", + name: 'Ruota d\'Aura', + effect: 'Il Pokémon emette l\'energia accumulata nelle guance per attaccare e aumentare la Velocità. Il tipo della mossa cambia in base alla forma assunta da Morpeko.', }, breakingSwipe: { - name: "Vastoimpatto", - effect: "Chi la usa attacca i nemici intorno con la sua robusta coda riducendone l'Attacco.", + name: 'Vastoimpatto', + effect: 'Chi la usa attacca i nemici intorno con la sua robusta coda riducendone l\'Attacco.', }, branchPoke: { - name: "Ramostoccata", - effect: "Chi la usa attacca il bersaglio con un ramo incredibilmente appuntito.", + name: 'Ramostoccata', + effect: 'Chi la usa attacca il bersaglio con un ramo incredibilmente appuntito.', }, overdrive: { - name: "Overdrive", - effect: "Chi la usa suona la chitarra o il basso creando un'onda sonora potentissima con cui attacca il bersaglio.", + name: 'Overdrive', + effect: 'Chi la usa suona la chitarra o il basso creando un\'onda sonora potentissima con cui attacca il bersaglio.', }, appleAcid: { - name: "Acido Malico", - effect: "Il Pokémon attacca il bersaglio con un liquido acido ricavato da mele aspre riducendone la Difesa Speciale.", + name: 'Acido Malico', + effect: 'Il Pokémon attacca il bersaglio con un liquido acido ricavato da mele aspre riducendone la Difesa Speciale.', }, gravApple: { - name: "Forza G", - effect: "Il Pokémon fa cadere una mela sul bersaglio da una grande altezza, infliggendogli danni e riducendone la Difesa.", + name: 'Forza G', + effect: 'Il Pokémon fa cadere una mela sul bersaglio da una grande altezza, infliggendogli danni e riducendone la Difesa.', }, spiritBreak: { - name: "Frantumanima", - effect: "Chi la usa attacca il bersaglio con un tale impeto da fargli perdere la voglia di lottare e ne riduce l'Attacco Speciale", + name: 'Frantumanima', + effect: 'Chi la usa attacca il bersaglio con un tale impeto da fargli perdere la voglia di lottare e ne riduce l\'Attacco Speciale', }, strangeSteam: { - name: "Vapore Incantato", - effect: "Il Pokémon attacca il bersaglio con getti di vapore che possono anche confonderlo.", + name: 'Vapore Incantato', + effect: 'Il Pokémon attacca il bersaglio con getti di vapore che possono anche confonderlo.', }, lifeDew: { - name: "Goccia Vitale", - effect: "Il Pokémon sparge tutt'intorno dell'acqua misteriosa che fa recuperare PS a sé e agli alleati in campo.", + name: 'Goccia Vitale', + effect: 'Il Pokémon sparge tutt\'intorno dell\'acqua misteriosa che fa recuperare PS a sé e agli alleati in campo.', }, obstruct: { - name: "Sbarramento", - effect: "Permette di eludere tutti gli attacchi. Se usata in successione può fallire. Se un Pokémon tocca chi la usa, la sua Difesa diminuisce di molto.", + name: 'Sbarramento', + effect: 'Permette di eludere tutti gli attacchi. Se usata in successione può fallire. Se un Pokémon tocca chi la usa, la sua Difesa diminuisce di molto.', }, falseSurrender: { - name: "Supplicolpo", - effect: "Chi la usa finge di abbassare la testa a mo' di supplica e attacca il bersaglio con i suoi capelli scarmigliati. Questa mossa va sempre a segno.", + name: 'Supplicolpo', + effect: 'Chi la usa finge di abbassare la testa a mo\' di supplica e attacca il bersaglio con i suoi capelli scarmigliati. Questa mossa va sempre a segno.', }, meteorAssault: { - name: "Sfolgorassalto", - effect: "Chi la usa attacca il bersaglio brandendo un grosso gambo, ma perde l'equilibrio e nel turno successivo non può agire.", + name: 'Sfolgorassalto', + effect: 'Chi la usa attacca il bersaglio brandendo un grosso gambo, ma perde l\'equilibrio e nel turno successivo non può agire.', }, eternabeam: { - name: "Raggio Infinito", - effect: "È l'attacco più potente di Eternatus quando assume la sua forma originale. Nel turno successivo non può agire.", + name: 'Raggio Infinito', + effect: 'È l\'attacco più potente di Eternatus quando assume la sua forma originale. Nel turno successivo non può agire.', }, steelBeam: { - name: "Raggio d'Acciaio", - effect: "Il Pokémon utilizza l'acciaio del proprio corpo per sparare un violento raggio, ma subisce danni.", + name: 'Raggio d\'Acciaio', + effect: 'Il Pokémon utilizza l\'acciaio del proprio corpo per sparare un violento raggio, ma subisce danni.', }, expandingForce: { - name: "Vastenergia", - effect: "Chi la usa attacca il bersaglio con energia psichica. Se utilizzata quando è attivo un Campo Psichico, la mossa aumenta di potenza e danneggia tutti i nemici.", + name: 'Vastenergia', + effect: 'Chi la usa attacca il bersaglio con energia psichica. Se utilizzata quando è attivo un Campo Psichico, la mossa aumenta di potenza e danneggia tutti i nemici.', }, steelRoller: { - name: "Ferrorullo", - effect: "Chi la usa attacca eliminando lo stato del terreno di lotta. La mossa fallisce se nel terreno non è attivo alcuno stato.", + name: 'Ferrorullo', + effect: 'Chi la usa attacca eliminando lo stato del terreno di lotta. La mossa fallisce se nel terreno non è attivo alcuno stato.', }, scaleShot: { - name: "Squamacolpo", - effect: "Il Pokémon attacca lanciando delle squame da due a cinque volte di fila. Aumenta la Velocità di chi la usa, ma ne riduce la Difesa.", + name: 'Squamacolpo', + effect: 'Il Pokémon attacca lanciando delle squame da due a cinque volte di fila. Aumenta la Velocità di chi la usa, ma ne riduce la Difesa.', }, meteorBeam: { - name: "Raggiometeora", - effect: "Chi la usa accumula l'energia dello spazio nel primo turno per aumentare l'Attacco Speciale, quindi attacca nel turno successivo.", + name: 'Raggiometeora', + effect: 'Chi la usa accumula l\'energia dello spazio nel primo turno per aumentare l\'Attacco Speciale, quindi attacca nel turno successivo.', }, shellSideArm: { - name: "Armaguscio", - effect: "Il Pokémon esegue un attacco fisico o speciale, in base a quale causa danni maggiori. Può anche avvelenare il bersaglio.", + name: 'Armaguscio', + effect: 'Il Pokémon esegue un attacco fisico o speciale, in base a quale causa danni maggiori. Può anche avvelenare il bersaglio.', }, mistyExplosion: { - name: "Nebbioscoppio", - effect: "Chi la usa attacca tutti i Pokémon che ha intorno, ma poi va KO. La potenza delle mosse aumenta quando è attivo un Campo Nebbioso.", + name: 'Nebbioscoppio', + effect: 'Chi la usa attacca tutti i Pokémon che ha intorno, ma poi va KO. La potenza delle mosse aumenta quando è attivo un Campo Nebbioso.', }, grassyGlide: { - name: "Erboscivolata", - effect: "Chi la usa attacca il bersaglio scivolando sul terreno. Se utilizzata quando è attivo un Campo Erboso, ha priorità alta.", + name: 'Erboscivolata', + effect: 'Chi la usa attacca il bersaglio scivolando sul terreno. Se utilizzata quando è attivo un Campo Erboso, ha priorità alta.', }, risingVoltage: { - name: "Elettroimpennata", - effect: "Chi la usa attacca con dell'elettricità che si alza dal suolo. La potenza della mossa raddoppia quando l'avversario si trova in un Campo Elettrico.", + name: 'Elettroimpennata', + effect: 'Chi la usa attacca con dell\'elettricità che si alza dal suolo. La potenza della mossa raddoppia quando l\'avversario si trova in un Campo Elettrico.', }, terrainPulse: { - name: "Campopulsar", - effect: "Chi la usa attacca sfruttando l'energia del terreno di lotta. Il tipo e la potenza della mossa variano a seconda dello stato del terreno stesso.", + name: 'Campopulsar', + effect: 'Chi la usa attacca sfruttando l\'energia del terreno di lotta. Il tipo e la potenza della mossa variano a seconda dello stato del terreno stesso.', }, skitterSmack: { - name: "Strisciacolpo", - effect: "Chi la usa attacca il bersaglio strisciandogli alle spalle e riducendo il suo Attacco Speciale.", + name: 'Strisciacolpo', + effect: 'Chi la usa attacca il bersaglio strisciandogli alle spalle e riducendo il suo Attacco Speciale.', }, burningJealousy: { - name: "Fiamminvidia", - effect: "Chi la usa attacca con la forza dell'invidia, causando una scottatura a tutti i Pokémon le cui statistiche sono aumentate durante quel turno.", + name: 'Fiamminvidia', + effect: 'Chi la usa attacca con la forza dell\'invidia, causando una scottatura a tutti i Pokémon le cui statistiche sono aumentate durante quel turno.', }, lashOut: { - name: "Sfogarabbia", - effect: "Chi la usa attacca il bersaglio con tutta la propria ira. Se ha subito riduzioni delle statistiche durante quel turno, la potenza della mossa raddoppia.", + name: 'Sfogarabbia', + effect: 'Chi la usa attacca il bersaglio con tutta la propria ira. Se ha subito riduzioni delle statistiche durante quel turno, la potenza della mossa raddoppia.', }, poltergeist: { - name: "Poltergeist", - effect: "Chi la usa attacca utilizzando lo strumento del bersaglio. La mossa fallisce se quest'ultimo non ha uno strumento.", + name: 'Poltergeist', + effect: 'Chi la usa attacca utilizzando lo strumento del bersaglio. La mossa fallisce se quest\'ultimo non ha uno strumento.', }, corrosiveGas: { - name: "Gas Corrosivo", - effect: "Chi la usa avvolge gli altri Pokémon attorno in un gas altamente acido, dissolvendo i loro strumenti.", + name: 'Gas Corrosivo', + effect: 'Chi la usa avvolge gli altri Pokémon attorno in un gas altamente acido, dissolvendo i loro strumenti.', }, coaching: { - name: "Coaching", - effect: "Chi la usa aumenta l'Attacco e la Difesa di tutti gli alleati dando loro indicazioni precise.", + name: 'Coaching', + effect: 'Chi la usa aumenta l\'Attacco e la Difesa di tutti gli alleati dando loro indicazioni precise.', }, flipTurn: { - name: "Virata", - effect: "Chi usa questa mossa fa marcia indietro per farsi sostituire dopo aver sferrato l'attacco.", + name: 'Virata', + effect: 'Chi usa questa mossa fa marcia indietro per farsi sostituire dopo aver sferrato l\'attacco.', }, tripleAxel: { - name: "Triplo Axel", - effect: "Il Pokémon attacca sferrando fino a tre calci consecutivi. Ogni volta che la mossa va a segno, la sua potenza aumenta.", + name: 'Triplo Axel', + effect: 'Il Pokémon attacca sferrando fino a tre calci consecutivi. Ogni volta che la mossa va a segno, la sua potenza aumenta.', }, dualWingbeat: { - name: "Doppia Ala", - effect: "Il Pokémon attacca il bersaglio urtandolo con le ali e infliggendogli danni due volte di fila.", + name: 'Doppia Ala', + effect: 'Il Pokémon attacca il bersaglio urtandolo con le ali e infliggendogli danni due volte di fila.', }, scorchingSands: { - name: "Sabbiardente", - effect: "Chi la usa attacca il bersaglio scagliandogli addosso della sabbia incandescente. Può anche scottarlo.", + name: 'Sabbiardente', + effect: 'Chi la usa attacca il bersaglio scagliandogli addosso della sabbia incandescente. Può anche scottarlo.', }, jungleHealing: { - name: "Giunglacura", - effect: "Il Pokémon diventa tutt'uno con la giungla, ripristinando i PS e curando i problemi di stato per sé e per gli alleati in campo.", + name: 'Giunglacura', + effect: 'Il Pokémon diventa tutt\'uno con la giungla, ripristinando i PS e curando i problemi di stato per sé e per gli alleati in campo.', }, wickedBlow: { - name: "Pugnotenebra", - effect: "Il Pokémon sferra un singolo colpo potentissimo, massima espressione dello stile di tipo Buio. Brutto colpo assicurato.", + name: 'Pugnotenebra', + effect: 'Il Pokémon sferra un singolo colpo potentissimo, massima espressione dello stile di tipo Buio. Brutto colpo assicurato.', }, surgingStrikes: { - name: "Idroraffica", - effect: "Il Pokémon sferra una fluida serie di tre attacchi, massima espressione dello stile di tipo Acqua. Brutto colpo assicurato.", + name: 'Idroraffica', + effect: 'Il Pokémon sferra una fluida serie di tre attacchi, massima espressione dello stile di tipo Acqua. Brutto colpo assicurato.', }, thunderCage: { - name: "Elettrogabbia", - effect: "Il Pokémon attacca il bersaglio imprigionandolo in una gabbia di elettricità, che sprigiona corrente per quattro o cinque turni.", + name: 'Elettrogabbia', + effect: 'Il Pokémon attacca il bersaglio imprigionandolo in una gabbia di elettricità, che sprigiona corrente per quattro o cinque turni.', }, dragonEnergy: { - name: "Dragoenergia", - effect: " Il Pokémon attacca il bersaglio convertendo la propria forza vitale in energia. Più i suoi PS sono bassi, più la potenza della mossa diminuisce.", + name: 'Dragoenergia', + effect: ' Il Pokémon attacca il bersaglio convertendo la propria forza vitale in energia. Più i suoi PS sono bassi, più la potenza della mossa diminuisce.', }, freezingGlare: { - name: "Sguardo Gelido", - effect: "Il Pokémon attacca rilasciando energia psichica dagli occhi. Può congelare il bersaglio.", + name: 'Sguardo Gelido', + effect: 'Il Pokémon attacca rilasciando energia psichica dagli occhi. Può congelare il bersaglio.', }, fieryWrath: { - name: "Furia Ardente", - effect: "ERR Il Pokémon attacca trasformando la sua rabbia in un'aura simile a fiamme. Può anche far tentennare il bersaglio.ORE", + name: 'Furia Ardente', + effect: 'ERR Il Pokémon attacca trasformando la sua rabbia in un\'aura simile a fiamme. Può anche far tentennare il bersaglio.ORE', }, thunderousKick: { - name: "Calcio Tonante", - effect: "Il Pokémon sferra calci al bersaglio dopo averlo distratto con movimenti fulminei, riducendone la Difesa.", + name: 'Calcio Tonante', + effect: 'Il Pokémon sferra calci al bersaglio dopo averlo distratto con movimenti fulminei, riducendone la Difesa.', }, glacialLance: { - name: "Lancia Glaciale", - effect: "Il Pokémon attacca il bersaglio scagliando una lancia di ghiaccio accompagnata da una tormenta di neve.", + name: 'Lancia Glaciale', + effect: 'Il Pokémon attacca il bersaglio scagliando una lancia di ghiaccio accompagnata da una tormenta di neve.', }, astralBarrage: { - name: "Schegge Astrali", - effect: "Il Pokémon attacca il bersaglio scatenandogli contro una miriade di piccoli spettri.", + name: 'Schegge Astrali', + effect: 'Il Pokémon attacca il bersaglio scatenandogli contro una miriade di piccoli spettri.', }, eerieSpell: { - name: "Inquietantesimo", - effect: "Il Pokémon attacca con i suoi potenti poteri psichici. Sottrae 3 PP all'ultima mossa usata dall'avversario.", + name: 'Inquietantesimo', + effect: 'Il Pokémon attacca con i suoi potenti poteri psichici. Sottrae 3 PP all\'ultima mossa usata dall\'avversario.', }, direClaw: { - name: "Artigli Fatali", - effect: "Il Pokémon attacca il bersaglio con artigli distruttori. Può anche causargli avvelenamento, paralisi o sonno.", + name: 'Artigli Fatali', + effect: 'Il Pokémon attacca il bersaglio con artigli distruttori. Può anche causargli avvelenamento, paralisi o sonno.', }, psyshieldBash: { - name: "Barrierassalto", - effect: "Il Pokémon si carica di energia psichica per poi schiantarsi sul bersaglio. Inoltre, aumenta la propria Difesa.", + name: 'Barrierassalto', + effect: 'Il Pokémon si carica di energia psichica per poi schiantarsi sul bersaglio. Inoltre, aumenta la propria Difesa.', }, powerShift: { - name: "Scambioforza", - effect: "Il Pokémon scambia il suo Attacco con la Difesa.", + name: 'Scambioforza', + effect: 'Il Pokémon scambia il suo Attacco con la Difesa.', }, stoneAxe: { - name: "Rocciascure", - effect: "Il Pokémon attacca il bersaglio con delle scuri di roccia. I frammenti rocciosi dispersi dall'attacco restano sospesi intorno al bersaglio.", + name: 'Rocciascure', + effect: 'Il Pokémon attacca il bersaglio con delle scuri di roccia. I frammenti rocciosi dispersi dall\'attacco restano sospesi intorno al bersaglio.', }, springtideStorm: { - name: "Tempesta Zefirea", - effect: "Il Pokémon attacca il bersaglio avvolgendolo con un vento fortissimo di odio e amore. Può anche ridurne l'Attacco.", + name: 'Tempesta Zefirea', + effect: 'Il Pokémon attacca il bersaglio avvolgendolo con un vento fortissimo di odio e amore. Può anche ridurne l\'Attacco.', }, mysticalPower: { - name: "Forza Mistica", - effect: "Il Pokémon attacca emettendo un misterioso potere. Inoltre, aumenta il proprio Attacco Speciale.", + name: 'Forza Mistica', + effect: 'Il Pokémon attacca emettendo un misterioso potere. Inoltre, aumenta il proprio Attacco Speciale.', }, ragingFury: { - name: "Ira Furente", - effect: "Il Pokémon s'infuria e sputa fiammate per due o tre turni, ma rimane confuso.", + name: 'Ira Furente', + effect: 'Il Pokémon s\'infuria e sputa fiammate per due o tre turni, ma rimane confuso.', }, waveCrash: { - name: "Ondaschianto", - effect: "Il Pokémon si avvolge in uno strato d'acqua e si lancia sul bersaglio, ma subisce seri danni.", + name: 'Ondaschianto', + effect: 'Il Pokémon si avvolge in uno strato d\'acqua e si lancia sul bersaglio, ma subisce seri danni.', }, chloroblast: { - name: "Clorofillaser", - effect: "Il Pokémon attacca concentrando la clorofilla nel proprio corpo per poi lanciarla, ma subisce danni.", + name: 'Clorofillaser', + effect: 'Il Pokémon attacca concentrando la clorofilla nel proprio corpo per poi lanciarla, ma subisce danni.', }, mountainGale: { - name: "Soffio d'Iceberg", - effect: " Il Pokémon attacca colpendo il bersaglio con un blocco di ghiaccio grande come un iceberg. Può anche far tentennare il bersaglio.", + name: 'Soffio d\'Iceberg', + effect: ' Il Pokémon attacca colpendo il bersaglio con un blocco di ghiaccio grande come un iceberg. Può anche far tentennare il bersaglio.', }, victoryDance: { - name: "Danzavittoria", - effect: "Il Pokémon si lancia in una danza sfrenata per invocare la vittoria e aumenta l'Attacco, la Difesa e la Velocità.", + name: 'Danzavittoria', + effect: 'Il Pokémon si lancia in una danza sfrenata per invocare la vittoria e aumenta l\'Attacco, la Difesa e la Velocità.', }, headlongRush: { - name: "Scontro Frontale", - effect: "Il Pokémon si schianta sul bersaglio con tutte le forze. La sua Difesa e la sua Difesa Speciale diminuiscono.", + name: 'Scontro Frontale', + effect: 'Il Pokémon si schianta sul bersaglio con tutte le forze. La sua Difesa e la sua Difesa Speciale diminuiscono.', }, barbBarrage: { - name: "Mille Fielespine", - effect: "Il bersaglio viene colpito da una miriade di spine tossiche che possono anche avvelenarlo. Se il bersaglio è già avvelenato, la potenza della mossa raddoppia.", + name: 'Mille Fielespine', + effect: 'Il bersaglio viene colpito da una miriade di spine tossiche che possono anche avvelenarlo. Se il bersaglio è già avvelenato, la potenza della mossa raddoppia.', }, esperWing: { - name: "Ali d'Aura", - effect: "Il Pokémon falcia il bersaglio con ali rafforzate da un'aura. Probabile brutto colpo. Inoltre, la Velocità aumenta.", + name: 'Ali d\'Aura', + effect: 'Il Pokémon falcia il bersaglio con ali rafforzate da un\'aura. Probabile brutto colpo. Inoltre, la Velocità aumenta.', }, bitterMalice: { - name: "Livore", - effect: "Il Pokémon attacca con una furia che fa raggelare il sangue nelle vene del bersaglio, riducendone l'Attacco.", + name: 'Livore', + effect: 'Il Pokémon attacca con una furia che fa raggelare il sangue nelle vene del bersaglio, riducendone l\'Attacco.', }, shelter: { - name: "Barricata", - effect: "Il Pokémon indurisce la propria pelle come uno scudo di ferro, aumentando di molto la Difesa.", + name: 'Barricata', + effect: 'Il Pokémon indurisce la propria pelle come uno scudo di ferro, aumentando di molto la Difesa.', }, tripleArrows: { - name: "Triplodardo", - effect: "Il Pokémon sferra un calcio per poi scoccare tre dardi insieme. Può ridurre la Difesa del bersaglio o farlo tentennare. Probabile brutto colpo.", + name: 'Triplodardo', + effect: 'Il Pokémon sferra un calcio per poi scoccare tre dardi insieme. Può ridurre la Difesa del bersaglio o farlo tentennare. Probabile brutto colpo.', }, infernalParade: { - name: "Corteo Spettrale", - effect: "Il Pokémon attacca con innumerevoli sfere di fuoco che possono anche scottare il bersaglio. Se questo è affetto da problemi di stato, la potenza della mossa raddoppia.", + name: 'Corteo Spettrale', + effect: 'Il Pokémon attacca con innumerevoli sfere di fuoco che possono anche scottare il bersaglio. Se questo è affetto da problemi di stato, la potenza della mossa raddoppia.', }, ceaselessEdge: { - name: "Lama Milleflutti", - effect: "Il Pokémon attacca il bersaglio con la spada conchiglia. I frammenti di conchiglie formano una trappola di punte ai piedi del bersaglio.", + name: 'Lama Milleflutti', + effect: 'Il Pokémon attacca il bersaglio con la spada conchiglia. I frammenti di conchiglie formano una trappola di punte ai piedi del bersaglio.', }, bleakwindStorm: { - name: "Tempesta Boreale", - effect: "Il Pokémon attacca il bersaglio con venti gelidi e sferzanti che lo fanno tremare anima e corpo. Può anche ridurne la Velocità.", + name: 'Tempesta Boreale', + effect: 'Il Pokémon attacca il bersaglio con venti gelidi e sferzanti che lo fanno tremare anima e corpo. Può anche ridurne la Velocità.', }, wildboltStorm: { - name: "Tempesta Tonante", - effect: "Il Pokémon chiama a sé una tempesta di fulmini e raffiche di vento con cui attacca violentemente il bersaglio. Può anche paralizzarlo.", + name: 'Tempesta Tonante', + effect: 'Il Pokémon chiama a sé una tempesta di fulmini e raffiche di vento con cui attacca violentemente il bersaglio. Può anche paralizzarlo.', }, sandsearStorm: { - name: "Tempesta Ardente", - effect: "Il Pokémon attacca il bersaglio avvolgendolo con sabbia ardente e un vento fortissimo che possono scottarlo.", + name: 'Tempesta Ardente', + effect: 'Il Pokémon attacca il bersaglio avvolgendolo con sabbia ardente e un vento fortissimo che possono scottarlo.', }, lunarBlessing: { - name: "Invocaluna", - effect: " Il Pokémon rivolge una preghiera alla luna crescente, ripristinando i PS e curando i problemi di stato per sé e per gli alleati in campo.", + name: 'Invocaluna', + effect: ' Il Pokémon rivolge una preghiera alla luna crescente, ripristinando i PS e curando i problemi di stato per sé e per gli alleati in campo.', }, takeHeart: { - name: "Baldimpulso", - effect: "Il Pokémon prende coraggio e guarisce dai problemi di stato. Inoltre, aumenta l'Attacco Speciale e la Difesa Speciale.", + name: 'Baldimpulso', + effect: 'Il Pokémon prende coraggio e guarisce dai problemi di stato. Inoltre, aumenta l\'Attacco Speciale e la Difesa Speciale.', }, gMaxWildfire: { - name: "Gigavampa", - effect: "Attacco di tipo Fuoco eseguito da Charizard Gigamax. Infligge danni per quattro turni.", + name: 'Gigavampa', + effect: 'Attacco di tipo Fuoco eseguito da Charizard Gigamax. Infligge danni per quattro turni.', }, gMaxBefuddle: { - name: "Gigastupore", - effect: "Attacco di tipo Coleottero eseguito da Butterfree Gigamax. Avvelena, paralizza o addormenta i nemici.", + name: 'Gigastupore', + effect: 'Attacco di tipo Coleottero eseguito da Butterfree Gigamax. Avvelena, paralizza o addormenta i nemici.', }, gMaxVoltCrash: { - name: "Gigapikafolgori", - effect: "Attacco di tipo Elettro eseguito da Pikachu Gigamax. Paralizza i nemici.", + name: 'Gigapikafolgori', + effect: 'Attacco di tipo Elettro eseguito da Pikachu Gigamax. Paralizza i nemici.', }, gMaxGoldRush: { - name: "Gigamonete", - effect: "Attacco di tipo Normale eseguito da Meowth Gigamax. Confonde i nemici e permette anche di ricevere una ricompensa maggiore.", + name: 'Gigamonete', + effect: 'Attacco di tipo Normale eseguito da Meowth Gigamax. Confonde i nemici e permette anche di ricevere una ricompensa maggiore.', }, gMaxChiStrike: { - name: "Gigapugnointuito", - effect: "Attacco di tipo Lotta eseguito da Machamp Gigamax. Aumenta la probabilità di sferrare brutti colpi.", + name: 'Gigapugnointuito', + effect: 'Attacco di tipo Lotta eseguito da Machamp Gigamax. Aumenta la probabilità di sferrare brutti colpi.', }, gMaxTerror: { - name: "Gigaillusione", - effect: "Attacco di tipo Spettro eseguito da Gengar Gigamax. Il Pokémon calpesta l'ombra del nemico impedendogli la fuga o la sostituzione.", + name: 'Gigaillusione', + effect: 'Attacco di tipo Spettro eseguito da Gengar Gigamax. Il Pokémon calpesta l\'ombra del nemico impedendogli la fuga o la sostituzione.', }, gMaxResonance: { - name: "Gigamelodia", - effect: "Attacco di tipo Ghiaccio eseguito da Lapras Gigamax. Riduce i danni subiti per cinque turni.", + name: 'Gigamelodia', + effect: 'Attacco di tipo Ghiaccio eseguito da Lapras Gigamax. Riduce i danni subiti per cinque turni.', }, gMaxCuddle: { - name: "Gigabbraccio", - effect: "Attacco di tipo Normale eseguito da Eevee Gigamax. Fa infatuare i nemici.", + name: 'Gigabbraccio', + effect: 'Attacco di tipo Normale eseguito da Eevee Gigamax. Fa infatuare i nemici.', }, gMaxReplenish: { - name: "Gigarinnovamento", - effect: "Attacco di tipo Normale eseguito da Snorlax Gigamax. Rigenera le bacche mangiate.", + name: 'Gigarinnovamento', + effect: 'Attacco di tipo Normale eseguito da Snorlax Gigamax. Rigenera le bacche mangiate.', }, gMaxMalodor: { - name: "Gigafetore", - effect: "Attacco di tipo Veleno eseguito da Garbodor Gigamax. Avvelena i nemici.", + name: 'Gigafetore', + effect: 'Attacco di tipo Veleno eseguito da Garbodor Gigamax. Avvelena i nemici.', }, gMaxStonesurge: { - name: "Gigarocciagetto", - effect: "Attacco di tipo Acqua eseguito da Drednaw Gigamax. Sparge rocce aguzze sul campo di lotta.", + name: 'Gigarocciagetto', + effect: 'Attacco di tipo Acqua eseguito da Drednaw Gigamax. Sparge rocce aguzze sul campo di lotta.', }, gMaxWindRage: { - name: "Gigaciclone", - effect: "Attacco di tipo Volante eseguito da Corviknight Gigamax. Annulla l'effetto di mosse come Riflesso e Schermoluce.", + name: 'Gigaciclone', + effect: 'Attacco di tipo Volante eseguito da Corviknight Gigamax. Annulla l\'effetto di mosse come Riflesso e Schermoluce.', }, gMaxStunShock: { - name: "Gigatoxiscossa", - effect: "Attacco di tipo Elettro eseguito da Toxtricity Gigamax. Avvelena o paralizza i nemici.", + name: 'Gigatoxiscossa', + effect: 'Attacco di tipo Elettro eseguito da Toxtricity Gigamax. Avvelena o paralizza i nemici.', }, gMaxFinale: { - name: "Gigagranfinale", - effect: "Attacco di tipo Folletto eseguito da Alcremie Gigamax. Fa recuperare PS agli alleati.", + name: 'Gigagranfinale', + effect: 'Attacco di tipo Folletto eseguito da Alcremie Gigamax. Fa recuperare PS agli alleati.', }, gMaxDepletion: { - name: "Gigalogoramento", - effect: "Attacco di tipo Drago eseguito da Duraludon Gigamax. Toglie PP all'ultima mossa usata dai nemici.", + name: 'Gigalogoramento', + effect: 'Attacco di tipo Drago eseguito da Duraludon Gigamax. Toglie PP all\'ultima mossa usata dai nemici.', }, gMaxGravitas: { - name: "Gigagravitoforza", - effect: "Attacco di tipo Psico eseguito da Orbeetle Gigamax. Cambia la gravità per cinque turni.", + name: 'Gigagravitoforza', + effect: 'Attacco di tipo Psico eseguito da Orbeetle Gigamax. Cambia la gravità per cinque turni.', }, gMaxVolcalith: { - name: "Gigalapilli", - effect: "Attacco di tipo Roccia eseguito da Coalossal Gigamax. Infligge danni per quattro turni.", + name: 'Gigalapilli', + effect: 'Attacco di tipo Roccia eseguito da Coalossal Gigamax. Infligge danni per quattro turni.', }, gMaxSandblast: { - name: "Gigavortisabbia", - effect: "Attacco di tipo Terra eseguito da Sandaconda Gigamax. Scatena un turbine di sabbia per quattro o cinque turni.", + name: 'Gigavortisabbia', + effect: 'Attacco di tipo Terra eseguito da Sandaconda Gigamax. Scatena un turbine di sabbia per quattro o cinque turni.', }, gMaxSnooze: { - name: "Gigatorpore", - effect: "Attacco di tipo Buio eseguito da Grimmsnarl Gigamax. Chi la usa fa un grande sbadiglio che fa addormentare il nemico al turno successivo.", + name: 'Gigatorpore', + effect: 'Attacco di tipo Buio eseguito da Grimmsnarl Gigamax. Chi la usa fa un grande sbadiglio che fa addormentare il nemico al turno successivo.', }, gMaxTartness: { - name: "Gigattaccoacido", - effect: "Attacco di tipo Erba eseguito da Flapple Gigamax. Riduce l’elusione dei nemici.", + name: 'Gigattaccoacido', + effect: 'Attacco di tipo Erba eseguito da Flapple Gigamax. Riduce l’elusione dei nemici.', }, gMaxSweetness: { - name: "Gigambrosia", - effect: "Attacco di tipo Erba eseguito da Appletun Gigamax. Cura i problemi di stato degli alleati.", + name: 'Gigambrosia', + effect: 'Attacco di tipo Erba eseguito da Appletun Gigamax. Cura i problemi di stato degli alleati.', }, gMaxSmite: { - name: "Gigacastigo", - effect: "Attacco di tipo Folletto eseguito da Hatterene Gigamax. Confonde i nemici.", + name: 'Gigacastigo', + effect: 'Attacco di tipo Folletto eseguito da Hatterene Gigamax. Confonde i nemici.', }, gMaxSteelsurge: { - name: "Gigaferroaculei", - effect: "Attacco di tipo Acciaio eseguito da Copperajah Gigamax. Sparge pezzi di metallo acuminati sul campo di lotta.", + name: 'Gigaferroaculei', + effect: 'Attacco di tipo Acciaio eseguito da Copperajah Gigamax. Sparge pezzi di metallo acuminati sul campo di lotta.', }, gMaxMeltdown: { - name: "Gigaliquefazione", - effect: "ERAttacco di tipo Acciaio eseguito da Melmetal Gigamax. Impedisce ai nemici di usare la stessa mossa due volte di seguito.RORE", + name: 'Gigaliquefazione', + effect: 'ERAttacco di tipo Acciaio eseguito da Melmetal Gigamax. Impedisce ai nemici di usare la stessa mossa due volte di seguito.RORE', }, gMaxFoamBurst: { - name: "Gigaschiuma", - effect: "Attacco di tipo Acqua eseguito da Kingler Gigamax. Riduce di molto la Velocità dei nemici.", + name: 'Gigaschiuma', + effect: 'Attacco di tipo Acqua eseguito da Kingler Gigamax. Riduce di molto la Velocità dei nemici.', }, gMaxCentiferno: { - name: "Gigamillefiamme", - effect: "Attacco di tipo Fuoco eseguito da Centiskorch Gigamax. Intrappola i nemici nelle fiamme per quattro o cinque turni.", + name: 'Gigamillefiamme', + effect: 'Attacco di tipo Fuoco eseguito da Centiskorch Gigamax. Intrappola i nemici nelle fiamme per quattro o cinque turni.', }, gMaxVineLash: { - name: "Gigasferzata", - effect: "Attacco di tipo Erba eseguito da Venusaur Gigamax. Infligge danni per quattro turni.", + name: 'Gigasferzata', + effect: 'Attacco di tipo Erba eseguito da Venusaur Gigamax. Infligge danni per quattro turni.', }, gMaxCannonade: { - name: "Gigacannonata", - effect: "Attacco di tipo Acqua eseguito da Blastoise Gigamax. Infligge danni per quattro turni.", + name: 'Gigacannonata', + effect: 'Attacco di tipo Acqua eseguito da Blastoise Gigamax. Infligge danni per quattro turni.', }, gMaxDrumSolo: { - name: "Gigarullio", - effect: "Attacco di tipo Erba eseguito da Rillaboom Gigamax. Ignora le abilità dei nemici.", + name: 'Gigarullio', + effect: 'Attacco di tipo Erba eseguito da Rillaboom Gigamax. Ignora le abilità dei nemici.', }, gMaxFireball: { - name: "Gigafiammopalla", - effect: "Attacco di tipo Fuoco eseguito da Cinderace Gigamax. Ignora le abilità dei nemici.", + name: 'Gigafiammopalla', + effect: 'Attacco di tipo Fuoco eseguito da Cinderace Gigamax. Ignora le abilità dei nemici.', }, gMaxHydrosnipe: { - name: "Gigasparomirato", - effect: "Attacco di tipo Acqua eseguito da Inteleon Gigamax. Ignora le abilità dei nemici.", + name: 'Gigasparomirato', + effect: 'Attacco di tipo Acqua eseguito da Inteleon Gigamax. Ignora le abilità dei nemici.', }, gMaxOneBlow: { - name: "Gigasingolcolpo", - effect: "Attacco di tipo Buio eseguito da Urshifu Gigamax che ignora gli effetti della Dynabarriera.", + name: 'Gigasingolcolpo', + effect: 'Attacco di tipo Buio eseguito da Urshifu Gigamax che ignora gli effetti della Dynabarriera.', }, gMaxRapidFlow: { - name: "Gigapluricolpo", - effect: " Attacco di tipo Acqua eseguito da Urshifu Gigamax che ignora gli effetti della Dynabarriera.", + name: 'Gigapluricolpo', + effect: ' Attacco di tipo Acqua eseguito da Urshifu Gigamax che ignora gli effetti della Dynabarriera.', }, teraBlast: { - name: "Terascoppio", - effect: "Se il Pokémon è teracristallizzato, attacca con l'energia del suo teratipo. Infligge danni in base all'Attacco o all'Attacco Speciale scegliendo il più alto tra i due.", + name: 'Terascoppio', + effect: 'Se il Pokémon è teracristallizzato, attacca con l\'energia del suo teratipo. Infligge danni in base all\'Attacco o all\'Attacco Speciale scegliendo il più alto tra i due.', }, silkTrap: { - name: "Telatrappola", - effect: "Il Pokémon tesse una trappola di tela che lo protegge dagli attacchi e riduce la Velocità di chi entra in contatto con lui.", + name: 'Telatrappola', + effect: 'Il Pokémon tesse una trappola di tela che lo protegge dagli attacchi e riduce la Velocità di chi entra in contatto con lui.', }, axeKick: { - name: "Calcio ad Ascia", - effect: "Il Pokémon attacca sferrando un calcio dall'alto verso il basso che può confondere il bersaglio. Se la mossa fallisce, il Pokémon subisce dei danni.", + name: 'Calcio ad Ascia', + effect: 'Il Pokémon attacca sferrando un calcio dall\'alto verso il basso che può confondere il bersaglio. Se la mossa fallisce, il Pokémon subisce dei danni.', }, lastRespects: { - name: "Omaggio ai KO", - effect: "Il Pokémon attacca per placare il risentimento dei suoi compagni di squadra. Più sono quelli andati KO, più la potenza della mossa aumenta.", + name: 'Omaggio ai KO', + effect: 'Il Pokémon attacca per placare il risentimento dei suoi compagni di squadra. Più sono quelli andati KO, più la potenza della mossa aumenta.', }, luminaCrash: { - name: "Fotocollisione", - effect: "Il Pokémon attacca sparando una luce bizzarra che agisce anche sulla psiche. Riduce di molto la Difesa Speciale del bersaglio.", + name: 'Fotocollisione', + effect: 'Il Pokémon attacca sparando una luce bizzarra che agisce anche sulla psiche. Riduce di molto la Difesa Speciale del bersaglio.', }, orderUp: { - name: "Alta Cucina", - effect: "Il Pokémon attacca con deliziose movenze. Se ha in bocca un Tatsugiri, una sua statistica aumenta in base alla forma di quest'ultimo.", + name: 'Alta Cucina', + effect: 'Il Pokémon attacca con deliziose movenze. Se ha in bocca un Tatsugiri, una sua statistica aumenta in base alla forma di quest\'ultimo.', }, jetPunch: { - name: "Pugnojet", - effect: "Il Pokémon avvolge il pugno in una corrente impetuosa e sferra un colpo a una tale velocità da rendersi quasi invisibile. Questo attacco ha priorità alta.", + name: 'Pugnojet', + effect: 'Il Pokémon avvolge il pugno in una corrente impetuosa e sferra un colpo a una tale velocità da rendersi quasi invisibile. Questo attacco ha priorità alta.', }, spicyExtract: { - name: "Essenza Piccante", - effect: "Il Pokémon secerne un'essenza straordinariamente piccante. Aumenta di molto l'Attacco del bersaglio ma ne diminuisce di molto la Difesa.", + name: 'Essenza Piccante', + effect: 'Il Pokémon secerne un\'essenza straordinariamente piccante. Aumenta di molto l\'Attacco del bersaglio ma ne diminuisce di molto la Difesa.', }, spinOut: { - name: "Slittaruote", - effect: "Il Pokémon infligge danni caricando le estremità e ruotandole vorticosamente. La sua Velocità diminuisce di molto.", + name: 'Slittaruote', + effect: 'Il Pokémon infligge danni caricando le estremità e ruotandole vorticosamente. La sua Velocità diminuisce di molto.', }, populationBomb: { - name: "Infestazione", - effect: "Il Pokémon si riunisce con i suoi simili in un gruppo brulicante che collabora per attaccare e colpisce da una a dieci volte di fila.", + name: 'Infestazione', + effect: 'Il Pokémon si riunisce con i suoi simili in un gruppo brulicante che collabora per attaccare e colpisce da una a dieci volte di fila.', }, iceSpinner: { - name: "Vortighiaccio", - effect: "Il Pokémon avvolge gli arti inferiori in un sottile strato di ghiaccio e si scontra con il bersaglio piroettando. Il movimento rotatorio distrugge il terreno di lotta.", + name: 'Vortighiaccio', + effect: 'Il Pokémon avvolge gli arti inferiori in un sottile strato di ghiaccio e si scontra con il bersaglio piroettando. Il movimento rotatorio distrugge il terreno di lotta.', }, glaiveRush: { - name: "Spadoncarica", - effect: "Il Pokémon si lancia in una carica avventata. Fino al suo prossimo turno, il Pokémon riceverà il doppio dei danni dagli attacchi altrui, che andranno sempre a segno.", + name: 'Spadoncarica', + effect: 'Il Pokémon si lancia in una carica avventata. Fino al suo prossimo turno, il Pokémon riceverà il doppio dei danni dagli attacchi altrui, che andranno sempre a segno.', }, revivalBlessing: { - name: "Preghiera Vitale", - effect: "Il Pokémon intona una preghiera compassionevole, rianimando un Pokémon della squadra esausto e restituendogli metà dei suoi PS.", + name: 'Preghiera Vitale', + effect: 'Il Pokémon intona una preghiera compassionevole, rianimando un Pokémon della squadra esausto e restituendogli metà dei suoi PS.', }, saltCure: { - name: "Sotto Sale", - effect: "Il Pokémon mette sotto sale il bersaglio, infliggendogli danni a ogni turno. I Pokémon di tipo Acciaio e di tipo Acqua sono particolarmente vulnerabili a questa mossa.", + name: 'Sotto Sale', + effect: 'Il Pokémon mette sotto sale il bersaglio, infliggendogli danni a ogni turno. I Pokémon di tipo Acciaio e di tipo Acqua sono particolarmente vulnerabili a questa mossa.', }, tripleDive: { - name: "Triplo Tuffo", - effect: "Il Pokémon si lancia in un triplo tuffo perfettamente coordinato, colpendo il bersaglio con degli schizzi d'acqua e infliggendogli danni tre volte di fila.", + name: 'Triplo Tuffo', + effect: 'Il Pokémon si lancia in un triplo tuffo perfettamente coordinato, colpendo il bersaglio con degli schizzi d\'acqua e infliggendogli danni tre volte di fila.', }, mortalSpin: { - name: "Glitturbine", - effect: "Attacco rotante che elimina gli effetti di mosse come Legatutto, Avvolgibotta e Parassiseme. Aumenta anche la Velocità di chi la usa.", + name: 'Glitturbine', + effect: 'Attacco rotante che elimina gli effetti di mosse come Legatutto, Avvolgibotta e Parassiseme. Aumenta anche la Velocità di chi la usa.', }, doodle: { - name: "Ricalco", - effect: "Il Pokémon cattura l'essenza del bersaglio con un ricalco, copiandone l'abilità e applicandola a se stesso e ai suoi alleati.", + name: 'Ricalco', + effect: 'Il Pokémon cattura l\'essenza del bersaglio con un ricalco, copiandone l\'abilità e applicandola a se stesso e ai suoi alleati.', }, filletAway: { - name: "Alleggerimento", - effect: "Il Pokémon sacrifica dei PS per far aumentare di molto l'Attacco, l'Attacco Speciale e la Velocità.", + name: 'Alleggerimento', + effect: 'Il Pokémon sacrifica dei PS per far aumentare di molto l\'Attacco, l\'Attacco Speciale e la Velocità.', }, kowtowCleave: { - name: "Genufendente", - effect: "Il Pokémon si genuflette per far abbassare la guardia al bersaglio e poi fenderlo. Questo attacco va sempre a segno.", + name: 'Genufendente', + effect: 'Il Pokémon si genuflette per far abbassare la guardia al bersaglio e poi fenderlo. Questo attacco va sempre a segno.', }, flowerTrick: { - name: "Prestigiafiore", - effect: " Il Pokémon attacca il bersaglio lanciandogli addosso un mazzo di fiori truccato. Questo attacco va sempre a segno, infliggendo anche un brutto colpo.", + name: 'Prestigiafiore', + effect: ' Il Pokémon attacca il bersaglio lanciandogli addosso un mazzo di fiori truccato. Questo attacco va sempre a segno, infliggendo anche un brutto colpo.', }, torchSong: { - name: "Canzone Ardente", - effect: "Il Pokémon abbrustolisce il bersaglio soffiandogli addosso fiamme ardenti come se intonasse una canzone. Inoltre, il suo Attacco Speciale aumenta.", + name: 'Canzone Ardente', + effect: 'Il Pokémon abbrustolisce il bersaglio soffiandogli addosso fiamme ardenti come se intonasse una canzone. Inoltre, il suo Attacco Speciale aumenta.', }, aquaStep: { - name: "Idroballetto", - effect: "Il Pokémon si prende gioco del bersaglio con passi di danza leggiadri e fluidi come l’acqua, infliggendogli danni. Inoltre, la sua Velocità aumenta.", + name: 'Idroballetto', + effect: 'Il Pokémon si prende gioco del bersaglio con passi di danza leggiadri e fluidi come l’acqua, infliggendogli danni. Inoltre, la sua Velocità aumenta.', }, ragingBull: { - name: "Scatenatoro", - effect: "Il Pokémon carica il bersaglio con furia cieca, rompendo barriere come Schermoluce e Riflesso. Il tipo di questa mossa dipende dalla forma di chi la usa.", + name: 'Scatenatoro', + effect: 'Il Pokémon carica il bersaglio con furia cieca, rompendo barriere come Schermoluce e Riflesso. Il tipo di questa mossa dipende dalla forma di chi la usa.', }, makeItRain: { - name: "Corsa all'Oro", - effect: "Il Pokémon attacca lanciando una gran quantità di monete recuperabili dopo la lotta, ma riduce il proprio Attacco Speciale.", + name: 'Corsa all\'Oro', + effect: 'Il Pokémon attacca lanciando una gran quantità di monete recuperabili dopo la lotta, ma riduce il proprio Attacco Speciale.', }, psyblade: { - name: "Psicolama", - effect: "Il Pokémon falcia il bersaglio con una lama eterea. La potenza della mossa aumenta del 50% quando è attivo un Campo Elettrico.", + name: 'Psicolama', + effect: 'Il Pokémon falcia il bersaglio con una lama eterea. La potenza della mossa aumenta del 50% quando è attivo un Campo Elettrico.', }, hydroSteam: { - name: "Idrovapore", - effect: "Il Pokémon ricopre con forza il bersaglio di acqua bollente. Con la luce solare intensa, la potenza di questa mossa aumenta del 50% anziché diminuire.", + name: 'Idrovapore', + effect: 'Il Pokémon ricopre con forza il bersaglio di acqua bollente. Con la luce solare intensa, la potenza di questa mossa aumenta del 50% anziché diminuire.', }, ruination: { - name: "Catastrofe", - effect: "Il Pokémon invoca una terribile disgrazia, dimezzando i PS del bersaglio.", + name: 'Catastrofe', + effect: 'Il Pokémon invoca una terribile disgrazia, dimezzando i PS del bersaglio.', }, collisionCourse: { - name: "Turboschianto", - effect: "Il Pokémon si schianta al suolo mentre si trasforma, causando un'esplosione primordiale. La potenza della mossa aumenta se questa è superefficace sul bersaglio.", + name: 'Turboschianto', + effect: 'Il Pokémon si schianta al suolo mentre si trasforma, causando un\'esplosione primordiale. La potenza della mossa aumenta se questa è superefficace sul bersaglio.', }, electroDrift: { - name: "Fulmiscatto", - effect: "Il Pokémon saetta mentre si trasforma, trafiggendo il bersaglio con una scossa futuristica. La potenza della mossa aumenta se questa è superefficace sul bersaglio.", + name: 'Fulmiscatto', + effect: 'Il Pokémon saetta mentre si trasforma, trafiggendo il bersaglio con una scossa futuristica. La potenza della mossa aumenta se questa è superefficace sul bersaglio.', }, shedTail: { - name: "Tagliacoda", - effect: "Chi la usa crea una copia di se stesso usando parte dei suoi PS e si fa sostituire da un altro Pokémon della squadra.", + name: 'Tagliacoda', + effect: 'Chi la usa crea una copia di se stesso usando parte dei suoi PS e si fa sostituire da un altro Pokémon della squadra.', }, chillyReception: { - name: "Freddura", - effect: "Chi la usa dice una freddura che fa raggelare i presenti per poi farsi sostituire da un altro Pokémon della squadra. Causa una nevicata che dura per cinque turni.", + name: 'Freddura', + effect: 'Chi la usa dice una freddura che fa raggelare i presenti per poi farsi sostituire da un altro Pokémon della squadra. Causa una nevicata che dura per cinque turni.', }, tidyUp: { - name: "Pulizie", - effect: "Il Pokémon fa le pulizie, annullando gli effetti di Punte, Levitoroccia, Rete Vischiosa, Fielepunte e Sostituto. Inoltre, aumenta il suo Attacco e la sua Velocità.", + name: 'Pulizie', + effect: 'Il Pokémon fa le pulizie, annullando gli effetti di Punte, Levitoroccia, Rete Vischiosa, Fielepunte e Sostituto. Inoltre, aumenta il suo Attacco e la sua Velocità.', }, snowscape: { - name: "Vista Innevata", - effect: "Il Pokémon causa una nevicata che dura per cinque turni e aumenta la Difesa dei Pokémon di tipo Ghiaccio.", + name: 'Vista Innevata', + effect: 'Il Pokémon causa una nevicata che dura per cinque turni e aumenta la Difesa dei Pokémon di tipo Ghiaccio.', }, pounce: { - name: "Balzo", - effect: "Il Pokémon fa un balzo e attacca il bersaglio, riducendone inoltre la Velocità.", + name: 'Balzo', + effect: 'Il Pokémon fa un balzo e attacca il bersaglio, riducendone inoltre la Velocità.', }, trailblaze: { - name: "Apripista", - effect: "Il Pokémon attacca come se saltasse fuori dall'erba alta e si muove con passo leggiadro, aumentando la propria Velocità.", + name: 'Apripista', + effect: 'Il Pokémon attacca come se saltasse fuori dall\'erba alta e si muove con passo leggiadro, aumentando la propria Velocità.', }, chillingWater: { - name: "Doccia Fredda", - effect: "Il Pokémon attacca il bersaglio con una doccia d'acqua talmente fredda da farlo demoralizzare, riducendone l'Attacco.", + name: 'Doccia Fredda', + effect: 'Il Pokémon attacca il bersaglio con una doccia d\'acqua talmente fredda da farlo demoralizzare, riducendone l\'Attacco.', }, hyperDrill: { - name: "Ipertrapano", - effect: "Il Pokémon fa roteare rapidamente la parte appuntita del suo corpo, perforando il bersaglio ed eludendo mosse come Protezione e Individua.", + name: 'Ipertrapano', + effect: 'Il Pokémon fa roteare rapidamente la parte appuntita del suo corpo, perforando il bersaglio ed eludendo mosse come Protezione e Individua.', }, twinBeam: { - name: "Doppioraggio", - effect: "Il Pokémon attacca il bersaglio con misteriosi raggi di luce emessi dagli occhi che infliggono danni due volte di fila.", + name: 'Doppioraggio', + effect: 'Il Pokémon attacca il bersaglio con misteriosi raggi di luce emessi dagli occhi che infliggono danni due volte di fila.', }, rageFist: { - name: "Pugno Furibondo", - effect: "Il Pokémon trasforma la sua furia in energia e la utilizza per attaccare. Più attacchi ha subito il Pokémon, più la potenza della mossa aumenta.", + name: 'Pugno Furibondo', + effect: 'Il Pokémon trasforma la sua furia in energia e la utilizza per attaccare. Più attacchi ha subito il Pokémon, più la potenza della mossa aumenta.', }, armorCannon: { - name: "Corazza Cannone", - effect: "Il Pokémon si libera della sua corazza, scagliandola sul bersaglio come una raffica di proiettili incandescenti. La sua Difesa e la sua Difesa Speciale diminuiscono.", + name: 'Corazza Cannone', + effect: 'Il Pokémon si libera della sua corazza, scagliandola sul bersaglio come una raffica di proiettili incandescenti. La sua Difesa e la sua Difesa Speciale diminuiscono.', }, bitterBlade: { - name: "Lama del Rimorso", - effect: "Il Pokémon concentra nelle lame tutti i rimorsi accumulati nel mondo dei vivi e assale il bersaglio, recuperando una quantità di PS pari a metà del danno inflitto.", + name: 'Lama del Rimorso', + effect: 'Il Pokémon concentra nelle lame tutti i rimorsi accumulati nel mondo dei vivi e assale il bersaglio, recuperando una quantità di PS pari a metà del danno inflitto.', }, doubleShock: { - name: "Doppiolampo", - effect: "Il Pokémon libera tutta la sua potenza elettrica per infliggere gravi danni al bersaglio, ma come conseguenza perde il tipo Elettro.", + name: 'Doppiolampo', + effect: 'Il Pokémon libera tutta la sua potenza elettrica per infliggere gravi danni al bersaglio, ma come conseguenza perde il tipo Elettro.', }, gigatonHammer: { - name: "Granmartello", - effect: "Chi la usa attacca il bersaglio brandendo un enorme martello. La mossa non può essere usata per due volte di fila.", + name: 'Granmartello', + effect: 'Chi la usa attacca il bersaglio brandendo un enorme martello. La mossa non può essere usata per due volte di fila.', }, comeuppance: { - name: "Ritorsione", - effect: "Il Pokémon restituisce con gli interessi i danni subiti all'ultimo avversario che l'ha colpito.", + name: 'Ritorsione', + effect: 'Il Pokémon restituisce con gli interessi i danni subiti all\'ultimo avversario che l\'ha colpito.', }, aquaCutter: { - name: "Idrotaglio", - effect: " Il Pokémon espelle acqua ad alta pressione e falcia il bersaglio con un fendente tagliente quanto una lama. Probabile brutto colpo.", + name: 'Idrotaglio', + effect: ' Il Pokémon espelle acqua ad alta pressione e falcia il bersaglio con un fendente tagliente quanto una lama. Probabile brutto colpo.', }, blazingTorque: { - name: "Turboustione", - effect: "L'utilizzatore accende il suo motore ardente verso il bersaglio. Ciò potrebbe anche lasciare il bersaglio con una bruciatura.", + name: 'Turboustione', + effect: 'L\'utilizzatore accende il suo motore ardente verso il bersaglio. Ciò potrebbe anche lasciare il bersaglio con una bruciatura.', }, wickedTorque: { - name: "Turbotenebra", - effect: "L'utente accende il proprio motore nel bersaglio con intenti dannosi. Ciò potrebbe addormentare il bersaglio.", + name: 'Turbotenebra', + effect: 'L\'utente accende il proprio motore nel bersaglio con intenti dannosi. Ciò potrebbe addormentare il bersaglio.', }, noxiousTorque: { - name: "Turbotossina", - effect: "L'utilizzatore fa girare il suo motore velenoso verso il bersaglio. Ciò potrebbe anche avvelenare il bersaglio.", + name: 'Turbotossina', + effect: 'L\'utilizzatore fa girare il suo motore velenoso verso il bersaglio. Ciò potrebbe anche avvelenare il bersaglio.', }, combatTorque: { - name: "Turborissa", - effect: "L'utente accelera con forza il proprio motore verso il bersaglio. Ciò potrebbe anche lasciare il bersaglio paralizzato.", + name: 'Turborissa', + effect: 'L\'utente accelera con forza il proprio motore verso il bersaglio. Ciò potrebbe anche lasciare il bersaglio paralizzato.', }, magicalTorque: { - name: "Turboincanto", - effect: "L'utilizzatore fa girare il proprio motore fatato verso il bersaglio. Ciò potrebbe anche confondere l'obiettivo.", + name: 'Turboincanto', + effect: 'L\'utilizzatore fa girare il proprio motore fatato verso il bersaglio. Ciò potrebbe anche confondere l\'obiettivo.', }, bloodMoon: { - name: "Luna Rossa", - effect: "Il Pokémon attacca rilasciando tutta la sua energia, confluita in una luna piena rossa come il sangue. Questa mossa non può essere usata due volte di fila.", + name: 'Luna Rossa', + effect: 'Il Pokémon attacca rilasciando tutta la sua energia, confluita in una luna piena rossa come il sangue. Questa mossa non può essere usata due volte di fila.', }, matchaGotcha: { - name: "Spruzzatè", - effect: "Il Pokémon attacca mescolando del tè e spruzzandolo, recuperando una quantità di PS pari alla metà del danno inflitto. Può anche scottare il bersaglio.", + name: 'Spruzzatè', + effect: 'Il Pokémon attacca mescolando del tè e spruzzandolo, recuperando una quantità di PS pari alla metà del danno inflitto. Può anche scottare il bersaglio.', }, syrupBomb: { - name: "Bomba Sciroppata", - effect: " Il Pokémon fa esplodere dello sciroppo viscoso sul bersaglio, ricoprendolo e facendogli diminuire la Velocità per tre turni.", + name: 'Bomba Sciroppata', + effect: ' Il Pokémon fa esplodere dello sciroppo viscoso sul bersaglio, ricoprendolo e facendogli diminuire la Velocità per tre turni.', }, ivyCudgel: { - name: "Clava di Liane", - effect: "Il Pokémon colpisce con una clava avvolta da liane. Il tipo della mossa varia in base alla maschera indossata. Probabile brutto colpo.", + name: 'Clava di Liane', + effect: 'Il Pokémon colpisce con una clava avvolta da liane. Il tipo della mossa varia in base alla maschera indossata. Probabile brutto colpo.', }, electroShot: { - name: "Elettroraggio", - effect: "Il Pokémon accumula elettricità e aumenta l'Attacco Speciale al primo turno, per poi rilasciare una potente scarica al turno successivo o, se piove, immediatamente.", + name: 'Elettroraggio', + effect: 'Il Pokémon accumula elettricità e aumenta l\'Attacco Speciale al primo turno, per poi rilasciare una potente scarica al turno successivo o, se piove, immediatamente.', }, teraStarstorm: { - name: "Teracluster", - effect: "Il Pokémon elimina il bersaglio irradiando il potere dei cristalli. Se Terapagos assume la Forma Astrale, la mossa infligge danni a tutti gli avversari.", + name: 'Teracluster', + effect: 'Il Pokémon elimina il bersaglio irradiando il potere dei cristalli. Se Terapagos assume la Forma Astrale, la mossa infligge danni a tutti gli avversari.', }, fickleBeam: { - name: "Irregolaser", - effect: "Il Pokémon attacca rilasciando raggi di luce. Talvolta i laser vengono emessi da tutte le teste, contribuendo a raddoppiare la potenza della mossa.", + name: 'Irregolaser', + effect: 'Il Pokémon attacca rilasciando raggi di luce. Talvolta i laser vengono emessi da tutte le teste, contribuendo a raddoppiare la potenza della mossa.', }, burningBulwark: { - name: "Egida Ignea", - effect: "Il Pokémon blocca gli attacchi avversari con la pelliccia incandescente che scotta chi entra in contatto con lui.", + name: 'Egida Ignea', + effect: 'Il Pokémon blocca gli attacchi avversari con la pelliccia incandescente che scotta chi entra in contatto con lui.', }, thunderclap: { - name: "Saetta", - effect: "Il Pokémon abbatte una scarica elettrica sul bersaglio prima che questi possa attaccare. La mossa fallisce se il bersaglio sferra una mossa che non è di attacco.", + name: 'Saetta', + effect: 'Il Pokémon abbatte una scarica elettrica sul bersaglio prima che questi possa attaccare. La mossa fallisce se il bersaglio sferra una mossa che non è di attacco.', }, mightyCleave: { - name: "Taglio Poderoso", - effect: "Il Pokémon fende il bersaglio con la luce immagazzinata nella testa, ignorando gli effetti delle mosse protettive.", + name: 'Taglio Poderoso', + effect: 'Il Pokémon fende il bersaglio con la luce immagazzinata nella testa, ignorando gli effetti delle mosse protettive.', }, tachyonCutter: { - name: "Tachiontaglio", - effect: "Il Pokémon emette delle lame particellari in successione, infliggendo danni due volte di fila. Questo attacco va sempre a segno.", + name: 'Tachiontaglio', + effect: 'Il Pokémon emette delle lame particellari in successione, infliggendo danni due volte di fila. Questo attacco va sempre a segno.', }, hardPress: { - name: "Pressa d'Acciaio", - effect: "Il Pokémon schiaccia il bersaglio usando i propri arti. Più PS rimangono al bersaglio, maggiore è la potenza della mossa.", + name: 'Pressa d\'Acciaio', + effect: 'Il Pokémon schiaccia il bersaglio usando i propri arti. Più PS rimangono al bersaglio, maggiore è la potenza della mossa.', }, dragonCheer: { - name: "Grido del Drago", - effect: "Il Pokémon incita gli alleati con un inno ai draghi, aumentando la probabilità che sferrino brutti colpi. Particolarmente efficace con alleati di tipo Drago.", + name: 'Grido del Drago', + effect: 'Il Pokémon incita gli alleati con un inno ai draghi, aumentando la probabilità che sferrino brutti colpi. Particolarmente efficace con alleati di tipo Drago.', }, alluringVoice: { - name: "Ammaliavoce", - effect: "Il Pokémon attacca sfruttando il suo canto angelico, confondendo il bersaglio se le sue statistiche sono aumentate nello stesso turno.", + name: 'Ammaliavoce', + effect: 'Il Pokémon attacca sfruttando il suo canto angelico, confondendo il bersaglio se le sue statistiche sono aumentate nello stesso turno.', }, temperFlare: { - name: "Rabbia Bruciante", - effect: "Il Pokémon attacca con l'impeto di chi è pronto a tutto. Se la mossa usata al turno precedente non è andata a segno, la potenza raddoppia.", + name: 'Rabbia Bruciante', + effect: 'Il Pokémon attacca con l\'impeto di chi è pronto a tutto. Se la mossa usata al turno precedente non è andata a segno, la potenza raddoppia.', }, supercellSlam: { - name: "Elettrotuffo", - effect: "Il Pokémon si schianta sul bersaglio dopo essersi elettrificato. Se la mossa fallisce, il Pokémon subisce dei danni.", + name: 'Elettrotuffo', + effect: 'Il Pokémon si schianta sul bersaglio dopo essersi elettrificato. Se la mossa fallisce, il Pokémon subisce dei danni.', }, psychicNoise: { - name: "Psicorumore", - effect: " l Pokémon investe il bersaglio con insopportabili onde sonore che gli impediscono di recuperare PS con mosse, abilità o strumenti che ha con sé per due turni.", + name: 'Psicorumore', + effect: ' l Pokémon investe il bersaglio con insopportabili onde sonore che gli impediscono di recuperare PS con mosse, abilità o strumenti che ha con sé per due turni.', }, upperHand: { - name: "Colpo di Mano", - effect: "Il Pokémon reagisce al movimento del bersaglio e, colpendo con il palmo, lo fa tentennare. Se il bersaglio non sferra un attacco ad alta priorità, la mossa fallisce.", + name: 'Colpo di Mano', + effect: 'Il Pokémon reagisce al movimento del bersaglio e, colpendo con il palmo, lo fa tentennare. Se il bersaglio non sferra un attacco ad alta priorità, la mossa fallisce.', }, malignantChain: { - name: "Intossicatena", - effect: "Il Pokémon logora il bersaglio avvolgendolo con le sue catene fatte di veleno e iniettandogli delle tossine che possono anche iperavvelenarlo.", + name: 'Intossicatena', + effect: 'Il Pokémon logora il bersaglio avvolgendolo con le sue catene fatte di veleno e iniettandogli delle tossine che possono anche iperavvelenarlo.', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/it/nature.ts b/src/locales/it/nature.ts index 2ca86745112..4ec3e9daa8f 100644 --- a/src/locales/it/nature.ts +++ b/src/locales/it/nature.ts @@ -1,29 +1,29 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const nature: SimpleTranslationEntries = { - "Hardy": "Ardita", - "Lonely": "Schiva", - "Brave": "Audace", - "Adamant": "Decisa", - "Naughty": "Birbona", - "Bold": "Sicura", - "Docile": "Docile", - "Relaxed": "Placida", - "Impish": "Scaltra", - "Lax": "Fiacca", - "Timid": "Timida", - "Hasty": "Lesta", - "Serious": "Seria", - "Jolly": "Allegra", - "Naive": "Ingenuaa", - "Modest": "Modesta", - "Mild": "Mite", - "Quiet": "Quieta", - "Bashful": "Ritrosa", - "Rash": "Ardente", - "Calm": "Calma", - "Gentle": "Gentile", - "Sassy": "Vivace", - "Careful": "Cauta", - "Quirky": "Furba" -} as const; \ No newline at end of file + 'Hardy': 'Ardita', + 'Lonely': 'Schiva', + 'Brave': 'Audace', + 'Adamant': 'Decisa', + 'Naughty': 'Birbona', + 'Bold': 'Sicura', + 'Docile': 'Docile', + 'Relaxed': 'Placida', + 'Impish': 'Scaltra', + 'Lax': 'Fiacca', + 'Timid': 'Timida', + 'Hasty': 'Lesta', + 'Serious': 'Seria', + 'Jolly': 'Allegra', + 'Naive': 'Ingenuaa', + 'Modest': 'Modesta', + 'Mild': 'Mite', + 'Quiet': 'Quieta', + 'Bashful': 'Ritrosa', + 'Rash': 'Ardente', + 'Calm': 'Calma', + 'Gentle': 'Gentile', + 'Sassy': 'Vivace', + 'Careful': 'Cauta', + 'Quirky': 'Furba' +} as const; diff --git a/src/locales/it/pokeball.ts b/src/locales/it/pokeball.ts index 4b4c2be4d2d..40105b37905 100644 --- a/src/locales/it/pokeball.ts +++ b/src/locales/it/pokeball.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokeball: SimpleTranslationEntries = { - "pokeBall": "Poké Ball", - "greatBall": "Mega Ball", - "ultraBall": "Ultra Ball", - "rogueBall": "Rogue Ball", - "masterBall": "Master Ball", - "luxuryBall": "Chich Ball", -} as const; \ No newline at end of file + 'pokeBall': 'Poké Ball', + 'greatBall': 'Mega Ball', + 'ultraBall': 'Ultra Ball', + 'rogueBall': 'Rogue Ball', + 'masterBall': 'Master Ball', + 'luxuryBall': 'Chich Ball', +} as const; diff --git a/src/locales/it/pokemon-info.ts b/src/locales/it/pokemon-info.ts index 617b2157da2..5b9bc6cbd8b 100644 --- a/src/locales/it/pokemon-info.ts +++ b/src/locales/it/pokemon-info.ts @@ -1,41 +1,41 @@ -import { PokemonInfoTranslationEntries } from "#app/plugins/i18n"; +import { PokemonInfoTranslationEntries } from '#app/plugins/i18n'; export const pokemonInfo: PokemonInfoTranslationEntries = { - Stat: { - "HP": "PS Max", - "HPshortened": "PS", - "ATK": "Attacco", - "ATKshortened": "Att", - "DEF": "Difesa", - "DEFshortened": "Dif", - "SPATK": "Att. Sp.", - "SPATKshortened": "AttSp", - "SPDEF": "Dif. Sp.", - "SPDEFshortened": "DifSp", - "SPD": "Velocità", - "SPDshortened": "Vel" - }, + Stat: { + 'HP': 'PS Max', + 'HPshortened': 'PS', + 'ATK': 'Attacco', + 'ATKshortened': 'Att', + 'DEF': 'Difesa', + 'DEFshortened': 'Dif', + 'SPATK': 'Att. Sp.', + 'SPATKshortened': 'AttSp', + 'SPDEF': 'Dif. Sp.', + 'SPDEFshortened': 'DifSp', + 'SPD': 'Velocità', + 'SPDshortened': 'Vel' + }, - Type: { - "UNKNOWN": "Sconosciuto", - "NORMAL": "Normale", - "FIGHTING": "Lotta", - "FLYING": "Volante", - "POISON": "Veleno", - "GROUND": "Terra", - "ROCK": "Roccia", - "BUG": "Coleottero", - "GHOST": "Spettro", - "STEEL": "Acciaio", - "FIRE": "Fuoco", - "WATER": "Acqua", - "GRASS": "Erba", - "ELECTRIC": "Elettro", - "PSYCHIC": "Psico", - "ICE": "Ghiaccio", - "DRAGON": "Drago", - "DARK": "Buio", - "FAIRY": "Folletto", - "STELLAR": "Astrale", - }, + Type: { + 'UNKNOWN': 'Sconosciuto', + 'NORMAL': 'Normale', + 'FIGHTING': 'Lotta', + 'FLYING': 'Volante', + 'POISON': 'Veleno', + 'GROUND': 'Terra', + 'ROCK': 'Roccia', + 'BUG': 'Coleottero', + 'GHOST': 'Spettro', + 'STEEL': 'Acciaio', + 'FIRE': 'Fuoco', + 'WATER': 'Acqua', + 'GRASS': 'Erba', + 'ELECTRIC': 'Elettro', + 'PSYCHIC': 'Psico', + 'ICE': 'Ghiaccio', + 'DRAGON': 'Drago', + 'DARK': 'Buio', + 'FAIRY': 'Folletto', + 'STELLAR': 'Astrale', + }, } as const; diff --git a/src/locales/it/pokemon.ts b/src/locales/it/pokemon.ts index ddc2b2c9137..c0f93480fea 100644 --- a/src/locales/it/pokemon.ts +++ b/src/locales/it/pokemon.ts @@ -1,1086 +1,1086 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokemon: SimpleTranslationEntries = { - "bulbasaur": "Bulbasaur", - "ivysaur": "Ivysaur", - "venusaur": "Venusaur", - "charmander": "Charmander", - "charmeleon": "Charmeleon", - "charizard": "Charizard", - "squirtle": "Squirtle", - "wartortle": "Wartortle", - "blastoise": "Blastoise", - "caterpie": "Caterpie", - "metapod": "Metapod", - "butterfree": "Butterfree", - "weedle": "Weedle", - "kakuna": "Kakuna", - "beedrill": "Beedrill", - "pidgey": "Pidgey", - "pidgeotto": "Pidgeotto", - "pidgeot": "Pidgeot", - "rattata": "Rattata", - "raticate": "Raticate", - "spearow": "Spearow", - "fearow": "Fearow", - "ekans": "Ekans", - "arbok": "Arbok", - "pikachu": "Pikachu", - "raichu": "Raichu", - "sandshrew": "Sandshrew", - "sandslash": "Sandslash", - "nidoran_f": "Nidoran♀", - "nidorina": "Nidorina", - "nidoqueen": "Nidoqueen", - "nidoran_m": "Nidoran♂", - "nidorino": "Nidorino", - "nidoking": "Nidoking", - "clefairy": "Clefairy", - "clefable": "Clefable", - "vulpix": "Vulpix", - "ninetales": "Ninetales", - "jigglypuff": "Jigglypuff", - "wigglytuff": "Wigglytuff", - "zubat": "Zubat", - "golbat": "Golbat", - "oddish": "Oddish", - "gloom": "Gloom", - "vileplume": "Vileplume", - "paras": "Paras", - "parasect": "Parasect", - "venonat": "Venonat", - "venomoth": "Venomoth", - "diglett": "Diglett", - "dugtrio": "Dugtrio", - "meowth": "Meowth", - "persian": "Persian", - "psyduck": "Psyduck", - "golduck": "Golduck", - "mankey": "Mankey", - "primeape": "Primeape", - "growlithe": "Growlithe", - "arcanine": "Arcanine", - "poliwag": "Poliwag", - "poliwhirl": "Poliwhirl", - "poliwrath": "Poliwrath", - "abra": "Abra", - "kadabra": "Kadabra", - "alakazam": "Alakazam", - "machop": "Machop", - "machoke": "Machoke", - "machamp": "Machamp", - "bellsprout": "Bellsprout", - "weepinbell": "Weepinbell", - "victreebel": "Victreebel", - "tentacool": "Tentacool", - "tentacruel": "Tentacruel", - "geodude": "Geodude", - "graveler": "Graveler", - "golem": "Golem", - "ponyta": "Ponyta", - "rapidash": "Rapidash", - "slowpoke": "Slowpoke", - "slowbro": "Slowbro", - "magnemite": "Magnemite", - "magneton": "Magneton", - "farfetchd": "Farfetch'd", - "doduo": "Doduo", - "dodrio": "Dodrio", - "seel": "Seel", - "dewgong": "Dewgong", - "grimer": "Grimer", - "muk": "Muk", - "shellder": "Shellder", - "cloyster": "Cloyster", - "gastly": "Gastly", - "haunter": "Haunter", - "gengar": "Gengar", - "onix": "Onix", - "drowzee": "Drowzee", - "hypno": "Hypno", - "krabby": "Krabby", - "kingler": "Kingler", - "voltorb": "Voltorb", - "electrode": "Electrode", - "exeggcute": "Exeggcute", - "exeggutor": "Exeggutor", - "cubone": "Cubone", - "marowak": "Marowak", - "hitmonlee": "Hitmonlee", - "hitmonchan": "Hitmonchan", - "lickitung": "Lickitung", - "koffing": "Koffing", - "weezing": "Weezing", - "rhyhorn": "Rhyhorn", - "rhydon": "Rhydon", - "chansey": "Chansey", - "tangela": "Tangela", - "kangaskhan": "Kangaskhan", - "horsea": "Horsea", - "seadra": "Seadra", - "goldeen": "Goldeen", - "seaking": "Seaking", - "staryu": "Staryu", - "starmie": "Starmie", - "mr_mime": "Mr. Mime", - "scyther": "Scyther", - "jynx": "Jynx", - "electabuzz": "Electabuzz", - "magmar": "Magmar", - "pinsir": "Pinsir", - "tauros": "Tauros", - "magikarp": "Magikarp", - "gyarados": "Gyarados", - "lapras": "Lapras", - "ditto": "Ditto", - "eevee": "Eevee", - "vaporeon": "Vaporeon", - "jolteon": "Jolteon", - "flareon": "Flareon", - "porygon": "Porygon", - "omanyte": "Omanyte", - "omastar": "Omastar", - "kabuto": "Kabuto", - "kabutops": "Kabutops", - "aerodactyl": "Aerodactyl", - "snorlax": "Snorlax", - "articuno": "Articuno", - "zapdos": "Zapdos", - "moltres": "Moltres", - "dratini": "Dratini", - "dragonair": "Dragonair", - "dragonite": "Dragonite", - "mewtwo": "Mewtwo", - "mew": "Mew", - "chikorita": "Chikorita", - "bayleef": "Bayleef", - "meganium": "Meganium", - "cyndaquil": "Cyndaquil", - "quilava": "Quilava", - "typhlosion": "Typhlosion", - "totodile": "Totodile", - "croconaw": "Croconaw", - "feraligatr": "Feraligatr", - "sentret": "Sentret", - "furret": "Furret", - "hoothoot": "Hoothoot", - "noctowl": "Noctowl", - "ledyba": "Ledyba", - "ledian": "Ledian", - "spinarak": "Spinarak", - "ariados": "Ariados", - "crobat": "Crobat", - "chinchou": "Chinchou", - "lanturn": "Lanturn", - "pichu": "Pichu", - "cleffa": "Cleffa", - "igglybuff": "Igglybuff", - "togepi": "Togepi", - "togetic": "Togetic", - "natu": "Natu", - "xatu": "Xatu", - "mareep": "Mareep", - "flaaffy": "Flaaffy", - "ampharos": "Ampharos", - "bellossom": "Bellossom", - "marill": "Marill", - "azumarill": "Azumarill", - "sudowoodo": "Sudowoodo", - "politoed": "Politoed", - "hoppip": "Hoppip", - "skiploom": "Skiploom", - "jumpluff": "Jumpluff", - "aipom": "Aipom", - "sunkern": "Sunkern", - "sunflora": "Sunflora", - "yanma": "Yanma", - "wooper": "Wooper", - "quagsire": "Quagsire", - "espeon": "Espeon", - "umbreon": "Umbreon", - "murkrow": "Murkrow", - "slowking": "Slowking", - "misdreavus": "Misdreavus", - "unown": "Unown", - "wobbuffet": "Wobbuffet", - "girafarig": "Girafarig", - "pineco": "Pineco", - "forretress": "Forretress", - "dunsparce": "Dunsparce", - "gligar": "Gligar", - "steelix": "Steelix", - "snubbull": "Snubbull", - "granbull": "Granbull", - "qwilfish": "Qwilfish", - "scizor": "Scizor", - "shuckle": "Shuckle", - "heracross": "Heracross", - "sneasel": "Sneasel", - "teddiursa": "Teddiursa", - "ursaring": "Ursaring", - "slugma": "Slugma", - "magcargo": "Magcargo", - "swinub": "Swinub", - "piloswine": "Piloswine", - "corsola": "Corsola", - "remoraid": "Remoraid", - "octillery": "Octillery", - "delibird": "Delibird", - "mantine": "Mantine", - "skarmory": "Skarmory", - "houndour": "Houndour", - "houndoom": "Houndoom", - "kingdra": "Kingdra", - "phanpy": "Phanpy", - "donphan": "Donphan", - "porygon2": "Porygon2", - "stantler": "Stantler", - "smeargle": "Smeargle", - "tyrogue": "Tyrogue", - "hitmontop": "Hitmontop", - "smoochum": "Smoochum", - "elekid": "Elekid", - "magby": "Magby", - "miltank": "Miltank", - "blissey": "Blissey", - "raikou": "Raikou", - "entei": "Entei", - "suicune": "Suicune", - "larvitar": "Larvitar", - "pupitar": "Pupitar", - "tyranitar": "Tyranitar", - "lugia": "Lugia", - "ho_oh": "Ho-Oh", - "celebi": "Celebi", - "treecko": "Treecko", - "grovyle": "Grovyle", - "sceptile": "Sceptile", - "torchic": "Torchic", - "combusken": "Combusken", - "blaziken": "Blaziken", - "mudkip": "Mudkip", - "marshtomp": "Marshtomp", - "swampert": "Swampert", - "poochyena": "Poochyena", - "mightyena": "Mightyena", - "zigzagoon": "Zigzagoon", - "linoone": "Linoone", - "wurmple": "Wurmple", - "silcoon": "Silcoon", - "beautifly": "Beautifly", - "cascoon": "Cascoon", - "dustox": "Dustox", - "lotad": "Lotad", - "lombre": "Lombre", - "ludicolo": "Ludicolo", - "seedot": "Seedot", - "nuzleaf": "Nuzleaf", - "shiftry": "Shiftry", - "taillow": "Taillow", - "swellow": "Swellow", - "wingull": "Wingull", - "pelipper": "Pelipper", - "ralts": "Ralts", - "kirlia": "Kirlia", - "gardevoir": "Gardevoir", - "surskit": "Surskit", - "masquerain": "Masquerain", - "shroomish": "Shroomish", - "breloom": "Breloom", - "slakoth": "Slakoth", - "vigoroth": "Vigoroth", - "slaking": "Slaking", - "nincada": "Nincada", - "ninjask": "Ninjask", - "shedinja": "Shedinja", - "whismur": "Whismur", - "loudred": "Loudred", - "exploud": "Exploud", - "makuhita": "Makuhita", - "hariyama": "Hariyama", - "azurill": "Azurill", - "nosepass": "Nosepass", - "skitty": "Skitty", - "delcatty": "Delcatty", - "sableye": "Sableye", - "mawile": "Mawile", - "aron": "Aron", - "lairon": "Lairon", - "aggron": "Aggron", - "meditite": "Meditite", - "medicham": "Medicham", - "electrike": "Electrike", - "manectric": "Manectric", - "plusle": "Plusle", - "minun": "Minun", - "volbeat": "Volbeat", - "illumise": "Illumise", - "roselia": "Roselia", - "gulpin": "Gulpin", - "swalot": "Swalot", - "carvanha": "Carvanha", - "sharpedo": "Sharpedo", - "wailmer": "Wailmer", - "wailord": "Wailord", - "numel": "Numel", - "camerupt": "Camerupt", - "torkoal": "Torkoal", - "spoink": "Spoink", - "grumpig": "Grumpig", - "spinda": "Spinda", - "trapinch": "Trapinch", - "vibrava": "Vibrava", - "flygon": "Flygon", - "cacnea": "Cacnea", - "cacturne": "Cacturne", - "swablu": "Swablu", - "altaria": "Altaria", - "zangoose": "Zangoose", - "seviper": "Seviper", - "lunatone": "Lunatone", - "solrock": "Solrock", - "barboach": "Barboach", - "whiscash": "Whiscash", - "corphish": "Corphish", - "crawdaunt": "Crawdaunt", - "baltoy": "Baltoy", - "claydol": "Claydol", - "lileep": "Lileep", - "cradily": "Cradily", - "anorith": "Anorith", - "armaldo": "Armaldo", - "feebas": "Feebas", - "milotic": "Milotic", - "castform": "Castform", - "kecleon": "Kecleon", - "shuppet": "Shuppet", - "banette": "Banette", - "duskull": "Duskull", - "dusclops": "Dusclops", - "tropius": "Tropius", - "chimecho": "Chimecho", - "absol": "Absol", - "wynaut": "Wynaut", - "snorunt": "Snorunt", - "glalie": "Glalie", - "spheal": "Spheal", - "sealeo": "Sealeo", - "walrein": "Walrein", - "clamperl": "Clamperl", - "huntail": "Huntail", - "gorebyss": "Gorebyss", - "relicanth": "Relicanth", - "luvdisc": "Luvdisc", - "bagon": "Bagon", - "shelgon": "Shelgon", - "salamence": "Salamence", - "beldum": "Beldum", - "metang": "Metang", - "metagross": "Metagross", - "regirock": "Regirock", - "regice": "Regice", - "registeel": "Registeel", - "latias": "Latias", - "latios": "Latios", - "kyogre": "Kyogre", - "groudon": "Groudon", - "rayquaza": "Rayquaza", - "jirachi": "Jirachi", - "deoxys": "Deoxys", - "turtwig": "Turtwig", - "grotle": "Grotle", - "torterra": "Torterra", - "chimchar": "Chimchar", - "monferno": "Monferno", - "infernape": "Infernape", - "piplup": "Piplup", - "prinplup": "Prinplup", - "empoleon": "Empoleon", - "starly": "Starly", - "staravia": "Staravia", - "staraptor": "Staraptor", - "bidoof": "Bidoof", - "bibarel": "Bibarel", - "kricketot": "Kricketot", - "kricketune": "Kricketune", - "shinx": "Shinx", - "luxio": "Luxio", - "luxray": "Luxray", - "budew": "Budew", - "roserade": "Roserade", - "cranidos": "Cranidos", - "rampardos": "Rampardos", - "shieldon": "Shieldon", - "bastiodon": "Bastiodon", - "burmy": "Burmy", - "wormadam": "Wormadam", - "mothim": "Mothim", - "combee": "Combee", - "vespiquen": "Vespiquen", - "pachirisu": "Pachirisu", - "buizel": "Buizel", - "floatzel": "Floatzel", - "cherubi": "Cherubi", - "cherrim": "Cherrim", - "shellos": "Shellos", - "gastrodon": "Gastrodon", - "ambipom": "Ambipom", - "drifloon": "Drifloon", - "drifblim": "Drifblim", - "buneary": "Buneary", - "lopunny": "Lopunny", - "mismagius": "Mismagius", - "honchkrow": "Honchkrow", - "glameow": "Glameow", - "purugly": "Purugly", - "chingling": "Chingling", - "stunky": "Stunky", - "skuntank": "Skuntank", - "bronzor": "Bronzor", - "bronzong": "Bronzong", - "bonsly": "Bonsly", - "mime_jr": "Mime Jr.", - "happiny": "Happiny", - "chatot": "Chatot", - "spiritomb": "Spiritomb", - "gible": "Gible", - "gabite": "Gabite", - "garchomp": "Garchomp", - "munchlax": "Munchlax", - "riolu": "Riolu", - "lucario": "Lucario", - "hippopotas": "Hippopotas", - "hippowdon": "Hippowdon", - "skorupi": "Skorupi", - "drapion": "Drapion", - "croagunk": "Croagunk", - "toxicroak": "Toxicroak", - "carnivine": "Carnivine", - "finneon": "Finneon", - "lumineon": "Lumineon", - "mantyke": "Mantyke", - "snover": "Snover", - "abomasnow": "Abomasnow", - "weavile": "Weavile", - "magnezone": "Magnezone", - "lickilicky": "Lickilicky", - "rhyperior": "Rhyperior", - "tangrowth": "Tangrowth", - "electivire": "Electivire", - "magmortar": "Magmortar", - "togekiss": "Togekiss", - "yanmega": "Yanmega", - "leafeon": "Leafeon", - "glaceon": "Glaceon", - "gliscor": "Gliscor", - "mamoswine": "Mamoswine", - "porygon_z": "Porygon-Z", - "gallade": "Gallade", - "probopass": "Probopass", - "dusknoir": "Dusknoir", - "froslass": "Froslass", - "rotom": "Rotom", - "uxie": "Uxie", - "mesprit": "Mesprit", - "azelf": "Azelf", - "dialga": "Dialga", - "palkia": "Palkia", - "heatran": "Heatran", - "regigigas": "Regigigas", - "giratina": "Giratina", - "cresselia": "Cresselia", - "phione": "Phione", - "manaphy": "Manaphy", - "darkrai": "Darkrai", - "shaymin": "Shaymin", - "arceus": "Arceus", - "victini": "Victini", - "snivy": "Snivy", - "servine": "Servine", - "serperior": "Serperior", - "tepig": "Tepig", - "pignite": "Pignite", - "emboar": "Emboar", - "oshawott": "Oshawott", - "dewott": "Dewott", - "samurott": "Samurott", - "patrat": "Patrat", - "watchog": "Watchog", - "lillipup": "Lillipup", - "herdier": "Herdier", - "stoutland": "Stoutland", - "purrloin": "Purrloin", - "liepard": "Liepard", - "pansage": "Pansage", - "simisage": "Simisage", - "pansear": "Pansear", - "simisear": "Simisear", - "panpour": "Panpour", - "simipour": "Simipour", - "munna": "Munna", - "musharna": "Musharna", - "pidove": "Pidove", - "tranquill": "Tranquill", - "unfezant": "Unfezant", - "blitzle": "Blitzle", - "zebstrika": "Zebstrika", - "roggenrola": "Roggenrola", - "boldore": "Boldore", - "gigalith": "Gigalith", - "woobat": "Woobat", - "swoobat": "Swoobat", - "drilbur": "Drilbur", - "excadrill": "Excadrill", - "audino": "Audino", - "timburr": "Timburr", - "gurdurr": "Gurdurr", - "conkeldurr": "Conkeldurr", - "tympole": "Tympole", - "palpitoad": "Palpitoad", - "seismitoad": "Seismitoad", - "throh": "Throh", - "sawk": "Sawk", - "sewaddle": "Sewaddle", - "swadloon": "Swadloon", - "leavanny": "Leavanny", - "venipede": "Venipede", - "whirlipede": "Whirlipede", - "scolipede": "Scolipede", - "cottonee": "Cottonee", - "whimsicott": "Whimsicott", - "petilil": "Petilil", - "lilligant": "Lilligant", - "basculin": "Basculin", - "sandile": "Sandile", - "krokorok": "Krokorok", - "krookodile": "Krookodile", - "darumaka": "Darumaka", - "darmanitan": "Darmanitan", - "maractus": "Maractus", - "dwebble": "Dwebble", - "crustle": "Crustle", - "scraggy": "Scraggy", - "scrafty": "Scrafty", - "sigilyph": "Sigilyph", - "yamask": "Yamask", - "cofagrigus": "Cofagrigus", - "tirtouga": "Tirtouga", - "carracosta": "Carracosta", - "archen": "Archen", - "archeops": "Archeops", - "trubbish": "Trubbish", - "garbodor": "Garbodor", - "zorua": "Zorua", - "zoroark": "Zoroark", - "minccino": "Minccino", - "cinccino": "Cinccino", - "gothita": "Gothita", - "gothorita": "Gothorita", - "gothitelle": "Gothitelle", - "solosis": "Solosis", - "duosion": "Duosion", - "reuniclus": "Reuniclus", - "ducklett": "Ducklett", - "swanna": "Swanna", - "vanillite": "Vanillite", - "vanillish": "Vanillish", - "vanilluxe": "Vanilluxe", - "deerling": "Deerling", - "sawsbuck": "Sawsbuck", - "emolga": "Emolga", - "karrablast": "Karrablast", - "escavalier": "Escavalier", - "foongus": "Foongus", - "amoonguss": "Amoonguss", - "frillish": "Frillish", - "jellicent": "Jellicent", - "alomomola": "Alomomola", - "joltik": "Joltik", - "galvantula": "Galvantula", - "ferroseed": "Ferroseed", - "ferrothorn": "Ferrothorn", - "klink": "Klink", - "klang": "Klang", - "klinklang": "Klinklang", - "tynamo": "Tynamo", - "eelektrik": "Eelektrik", - "eelektross": "Eelektross", - "elgyem": "Elgyem", - "beheeyem": "Beheeyem", - "litwick": "Litwick", - "lampent": "Lampent", - "chandelure": "Chandelure", - "axew": "Axew", - "fraxure": "Fraxure", - "haxorus": "Haxorus", - "cubchoo": "Cubchoo", - "beartic": "Beartic", - "cryogonal": "Cryogonal", - "shelmet": "Shelmet", - "accelgor": "Accelgor", - "stunfisk": "Stunfisk", - "mienfoo": "Mienfoo", - "mienshao": "Mienshao", - "druddigon": "Druddigon", - "golett": "Golett", - "golurk": "Golurk", - "pawniard": "Pawniard", - "bisharp": "Bisharp", - "bouffalant": "Bouffalant", - "rufflet": "Rufflet", - "braviary": "Braviary", - "vullaby": "Vullaby", - "mandibuzz": "Mandibuzz", - "heatmor": "Heatmor", - "durant": "Durant", - "deino": "Deino", - "zweilous": "Zweilous", - "hydreigon": "Hydreigon", - "larvesta": "Larvesta", - "volcarona": "Volcarona", - "cobalion": "Cobalion", - "terrakion": "Terrakion", - "virizion": "Virizion", - "tornadus": "Tornadus", - "thundurus": "Thundurus", - "reshiram": "Reshiram", - "zekrom": "Zekrom", - "landorus": "Landorus", - "kyurem": "Kyurem", - "keldeo": "Keldeo", - "meloetta": "Meloetta", - "genesect": "Genesect", - "chespin": "Chespin", - "quilladin": "Quilladin", - "chesnaught": "Chesnaught", - "fennekin": "Fennekin", - "braixen": "Braixen", - "delphox": "Delphox", - "froakie": "Froakie", - "frogadier": "Frogadier", - "greninja": "Greninja", - "bunnelby": "Bunnelby", - "diggersby": "Diggersby", - "fletchling": "Fletchling", - "fletchinder": "Fletchinder", - "talonflame": "Talonflame", - "scatterbug": "Scatterbug", - "spewpa": "Spewpa", - "vivillon": "Vivillon", - "litleo": "Litleo", - "pyroar": "Pyroar", - "flabebe": "Flabébé", - "floette": "Floette", - "florges": "Florges", - "skiddo": "Skiddo", - "gogoat": "Gogoat", - "pancham": "Pancham", - "pangoro": "Pangoro", - "furfrou": "Furfrou", - "espurr": "Espurr", - "meowstic": "Meowstic", - "honedge": "Honedge", - "doublade": "Doublade", - "aegislash": "Aegislash", - "spritzee": "Spritzee", - "aromatisse": "Aromatisse", - "swirlix": "Swirlix", - "slurpuff": "Slurpuff", - "inkay": "Inkay", - "malamar": "Malamar", - "binacle": "Binacle", - "barbaracle": "Barbaracle", - "skrelp": "Skrelp", - "dragalge": "Dragalge", - "clauncher": "Clauncher", - "clawitzer": "Clawitzer", - "helioptile": "Helioptile", - "heliolisk": "Heliolisk", - "tyrunt": "Tyrunt", - "tyrantrum": "Tyrantrum", - "amaura": "Amaura", - "aurorus": "Aurorus", - "sylveon": "Sylveon", - "hawlucha": "Hawlucha", - "dedenne": "Dedenne", - "carbink": "Carbink", - "goomy": "Goomy", - "sliggoo": "Sliggoo", - "goodra": "Goodra", - "klefki": "Klefki", - "phantump": "Phantump", - "trevenant": "Trevenant", - "pumpkaboo": "Pumpkaboo", - "gourgeist": "Gourgeist", - "bergmite": "Bergmite", - "avalugg": "Avalugg", - "noibat": "Noibat", - "noivern": "Noivern", - "xerneas": "Xerneas", - "yveltal": "Yveltal", - "zygarde": "Zygarde", - "diancie": "Diancie", - "hoopa": "Hoopa", - "volcanion": "Volcanion", - "rowlet": "Rowlet", - "dartrix": "Dartrix", - "decidueye": "Decidueye", - "litten": "Litten", - "torracat": "Torracat", - "incineroar": "Incineroar", - "popplio": "Popplio", - "brionne": "Brionne", - "primarina": "Primarina", - "pikipek": "Pikipek", - "trumbeak": "Trumbeak", - "toucannon": "Toucannon", - "yungoos": "Yungoos", - "gumshoos": "Gumshoos", - "grubbin": "Grubbin", - "charjabug": "Charjabug", - "vikavolt": "Vikavolt", - "crabrawler": "Crabrawler", - "crabominable": "Crabominable", - "oricorio": "Oricorio", - "cutiefly": "Cutiefly", - "ribombee": "Ribombee", - "rockruff": "Rockruff", - "lycanroc": "Lycanroc", - "wishiwashi": "Wishiwashi", - "mareanie": "Mareanie", - "toxapex": "Toxapex", - "mudbray": "Mudbray", - "mudsdale": "Mudsdale", - "dewpider": "Dewpider", - "araquanid": "Araquanid", - "fomantis": "Fomantis", - "lurantis": "Lurantis", - "morelull": "Morelull", - "shiinotic": "Shiinotic", - "salandit": "Salandit", - "salazzle": "Salazzle", - "stufful": "Stufful", - "bewear": "Bewear", - "bounsweet": "Bounsweet", - "steenee": "Steenee", - "tsareena": "Tsareena", - "comfey": "Comfey", - "oranguru": "Oranguru", - "passimian": "Passimian", - "wimpod": "Wimpod", - "golisopod": "Golisopod", - "sandygast": "Sandygast", - "palossand": "Palossand", - "pyukumuku": "Pyukumuku", - "type_null": "Tipo Zero", - "silvally": "Silvally", - "minior": "Minior", - "komala": "Komala", - "turtonator": "Turtonator", - "togedemaru": "Togedemaru", - "mimikyu": "Mimikyu", - "bruxish": "Bruxish", - "drampa": "Drampa", - "dhelmise": "Dhelmise", - "jangmo_o": "Jangmo-o", - "hakamo_o": "Hakamo-o", - "kommo_o": "Kommo-o", - "tapu_koko": "Tapu Koko", - "tapu_lele": "Tapu Lele", - "tapu_bulu": "Tapu Bulu", - "tapu_fini": "Tapu Fini", - "cosmog": "Cosmog", - "cosmoem": "Cosmoem", - "solgaleo": "Solgaleo", - "lunala": "Lunala", - "nihilego": "Nihilego", - "buzzwole": "Buzzwole", - "pheromosa": "Pheromosa", - "xurkitree": "Xurkitree", - "celesteela": "Celesteela", - "kartana": "Kartana", - "guzzlord": "Guzzlord", - "necrozma": "Necrozma", - "magearna": "Magearna", - "marshadow": "Marshadow", - "poipole": "Poipole", - "naganadel": "Naganadel", - "stakataka": "Stakataka", - "blacephalon": "Blacephalon", - "zeraora": "Zeraora", - "meltan": "Meltan", - "melmetal": "Melmetal", - "grookey": "Grookey", - "thwackey": "Thwackey", - "rillaboom": "Rillaboom", - "scorbunny": "Scorbunny", - "raboot": "Raboot", - "cinderace": "Cinderace", - "sobble": "Sobble", - "drizzile": "Drizzile", - "inteleon": "Inteleon", - "skwovet": "Skwovet", - "greedent": "Greedent", - "rookidee": "Rookidee", - "corvisquire": "Corvisquire", - "corviknight": "Corviknight", - "blipbug": "Blipbug", - "dottler": "Dottler", - "orbeetle": "Orbeetle", - "nickit": "Nickit", - "thievul": "Thievul", - "gossifleur": "Gossifleur", - "eldegoss": "Eldegoss", - "wooloo": "Wooloo", - "dubwool": "Dubwool", - "chewtle": "Chewtle", - "drednaw": "Drednaw", - "yamper": "Yamper", - "boltund": "Boltund", - "rolycoly": "Rolycoly", - "carkol": "Carkol", - "coalossal": "Coalossal", - "applin": "Applin", - "flapple": "Flapple", - "appletun": "Appletun", - "silicobra": "Silicobra", - "sandaconda": "Sandaconda", - "cramorant": "Cramorant", - "arrokuda": "Arrokuda", - "barraskewda": "Barraskewda", - "toxel": "Toxel", - "toxtricity": "Toxtricity", - "sizzlipede": "Sizzlipede", - "centiskorch": "Centiskorch", - "clobbopus": "Clobbopus", - "grapploct": "Grapploct", - "sinistea": "Sinistea", - "polteageist": "Polteageist", - "hatenna": "Hatenna", - "hattrem": "Hattrem", - "hatterene": "Hatterene", - "impidimp": "Impidimp", - "morgrem": "Morgrem", - "grimmsnarl": "Grimmsnarl", - "obstagoon": "Obstagoon", - "perrserker": "Perrserker", - "cursola": "Cursola", - "sirfetchd": "Sirfetch'd", - "mr_rime": "Mr. Rime", - "runerigus": "Runerigus", - "milcery": "Milcery", - "alcremie": "Alcremie", - "falinks": "Falinks", - "pincurchin": "Pincurchin", - "snom": "Snom", - "frosmoth": "Frosmoth", - "stonjourner": "Stonjourner", - "eiscue": "Eiscue", - "indeedee": "Indeedee", - "morpeko": "Morpeko", - "cufant": "Cufant", - "copperajah": "Copperajah", - "dracozolt": "Dracozolt", - "arctozolt": "Arctozolt", - "dracovish": "Dracovish", - "arctovish": "Arctovish", - "duraludon": "Duraludon", - "dreepy": "Dreepy", - "drakloak": "Drakloak", - "dragapult": "Dragapult", - "zacian": "Zacian", - "zamazenta": "Zamazenta", - "eternatus": "Eternatus", - "kubfu": "Kubfu", - "urshifu": "Urshifu", - "zarude": "Zarude", - "regieleki": "Regieleki", - "regidrago": "Regidrago", - "glastrier": "Glastrier", - "spectrier": "Spectrier", - "calyrex": "Calyrex", - "wyrdeer": "Wyrdeer", - "kleavor": "Kleavor", - "ursaluna": "Ursaluna", - "basculegion": "Basculegion", - "sneasler": "Sneasler", - "overqwil": "Overqwil", - "enamorus": "Enamorus", - "sprigatito": "Sprigatito", - "floragato": "Floragato", - "meowscarada": "Meowscarada", - "fuecoco": "Fuecoco", - "crocalor": "Crocalor", - "skeledirge": "Skeledirge", - "quaxly": "Quaxly", - "quaxwell": "Quaxwell", - "quaquaval": "Quaquaval", - "lechonk": "Lechonk", - "oinkologne": "Oinkologne", - "tarountula": "Tarountula", - "spidops": "Spidops", - "nymble": "Nymble", - "lokix": "Lokix", - "pawmi": "Pawmi", - "pawmo": "Pawmo", - "pawmot": "Pawmot", - "tandemaus": "Tandemaus", - "maushold": "Maushold", - "fidough": "Fidough", - "dachsbun": "Dachsbun", - "smoliv": "Smoliv", - "dolliv": "Dolliv", - "arboliva": "Arboliva", - "squawkabilly": "Squawkabilly", - "nacli": "Nacli", - "naclstack": "Naclstack", - "garganacl": "Garganacl", - "charcadet": "Charcadet", - "armarouge": "Armarouge", - "ceruledge": "Ceruledge", - "tadbulb": "Tadbulb", - "bellibolt": "Bellibolt", - "wattrel": "Wattrel", - "kilowattrel": "Kilowattrel", - "maschiff": "Maschiff", - "mabosstiff": "Mabosstiff", - "shroodle": "Shroodle", - "grafaiai": "Grafaiai", - "bramblin": "Bramblin", - "brambleghast": "Brambleghast", - "toedscool": "Toedscool", - "toedscruel": "Toedscruel", - "klawf": "Klawf", - "capsakid": "Capsakid", - "scovillain": "Scovillain", - "rellor": "Rellor", - "rabsca": "Rabsca", - "flittle": "Flittle", - "espathra": "Espathra", - "tinkatink": "Tinkatink", - "tinkatuff": "Tinkatuff", - "tinkaton": "Tinkaton", - "wiglett": "Wiglett", - "wugtrio": "Wugtrio", - "bombirdier": "Bombirdier", - "finizen": "Finizen", - "palafin": "Palafin", - "varoom": "Varoom", - "revavroom": "Revavroom", - "cyclizar": "Cyclizar", - "orthworm": "Orthworm", - "glimmet": "Glimmet", - "glimmora": "Glimmora", - "greavard": "Greavard", - "houndstone": "Houndstone", - "flamigo": "Flamigo", - "cetoddle": "Cetoddle", - "cetitan": "Cetitan", - "veluza": "Veluza", - "dondozo": "Dondozo", - "tatsugiri": "Tatsugiri", - "annihilape": "Annihilape", - "clodsire": "Clodsire", - "farigiraf": "Farigiraf", - "dudunsparce": "Dudunsparce", - "kingambit": "Kingambit", - "great_tusk": "Grandizanne", - "scream_tail": "Codaurlante", - "brute_bonnet": "Fungofurioso", - "flutter_mane": "Crinealato", - "slither_wing": "Alirasenti", - "sandy_shocks": "Peldisabbia", - "iron_treads": "Solcoferreo", - "iron_bundle": "Saccoferreo", - "iron_hands": "Manoferrea", - "iron_jugulis": "Colloferreo", - "iron_moth": "Falenaferrea", - "iron_thorns": "Spineferree", - "frigibax": "Frigibax", - "arctibax": "Arctibax", - "baxcalibur": "Baxcalibur", - "gimmighoul": "Gimmighoul", - "gholdengo": "Gholdengo", - "wo_chien": "Wo-Chien", - "chien_pao": "Chien-Pao", - "ting_lu": "Ting-Lu", - "chi_yu": "Chi-Yu", - "roaring_moon": "Lunaruggente", - "iron_valiant": "Eroeferreo", - "koraidon": "Koraidon", - "miraidon": "Miraidon", - "walking_wake": "Acquecrespe", - "iron_leaves": "Fogliaferrea", - "dipplin": "Dipplin", - "poltchageist": "Poltchageist", - "sinistcha": "Sinistcha", - "okidogi": "Okidogi", - "munkidori": "Munkidori", - "fezandipiti": "Fezandipiti", - "ogerpon": "Ogerpon", - "archaludon": "Archaludon", - "hydrapple": "Hydrapple", - "gouging_fire": "Vampeaguzze", - "raging_bolt": "Furiatonante", - "iron_boulder": "Massoferreo", - "iron_crown": "Capoferreo", - "terapagos": "Terapagos", - "pecharunt": "Pecharunt", - "alola_rattata": "Rattata", - "alola_raticate": "Raticate", - "alola_raichu": "Raichu", - "alola_sandshrew": "Sandshrew", - "alola_sandslash": "Sandslash", - "alola_vulpix": "Vulpix", - "alola_ninetales": "Ninetales", - "alola_diglett": "Diglett", - "alola_dugtrio": "Dugtrio", - "alola_meowth": "Meowth", - "alola_persian": "Persian", - "alola_geodude": "Geodude", - "alola_graveler": "Graveler", - "alola_golem": "Golem", - "alola_grimer": "Grimer", - "alola_muk": "Muk", - "alola_exeggutor": "Exeggutor", - "alola_marowak": "Marowak", - "eternal_floette": "Floette", - "galar_meowth": "Meowth", - "galar_ponyta": "Ponyta", - "galar_rapidash": "Rapidash", - "galar_slowpoke": "Slowpoke", - "galar_slowbro": "Slowbro", - "galar_farfetchd": "Farfetch'd", - "galar_weezing": "Weezing", - "galar_mr_mime": "Mr. Mime", - "galar_articuno": "Articuno", - "galar_zapdos": "Zapdos", - "galar_moltres": "Moltres", - "galar_slowking": "Slowking", - "galar_corsola": "Corsola", - "galar_zigzagoon": "Zigzagoon", - "galar_linoone": "Linoone", - "galar_darumaka": "Darumaka", - "galar_darmanitan": "Darmanitan", - "galar_yamask": "Yamask", - "galar_stunfisk": "Stunfisk", - "hisui_growlithe": "Growlithe", - "hisui_arcanine": "Arcanine", - "hisui_voltorb": "Voltorb", - "hisui_electrode": "Electrode", - "hisui_typhlosion": "Typhlosion", - "hisui_qwilfish": "Qwilfish", - "hisui_sneasel": "Sneasel", - "hisui_samurott": "Samurott", - "hisui_lilligant": "Lilligant", - "hisui_zorua": "Zorua", - "hisui_zoroark": "Zoroark", - "hisui_braviary": "Braviary", - "hisui_sliggoo": "Sliggoo", - "hisui_goodra": "Goodra", - "hisui_avalugg": "Avalugg", - "hisui_decidueye": "Decidueye", - "paldea_tauros": "Tauros", - "paldea_wooper": "Wooper", - "bloodmoon_ursaluna": "Ursaluna", + 'bulbasaur': 'Bulbasaur', + 'ivysaur': 'Ivysaur', + 'venusaur': 'Venusaur', + 'charmander': 'Charmander', + 'charmeleon': 'Charmeleon', + 'charizard': 'Charizard', + 'squirtle': 'Squirtle', + 'wartortle': 'Wartortle', + 'blastoise': 'Blastoise', + 'caterpie': 'Caterpie', + 'metapod': 'Metapod', + 'butterfree': 'Butterfree', + 'weedle': 'Weedle', + 'kakuna': 'Kakuna', + 'beedrill': 'Beedrill', + 'pidgey': 'Pidgey', + 'pidgeotto': 'Pidgeotto', + 'pidgeot': 'Pidgeot', + 'rattata': 'Rattata', + 'raticate': 'Raticate', + 'spearow': 'Spearow', + 'fearow': 'Fearow', + 'ekans': 'Ekans', + 'arbok': 'Arbok', + 'pikachu': 'Pikachu', + 'raichu': 'Raichu', + 'sandshrew': 'Sandshrew', + 'sandslash': 'Sandslash', + 'nidoran_f': 'Nidoran♀', + 'nidorina': 'Nidorina', + 'nidoqueen': 'Nidoqueen', + 'nidoran_m': 'Nidoran♂', + 'nidorino': 'Nidorino', + 'nidoking': 'Nidoking', + 'clefairy': 'Clefairy', + 'clefable': 'Clefable', + 'vulpix': 'Vulpix', + 'ninetales': 'Ninetales', + 'jigglypuff': 'Jigglypuff', + 'wigglytuff': 'Wigglytuff', + 'zubat': 'Zubat', + 'golbat': 'Golbat', + 'oddish': 'Oddish', + 'gloom': 'Gloom', + 'vileplume': 'Vileplume', + 'paras': 'Paras', + 'parasect': 'Parasect', + 'venonat': 'Venonat', + 'venomoth': 'Venomoth', + 'diglett': 'Diglett', + 'dugtrio': 'Dugtrio', + 'meowth': 'Meowth', + 'persian': 'Persian', + 'psyduck': 'Psyduck', + 'golduck': 'Golduck', + 'mankey': 'Mankey', + 'primeape': 'Primeape', + 'growlithe': 'Growlithe', + 'arcanine': 'Arcanine', + 'poliwag': 'Poliwag', + 'poliwhirl': 'Poliwhirl', + 'poliwrath': 'Poliwrath', + 'abra': 'Abra', + 'kadabra': 'Kadabra', + 'alakazam': 'Alakazam', + 'machop': 'Machop', + 'machoke': 'Machoke', + 'machamp': 'Machamp', + 'bellsprout': 'Bellsprout', + 'weepinbell': 'Weepinbell', + 'victreebel': 'Victreebel', + 'tentacool': 'Tentacool', + 'tentacruel': 'Tentacruel', + 'geodude': 'Geodude', + 'graveler': 'Graveler', + 'golem': 'Golem', + 'ponyta': 'Ponyta', + 'rapidash': 'Rapidash', + 'slowpoke': 'Slowpoke', + 'slowbro': 'Slowbro', + 'magnemite': 'Magnemite', + 'magneton': 'Magneton', + 'farfetchd': 'Farfetch\'d', + 'doduo': 'Doduo', + 'dodrio': 'Dodrio', + 'seel': 'Seel', + 'dewgong': 'Dewgong', + 'grimer': 'Grimer', + 'muk': 'Muk', + 'shellder': 'Shellder', + 'cloyster': 'Cloyster', + 'gastly': 'Gastly', + 'haunter': 'Haunter', + 'gengar': 'Gengar', + 'onix': 'Onix', + 'drowzee': 'Drowzee', + 'hypno': 'Hypno', + 'krabby': 'Krabby', + 'kingler': 'Kingler', + 'voltorb': 'Voltorb', + 'electrode': 'Electrode', + 'exeggcute': 'Exeggcute', + 'exeggutor': 'Exeggutor', + 'cubone': 'Cubone', + 'marowak': 'Marowak', + 'hitmonlee': 'Hitmonlee', + 'hitmonchan': 'Hitmonchan', + 'lickitung': 'Lickitung', + 'koffing': 'Koffing', + 'weezing': 'Weezing', + 'rhyhorn': 'Rhyhorn', + 'rhydon': 'Rhydon', + 'chansey': 'Chansey', + 'tangela': 'Tangela', + 'kangaskhan': 'Kangaskhan', + 'horsea': 'Horsea', + 'seadra': 'Seadra', + 'goldeen': 'Goldeen', + 'seaking': 'Seaking', + 'staryu': 'Staryu', + 'starmie': 'Starmie', + 'mr_mime': 'Mr. Mime', + 'scyther': 'Scyther', + 'jynx': 'Jynx', + 'electabuzz': 'Electabuzz', + 'magmar': 'Magmar', + 'pinsir': 'Pinsir', + 'tauros': 'Tauros', + 'magikarp': 'Magikarp', + 'gyarados': 'Gyarados', + 'lapras': 'Lapras', + 'ditto': 'Ditto', + 'eevee': 'Eevee', + 'vaporeon': 'Vaporeon', + 'jolteon': 'Jolteon', + 'flareon': 'Flareon', + 'porygon': 'Porygon', + 'omanyte': 'Omanyte', + 'omastar': 'Omastar', + 'kabuto': 'Kabuto', + 'kabutops': 'Kabutops', + 'aerodactyl': 'Aerodactyl', + 'snorlax': 'Snorlax', + 'articuno': 'Articuno', + 'zapdos': 'Zapdos', + 'moltres': 'Moltres', + 'dratini': 'Dratini', + 'dragonair': 'Dragonair', + 'dragonite': 'Dragonite', + 'mewtwo': 'Mewtwo', + 'mew': 'Mew', + 'chikorita': 'Chikorita', + 'bayleef': 'Bayleef', + 'meganium': 'Meganium', + 'cyndaquil': 'Cyndaquil', + 'quilava': 'Quilava', + 'typhlosion': 'Typhlosion', + 'totodile': 'Totodile', + 'croconaw': 'Croconaw', + 'feraligatr': 'Feraligatr', + 'sentret': 'Sentret', + 'furret': 'Furret', + 'hoothoot': 'Hoothoot', + 'noctowl': 'Noctowl', + 'ledyba': 'Ledyba', + 'ledian': 'Ledian', + 'spinarak': 'Spinarak', + 'ariados': 'Ariados', + 'crobat': 'Crobat', + 'chinchou': 'Chinchou', + 'lanturn': 'Lanturn', + 'pichu': 'Pichu', + 'cleffa': 'Cleffa', + 'igglybuff': 'Igglybuff', + 'togepi': 'Togepi', + 'togetic': 'Togetic', + 'natu': 'Natu', + 'xatu': 'Xatu', + 'mareep': 'Mareep', + 'flaaffy': 'Flaaffy', + 'ampharos': 'Ampharos', + 'bellossom': 'Bellossom', + 'marill': 'Marill', + 'azumarill': 'Azumarill', + 'sudowoodo': 'Sudowoodo', + 'politoed': 'Politoed', + 'hoppip': 'Hoppip', + 'skiploom': 'Skiploom', + 'jumpluff': 'Jumpluff', + 'aipom': 'Aipom', + 'sunkern': 'Sunkern', + 'sunflora': 'Sunflora', + 'yanma': 'Yanma', + 'wooper': 'Wooper', + 'quagsire': 'Quagsire', + 'espeon': 'Espeon', + 'umbreon': 'Umbreon', + 'murkrow': 'Murkrow', + 'slowking': 'Slowking', + 'misdreavus': 'Misdreavus', + 'unown': 'Unown', + 'wobbuffet': 'Wobbuffet', + 'girafarig': 'Girafarig', + 'pineco': 'Pineco', + 'forretress': 'Forretress', + 'dunsparce': 'Dunsparce', + 'gligar': 'Gligar', + 'steelix': 'Steelix', + 'snubbull': 'Snubbull', + 'granbull': 'Granbull', + 'qwilfish': 'Qwilfish', + 'scizor': 'Scizor', + 'shuckle': 'Shuckle', + 'heracross': 'Heracross', + 'sneasel': 'Sneasel', + 'teddiursa': 'Teddiursa', + 'ursaring': 'Ursaring', + 'slugma': 'Slugma', + 'magcargo': 'Magcargo', + 'swinub': 'Swinub', + 'piloswine': 'Piloswine', + 'corsola': 'Corsola', + 'remoraid': 'Remoraid', + 'octillery': 'Octillery', + 'delibird': 'Delibird', + 'mantine': 'Mantine', + 'skarmory': 'Skarmory', + 'houndour': 'Houndour', + 'houndoom': 'Houndoom', + 'kingdra': 'Kingdra', + 'phanpy': 'Phanpy', + 'donphan': 'Donphan', + 'porygon2': 'Porygon2', + 'stantler': 'Stantler', + 'smeargle': 'Smeargle', + 'tyrogue': 'Tyrogue', + 'hitmontop': 'Hitmontop', + 'smoochum': 'Smoochum', + 'elekid': 'Elekid', + 'magby': 'Magby', + 'miltank': 'Miltank', + 'blissey': 'Blissey', + 'raikou': 'Raikou', + 'entei': 'Entei', + 'suicune': 'Suicune', + 'larvitar': 'Larvitar', + 'pupitar': 'Pupitar', + 'tyranitar': 'Tyranitar', + 'lugia': 'Lugia', + 'ho_oh': 'Ho-Oh', + 'celebi': 'Celebi', + 'treecko': 'Treecko', + 'grovyle': 'Grovyle', + 'sceptile': 'Sceptile', + 'torchic': 'Torchic', + 'combusken': 'Combusken', + 'blaziken': 'Blaziken', + 'mudkip': 'Mudkip', + 'marshtomp': 'Marshtomp', + 'swampert': 'Swampert', + 'poochyena': 'Poochyena', + 'mightyena': 'Mightyena', + 'zigzagoon': 'Zigzagoon', + 'linoone': 'Linoone', + 'wurmple': 'Wurmple', + 'silcoon': 'Silcoon', + 'beautifly': 'Beautifly', + 'cascoon': 'Cascoon', + 'dustox': 'Dustox', + 'lotad': 'Lotad', + 'lombre': 'Lombre', + 'ludicolo': 'Ludicolo', + 'seedot': 'Seedot', + 'nuzleaf': 'Nuzleaf', + 'shiftry': 'Shiftry', + 'taillow': 'Taillow', + 'swellow': 'Swellow', + 'wingull': 'Wingull', + 'pelipper': 'Pelipper', + 'ralts': 'Ralts', + 'kirlia': 'Kirlia', + 'gardevoir': 'Gardevoir', + 'surskit': 'Surskit', + 'masquerain': 'Masquerain', + 'shroomish': 'Shroomish', + 'breloom': 'Breloom', + 'slakoth': 'Slakoth', + 'vigoroth': 'Vigoroth', + 'slaking': 'Slaking', + 'nincada': 'Nincada', + 'ninjask': 'Ninjask', + 'shedinja': 'Shedinja', + 'whismur': 'Whismur', + 'loudred': 'Loudred', + 'exploud': 'Exploud', + 'makuhita': 'Makuhita', + 'hariyama': 'Hariyama', + 'azurill': 'Azurill', + 'nosepass': 'Nosepass', + 'skitty': 'Skitty', + 'delcatty': 'Delcatty', + 'sableye': 'Sableye', + 'mawile': 'Mawile', + 'aron': 'Aron', + 'lairon': 'Lairon', + 'aggron': 'Aggron', + 'meditite': 'Meditite', + 'medicham': 'Medicham', + 'electrike': 'Electrike', + 'manectric': 'Manectric', + 'plusle': 'Plusle', + 'minun': 'Minun', + 'volbeat': 'Volbeat', + 'illumise': 'Illumise', + 'roselia': 'Roselia', + 'gulpin': 'Gulpin', + 'swalot': 'Swalot', + 'carvanha': 'Carvanha', + 'sharpedo': 'Sharpedo', + 'wailmer': 'Wailmer', + 'wailord': 'Wailord', + 'numel': 'Numel', + 'camerupt': 'Camerupt', + 'torkoal': 'Torkoal', + 'spoink': 'Spoink', + 'grumpig': 'Grumpig', + 'spinda': 'Spinda', + 'trapinch': 'Trapinch', + 'vibrava': 'Vibrava', + 'flygon': 'Flygon', + 'cacnea': 'Cacnea', + 'cacturne': 'Cacturne', + 'swablu': 'Swablu', + 'altaria': 'Altaria', + 'zangoose': 'Zangoose', + 'seviper': 'Seviper', + 'lunatone': 'Lunatone', + 'solrock': 'Solrock', + 'barboach': 'Barboach', + 'whiscash': 'Whiscash', + 'corphish': 'Corphish', + 'crawdaunt': 'Crawdaunt', + 'baltoy': 'Baltoy', + 'claydol': 'Claydol', + 'lileep': 'Lileep', + 'cradily': 'Cradily', + 'anorith': 'Anorith', + 'armaldo': 'Armaldo', + 'feebas': 'Feebas', + 'milotic': 'Milotic', + 'castform': 'Castform', + 'kecleon': 'Kecleon', + 'shuppet': 'Shuppet', + 'banette': 'Banette', + 'duskull': 'Duskull', + 'dusclops': 'Dusclops', + 'tropius': 'Tropius', + 'chimecho': 'Chimecho', + 'absol': 'Absol', + 'wynaut': 'Wynaut', + 'snorunt': 'Snorunt', + 'glalie': 'Glalie', + 'spheal': 'Spheal', + 'sealeo': 'Sealeo', + 'walrein': 'Walrein', + 'clamperl': 'Clamperl', + 'huntail': 'Huntail', + 'gorebyss': 'Gorebyss', + 'relicanth': 'Relicanth', + 'luvdisc': 'Luvdisc', + 'bagon': 'Bagon', + 'shelgon': 'Shelgon', + 'salamence': 'Salamence', + 'beldum': 'Beldum', + 'metang': 'Metang', + 'metagross': 'Metagross', + 'regirock': 'Regirock', + 'regice': 'Regice', + 'registeel': 'Registeel', + 'latias': 'Latias', + 'latios': 'Latios', + 'kyogre': 'Kyogre', + 'groudon': 'Groudon', + 'rayquaza': 'Rayquaza', + 'jirachi': 'Jirachi', + 'deoxys': 'Deoxys', + 'turtwig': 'Turtwig', + 'grotle': 'Grotle', + 'torterra': 'Torterra', + 'chimchar': 'Chimchar', + 'monferno': 'Monferno', + 'infernape': 'Infernape', + 'piplup': 'Piplup', + 'prinplup': 'Prinplup', + 'empoleon': 'Empoleon', + 'starly': 'Starly', + 'staravia': 'Staravia', + 'staraptor': 'Staraptor', + 'bidoof': 'Bidoof', + 'bibarel': 'Bibarel', + 'kricketot': 'Kricketot', + 'kricketune': 'Kricketune', + 'shinx': 'Shinx', + 'luxio': 'Luxio', + 'luxray': 'Luxray', + 'budew': 'Budew', + 'roserade': 'Roserade', + 'cranidos': 'Cranidos', + 'rampardos': 'Rampardos', + 'shieldon': 'Shieldon', + 'bastiodon': 'Bastiodon', + 'burmy': 'Burmy', + 'wormadam': 'Wormadam', + 'mothim': 'Mothim', + 'combee': 'Combee', + 'vespiquen': 'Vespiquen', + 'pachirisu': 'Pachirisu', + 'buizel': 'Buizel', + 'floatzel': 'Floatzel', + 'cherubi': 'Cherubi', + 'cherrim': 'Cherrim', + 'shellos': 'Shellos', + 'gastrodon': 'Gastrodon', + 'ambipom': 'Ambipom', + 'drifloon': 'Drifloon', + 'drifblim': 'Drifblim', + 'buneary': 'Buneary', + 'lopunny': 'Lopunny', + 'mismagius': 'Mismagius', + 'honchkrow': 'Honchkrow', + 'glameow': 'Glameow', + 'purugly': 'Purugly', + 'chingling': 'Chingling', + 'stunky': 'Stunky', + 'skuntank': 'Skuntank', + 'bronzor': 'Bronzor', + 'bronzong': 'Bronzong', + 'bonsly': 'Bonsly', + 'mime_jr': 'Mime Jr.', + 'happiny': 'Happiny', + 'chatot': 'Chatot', + 'spiritomb': 'Spiritomb', + 'gible': 'Gible', + 'gabite': 'Gabite', + 'garchomp': 'Garchomp', + 'munchlax': 'Munchlax', + 'riolu': 'Riolu', + 'lucario': 'Lucario', + 'hippopotas': 'Hippopotas', + 'hippowdon': 'Hippowdon', + 'skorupi': 'Skorupi', + 'drapion': 'Drapion', + 'croagunk': 'Croagunk', + 'toxicroak': 'Toxicroak', + 'carnivine': 'Carnivine', + 'finneon': 'Finneon', + 'lumineon': 'Lumineon', + 'mantyke': 'Mantyke', + 'snover': 'Snover', + 'abomasnow': 'Abomasnow', + 'weavile': 'Weavile', + 'magnezone': 'Magnezone', + 'lickilicky': 'Lickilicky', + 'rhyperior': 'Rhyperior', + 'tangrowth': 'Tangrowth', + 'electivire': 'Electivire', + 'magmortar': 'Magmortar', + 'togekiss': 'Togekiss', + 'yanmega': 'Yanmega', + 'leafeon': 'Leafeon', + 'glaceon': 'Glaceon', + 'gliscor': 'Gliscor', + 'mamoswine': 'Mamoswine', + 'porygon_z': 'Porygon-Z', + 'gallade': 'Gallade', + 'probopass': 'Probopass', + 'dusknoir': 'Dusknoir', + 'froslass': 'Froslass', + 'rotom': 'Rotom', + 'uxie': 'Uxie', + 'mesprit': 'Mesprit', + 'azelf': 'Azelf', + 'dialga': 'Dialga', + 'palkia': 'Palkia', + 'heatran': 'Heatran', + 'regigigas': 'Regigigas', + 'giratina': 'Giratina', + 'cresselia': 'Cresselia', + 'phione': 'Phione', + 'manaphy': 'Manaphy', + 'darkrai': 'Darkrai', + 'shaymin': 'Shaymin', + 'arceus': 'Arceus', + 'victini': 'Victini', + 'snivy': 'Snivy', + 'servine': 'Servine', + 'serperior': 'Serperior', + 'tepig': 'Tepig', + 'pignite': 'Pignite', + 'emboar': 'Emboar', + 'oshawott': 'Oshawott', + 'dewott': 'Dewott', + 'samurott': 'Samurott', + 'patrat': 'Patrat', + 'watchog': 'Watchog', + 'lillipup': 'Lillipup', + 'herdier': 'Herdier', + 'stoutland': 'Stoutland', + 'purrloin': 'Purrloin', + 'liepard': 'Liepard', + 'pansage': 'Pansage', + 'simisage': 'Simisage', + 'pansear': 'Pansear', + 'simisear': 'Simisear', + 'panpour': 'Panpour', + 'simipour': 'Simipour', + 'munna': 'Munna', + 'musharna': 'Musharna', + 'pidove': 'Pidove', + 'tranquill': 'Tranquill', + 'unfezant': 'Unfezant', + 'blitzle': 'Blitzle', + 'zebstrika': 'Zebstrika', + 'roggenrola': 'Roggenrola', + 'boldore': 'Boldore', + 'gigalith': 'Gigalith', + 'woobat': 'Woobat', + 'swoobat': 'Swoobat', + 'drilbur': 'Drilbur', + 'excadrill': 'Excadrill', + 'audino': 'Audino', + 'timburr': 'Timburr', + 'gurdurr': 'Gurdurr', + 'conkeldurr': 'Conkeldurr', + 'tympole': 'Tympole', + 'palpitoad': 'Palpitoad', + 'seismitoad': 'Seismitoad', + 'throh': 'Throh', + 'sawk': 'Sawk', + 'sewaddle': 'Sewaddle', + 'swadloon': 'Swadloon', + 'leavanny': 'Leavanny', + 'venipede': 'Venipede', + 'whirlipede': 'Whirlipede', + 'scolipede': 'Scolipede', + 'cottonee': 'Cottonee', + 'whimsicott': 'Whimsicott', + 'petilil': 'Petilil', + 'lilligant': 'Lilligant', + 'basculin': 'Basculin', + 'sandile': 'Sandile', + 'krokorok': 'Krokorok', + 'krookodile': 'Krookodile', + 'darumaka': 'Darumaka', + 'darmanitan': 'Darmanitan', + 'maractus': 'Maractus', + 'dwebble': 'Dwebble', + 'crustle': 'Crustle', + 'scraggy': 'Scraggy', + 'scrafty': 'Scrafty', + 'sigilyph': 'Sigilyph', + 'yamask': 'Yamask', + 'cofagrigus': 'Cofagrigus', + 'tirtouga': 'Tirtouga', + 'carracosta': 'Carracosta', + 'archen': 'Archen', + 'archeops': 'Archeops', + 'trubbish': 'Trubbish', + 'garbodor': 'Garbodor', + 'zorua': 'Zorua', + 'zoroark': 'Zoroark', + 'minccino': 'Minccino', + 'cinccino': 'Cinccino', + 'gothita': 'Gothita', + 'gothorita': 'Gothorita', + 'gothitelle': 'Gothitelle', + 'solosis': 'Solosis', + 'duosion': 'Duosion', + 'reuniclus': 'Reuniclus', + 'ducklett': 'Ducklett', + 'swanna': 'Swanna', + 'vanillite': 'Vanillite', + 'vanillish': 'Vanillish', + 'vanilluxe': 'Vanilluxe', + 'deerling': 'Deerling', + 'sawsbuck': 'Sawsbuck', + 'emolga': 'Emolga', + 'karrablast': 'Karrablast', + 'escavalier': 'Escavalier', + 'foongus': 'Foongus', + 'amoonguss': 'Amoonguss', + 'frillish': 'Frillish', + 'jellicent': 'Jellicent', + 'alomomola': 'Alomomola', + 'joltik': 'Joltik', + 'galvantula': 'Galvantula', + 'ferroseed': 'Ferroseed', + 'ferrothorn': 'Ferrothorn', + 'klink': 'Klink', + 'klang': 'Klang', + 'klinklang': 'Klinklang', + 'tynamo': 'Tynamo', + 'eelektrik': 'Eelektrik', + 'eelektross': 'Eelektross', + 'elgyem': 'Elgyem', + 'beheeyem': 'Beheeyem', + 'litwick': 'Litwick', + 'lampent': 'Lampent', + 'chandelure': 'Chandelure', + 'axew': 'Axew', + 'fraxure': 'Fraxure', + 'haxorus': 'Haxorus', + 'cubchoo': 'Cubchoo', + 'beartic': 'Beartic', + 'cryogonal': 'Cryogonal', + 'shelmet': 'Shelmet', + 'accelgor': 'Accelgor', + 'stunfisk': 'Stunfisk', + 'mienfoo': 'Mienfoo', + 'mienshao': 'Mienshao', + 'druddigon': 'Druddigon', + 'golett': 'Golett', + 'golurk': 'Golurk', + 'pawniard': 'Pawniard', + 'bisharp': 'Bisharp', + 'bouffalant': 'Bouffalant', + 'rufflet': 'Rufflet', + 'braviary': 'Braviary', + 'vullaby': 'Vullaby', + 'mandibuzz': 'Mandibuzz', + 'heatmor': 'Heatmor', + 'durant': 'Durant', + 'deino': 'Deino', + 'zweilous': 'Zweilous', + 'hydreigon': 'Hydreigon', + 'larvesta': 'Larvesta', + 'volcarona': 'Volcarona', + 'cobalion': 'Cobalion', + 'terrakion': 'Terrakion', + 'virizion': 'Virizion', + 'tornadus': 'Tornadus', + 'thundurus': 'Thundurus', + 'reshiram': 'Reshiram', + 'zekrom': 'Zekrom', + 'landorus': 'Landorus', + 'kyurem': 'Kyurem', + 'keldeo': 'Keldeo', + 'meloetta': 'Meloetta', + 'genesect': 'Genesect', + 'chespin': 'Chespin', + 'quilladin': 'Quilladin', + 'chesnaught': 'Chesnaught', + 'fennekin': 'Fennekin', + 'braixen': 'Braixen', + 'delphox': 'Delphox', + 'froakie': 'Froakie', + 'frogadier': 'Frogadier', + 'greninja': 'Greninja', + 'bunnelby': 'Bunnelby', + 'diggersby': 'Diggersby', + 'fletchling': 'Fletchling', + 'fletchinder': 'Fletchinder', + 'talonflame': 'Talonflame', + 'scatterbug': 'Scatterbug', + 'spewpa': 'Spewpa', + 'vivillon': 'Vivillon', + 'litleo': 'Litleo', + 'pyroar': 'Pyroar', + 'flabebe': 'Flabébé', + 'floette': 'Floette', + 'florges': 'Florges', + 'skiddo': 'Skiddo', + 'gogoat': 'Gogoat', + 'pancham': 'Pancham', + 'pangoro': 'Pangoro', + 'furfrou': 'Furfrou', + 'espurr': 'Espurr', + 'meowstic': 'Meowstic', + 'honedge': 'Honedge', + 'doublade': 'Doublade', + 'aegislash': 'Aegislash', + 'spritzee': 'Spritzee', + 'aromatisse': 'Aromatisse', + 'swirlix': 'Swirlix', + 'slurpuff': 'Slurpuff', + 'inkay': 'Inkay', + 'malamar': 'Malamar', + 'binacle': 'Binacle', + 'barbaracle': 'Barbaracle', + 'skrelp': 'Skrelp', + 'dragalge': 'Dragalge', + 'clauncher': 'Clauncher', + 'clawitzer': 'Clawitzer', + 'helioptile': 'Helioptile', + 'heliolisk': 'Heliolisk', + 'tyrunt': 'Tyrunt', + 'tyrantrum': 'Tyrantrum', + 'amaura': 'Amaura', + 'aurorus': 'Aurorus', + 'sylveon': 'Sylveon', + 'hawlucha': 'Hawlucha', + 'dedenne': 'Dedenne', + 'carbink': 'Carbink', + 'goomy': 'Goomy', + 'sliggoo': 'Sliggoo', + 'goodra': 'Goodra', + 'klefki': 'Klefki', + 'phantump': 'Phantump', + 'trevenant': 'Trevenant', + 'pumpkaboo': 'Pumpkaboo', + 'gourgeist': 'Gourgeist', + 'bergmite': 'Bergmite', + 'avalugg': 'Avalugg', + 'noibat': 'Noibat', + 'noivern': 'Noivern', + 'xerneas': 'Xerneas', + 'yveltal': 'Yveltal', + 'zygarde': 'Zygarde', + 'diancie': 'Diancie', + 'hoopa': 'Hoopa', + 'volcanion': 'Volcanion', + 'rowlet': 'Rowlet', + 'dartrix': 'Dartrix', + 'decidueye': 'Decidueye', + 'litten': 'Litten', + 'torracat': 'Torracat', + 'incineroar': 'Incineroar', + 'popplio': 'Popplio', + 'brionne': 'Brionne', + 'primarina': 'Primarina', + 'pikipek': 'Pikipek', + 'trumbeak': 'Trumbeak', + 'toucannon': 'Toucannon', + 'yungoos': 'Yungoos', + 'gumshoos': 'Gumshoos', + 'grubbin': 'Grubbin', + 'charjabug': 'Charjabug', + 'vikavolt': 'Vikavolt', + 'crabrawler': 'Crabrawler', + 'crabominable': 'Crabominable', + 'oricorio': 'Oricorio', + 'cutiefly': 'Cutiefly', + 'ribombee': 'Ribombee', + 'rockruff': 'Rockruff', + 'lycanroc': 'Lycanroc', + 'wishiwashi': 'Wishiwashi', + 'mareanie': 'Mareanie', + 'toxapex': 'Toxapex', + 'mudbray': 'Mudbray', + 'mudsdale': 'Mudsdale', + 'dewpider': 'Dewpider', + 'araquanid': 'Araquanid', + 'fomantis': 'Fomantis', + 'lurantis': 'Lurantis', + 'morelull': 'Morelull', + 'shiinotic': 'Shiinotic', + 'salandit': 'Salandit', + 'salazzle': 'Salazzle', + 'stufful': 'Stufful', + 'bewear': 'Bewear', + 'bounsweet': 'Bounsweet', + 'steenee': 'Steenee', + 'tsareena': 'Tsareena', + 'comfey': 'Comfey', + 'oranguru': 'Oranguru', + 'passimian': 'Passimian', + 'wimpod': 'Wimpod', + 'golisopod': 'Golisopod', + 'sandygast': 'Sandygast', + 'palossand': 'Palossand', + 'pyukumuku': 'Pyukumuku', + 'type_null': 'Tipo Zero', + 'silvally': 'Silvally', + 'minior': 'Minior', + 'komala': 'Komala', + 'turtonator': 'Turtonator', + 'togedemaru': 'Togedemaru', + 'mimikyu': 'Mimikyu', + 'bruxish': 'Bruxish', + 'drampa': 'Drampa', + 'dhelmise': 'Dhelmise', + 'jangmo_o': 'Jangmo-o', + 'hakamo_o': 'Hakamo-o', + 'kommo_o': 'Kommo-o', + 'tapu_koko': 'Tapu Koko', + 'tapu_lele': 'Tapu Lele', + 'tapu_bulu': 'Tapu Bulu', + 'tapu_fini': 'Tapu Fini', + 'cosmog': 'Cosmog', + 'cosmoem': 'Cosmoem', + 'solgaleo': 'Solgaleo', + 'lunala': 'Lunala', + 'nihilego': 'Nihilego', + 'buzzwole': 'Buzzwole', + 'pheromosa': 'Pheromosa', + 'xurkitree': 'Xurkitree', + 'celesteela': 'Celesteela', + 'kartana': 'Kartana', + 'guzzlord': 'Guzzlord', + 'necrozma': 'Necrozma', + 'magearna': 'Magearna', + 'marshadow': 'Marshadow', + 'poipole': 'Poipole', + 'naganadel': 'Naganadel', + 'stakataka': 'Stakataka', + 'blacephalon': 'Blacephalon', + 'zeraora': 'Zeraora', + 'meltan': 'Meltan', + 'melmetal': 'Melmetal', + 'grookey': 'Grookey', + 'thwackey': 'Thwackey', + 'rillaboom': 'Rillaboom', + 'scorbunny': 'Scorbunny', + 'raboot': 'Raboot', + 'cinderace': 'Cinderace', + 'sobble': 'Sobble', + 'drizzile': 'Drizzile', + 'inteleon': 'Inteleon', + 'skwovet': 'Skwovet', + 'greedent': 'Greedent', + 'rookidee': 'Rookidee', + 'corvisquire': 'Corvisquire', + 'corviknight': 'Corviknight', + 'blipbug': 'Blipbug', + 'dottler': 'Dottler', + 'orbeetle': 'Orbeetle', + 'nickit': 'Nickit', + 'thievul': 'Thievul', + 'gossifleur': 'Gossifleur', + 'eldegoss': 'Eldegoss', + 'wooloo': 'Wooloo', + 'dubwool': 'Dubwool', + 'chewtle': 'Chewtle', + 'drednaw': 'Drednaw', + 'yamper': 'Yamper', + 'boltund': 'Boltund', + 'rolycoly': 'Rolycoly', + 'carkol': 'Carkol', + 'coalossal': 'Coalossal', + 'applin': 'Applin', + 'flapple': 'Flapple', + 'appletun': 'Appletun', + 'silicobra': 'Silicobra', + 'sandaconda': 'Sandaconda', + 'cramorant': 'Cramorant', + 'arrokuda': 'Arrokuda', + 'barraskewda': 'Barraskewda', + 'toxel': 'Toxel', + 'toxtricity': 'Toxtricity', + 'sizzlipede': 'Sizzlipede', + 'centiskorch': 'Centiskorch', + 'clobbopus': 'Clobbopus', + 'grapploct': 'Grapploct', + 'sinistea': 'Sinistea', + 'polteageist': 'Polteageist', + 'hatenna': 'Hatenna', + 'hattrem': 'Hattrem', + 'hatterene': 'Hatterene', + 'impidimp': 'Impidimp', + 'morgrem': 'Morgrem', + 'grimmsnarl': 'Grimmsnarl', + 'obstagoon': 'Obstagoon', + 'perrserker': 'Perrserker', + 'cursola': 'Cursola', + 'sirfetchd': 'Sirfetch\'d', + 'mr_rime': 'Mr. Rime', + 'runerigus': 'Runerigus', + 'milcery': 'Milcery', + 'alcremie': 'Alcremie', + 'falinks': 'Falinks', + 'pincurchin': 'Pincurchin', + 'snom': 'Snom', + 'frosmoth': 'Frosmoth', + 'stonjourner': 'Stonjourner', + 'eiscue': 'Eiscue', + 'indeedee': 'Indeedee', + 'morpeko': 'Morpeko', + 'cufant': 'Cufant', + 'copperajah': 'Copperajah', + 'dracozolt': 'Dracozolt', + 'arctozolt': 'Arctozolt', + 'dracovish': 'Dracovish', + 'arctovish': 'Arctovish', + 'duraludon': 'Duraludon', + 'dreepy': 'Dreepy', + 'drakloak': 'Drakloak', + 'dragapult': 'Dragapult', + 'zacian': 'Zacian', + 'zamazenta': 'Zamazenta', + 'eternatus': 'Eternatus', + 'kubfu': 'Kubfu', + 'urshifu': 'Urshifu', + 'zarude': 'Zarude', + 'regieleki': 'Regieleki', + 'regidrago': 'Regidrago', + 'glastrier': 'Glastrier', + 'spectrier': 'Spectrier', + 'calyrex': 'Calyrex', + 'wyrdeer': 'Wyrdeer', + 'kleavor': 'Kleavor', + 'ursaluna': 'Ursaluna', + 'basculegion': 'Basculegion', + 'sneasler': 'Sneasler', + 'overqwil': 'Overqwil', + 'enamorus': 'Enamorus', + 'sprigatito': 'Sprigatito', + 'floragato': 'Floragato', + 'meowscarada': 'Meowscarada', + 'fuecoco': 'Fuecoco', + 'crocalor': 'Crocalor', + 'skeledirge': 'Skeledirge', + 'quaxly': 'Quaxly', + 'quaxwell': 'Quaxwell', + 'quaquaval': 'Quaquaval', + 'lechonk': 'Lechonk', + 'oinkologne': 'Oinkologne', + 'tarountula': 'Tarountula', + 'spidops': 'Spidops', + 'nymble': 'Nymble', + 'lokix': 'Lokix', + 'pawmi': 'Pawmi', + 'pawmo': 'Pawmo', + 'pawmot': 'Pawmot', + 'tandemaus': 'Tandemaus', + 'maushold': 'Maushold', + 'fidough': 'Fidough', + 'dachsbun': 'Dachsbun', + 'smoliv': 'Smoliv', + 'dolliv': 'Dolliv', + 'arboliva': 'Arboliva', + 'squawkabilly': 'Squawkabilly', + 'nacli': 'Nacli', + 'naclstack': 'Naclstack', + 'garganacl': 'Garganacl', + 'charcadet': 'Charcadet', + 'armarouge': 'Armarouge', + 'ceruledge': 'Ceruledge', + 'tadbulb': 'Tadbulb', + 'bellibolt': 'Bellibolt', + 'wattrel': 'Wattrel', + 'kilowattrel': 'Kilowattrel', + 'maschiff': 'Maschiff', + 'mabosstiff': 'Mabosstiff', + 'shroodle': 'Shroodle', + 'grafaiai': 'Grafaiai', + 'bramblin': 'Bramblin', + 'brambleghast': 'Brambleghast', + 'toedscool': 'Toedscool', + 'toedscruel': 'Toedscruel', + 'klawf': 'Klawf', + 'capsakid': 'Capsakid', + 'scovillain': 'Scovillain', + 'rellor': 'Rellor', + 'rabsca': 'Rabsca', + 'flittle': 'Flittle', + 'espathra': 'Espathra', + 'tinkatink': 'Tinkatink', + 'tinkatuff': 'Tinkatuff', + 'tinkaton': 'Tinkaton', + 'wiglett': 'Wiglett', + 'wugtrio': 'Wugtrio', + 'bombirdier': 'Bombirdier', + 'finizen': 'Finizen', + 'palafin': 'Palafin', + 'varoom': 'Varoom', + 'revavroom': 'Revavroom', + 'cyclizar': 'Cyclizar', + 'orthworm': 'Orthworm', + 'glimmet': 'Glimmet', + 'glimmora': 'Glimmora', + 'greavard': 'Greavard', + 'houndstone': 'Houndstone', + 'flamigo': 'Flamigo', + 'cetoddle': 'Cetoddle', + 'cetitan': 'Cetitan', + 'veluza': 'Veluza', + 'dondozo': 'Dondozo', + 'tatsugiri': 'Tatsugiri', + 'annihilape': 'Annihilape', + 'clodsire': 'Clodsire', + 'farigiraf': 'Farigiraf', + 'dudunsparce': 'Dudunsparce', + 'kingambit': 'Kingambit', + 'great_tusk': 'Grandizanne', + 'scream_tail': 'Codaurlante', + 'brute_bonnet': 'Fungofurioso', + 'flutter_mane': 'Crinealato', + 'slither_wing': 'Alirasenti', + 'sandy_shocks': 'Peldisabbia', + 'iron_treads': 'Solcoferreo', + 'iron_bundle': 'Saccoferreo', + 'iron_hands': 'Manoferrea', + 'iron_jugulis': 'Colloferreo', + 'iron_moth': 'Falenaferrea', + 'iron_thorns': 'Spineferree', + 'frigibax': 'Frigibax', + 'arctibax': 'Arctibax', + 'baxcalibur': 'Baxcalibur', + 'gimmighoul': 'Gimmighoul', + 'gholdengo': 'Gholdengo', + 'wo_chien': 'Wo-Chien', + 'chien_pao': 'Chien-Pao', + 'ting_lu': 'Ting-Lu', + 'chi_yu': 'Chi-Yu', + 'roaring_moon': 'Lunaruggente', + 'iron_valiant': 'Eroeferreo', + 'koraidon': 'Koraidon', + 'miraidon': 'Miraidon', + 'walking_wake': 'Acquecrespe', + 'iron_leaves': 'Fogliaferrea', + 'dipplin': 'Dipplin', + 'poltchageist': 'Poltchageist', + 'sinistcha': 'Sinistcha', + 'okidogi': 'Okidogi', + 'munkidori': 'Munkidori', + 'fezandipiti': 'Fezandipiti', + 'ogerpon': 'Ogerpon', + 'archaludon': 'Archaludon', + 'hydrapple': 'Hydrapple', + 'gouging_fire': 'Vampeaguzze', + 'raging_bolt': 'Furiatonante', + 'iron_boulder': 'Massoferreo', + 'iron_crown': 'Capoferreo', + 'terapagos': 'Terapagos', + 'pecharunt': 'Pecharunt', + 'alola_rattata': 'Rattata', + 'alola_raticate': 'Raticate', + 'alola_raichu': 'Raichu', + 'alola_sandshrew': 'Sandshrew', + 'alola_sandslash': 'Sandslash', + 'alola_vulpix': 'Vulpix', + 'alola_ninetales': 'Ninetales', + 'alola_diglett': 'Diglett', + 'alola_dugtrio': 'Dugtrio', + 'alola_meowth': 'Meowth', + 'alola_persian': 'Persian', + 'alola_geodude': 'Geodude', + 'alola_graveler': 'Graveler', + 'alola_golem': 'Golem', + 'alola_grimer': 'Grimer', + 'alola_muk': 'Muk', + 'alola_exeggutor': 'Exeggutor', + 'alola_marowak': 'Marowak', + 'eternal_floette': 'Floette', + 'galar_meowth': 'Meowth', + 'galar_ponyta': 'Ponyta', + 'galar_rapidash': 'Rapidash', + 'galar_slowpoke': 'Slowpoke', + 'galar_slowbro': 'Slowbro', + 'galar_farfetchd': 'Farfetch\'d', + 'galar_weezing': 'Weezing', + 'galar_mr_mime': 'Mr. Mime', + 'galar_articuno': 'Articuno', + 'galar_zapdos': 'Zapdos', + 'galar_moltres': 'Moltres', + 'galar_slowking': 'Slowking', + 'galar_corsola': 'Corsola', + 'galar_zigzagoon': 'Zigzagoon', + 'galar_linoone': 'Linoone', + 'galar_darumaka': 'Darumaka', + 'galar_darmanitan': 'Darmanitan', + 'galar_yamask': 'Yamask', + 'galar_stunfisk': 'Stunfisk', + 'hisui_growlithe': 'Growlithe', + 'hisui_arcanine': 'Arcanine', + 'hisui_voltorb': 'Voltorb', + 'hisui_electrode': 'Electrode', + 'hisui_typhlosion': 'Typhlosion', + 'hisui_qwilfish': 'Qwilfish', + 'hisui_sneasel': 'Sneasel', + 'hisui_samurott': 'Samurott', + 'hisui_lilligant': 'Lilligant', + 'hisui_zorua': 'Zorua', + 'hisui_zoroark': 'Zoroark', + 'hisui_braviary': 'Braviary', + 'hisui_sliggoo': 'Sliggoo', + 'hisui_goodra': 'Goodra', + 'hisui_avalugg': 'Avalugg', + 'hisui_decidueye': 'Decidueye', + 'paldea_tauros': 'Tauros', + 'paldea_wooper': 'Wooper', + 'bloodmoon_ursaluna': 'Ursaluna', } as const; diff --git a/src/locales/it/splash-messages.ts b/src/locales/it/splash-messages.ts index 3bddc68f0b5..0a344b0d03d 100644 --- a/src/locales/it/splash-messages.ts +++ b/src/locales/it/splash-messages.ts @@ -1,37 +1,37 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const splashMessages: SimpleTranslationEntries = { - "battlesWon": "Battaglie Vinte!", - "joinTheDiscord": "Entra nel Discord!", - "infiniteLevels": "Livelli Infiniti!", - "everythingStacks": "Tutto si impila!", - "optionalSaveScumming": "Salvataggio Facoltativo!", - "biomes": "35 Biomi!", - "openSource": "Open Source!", - "playWithSpeed": "Gioca con il 5x di Velocità!", - "liveBugTesting": "Test dei Bug in Tempo Reale!", - "heavyInfluence": "Influenzato da RoR2!", - "pokemonRiskAndPokemonRain": "Pokémon Risk e Pokémon Rain!", - "nowWithMoreSalt": "Adesso con il 33% di sale in più!", - "infiniteFusionAtHome": "Fusioni Infinite a Casa!", - "brokenEggMoves": "Mosse delle Uova Rotte!", - "magnificent": "Magnifico!", - "mubstitute": "Mubstitute!", - "thatsCrazy": "È Pazzesco!", - "oranceJuice": "Succo d\'Arancia!", - "questionableBalancing": "Bilanciamento Discutibile!", - "coolShaders": "Shader fantastici!", - "aiFree": "Senza Intelligenza Artificiale!", - "suddenDifficultySpikes": "Picchi di Difficoltà Improvvisi!", - "basedOnAnUnfinishedFlashGame": "Basato su un Gioco Flash Incompiuto!", - "moreAddictiveThanIntended": "Crea Dipendeza più del Dovuto!", - "mostlyConsistentSeeds": "Seeds Consistenti!", - "achievementPointsDontDoAnything": "I Punti Obiettivo non Fanno Nulla!", - "youDoNotStartAtLevel": "Non Cominci dal Livello 2000!", - "dontTalkAboutTheManaphyEggIncident": "Non Parlare dell'Incidente dell'Uovo di Manaphy!", - "alsoTryPokengine": "Prova anche Pokéngine!", - "alsoTryEmeraldRogue": "Prova anche Emerald Rogue!", - "alsoTryRadicalRed": "Prova anche Radical Red!", - "eeveeExpo": "Eevee Expo!", - "ynoproject": "YNOproject!", -} as const; \ No newline at end of file + 'battlesWon': 'Battaglie Vinte!', + 'joinTheDiscord': 'Entra nel Discord!', + 'infiniteLevels': 'Livelli Infiniti!', + 'everythingStacks': 'Tutto si impila!', + 'optionalSaveScumming': 'Salvataggio Facoltativo!', + 'biomes': '35 Biomi!', + 'openSource': 'Open Source!', + 'playWithSpeed': 'Gioca con il 5x di Velocità!', + 'liveBugTesting': 'Test dei Bug in Tempo Reale!', + 'heavyInfluence': 'Influenzato da RoR2!', + 'pokemonRiskAndPokemonRain': 'Pokémon Risk e Pokémon Rain!', + 'nowWithMoreSalt': 'Adesso con il 33% di sale in più!', + 'infiniteFusionAtHome': 'Fusioni Infinite a Casa!', + 'brokenEggMoves': 'Mosse delle Uova Rotte!', + 'magnificent': 'Magnifico!', + 'mubstitute': 'Mubstitute!', + 'thatsCrazy': 'È Pazzesco!', + 'oranceJuice': 'Succo d\'Arancia!', + 'questionableBalancing': 'Bilanciamento Discutibile!', + 'coolShaders': 'Shader fantastici!', + 'aiFree': 'Senza Intelligenza Artificiale!', + 'suddenDifficultySpikes': 'Picchi di Difficoltà Improvvisi!', + 'basedOnAnUnfinishedFlashGame': 'Basato su un Gioco Flash Incompiuto!', + 'moreAddictiveThanIntended': 'Crea Dipendeza più del Dovuto!', + 'mostlyConsistentSeeds': 'Seeds Consistenti!', + 'achievementPointsDontDoAnything': 'I Punti Obiettivo non Fanno Nulla!', + 'youDoNotStartAtLevel': 'Non Cominci dal Livello 2000!', + 'dontTalkAboutTheManaphyEggIncident': 'Non Parlare dell\'Incidente dell\'Uovo di Manaphy!', + 'alsoTryPokengine': 'Prova anche Pokéngine!', + 'alsoTryEmeraldRogue': 'Prova anche Emerald Rogue!', + 'alsoTryRadicalRed': 'Prova anche Radical Red!', + 'eeveeExpo': 'Eevee Expo!', + 'ynoproject': 'YNOproject!', +} as const; diff --git a/src/locales/it/starter-select-ui-handler.ts b/src/locales/it/starter-select-ui-handler.ts index f2b44c37297..4e2f7ccc1f0 100644 --- a/src/locales/it/starter-select-ui-handler.ts +++ b/src/locales/it/starter-select-ui-handler.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,39 +6,39 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const starterSelectUiHandler: SimpleTranslationEntries = { - "confirmStartTeam":'Vuoi iniziare con questi Pokémon?', - "gen1": "I", - "gen2": "II", - "gen3": "III", - "gen4": "IV", - "gen5": "V", - "gen6": "VI", - "gen7": "VII", - "gen8": "VIII", - "gen9": "IX", - "growthRate": "Vel. Crescita:", - "ability": "Abilità:", - "passive": "Passiva:", - "nature": "Natura:", - "eggMoves": 'Mosse delle uova', - "start": "Inizia", - "addToParty": "Aggiungi al Gruppo", - "toggleIVs": 'Vedi/Nascondi IV', - "manageMoves": 'Gestisci Mosse', - "useCandies": 'Usa Caramelle', - "selectMoveSwapOut": "Seleziona una mossa da scambiare.", - "selectMoveSwapWith": "Seleziona una mossa da scambiare con", - "unlockPassive": "Sblocca Passiva", - "reduceCost": "Riduci Costo", - "cycleShiny": "R: Alterna Shiny", - "cycleForm": 'F: Alterna Forma', - "cycleGender": 'G: Alterna Sesso', - "cycleAbility": 'E: Alterna Abilità', - "cycleNature": 'N: Alterna Natura', - "cycleVariant": 'V: Alterna Variante', - "enablePassive": "Attiva Passiva", - "disablePassive": "Disattiva Passiva", - "locked": "Bloccato", - "disabled": "Disabilitato", - "uncaught": "Non Catturato" -} \ No newline at end of file + 'confirmStartTeam':'Vuoi iniziare con questi Pokémon?', + 'gen1': 'I', + 'gen2': 'II', + 'gen3': 'III', + 'gen4': 'IV', + 'gen5': 'V', + 'gen6': 'VI', + 'gen7': 'VII', + 'gen8': 'VIII', + 'gen9': 'IX', + 'growthRate': 'Vel. Crescita:', + 'ability': 'Abilità:', + 'passive': 'Passiva:', + 'nature': 'Natura:', + 'eggMoves': 'Mosse delle uova', + 'start': 'Inizia', + 'addToParty': 'Aggiungi al Gruppo', + 'toggleIVs': 'Vedi/Nascondi IV', + 'manageMoves': 'Gestisci Mosse', + 'useCandies': 'Usa Caramelle', + 'selectMoveSwapOut': 'Seleziona una mossa da scambiare.', + 'selectMoveSwapWith': 'Seleziona una mossa da scambiare con', + 'unlockPassive': 'Sblocca Passiva', + 'reduceCost': 'Riduci Costo', + 'cycleShiny': 'R: Alterna Shiny', + 'cycleForm': 'F: Alterna Forma', + 'cycleGender': 'G: Alterna Sesso', + 'cycleAbility': 'E: Alterna Abilità', + 'cycleNature': 'N: Alterna Natura', + 'cycleVariant': 'V: Alterna Variante', + 'enablePassive': 'Attiva Passiva', + 'disablePassive': 'Disattiva Passiva', + 'locked': 'Bloccato', + 'disabled': 'Disabilitato', + 'uncaught': 'Non Catturato' +}; diff --git a/src/locales/it/trainers.ts b/src/locales/it/trainers.ts index 6fcd157a0f1..55655c44b13 100644 --- a/src/locales/it/trainers.ts +++ b/src/locales/it/trainers.ts @@ -1,244 +1,244 @@ -import {SimpleTranslationEntries} from "#app/plugins/i18n"; +import {SimpleTranslationEntries} from '#app/plugins/i18n'; // Titles of special trainers like gym leaders, elite four, and the champion export const titles: SimpleTranslationEntries = { - "elite_four": "Superquattro", - "gym_leader": "Capopalestra", - "gym_leader_female": "Capopalestra", - "champion": "Campione", - "rival": "Rivale", - "professor": "Professore", - "frontier_brain": "Asso Lotta", - // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. + 'elite_four': 'Superquattro', + 'gym_leader': 'Capopalestra', + 'gym_leader_female': 'Capopalestra', + 'champion': 'Campione', + 'rival': 'Rivale', + 'professor': 'Professore', + 'frontier_brain': 'Asso Lotta', + // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. } as const; // Titles of trainers like "Youngster" or "Lass" export const trainerClasses: SimpleTranslationEntries = { - "ace_trainer": "Ace Trainer", - "ace_trainer_female": "Ace Trainer", - "ace_duo": "Ace Duo", - "artist": "Artist", - "artist_female": "Artist", - "backers": "Backers", - "backpacker": "Backpacker", - "backpacker_female": "Backpacker", - "backpackers": "Backpackers", - "baker": "Baker", - "battle_girl": "Battle Girl", - "beauty": "Beauty", - "beginners": "Beginners", - "biker": "Biker", - "black_belt": "Black Belt", - "breeder": "Breeder", - "breeder_female": "Breeder", - "breeders": "Breeders", - "clerk": "Clerk", - "clerk_female": "Clerk", - "colleagues": "Colleagues", - "crush_kin": "Crush Kin", - "cyclist": "Cyclist", - "cyclist_female": "Cyclist", - "cyclists": "Cyclists", - "dancer": "Dancer", - "dancer_female": "Dancer", - "depot_agent": "Depot Agent", - "doctor": "Doctor", - "doctor_female": "Doctor", - "fisherman": "Fisherman", - "fisherman_female": "Fisherman", - "gentleman": "Gentleman", - "guitarist": "Guitarist", - "guitarist_female": "Guitarist", - "harlequin": "Harlequin", - "hiker": "Hiker", - "hooligans": "Hooligans", - "hoopster": "Hoopster", - "infielder": "Infielder", - "janitor": "Janitor", - "lady": "Lady", - "lass": "Lass", - "linebacker": "Linebacker", - "maid": "Maid", - "madame": "Madame", - "medical_team": "Medical Team", - "musician": "Musician", - "hex_maniac": "Hex Maniac", - "nurse": "Nurse", - "nursery_aide": "Nursery Aide", - "officer": "Officer", - "parasol_lady": "Parasol Lady", - "pilot": "Pilot", - "pokéfan": "Poké Fan", - "pokéfan_female": "Poké Fan", - "pokéfan_family": "Poké Fan Family", - "preschooler": "Preschooler", - "preschooler_female": "Preschooler", - "preschoolers": "Preschoolers", - "psychic": "Psychic", - "psychic_female": "Psychic", - "psychics": "Psychics", - "pokémon_ranger": "Pokémon Ranger", - "pokémon_ranger_female": "Pokémon Ranger", - "pokémon_rangers": "Pokémon Ranger", - "ranger": "Ranger", - "restaurant_staff": "Restaurant Staff", - "rich": "Rich", - "rich_female": "Rich", - "rich_boy": "Rich Boy", - "rich_couple": "Rich Couple", - "rich_kid": "Rich Kid", - "rich_kid_female": "Rich Kid", - "rich_kids": "Rich Kids", - "roughneck": "Roughneck", - "scientist": "Scientist", - "scientist_female": "Scientist", - "scientists": "Scientists", - "smasher": "Smasher", - "snow_worker": "Snow Worker", - "snow_worker_female": "Snow Worker", - "striker": "Striker", - "school_kid": "School Kid", - "school_kid_female": "School Kid", - "school_kids": "School Kids", - "swimmer": "Swimmer", - "swimmer_female": "Swimmer", - "swimmers": "Swimmers", - "twins": "Twins", - "veteran": "Veteran", - "veteran_female": "Veteran", - "veteran_duo": "Veteran Duo", - "waiter": "Waiter", - "waitress": "Waitress", - "worker": "Worker", - "worker_female": "Worker", - "workers": "Workers", - "youngster": "Youngster" + 'ace_trainer': 'Ace Trainer', + 'ace_trainer_female': 'Ace Trainer', + 'ace_duo': 'Ace Duo', + 'artist': 'Artist', + 'artist_female': 'Artist', + 'backers': 'Backers', + 'backpacker': 'Backpacker', + 'backpacker_female': 'Backpacker', + 'backpackers': 'Backpackers', + 'baker': 'Baker', + 'battle_girl': 'Battle Girl', + 'beauty': 'Beauty', + 'beginners': 'Beginners', + 'biker': 'Biker', + 'black_belt': 'Black Belt', + 'breeder': 'Breeder', + 'breeder_female': 'Breeder', + 'breeders': 'Breeders', + 'clerk': 'Clerk', + 'clerk_female': 'Clerk', + 'colleagues': 'Colleagues', + 'crush_kin': 'Crush Kin', + 'cyclist': 'Cyclist', + 'cyclist_female': 'Cyclist', + 'cyclists': 'Cyclists', + 'dancer': 'Dancer', + 'dancer_female': 'Dancer', + 'depot_agent': 'Depot Agent', + 'doctor': 'Doctor', + 'doctor_female': 'Doctor', + 'fisherman': 'Fisherman', + 'fisherman_female': 'Fisherman', + 'gentleman': 'Gentleman', + 'guitarist': 'Guitarist', + 'guitarist_female': 'Guitarist', + 'harlequin': 'Harlequin', + 'hiker': 'Hiker', + 'hooligans': 'Hooligans', + 'hoopster': 'Hoopster', + 'infielder': 'Infielder', + 'janitor': 'Janitor', + 'lady': 'Lady', + 'lass': 'Lass', + 'linebacker': 'Linebacker', + 'maid': 'Maid', + 'madame': 'Madame', + 'medical_team': 'Medical Team', + 'musician': 'Musician', + 'hex_maniac': 'Hex Maniac', + 'nurse': 'Nurse', + 'nursery_aide': 'Nursery Aide', + 'officer': 'Officer', + 'parasol_lady': 'Parasol Lady', + 'pilot': 'Pilot', + 'pokéfan': 'Poké Fan', + 'pokéfan_female': 'Poké Fan', + 'pokéfan_family': 'Poké Fan Family', + 'preschooler': 'Preschooler', + 'preschooler_female': 'Preschooler', + 'preschoolers': 'Preschoolers', + 'psychic': 'Psychic', + 'psychic_female': 'Psychic', + 'psychics': 'Psychics', + 'pokémon_ranger': 'Pokémon Ranger', + 'pokémon_ranger_female': 'Pokémon Ranger', + 'pokémon_rangers': 'Pokémon Ranger', + 'ranger': 'Ranger', + 'restaurant_staff': 'Restaurant Staff', + 'rich': 'Rich', + 'rich_female': 'Rich', + 'rich_boy': 'Rich Boy', + 'rich_couple': 'Rich Couple', + 'rich_kid': 'Rich Kid', + 'rich_kid_female': 'Rich Kid', + 'rich_kids': 'Rich Kids', + 'roughneck': 'Roughneck', + 'scientist': 'Scientist', + 'scientist_female': 'Scientist', + 'scientists': 'Scientists', + 'smasher': 'Smasher', + 'snow_worker': 'Snow Worker', + 'snow_worker_female': 'Snow Worker', + 'striker': 'Striker', + 'school_kid': 'School Kid', + 'school_kid_female': 'School Kid', + 'school_kids': 'School Kids', + 'swimmer': 'Swimmer', + 'swimmer_female': 'Swimmer', + 'swimmers': 'Swimmers', + 'twins': 'Twins', + 'veteran': 'Veteran', + 'veteran_female': 'Veteran', + 'veteran_duo': 'Veteran Duo', + 'waiter': 'Waiter', + 'waitress': 'Waitress', + 'worker': 'Worker', + 'worker_female': 'Worker', + 'workers': 'Workers', + 'youngster': 'Youngster' } as const; // Names of special trainers like gym leaders, elite four, and the champion export const trainerNames: SimpleTranslationEntries = { - "brock": "Brock", - "misty": "Misty", - "lt_surge": "Lt Surge", - "erika": "Erika", - "janine": "Janine", - "sabrina": "Sabrina", - "blaine": "Blaine", - "giovanni": "Giovanni", - "falkner": "Falkner", - "bugsy": "Bugsy", - "whitney": "Whitney", - "morty": "Morty", - "chuck": "Chuck", - "jasmine": "Jasmine", - "pryce": "Pryce", - "clair": "Clair", - "roxanne": "Roxanne", - "brawly": "Brawly", - "wattson": "Wattson", - "flannery": "Flannery", - "norman": "Norman", - "winona": "Winona", - "tate": "Tate", - "liza": "Liza", - "juan": "Juan", - "roark": "Roark", - "gardenia": "Gardenia", - "maylene": "Maylene", - "crasher_wake": "Crasher Wake", - "fantina": "Fantina", - "byron": "Byron", - "candice": "Candice", - "volkner": "Volkner", - "cilan": "Cilan", - "chili": "Chili", - "cress": "Cress", - "cheren": "Cheren", - "lenora": "Lenora", - "roxie": "Roxie", - "burgh": "Burgh", - "elesa": "Elesa", - "clay": "Clay", - "skyla": "Skyla", - "brycen": "Brycen", - "drayden": "Drayden", - "marlon": "Marlon", - "viola": "Viola", - "grant": "Grant", - "korrina": "Korrina", - "ramos": "Ramos", - "clemont": "Clemont", - "valerie": "Valerie", - "olympia": "Olympia", - "wulfric": "Wulfric", - "milo": "Milo", - "nessa": "Nessa", - "kabu": "Kabu", - "bea": "Bea", - "allister": "Allister", - "opal": "Opal", - "bede": "Bede", - "gordie": "Gordie", - "melony": "Melony", - "piers": "Piers", - "marnie": "Marnie", - "raihan": "Raihan", - "katy": "Katy", - "brassius": "Brassius", - "iono": "Iono", - "kofu": "Kofu", - "larry": "Larry", - "ryme": "Ryme", - "tulip": "Tulip", - "grusha": "Grusha", - "lorelei": "Lorelei", - "bruno": "Bruno", - "agatha": "Agatha", - "lance": "Lance", - "will": "Will", - "koga": "Koga", - "karen": "Karen", - "sidney": "Sidney", - "phoebe": "Phoebe", - "glacia": "Glacia", - "drake": "Drake", - "aaron": "Aaron", - "bertha": "Bertha", - "flint": "Flint", - "lucian": "Lucian", - "shauntal": "Shauntal", - "marshal": "Marshal", - "grimsley": "Grimsley", - "caitlin": "Caitlin", - "malva": "Malva", - "siebold": "Siebold", - "wikstrom": "Wikstrom", - "drasna": "Drasna", - "hala": "Hala", - "molayne": "Molayne", - "olivia": "Olivia", - "acerola": "Acerola", - "kahili": "Kahili", - "rika": "Rika", - "poppy": "Poppy", - "hassel": "Hassel", - "crispin": "Crispin", - "amarys": "Amarys", - "lacey": "Lacey", - "drayton": "Drayton", - "blue": "Blue", - "red": "Red", - "steven": "Steven", - "wallace": "Wallace", - "cynthia": "Cynthia", - "alder": "Alder", - "iris": "Iris", - "diantha": "Diantha", - "hau": "Hau", - "geeta": "Geeta", - "nemona": "Nemona", - "kieran": "Kieran", - "leon": "Leon", - "rival": "Finn", - "rival_female": "Ivy", + 'brock': 'Brock', + 'misty': 'Misty', + 'lt_surge': 'Lt Surge', + 'erika': 'Erika', + 'janine': 'Janine', + 'sabrina': 'Sabrina', + 'blaine': 'Blaine', + 'giovanni': 'Giovanni', + 'falkner': 'Falkner', + 'bugsy': 'Bugsy', + 'whitney': 'Whitney', + 'morty': 'Morty', + 'chuck': 'Chuck', + 'jasmine': 'Jasmine', + 'pryce': 'Pryce', + 'clair': 'Clair', + 'roxanne': 'Roxanne', + 'brawly': 'Brawly', + 'wattson': 'Wattson', + 'flannery': 'Flannery', + 'norman': 'Norman', + 'winona': 'Winona', + 'tate': 'Tate', + 'liza': 'Liza', + 'juan': 'Juan', + 'roark': 'Roark', + 'gardenia': 'Gardenia', + 'maylene': 'Maylene', + 'crasher_wake': 'Crasher Wake', + 'fantina': 'Fantina', + 'byron': 'Byron', + 'candice': 'Candice', + 'volkner': 'Volkner', + 'cilan': 'Cilan', + 'chili': 'Chili', + 'cress': 'Cress', + 'cheren': 'Cheren', + 'lenora': 'Lenora', + 'roxie': 'Roxie', + 'burgh': 'Burgh', + 'elesa': 'Elesa', + 'clay': 'Clay', + 'skyla': 'Skyla', + 'brycen': 'Brycen', + 'drayden': 'Drayden', + 'marlon': 'Marlon', + 'viola': 'Viola', + 'grant': 'Grant', + 'korrina': 'Korrina', + 'ramos': 'Ramos', + 'clemont': 'Clemont', + 'valerie': 'Valerie', + 'olympia': 'Olympia', + 'wulfric': 'Wulfric', + 'milo': 'Milo', + 'nessa': 'Nessa', + 'kabu': 'Kabu', + 'bea': 'Bea', + 'allister': 'Allister', + 'opal': 'Opal', + 'bede': 'Bede', + 'gordie': 'Gordie', + 'melony': 'Melony', + 'piers': 'Piers', + 'marnie': 'Marnie', + 'raihan': 'Raihan', + 'katy': 'Katy', + 'brassius': 'Brassius', + 'iono': 'Iono', + 'kofu': 'Kofu', + 'larry': 'Larry', + 'ryme': 'Ryme', + 'tulip': 'Tulip', + 'grusha': 'Grusha', + 'lorelei': 'Lorelei', + 'bruno': 'Bruno', + 'agatha': 'Agatha', + 'lance': 'Lance', + 'will': 'Will', + 'koga': 'Koga', + 'karen': 'Karen', + 'sidney': 'Sidney', + 'phoebe': 'Phoebe', + 'glacia': 'Glacia', + 'drake': 'Drake', + 'aaron': 'Aaron', + 'bertha': 'Bertha', + 'flint': 'Flint', + 'lucian': 'Lucian', + 'shauntal': 'Shauntal', + 'marshal': 'Marshal', + 'grimsley': 'Grimsley', + 'caitlin': 'Caitlin', + 'malva': 'Malva', + 'siebold': 'Siebold', + 'wikstrom': 'Wikstrom', + 'drasna': 'Drasna', + 'hala': 'Hala', + 'molayne': 'Molayne', + 'olivia': 'Olivia', + 'acerola': 'Acerola', + 'kahili': 'Kahili', + 'rika': 'Rika', + 'poppy': 'Poppy', + 'hassel': 'Hassel', + 'crispin': 'Crispin', + 'amarys': 'Amarys', + 'lacey': 'Lacey', + 'drayton': 'Drayton', + 'blue': 'Blue', + 'red': 'Red', + 'steven': 'Steven', + 'wallace': 'Wallace', + 'cynthia': 'Cynthia', + 'alder': 'Alder', + 'iris': 'Iris', + 'diantha': 'Diantha', + 'hau': 'Hau', + 'geeta': 'Geeta', + 'nemona': 'Nemona', + 'kieran': 'Kieran', + 'leon': 'Leon', + 'rival': 'Finn', + 'rival_female': 'Ivy', } as const; diff --git a/src/locales/it/tutorial.ts b/src/locales/it/tutorial.ts index 898dcead8a4..51c24abf4b1 100644 --- a/src/locales/it/tutorial.ts +++ b/src/locales/it/tutorial.ts @@ -1,30 +1,30 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const tutorial: SimpleTranslationEntries = { - "intro": `Benvenuto in PokéRogue! Questo gioco si concentra sulle battaglie, con elementi roguelite. + 'intro': `Benvenuto in PokéRogue! Questo gioco si concentra sulle battaglie, con elementi roguelite. $Questo gioco non è monetizzato e non siamo proprietari di Pokemon e Assets presenti nel gioco. $Il gioco è work-in-progress ma giocabile al 100%.\nPer reportare eventuali bugs è possibile discuterne sul nostro Discord. $Se il game risulta 'lento', assicurati di aver abilitato l'Accelerazione Hardware nelle impostazioni del tuo Browser`, - "accessMenu": `Per accedere al menù, press M o Esc.\nDal menù puoi cambiare impostazioni, controllare la wiki e accedere a varie features.`, + 'accessMenu': 'Per accedere al menù, press M o Esc.\nDal menù puoi cambiare impostazioni, controllare la wiki e accedere a varie features.', - "menu": `Da questo menù puoi accedere alle impostazioni. + 'menu': `Da questo menù puoi accedere alle impostazioni. $Dalle impostazioni puoi cambiare velocità di gioco, stile di finestra e altre opzioni. $Ci sono varie funzionalità, controlla bene e non perderti nulla!`, - "starterSelect": `Da questa schermata puoi selezionare il tuo starter.\nQuesti sono i membri iniziali del tuo parti. + 'starterSelect': `Da questa schermata puoi selezionare il tuo starter.\nQuesti sono i membri iniziali del tuo parti. $Ogni starter ha un valore. Puoi avere fino a \n6 Pokèmon, avendo a disposizione un massimo di 10 punti. $Puoi anche selezionare Sesso, Abilità, e Forma a seconda delle\nvarianti che hai catturato o schiuso. $Le IVs di una specie sono le migliori rispetto a tutte quelle che hai\ncatturato o schiuso, quindi prova a catturarne il piu possibile!`, - "pokerus": `Giornalmente 3 Starter casuali disponibili avranno il bordo viola. + 'pokerus': `Giornalmente 3 Starter casuali disponibili avranno il bordo viola. $Se possiedi uno di questi starter,\nprova ad aggiungerlo al party. Ricorda di controllare le info!`, - "statChange": `I cambiamenti alle statistiche persistono fintanto che i tuoi pokèmon resteranno in campo. + 'statChange': `I cambiamenti alle statistiche persistono fintanto che i tuoi pokèmon resteranno in campo. $I tuoi pokemon verranno richiamati quando incontrerai un allenatore o al cambiamento di bioma. $Puoi anche vedere i cambiamenti alle statistiche in corso tenendo premuto C o Shift`, - "selectItem": `Dopo ogni battaglia avrai disponibili tre item.\nPotrai prenderne solo uno. + 'selectItem': `Dopo ogni battaglia avrai disponibili tre item.\nPotrai prenderne solo uno. $Questi spaziano tra consumabili, item tenuti da Pokèmon o con un effetto passivo permanente. $La maggior parte degli Item non Consumabili possono stackare in diversi modi. $Alcuni Item risulteranno disponibili solo se possono essere usati, come Item Evolutivi. @@ -33,10 +33,10 @@ export const tutorial: SimpleTranslationEntries = { $Puoi acquistare consumabili con le monete, progredendo saranno poi disponibili ulteriori oggetti. $Assicurati di fare un acquisto prima di selezionare un item casuale, poichè passerai subito alla lotta successiva.`, - "eggGacha": `Da questa schermata, puoi riscattare i tuoi vouchers in cambio di\nuova Pokèmon. + 'eggGacha': `Da questa schermata, puoi riscattare i tuoi vouchers in cambio di\nuova Pokèmon. $Le uova vanno schiuse e saranno sempre più vicine alla schiusura dopo\nogni battaglia. Le uova più rare impiegheranno più battaglie per la schiusura. $I Pokémon schiusi non verranno aggiunti alla tua squadra, saranno\naggiunti ai tuoi starters. $I Pokémon schiusi generalmente hanno IVs migliori rispetto ai\n Pokémon selvatici. $Alcuni Pokémon possono essere ottenuti solo tramite uova. $Ci sono 3 diversi macchinari con differenti\nbonus, scegli quello che preferisci!`, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/it/voucher.ts b/src/locales/it/voucher.ts index 7af569e88cb..2df0ccd7a9d 100644 --- a/src/locales/it/voucher.ts +++ b/src/locales/it/voucher.ts @@ -1,11 +1,11 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const voucher: SimpleTranslationEntries = { - "vouchers": "Vouchers", - "eggVoucher": "Egg Voucher", - "eggVoucherPlus": "Egg Voucher Plus", - "eggVoucherPremium": "Egg Voucher Premium", - "eggVoucherGold": "Egg Voucher Gold", - "locked": "Locked", - "defeatTrainer": "Defeat {{trainerName}}" -} as const; \ No newline at end of file + 'vouchers': 'Vouchers', + 'eggVoucher': 'Egg Voucher', + 'eggVoucherPlus': 'Egg Voucher Plus', + 'eggVoucherPremium': 'Egg Voucher Premium', + 'eggVoucherGold': 'Egg Voucher Gold', + 'locked': 'Locked', + 'defeatTrainer': 'Defeat {{trainerName}}' +} as const; diff --git a/src/locales/it/weather.ts b/src/locales/it/weather.ts index d5f0f440e1e..7736e5f6684 100644 --- a/src/locales/it/weather.ts +++ b/src/locales/it/weather.ts @@ -1,44 +1,44 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The weather namespace holds text displayed when weather is active during a battle */ export const weather: SimpleTranslationEntries = { - "sunnyStartMessage": "La luce solare è intensa!", - "sunnyLapseMessage": "La luce solare è forte.", - "sunnyClearMessage": "La luce solare si sta attenuando.", + 'sunnyStartMessage': 'La luce solare è intensa!', + 'sunnyLapseMessage': 'La luce solare è forte.', + 'sunnyClearMessage': 'La luce solare si sta attenuando.', - "rainStartMessage": "Ha iniziato a piovere!", - "rainLapseMessage": "La pioggia continua.", - "rainClearMessage": "Ha smesso di piovere.", + 'rainStartMessage': 'Ha iniziato a piovere!', + 'rainLapseMessage': 'La pioggia continua.', + 'rainClearMessage': 'Ha smesso di piovere.', - "sandstormStartMessage": "Si è scatenata una tempesta di sabbia!", - "sandstormLapseMessage": "La tempesta di sabbia infuria.", - "sandstormClearMessage": "La tempesta di sabbia si è placata.", - "sandstormDamageMessage": "{{pokemonPrefix}}{{pokemonName}} è stato colpito\ndalla tempesta di sabbia!", + 'sandstormStartMessage': 'Si è scatenata una tempesta di sabbia!', + 'sandstormLapseMessage': 'La tempesta di sabbia infuria.', + 'sandstormClearMessage': 'La tempesta di sabbia si è placata.', + 'sandstormDamageMessage': '{{pokemonPrefix}}{{pokemonName}} è stato colpito\ndalla tempesta di sabbia!', - "hailStartMessage": "Ha iniziato a grandinare!", - "hailLapseMessage": "La grandine continua a cadere.", - "hailClearMessage": "Ha smesso di grandinare.", - "hailDamageMessage": "{{pokemonPrefix}}{{pokemonName}} è stato colpito\ndalla grandine!", + 'hailStartMessage': 'Ha iniziato a grandinare!', + 'hailLapseMessage': 'La grandine continua a cadere.', + 'hailClearMessage': 'Ha smesso di grandinare.', + 'hailDamageMessage': '{{pokemonPrefix}}{{pokemonName}} è stato colpito\ndalla grandine!', - "snowStartMessage": "Ha iniziato a nevicare!", - "snowLapseMessage": "La neve sta continuando a cadere.", - "snowClearMessage": "Ha smesso di nevicare!.", + 'snowStartMessage': 'Ha iniziato a nevicare!', + 'snowLapseMessage': 'La neve sta continuando a cadere.', + 'snowClearMessage': 'Ha smesso di nevicare!.', - "fogStartMessage": "È emersa una fitta nebbia!", - "fogLapseMessage": "La nebbia continua.", - "fogClearMessage": "La nebbia è scomparsa.", + 'fogStartMessage': 'È emersa una fitta nebbia!', + 'fogLapseMessage': 'La nebbia continua.', + 'fogClearMessage': 'La nebbia è scomparsa.', - "heavyRainStartMessage": "Ha iniziato a piovere forte!", - "heavyRainLapseMessage": "La pioggia battente continua.", - "heavyRainClearMessage": "La pioggia battente è cessata.", + 'heavyRainStartMessage': 'Ha iniziato a piovere forte!', + 'heavyRainLapseMessage': 'La pioggia battente continua.', + 'heavyRainClearMessage': 'La pioggia battente è cessata.', - "harshSunStartMessage": "La luce solare è molto intensa!", - "harshSunLapseMessage": "La luce solare è estremamente calda.", - "harshSunClearMessage": "La luce solare si sta attenuando.", + 'harshSunStartMessage': 'La luce solare è molto intensa!', + 'harshSunLapseMessage': 'La luce solare è estremamente calda.', + 'harshSunClearMessage': 'La luce solare si sta attenuando.', - "strongWindsStartMessage": "È apparsa una corrente d'aria misteriosa!", - "strongWindsLapseMessage": "La corrente d'aria soffia intensamente.", - "strongWindsClearMessage": "La corrente d'aria è cessata." -} \ No newline at end of file + 'strongWindsStartMessage': 'È apparsa una corrente d\'aria misteriosa!', + 'strongWindsLapseMessage': 'La corrente d\'aria soffia intensamente.', + 'strongWindsClearMessage': 'La corrente d\'aria è cessata.' +}; diff --git a/src/locales/pt_BR/ability-trigger.ts b/src/locales/pt_BR/ability-trigger.ts index f539af8373a..2429d59580b 100644 --- a/src/locales/pt_BR/ability-trigger.ts +++ b/src/locales/pt_BR/ability-trigger.ts @@ -1,5 +1,5 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const abilityTriggers: SimpleTranslationEntries = { - 'blockRecoilDamage' : `{{abilityName}} de {{pokemonName}}\nprotegeu-o do dano de recuo!`, -} as const; \ No newline at end of file + 'blockRecoilDamage' : '{{abilityName}} de {{pokemonName}}\nprotegeu-o do dano de recuo!', +} as const; diff --git a/src/locales/pt_BR/ability.ts b/src/locales/pt_BR/ability.ts index 060a8b7611e..74c026bb0cd 100644 --- a/src/locales/pt_BR/ability.ts +++ b/src/locales/pt_BR/ability.ts @@ -1,1241 +1,1241 @@ -import { AbilityTranslationEntries } from "#app/plugins/i18n.js"; +import { AbilityTranslationEntries } from '#app/plugins/i18n.js'; export const ability: AbilityTranslationEntries = { stench: { - name: "Stench", - description: "Liberando um forte odor enquanto ataca, este Pokémon pode fazer o alvo hesitar.", + name: 'Stench', + description: 'Liberando um forte odor enquanto ataca, este Pokémon pode fazer o alvo hesitar.', }, drizzle: { - name: "Drizzle", - description: "O Pokémon faz chover ao entrar em batalha.", + name: 'Drizzle', + description: 'O Pokémon faz chover ao entrar em batalha.', }, speedBoost: { - name: "Speed Boost", - description: "Seu atributo de Velocidade é aumentado a cada turno.", + name: 'Speed Boost', + description: 'Seu atributo de Velocidade é aumentado a cada turno.', }, battleArmor: { - name: "Battle Armor", - description: "Uma forte armadura protege o Pokémon de golpes críticos.", + name: 'Battle Armor', + description: 'Uma forte armadura protege o Pokémon de golpes críticos.', }, sturdy: { - name: "Sturdy", - description: "Impede que seja nocauteado com apenas um golpe, se estiver com seus PS ao máximo. Também evita que movimentos de golpes fatais o derrubem.", + name: 'Sturdy', + description: 'Impede que seja nocauteado com apenas um golpe, se estiver com seus PS ao máximo. Também evita que movimentos de golpes fatais o derrubem.', }, damp: { - name: "Damp", - description: "Previne o uso de movimentos explosivos, como a Autodestruição, aumentando a umidade dos arredores.", + name: 'Damp', + description: 'Previne o uso de movimentos explosivos, como a Autodestruição, aumentando a umidade dos arredores.', }, limber: { - name: "Limber", - description: "Seu corpo maleável protege o Pokémon da paralisia.", + name: 'Limber', + description: 'Seu corpo maleável protege o Pokémon da paralisia.', }, sandVeil: { - name: "Sand Veil", - description: "Aumenta a evasão do Pokémon durante as tempestades de areia.", + name: 'Sand Veil', + description: 'Aumenta a evasão do Pokémon durante as tempestades de areia.', }, static: { - name: "Static", - description: "O Pokémon é carregado com energia estática, então entrar em contato com ele pode causar paralisia.", + name: 'Static', + description: 'O Pokémon é carregado com energia estática, então entrar em contato com ele pode causar paralisia.', }, voltAbsorb: { - name: "Volt Absorb", - description: "Se for atingido por um movimento do tipo Elétrico, ele restaura seus PS ao invés de receber dano.", + name: 'Volt Absorb', + description: 'Se for atingido por um movimento do tipo Elétrico, ele restaura seus PS ao invés de receber dano.', }, waterAbsorb: { - name: "Water Absorb", - description: "Se for atingido por um movimento do tipo Água, ele restaura seus PS ao invés de receber dano.", + name: 'Water Absorb', + description: 'Se for atingido por um movimento do tipo Água, ele restaura seus PS ao invés de receber dano.', }, oblivious: { - name: "Oblivious", - description: "Sua indiferença impede que o Pokémon fique apaixonado ou seja provocado por outro Pokémon.", + name: 'Oblivious', + description: 'Sua indiferença impede que o Pokémon fique apaixonado ou seja provocado por outro Pokémon.', }, cloudNine: { - name: "Cloud Nine", - description: "Anula todos os efeitos climáticos na batalha.", + name: 'Cloud Nine', + description: 'Anula todos os efeitos climáticos na batalha.', }, compoundEyes: { - name: "Compound Eyes", - description: "O olho preciso do Pokémon aumenta sua precisão.", + name: 'Compound Eyes', + description: 'O olho preciso do Pokémon aumenta sua precisão.', }, insomnia: { - name: "Insomnia", - description: "Este Pokémon está sofrendo com insônia e não pode adormecer.", + name: 'Insomnia', + description: 'Este Pokémon está sofrendo com insônia e não pode adormecer.', }, colorChange: { - name: "Color Change", - description: "Este Pokémon se torna do tipo do último ataque que sofreu.", + name: 'Color Change', + description: 'Este Pokémon se torna do tipo do último ataque que sofreu.', }, immunity: { - name: "Immunity", - description: "O sistema imunológico deste Pokémon impede que ele seja envenenado.", + name: 'Immunity', + description: 'O sistema imunológico deste Pokémon impede que ele seja envenenado.', }, flashFire: { - name: "Flash Fire", - description: "Fortalece movimentos do tipo Fogo quando atingido por um.", + name: 'Flash Fire', + description: 'Fortalece movimentos do tipo Fogo quando atingido por um.', }, shieldDust: { - name: "Shield Dust", - description: "A poeira desse Pokémon bloqueia efeitos adicionais dos ataques recebidos.", + name: 'Shield Dust', + description: 'A poeira desse Pokémon bloqueia efeitos adicionais dos ataques recebidos.', }, ownTempo: { - name: "Own Tempo", - description: "Este Pokémon tem seu próprio ritmo, que o impede de ficar confuso.", + name: 'Own Tempo', + description: 'Este Pokémon tem seu próprio ritmo, que o impede de ficar confuso.', }, suctionCups: { - name: "Suction Cups", - description: "Este Pokémon usa sua ventosas para fixar-se no lugar, negando todos os movimentos e itens que o obriguem a recuar.", + name: 'Suction Cups', + description: 'Este Pokémon usa sua ventosas para fixar-se no lugar, negando todos os movimentos e itens que o obriguem a recuar.', }, intimidate: { - name: "Intimidate", - description: "Quando entra em batalha, este Pokémon intimida o Pokémon adversário, diminuindo seu Ataque.", + name: 'Intimidate', + description: 'Quando entra em batalha, este Pokémon intimida o Pokémon adversário, diminuindo seu Ataque.', }, shadowTag: { - name: "Shadow Tag", - description: "Este Pokémon pisa na sombra do Pokémon adversário, impedindo que ele escape da batalha.", + name: 'Shadow Tag', + description: 'Este Pokémon pisa na sombra do Pokémon adversário, impedindo que ele escape da batalha.', }, roughSkin: { - name: "Rough Skin", - description: "Quando recebe um ataque direto, usa sua pele áspera para infligir dano ao Pokémon atacante.", + name: 'Rough Skin', + description: 'Quando recebe um ataque direto, usa sua pele áspera para infligir dano ao Pokémon atacante.', }, wonderGuard: { - name: "Wonder Guard", - description: "Devido seu misterioso poder, apenas movimentos supereficazes acertam esse Pokémon.", + name: 'Wonder Guard', + description: 'Devido seu misterioso poder, apenas movimentos supereficazes acertam esse Pokémon.', }, levitate: { - name: "Levitate", - description: "Através da levitação esse Pokémon se torna completamente imune a movimentos do tipo Terra.", + name: 'Levitate', + description: 'Através da levitação esse Pokémon se torna completamente imune a movimentos do tipo Terra.', }, effectSpore: { - name: "Effect Spore", - description: "Contato direto com o Pokémon pode infligir paralisia, sono ou envenenamento ao atacante.", + name: 'Effect Spore', + description: 'Contato direto com o Pokémon pode infligir paralisia, sono ou envenenamento ao atacante.', }, synchronize: { - name: "Synchronize", - description: "O atacante sofrerá a mesma mudança de estado se causar queima, envenenamento ou paralisia ao Pokémon.", + name: 'Synchronize', + description: 'O atacante sofrerá a mesma mudança de estado se causar queima, envenenamento ou paralisia ao Pokémon.', }, clearBody: { - name: "Clear Body", - description: "Previne que Habilidades e movimentos de outros Pokémon diminuam os atributos deste Pokémon.", + name: 'Clear Body', + description: 'Previne que Habilidades e movimentos de outros Pokémon diminuam os atributos deste Pokémon.', }, naturalCure: { - name: "Natural Cure", - description: "Quando este Pokémon recua, todas mudanças de estado são curadas.", + name: 'Natural Cure', + description: 'Quando este Pokémon recua, todas mudanças de estado são curadas.', }, lightningRod: { - name: "Lightning Rod", - description: "O Pokémon absorve todos os movimentos do tipo Elétrico e, ao invés de sofrer dano, aumenta seu Ataque Esp.", + name: 'Lightning Rod', + description: 'O Pokémon absorve todos os movimentos do tipo Elétrico e, ao invés de sofrer dano, aumenta seu Ataque Esp.', }, sereneGrace: { - name: "Serene Grace", - description: "Aumenta a probabilidade de ocorrerem efeitos adicionais ao atacar.", + name: 'Serene Grace', + description: 'Aumenta a probabilidade de ocorrerem efeitos adicionais ao atacar.', }, swiftSwim: { - name: "Swift Swim", - description: "A Velocidade do Pokémon é aumentada quando chove.", + name: 'Swift Swim', + description: 'A Velocidade do Pokémon é aumentada quando chove.', }, chlorophyll: { - name: "Chlorophyll", - description: "A Velocidade do Pokémon é aumentada sob sol forte.", + name: 'Chlorophyll', + description: 'A Velocidade do Pokémon é aumentada sob sol forte.', }, illuminate: { - name: "Illuminate", - description: "Ilumina os arredores, aumentado a possibilidade de encontrar Pokémon selvagens.", + name: 'Illuminate', + description: 'Ilumina os arredores, aumentado a possibilidade de encontrar Pokémon selvagens.', }, trace: { - name: "Trace", - description: "Quando entra em batalha, o Pokémon copia a Habilidade de um Pokémon adversário.", + name: 'Trace', + description: 'Quando entra em batalha, o Pokémon copia a Habilidade de um Pokémon adversário.', }, hugePower: { - name: "Huge Power", - description: "Dobra o Ataque do Pokémon.", + name: 'Huge Power', + description: 'Dobra o Ataque do Pokémon.', }, poisonPoint: { - name: "Poison Point", - description: "Contato direto com o Pokémon pode envenenar o atacante.", + name: 'Poison Point', + description: 'Contato direto com o Pokémon pode envenenar o atacante.', }, innerFocus: { - name: "Inner Focus", - description: "O foco extraordinário do Pokémon o impede de hesitar.", + name: 'Inner Focus', + description: 'O foco extraordinário do Pokémon o impede de hesitar.', }, magmaArmor: { - name: "Magma Armor", - description: "O magma escaldante que cobre o Pokémon previne seu congelamento.", + name: 'Magma Armor', + description: 'O magma escaldante que cobre o Pokémon previne seu congelamento.', }, waterVeil: { - name: "Water Veil", - description: "O véu de água que cobre o Pokémon previne que ele seja queimado.", + name: 'Water Veil', + description: 'O véu de água que cobre o Pokémon previne que ele seja queimado.', }, magnetPull: { - name: "Magnet Pull", - description: "Impede que Pokémon do tipo Aço escapem através da utilização de sua força magnética.", + name: 'Magnet Pull', + description: 'Impede que Pokémon do tipo Aço escapem através da utilização de sua força magnética.', }, soundproof: { - name: "Soundproof", - description: "Antirruído dá ao Pokémon imunidade completa a todos movimentos baseados em som.", + name: 'Soundproof', + description: 'Antirruído dá ao Pokémon imunidade completa a todos movimentos baseados em som.', }, rainDish: { - name: "Rain Dish", - description: "O Pokémon recupera PS gradualmente na chuva.", + name: 'Rain Dish', + description: 'O Pokémon recupera PS gradualmente na chuva.', }, sandStream: { - name: "Sand Stream", - description: "Quando entra em batalha o Pokémon conjura uma tempestade de areia.", + name: 'Sand Stream', + description: 'Quando entra em batalha o Pokémon conjura uma tempestade de areia.', }, pressure: { - name: "Pressure", - description: "Pressionando o Pokémon adversário, ele aumenta o custo de PP para o adversário usar um movimento.", + name: 'Pressure', + description: 'Pressionando o Pokémon adversário, ele aumenta o custo de PP para o adversário usar um movimento.', }, thickFat: { - name: "Thick Fat", - description: "Movimentos dos tipos Fogo e Água têm seu dano reduzido pela metade devido à grossa camada de gordura que protege o Pokémon.", + name: 'Thick Fat', + description: 'Movimentos dos tipos Fogo e Água têm seu dano reduzido pela metade devido à grossa camada de gordura que protege o Pokémon.', }, earlyBird: { - name: "Early Bird", - description: "O Pokémon acorda duas vezes mais rápido que outros Pokémon.", + name: 'Early Bird', + description: 'O Pokémon acorda duas vezes mais rápido que outros Pokémon.', }, flameBody: { - name: "Flame Body", - description: "Contato direto com o Pokémon pode queimar o atacante.", + name: 'Flame Body', + description: 'Contato direto com o Pokémon pode queimar o atacante.', }, runAway: { - name: "Run Away", - description: "Torna a fuga de encontros com Pokémon selvagem garantida.", + name: 'Run Away', + description: 'Torna a fuga de encontros com Pokémon selvagem garantida.', }, keenEye: { - name: "Keen Eye", - description: "Seu olhar extremamente aguçado evita que outros Pokémon diminuam sua Precisão.", + name: 'Keen Eye', + description: 'Seu olhar extremamente aguçado evita que outros Pokémon diminuam sua Precisão.', }, hyperCutter: { - name: "Hyper Cutter", - description: "Suas poderosas pinças enchem o Pokémon de orgulho. Elas impedem que outros Pokémon diminuam seu atributo de Ataque.", + name: 'Hyper Cutter', + description: 'Suas poderosas pinças enchem o Pokémon de orgulho. Elas impedem que outros Pokémon diminuam seu atributo de Ataque.', }, pickup: { - name: "Pickup", - description: "Durante a batalha, o Pokémon pode tomar o item do Pokémon adversário. Fora de batalha pode encontrar itens pelo chão.", + name: 'Pickup', + description: 'Durante a batalha, o Pokémon pode tomar o item do Pokémon adversário. Fora de batalha pode encontrar itens pelo chão.', }, truant: { - name: "Truant", - description: "Se utilizar um movimento, o Pokémon precisará descansar no turno seguinte.", + name: 'Truant', + description: 'Se utilizar um movimento, o Pokémon precisará descansar no turno seguinte.', }, hustle: { - name: "Hustle", - description: "Aumenta seu Ataque em troca de diminuir a precisão.", + name: 'Hustle', + description: 'Aumenta seu Ataque em troca de diminuir a precisão.', }, cuteCharm: { - name: "Cute Charm", - description: "Contato direto com o Pokémon pode causar paixão ao atacante.", + name: 'Cute Charm', + description: 'Contato direto com o Pokémon pode causar paixão ao atacante.', }, plus: { - name: "Plus", - description: "Aumenta o Ataque Esp. do Pokémon se estiver em batalha com um aliado que tenha as Habilidades Plus ou Minus.", + name: 'Plus', + description: 'Aumenta o Ataque Esp. do Pokémon se estiver em batalha com um aliado que tenha as Habilidades Plus ou Minus.', }, minus: { - name: "Minus", - description: "Aumenta o Ataque Esp. do Pokémon se estiver em batalha com um aliado que tenha as Habilidades Mais ou Menos.", + name: 'Minus', + description: 'Aumenta o Ataque Esp. do Pokémon se estiver em batalha com um aliado que tenha as Habilidades Mais ou Menos.', }, forecast: { - name: "Forecast", - description: "O tipo do Pokémon altera-se para Água, Fogo ou Gelo, dependendo do clima.", + name: 'Forecast', + description: 'O tipo do Pokémon altera-se para Água, Fogo ou Gelo, dependendo do clima.', }, stickyHold: { - name: "Sticky Hold", - description: "Outros Pokémon não podem remover itens que este Pokémon esteja segurando.", + name: 'Sticky Hold', + description: 'Outros Pokémon não podem remover itens que este Pokémon esteja segurando.', }, shedSkin: { - name: "Shed Skin", - description: "O Pokémon pode curar-se de mudanças de estado através da troca de pele.", + name: 'Shed Skin', + description: 'O Pokémon pode curar-se de mudanças de estado através da troca de pele.', }, guts: { - name: "Guts", - description: "É tão corajoso que ser afetado por uma mudança de estado aumenta seu Ataque.", + name: 'Guts', + description: 'É tão corajoso que ser afetado por uma mudança de estado aumenta seu Ataque.', }, marvelScale: { - name: "Marvel Scale", - description: "Se for afetado por uma mudança de estado, as escamas maravilhosas do Pokémon aumentarão sua Defesa.", + name: 'Marvel Scale', + description: 'Se for afetado por uma mudança de estado, as escamas maravilhosas do Pokémon aumentarão sua Defesa.', }, liquidOoze: { - name: "Liquid Ooze", - description: "Exala uma substância tóxica com fedor terrível que causa dano a qualquer atacante que use um movimento de dreno.", + name: 'Liquid Ooze', + description: 'Exala uma substância tóxica com fedor terrível que causa dano a qualquer atacante que use um movimento de dreno.', }, overgrow: { - name: "Overgrow", - description: "Fortalece os movimentos do tipo Planta quando o Pokémon está com poucos PS.", + name: 'Overgrow', + description: 'Fortalece os movimentos do tipo Planta quando o Pokémon está com poucos PS.', }, blaze: { - name: "Blaze", - description: "Fortalece os movimentos do tipo Fogo quando o Pokémon está com poucos PS.", + name: 'Blaze', + description: 'Fortalece os movimentos do tipo Fogo quando o Pokémon está com poucos PS.', }, torrent: { - name: "Torrent", - description: "Fortalece os movimentos do tipo Água quando o Pokémon está com poucos PS.", + name: 'Torrent', + description: 'Fortalece os movimentos do tipo Água quando o Pokémon está com poucos PS.', }, swarm: { - name: "Swarm", - description: "Fortalece os movimentos do tipo Inseto quando o Pokémon está com poucos PS.", + name: 'Swarm', + description: 'Fortalece os movimentos do tipo Inseto quando o Pokémon está com poucos PS.', }, rockHead: { - name: "Rock Head", - description: "Protege o Pokémon de dano colateral.", + name: 'Rock Head', + description: 'Protege o Pokémon de dano colateral.', }, drought: { - name: "Drought", - description: "Intensifica a luz solar quando o Pokémon entra em batalha.", + name: 'Drought', + description: 'Intensifica a luz solar quando o Pokémon entra em batalha.', }, arenaTrap: { - name: "Arena Trap", - description: "Impede que Pokémon adversários fujam.", + name: 'Arena Trap', + description: 'Impede que Pokémon adversários fujam.', }, vitalSpirit: { - name: "Vital Spirit", - description: "Sua determinação o impede de adormecer.", + name: 'Vital Spirit', + description: 'Sua determinação o impede de adormecer.', }, whiteSmoke: { - name: "White Smoke", - description: "O Pokémon é protegido por sua fumaça branca que previne que outros Pokémon diminuam seus atributos.", + name: 'White Smoke', + description: 'O Pokémon é protegido por sua fumaça branca que previne que outros Pokémon diminuam seus atributos.', }, purePower: { - name: "Pure Power", - description: "O Pokémon dobra seu Ataque usando seu poder puro.", + name: 'Pure Power', + description: 'O Pokémon dobra seu Ataque usando seu poder puro.', }, shellArmor: { - name: "Shell Armor", - description: "A robusta couraça que protege o Pokémon bloqueia os golpes críticos.", + name: 'Shell Armor', + description: 'A robusta couraça que protege o Pokémon bloqueia os golpes críticos.', }, airLock: { - name: "Air Lock", - description: "Elimina efeitos climáticos.", + name: 'Air Lock', + description: 'Elimina efeitos climáticos.', }, tangledFeet: { - name: "Tangled Feet", - description: "Sua evasão aumenta se estiver confuso.", + name: 'Tangled Feet', + description: 'Sua evasão aumenta se estiver confuso.', }, motorDrive: { - name: "Motor Drive", - description: "O Pokémon absorve todos os movimentos do tipo Elétrico e, ao invés de sofrer dano, aumenta seu atributo de Velocidade.", + name: 'Motor Drive', + description: 'O Pokémon absorve todos os movimentos do tipo Elétrico e, ao invés de sofrer dano, aumenta seu atributo de Velocidade.', }, rivalry: { - name: "Rivalry", - description: "Sua competitividade faz com que cause mais dano a Pokémon do mesmo gênero, enquanto causa dano reduzido a Pokémon do gênero oposto.", + name: 'Rivalry', + description: 'Sua competitividade faz com que cause mais dano a Pokémon do mesmo gênero, enquanto causa dano reduzido a Pokémon do gênero oposto.', }, steadfast: { - name: "Steadfast", - description: "A determinação do Pokémon faz com que sua Velocidade aumente cada vez que ele hesita.", + name: 'Steadfast', + description: 'A determinação do Pokémon faz com que sua Velocidade aumente cada vez que ele hesita.', }, snowCloak: { - name: "Snow Cloak", - description: "Aumenta a evasão numa tempestade de granizo.", + name: 'Snow Cloak', + description: 'Aumenta a evasão numa tempestade de granizo.', }, gluttony: { - name: "Gluttony", - description: "Se estiver segurando uma fruta, a consumirá quando seus PS caírem abaixo da metade, o que é mais cedo que o usual.", + name: 'Gluttony', + description: 'Se estiver segurando uma fruta, a consumirá quando seus PS caírem abaixo da metade, o que é mais cedo que o usual.', }, angerPoint: { - name: "Anger Point", - description: "Quando recebe um golpe crítico se enraivece, e com isso, aumenta seu Ataque.", + name: 'Anger Point', + description: 'Quando recebe um golpe crítico se enraivece, e com isso, aumenta seu Ataque.', }, unburden: { - name: "Unburden", - description: "Se o item que o Pokémon estiver segurando for usado ou perdido, sua Velocidade aumentará.", + name: 'Unburden', + description: 'Se o item que o Pokémon estiver segurando for usado ou perdido, sua Velocidade aumentará.', }, heatproof: { - name: "Heatproof", - description: "O corpo a prova de calor desse Pokémon corta pela metade o dano de ataques do tipo Fogo que o acertam.", + name: 'Heatproof', + description: 'O corpo a prova de calor desse Pokémon corta pela metade o dano de ataques do tipo Fogo que o acertam.', }, simple: { - name: "Simple", - description: "Duplica as mudanças de atributos do Pokémon.", + name: 'Simple', + description: 'Duplica as mudanças de atributos do Pokémon.', }, drySkin: { - name: "Dry Skin", - description: "Durante chuva ou se for atingido por movimentos de Água, recupera PS. Durante sol forte tem seus PS máximo reduzido e leva dano aumentado do tipo Fogo.", + name: 'Dry Skin', + description: 'Durante chuva ou se for atingido por movimentos de Água, recupera PS. Durante sol forte tem seus PS máximo reduzido e leva dano aumentado do tipo Fogo.', }, download: { - name: "Download", - description: "Compara Defesa e Defesa Esp. do Pokémon adversário antes de aumentar seu próprio Ataque Esp. ou Ataque, a depender de qual será mais efetivo.", + name: 'Download', + description: 'Compara Defesa e Defesa Esp. do Pokémon adversário antes de aumentar seu próprio Ataque Esp. ou Ataque, a depender de qual será mais efetivo.', }, ironFist: { - name: "Iron Fist", - description: "Fortalece movimentos de soco.", + name: 'Iron Fist', + description: 'Fortalece movimentos de soco.', }, poisonHeal: { - name: "Poison Heal", - description: "Se o Pokémon estiver envenenado, recuperará PS ao invés de perdê-los.", + name: 'Poison Heal', + description: 'Se o Pokémon estiver envenenado, recuperará PS ao invés de perdê-los.', }, adaptability: { - name: "Adaptability", - description: "Fortalece movimentos do mesmo tipo do Pokémon.", + name: 'Adaptability', + description: 'Fortalece movimentos do mesmo tipo do Pokémon.', }, skillLink: { - name: "Skill Link", - description: "Faz com que movimentos de repetição acertem sempre o máximo de vezes possível.", + name: 'Skill Link', + description: 'Faz com que movimentos de repetição acertem sempre o máximo de vezes possível.', }, hydration: { - name: "Hydration", - description: "Cura mudanças de estado durante a chuva.", + name: 'Hydration', + description: 'Cura mudanças de estado durante a chuva.', }, solarPower: { - name: "Solar Power", - description: "Aumenta o Ataque Esp. durante o sol forte, entretanto perde um pouco de PS a cada turno.", + name: 'Solar Power', + description: 'Aumenta o Ataque Esp. durante o sol forte, entretanto perde um pouco de PS a cada turno.', }, quickFeet: { - name: "Quick Feet", - description: "Aumenta a Velocidade se o Pokémon sofrer uma mudança de estado.", + name: 'Quick Feet', + description: 'Aumenta a Velocidade se o Pokémon sofrer uma mudança de estado.', }, normalize: { - name: "Normalize", - description: "Todos os movimentos do Pokémon se tornam do tipo Normal. Aumenta um pouco o poder desses movimentos.", + name: 'Normalize', + description: 'Todos os movimentos do Pokémon se tornam do tipo Normal. Aumenta um pouco o poder desses movimentos.', }, sniper: { - name: "Sniper", - description: "Aumenta o poder dos ataques caso sejam críticos.", + name: 'Sniper', + description: 'Aumenta o poder dos ataques caso sejam críticos.', }, magicGuard: { - name: "Magic Guard", - description: "O Pokémon só recebe dano de movimentos de ataque.", + name: 'Magic Guard', + description: 'O Pokémon só recebe dano de movimentos de ataque.', }, noGuard: { - name: "No Guard", - description: "Para garantir que todos os ataques atinjam o oponente, o Pokémon adota uma estratégia de desguarnecimento, porém, isso faz com que todos ataques o atinjam.", + name: 'No Guard', + description: 'Para garantir que todos os ataques atinjam o oponente, o Pokémon adota uma estratégia de desguarnecimento, porém, isso faz com que todos ataques o atinjam.', }, stall: { - name: "Stall", - description: "O Pokémon age somente após todos os outros agirem.", + name: 'Stall', + description: 'O Pokémon age somente após todos os outros agirem.', }, technician: { - name: "Technician", - description: "Aumenta o poder dos ataques mais fracos do Pokémon.", + name: 'Technician', + description: 'Aumenta o poder dos ataques mais fracos do Pokémon.', }, leafGuard: { - name: "Leaf Guard", - description: "Previne mudanças de estado sob o sol forte.", + name: 'Leaf Guard', + description: 'Previne mudanças de estado sob o sol forte.', }, klutz: { - name: "Klutz", - description: "O Pokémon não pode usar nenhum item que esteja segurando.", + name: 'Klutz', + description: 'O Pokémon não pode usar nenhum item que esteja segurando.', }, moldBreaker: { - name: "Mold Breaker", - description: "Movimentos podem atingir independentemente da Habilidade do alvo.", + name: 'Mold Breaker', + description: 'Movimentos podem atingir independentemente da Habilidade do alvo.', }, superLuck: { - name: "Super Luck", - description: "O Pokémon é tão sortudo que tem a sua probabilidade de realizar golpes críticos aumentada.", + name: 'Super Luck', + description: 'O Pokémon é tão sortudo que tem a sua probabilidade de realizar golpes críticos aumentada.', }, aftermath: { - name: "Aftermath", - description: "Caso o Pokémon seja derrotado em decorrência de um movimento de contato, o atacante recebe dano.", + name: 'Aftermath', + description: 'Caso o Pokémon seja derrotado em decorrência de um movimento de contato, o atacante recebe dano.', }, anticipation: { - name: "Anticipation", - description: "O Pokémon pode sentir movimentos perigosos vindos do Pokémon adversário.", + name: 'Anticipation', + description: 'O Pokémon pode sentir movimentos perigosos vindos do Pokémon adversário.', }, forewarn: { - name: "Forewarn", - description: "Quando entra em batalha, o Pokémon pode dizer um dos movimentos do Pokémon adversário.", + name: 'Forewarn', + description: 'Quando entra em batalha, o Pokémon pode dizer um dos movimentos do Pokémon adversário.', }, unaware: { - name: "Unaware", - description: "Quando está atacando, o Pokémon ignora mudanças de atributos do Pokémon adversário.", + name: 'Unaware', + description: 'Quando está atacando, o Pokémon ignora mudanças de atributos do Pokémon adversário.', }, tintedLens: { - name: "Tinted Lens", - description: "Movimentos que seriam “pouco eficazes” causam dano normalmente quando usados pelo Pokémon.", + name: 'Tinted Lens', + description: 'Movimentos que seriam “pouco eficazes” causam dano normalmente quando usados pelo Pokémon.', }, filter: { - name: "Filter", - description: "Ataques supereficazes recebidos dão menos dano.", + name: 'Filter', + description: 'Ataques supereficazes recebidos dão menos dano.', }, slowStart: { - name: "Slow Start", - description: "O Ataque e a Velocidade do Pokémon são cortados pela metade por cinco turnos.", + name: 'Slow Start', + description: 'O Ataque e a Velocidade do Pokémon são cortados pela metade por cinco turnos.', }, scrappy: { - name: "Scrappy", - description: "O Pokémon pode atingir Pokémon do tipo Fantasma com ataques dos tipos Normal e Lutador.", + name: 'Scrappy', + description: 'O Pokémon pode atingir Pokémon do tipo Fantasma com ataques dos tipos Normal e Lutador.', }, stormDrain: { - name: "Storm Drain", - description: "Atrai todos movimentos do tipo Água para si. Ao invés de receber dano desses ataques, tem seu Ataque Esp. aumentado.", + name: 'Storm Drain', + description: 'Atrai todos movimentos do tipo Água para si. Ao invés de receber dano desses ataques, tem seu Ataque Esp. aumentado.', }, iceBody: { - name: "Ice Body", - description: "O Pokémon recupera PS gradualmente durante as tempestades de granizo.", + name: 'Ice Body', + description: 'O Pokémon recupera PS gradualmente durante as tempestades de granizo.', }, solidRock: { - name: "Solid Rock", - description: "Reduz o dano recebido de ataques supereficazes.", + name: 'Solid Rock', + description: 'Reduz o dano recebido de ataques supereficazes.', }, snowWarning: { - name: "Snow Warning", - description: "O Pokémon conjura uma tempestade de granizo quando entra em batalha.", + name: 'Snow Warning', + description: 'O Pokémon conjura uma tempestade de granizo quando entra em batalha.', }, honeyGather: { - name: "Honey Gather", - description: "O Pokémon pode coletar Mel ao final de uma batalha.", + name: 'Honey Gather', + description: 'O Pokémon pode coletar Mel ao final de uma batalha.', }, frisk: { - name: "Frisk", - description: "Quando entra em batalha, o Pokémon pode checar a Habilidade do adversário.", + name: 'Frisk', + description: 'Quando entra em batalha, o Pokémon pode checar a Habilidade do adversário.', }, reckless: { - name: "Reckless", - description: "Fortalece movimentos que têm dano colateral.", + name: 'Reckless', + description: 'Fortalece movimentos que têm dano colateral.', }, multitype: { - name: "Multitype", - description: "Altera o tipo do Pokémon para o mesmo da Placa ou Cristal Z em sua posse.", + name: 'Multitype', + description: 'Altera o tipo do Pokémon para o mesmo da Placa ou Cristal Z em sua posse.', }, flowerGift: { - name: "Flower Gift", - description: "Sob sol forte, o Ataque e a Defesa Esp. do Pokémon e de seus aliados são aumentados.", + name: 'Flower Gift', + description: 'Sob sol forte, o Ataque e a Defesa Esp. do Pokémon e de seus aliados são aumentados.', }, badDreams: { - name: "Bad Dreams", - description: "Reduz os PS de Pokémon adversários que estiverem dormindo.", + name: 'Bad Dreams', + description: 'Reduz os PS de Pokémon adversários que estiverem dormindo.', }, pickpocket: { - name: "Pickpocket", - description: "Rouba o item de um atacante que tenha feito contato direto.", + name: 'Pickpocket', + description: 'Rouba o item de um atacante que tenha feito contato direto.', }, sheerForce: { - name: "Sheer Force", - description: "Aumenta o poder de seus movimentos quando ataca, em detrimento de seus efeitos adicionais que são anulados.", + name: 'Sheer Force', + description: 'Aumenta o poder de seus movimentos quando ataca, em detrimento de seus efeitos adicionais que são anulados.', }, contrary: { - name: "Contrary", - description: "Faz as mudanças de atributos terem efeito contrário.", + name: 'Contrary', + description: 'Faz as mudanças de atributos terem efeito contrário.', }, unnerve: { - name: "Unnerve", - description: "Enerva Pokémon adversários, impossibilitando que eles consumam Frutas.", + name: 'Unnerve', + description: 'Enerva Pokémon adversários, impossibilitando que eles consumam Frutas.', }, defiant: { - name: "Defiant", - description: "Aumenta bruscamente o Ataque do Pokémon quando seus atributos são diminuídos pelo adversário.", + name: 'Defiant', + description: 'Aumenta bruscamente o Ataque do Pokémon quando seus atributos são diminuídos pelo adversário.', }, defeatist: { - name: "Defeatist", - description: "Quando fica com metade ou menos dos PS totais, corta o Ataque e Ataque Esp. do Pokémon pela metade.", + name: 'Defeatist', + description: 'Quando fica com metade ou menos dos PS totais, corta o Ataque e Ataque Esp. do Pokémon pela metade.', }, cursedBody: { - name: "Cursed Body", - description: "Pode desabilitar um movimento utilizado no Pokémon.", + name: 'Cursed Body', + description: 'Pode desabilitar um movimento utilizado no Pokémon.', }, healer: { - name: "Healer", - description: "Às vezes cura mudanças de estado de um aliado.", + name: 'Healer', + description: 'Às vezes cura mudanças de estado de um aliado.', }, friendGuard: { - name: "Friend Guard", - description: "Reduz o dano causado em aliados.", + name: 'Friend Guard', + description: 'Reduz o dano causado em aliados.', }, weakArmor: { - name: "Weak Armor", - description: "Ataques físicos ao Pokémon diminuem sua Defesa, mas aumenta bruscamente sua Velocidade.", + name: 'Weak Armor', + description: 'Ataques físicos ao Pokémon diminuem sua Defesa, mas aumenta bruscamente sua Velocidade.', }, heavyMetal: { - name: "Heavy Metal", - description: "Dobra o peso do Pokémon.", + name: 'Heavy Metal', + description: 'Dobra o peso do Pokémon.', }, lightMetal: { - name: "Light Metal", - description: "Divide o peso do Pokémon pela metade.", + name: 'Light Metal', + description: 'Divide o peso do Pokémon pela metade.', }, multiscale: { - name: "Multiscale", - description: "Reduz o dano que o Pokémon recebe quando está com os PS cheios.", + name: 'Multiscale', + description: 'Reduz o dano que o Pokémon recebe quando está com os PS cheios.', }, toxicBoost: { - name: "Toxic Boost", - description: "Fortalece ataques físicos quando o Pokémon está envenenado.", + name: 'Toxic Boost', + description: 'Fortalece ataques físicos quando o Pokémon está envenenado.', }, flareBoost: { - name: "Flare Boost", - description: "Fortalece ataques especiais quando o Pokémon está queimado.", + name: 'Flare Boost', + description: 'Fortalece ataques especiais quando o Pokémon está queimado.', }, harvest: { - name: "Harvest", - description: "Pode criar outra Fruta após consumir uma.", + name: 'Harvest', + description: 'Pode criar outra Fruta após consumir uma.', }, telepathy: { - name: "Telepathy", - description: "Prevê os ataques de um aliado em combate e desvia de todos eles.", + name: 'Telepathy', + description: 'Prevê os ataques de um aliado em combate e desvia de todos eles.', }, moody: { - name: "Moody", - description: "Aumenta bruscamente um atributo e diminui outro a cada turno.", + name: 'Moody', + description: 'Aumenta bruscamente um atributo e diminui outro a cada turno.', }, overcoat: { - name: "Overcoat", - description: "Protege o Pokémon de coisas como areia, geada e pó.", + name: 'Overcoat', + description: 'Protege o Pokémon de coisas como areia, geada e pó.', }, poisonTouch: { - name: "Poison Touch", - description: "Pode envenenar um alvo quando o Pokémon faz contato.", + name: 'Poison Touch', + description: 'Pode envenenar um alvo quando o Pokémon faz contato.', }, regenerator: { - name: "Regenerator", - description: "Recupera um pouco de PS quando recua da batalha.", + name: 'Regenerator', + description: 'Recupera um pouco de PS quando recua da batalha.', }, bigPecks: { - name: "Big Pecks", - description: "Protege o Pokémon de efeitos que diminuam a Defesa.", + name: 'Big Pecks', + description: 'Protege o Pokémon de efeitos que diminuam a Defesa.', }, sandRush: { - name: "Sand Rush", - description: "Aumenta a Velocidade do Pokémon durante uma tempestade de areia.", + name: 'Sand Rush', + description: 'Aumenta a Velocidade do Pokémon durante uma tempestade de areia.', }, wonderSkin: { - name: "Wonder Skin", - description: "Torna movimentos de atributos mais suscetíveis ao erro.", + name: 'Wonder Skin', + description: 'Torna movimentos de atributos mais suscetíveis ao erro.', }, analytic: { - name: "Analytic", - description: "Aumenta o poder do movimento quando o Pokémon age por último.", + name: 'Analytic', + description: 'Aumenta o poder do movimento quando o Pokémon age por último.', }, illusion: { - name: "Illusion", - description: "Entra em batalha disfarçado, na forma do Pokémon que ocupar o último lugar na equipe.", + name: 'Illusion', + description: 'Entra em batalha disfarçado, na forma do Pokémon que ocupar o último lugar na equipe.', }, imposter: { - name: "Imposter", - description: "O Pokémon se transforma no Pokémon que está enfrentando.", + name: 'Imposter', + description: 'O Pokémon se transforma no Pokémon que está enfrentando.', }, infiltrator: { - name: "Infiltrator", - description: "Ignora barreiras, substitutos e coisas do tipo utilizadas pelo Pokémon adversário e ataca normalmente.", + name: 'Infiltrator', + description: 'Ignora barreiras, substitutos e coisas do tipo utilizadas pelo Pokémon adversário e ataca normalmente.', }, mummy: { - name: "Mummy", - description: "Contato direto com o Pokémon altera a Habilidade do atacante para Múmia.", + name: 'Mummy', + description: 'Contato direto com o Pokémon altera a Habilidade do atacante para Múmia.', }, moxie: { - name: "Moxie", - description: "O Pokémon demonstra arrogância, e isso faz com que seu Ataque aumente após derrotar qualquer Pokémon.", + name: 'Moxie', + description: 'O Pokémon demonstra arrogância, e isso faz com que seu Ataque aumente após derrotar qualquer Pokémon.', }, justified: { - name: "Justified", - description: "Ser atingido por movimentos do tipo Sombrio aumenta o Ataque do Pokémon, por justiça.", + name: 'Justified', + description: 'Ser atingido por movimentos do tipo Sombrio aumenta o Ataque do Pokémon, por justiça.', }, rattled: { - name: "Rattled", - description: "Movimentos dos tipos Sombrio, Fantasma e Inseto assustam o Pokémon, aumentando sua Velocidade", + name: 'Rattled', + description: 'Movimentos dos tipos Sombrio, Fantasma e Inseto assustam o Pokémon, aumentando sua Velocidade', }, magicBounce: { - name: "Magic Bounce", - description: "Ao invés de ser atingido por movimentos de atributos, reflete-os.", + name: 'Magic Bounce', + description: 'Ao invés de ser atingido por movimentos de atributos, reflete-os.', }, sapSipper: { - name: "Sap Sipper", - description: "Se for atingido por um movimento do tipo Planta, ao invés de receber dano, aumenta seu Ataque.", + name: 'Sap Sipper', + description: 'Se for atingido por um movimento do tipo Planta, ao invés de receber dano, aumenta seu Ataque.', }, prankster: { - name: "Prankster", - description: "Dá prioridade a movimentos de estado.", + name: 'Prankster', + description: 'Dá prioridade a movimentos de estado.', }, sandForce: { - name: "Sand Force", - description: "Fortalece o poder dos movimentos do tipo Pedra, Terra e Aço em uma tempestade de areia.", + name: 'Sand Force', + description: 'Fortalece o poder dos movimentos do tipo Pedra, Terra e Aço em uma tempestade de areia.', }, ironBarbs: { - name: "Iron Barbs", - description: "Os espinhos de ferro infligem dano a um atacante que fizer contato direto.", + name: 'Iron Barbs', + description: 'Os espinhos de ferro infligem dano a um atacante que fizer contato direto.', }, zenMode: { - name: "Zen Mode", - description: "Quando o Pokémon tem seus PS reduzidos à metade ou menos, muda de forma.", + name: 'Zen Mode', + description: 'Quando o Pokémon tem seus PS reduzidos à metade ou menos, muda de forma.', }, victoryStar: { - name: "Victory Star", - description: "Aumenta a Precisão sua e de seus aliados.", + name: 'Victory Star', + description: 'Aumenta a Precisão sua e de seus aliados.', }, turboblaze: { - name: "Turboblaze", - description: "Movimentos podem atingir independentemente da Habilidade do alvo.", + name: 'Turboblaze', + description: 'Movimentos podem atingir independentemente da Habilidade do alvo.', }, teravolt: { - name: "Teravolt", - description: "Movimentos podem atingir independentemente da Habilidade do alvo.", + name: 'Teravolt', + description: 'Movimentos podem atingir independentemente da Habilidade do alvo.', }, aromaVeil: { - name: "Aroma Veil", - description: "Protege a si mesmo e a seus aliados de ataques que limitem a escolha de movimentos.", + name: 'Aroma Veil', + description: 'Protege a si mesmo e a seus aliados de ataques que limitem a escolha de movimentos.', }, flowerVeil: { - name: "Flower Veil", - description: "Pokémon aliados do tipo Planta são protegidos de mudanças de estado e diminuição de seus atributos.", + name: 'Flower Veil', + description: 'Pokémon aliados do tipo Planta são protegidos de mudanças de estado e diminuição de seus atributos.', }, cheekPouch: { - name: "Cheek Pouch", - description: "Quando o Pokémon consome uma Fruta, também recupera um pouco de PS.", + name: 'Cheek Pouch', + description: 'Quando o Pokémon consome uma Fruta, também recupera um pouco de PS.', }, protean: { - name: "Protean", - description: "Muda o tipo do Pokémon para o tipo do movimento que ele vai utilizar.", + name: 'Protean', + description: 'Muda o tipo do Pokémon para o tipo do movimento que ele vai utilizar.', }, furCoat: { - name: "Fur Coat", - description: "Reduz o dano de movimentos físicos pela metade.", + name: 'Fur Coat', + description: 'Reduz o dano de movimentos físicos pela metade.', }, magician: { - name: "Magician", - description: "O Pokémon rouba o item que um Pokémon alvo estiver segurando quando acerta um movimento.", + name: 'Magician', + description: 'O Pokémon rouba o item que um Pokémon alvo estiver segurando quando acerta um movimento.', }, bulletproof: { - name: "Bulletproof", - description: "Protege o Pokémon de alguns movimentos de bola e bomba.", + name: 'Bulletproof', + description: 'Protege o Pokémon de alguns movimentos de bola e bomba.', }, competitive: { - name: "Competitive", - description: "Aumenta bruscamente o Ataque Esp. quando um atributo é diminuído.", + name: 'Competitive', + description: 'Aumenta bruscamente o Ataque Esp. quando um atributo é diminuído.', }, strongJaw: { - name: "Strong Jaw", - description: "A poderosa mandíbula do Pokémon aumenta o poder dos seus movimentos de mordida.", + name: 'Strong Jaw', + description: 'A poderosa mandíbula do Pokémon aumenta o poder dos seus movimentos de mordida.', }, refrigerate: { - name: "Refrigerate", - description: "Movimentos do tipo Normal se tornam do tipo Gelo. Aumenta um pouco o poder desses movimentos.", + name: 'Refrigerate', + description: 'Movimentos do tipo Normal se tornam do tipo Gelo. Aumenta um pouco o poder desses movimentos.', }, sweetVeil: { - name: "Sweet Veil", - description: "Previne a si e a Pokémon aliados de caírem no sono.", + name: 'Sweet Veil', + description: 'Previne a si e a Pokémon aliados de caírem no sono.', }, stanceChange: { - name: "Stance Change", - description: "O Pokemon muda para Forma Espada quando usa um movimento de ataque, e muda para a Forma Escudo quando usa o movimento Escudo do Rei.", + name: 'Stance Change', + description: 'O Pokemon muda para Forma Espada quando usa um movimento de ataque, e muda para a Forma Escudo quando usa o movimento Escudo do Rei.', }, galeWings: { - name: "Gale Wings", - description: "Quando o Pokémon está com os PS cheios, dá prioridade a movimentos do tipo Voador.", + name: 'Gale Wings', + description: 'Quando o Pokémon está com os PS cheios, dá prioridade a movimentos do tipo Voador.', }, megaLauncher: { - name: "Mega Launcher", - description: "Fortalece movimentos de aura e pulso.", + name: 'Mega Launcher', + description: 'Fortalece movimentos de aura e pulso.', }, grassPelt: { - name: "Grass Pelt", - description: "Aumenta a Defesa do Pokémon em Terreno de Grama.", + name: 'Grass Pelt', + description: 'Aumenta a Defesa do Pokémon em Terreno de Grama.', }, symbiosis: { - name: "Symbiosis", - description: "O Pokémon entrega seu item para um aliado que já tiver utilizado seu próprio item.", + name: 'Symbiosis', + description: 'O Pokémon entrega seu item para um aliado que já tiver utilizado seu próprio item.', }, toughClaws: { - name: "Tough Claws", - description: "Fortalece movimentos que façam contato direto.", + name: 'Tough Claws', + description: 'Fortalece movimentos que façam contato direto.', }, pixilate: { - name: "Pixilate", - description: "Movimentos do tipo Normal se tornam do tipo Fada. Aumenta um pouco o poder desses movimentos.", + name: 'Pixilate', + description: 'Movimentos do tipo Normal se tornam do tipo Fada. Aumenta um pouco o poder desses movimentos.', }, gooey: { - name: "Gooey", - description: "Contato direto com o Pokémon diminui o atributo de Velocidade do atacante.", + name: 'Gooey', + description: 'Contato direto com o Pokémon diminui o atributo de Velocidade do atacante.', }, aerilate: { - name: "Aerilate", - description: "Movimentos do tipo Normal se tornam do tipo Voador. Aumenta um pouco o poder desses movimentos.", + name: 'Aerilate', + description: 'Movimentos do tipo Normal se tornam do tipo Voador. Aumenta um pouco o poder desses movimentos.', }, parentalBond: { - name: "Parental Bond", - description: "Une suas forças com sua cria para atacar duas vezes.", + name: 'Parental Bond', + description: 'Une suas forças com sua cria para atacar duas vezes.', }, darkAura: { - name: "Dark Aura", - description: "Fortalece movimentos do tipo Sombrio de todos os Pokémon.", + name: 'Dark Aura', + description: 'Fortalece movimentos do tipo Sombrio de todos os Pokémon.', }, fairyAura: { - name: "Fairy Aura", - description: "Fortalece movimentos do tipo Fada de todos os Pokémon.", + name: 'Fairy Aura', + description: 'Fortalece movimentos do tipo Fada de todos os Pokémon.', }, auraBreak: { - name: "Aura Break", - description: "Os efeitos de Habilidades de “Aura” são revertidos para diminuir o poder de movimentos afetados.", + name: 'Aura Break', + description: 'Os efeitos de Habilidades de “Aura” são revertidos para diminuir o poder de movimentos afetados.', }, primordialSea: { - name: "Primordial Sea", - description: "O Pokémon muda o clima para neutralizar ataques do tipo Fogo.", + name: 'Primordial Sea', + description: 'O Pokémon muda o clima para neutralizar ataques do tipo Fogo.', }, desolateLand: { - name: "Desolate Land", - description: "O Pokémon muda o clima para neutralizar ataques do tipo Água.", + name: 'Desolate Land', + description: 'O Pokémon muda o clima para neutralizar ataques do tipo Água.', }, deltaStream: { - name: "Delta Stream", - description: "O Pokémon muda o clima para eliminar todas as vulnerabilidades do tipo Voador.", + name: 'Delta Stream', + description: 'O Pokémon muda o clima para eliminar todas as vulnerabilidades do tipo Voador.', }, stamina: { - name: "Stamina", - description: "Aumenta a Defesa quando atingido por um ataque.", + name: 'Stamina', + description: 'Aumenta a Defesa quando atingido por um ataque.', }, wimpOut: { - name: "Wimp Out", - description: "Quando fica com metade ou menos de seus PS, recua covardemente da batalha.", + name: 'Wimp Out', + description: 'Quando fica com metade ou menos de seus PS, recua covardemente da batalha.', }, emergencyExit: { - name: "Emergency Exit", - description: "Quando fica com metade ou menos de seus PS, sentindo que está em perigo, o Pokémon recua da batalha.", + name: 'Emergency Exit', + description: 'Quando fica com metade ou menos de seus PS, sentindo que está em perigo, o Pokémon recua da batalha.', }, waterCompaction: { - name: "Water Compaction", - description: "Aumenta bruscamente a Defesa do Pokémon quando atingido por um movimento do tipo Água.", + name: 'Water Compaction', + description: 'Aumenta bruscamente a Defesa do Pokémon quando atingido por um movimento do tipo Água.', }, merciless: { - name: "Merciless", - description: "Os ataques do Pokémon se tornam críticos se o alvo estiver envenenado.", + name: 'Merciless', + description: 'Os ataques do Pokémon se tornam críticos se o alvo estiver envenenado.', }, shieldsDown: { - name: "Shields Down", - description: "Quando fica com metade ou menos de seus PS, o Pokémon quebra sua carapaça e se torna agressivo.", + name: 'Shields Down', + description: 'Quando fica com metade ou menos de seus PS, o Pokémon quebra sua carapaça e se torna agressivo.', }, stakeout: { - name: "Stakeout", - description: "Caso o alvo recue da batalha, dobra o dano causado ao Pokémon suplente.", + name: 'Stakeout', + description: 'Caso o alvo recue da batalha, dobra o dano causado ao Pokémon suplente.', }, waterBubble: { - name: "Water Bubble", - description: "Diminui o poder de movimentos do tipo Fogo usados contra o Pokémon e o impede de ficar queimado.", + name: 'Water Bubble', + description: 'Diminui o poder de movimentos do tipo Fogo usados contra o Pokémon e o impede de ficar queimado.', }, steelworker: { - name: "Steelworker", - description: "Fortalece os movimentos do tipo Aço.", + name: 'Steelworker', + description: 'Fortalece os movimentos do tipo Aço.', }, berserk: { - name: "Berserk", - description: "Quando é atingido por um movimento que deixa seus PS na metade ou menos, aumenta seu Ataque Esp..", + name: 'Berserk', + description: 'Quando é atingido por um movimento que deixa seus PS na metade ou menos, aumenta seu Ataque Esp..', }, slushRush: { - name: "Slush Rush", - description: "Aumenta a Velocidade do Pokémon em uma tempestade de granizo.", + name: 'Slush Rush', + description: 'Aumenta a Velocidade do Pokémon em uma tempestade de granizo.', }, longReach: { - name: "Long Reach", - description: "O Pokémon usa seus movimentos sem fazer contato direto com o alvo.", + name: 'Long Reach', + description: 'O Pokémon usa seus movimentos sem fazer contato direto com o alvo.', }, liquidVoice: { - name: "Liquid Voice", - description: "Todos os movimentos baseados em som se tornam do tipo Água.", + name: 'Liquid Voice', + description: 'Todos os movimentos baseados em som se tornam do tipo Água.', }, triage: { - name: "Triage", - description: "Concede prioridade para movimentos de cura.", + name: 'Triage', + description: 'Concede prioridade para movimentos de cura.', }, galvanize: { - name: "Galvanize", - description: "Movimentos do tipo Normal se transformam em movimentos do tipo Elétrico. Aumenta um pouco o poder desses movimentos.", + name: 'Galvanize', + description: 'Movimentos do tipo Normal se transformam em movimentos do tipo Elétrico. Aumenta um pouco o poder desses movimentos.', }, surgeSurfer: { - name: "Surge Surfer", - description: "Dobra a Velocidade do Pokémon em Terreno Elétrico.", + name: 'Surge Surfer', + description: 'Dobra a Velocidade do Pokémon em Terreno Elétrico.', }, schooling: { - name: "Schooling", - description: "Quando está com bastante PS, o Pokémon forma um poderoso cardume, que se desfaz quando seus PS ficam baixos.", + name: 'Schooling', + description: 'Quando está com bastante PS, o Pokémon forma um poderoso cardume, que se desfaz quando seus PS ficam baixos.', }, disguise: { - name: "Disguise", - description: "Uma vez por batalha, a mortalha que cobre o Pokémon pode protegê-lo de um ataque.", + name: 'Disguise', + description: 'Uma vez por batalha, a mortalha que cobre o Pokémon pode protegê-lo de um ataque.', }, battleBond: { - name: "Battle Bond", - description: "Derrotar um Pokémon adversário fortalece os laços entre Pokémon e Treinador, fazendo com que se torne Greninja do Ash, e fortalecendo o ataque Shuriken de Água.", + name: 'Battle Bond', + description: 'Derrotar um Pokémon adversário fortalece os laços entre Pokémon e Treinador, fazendo com que se torne Greninja do Ash, e fortalecendo o ataque Shuriken de Água.', }, powerConstruct: { - name: "Power Construct", - description: "Quando seus PS ficam da metade para baixo, outras Células se agrupam para auxiliá-lo, fazendo com que o Pokémon mude para sua Forma Completa.", + name: 'Power Construct', + description: 'Quando seus PS ficam da metade para baixo, outras Células se agrupam para auxiliá-lo, fazendo com que o Pokémon mude para sua Forma Completa.', }, corrosion: { - name: "Corrosion", - description: "O Pokémon pode envenenar o alvo mesmo que ele seja dos tipos Aço ou Venenoso.", + name: 'Corrosion', + description: 'O Pokémon pode envenenar o alvo mesmo que ele seja dos tipos Aço ou Venenoso.', }, comatose: { - name: "Comatose", - description: "Está sempre cochilando e nunca acordará, entretanto, pode atacar sem acordar.", + name: 'Comatose', + description: 'Está sempre cochilando e nunca acordará, entretanto, pode atacar sem acordar.', }, queenlyMajesty: { - name: "Queenly Majesty", - description: "Sua magnificência pressiona o Pokémon adversário, impossibilitando-o de utilizar movimentos de prioridade.", + name: 'Queenly Majesty', + description: 'Sua magnificência pressiona o Pokémon adversário, impossibilitando-o de utilizar movimentos de prioridade.', }, innardsOut: { - name: "Innards Out", - description: "Ao ser nocauteado, inflige dano ao adversário igual ao valor de PS que possuía antes de ser atacado.", + name: 'Innards Out', + description: 'Ao ser nocauteado, inflige dano ao adversário igual ao valor de PS que possuía antes de ser atacado.', }, dancer: { - name: "Dancer", - description: "Quando outro Pokémon usa um movimento de dança, pode usar um movimento de dança na sequência independentemente de sua Velocidade.", + name: 'Dancer', + description: 'Quando outro Pokémon usa um movimento de dança, pode usar um movimento de dança na sequência independentemente de sua Velocidade.', }, battery: { - name: "Battery", - description: "Fortalece os movimentos especiais dos Pokémon aliados.", + name: 'Battery', + description: 'Fortalece os movimentos especiais dos Pokémon aliados.', }, fluffy: { - name: "Fluffy", - description: "Corta pela metade o dano recebido de movimentos que fazem contato direto, porém, dobra o dano dos ataques do tipo Fogo.", + name: 'Fluffy', + description: 'Corta pela metade o dano recebido de movimentos que fazem contato direto, porém, dobra o dano dos ataques do tipo Fogo.', }, dazzling: { - name: "Dazzling", - description: "Surpreende o Pokémon adversário, impedindo-o de atacar usando movimentos de prioridade.", + name: 'Dazzling', + description: 'Surpreende o Pokémon adversário, impedindo-o de atacar usando movimentos de prioridade.', }, soulHeart: { - name: "Soul-Heart", - description: "Aumenta seu atributo de Ataque Esp. toda vez que um Pokémon desmaia.", + name: 'Soul-Heart', + description: 'Aumenta seu atributo de Ataque Esp. toda vez que um Pokémon desmaia.', }, tanglingHair: { - name: "Tangling Hair", - description: "Contato direto com o Pokémon diminui o atributo de Velocidade do atacante.", + name: 'Tangling Hair', + description: 'Contato direto com o Pokémon diminui o atributo de Velocidade do atacante.', }, receiver: { - name: "Receiver", - description: "O Pokémon copia a Habilidade de um aliado derrotado.", + name: 'Receiver', + description: 'O Pokémon copia a Habilidade de um aliado derrotado.', }, powerOfAlchemy: { - name: "Power of Alchemy", - description: "O Pokémon copia a Habilidade de um aliado derrotado.", + name: 'Power of Alchemy', + description: 'O Pokémon copia a Habilidade de um aliado derrotado.', }, beastBoost: { - name: "Beast Boost", - description: "O Pokémon aumentará seu melhor atributo sempre que derrotar outro Pokémon.", + name: 'Beast Boost', + description: 'O Pokémon aumentará seu melhor atributo sempre que derrotar outro Pokémon.', }, rksSystem: { - name: "RKS System", - description: "Troca o tipo do Pokémon para igualar com o disco de memória que ele tiver instalado.", + name: 'RKS System', + description: 'Troca o tipo do Pokémon para igualar com o disco de memória que ele tiver instalado.', }, electricSurge: { - name: "Electric Surge", - description: "Quando o Pokémon entra em batalha, altera o terreno para Terreno Elétrico.", + name: 'Electric Surge', + description: 'Quando o Pokémon entra em batalha, altera o terreno para Terreno Elétrico.', }, psychicSurge: { - name: "Psychic Surge", - description: "Quando o Pokémon entra em batalha, altera o terreno para Terreno Psíquico.", + name: 'Psychic Surge', + description: 'Quando o Pokémon entra em batalha, altera o terreno para Terreno Psíquico.', }, mistySurge: { - name: "Misty Surge", - description: "Quando o Pokémon entra em batalha, altera o terreno para Terreno Enevoado.", + name: 'Misty Surge', + description: 'Quando o Pokémon entra em batalha, altera o terreno para Terreno Enevoado.', }, grassySurge: { - name: "Grassy Surge", - description: "Quando o Pokémon entra em batalha, altera o terreno para Terreno de Grama.", + name: 'Grassy Surge', + description: 'Quando o Pokémon entra em batalha, altera o terreno para Terreno de Grama.', }, fullMetalBody: { - name: "Full Metal Body", - description: "Previne que as Habilidades e movimentos de outros Pokémon diminuam os atributos deste Pokémon.", + name: 'Full Metal Body', + description: 'Previne que as Habilidades e movimentos de outros Pokémon diminuam os atributos deste Pokémon.', }, shadowShield: { - name: "Shadow Shield", - description: "Reduz a quantidade de dano que o Pokémon recebe enquanto estiver com seus PS ao máximo.", + name: 'Shadow Shield', + description: 'Reduz a quantidade de dano que o Pokémon recebe enquanto estiver com seus PS ao máximo.', }, prismArmor: { - name: "Prism Armor", - description: "Reduz o dano recebido por movimentos supereficazes.", + name: 'Prism Armor', + description: 'Reduz o dano recebido por movimentos supereficazes.', }, intrepidSword: { - name: "Intrepid Sword", - description: "Aumenta o atributo de Ataque ao entrar em batalha.", + name: 'Intrepid Sword', + description: 'Aumenta o atributo de Ataque ao entrar em batalha.', }, dauntlessShield: { - name: "Dauntless Shield", - description: "Aumenta o atributo de Defesa ao entrar em batalha.", + name: 'Dauntless Shield', + description: 'Aumenta o atributo de Defesa ao entrar em batalha.', }, libero: { - name: "Libero", - description: "Muda o tipo do Pokémon para o tipo do movimento que ele estiver prestes a usar.", + name: 'Libero', + description: 'Muda o tipo do Pokémon para o tipo do movimento que ele estiver prestes a usar.', }, ballFetch: { - name: "Ball Fetch", - description: "Se o Pokémon não estiver segurando nenhum item, ele irá buscar a primeira Poké Bola que falhou em capturar um Pokémon na batalha.", + name: 'Ball Fetch', + description: 'Se o Pokémon não estiver segurando nenhum item, ele irá buscar a primeira Poké Bola que falhou em capturar um Pokémon na batalha.', }, cottonDown: { - name: "Cotton Down", - description: "Quando o Pokémon é atingido por um ataque, ele espalha algodão à volta, diminuindo o atributo de Velocidade de todos os Pokémon, exceto ele mesmo.", + name: 'Cotton Down', + description: 'Quando o Pokémon é atingido por um ataque, ele espalha algodão à volta, diminuindo o atributo de Velocidade de todos os Pokémon, exceto ele mesmo.', }, propellerTail: { - name: "Propeller Tail", - description: "Ignora os efeitos de Habilidades e movimentos de Pokémon adversários que redirecionam e atraem movimentos para si.", + name: 'Propeller Tail', + description: 'Ignora os efeitos de Habilidades e movimentos de Pokémon adversários que redirecionam e atraem movimentos para si.', }, mirrorArmor: { - name: "Mirror Armor", - description: "Devolve apenas os efeitos redutores de atributos que o Pokémon recebe.", + name: 'Mirror Armor', + description: 'Devolve apenas os efeitos redutores de atributos que o Pokémon recebe.', }, gulpMissile: { - name: "Gulp Missile", - description: "Quando o Pokémon usa Surf ou Dive, volta com uma presa. Quando recebe dano, cospe a presa no atacante.", + name: 'Gulp Missile', + description: 'Quando o Pokémon usa Surf ou Dive, volta com uma presa. Quando recebe dano, cospe a presa no atacante.', }, stalwart: { - name: "Stalwart", - description: "Ignora os efeitos de Habilidades e movimentos de Pokémon adversários que redirecionam e atraem movimentos para si.", + name: 'Stalwart', + description: 'Ignora os efeitos de Habilidades e movimentos de Pokémon adversários que redirecionam e atraem movimentos para si.', }, steamEngine: { - name: "Steam Engine", - description: "Aumenta drasticamente a Velocidade, se for atingido por um movimento do tipo Água ou Fogo.", + name: 'Steam Engine', + description: 'Aumenta drasticamente a Velocidade, se for atingido por um movimento do tipo Água ou Fogo.', }, punkRock: { - name: "Punk Rock", - description: "Aumenta o poder dos movimentos baseados em som. O Pokémon também recebe metade do dano desses tipos de movimentos.", + name: 'Punk Rock', + description: 'Aumenta o poder dos movimentos baseados em som. O Pokémon também recebe metade do dano desses tipos de movimentos.', }, sandSpit: { - name: "Sand Spit", - description: "O Pokémon cria uma tempestade de areia quando é atingido por um ataque.", + name: 'Sand Spit', + description: 'O Pokémon cria uma tempestade de areia quando é atingido por um ataque.', }, iceScales: { - name: "Ice Scales", - description: "As gélidas escamas que rodeiam seu corpo reduzem à metade o dano recebido por movimentos especiais.", + name: 'Ice Scales', + description: 'As gélidas escamas que rodeiam seu corpo reduzem à metade o dano recebido por movimentos especiais.', }, ripen: { - name: "Ripen", - description: "Amadurece Frutas e dobram seus efeitos.", + name: 'Ripen', + description: 'Amadurece Frutas e dobram seus efeitos.', }, iceFace: { - name: "Ice Face", - description: "Sua cabeça de gelo pode receber ataques físicos como substituto, mas faz com que a aparência do Pokémon mude. O gelo é restaurado no granizo.", + name: 'Ice Face', + description: 'Sua cabeça de gelo pode receber ataques físicos como substituto, mas faz com que a aparência do Pokémon mude. O gelo é restaurado no granizo.', }, powerSpot: { - name: "Power Spot", - description: "O simples fato de estar próximo ao Pokémon fortalece o poder de movimentos.", + name: 'Power Spot', + description: 'O simples fato de estar próximo ao Pokémon fortalece o poder de movimentos.', }, mimicry: { - name: "Mimicry", - description: "Muda o tipo do Pokémon dependendo do terreno.", + name: 'Mimicry', + description: 'Muda o tipo do Pokémon dependendo do terreno.', }, screenCleaner: { - name: "Screen Cleaner", - description: "Quando o Pokémon entra em batalha os efeitos de Tela de Luz, Refletir e Véu Aurora são anulados, tanto para Pokémon aliados quanto para oponentes.", + name: 'Screen Cleaner', + description: 'Quando o Pokémon entra em batalha os efeitos de Tela de Luz, Refletir e Véu Aurora são anulados, tanto para Pokémon aliados quanto para oponentes.', }, steelySpirit: { - name: "Steely Spirit", - description: "Fortalece o poder dos movimentos do tipo Aço de Pokémon aliados.", + name: 'Steely Spirit', + description: 'Fortalece o poder dos movimentos do tipo Aço de Pokémon aliados.', }, perishBody: { - name: "Perish Body", - description: "Quando for atingido por um ataque que cause contato direto, tanto o Pokémon quanto o atacante desmaiarão após três turnos, a não ser que recuem da batalha.", + name: 'Perish Body', + description: 'Quando for atingido por um ataque que cause contato direto, tanto o Pokémon quanto o atacante desmaiarão após três turnos, a não ser que recuem da batalha.', }, wanderingSpirit: { - name: "Wandering Spirit", - description: "O Pokémon troca de Habilidade com um Pokémon que o atinja com um movimento que faz contato direto.", + name: 'Wandering Spirit', + description: 'O Pokémon troca de Habilidade com um Pokémon que o atinja com um movimento que faz contato direto.', }, gorillaTactics: { - name: "Gorilla Tactics", - description: "Aumenta o Ataque do Pokémon, entretanto, só permite que ele utilize o primeiro movimento escolhido.", + name: 'Gorilla Tactics', + description: 'Aumenta o Ataque do Pokémon, entretanto, só permite que ele utilize o primeiro movimento escolhido.', }, neutralizingGas: { - name: "Neutralizing Gas", - description: "Se o Pokémon com Gás Neutralizador está na batalha, os efeitos das Habilidades de todos os Pokémon serão anuladas ou não serão ativados.", + name: 'Neutralizing Gas', + description: 'Se o Pokémon com Gás Neutralizador está na batalha, os efeitos das Habilidades de todos os Pokémon serão anuladas ou não serão ativados.', }, pastelVeil: { - name: "Pastel Veil", - description: "Protege o Pokémon e seu aliado de serem envenenados.", + name: 'Pastel Veil', + description: 'Protege o Pokémon e seu aliado de serem envenenados.', }, hungerSwitch: { - name: "Hunger Switch", - description: "O Pokémon troca sua forma, alternando entre o Modo Satisfeito e Modo Voraz ao fim de cada turno.", + name: 'Hunger Switch', + description: 'O Pokémon troca sua forma, alternando entre o Modo Satisfeito e Modo Voraz ao fim de cada turno.', }, quickDraw: { - name: "Quick Draw", - description: "Permite que o Pokémon aja primeiro ocasionalmente.", + name: 'Quick Draw', + description: 'Permite que o Pokémon aja primeiro ocasionalmente.', }, unseenFist: { - name: "Unseen Fist", - description: "Se o Pokémon utilizar movimentos que façam contato direto, pode atacar seu alvo mesmo que ele tenha se protegido.", + name: 'Unseen Fist', + description: 'Se o Pokémon utilizar movimentos que façam contato direto, pode atacar seu alvo mesmo que ele tenha se protegido.', }, curiousMedicine: { - name: "Curious Medicine", - description: "Quando o Pokémon entra em uma batalha, espalha medicamentos de sua concha que removem de aliados todas mudanças de estado.", + name: 'Curious Medicine', + description: 'Quando o Pokémon entra em uma batalha, espalha medicamentos de sua concha que removem de aliados todas mudanças de estado.', }, transistor: { - name: "Transistor", - description: "Fortalece movimentos do tipo Elétrico.", + name: 'Transistor', + description: 'Fortalece movimentos do tipo Elétrico.', }, dragonsMaw: { - name: "Dragon's Maw", - description: "Fortalece movimentos do tipo Dragão.", + name: 'Dragon\'s Maw', + description: 'Fortalece movimentos do tipo Dragão.', }, chillingNeigh: { - name: "Chilling Neigh", - description: "Quando o Pokémon derrota um alvo, emite um relincho assustador que aumenta seu Ataque.", + name: 'Chilling Neigh', + description: 'Quando o Pokémon derrota um alvo, emite um relincho assustador que aumenta seu Ataque.', }, grimNeigh: { - name: "Grim Neigh", - description: "Quando o Pokémon derrota um alvo, emite um relincho assustador que aumenta seu Ataque Esp.", + name: 'Grim Neigh', + description: 'Quando o Pokémon derrota um alvo, emite um relincho assustador que aumenta seu Ataque Esp.', }, asOneGlacier: { - name: "As One", - description: "Essa Habilidade combina os efeitos das Habilidades Enervar de Calyrex e Relincho Branco de Glastrier.", + name: 'As One', + description: 'Essa Habilidade combina os efeitos das Habilidades Enervar de Calyrex e Relincho Branco de Glastrier.', }, asOneSpectrier: { - name: "As One", - description: "Essa Habilidade combina os efeitos das Habilidades Enervar de Calyrex e Relincho Negro de Spectrier.", + name: 'As One', + description: 'Essa Habilidade combina os efeitos das Habilidades Enervar de Calyrex e Relincho Negro de Spectrier.', }, lingeringAroma: { - name: "Lingering Aroma", - description: "O contato com o Pokémon muda a Habilidade do atacante para Lingering Aroma.", + name: 'Lingering Aroma', + description: 'O contato com o Pokémon muda a Habilidade do atacante para Lingering Aroma.', }, seedSower: { - name: "Seed Sower", - description: "Transforma o solo em Terreno de Grama quando o Pokémon é atingido por um ataque.", + name: 'Seed Sower', + description: 'Transforma o solo em Terreno de Grama quando o Pokémon é atingido por um ataque.', }, thermalExchange: { - name: "Thermal Exchange", - description: "Aumenta o atributo de Ataque quando o Pokémon é atingido por um movimento do tipo Fogo. O Pokémon também não pode ser queimado.", + name: 'Thermal Exchange', + description: 'Aumenta o atributo de Ataque quando o Pokémon é atingido por um movimento do tipo Fogo. O Pokémon também não pode ser queimado.', }, angerShell: { - name: "Anger Shell", - description: "Quando um ataque faz com que seu HP caia para metade ou menos, o Pokémon se enfurece. Isso reduz seus atributos de Defesa e Defesa Especial, mas aumenta seus atributos de Ataque, Ataque Especial e Velocidade.", + name: 'Anger Shell', + description: 'Quando um ataque faz com que seu HP caia para metade ou menos, o Pokémon se enfurece. Isso reduz seus atributos de Defesa e Defesa Especial, mas aumenta seus atributos de Ataque, Ataque Especial e Velocidade.', }, purifyingSalt: { - name: "Purifying Salt", - description: "O sal puro do Pokémon o protege de condições de estado e reduz pela metade o dano recebido de movimentos do tipo Fantasma.", + name: 'Purifying Salt', + description: 'O sal puro do Pokémon o protege de condições de estado e reduz pela metade o dano recebido de movimentos do tipo Fantasma.', }, wellBakedBody: { - name: "Well-Baked Body", - description: "O Pokémon não recebe dano quando atingido por movimentos do tipo Fogo. Em vez disso, seu atributo de Defesa é aumentado drasticamente.", + name: 'Well-Baked Body', + description: 'O Pokémon não recebe dano quando atingido por movimentos do tipo Fogo. Em vez disso, seu atributo de Defesa é aumentado drasticamente.', }, windRider: { - name: "Wind Rider", - description: "Aumenta o atributo de Ataque do Pokémon se o Vento de Cauda tiver efeito ou se o Pokémon for atingido por um movimento de vento. O Pokémon também não recebe dano de movimentos de vento.", + name: 'Wind Rider', + description: 'Aumenta o atributo de Ataque do Pokémon se o Vento de Cauda tiver efeito ou se o Pokémon for atingido por um movimento de vento. O Pokémon também não recebe dano de movimentos de vento.', }, guardDog: { - name: "Guard Dog", - description: "Aumenta o atributo de Ataque do Pokémon se intimidado. Movimentos e itens que forçariam o Pokémon a trocar também falham em funcionar.", + name: 'Guard Dog', + description: 'Aumenta o atributo de Ataque do Pokémon se intimidado. Movimentos e itens que forçariam o Pokémon a trocar também falham em funcionar.', }, rockyPayload: { - name: "Rocky Payload", - description: "Aumenta o poder dos movimentos do tipo Pedra.", + name: 'Rocky Payload', + description: 'Aumenta o poder dos movimentos do tipo Pedra.', }, windPower: { - name: "Wind Power", - description: "O Pokémon fica carregado quando é atingido por um movimento de vento, aumentando o poder do próximo movimento do tipo Elétrico que o Pokémon usa.", + name: 'Wind Power', + description: 'O Pokémon fica carregado quando é atingido por um movimento de vento, aumentando o poder do próximo movimento do tipo Elétrico que o Pokémon usa.', }, zeroToHero: { - name: "Zero to Hero", - description: "O Pokémon se transforma em sua Forma Herói quando é trocado.", + name: 'Zero to Hero', + description: 'O Pokémon se transforma em sua Forma Herói quando é trocado.', }, commander: { - name: "Commander", - description: "Quando o Pokémon entra em batalha, ele entra na boca de um Dondozo aliado se ele estiver no campo. O Pokémon então emite comandos de lá.", + name: 'Commander', + description: 'Quando o Pokémon entra em batalha, ele entra na boca de um Dondozo aliado se ele estiver no campo. O Pokémon então emite comandos de lá.', }, electromorphosis: { - name: "Electromorphosis", - description: "O Pokémon fica carregado quando sofre dano, aumentando o poder do próximo movimento do tipo Elétrico que o Pokémon usa.", + name: 'Electromorphosis', + description: 'O Pokémon fica carregado quando sofre dano, aumentando o poder do próximo movimento do tipo Elétrico que o Pokémon usa.', }, protosynthesis: { - name: "Protosynthesis", - description: "Aumenta o atributo mais proficiente do Pokémon sob sol intenso ou se o Pokémon estiver segurando Booster Energy.", + name: 'Protosynthesis', + description: 'Aumenta o atributo mais proficiente do Pokémon sob sol intenso ou se o Pokémon estiver segurando Booster Energy.', }, quarkDrive: { - name: "Quark Drive", - description: "Aumenta o atributo mais proficiente do Pokémon em Terreno Elétrico ou se o Pokémon estiver segurando Booster Energy.", + name: 'Quark Drive', + description: 'Aumenta o atributo mais proficiente do Pokémon em Terreno Elétrico ou se o Pokémon estiver segurando Booster Energy.', }, goodAsGold: { - name: "Good as Gold", - description: "Um corpo de ouro puro dá ao Pokémon imunidade completa aos movimentos de status de outros Pokémon.", + name: 'Good as Gold', + description: 'Um corpo de ouro puro dá ao Pokémon imunidade completa aos movimentos de status de outros Pokémon.', }, vesselOfRuin: { - name: "Vessel of Ruin", - description: "O poder do recipiente de ruínas do Pokémon reduz os atributos de Ataque Especial de todos os Pokémon exceto o dele.", + name: 'Vessel of Ruin', + description: 'O poder do recipiente de ruínas do Pokémon reduz os atributos de Ataque Especial de todos os Pokémon exceto o dele.', }, swordOfRuin: { - name: "Sword of Ruin", - description: "O poder da espada de ruínas do Pokémon reduz os atributos de Defesa de todos os Pokémon exceto o dele.", + name: 'Sword of Ruin', + description: 'O poder da espada de ruínas do Pokémon reduz os atributos de Defesa de todos os Pokémon exceto o dele.', }, tabletsOfRuin: { - name: "Tablets of Ruin", - description: "O poder das tábuas de ruínas do Pokémon reduz os atributos de Ataque de todos os Pokémon exceto o dele.", + name: 'Tablets of Ruin', + description: 'O poder das tábuas de ruínas do Pokémon reduz os atributos de Ataque de todos os Pokémon exceto o dele.', }, beadsOfRuin: { - name: "Beads of Ruin", - description: "O poder das contas de ruínas do Pokémon reduz os atributos de Defesa Especial de todos os Pokémon exceto o dele.", + name: 'Beads of Ruin', + description: 'O poder das contas de ruínas do Pokémon reduz os atributos de Defesa Especial de todos os Pokémon exceto o dele.', }, orichalcumPulse: { - name: "Orichalcum Pulse", - description: "Torna a luz solar intensa quando o Pokémon entra em batalha. O antigo pulso vibrante do Pokémon também aumenta seu atributo de Ataque sob sol intenso.", + name: 'Orichalcum Pulse', + description: 'Torna a luz solar intensa quando o Pokémon entra em batalha. O antigo pulso vibrante do Pokémon também aumenta seu atributo de Ataque sob sol intenso.', }, hadronEngine: { - name: "Hadron Engine", - description: "Transforma o solo em Terreno Elétrico quando o Pokémon entra em batalha. O motor futurista dentro do Pokémon também aumenta seu atributo de Ataque Especial em Terreno Elétrico.", + name: 'Hadron Engine', + description: 'Transforma o solo em Terreno Elétrico quando o Pokémon entra em batalha. O motor futurista dentro do Pokémon também aumenta seu atributo de Ataque Especial em Terreno Elétrico.', }, opportunist: { - name: "Opportunist", - description: "Se um atributo de um oponente for aumentado, o Pokémon aproveita a oportunidade para aumentar o mesmo atributo para si mesmo.", + name: 'Opportunist', + description: 'Se um atributo de um oponente for aumentado, o Pokémon aproveita a oportunidade para aumentar o mesmo atributo para si mesmo.', }, cudChew: { - name: "Cud Chew", - description: "Quando o Pokémon come uma Berry, ele a regurgita no final do próximo turno e come novamente.", + name: 'Cud Chew', + description: 'Quando o Pokémon come uma Berry, ele a regurgita no final do próximo turno e come novamente.', }, sharpness: { - name: "Sharpness", - description: "Aumenta o poder dos movimentos de corte.", + name: 'Sharpness', + description: 'Aumenta o poder dos movimentos de corte.', }, supremeOverlord: { - name: "Supreme Overlord", - description: "Quando o Pokémon entra em batalha, seus atributos de Ataque e Ataque Especial são levemente aumentados para cada um dos aliados em sua equipe que já foram derrotados.", + name: 'Supreme Overlord', + description: 'Quando o Pokémon entra em batalha, seus atributos de Ataque e Ataque Especial são levemente aumentados para cada um dos aliados em sua equipe que já foram derrotados.', }, costar: { - name: "Costar", - description: "Quando o Pokémon entra em batalha, ele copia as mudanças de atributos de um aliado.", + name: 'Costar', + description: 'Quando o Pokémon entra em batalha, ele copia as mudanças de atributos de um aliado.', }, toxicDebris: { - name: "Toxic Debris", - description: "Espalha espinhos venenosos aos pés da equipe adversária quando o Pokémon sofre dano de movimentos físicos.", + name: 'Toxic Debris', + description: 'Espalha espinhos venenosos aos pés da equipe adversária quando o Pokémon sofre dano de movimentos físicos.', }, armorTail: { - name: "Armor Tail", - description: "A cauda misteriosa que cobre a cabeça do Pokémon impede que oponentes usem movimentos de prioridade contra o Pokémon ou seus aliados.", + name: 'Armor Tail', + description: 'A cauda misteriosa que cobre a cabeça do Pokémon impede que oponentes usem movimentos de prioridade contra o Pokémon ou seus aliados.', }, earthEater: { - name: "Earth Eater", - description: "Se for atingido por um movimento do tipo Terra, o Pokémon restaura seu HP em vez de sofrer dano.", + name: 'Earth Eater', + description: 'Se for atingido por um movimento do tipo Terra, o Pokémon restaura seu HP em vez de sofrer dano.', }, myceliumMight: { - name: "Mycelium Might", - description: "O Pokémon sempre agirá mais lentamente quando usar movimentos de status, mas esses movimentos não serão impedidos pela Habilidade do alvo.", + name: 'Mycelium Might', + description: 'O Pokémon sempre agirá mais lentamente quando usar movimentos de status, mas esses movimentos não serão impedidos pela Habilidade do alvo.', }, mindsEye: { - name: "Mind's Eye", - description: "O Pokémon ignora mudanças na evasividade dos oponentes, sua precisão não pode ser reduzida, e ele pode atingir tipos Fantasma com movimentos dos tipos Normal e Lutador.", + name: 'Mind\'s Eye', + description: 'O Pokémon ignora mudanças na evasividade dos oponentes, sua precisão não pode ser reduzida, e ele pode atingir tipos Fantasma com movimentos dos tipos Normal e Lutador.', }, supersweetSyrup: { - name: "Supersweet Syrup", - description: "Um aroma doce e enjoativo se espalha pelo campo na primeira vez que o Pokémon entra em batalha, reduzindo a evasividade dos Pokémon oponentes.", + name: 'Supersweet Syrup', + description: 'Um aroma doce e enjoativo se espalha pelo campo na primeira vez que o Pokémon entra em batalha, reduzindo a evasividade dos Pokémon oponentes.', }, hospitality: { - name: "Hospitality", - description: "Quando o Pokémon entra em batalha, ele banha seu aliado com hospitalidade, restaurando uma pequena quantidade do HP do aliado.", + name: 'Hospitality', + description: 'Quando o Pokémon entra em batalha, ele banha seu aliado com hospitalidade, restaurando uma pequena quantidade do HP do aliado.', }, toxicChain: { - name: "Toxic Chain", - description: "O poder da cadeia tóxica do Pokémon pode envenenar gravemente qualquer alvo que o Pokémon atinja com um movimento.", + name: 'Toxic Chain', + description: 'O poder da cadeia tóxica do Pokémon pode envenenar gravemente qualquer alvo que o Pokémon atinja com um movimento.', }, embodyAspectTeal: { - name: "Embody Aspect", - description: "O coração do Pokémon se enche de memórias, fazendo com que a Máscara Teal brilhe e aumente o atributo de Velocidade do Pokémon.", + name: 'Embody Aspect', + description: 'O coração do Pokémon se enche de memórias, fazendo com que a Máscara Teal brilhe e aumente o atributo de Velocidade do Pokémon.', }, embodyAspectWellspring: { - name: "Embody Aspect", - description: "O coração do Pokémon se enche de memórias, fazendo com que a Máscara Wellspring brilhe e aumente o atributo de Defesa Especial do Pokémon.", + name: 'Embody Aspect', + description: 'O coração do Pokémon se enche de memórias, fazendo com que a Máscara Wellspring brilhe e aumente o atributo de Defesa Especial do Pokémon.', }, embodyAspectHearthflame: { - name: "Embody Aspect", - description: "O coração do Pokémon se enche de memórias, fazendo com que a Máscara Hearthflame brilhe e aumente o atributo de Ataque do Pokémon.", + name: 'Embody Aspect', + description: 'O coração do Pokémon se enche de memórias, fazendo com que a Máscara Hearthflame brilhe e aumente o atributo de Ataque do Pokémon.', }, embodyAspectCornerstone: { - name: "Embody Aspect", - description: "O coração do Pokémon se enche de memórias, fazendo com que a Máscara Cornerstone brilhe e aumente o atributo de Defesa do Pokémon.", + name: 'Embody Aspect', + description: 'O coração do Pokémon se enche de memórias, fazendo com que a Máscara Cornerstone brilhe e aumente o atributo de Defesa do Pokémon.', }, teraShift: { - name: "Tera Shift", - description: "Quando o Pokémon entra em batalha, ele absorve a energia ao seu redor e se transforma em sua Forma Terastal.", + name: 'Tera Shift', + description: 'Quando o Pokémon entra em batalha, ele absorve a energia ao seu redor e se transforma em sua Forma Terastal.', }, teraShell: { - name: "Tera Shell", - description: "A casca do Pokémon contém os poderes de cada tipo. Todos os movimentos que causam dano que atingem o Pokémon quando seu HP está cheio não serão muito eficazes.", + name: 'Tera Shell', + description: 'A casca do Pokémon contém os poderes de cada tipo. Todos os movimentos que causam dano que atingem o Pokémon quando seu HP está cheio não serão muito eficazes.', }, teraformZero: { - name: "Teraform Zero", - description: "Quando Terapagos muda para sua Forma Estelar, ele usa seus poderes ocultos para eliminar todos os efeitos do clima e do terreno, reduzindo-os a zero.", + name: 'Teraform Zero', + description: 'Quando Terapagos muda para sua Forma Estelar, ele usa seus poderes ocultos para eliminar todos os efeitos do clima e do terreno, reduzindo-os a zero.', }, poisonPuppeteer: { - name: "Poison Puppeteer", - description: "Pokémon envenenados pelos movimentos de Pecharunt também ficarão confusos.", + name: 'Poison Puppeteer', + description: 'Pokémon envenenados pelos movimentos de Pecharunt também ficarão confusos.', }, } as const; diff --git a/src/locales/pt_BR/battle-message-ui-handler.ts b/src/locales/pt_BR/battle-message-ui-handler.ts index 03a5b464ecb..29f64802351 100644 --- a/src/locales/pt_BR/battle-message-ui-handler.ts +++ b/src/locales/pt_BR/battle-message-ui-handler.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battleMessageUiHandler: SimpleTranslationEntries = { - "ivBest": "Melhor", - "ivFantastic": "Fantástico", - "ivVeryGood": "Muito Bom", - "ivPrettyGood": "Bom", - "ivDecent": "Regular", - "ivNoGood": "Ruim", -} as const; \ No newline at end of file + 'ivBest': 'Melhor', + 'ivFantastic': 'Fantástico', + 'ivVeryGood': 'Muito Bom', + 'ivPrettyGood': 'Bom', + 'ivDecent': 'Regular', + 'ivNoGood': 'Ruim', +} as const; diff --git a/src/locales/pt_BR/battle.ts b/src/locales/pt_BR/battle.ts index cc49abc7a7c..07e926778d6 100644 --- a/src/locales/pt_BR/battle.ts +++ b/src/locales/pt_BR/battle.ts @@ -1,56 +1,56 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battle: SimpleTranslationEntries = { - "bossAppeared": "{{bossName}} apareceu.", - "trainerAppeared": "{{trainerName}}\nquer batalhar!", - "trainerAppearedDouble": "{{trainerName}}\nquerem batalhar!", - "singleWildAppeared": "Um {{pokemonName}} selvagem apareceu!", - "multiWildAppeared": "Um {{pokemonName1}} e um {{pokemonName2}} selvagens\napareceram!", - "playerComeBack": "{{pokemonName}}, retorne!", - "trainerComeBack": "{{trainerName}} retirou {{pokemonName}} da batalha!", - "playerGo": "{{pokemonName}}, eu escolho você!", - "trainerGo": "{{trainerName}} escolheu {{pokemonName}}!", - "switchQuestion": "Quer trocar\nde {{pokemonName}}?", - "trainerDefeated": "Você derrotou\n{{trainerName}}!", - "pokemonCaught": "{{pokemonName}} foi capturado!", - "pokemon": "Pokémon", - "sendOutPokemon": "{{pokemonName}}, eu escolho você!!", - "hitResultCriticalHit": "Um golpe crítico!", - "hitResultSuperEffective": "É supereficaz!", - "hitResultNotVeryEffective": "É pouco eficaz...", - "hitResultNoEffect": "Isso não afeta {{pokemonName}}!", - "hitResultOneHitKO": "Foi um nocaute de um golpe!", - "attackFailed": "Mas falhou!", - "attackHitsCount": `Acertou {{count}} vezes.`, - "expGain": "{{pokemonName}} ganhou\n{{exp}} pontos de experiência.", - "levelUp": "{{pokemonName}} subiu para \nNv. {{level}}!", - "learnMove": "{{pokemonName}} aprendeu {{moveName}}!", - "learnMovePrompt": "{{pokemonName}} quer aprender\n{{moveName}}.", - "learnMoveLimitReached": "Porém, {{pokemonName}} já sabe\nquatro movimentos.", - "learnMoveReplaceQuestion": "Quer substituir um de seus movimentos por {{moveName}}?", - "learnMoveStopTeaching": "Você não quer aprender\n{{moveName}}?", - "learnMoveNotLearned": "{{pokemonName}} não aprendeu {{moveName}}.", - "learnMoveForgetQuestion": "Qual movimento quer esquecer?", - "learnMoveForgetSuccess": "{{pokemonName}} esqueceu como usar {{moveName}}.", - "countdownPoof": "@d{32}1, @d{15}2, @d{15}e@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}Puf!", - "learnMoveAnd": "E…", - "levelCapUp": "O nível máximo aumentou\npara {{levelCap}}!", - "moveNotImplemented": "{{moveName}} ainda não foi implementado e não pode ser usado.", - "moveNoPP": "Não há mais PP\npara esse movimento!", - "moveDisabled": "Não se pode usar {{moveName}} porque foi desabilitado!", - "noPokeballForce": "Uma força misteriosa\nte impede de usar Poké Bolas.", - "noPokeballTrainer": "Não se pode capturar\nPokémon dos outros!", - "noPokeballMulti": "Não se pode lançar Poké Bolas\nquando há mais de um Pokémon!", - "noPokeballStrong": "Este Pokémon é forte demais para ser capturado!\nÉ preciso enfraquecê-lo primeiro!", - "noEscapeForce": "Uma força misteriosa\nte impede de fugir.", - "noEscapeTrainer": "Não se pode fugir de\nbatalhas contra treinadores!", - "noEscapePokemon": "O movimento {{moveName}} de {{pokemonName}} te impede de fugir!", - "runAwaySuccess": "Você fugiu com sucesso", - "runAwayCannotEscape": "Você nao conseguiu fugir!", - "escapeVerbSwitch": "trocar", - "escapeVerbFlee": "fugir", - "notDisabled": "O movimento {{moveName}}\nnão está mais desabilitado!", - "skipItemQuestion": "Tem certeza de que não quer escolher um item?", - "eggHatching": "Opa?", - "ivScannerUseQuestion": "Quer usar o Scanner de IVs em {{pokemonName}}?" -} as const; \ No newline at end of file + 'bossAppeared': '{{bossName}} apareceu.', + 'trainerAppeared': '{{trainerName}}\nquer batalhar!', + 'trainerAppearedDouble': '{{trainerName}}\nquerem batalhar!', + 'singleWildAppeared': 'Um {{pokemonName}} selvagem apareceu!', + 'multiWildAppeared': 'Um {{pokemonName1}} e um {{pokemonName2}} selvagens\napareceram!', + 'playerComeBack': '{{pokemonName}}, retorne!', + 'trainerComeBack': '{{trainerName}} retirou {{pokemonName}} da batalha!', + 'playerGo': '{{pokemonName}}, eu escolho você!', + 'trainerGo': '{{trainerName}} escolheu {{pokemonName}}!', + 'switchQuestion': 'Quer trocar\nde {{pokemonName}}?', + 'trainerDefeated': 'Você derrotou\n{{trainerName}}!', + 'pokemonCaught': '{{pokemonName}} foi capturado!', + 'pokemon': 'Pokémon', + 'sendOutPokemon': '{{pokemonName}}, eu escolho você!!', + 'hitResultCriticalHit': 'Um golpe crítico!', + 'hitResultSuperEffective': 'É supereficaz!', + 'hitResultNotVeryEffective': 'É pouco eficaz...', + 'hitResultNoEffect': 'Isso não afeta {{pokemonName}}!', + 'hitResultOneHitKO': 'Foi um nocaute de um golpe!', + 'attackFailed': 'Mas falhou!', + 'attackHitsCount': 'Acertou {{count}} vezes.', + 'expGain': '{{pokemonName}} ganhou\n{{exp}} pontos de experiência.', + 'levelUp': '{{pokemonName}} subiu para \nNv. {{level}}!', + 'learnMove': '{{pokemonName}} aprendeu {{moveName}}!', + 'learnMovePrompt': '{{pokemonName}} quer aprender\n{{moveName}}.', + 'learnMoveLimitReached': 'Porém, {{pokemonName}} já sabe\nquatro movimentos.', + 'learnMoveReplaceQuestion': 'Quer substituir um de seus movimentos por {{moveName}}?', + 'learnMoveStopTeaching': 'Você não quer aprender\n{{moveName}}?', + 'learnMoveNotLearned': '{{pokemonName}} não aprendeu {{moveName}}.', + 'learnMoveForgetQuestion': 'Qual movimento quer esquecer?', + 'learnMoveForgetSuccess': '{{pokemonName}} esqueceu como usar {{moveName}}.', + 'countdownPoof': '@d{32}1, @d{15}2, @d{15}e@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}Puf!', + 'learnMoveAnd': 'E…', + 'levelCapUp': 'O nível máximo aumentou\npara {{levelCap}}!', + 'moveNotImplemented': '{{moveName}} ainda não foi implementado e não pode ser usado.', + 'moveNoPP': 'Não há mais PP\npara esse movimento!', + 'moveDisabled': 'Não se pode usar {{moveName}} porque foi desabilitado!', + 'noPokeballForce': 'Uma força misteriosa\nte impede de usar Poké Bolas.', + 'noPokeballTrainer': 'Não se pode capturar\nPokémon dos outros!', + 'noPokeballMulti': 'Não se pode lançar Poké Bolas\nquando há mais de um Pokémon!', + 'noPokeballStrong': 'Este Pokémon é forte demais para ser capturado!\nÉ preciso enfraquecê-lo primeiro!', + 'noEscapeForce': 'Uma força misteriosa\nte impede de fugir.', + 'noEscapeTrainer': 'Não se pode fugir de\nbatalhas contra treinadores!', + 'noEscapePokemon': 'O movimento {{moveName}} de {{pokemonName}} te impede de fugir!', + 'runAwaySuccess': 'Você fugiu com sucesso', + 'runAwayCannotEscape': 'Você nao conseguiu fugir!', + 'escapeVerbSwitch': 'trocar', + 'escapeVerbFlee': 'fugir', + 'notDisabled': 'O movimento {{moveName}}\nnão está mais desabilitado!', + 'skipItemQuestion': 'Tem certeza de que não quer escolher um item?', + 'eggHatching': 'Opa?', + 'ivScannerUseQuestion': 'Quer usar o Scanner de IVs em {{pokemonName}}?' +} as const; diff --git a/src/locales/pt_BR/berry.ts b/src/locales/pt_BR/berry.ts index c5a9d882530..729428820b0 100644 --- a/src/locales/pt_BR/berry.ts +++ b/src/locales/pt_BR/berry.ts @@ -1,48 +1,48 @@ -import { BerryTranslationEntries } from "#app/plugins/i18n"; +import { BerryTranslationEntries } from '#app/plugins/i18n'; export const berry: BerryTranslationEntries = { - "SITRUS": { - name: "Fruta Sitrus", - effect: "Restaura 25% dos PS se os PS estiverem abaixo de 50%", + 'SITRUS': { + name: 'Fruta Sitrus', + effect: 'Restaura 25% dos PS se os PS estiverem abaixo de 50%', }, - "LUM": { - name: "Fruta Lum", - effect: "Cura qualquer mudança de estado ou confusão", + 'LUM': { + name: 'Fruta Lum', + effect: 'Cura qualquer mudança de estado ou confusão', }, - "ENIGMA": { - name: "Fruta Enigma", - effect: "Restaura 25% dos PS se atingido por um golpe supereficaz", + 'ENIGMA': { + name: 'Fruta Enigma', + effect: 'Restaura 25% dos PS se atingido por um golpe supereficaz', }, - "LIECHI": { - name: "Fruta Liechi", - effect: "Aumenta o Ataque se os PS estiverem abaixo de 25%", + 'LIECHI': { + name: 'Fruta Liechi', + effect: 'Aumenta o Ataque se os PS estiverem abaixo de 25%', }, - "GANLON": { - name: "Fruta Ganlon", - effect: "Aumenta a Defesa se os PS estiverem abaixo de 25%", + 'GANLON': { + name: 'Fruta Ganlon', + effect: 'Aumenta a Defesa se os PS estiverem abaixo de 25%', }, - "PETAYA": { - name: "Fruta Petaya", - effect: "Aumenta o Ataque Especial se os PS estiverem abaixo de 25%", + 'PETAYA': { + name: 'Fruta Petaya', + effect: 'Aumenta o Ataque Especial se os PS estiverem abaixo de 25%', }, - "APICOT": { - name: "Fruta Apicot", - effect: "Aumenta a Defesa Especial se os PS estiverem abaixo de 25%", + 'APICOT': { + name: 'Fruta Apicot', + effect: 'Aumenta a Defesa Especial se os PS estiverem abaixo de 25%', }, - "SALAC": { - name: "Fruta Salac", - effect: "Aumenta a Velocidade se os PS estiverem abaixo de 25%", + 'SALAC': { + name: 'Fruta Salac', + effect: 'Aumenta a Velocidade se os PS estiverem abaixo de 25%', }, - "LANSAT": { - name: "Fruta Lansat", - effect: "Aumenta a chance de acerto crítico se os PS estiverem abaixo de 25%", + 'LANSAT': { + name: 'Fruta Lansat', + effect: 'Aumenta a chance de acerto crítico se os PS estiverem abaixo de 25%', }, - "STARF": { - name: "Fruta Starf", - effect: "Aumenta drasticamente um atributo aleatório se os PS estiverem abaixo de 25%", + 'STARF': { + name: 'Fruta Starf', + effect: 'Aumenta drasticamente um atributo aleatório se os PS estiverem abaixo de 25%', }, - "LEPPA": { - name: "Fruta Leppa", - effect: "Restaura 10 PP de um movimento se seus PP acabarem", + 'LEPPA': { + name: 'Fruta Leppa', + effect: 'Restaura 10 PP de um movimento se seus PP acabarem', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/pt_BR/command-ui-handler.ts b/src/locales/pt_BR/command-ui-handler.ts index 1df44c49e5b..273139915fc 100644 --- a/src/locales/pt_BR/command-ui-handler.ts +++ b/src/locales/pt_BR/command-ui-handler.ts @@ -1,9 +1,9 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const commandUiHandler: SimpleTranslationEntries = { - "fight": "Lutar", - "ball": "Bolas", - "pokemon": "Pokémon", - "run": "Fugir", - "actionMessage": "O que {{pokemonName}}\ndeve fazer?", -} as const; \ No newline at end of file + 'fight': 'Lutar', + 'ball': 'Bolas', + 'pokemon': 'Pokémon', + 'run': 'Fugir', + 'actionMessage': 'O que {{pokemonName}}\ndeve fazer?', +} as const; diff --git a/src/locales/pt_BR/config.ts b/src/locales/pt_BR/config.ts index a9244f5e9db..f84e91de715 100644 --- a/src/locales/pt_BR/config.ts +++ b/src/locales/pt_BR/config.ts @@ -1,50 +1,50 @@ -import { ability } from "./ability"; -import { abilityTriggers } from "./ability-trigger"; -import { battle } from "./battle"; -import { commandUiHandler } from "./command-ui-handler"; -import { egg } from "./egg"; -import { fightUiHandler } from "./fight-ui-handler"; -import { growth } from "./growth"; -import { menu } from "./menu"; -import { menuUiHandler } from "./menu-ui-handler"; -import { modifierType } from "./modifier-type"; -import { move } from "./move"; -import { nature } from "./nature"; -import { pokeball } from "./pokeball"; -import { pokemon } from "./pokemon"; -import { pokemonInfo } from "./pokemon-info"; -import { splashMessages } from "./splash-messages"; -import { starterSelectUiHandler } from "./starter-select-ui-handler"; -import { titles, trainerClasses, trainerNames } from "./trainers"; -import { tutorial } from "./tutorial"; -import { weather } from "./weather"; -import { berry } from "./berry"; -import { voucher } from "./voucher"; +import { ability } from './ability'; +import { abilityTriggers } from './ability-trigger'; +import { battle } from './battle'; +import { commandUiHandler } from './command-ui-handler'; +import { egg } from './egg'; +import { fightUiHandler } from './fight-ui-handler'; +import { growth } from './growth'; +import { menu } from './menu'; +import { menuUiHandler } from './menu-ui-handler'; +import { modifierType } from './modifier-type'; +import { move } from './move'; +import { nature } from './nature'; +import { pokeball } from './pokeball'; +import { pokemon } from './pokemon'; +import { pokemonInfo } from './pokemon-info'; +import { splashMessages } from './splash-messages'; +import { starterSelectUiHandler } from './starter-select-ui-handler'; +import { titles, trainerClasses, trainerNames } from './trainers'; +import { tutorial } from './tutorial'; +import { weather } from './weather'; +import { berry } from './berry'; +import { voucher } from './voucher'; export const ptBrConfig = { - ability: ability, - abilityTriggers: abilityTriggers, - battle: battle, - commandUiHandler: commandUiHandler, - egg: egg, - fightUiHandler: fightUiHandler, - menuUiHandler: menuUiHandler, - menu: menu, - move: move, - pokeball: pokeball, - pokemonInfo: pokemonInfo, - pokemon: pokemon, - starterSelectUiHandler: starterSelectUiHandler, - titles: titles, - trainerClasses: trainerClasses, - trainerNames: trainerNames, - tutorial: tutorial, - splashMessages: splashMessages, - nature: nature, - growth: growth, - weather: weather, - modifierType: modifierType, - berry: berry, - voucher: voucher, -} + ability: ability, + abilityTriggers: abilityTriggers, + battle: battle, + commandUiHandler: commandUiHandler, + egg: egg, + fightUiHandler: fightUiHandler, + menuUiHandler: menuUiHandler, + menu: menu, + move: move, + pokeball: pokeball, + pokemonInfo: pokemonInfo, + pokemon: pokemon, + starterSelectUiHandler: starterSelectUiHandler, + titles: titles, + trainerClasses: trainerClasses, + trainerNames: trainerNames, + tutorial: tutorial, + splashMessages: splashMessages, + nature: nature, + growth: growth, + weather: weather, + modifierType: modifierType, + berry: berry, + voucher: voucher, +}; diff --git a/src/locales/pt_BR/egg.ts b/src/locales/pt_BR/egg.ts index 1d38fd5c694..44825987d26 100644 --- a/src/locales/pt_BR/egg.ts +++ b/src/locales/pt_BR/egg.ts @@ -1,21 +1,21 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const egg: SimpleTranslationEntries = { - "egg": "Ovo", - "greatTier": "Raro", - "ultraTier": "Épico", - "masterTier": "Lendário", - "defaultTier": "Comum", - "hatchWavesMessageSoon": "Barulhos podem ser ouvidos vindo de dentro! Vai chocar em breve!", - "hatchWavesMessageClose": "Parece se mover ocasionalmente. Pode estar perto de chocar.", - "hatchWavesMessageNotClose": "O que vai nascer disso? Não parece estar perto de chocar.", - "hatchWavesMessageLongTime": "Parece que este ovo vai demorar bastante para chocar.", - "gachaTypeLegendary": "Chance de Lendário Aumentada", - "gachaTypeMove": "Chance de Movimento de Ovo Raro Aumentada", - "gachaTypeShiny": "Chance de Shiny Aumentada", - "selectMachine": "Escolha uma máquina.", - "notEnoughVouchers": "Você não tem vouchers suficientes!", - "tooManyEggs": "Você já tem muitos ovos!", - "pull": "Prêmio", - "pulls": "Prêmios" -} as const; \ No newline at end of file + 'egg': 'Ovo', + 'greatTier': 'Raro', + 'ultraTier': 'Épico', + 'masterTier': 'Lendário', + 'defaultTier': 'Comum', + 'hatchWavesMessageSoon': 'Barulhos podem ser ouvidos vindo de dentro! Vai chocar em breve!', + 'hatchWavesMessageClose': 'Parece se mover ocasionalmente. Pode estar perto de chocar.', + 'hatchWavesMessageNotClose': 'O que vai nascer disso? Não parece estar perto de chocar.', + 'hatchWavesMessageLongTime': 'Parece que este ovo vai demorar bastante para chocar.', + 'gachaTypeLegendary': 'Chance de Lendário Aumentada', + 'gachaTypeMove': 'Chance de Movimento de Ovo Raro Aumentada', + 'gachaTypeShiny': 'Chance de Shiny Aumentada', + 'selectMachine': 'Escolha uma máquina.', + 'notEnoughVouchers': 'Você não tem vouchers suficientes!', + 'tooManyEggs': 'Você já tem muitos ovos!', + 'pull': 'Prêmio', + 'pulls': 'Prêmios' +} as const; diff --git a/src/locales/pt_BR/fight-ui-handler.ts b/src/locales/pt_BR/fight-ui-handler.ts index 7b8c5aab892..796c8c46310 100644 --- a/src/locales/pt_BR/fight-ui-handler.ts +++ b/src/locales/pt_BR/fight-ui-handler.ts @@ -1,7 +1,7 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const fightUiHandler: SimpleTranslationEntries = { - "pp": "PP", - "power": "Poder", - "accuracy": "Precisão", + 'pp': 'PP', + 'power': 'Poder', + 'accuracy': 'Precisão', } as const; diff --git a/src/locales/pt_BR/growth.ts b/src/locales/pt_BR/growth.ts index 70848b60668..35af874f226 100644 --- a/src/locales/pt_BR/growth.ts +++ b/src/locales/pt_BR/growth.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const growth: SimpleTranslationEntries = { - "Erratic": "Instável", - "Fast": "Rápido", - "Medium_Fast": "Meio Rápido", - "Medium_Slow": "Meio Lento", - "Slow": "Lento", - "Fluctuating": "Flutuante" -} as const; \ No newline at end of file + 'Erratic': 'Instável', + 'Fast': 'Rápido', + 'Medium_Fast': 'Meio Rápido', + 'Medium_Slow': 'Meio Lento', + 'Slow': 'Lento', + 'Fluctuating': 'Flutuante' +} as const; diff --git a/src/locales/pt_BR/menu-ui-handler.ts b/src/locales/pt_BR/menu-ui-handler.ts index 5a60b614338..88f6c9271e4 100644 --- a/src/locales/pt_BR/menu-ui-handler.ts +++ b/src/locales/pt_BR/menu-ui-handler.ts @@ -1,23 +1,23 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const menuUiHandler: SimpleTranslationEntries = { - "GAME_SETTINGS": "Configurações", - "ACHIEVEMENTS": "Conquistas", - "STATS": "Estatísticas", - "VOUCHERS": "Vouchers", - "EGG_LIST": "Incubadora", - "EGG_GACHA": "Gacha de ovos", - "MANAGE_DATA": "Gerenciar dados", - "COMMUNITY": "Comunidade", - "SAVE_AND_QUIT": "Salvar e sair", - "LOG_OUT": "Logout", - "slot": "Slot {{slotNumber}}", - "importSession": "Importar sessão", - "importSlotSelect": "Selecione um slot para importar.", - "exportSession": "Exportar sessão", - "exportSlotSelect": "Selecione um slot para exportar.", - "importData": "Importar dados", - "exportData": "Exportar dados", - "cancel": "Cancelar", - "losingProgressionWarning": "Você vai perder todo o progresso desde o início da batalha. Confirmar?" -} as const; \ No newline at end of file + 'GAME_SETTINGS': 'Configurações', + 'ACHIEVEMENTS': 'Conquistas', + 'STATS': 'Estatísticas', + 'VOUCHERS': 'Vouchers', + 'EGG_LIST': 'Incubadora', + 'EGG_GACHA': 'Gacha de ovos', + 'MANAGE_DATA': 'Gerenciar dados', + 'COMMUNITY': 'Comunidade', + 'SAVE_AND_QUIT': 'Salvar e sair', + 'LOG_OUT': 'Logout', + 'slot': 'Slot {{slotNumber}}', + 'importSession': 'Importar sessão', + 'importSlotSelect': 'Selecione um slot para importar.', + 'exportSession': 'Exportar sessão', + 'exportSlotSelect': 'Selecione um slot para exportar.', + 'importData': 'Importar dados', + 'exportData': 'Exportar dados', + 'cancel': 'Cancelar', + 'losingProgressionWarning': 'Você vai perder todo o progresso desde o início da batalha. Confirmar?' +} as const; diff --git a/src/locales/pt_BR/menu.ts b/src/locales/pt_BR/menu.ts index 10f3fa4dff8..4250173f76d 100644 --- a/src/locales/pt_BR/menu.ts +++ b/src/locales/pt_BR/menu.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,46 +6,46 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const menu: SimpleTranslationEntries = { - "cancel": "Cancelar", - "continue": "Continuar", - "dailyRun": "Desafio Diário (Beta)", - "loadGame": "Carregar Jogo", - "newGame": "Novo Jogo", - "selectGameMode": "Escolha um modo de jogo.", - "logInOrCreateAccount": "Inicie uma sessão ou crie uma conta para começar. Não é necessário email!", - "username": "Nome de Usuário", - "password": "Senha", - "login": "Iniciar sessão", - "register": "Registrar-se", - "emptyUsername": "Nome de usuário vazio", - "invalidLoginUsername": "Nome de usuário inválido", - "invalidRegisterUsername": "O nome de usuário só pode conter letras, números e sublinhados", - "invalidLoginPassword": "Senha inválida", - "invalidRegisterPassword": "A senha deve ter pelo menos 6 caracteres", - "usernameAlreadyUsed": "Esse nome de usuário já está em uso", - "accountNonExistent": "Esse nome de usuário não existe", - "unmatchingPassword": "Senha incorreta", - "passwordNotMatchingConfirmPassword": "As senhas não coincidem", - "confirmPassword": "Confirmar senha", - "registrationAgeWarning": "Se registrando, você confirma que tem pelo menos 13 anos de idade.", - "backToLogin": "Voltar ao Login", - "failedToLoadSaveData": "Não foi possível carregar os dados de salvamento. Por favor, recarregue a página.\nSe a falha persistir, contate o administrador.", - "sessionSuccess": "Sessão carregada com sucesso.", - "failedToLoadSession": "Não foi possível carregar os dados da sua sessão.\nEles podem estar corrompidos.", - "boyOrGirl": "Você é um menino ou uma menina?", - "boy": "Menino", - "girl": "Menina", - "evolving": "Que?\n{{pokemonName}} tá evoluindo!", - "stoppedEvolving": "{{pokemonName}} parou de evoluir.", - "pauseEvolutionsQuestion": "Gostaria de pausar evoluções para {{pokemonName}}?\nEvoluções podem ser religadas na tela de equipe.", - "evolutionsPaused": "Evoluções foram paradas para {{pokemonName}}.", - "evolutionDone": "Parabéns!\nSeu {{pokemonName}} evolui para {{evolvedPokemonName}}!", - "dailyRankings": "Classificação Diária", - "weeklyRankings": "Classificação Semanal", - "noRankings": "Sem Classificação", - "loading": "Carregando…", - "playersOnline": "Jogadores Ativos", - "empty": "Vazio", - "yes": "Sim", - "no": "Não", -} as const; \ No newline at end of file + 'cancel': 'Cancelar', + 'continue': 'Continuar', + 'dailyRun': 'Desafio Diário (Beta)', + 'loadGame': 'Carregar Jogo', + 'newGame': 'Novo Jogo', + 'selectGameMode': 'Escolha um modo de jogo.', + 'logInOrCreateAccount': 'Inicie uma sessão ou crie uma conta para começar. Não é necessário email!', + 'username': 'Nome de Usuário', + 'password': 'Senha', + 'login': 'Iniciar sessão', + 'register': 'Registrar-se', + 'emptyUsername': 'Nome de usuário vazio', + 'invalidLoginUsername': 'Nome de usuário inválido', + 'invalidRegisterUsername': 'O nome de usuário só pode conter letras, números e sublinhados', + 'invalidLoginPassword': 'Senha inválida', + 'invalidRegisterPassword': 'A senha deve ter pelo menos 6 caracteres', + 'usernameAlreadyUsed': 'Esse nome de usuário já está em uso', + 'accountNonExistent': 'Esse nome de usuário não existe', + 'unmatchingPassword': 'Senha incorreta', + 'passwordNotMatchingConfirmPassword': 'As senhas não coincidem', + 'confirmPassword': 'Confirmar senha', + 'registrationAgeWarning': 'Se registrando, você confirma que tem pelo menos 13 anos de idade.', + 'backToLogin': 'Voltar ao Login', + 'failedToLoadSaveData': 'Não foi possível carregar os dados de salvamento. Por favor, recarregue a página.\nSe a falha persistir, contate o administrador.', + 'sessionSuccess': 'Sessão carregada com sucesso.', + 'failedToLoadSession': 'Não foi possível carregar os dados da sua sessão.\nEles podem estar corrompidos.', + 'boyOrGirl': 'Você é um menino ou uma menina?', + 'boy': 'Menino', + 'girl': 'Menina', + 'evolving': 'Que?\n{{pokemonName}} tá evoluindo!', + 'stoppedEvolving': '{{pokemonName}} parou de evoluir.', + 'pauseEvolutionsQuestion': 'Gostaria de pausar evoluções para {{pokemonName}}?\nEvoluções podem ser religadas na tela de equipe.', + 'evolutionsPaused': 'Evoluções foram paradas para {{pokemonName}}.', + 'evolutionDone': 'Parabéns!\nSeu {{pokemonName}} evolui para {{evolvedPokemonName}}!', + 'dailyRankings': 'Classificação Diária', + 'weeklyRankings': 'Classificação Semanal', + 'noRankings': 'Sem Classificação', + 'loading': 'Carregando…', + 'playersOnline': 'Jogadores Ativos', + 'empty': 'Vazio', + 'yes': 'Sim', + 'no': 'Não', +} as const; diff --git a/src/locales/pt_BR/modifier-type.ts b/src/locales/pt_BR/modifier-type.ts index faf10fbab2b..61828814074 100644 --- a/src/locales/pt_BR/modifier-type.ts +++ b/src/locales/pt_BR/modifier-type.ts @@ -1,387 +1,387 @@ -import { ModifierTypeTranslationEntries } from "#app/plugins/i18n"; +import { ModifierTypeTranslationEntries } from '#app/plugins/i18n'; export const modifierType: ModifierTypeTranslationEntries = { ModifierType: { - "AddPokeballModifierType": { - name: "{{modifierCount}}x {{pokeballName}}", - description: "Ganhe x{{modifierCount}} {{pokeballName}} (Mochila: {{pokeballAmount}}) \nChance de captura: {{catchRate}}", + 'AddPokeballModifierType': { + name: '{{modifierCount}}x {{pokeballName}}', + description: 'Ganhe x{{modifierCount}} {{pokeballName}} (Mochila: {{pokeballAmount}}) \nChance de captura: {{catchRate}}', }, - "AddVoucherModifierType": { - name: "{{modifierCount}}x {{voucherTypeName}}", - description: "Ganhe x{{modifierCount}} {{voucherTypeName}}", + 'AddVoucherModifierType': { + name: '{{modifierCount}}x {{voucherTypeName}}', + description: 'Ganhe x{{modifierCount}} {{voucherTypeName}}', }, - "PokemonHeldItemModifierType": { + 'PokemonHeldItemModifierType': { extra: { - "inoperable": "{{pokemonName}} não pode\nsegurar esse item!", - "tooMany": "{{pokemonName}} tem muitos\nmuitos deste item!", + 'inoperable': '{{pokemonName}} não pode\nsegurar esse item!', + 'tooMany': '{{pokemonName}} tem muitos\nmuitos deste item!', } }, - "PokemonHpRestoreModifierType": { - description: "Restaura {{restorePoints}} PS ou {{restorePercent}}% PS de um Pokémon, o que for maior", + 'PokemonHpRestoreModifierType': { + description: 'Restaura {{restorePoints}} PS ou {{restorePercent}}% PS de um Pokémon, o que for maior', extra: { - "fully": "Restaura totalmente os PS de um Pokémon", - "fullyWithStatus": "Restaura totalmente os PS de um Pokémon e cura qualquer mudança de estado", + 'fully': 'Restaura totalmente os PS de um Pokémon', + 'fullyWithStatus': 'Restaura totalmente os PS de um Pokémon e cura qualquer mudança de estado', } }, - "PokemonReviveModifierType": { - description: "Reanima um Pokémon e restaura {{restorePercent}}% PS", + 'PokemonReviveModifierType': { + description: 'Reanima um Pokémon e restaura {{restorePercent}}% PS', }, - "PokemonStatusHealModifierType": { - description: "Cura uma mudança de estado de um Pokémon", + 'PokemonStatusHealModifierType': { + description: 'Cura uma mudança de estado de um Pokémon', }, - "PokemonPpRestoreModifierType": { - description: "Restaura {{restorePoints}} PP para um movimento de um Pokémon", + 'PokemonPpRestoreModifierType': { + description: 'Restaura {{restorePoints}} PP para um movimento de um Pokémon', extra: { - "fully": "Restaura todos os PP para um movimento de um Pokémon", + 'fully': 'Restaura todos os PP para um movimento de um Pokémon', } }, - "PokemonAllMovePpRestoreModifierType": { - description: "Restaura {{restorePoints}} PP para todos os movimentos de um Pokémon", + 'PokemonAllMovePpRestoreModifierType': { + description: 'Restaura {{restorePoints}} PP para todos os movimentos de um Pokémon', extra: { - "fully": "Restaura todos os PP para todos os movimentos de um Pokémon", + 'fully': 'Restaura todos os PP para todos os movimentos de um Pokémon', } }, - "PokemonPpUpModifierType": { - description: "Aumenta permanentemente os PP para o movimento de um Pokémon em {{upPoints}} para cada 5 PP máximos (máximo 3)", + 'PokemonPpUpModifierType': { + description: 'Aumenta permanentemente os PP para o movimento de um Pokémon em {{upPoints}} para cada 5 PP máximos (máximo 3)', }, - "PokemonNatureChangeModifierType": { - name: "Hortelã {{natureName}}", - description: "Muda a natureza de um Pokémon para {{natureName}} e a desbloqueia permanentemente para seu inicial", + 'PokemonNatureChangeModifierType': { + name: 'Hortelã {{natureName}}', + description: 'Muda a natureza de um Pokémon para {{natureName}} e a desbloqueia permanentemente para seu inicial', }, - "DoubleBattleChanceBoosterModifierType": { - description: "Dobra as chances de encontrar uma batalha em dupla por {{battleCount}} batalhas", + 'DoubleBattleChanceBoosterModifierType': { + description: 'Dobra as chances de encontrar uma batalha em dupla por {{battleCount}} batalhas', }, - "TempBattleStatBoosterModifierType": { - description: "Aumenta o atributo de {{tempBattleStatName}} para todos os membros da equipe por 5 batalhas", + 'TempBattleStatBoosterModifierType': { + description: 'Aumenta o atributo de {{tempBattleStatName}} para todos os membros da equipe por 5 batalhas', }, - "AttackTypeBoosterModifierType": { - description: "Aumenta o poder dos ataques do tipo {{moveType}} de um Pokémon em 20%", + 'AttackTypeBoosterModifierType': { + description: 'Aumenta o poder dos ataques do tipo {{moveType}} de um Pokémon em 20%', }, - "PokemonLevelIncrementModifierType": { - description: "Aumenta em 1 o nível de um Pokémon", + 'PokemonLevelIncrementModifierType': { + description: 'Aumenta em 1 o nível de um Pokémon', }, - "AllPokemonLevelIncrementModifierType": { - description: "Aumenta em 1 os níveis de todos os Pokémon", + 'AllPokemonLevelIncrementModifierType': { + description: 'Aumenta em 1 os níveis de todos os Pokémon', }, - "PokemonBaseStatBoosterModifierType": { - description: "Aumenta o atributo base de {{statName}} em 10%. Quanto maior os IVs, maior o limite de aumento", + 'PokemonBaseStatBoosterModifierType': { + description: 'Aumenta o atributo base de {{statName}} em 10%. Quanto maior os IVs, maior o limite de aumento', }, - "AllPokemonFullHpRestoreModifierType": { - description: "Restaura totalmente os PS de todos os Pokémon", + 'AllPokemonFullHpRestoreModifierType': { + description: 'Restaura totalmente os PS de todos os Pokémon', }, - "AllPokemonFullReviveModifierType": { - description: "Reanima todos os Pokémon, restaurando totalmente seus PS", + 'AllPokemonFullReviveModifierType': { + description: 'Reanima todos os Pokémon, restaurando totalmente seus PS', }, - "MoneyRewardModifierType": { - description: "Garante uma quantidade {{moneyMultiplier}} de dinheiro (₽{{moneyAmount}})", + 'MoneyRewardModifierType': { + description: 'Garante uma quantidade {{moneyMultiplier}} de dinheiro (₽{{moneyAmount}})', extra: { - "small": "pequena", - "moderate": "moderada", - "large": "grande", + 'small': 'pequena', + 'moderate': 'moderada', + 'large': 'grande', }, }, - "ExpBoosterModifierType": { - description: "Aumenta o ganho de pontos de experiência em {{boostPercent}}%", + 'ExpBoosterModifierType': { + description: 'Aumenta o ganho de pontos de experiência em {{boostPercent}}%', }, - "PokemonExpBoosterModifierType": { - description: "Aumenta o ganho de pontos de experiência de quem segura em {{boostPercent}}%", + 'PokemonExpBoosterModifierType': { + description: 'Aumenta o ganho de pontos de experiência de quem segura em {{boostPercent}}%', }, - "PokemonFriendshipBoosterModifierType": { - description: "Aumenta o ganho de amizade por vitória em 50%", + 'PokemonFriendshipBoosterModifierType': { + description: 'Aumenta o ganho de amizade por vitória em 50%', }, - "PokemonMoveAccuracyBoosterModifierType": { - description: "Aumenta a precisão dos movimentos em {{accuracyAmount}} (máximo 100)", + 'PokemonMoveAccuracyBoosterModifierType': { + description: 'Aumenta a precisão dos movimentos em {{accuracyAmount}} (máximo 100)', }, - "PokemonMultiHitModifierType": { - description: "Ataques acertam uma vez adicional ao custo de uma redução de poder de 60/75/82.5% por item, respectivamente", + 'PokemonMultiHitModifierType': { + description: 'Ataques acertam uma vez adicional ao custo de uma redução de poder de 60/75/82.5% por item, respectivamente', }, - "TmModifierType": { - name: "TM{{moveId}} - {{moveName}}", - description: "Ensina {{moveName}} a um Pokémon", + 'TmModifierType': { + name: 'TM{{moveId}} - {{moveName}}', + description: 'Ensina {{moveName}} a um Pokémon', }, - "EvolutionItemModifierType": { - description: "Faz certos Pokémon evoluírem", + 'EvolutionItemModifierType': { + description: 'Faz certos Pokémon evoluírem', }, - "FormChangeItemModifierType": { - description: "Faz certos Pokémon mudarem de forma", + 'FormChangeItemModifierType': { + description: 'Faz certos Pokémon mudarem de forma', }, - "FusePokemonModifierType": { - description: "Combina dois Pokémon (transfere Habilidade, divide os atributos base e tipos, compartilha os movimentos)", + 'FusePokemonModifierType': { + description: 'Combina dois Pokémon (transfere Habilidade, divide os atributos base e tipos, compartilha os movimentos)', }, - "TerastallizeModifierType": { - name: "{{teraType}} Fragmento Tera", - description: "{{teraType}} Terastaliza um Pokémon por até 10 batalhas", + 'TerastallizeModifierType': { + name: '{{teraType}} Fragmento Tera', + description: '{{teraType}} Terastaliza um Pokémon por até 10 batalhas', }, - "ContactHeldItemTransferChanceModifierType": { - description: "Quando atacar, tem {{chancePercent}}% de chance de roubar um item do oponente", + 'ContactHeldItemTransferChanceModifierType': { + description: 'Quando atacar, tem {{chancePercent}}% de chance de roubar um item do oponente', }, - "TurnHeldItemTransferModifierType": { - description: "Todo turno, o Pokémon ganha um item aleatório do oponente", + 'TurnHeldItemTransferModifierType': { + description: 'Todo turno, o Pokémon ganha um item aleatório do oponente', }, - "EnemyAttackStatusEffectChanceModifierType": { - description: "Ganha {{chancePercent}}% de chance de infligir {{statusEffect}} com ataques", + 'EnemyAttackStatusEffectChanceModifierType': { + description: 'Ganha {{chancePercent}}% de chance de infligir {{statusEffect}} com ataques', }, - "EnemyEndureChanceModifierType": { - description: "Ganha {{chancePercent}}% de chance de sobreviver a um ataque que o faria desmaiar", + 'EnemyEndureChanceModifierType': { + description: 'Ganha {{chancePercent}}% de chance de sobreviver a um ataque que o faria desmaiar', }, - "RARE_CANDY": { name: "Doce Raro" }, - "RARER_CANDY": { name: "Doce Raríssimo" }, + 'RARE_CANDY': { name: 'Doce Raro' }, + 'RARER_CANDY': { name: 'Doce Raríssimo' }, - "MEGA_BRACELET": { name: "Mega Bracelete", description: "Mega Stones become available" }, - "DYNAMAX_BAND": { name: "Bracelete Dynamax", description: "Max Mushrooms become available" }, - "TERA_ORB": { name: "Orbe Tera", description: "Fragmentos Tera ficam disponíveis" }, + 'MEGA_BRACELET': { name: 'Mega Bracelete', description: 'Mega Stones become available' }, + 'DYNAMAX_BAND': { name: 'Bracelete Dynamax', description: 'Max Mushrooms become available' }, + 'TERA_ORB': { name: 'Orbe Tera', description: 'Fragmentos Tera ficam disponíveis' }, - "MAP": { name: "Mapa", description: "Permite escolher a próxima rota" }, + 'MAP': { name: 'Mapa', description: 'Permite escolher a próxima rota' }, - "POTION": { name: "Poção" }, - "SUPER_POTION": { name: "Super Poção" }, - "HYPER_POTION": { name: "Hiper Poção" }, - "MAX_POTION": { name: "Poção Máxima" }, - "FULL_RESTORE": { name: "Restaurador" }, + 'POTION': { name: 'Poção' }, + 'SUPER_POTION': { name: 'Super Poção' }, + 'HYPER_POTION': { name: 'Hiper Poção' }, + 'MAX_POTION': { name: 'Poção Máxima' }, + 'FULL_RESTORE': { name: 'Restaurador' }, - "REVIVE": { name: "Reanimador" }, - "MAX_REVIVE": { name: "Reanimador Máximo" }, + 'REVIVE': { name: 'Reanimador' }, + 'MAX_REVIVE': { name: 'Reanimador Máximo' }, - "FULL_HEAL": { name: "Cura Total" }, + 'FULL_HEAL': { name: 'Cura Total' }, - "SACRED_ASH": { name: "Cinza Sagrada" }, + 'SACRED_ASH': { name: 'Cinza Sagrada' }, - "REVIVER_SEED": { name: "Semente Reanimadora", description: "Após desmaiar, reanima com 50% de PS" }, + 'REVIVER_SEED': { name: 'Semente Reanimadora', description: 'Após desmaiar, reanima com 50% de PS' }, - "ETHER": { name: "Éter" }, - "MAX_ETHER": { name: "Éter Máximo" }, + 'ETHER': { name: 'Éter' }, + 'MAX_ETHER': { name: 'Éter Máximo' }, - "ELIXIR": { name: "Elixir" }, - "MAX_ELIXIR": { name: "Elixir Máximo" }, + 'ELIXIR': { name: 'Elixir' }, + 'MAX_ELIXIR': { name: 'Elixir Máximo' }, - "PP_UP": { name: "Mais PP" }, - "PP_MAX": { name: "PP Máximo" }, + 'PP_UP': { name: 'Mais PP' }, + 'PP_MAX': { name: 'PP Máximo' }, - "LURE": { name: "Incenso" }, - "SUPER_LURE": { name: "Super Incenso" }, - "MAX_LURE": { name: "Incenso Máximo" }, + 'LURE': { name: 'Incenso' }, + 'SUPER_LURE': { name: 'Super Incenso' }, + 'MAX_LURE': { name: 'Incenso Máximo' }, - "MEMORY_MUSHROOM": { name: "Cogumemória", description: "Relembra um movimento esquecido" }, + 'MEMORY_MUSHROOM': { name: 'Cogumemória', description: 'Relembra um movimento esquecido' }, - "EXP_SHARE": { name: "Compart. de Exp.", description: "Distribui pontos de experiência para todos os membros da equipe" }, - "EXP_BALANCE": { name: "Balanceador de Exp.", description: "Distribui pontos de experiência principalmente para os Pokémon mais fracos" }, + 'EXP_SHARE': { name: 'Compart. de Exp.', description: 'Distribui pontos de experiência para todos os membros da equipe' }, + 'EXP_BALANCE': { name: 'Balanceador de Exp.', description: 'Distribui pontos de experiência principalmente para os Pokémon mais fracos' }, - "OVAL_CHARM": { name: "Amuleto Oval", description: "Quando vários Pokémon participam de uma batalha, cada um recebe 10% extra de pontos de experiência" }, + 'OVAL_CHARM': { name: 'Amuleto Oval', description: 'Quando vários Pokémon participam de uma batalha, cada um recebe 10% extra de pontos de experiência' }, - "EXP_CHARM": { name: "Amuleto de Exp." }, - "SUPER_EXP_CHARM": { name: "Super Amuleto de Exp." }, - "GOLDEN_EXP_CHARM": { name: "Amuleto de Exp. Dourado" }, + 'EXP_CHARM': { name: 'Amuleto de Exp.' }, + 'SUPER_EXP_CHARM': { name: 'Super Amuleto de Exp.' }, + 'GOLDEN_EXP_CHARM': { name: 'Amuleto de Exp. Dourado' }, - "LUCKY_EGG": { name: "Ovo da Sorte" }, - "GOLDEN_EGG": { name: "Ovo Dourado" }, + 'LUCKY_EGG': { name: 'Ovo da Sorte' }, + 'GOLDEN_EGG': { name: 'Ovo Dourado' }, - "SOOTHE_BELL": { name: "Guizo" }, + 'SOOTHE_BELL': { name: 'Guizo' }, - "SOUL_DEW": { name: "Joia da Alma", description: "Aumenta a influência da natureza de um Pokémon em seus atributos em 10% (cumulativo)" }, + 'SOUL_DEW': { name: 'Joia da Alma', description: 'Aumenta a influência da natureza de um Pokémon em seus atributos em 10% (cumulativo)' }, - "NUGGET": { name: "Pepita" }, - "BIG_NUGGET": { name: "Pepita Grande" }, - "RELIC_GOLD": { name: "Relíquia de Ouro" }, + 'NUGGET': { name: 'Pepita' }, + 'BIG_NUGGET': { name: 'Pepita Grande' }, + 'RELIC_GOLD': { name: 'Relíquia de Ouro' }, - "AMULET_COIN": { name: "Moeda Amuleto", description: "Aumenta a recompensa de dinheiro em 50%" }, - "GOLDEN_PUNCH": { name: "Soco Dourado", description: "Concede 50% do dano causado em dinheiro" }, - "COIN_CASE": { name: "Moedeira", description: "Após cada 10ª batalha, recebe 10% de seu dinheiro em juros" }, + 'AMULET_COIN': { name: 'Moeda Amuleto', description: 'Aumenta a recompensa de dinheiro em 50%' }, + 'GOLDEN_PUNCH': { name: 'Soco Dourado', description: 'Concede 50% do dano causado em dinheiro' }, + 'COIN_CASE': { name: 'Moedeira', description: 'Após cada 10ª batalha, recebe 10% de seu dinheiro em juros' }, - "LOCK_CAPSULE": { name: "Cápsula de Travamento", description: "Permite que você trave raridades de itens ao rolar novamente" }, + 'LOCK_CAPSULE': { name: 'Cápsula de Travamento', description: 'Permite que você trave raridades de itens ao rolar novamente' }, - "GRIP_CLAW": { name: "Garra-Aperto" }, - "WIDE_LENS": { name: "Lente Ampla" }, + 'GRIP_CLAW': { name: 'Garra-Aperto' }, + 'WIDE_LENS': { name: 'Lente Ampla' }, - "MULTI_LENS": { name: "Multi Lentes" }, + 'MULTI_LENS': { name: 'Multi Lentes' }, - "HEALING_CHARM": { name: "Amuleto de Cura", description: "Aumenta a eficácia dos movimentos e itens que restauram PS em 10% (exceto Reanimador)" }, - "CANDY_JAR": { name: "Pote de Doces", description: "Aumenta o número de níveis adicionados pelo Doce Raro em 1" }, + 'HEALING_CHARM': { name: 'Amuleto de Cura', description: 'Aumenta a eficácia dos movimentos e itens que restauram PS em 10% (exceto Reanimador)' }, + 'CANDY_JAR': { name: 'Pote de Doces', description: 'Aumenta o número de níveis adicionados pelo Doce Raro em 1' }, - "BERRY_POUCH": { name: "Bolsa de Berries", description: "Adiciona uma chance de 25% de que uma berry usada não seja consumida" }, + 'BERRY_POUCH': { name: 'Bolsa de Berries', description: 'Adiciona uma chance de 25% de que uma berry usada não seja consumida' }, - "FOCUS_BAND": { name: "Bandana", description: "Adiciona uma chance de 10% de sobreviver com 1 PS após ser danificado o suficiente para desmaiar" }, + 'FOCUS_BAND': { name: 'Bandana', description: 'Adiciona uma chance de 10% de sobreviver com 1 PS após ser danificado o suficiente para desmaiar' }, - "QUICK_CLAW": { name: "Garra Rápida", description: "Adiciona uma chance de 10% de atacar primeiro, ignorando sua velocidade (após prioridades)" }, + 'QUICK_CLAW': { name: 'Garra Rápida', description: 'Adiciona uma chance de 10% de atacar primeiro, ignorando sua velocidade (após prioridades)' }, - "KINGS_ROCK": { name: "Pedra do Rei", description: "Adiciona uma chance de 10% de movimentos fazerem o oponente hesitar" }, + 'KINGS_ROCK': { name: 'Pedra do Rei', description: 'Adiciona uma chance de 10% de movimentos fazerem o oponente hesitar' }, - "LEFTOVERS": { name: "Sobras", description: "Cura 1/16 dos PS máximos de um Pokémon a cada turno" }, - "SHELL_BELL": { name: "Concha-Sino", description: "Cura 1/8 do dano causado por um Pokémon" }, + 'LEFTOVERS': { name: 'Sobras', description: 'Cura 1/16 dos PS máximos de um Pokémon a cada turno' }, + 'SHELL_BELL': { name: 'Concha-Sino', description: 'Cura 1/8 do dano causado por um Pokémon' }, - "BATON": { name: "Bastão", description: "Permite passar mudanças de atributo ao trocar Pokémon, ignorando armadilhas" }, + 'BATON': { name: 'Bastão', description: 'Permite passar mudanças de atributo ao trocar Pokémon, ignorando armadilhas' }, - "SHINY_CHARM": { name: "Amuleto Brilhante", description: "Aumenta drasticamente a chance de um Pokémon selvagem ser Shiny" }, - "ABILITY_CHARM": { name: "Amuleto de Habilidade", description: "Aumenta drasticamente a chance de um Pokémon selvagem ter uma Habilidade Oculta" }, + 'SHINY_CHARM': { name: 'Amuleto Brilhante', description: 'Aumenta drasticamente a chance de um Pokémon selvagem ser Shiny' }, + 'ABILITY_CHARM': { name: 'Amuleto de Habilidade', description: 'Aumenta drasticamente a chance de um Pokémon selvagem ter uma Habilidade Oculta' }, - "IV_SCANNER": { name: "Scanner de IVs", description: "Permite escanear os IVs de Pokémon selvagens. 2 IVs são revelados por item. Os melhores IVs são mostrados primeiro" }, + 'IV_SCANNER': { name: 'Scanner de IVs', description: 'Permite escanear os IVs de Pokémon selvagens. 2 IVs são revelados por item. Os melhores IVs são mostrados primeiro' }, - "DNA_SPLICERS": { name: "Splicer de DNA" }, + 'DNA_SPLICERS': { name: 'Splicer de DNA' }, - "MINI_BLACK_HOLE": { name: "Mini Buraco Negro" }, + 'MINI_BLACK_HOLE': { name: 'Mini Buraco Negro' }, - "GOLDEN_POKEBALL": { name: "Poké Bola Dourada", description: "Adiciona 1 opção de item extra ao final de cada batalha" }, + 'GOLDEN_POKEBALL': { name: 'Poké Bola Dourada', description: 'Adiciona 1 opção de item extra ao final de cada batalha' }, - "ENEMY_DAMAGE_BOOSTER": { name: "Token de Dano", description: "Aumenta o dano em 5%" }, - "ENEMY_DAMAGE_REDUCTION": { name: "Token de Proteção", description: "Reduz o dano recebido em 2,5%" }, - "ENEMY_HEAL": { name: "Token de Recuperação", description: "Cura 2% dos PS máximos a cada turno" }, - "ENEMY_ATTACK_POISON_CHANCE": { name: "Token de Veneno" }, - "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "Token de Paralisia" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "Token de Sono" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "Token de Congelamento" }, - "ENEMY_ATTACK_BURN_CHANCE": { name: "Token de Queimadura" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "Token de Cura Total", description: "Adiciona uma chance de 10% a cada turno de curar uma condição de status" }, - "ENEMY_ENDURE_CHANCE": { name: "Token de Persistência" }, - "ENEMY_FUSED_CHANCE": { name: "Token de Fusão", description: "Adiciona uma chance de 1% de que um Pokémon selvagem seja uma fusão" }, + 'ENEMY_DAMAGE_BOOSTER': { name: 'Token de Dano', description: 'Aumenta o dano em 5%' }, + 'ENEMY_DAMAGE_REDUCTION': { name: 'Token de Proteção', description: 'Reduz o dano recebido em 2,5%' }, + 'ENEMY_HEAL': { name: 'Token de Recuperação', description: 'Cura 2% dos PS máximos a cada turno' }, + 'ENEMY_ATTACK_POISON_CHANCE': { name: 'Token de Veneno' }, + 'ENEMY_ATTACK_PARALYZE_CHANCE': { name: 'Token de Paralisia' }, + 'ENEMY_ATTACK_SLEEP_CHANCE': { name: 'Token de Sono' }, + 'ENEMY_ATTACK_FREEZE_CHANCE': { name: 'Token de Congelamento' }, + 'ENEMY_ATTACK_BURN_CHANCE': { name: 'Token de Queimadura' }, + 'ENEMY_STATUS_EFFECT_HEAL_CHANCE': { name: 'Token de Cura Total', description: 'Adiciona uma chance de 10% a cada turno de curar uma condição de status' }, + 'ENEMY_ENDURE_CHANCE': { name: 'Token de Persistência' }, + 'ENEMY_FUSED_CHANCE': { name: 'Token de Fusão', description: 'Adiciona uma chance de 1% de que um Pokémon selvagem seja uma fusão' }, }, TempBattleStatBoosterItem: { - "x_attack": "Ataque X", - "x_defense": "Defesa X", - "x_sp_atk": "Ataque Esp. X", - "x_sp_def": "Defesa Esp. X", - "x_speed": "Velocidade X", - "x_accuracy": "Precisão X", - "dire_hit": "Direto", + 'x_attack': 'Ataque X', + 'x_defense': 'Defesa X', + 'x_sp_atk': 'Ataque Esp. X', + 'x_sp_def': 'Defesa Esp. X', + 'x_speed': 'Velocidade X', + 'x_accuracy': 'Precisão X', + 'dire_hit': 'Direto', }, AttackTypeBoosterItem: { - "silk_scarf": "Lenço de Seda", - "black_belt": "Faixa Preta", - "sharp_beak": "Bico Afiado", - "poison_barb": "Farpa Venenosa", - "soft_sand": "Areia Macia", - "hard_stone": "Pedra Dura", - "silver_powder": "Pó de Prata", - "spell_tag": "Talismã de Feitiço", - "metal_coat": "Revestimento Metálico", - "charcoal": "Carvão", - "mystic_water": "Água Mística", - "miracle_seed": "Semente Milagrosa", - "magnet": "Ímã", - "twisted_spoon": "Colher Torcida", - "never_melt_ice": "Gelo Eterno", - "dragon_fang": "Presa de Dragão", - "black_glasses": "Óculos Escuros", - "fairy_feather": "Pena de Fada", + 'silk_scarf': 'Lenço de Seda', + 'black_belt': 'Faixa Preta', + 'sharp_beak': 'Bico Afiado', + 'poison_barb': 'Farpa Venenosa', + 'soft_sand': 'Areia Macia', + 'hard_stone': 'Pedra Dura', + 'silver_powder': 'Pó de Prata', + 'spell_tag': 'Talismã de Feitiço', + 'metal_coat': 'Revestimento Metálico', + 'charcoal': 'Carvão', + 'mystic_water': 'Água Mística', + 'miracle_seed': 'Semente Milagrosa', + 'magnet': 'Ímã', + 'twisted_spoon': 'Colher Torcida', + 'never_melt_ice': 'Gelo Eterno', + 'dragon_fang': 'Presa de Dragão', + 'black_glasses': 'Óculos Escuros', + 'fairy_feather': 'Pena de Fada', }, BaseStatBoosterItem: { - "hp_up": "Mais PS", - "protein": "Proteína", - "iron": "Ferro", - "calcium": "Cálcio", - "zinc": "Zinco", - "carbos": "Carboidrato", + 'hp_up': 'Mais PS', + 'protein': 'Proteína', + 'iron': 'Ferro', + 'calcium': 'Cálcio', + 'zinc': 'Zinco', + 'carbos': 'Carboidrato', }, EvolutionItem: { - "NONE": "None", + 'NONE': 'None', - "LINKING_CORD": "Cabo de Conexão", - "SUN_STONE": "Pedra do Sol", - "MOON_STONE": "Pedra da Lua", - "LEAF_STONE": "Pedra da Folha", - "FIRE_STONE": "Pedra do Fogo", - "WATER_STONE": "Pedra da Água", - "THUNDER_STONE": "Pedra do Trovão", - "ICE_STONE": "Pedra do Gelo", - "DUSK_STONE": "Pedra do Crepúsculo", - "DAWN_STONE": "Pedra da Alvorada", - "SHINY_STONE": "Pedra Brilhante", - "CRACKED_POT": "Vaso Quebrado", - "SWEET_APPLE": "Maçã Doce", - "TART_APPLE": "Maçã Azeda", - "STRAWBERRY_SWEET": "Doce de Morango", - "UNREMARKABLE_TEACUP": "Xícara Comum", + 'LINKING_CORD': 'Cabo de Conexão', + 'SUN_STONE': 'Pedra do Sol', + 'MOON_STONE': 'Pedra da Lua', + 'LEAF_STONE': 'Pedra da Folha', + 'FIRE_STONE': 'Pedra do Fogo', + 'WATER_STONE': 'Pedra da Água', + 'THUNDER_STONE': 'Pedra do Trovão', + 'ICE_STONE': 'Pedra do Gelo', + 'DUSK_STONE': 'Pedra do Crepúsculo', + 'DAWN_STONE': 'Pedra da Alvorada', + 'SHINY_STONE': 'Pedra Brilhante', + 'CRACKED_POT': 'Vaso Quebrado', + 'SWEET_APPLE': 'Maçã Doce', + 'TART_APPLE': 'Maçã Azeda', + 'STRAWBERRY_SWEET': 'Doce de Morango', + 'UNREMARKABLE_TEACUP': 'Xícara Comum', - "CHIPPED_POT": "Pote Lascado", - "BLACK_AUGURITE": "Mineral Negro", - "GALARICA_CUFF": "Bracelete de Galar", - "GALARICA_WREATH": "Coroa de Galar", - "PEAT_BLOCK": "Bloco de Turfa", - "AUSPICIOUS_ARMOR": "Armadura Prometida", - "MALICIOUS_ARMOR": "Armadura Maldita", - "MASTERPIECE_TEACUP": "Xícara Excepcional", - "METAL_ALLOY": "Liga de Metal", - "SCROLL_OF_DARKNESS": "Pergaminho da Escuridão", - "SCROLL_OF_WATERS": "Pergaminho da Água", - "SYRUPY_APPLE": "Xarope de Maçã", + 'CHIPPED_POT': 'Pote Lascado', + 'BLACK_AUGURITE': 'Mineral Negro', + 'GALARICA_CUFF': 'Bracelete de Galar', + 'GALARICA_WREATH': 'Coroa de Galar', + 'PEAT_BLOCK': 'Bloco de Turfa', + 'AUSPICIOUS_ARMOR': 'Armadura Prometida', + 'MALICIOUS_ARMOR': 'Armadura Maldita', + 'MASTERPIECE_TEACUP': 'Xícara Excepcional', + 'METAL_ALLOY': 'Liga de Metal', + 'SCROLL_OF_DARKNESS': 'Pergaminho da Escuridão', + 'SCROLL_OF_WATERS': 'Pergaminho da Água', + 'SYRUPY_APPLE': 'Xarope de Maçã', }, FormChangeItem: { - "NONE": "None", + 'NONE': 'None', - "ABOMASITE": "Abomasita", - "ABSOLITE": "Absolita", - "AERODACTYLITE": "Aerodactylita", - "AGGRONITE": "Aggronita", - "ALAKAZITE": "Alakazita", - "ALTARIANITE": "Altarianita", - "AMPHAROSITE": "Ampharosita", - "AUDINITE": "Audinita", - "BANETTITE": "Banettita", - "BEEDRILLITE": "Beedrillita", - "BLASTOISINITE": "Blastoisinita", - "BLAZIKENITE": "Blazikenita", - "CAMERUPTITE": "Cameruptita", - "CHARIZARDITE X": "Charizardita X", - "CHARIZARDITE Y": "Charizardita Y", - "DIANCITE": "Diancita", - "GALLADITE": "Galladita", - "GARCHOMPITE": "Garchompita", - "GARDEVOIRITE": "Gardevoirita", - "GENGARITE": "Gengarita", - "GLALITITE": "Glalitita", - "GYARADOSITE": "Gyaradosita", - "HERACRONITE": "Heracronita", - "HOUNDOOMINITE": "Houndoominita", - "KANGASKHANITE": "Kangaskhanita", - "LATIASITE": "Latiasita", - "LATIOSITE": "Latiosita", - "LOPUNNITE": "Lopunnita", - "LUCARIONITE": "Lucarionita", - "MANECTITE": "Manectita", - "MAWILITE": "Mawilita", - "MEDICHAMITE": "Medichamita", - "METAGROSSITE": "Metagrossita", - "MEWTWONITE X": "Mewtwonita X", - "MEWTWONITE Y": "Mewtwonita Y", - "PIDGEOTITE": "Pidgeotita", - "PINSIRITE": "Pinsirita", - "SABLENITE": "Sablenita", - "RAYQUAZITE": "Rayquazita", - "SALAMENCITE": "Salamencita", - "SCEPTILITE": "Sceptilita", - "SCIZORITE": "Scizorita", - "SHARPEDONITE": "Sharpedonita", - "SLOWBRONITE": "Slowbronita", - "STEELIXITE": "Steelixita", - "SWAMPERTITE": "Swampertita", - "TYRANITARITE": "Tyranitarita", - "VENUSAURITE": "Venusaurita", + 'ABOMASITE': 'Abomasita', + 'ABSOLITE': 'Absolita', + 'AERODACTYLITE': 'Aerodactylita', + 'AGGRONITE': 'Aggronita', + 'ALAKAZITE': 'Alakazita', + 'ALTARIANITE': 'Altarianita', + 'AMPHAROSITE': 'Ampharosita', + 'AUDINITE': 'Audinita', + 'BANETTITE': 'Banettita', + 'BEEDRILLITE': 'Beedrillita', + 'BLASTOISINITE': 'Blastoisinita', + 'BLAZIKENITE': 'Blazikenita', + 'CAMERUPTITE': 'Cameruptita', + 'CHARIZARDITE X': 'Charizardita X', + 'CHARIZARDITE Y': 'Charizardita Y', + 'DIANCITE': 'Diancita', + 'GALLADITE': 'Galladita', + 'GARCHOMPITE': 'Garchompita', + 'GARDEVOIRITE': 'Gardevoirita', + 'GENGARITE': 'Gengarita', + 'GLALITITE': 'Glalitita', + 'GYARADOSITE': 'Gyaradosita', + 'HERACRONITE': 'Heracronita', + 'HOUNDOOMINITE': 'Houndoominita', + 'KANGASKHANITE': 'Kangaskhanita', + 'LATIASITE': 'Latiasita', + 'LATIOSITE': 'Latiosita', + 'LOPUNNITE': 'Lopunnita', + 'LUCARIONITE': 'Lucarionita', + 'MANECTITE': 'Manectita', + 'MAWILITE': 'Mawilita', + 'MEDICHAMITE': 'Medichamita', + 'METAGROSSITE': 'Metagrossita', + 'MEWTWONITE X': 'Mewtwonita X', + 'MEWTWONITE Y': 'Mewtwonita Y', + 'PIDGEOTITE': 'Pidgeotita', + 'PINSIRITE': 'Pinsirita', + 'SABLENITE': 'Sablenita', + 'RAYQUAZITE': 'Rayquazita', + 'SALAMENCITE': 'Salamencita', + 'SCEPTILITE': 'Sceptilita', + 'SCIZORITE': 'Scizorita', + 'SHARPEDONITE': 'Sharpedonita', + 'SLOWBRONITE': 'Slowbronita', + 'STEELIXITE': 'Steelixita', + 'SWAMPERTITE': 'Swampertita', + 'TYRANITARITE': 'Tyranitarita', + 'VENUSAURITE': 'Venusaurita', - "BLUE_ORB": "Orbe Azul", - "RED_ORB": "Orbe Vermelha", - "SHARP_METEORITE": "Meteorito Afiado", - "HARD_METEORITE": "Meteorito Duro", - "SMOOTH_METEORITE": " Meteorito Liso", - "ADAMANT_CRYSTAL": "Cristal Adamante", - "LUSTROUS_ORB": "Orbe Pérola", - "GRISEOUS_CORE": "Núcleo Platinado", - "REVEAL_GLASS": "Espelho da Verdade", - "GRACIDEA": "Gracídea", - "MAX_MUSHROOMS": "Cogumax", - "DARK_STONE": "Pedra das Trevas", - "LIGHT_STONE": "Pedra da Luz", - "PRISON_BOTTLE": "Garrafa Prisão", - "N_LUNARIZER": "Lunarizador N", - "N_SOLARIZER": "Solarizador N", - "RUSTED_SWORD": "Espada Enferrujada", - "RUSTED_SHIELD": "Escudo Enferrujado", - "ICY_REINS_OF_UNITY": "Rédeas de Gelo da União", - "SHADOW_REINS_OF_UNITY": "Rédeas Sombrias da União", - "WELLSPRING_MASK": "Máscara Nascente", - "HEARTHFLAME_MASK": "Máscara Fornalha", - "CORNERSTONE_MASK": "Máscara Alicerce", - "SHOCK_DRIVE": "MagneDisco", - "BURN_DRIVE": "IgneDisco", - "CHILL_DRIVE": "CrioDisco", - "DOUSE_DRIVE": "HidroDisco", + 'BLUE_ORB': 'Orbe Azul', + 'RED_ORB': 'Orbe Vermelha', + 'SHARP_METEORITE': 'Meteorito Afiado', + 'HARD_METEORITE': 'Meteorito Duro', + 'SMOOTH_METEORITE': ' Meteorito Liso', + 'ADAMANT_CRYSTAL': 'Cristal Adamante', + 'LUSTROUS_ORB': 'Orbe Pérola', + 'GRISEOUS_CORE': 'Núcleo Platinado', + 'REVEAL_GLASS': 'Espelho da Verdade', + 'GRACIDEA': 'Gracídea', + 'MAX_MUSHROOMS': 'Cogumax', + 'DARK_STONE': 'Pedra das Trevas', + 'LIGHT_STONE': 'Pedra da Luz', + 'PRISON_BOTTLE': 'Garrafa Prisão', + 'N_LUNARIZER': 'Lunarizador N', + 'N_SOLARIZER': 'Solarizador N', + 'RUSTED_SWORD': 'Espada Enferrujada', + 'RUSTED_SHIELD': 'Escudo Enferrujado', + 'ICY_REINS_OF_UNITY': 'Rédeas de Gelo da União', + 'SHADOW_REINS_OF_UNITY': 'Rédeas Sombrias da União', + 'WELLSPRING_MASK': 'Máscara Nascente', + 'HEARTHFLAME_MASK': 'Máscara Fornalha', + 'CORNERSTONE_MASK': 'Máscara Alicerce', + 'SHOCK_DRIVE': 'MagneDisco', + 'BURN_DRIVE': 'IgneDisco', + 'CHILL_DRIVE': 'CrioDisco', + 'DOUSE_DRIVE': 'HidroDisco', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/pt_BR/move.ts b/src/locales/pt_BR/move.ts index ce55b5264ec..2e1d82dc825 100644 --- a/src/locales/pt_BR/move.ts +++ b/src/locales/pt_BR/move.ts @@ -1,3812 +1,3812 @@ -import { MoveTranslationEntries } from "#app/plugins/i18n"; +import { MoveTranslationEntries } from '#app/plugins/i18n'; export const move: MoveTranslationEntries = { - "pound": { - name: "Pound", - effect: "O alvo é golpeado com uma pata, uma cauda longa, ou com algo desse tipo." + 'pound': { + name: 'Pound', + effect: 'O alvo é golpeado com uma pata, uma cauda longa, ou com algo desse tipo.' }, - "karateChop": { - name: "Karate Chop", - effect: "O alvo é atacado com um golpe cortante. Golpes críticos ocorrem mais facilmente." + 'karateChop': { + name: 'Karate Chop', + effect: 'O alvo é atacado com um golpe cortante. Golpes críticos ocorrem mais facilmente.' }, - "doubleSlap": { - name: "Double Slap", - effect: "O alvo é estapeado repetidamente, de duas a cinco vezes seguidas." + 'doubleSlap': { + name: 'Double Slap', + effect: 'O alvo é estapeado repetidamente, de duas a cinco vezes seguidas.' }, - "cometPunch": { - name: "Comet Punch", - effect: "O alvo é atingido com uma sequência de socos que acertam de duas a cinco vezes seguidas." + 'cometPunch': { + name: 'Comet Punch', + effect: 'O alvo é atingido com uma sequência de socos que acertam de duas a cinco vezes seguidas.' }, - "megaPunch": { - name: "Mega Punch", - effect: "O alvo é atingido por um soco desferido com grande força muscular." + 'megaPunch': { + name: 'Mega Punch', + effect: 'O alvo é atingido por um soco desferido com grande força muscular.' }, - "payDay": { - name: "Pay Day", - effect: "Várias moedas são lançadas no alvo para causar dano. O Treinador recebe o dinheiro após a batalha." + 'payDay': { + name: 'Pay Day', + effect: 'Várias moedas são lançadas no alvo para causar dano. O Treinador recebe o dinheiro após a batalha.' }, - "firePunch": { - name: "Fire Punch", - effect: "O alvo é atingido por um punho flamejante. Isso pode deixar o alvo queimado." + 'firePunch': { + name: 'Fire Punch', + effect: 'O alvo é atingido por um punho flamejante. Isso pode deixar o alvo queimado.' }, - "icePunch": { - name: "Ice Punch", - effect: "O alvo é atingido por um punho gelado. Isso pode deixar o alvo congelado." + 'icePunch': { + name: 'Ice Punch', + effect: 'O alvo é atingido por um punho gelado. Isso pode deixar o alvo congelado.' }, - "thunderPunch": { - name: "Thunder Punch", - effect: "O alvo é atingido por um punho eletrificado. Isso também pode deixar o alvo paralisado." + 'thunderPunch': { + name: 'Thunder Punch', + effect: 'O alvo é atingido por um punho eletrificado. Isso também pode deixar o alvo paralisado.' }, - "scratch": { - name: "Scratch", - effect: "Garras duras, pontiagudas e afiadas rasgam o alvo para causar dano." + 'scratch': { + name: 'Scratch', + effect: 'Garras duras, pontiagudas e afiadas rasgam o alvo para causar dano.' }, - "viceGrip": { - name: "Vice Grip", - effect: "O alvo é agarrado pelos lados e espremido." + 'viceGrip': { + name: 'Vice Grip', + effect: 'O alvo é agarrado pelos lados e espremido.' }, - "guillotine": { - name: "Guillotine", - effect: "Um ataque violento e destruidor com grandes pinças. Se o golpe acertar, o alvo desmaiará instantaneamente." + 'guillotine': { + name: 'Guillotine', + effect: 'Um ataque violento e destruidor com grandes pinças. Se o golpe acertar, o alvo desmaiará instantaneamente.' }, - "razorWind": { - name: "Razor Wind", - effect: "Neste ataque de dois turnos, lâminas de vento golpeiam Pokémon adversários no segundo turno. Golpes críticos ocorrem mais facilmente." + 'razorWind': { + name: 'Razor Wind', + effect: 'Neste ataque de dois turnos, lâminas de vento golpeiam Pokémon adversários no segundo turno. Golpes críticos ocorrem mais facilmente.' }, - "swordsDance": { - name: "Swords Dance", - effect: "Uma dança frenética para elevar o espírito de luta. Aumenta bruscamente o Ataque do usuário." + 'swordsDance': { + name: 'Swords Dance', + effect: 'Uma dança frenética para elevar o espírito de luta. Aumenta bruscamente o Ataque do usuário.' }, - "cut": { - name: "Cut", - effect: "O alvo é cortado com uma foice ou garra." + 'cut': { + name: 'Cut', + effect: 'O alvo é cortado com uma foice ou garra.' }, - "gust": { - name: "Gust", - effect: "Uma rajada de vento é levantada por asas e lançada no alvo para causar dano." + 'gust': { + name: 'Gust', + effect: 'Uma rajada de vento é levantada por asas e lançada no alvo para causar dano.' }, - "wingAttack": { - name: "Wing Attack", - effect: "O alvo é atingido por asas grandes e imponentes, amplamente abertas para causar dano." + 'wingAttack': { + name: 'Wing Attack', + effect: 'O alvo é atingido por asas grandes e imponentes, amplamente abertas para causar dano.' }, - "whirlwind": { - name: "Whirlwind", - effect: "O alvo é soprado para fora da batalha, dando lugar a outro Pokémon. Em batalhas selvagens, a batalha termina caso seja contra um único Pokémon." + 'whirlwind': { + name: 'Whirlwind', + effect: 'O alvo é soprado para fora da batalha, dando lugar a outro Pokémon. Em batalhas selvagens, a batalha termina caso seja contra um único Pokémon.' }, - "fly": { - name: "Fly", - effect: "O usuário levanta vôo e ataca o alvo no próximo turno." + 'fly': { + name: 'Fly', + effect: 'O usuário levanta vôo e ataca o alvo no próximo turno.' }, - "bind": { - name: "Bind", - effect: "Um longo corpo ou tentáculos são utilizados para prender o alvo e espremê-lo por quatro ou cinco turnos." + 'bind': { + name: 'Bind', + effect: 'Um longo corpo ou tentáculos são utilizados para prender o alvo e espremê-lo por quatro ou cinco turnos.' }, - "slam": { - name: "Slam", - effect: "O alvo é atingido com uma longa cauda, vinhas ou algo parecido para infligir dano." + 'slam': { + name: 'Slam', + effect: 'O alvo é atingido com uma longa cauda, vinhas ou algo parecido para infligir dano.' }, - "vineWhip": { - name: "Vine Whip", - effect: "O usuário utiliza-se de vinhas finas como chicote para infligir dano." + 'vineWhip': { + name: 'Vine Whip', + effect: 'O usuário utiliza-se de vinhas finas como chicote para infligir dano.' }, - "stomp": { - name: "Stomp", - effect: "O alvo é pisoteado por um grande pé. Isso também pode fazer o alvo hesitar." + 'stomp': { + name: 'Stomp', + effect: 'O alvo é pisoteado por um grande pé. Isso também pode fazer o alvo hesitar.' }, - "doubleKick": { - name: "Double Kick", - effect: "O alvo é atingido rapidamente com um chute duas vezes seguidas usando ambos os pés." + 'doubleKick': { + name: 'Double Kick', + effect: 'O alvo é atingido rapidamente com um chute duas vezes seguidas usando ambos os pés.' }, - "megaKick": { - name: "Mega Kick", - effect: "O alvo é atingido por um chute desferido com grande força muscular." + 'megaKick': { + name: 'Mega Kick', + effect: 'O alvo é atingido por um chute desferido com grande força muscular.' }, - "jumpKick": { - name: "Jump Kick", - effect: "O usuário pula alto, depois golpeia com um chute. Se o chute erra, o usuário se fere." + 'jumpKick': { + name: 'Jump Kick', + effect: 'O usuário pula alto, depois golpeia com um chute. Se o chute erra, o usuário se fere.' }, - "rollingKick": { - name: "Rolling Kick", - effect: "O usuário desfere um rápido chute giratório. Isso também pode fazer o alvo hesitar." + 'rollingKick': { + name: 'Rolling Kick', + effect: 'O usuário desfere um rápido chute giratório. Isso também pode fazer o alvo hesitar.' }, - "sandAttack": { - name: "Sand Attack", - effect: "Areia é lançada no rosto do alvo, reduzindo sua Precisão." + 'sandAttack': { + name: 'Sand Attack', + effect: 'Areia é lançada no rosto do alvo, reduzindo sua Precisão.' }, - "headbutt": { - name: "Headbutt", - effect: "O usuário direciona sua cabeça e ataca, avançando diretamente sobre o alvo. Isso também pode fazer o alvo hesitar." + 'headbutt': { + name: 'Headbutt', + effect: 'O usuário direciona sua cabeça e ataca, avançando diretamente sobre o alvo. Isso também pode fazer o alvo hesitar.' }, - "hornAttack": { - name: "Horn Attack", - effect: "O alvo é perfurado por um chifre pontudo e afiado para infligir dano." + 'hornAttack': { + name: 'Horn Attack', + effect: 'O alvo é perfurado por um chifre pontudo e afiado para infligir dano.' }, - "furyAttack": { - name: "Fury Attack", - effect: "O alvo é perfurado repetidamente por um chifre ou bico, de duas a cinco vezes seguidas." + 'furyAttack': { + name: 'Fury Attack', + effect: 'O alvo é perfurado repetidamente por um chifre ou bico, de duas a cinco vezes seguidas.' }, - "hornDrill": { - name: "Horn Drill", - effect: "O usuário perfura o alvo com um chifre que gira como uma broca. Se o golpe acertar, o alvo desmaia instantaneamente." + 'hornDrill': { + name: 'Horn Drill', + effect: 'O usuário perfura o alvo com um chifre que gira como uma broca. Se o golpe acertar, o alvo desmaia instantaneamente.' }, - "tackle": { - name: "Tackle", - effect: "Um ataque físico cujo o usuário vai para cima do alvo e lhe atinge com todo o seu corpo." + 'tackle': { + name: 'Tackle', + effect: 'Um ataque físico cujo o usuário vai para cima do alvo e lhe atinge com todo o seu corpo.' }, - "bodySlam": { - name: "Body Slam", - effect: "O usuário se lança para cima do alvo com todo o peso de seu corpo. Isso pode deixar o alvo paralisado." + 'bodySlam': { + name: 'Body Slam', + effect: 'O usuário se lança para cima do alvo com todo o peso de seu corpo. Isso pode deixar o alvo paralisado.' }, - "wrap": { - name: "Wrap", - effect: "Um longo corpo, vinhas ou algo assim, são usados para embrulhar e apertar o alvo por quatro ou cinco turnos." + 'wrap': { + name: 'Wrap', + effect: 'Um longo corpo, vinhas ou algo assim, são usados para embrulhar e apertar o alvo por quatro ou cinco turnos.' }, - "takeDown": { - name: "Take Down", - effect: "Uma investida corporal imprudente para golpear o alvo. Isso também fere um pouco o usuário." + 'takeDown': { + name: 'Take Down', + effect: 'Uma investida corporal imprudente para golpear o alvo. Isso também fere um pouco o usuário.' }, - "thrash": { - name: "Thrash", - effect: "O usuário fica furioso e ataca com violência de dois a três turnos. O usuário então se torna confuso." + 'thrash': { + name: 'Thrash', + effect: 'O usuário fica furioso e ataca com violência de dois a três turnos. O usuário então se torna confuso.' }, - "double-Edge": { - name: "Double-Edge", - effect: "Uma investida imprudente e muito perigosa. Isso também fere bastante o usuário." + 'double-Edge': { + name: 'Double-Edge', + effect: 'Uma investida imprudente e muito perigosa. Isso também fere bastante o usuário.' }, - "tailWhip": { - name: "Tail Whip", - effect: "O usuário balança sua cauda de maneira fofa, baixando a guarda do Pokémon adversário e diminuindo sua Defesa." + 'tailWhip': { + name: 'Tail Whip', + effect: 'O usuário balança sua cauda de maneira fofa, baixando a guarda do Pokémon adversário e diminuindo sua Defesa.' }, - "poisonSting": { - name: "Poison Sting", - effect: "O usuário perfura o alvo com um ferrão venenoso. Isso também pode envenenar o alvo." + 'poisonSting': { + name: 'Poison Sting', + effect: 'O usuário perfura o alvo com um ferrão venenoso. Isso também pode envenenar o alvo.' }, - "twineedle": { - name: "Twineedle", - effect: "O usuário causa dano duas vezes seguidas, perfurando o alvo com dois ferrões. Isso também pode envenenar o alvo." + 'twineedle': { + name: 'Twineedle', + effect: 'O usuário causa dano duas vezes seguidas, perfurando o alvo com dois ferrões. Isso também pode envenenar o alvo.' }, - "pinMissile": { - name: "Pin Missile", - effect: "Espinhos afiados são lançados no alvo em rápida sucessão. Eles acertam de duas a cinco vezes seguidas." + 'pinMissile': { + name: 'Pin Missile', + effect: 'Espinhos afiados são lançados no alvo em rápida sucessão. Eles acertam de duas a cinco vezes seguidas.' }, - "leer": { - name: "Leer", - effect: "O usuário lança um olhar intimidador no Pokémon oponente, reduzindo sua Defesa." + 'leer': { + name: 'Leer', + effect: 'O usuário lança um olhar intimidador no Pokémon oponente, reduzindo sua Defesa.' }, - "bite": { - name: "Bite", - effect: "O alvo é mordido ferozmente com presas afiadas. Isso também pode fazer o alvo hesitar." + 'bite': { + name: 'Bite', + effect: 'O alvo é mordido ferozmente com presas afiadas. Isso também pode fazer o alvo hesitar.' }, - "growl": { - name: "Growl", - effect: "O usuário rosna de maneira agradável, baixando a guarda do Pokémon adversário. Isso diminui o Ataque do oponente." + 'growl': { + name: 'Growl', + effect: 'O usuário rosna de maneira agradável, baixando a guarda do Pokémon adversário. Isso diminui o Ataque do oponente.' }, - "roar": { - name: "Roar", - effect: "O alvo se assusta, retorna para a sua Poké Bola e um outro Pokémon toma o seu lugar. O combate é encerrado contra um único Pokémon selvagem." + 'roar': { + name: 'Roar', + effect: 'O alvo se assusta, retorna para a sua Poké Bola e um outro Pokémon toma o seu lugar. O combate é encerrado contra um único Pokémon selvagem.' }, - "sing": { - name: "Sing", - effect: "Uma suave canção de ninar é cantada com uma voz calma, colocando o alvo em sono profundo." + 'sing': { + name: 'Sing', + effect: 'Uma suave canção de ninar é cantada com uma voz calma, colocando o alvo em sono profundo.' }, - "supersonic": { - name: "Supersonic", - effect: "O usuário gera estranhas ondas sonoras de seu corpo que confundem o alvo." + 'supersonic': { + name: 'Supersonic', + effect: 'O usuário gera estranhas ondas sonoras de seu corpo que confundem o alvo.' }, - "sonicBoom": { - name: "Sonic Boom", - effect: "O alvo é atingido com uma onda de choque destrutiva que sempre causa dano de 20 PS." + 'sonicBoom': { + name: 'Sonic Boom', + effect: 'O alvo é atingido com uma onda de choque destrutiva que sempre causa dano de 20 PS.' }, - "disable": { - name: "Disable", - effect: "Por quatro turnos, este movimento impede que o alvo utilize o último movimento usado por ele." + 'disable': { + name: 'Disable', + effect: 'Por quatro turnos, este movimento impede que o alvo utilize o último movimento usado por ele.' }, - "acid": { - name: "Acid", - effect: "Os Pokémon adversários são atacados com um jato de um forte ácido. Isso pode diminuir a Defesa Especial." + 'acid': { + name: 'Acid', + effect: 'Os Pokémon adversários são atacados com um jato de um forte ácido. Isso pode diminuir a Defesa Especial.' }, - "ember": { - name: "Ember", - effect: "O alvo é atacado com pequenas chamas. Também pode deixar o alvo com uma queimadura." + 'ember': { + name: 'Ember', + effect: 'O alvo é atacado com pequenas chamas. Também pode deixar o alvo com uma queimadura.' }, - "flamethrower": { - name: "Flamethrower", - effect: "O usuário queima o alvo com uma grande explosão de fogo. Também pode deixar o alvo com uma queimadura." + 'flamethrower': { + name: 'Flamethrower', + effect: 'O usuário queima o alvo com uma grande explosão de fogo. Também pode deixar o alvo com uma queimadura.' }, - "mist": { - name: "Mist", - effect: "O usuário esconde a si mesmo e seus aliados em uma neblina branca que impede que seus atributos sejam reduzidos por cinco turnos." + 'mist': { + name: 'Mist', + effect: 'O usuário esconde a si mesmo e seus aliados em uma neblina branca que impede que seus atributos sejam reduzidos por cinco turnos.' }, - "waterGun": { - name: "Water Gun", - effect: "O alvo é atingido por um disparo forte de água." + 'waterGun': { + name: 'Water Gun', + effect: 'O alvo é atingido por um disparo forte de água.' }, - "hydroPump": { - name: "Hydro Pump", - effect: "O alvo é atingido por um enorme volume de água lançado sob uma forte pressão." + 'hydroPump': { + name: 'Hydro Pump', + effect: 'O alvo é atingido por um enorme volume de água lançado sob uma forte pressão.' }, - "surf": { - name: "Surf", - effect: "O usuário ataca tudo ao seu redor, inundando os arredores com uma onda gigante." + 'surf': { + name: 'Surf', + effect: 'O usuário ataca tudo ao seu redor, inundando os arredores com uma onda gigante.' }, - "iceBeam": { - name: "Ice Beam", - effect: "O alvo é atingido por um raio de energia congelante. Isso também pode deixar o alvo congelado." + 'iceBeam': { + name: 'Ice Beam', + effect: 'O alvo é atingido por um raio de energia congelante. Isso também pode deixar o alvo congelado.' }, - "blizzard": { - name: "Blizzard", - effect: "Uma enorme nevasca é invocada para atacar o Pokémon oponente. Também pode deixar o alvo congelado." + 'blizzard': { + name: 'Blizzard', + effect: 'Uma enorme nevasca é invocada para atacar o Pokémon oponente. Também pode deixar o alvo congelado.' }, - "psybeam": { - name: "Psybeam", - effect: "O alvo é atacado por um feixe peculiar. Isso também pode deixar o alvo confuso." + 'psybeam': { + name: 'Psybeam', + effect: 'O alvo é atacado por um feixe peculiar. Isso também pode deixar o alvo confuso.' }, - "bubbleBeam": { - name: "Bubble Beam", - effect: "Um jato de bolhas é borrifado com intensidade no alvo. Isso também pode diminuir a Velocidade do alvo." + 'bubbleBeam': { + name: 'Bubble Beam', + effect: 'Um jato de bolhas é borrifado com intensidade no alvo. Isso também pode diminuir a Velocidade do alvo.' }, - "auroraBeam": { - name: "Aurora Beam", - effect: "O alvo é atingido por um raio colorido como o arco-íris. Isso também pode diminuir o Ataque do alvo." + 'auroraBeam': { + name: 'Aurora Beam', + effect: 'O alvo é atingido por um raio colorido como o arco-íris. Isso também pode diminuir o Ataque do alvo.' }, - "hyperBeam": { - name: "Hyper Beam", - effect: "O alvo é atingido por um raio poderoso. O usuário não poderá se mover no próximo turno." + 'hyperBeam': { + name: 'Hyper Beam', + effect: 'O alvo é atingido por um raio poderoso. O usuário não poderá se mover no próximo turno.' }, - "peck": { - name: "Peck", - effect: "O alvo é atingido por um bico ou chifre pontudo." + 'peck': { + name: 'Peck', + effect: 'O alvo é atingido por um bico ou chifre pontudo.' }, - "drillPeck": { - name: "Drill Peck", - effect: "Um ataque giratório com um bico afiado que age como uma broca." + 'drillPeck': { + name: 'Drill Peck', + effect: 'Um ataque giratório com um bico afiado que age como uma broca.' }, - "submission": { - name: "Submission", - effect: "O usuário agarra o alvo e, imprudentemente, mergulha em direção ao chão. Isso também fere um pouco o usuário." + 'submission': { + name: 'Submission', + effect: 'O usuário agarra o alvo e, imprudentemente, mergulha em direção ao chão. Isso também fere um pouco o usuário.' }, - "lowKick": { - name: "Low Kick", - effect: "Um poderoso chute baixo que derruba o alvo. Quanto mais pesado o alvo for, maior o poder do movimento." + 'lowKick': { + name: 'Low Kick', + effect: 'Um poderoso chute baixo que derruba o alvo. Quanto mais pesado o alvo for, maior o poder do movimento.' }, - "counter": { - name: "Counter", - effect: "Um movimento de retaliação que neutraliza qualquer ataque físico, causando o dobro do dano recebido." + 'counter': { + name: 'Counter', + effect: 'Um movimento de retaliação que neutraliza qualquer ataque físico, causando o dobro do dano recebido.' }, - "seismicToss": { - name: "Seismic Toss", - effect: "O alvo é lançado usando o poder da gravidade. Isso causa dano igual ao nível do usuário." + 'seismicToss': { + name: 'Seismic Toss', + effect: 'O alvo é lançado usando o poder da gravidade. Isso causa dano igual ao nível do usuário.' }, - "strength": { - name: "Strength", - effect: "O alvo é atingido por um soco dado com o máximo de força." + 'strength': { + name: 'Strength', + effect: 'O alvo é atingido por um soco dado com o máximo de força.' }, - "absorb": { - name: "Absorb", - effect: "Um ataque que drena nutrientes. O usuário recupera PS pela metade do dano infligido ao alvo." + 'absorb': { + name: 'Absorb', + effect: 'Um ataque que drena nutrientes. O usuário recupera PS pela metade do dano infligido ao alvo.' }, - "megaDrain": { - name: "Mega Drain", - effect: "Um ataque que drena nutrientes. O usuário recupera PS pela metade do dano infligido ao alvo." + 'megaDrain': { + name: 'Mega Drain', + effect: 'Um ataque que drena nutrientes. O usuário recupera PS pela metade do dano infligido ao alvo.' }, - "leechSeed": { - name: "Leech Seed", - effect: "Uma semente é plantada no alvo. Isso rouba alguns pontos de PS do alvo a cada turno." + 'leechSeed': { + name: 'Leech Seed', + effect: 'Uma semente é plantada no alvo. Isso rouba alguns pontos de PS do alvo a cada turno.' }, - "growth": { - name: "Growth", - effect: "O corpo do usuário cresce de uma vez só, aumentando seu Ataque e Ataque Especial." + 'growth': { + name: 'Growth', + effect: 'O corpo do usuário cresce de uma vez só, aumentando seu Ataque e Ataque Especial.' }, - "razorLeaf": { - name: "Razor Leaf", - effect: "Folhas superafiadas são lançadas para cortar os Pokémon adversários. Golpes críticos ocorrem mais facilmente." + 'razorLeaf': { + name: 'Razor Leaf', + effect: 'Folhas superafiadas são lançadas para cortar os Pokémon adversários. Golpes críticos ocorrem mais facilmente.' }, - "solarBeam": { - name: "Solar Beam", - effect: "Neste ataque de dois turnos, o usuário absorve luz, então dispara um raio focalizado no próximo turno." + 'solarBeam': { + name: 'Solar Beam', + effect: 'Neste ataque de dois turnos, o usuário absorve luz, então dispara um raio focalizado no próximo turno.' }, - "poisonPowder": { - name: "Poison Powder", - effect: "O usuário espalha uma nuvem de poeira tóxica que envenena o alvo." + 'poisonPowder': { + name: 'Poison Powder', + effect: 'O usuário espalha uma nuvem de poeira tóxica que envenena o alvo.' }, - "stunSpore": { - name: "Stun Spore", - effect: "O usuário espalha uma nuvem de esporos entorpecentes que paralisam o alvo." + 'stunSpore': { + name: 'Stun Spore', + effect: 'O usuário espalha uma nuvem de esporos entorpecentes que paralisam o alvo.' }, - "sleepPowder": { - name: "Sleep Powder", - effect: "O usuário espalha uma grande nuvem de pó sonífero ao redor do alvo." + 'sleepPowder': { + name: 'Sleep Powder', + effect: 'O usuário espalha uma grande nuvem de pó sonífero ao redor do alvo.' }, - "petalDance": { - name: "Petal Dance", - effect: "O usuário ataca o alvo espalhando pétalas de dois a três turnos. O usuário então fica confuso." + 'petalDance': { + name: 'Petal Dance', + effect: 'O usuário ataca o alvo espalhando pétalas de dois a três turnos. O usuário então fica confuso.' }, - "stringShot": { - name: "String Shot", - effect: "O Pokémon adversário é enrolado com uma seda expelida da boca do usuário, o que reduz duramente sua Velocidade." + 'stringShot': { + name: 'String Shot', + effect: 'O Pokémon adversário é enrolado com uma seda expelida da boca do usuário, o que reduz duramente sua Velocidade.' }, - "dragonRage": { - name: "Dragon Rage", - effect: "Este ataque atinge o alvo com uma onda de choque de pura fúria. Este ataque sempre causa 40 PS de dano." + 'dragonRage': { + name: 'Dragon Rage', + effect: 'Este ataque atinge o alvo com uma onda de choque de pura fúria. Este ataque sempre causa 40 PS de dano.' }, - "fireSpin": { - name: "Fire Spin", - effect: "O alvo fica preso dentro de um vórtice feroz de fogo que se prolonga por quatro ou cinco turnos." + 'fireSpin': { + name: 'Fire Spin', + effect: 'O alvo fica preso dentro de um vórtice feroz de fogo que se prolonga por quatro ou cinco turnos.' }, - "thunderShock": { - name: "Thunder Shock", - effect: "Um choque elétrico que cai sobre o alvo causando dano. Isso também pode deixar o alvo paralisado." + 'thunderShock': { + name: 'Thunder Shock', + effect: 'Um choque elétrico que cai sobre o alvo causando dano. Isso também pode deixar o alvo paralisado.' }, - "thunderbolt": { - name: "Thunderbolt", - effect: "Uma forte explosão elétrica que cai sobre o alvo. Também pode deixar o alvo com paralisia." + 'thunderbolt': { + name: 'Thunderbolt', + effect: 'Uma forte explosão elétrica que cai sobre o alvo. Também pode deixar o alvo com paralisia.' }, - "thunderWave": { - name: "Thunder Wave", - effect: "O usuário lança um choque elétrico fraco que paralisa o alvo." + 'thunderWave': { + name: 'Thunder Wave', + effect: 'O usuário lança um choque elétrico fraco que paralisa o alvo.' }, - "thunder": { - name: "Thunder", - effect: "Um raio cruel despenca no alvo para causar dano. Isso também pode deixar o alvo com paralisia." + 'thunder': { + name: 'Thunder', + effect: 'Um raio cruel despenca no alvo para causar dano. Isso também pode deixar o alvo com paralisia.' }, - "rockThrow": { - name: "Rock Throw", - effect: "Para atacar, o usuário pega uma pequena rocha e joga no alvo." + 'rockThrow': { + name: 'Rock Throw', + effect: 'Para atacar, o usuário pega uma pequena rocha e joga no alvo.' }, - "earthquake": { - name: "Earthquake", - effect: "O usuário desencadeia um terremoto que atinge todos os Pokémon ao seu redor." + 'earthquake': { + name: 'Earthquake', + effect: 'O usuário desencadeia um terremoto que atinge todos os Pokémon ao seu redor.' }, - "fissure": { - name: "Fissure", - effect: "O usuário abre uma fissura no chão e joga o alvo nela. O alvo desmaiará instantaneamente se esse ataque acertar." + 'fissure': { + name: 'Fissure', + effect: 'O usuário abre uma fissura no chão e joga o alvo nela. O alvo desmaiará instantaneamente se esse ataque acertar.' }, - "dig": { - name: "Dig", - effect: "O usuário se entoca, então ataca no próximo turno." + 'dig': { + name: 'Dig', + effect: 'O usuário se entoca, então ataca no próximo turno.' }, - "toxic": { - name: "Toxic", - effect: "Um movimento que deixa o alvo seriamente envenenado. Seu dano venenoso aumenta a cada turno." + 'toxic': { + name: 'Toxic', + effect: 'Um movimento que deixa o alvo seriamente envenenado. Seu dano venenoso aumenta a cada turno.' }, - "confusion": { - name: "Confusion", - effect: "O alvo é atingido por uma força telecinética fraca. Isso também pode deixar o alvo confuso." + 'confusion': { + name: 'Confusion', + effect: 'O alvo é atingido por uma força telecinética fraca. Isso também pode deixar o alvo confuso.' }, - "psychic": { - name: "Psychic", - effect: "O alvo é atingido por uma força telecinética poderosa. Isso também pode diminuir a Defesa Especial do alvo." + 'psychic': { + name: 'Psychic', + effect: 'O alvo é atingido por uma força telecinética poderosa. Isso também pode diminuir a Defesa Especial do alvo.' }, - "hypnosis": { - name: "Hypnosis", - effect: "O usuário implanta uma sugestão hipnótica para fazer o alvo cair em um sono profundo." + 'hypnosis': { + name: 'Hypnosis', + effect: 'O usuário implanta uma sugestão hipnótica para fazer o alvo cair em um sono profundo.' }, - "meditate": { - name: "Meditate", - effect: "O usuário medita para despertar o poder profundo do seu corpo para aumentar seu Ataque." + 'meditate': { + name: 'Meditate', + effect: 'O usuário medita para despertar o poder profundo do seu corpo para aumentar seu Ataque.' }, - "agility": { - name: "Agility", - effect: "O usuário relaxa o corpo para se mover rapidamente. Isso aumenta bruscamente sua Velocidade." + 'agility': { + name: 'Agility', + effect: 'O usuário relaxa o corpo para se mover rapidamente. Isso aumenta bruscamente sua Velocidade.' }, - "quickAttack": { - name: "Quick Attack", - effect: "O usuário ataca o alvo em uma velocidade que o torna quase invisível. Esse movimento tem prioridade." + 'quickAttack': { + name: 'Quick Attack', + effect: 'O usuário ataca o alvo em uma velocidade que o torna quase invisível. Esse movimento tem prioridade.' }, - "rage": { - name: "Rage", - effect: "Enquanto este movimento estiver em uso, o poder da ira aumenta o Ataque toda vez que o usuário for atingido em batalha." + 'rage': { + name: 'Rage', + effect: 'Enquanto este movimento estiver em uso, o poder da ira aumenta o Ataque toda vez que o usuário for atingido em batalha.' }, - "teleport": { - name: "Teleport", - effect: "Use para fugir de qualquer Pokémon selvagem." + 'teleport': { + name: 'Teleport', + effect: 'Use para fugir de qualquer Pokémon selvagem.' }, - "nightShade": { - name: "Night Shade", - effect: "O usuário faz com que o alvo veja uma miragem assustadora. Isso causa dano igual ao nível do usuário." + 'nightShade': { + name: 'Night Shade', + effect: 'O usuário faz com que o alvo veja uma miragem assustadora. Isso causa dano igual ao nível do usuário.' }, - "mimic": { - name: "Mimic", - effect: "O usuário copia o último movimento do alvo. O movimento pode ser usado durante a batalha até que o Pokémon seja trocado." + 'mimic': { + name: 'Mimic', + effect: 'O usuário copia o último movimento do alvo. O movimento pode ser usado durante a batalha até que o Pokémon seja trocado.' }, - "screech": { - name: "Screech", - effect: "Um grito estridente que reduz duramente o atributo de Defesa do alvo." + 'screech': { + name: 'Screech', + effect: 'Um grito estridente que reduz duramente o atributo de Defesa do alvo.' }, - "doubleTeam": { - name: "Double Team", - effect: "Movendo-se rapidamente, o usuário faz cópias ilusórias para aumentar sua Evasão." + 'doubleTeam': { + name: 'Double Team', + effect: 'Movendo-se rapidamente, o usuário faz cópias ilusórias para aumentar sua Evasão.' }, - "recover": { - name: "Recover", - effect: "Restaurando suas células, o usuário restaura metade do seu máximo de PS." + 'recover': { + name: 'Recover', + effect: 'Restaurando suas células, o usuário restaura metade do seu máximo de PS.' }, - "harden": { - name: "Harden", - effect: "O usuário enrijece todos os músculos do seu corpo para aumentar seu atributo de Defesa." + 'harden': { + name: 'Harden', + effect: 'O usuário enrijece todos os músculos do seu corpo para aumentar seu atributo de Defesa.' }, - "minimize": { - name: "Minimize", - effect: "O usuário comprime seu corpo para se parecer menor, o que aumenta bruscamente sua Evasão." + 'minimize': { + name: 'Minimize', + effect: 'O usuário comprime seu corpo para se parecer menor, o que aumenta bruscamente sua Evasão.' }, - "smokescreen": { - name: "Smokescreen", - effect: "O usuário lança uma nuvem obscura de fumaça ou tinta. Isso diminui a Precisão do alvo." + 'smokescreen': { + name: 'Smokescreen', + effect: 'O usuário lança uma nuvem obscura de fumaça ou tinta. Isso diminui a Precisão do alvo.' }, - "confuseRay": { - name: "Confuse Ray", - effect: "O alvo é exposto a um raio sinistro que leva à confusão." + 'confuseRay': { + name: 'Confuse Ray', + effect: 'O alvo é exposto a um raio sinistro que leva à confusão.' }, - "withdraw": { - name: "Withdraw", - effect: "O usuário retrai seu corpo para dentro de seu casco duro, aumentando o seu atributo de Defesa." + 'withdraw': { + name: 'Withdraw', + effect: 'O usuário retrai seu corpo para dentro de seu casco duro, aumentando o seu atributo de Defesa.' }, - "defenseCurl": { - name: "Defense Curl", - effect: "O usuário se enrola para esconder os pontos fracos e aumentar seu atributo de Defesa." + 'defenseCurl': { + name: 'Defense Curl', + effect: 'O usuário se enrola para esconder os pontos fracos e aumentar seu atributo de Defesa.' }, - "barrier": { - name: "Barrier", - effect: "O usuário ergue uma barreira robusta que aumenta bruscamente a sua Defesa." + 'barrier': { + name: 'Barrier', + effect: 'O usuário ergue uma barreira robusta que aumenta bruscamente a sua Defesa.' }, - "lightScreen": { - name: "Light Screen", - effect: "Uma incrível parede de luz é erguida para reduzir o dano de ataques especiais por cinco turnos." + 'lightScreen': { + name: 'Light Screen', + effect: 'Uma incrível parede de luz é erguida para reduzir o dano de ataques especiais por cinco turnos.' }, - "haze": { - name: "Haze", - effect: "O usuário cria uma névoa que elimina todas as alterações de atributos de todos os Pokémon em batalha." + 'haze': { + name: 'Haze', + effect: 'O usuário cria uma névoa que elimina todas as alterações de atributos de todos os Pokémon em batalha.' }, - "reflect": { - name: "Reflect", - effect: "Uma incrível parede de luz é erguida para reduzir o dano de ataques físicos por cinco turnos." + 'reflect': { + name: 'Reflect', + effect: 'Uma incrível parede de luz é erguida para reduzir o dano de ataques físicos por cinco turnos.' }, - "focusEnergy": { - name: "Focus Energy", - effect: "O usuário respira fundo e concentra-se para que golpes críticos ocorram mais facilmente." + 'focusEnergy': { + name: 'Focus Energy', + effect: 'O usuário respira fundo e concentra-se para que golpes críticos ocorram mais facilmente.' }, - "bide": { - name: "Bide", - effect: "O usuário resiste a ataques por dois turnos, e revida causando o dobro do dano recebido." + 'bide': { + name: 'Bide', + effect: 'O usuário resiste a ataques por dois turnos, e revida causando o dobro do dano recebido.' }, - "metronome": { - name: "Metronome", - effect: "O usuário balança um dedo e estimula seu cérebro para usar aleatoriamente quase qualquer movimento." + 'metronome': { + name: 'Metronome', + effect: 'O usuário balança um dedo e estimula seu cérebro para usar aleatoriamente quase qualquer movimento.' }, - "mirrorMove": { - name: "Mirror Move", - effect: "O usuário contra-ataca o alvo imitando seu último movimento utilizado." + 'mirrorMove': { + name: 'Mirror Move', + effect: 'O usuário contra-ataca o alvo imitando seu último movimento utilizado.' }, - "self-Destruct": { - name: "Self-Destruct", - effect: "O usuário ataca tudo ao seu redor causando uma explosão. O usuário desmaia por usar esse golpe." + 'self-Destruct': { + name: 'Self-Destruct', + effect: 'O usuário ataca tudo ao seu redor causando uma explosão. O usuário desmaia por usar esse golpe.' }, - "eggBomb": { - name: "Egg Bomb", - effect: "Um ovo grande é arremessado contra o alvo com força máxima para causar dano." + 'eggBomb': { + name: 'Egg Bomb', + effect: 'Um ovo grande é arremessado contra o alvo com força máxima para causar dano.' }, - "lick": { - name: "Lick", - effect: "O alvo é lambido com uma língua comprida, causando dano. Isso também pode deixar o alvo paralisado." + 'lick': { + name: 'Lick', + effect: 'O alvo é lambido com uma língua comprida, causando dano. Isso também pode deixar o alvo paralisado.' }, - "smog": { - name: "Smog", - effect: "O alvo é atacado com uma descarga de gases poluentes. Isso também pode envenenar o alvo." + 'smog': { + name: 'Smog', + effect: 'O alvo é atacado com uma descarga de gases poluentes. Isso também pode envenenar o alvo.' }, - "sludge": { - name: "Sludge", - effect: "Lodo insalubre é no arremessado no alvo. Isso também pode causar envenenamento." + 'sludge': { + name: 'Sludge', + effect: 'Lodo insalubre é no arremessado no alvo. Isso também pode causar envenenamento.' }, - "boneClub": { - name: "Bone Club", - effect: "O usuário golpeia o alvo com um osso. Isso também pode o fazer o alvo hesitar." + 'boneClub': { + name: 'Bone Club', + effect: 'O usuário golpeia o alvo com um osso. Isso também pode o fazer o alvo hesitar.' }, - "fireBlast": { - name: "Fire Blast", - effect: "O alvo é atacado com uma intensa explosão de fogo consumidor. Isso também pode deixar o alvo com uma queimadura." + 'fireBlast': { + name: 'Fire Blast', + effect: 'O alvo é atacado com uma intensa explosão de fogo consumidor. Isso também pode deixar o alvo com uma queimadura.' }, - "waterfall": { - name: "Waterfall", - effect: "O usuário investe no alvo e pode fazê-lo hesitar." + 'waterfall': { + name: 'Waterfall', + effect: 'O usuário investe no alvo e pode fazê-lo hesitar.' }, - "clamp": { - name: "Clamp", - effect: "O alvo é apertado e imprensado pela concha densa e robusta do usuário por quatro ou cinco turnos." + 'clamp': { + name: 'Clamp', + effect: 'O alvo é apertado e imprensado pela concha densa e robusta do usuário por quatro ou cinco turnos.' }, - "swift": { - name: "Swift", - effect: "Raios em formato de estrela são disparados no Pokémon adversário. Esse ataque nunca erra." + 'swift': { + name: 'Swift', + effect: 'Raios em formato de estrela são disparados no Pokémon adversário. Esse ataque nunca erra.' }, - "skullBash": { - name: "Skull Bash", - effect: "O usuário retrai sua cabeça para aumentar a Defesa no primeiro turno e depois se choca com o alvo no próximo turno." + 'skullBash': { + name: 'Skull Bash', + effect: 'O usuário retrai sua cabeça para aumentar a Defesa no primeiro turno e depois se choca com o alvo no próximo turno.' }, - "spikeCannon": { - name: "Spike Cannon", - effect: "Espinhos afiados são lançados no alvo em rápida sucessão. Eles acertam de duas a cinco vezes seguidas." + 'spikeCannon': { + name: 'Spike Cannon', + effect: 'Espinhos afiados são lançados no alvo em rápida sucessão. Eles acertam de duas a cinco vezes seguidas.' }, - "constrict": { - name: "Constrict", - effect: "O alvo é atacado com longos e sorrateiros tentáculos ou vinhas. Isso também pode diminuir a Velocidade do alvo." + 'constrict': { + name: 'Constrict', + effect: 'O alvo é atacado com longos e sorrateiros tentáculos ou vinhas. Isso também pode diminuir a Velocidade do alvo.' }, - "amnesia": { - name: "Amnesia", - effect: "O usuário esvazia sua mente para esquecer suas preocupações. Aumenta bruscamente a Defesa Especial." + 'amnesia': { + name: 'Amnesia', + effect: 'O usuário esvazia sua mente para esquecer suas preocupações. Aumenta bruscamente a Defesa Especial.' }, - "kinesis": { - name: "Kinesis", - effect: "O usuário distrai o alvo entortando uma colher. Isso diminui a Precisão do alvo." + 'kinesis': { + name: 'Kinesis', + effect: 'O usuário distrai o alvo entortando uma colher. Isso diminui a Precisão do alvo.' }, - "soft-Boiled": { - name: "Soft-Boiled", - effect: "O usuário restaura os próprios PS pela metade dos seus PS máximos." + 'soft-Boiled': { + name: 'Soft-Boiled', + effect: 'O usuário restaura os próprios PS pela metade dos seus PS máximos.' }, - "highJumpKick": { - name: "High Jump Kick", - effect: "O alvo é atacado com uma joelhada de um pulo. Caso erre, o usuário se machuca." + 'highJumpKick': { + name: 'High Jump Kick', + effect: 'O alvo é atacado com uma joelhada de um pulo. Caso erre, o usuário se machuca.' }, - "glare": { - name: "Glare", - effect: "O usuário intimida o alvo com o padrão em sua barriga para causar paralisia." + 'glare': { + name: 'Glare', + effect: 'O usuário intimida o alvo com o padrão em sua barriga para causar paralisia.' }, - "dreamEater": { - name: "Dream Eater", - effect: "O usuário se alimenta dos sonhos de um alvo adormecido. Ele absorve metade do dano causado para curar seus PS." + 'dreamEater': { + name: 'Dream Eater', + effect: 'O usuário se alimenta dos sonhos de um alvo adormecido. Ele absorve metade do dano causado para curar seus PS.' }, - "poisonGas": { - name: "Poison Gas", - effect: "Uma nuvem de gás venenoso é assoprada no rosto do Pokémon adversário. Isso pode envenenar os alvos." + 'poisonGas': { + name: 'Poison Gas', + effect: 'Uma nuvem de gás venenoso é assoprada no rosto do Pokémon adversário. Isso pode envenenar os alvos.' }, - "barrage": { - name: "Barrage", - effect: "Objetos redondos são lançados no alvo para acertar de duas a cinco vezes seguidas." + 'barrage': { + name: 'Barrage', + effect: 'Objetos redondos são lançados no alvo para acertar de duas a cinco vezes seguidas.' }, - "leechLife": { - name: "Leech Life", - effect: "O usuário drena o sangue do alvo. Os PS do usuário são restaurados pela metade do dano recebido pelo alvo." + 'leechLife': { + name: 'Leech Life', + effect: 'O usuário drena o sangue do alvo. Os PS do usuário são restaurados pela metade do dano recebido pelo alvo.' }, - "lovelyKiss": { - name: "Lovely Kiss", - effect: "Com uma face assustadora, o usuário tenta beijar o alvo à força. Se conseguir, o alvo cai no sono." + 'lovelyKiss': { + name: 'Lovely Kiss', + effect: 'Com uma face assustadora, o usuário tenta beijar o alvo à força. Se conseguir, o alvo cai no sono.' }, - "skyAttack": { - name: "Sky Attack", - effect: "Um movimento de dois turnos onde golpes críticos ocorrem mais facilmente. Também pode fazer o alvo hesitar." + 'skyAttack': { + name: 'Sky Attack', + effect: 'Um movimento de dois turnos onde golpes críticos ocorrem mais facilmente. Também pode fazer o alvo hesitar.' }, - "transform": { - name: "Transform", - effect: "O usuário transforma-se em uma cópia do alvo, conseguindo os mesmos movimentos do adversário." + 'transform': { + name: 'Transform', + effect: 'O usuário transforma-se em uma cópia do alvo, conseguindo os mesmos movimentos do adversário.' }, - "bubble": { - name: "Bubble", - effect: "Um jato de incontáveis bolhas é disparado no Pokémon adversário. Isso também pode diminuir a velocidade do alvo." + 'bubble': { + name: 'Bubble', + effect: 'Um jato de incontáveis bolhas é disparado no Pokémon adversário. Isso também pode diminuir a velocidade do alvo.' }, - "dizzyPunch": { - name: "Dizzy Punch", - effect: "O alvo é atingido com socos dados ritmicamente. Isso também pode deixar alvo confuso." + 'dizzyPunch': { + name: 'Dizzy Punch', + effect: 'O alvo é atingido com socos dados ritmicamente. Isso também pode deixar alvo confuso.' }, - "spore": { - name: "Spore", - effect: "O usuário espalha rajadas de esporos que induzem sono ao alvo." + 'spore': { + name: 'Spore', + effect: 'O usuário espalha rajadas de esporos que induzem sono ao alvo.' }, - "flash": { - name: "Flash", - effect: "O usuário pisca uma luz brilhante que reduz a Precisão do alvo." + 'flash': { + name: 'Flash', + effect: 'O usuário pisca uma luz brilhante que reduz a Precisão do alvo.' }, - "psywave": { - name: "Psywave", - effect: "O alvo é atacado com uma estranha onda psíquica. O ataque varia de intensidade." + 'psywave': { + name: 'Psywave', + effect: 'O alvo é atacado com uma estranha onda psíquica. O ataque varia de intensidade.' }, - "splash": { - name: "Splash", - effect: "O usuário apenas debate-se no chão e espirra água ao seu redor sem efeito algum..." + 'splash': { + name: 'Splash', + effect: 'O usuário apenas debate-se no chão e espirra água ao seu redor sem efeito algum...' }, - "acidArmor": { - name: "Acid Armor", - effect: "O usuário altera sua estrutura celular para se liquefazer, aumentando bruscamente o seu atributo de Defesa." + 'acidArmor': { + name: 'Acid Armor', + effect: 'O usuário altera sua estrutura celular para se liquefazer, aumentando bruscamente o seu atributo de Defesa.' }, - "crabhammer": { - name: "Crabhammer", - effect: "O alvo é martelado com uma grande pinça. Golpes críticos acertam mais facilmente." + 'crabhammer': { + name: 'Crabhammer', + effect: 'O alvo é martelado com uma grande pinça. Golpes críticos acertam mais facilmente.' }, - "explosion": { - name: "Explosion", - effect: "O usuário ataca tudo o que estiver à sua volta causando uma tremenda explosão. O usuário desmaia ao usar esse movimento." + 'explosion': { + name: 'Explosion', + effect: 'O usuário ataca tudo o que estiver à sua volta causando uma tremenda explosão. O usuário desmaia ao usar esse movimento.' }, - "furySwipes": { - name: "Fury Swipes", - effect: "O alvo é atacado com garras afiadas ou foices rapidamente, de duas a cinco vezes seguidas." + 'furySwipes': { + name: 'Fury Swipes', + effect: 'O alvo é atacado com garras afiadas ou foices rapidamente, de duas a cinco vezes seguidas.' }, - "bonemerang": { - name: "Bonemerang", - effect: "O usuário arremessa o osso que segura. O osso gira, atingindo o alvo duas vezes, indo e voltando." + 'bonemerang': { + name: 'Bonemerang', + effect: 'O usuário arremessa o osso que segura. O osso gira, atingindo o alvo duas vezes, indo e voltando.' }, - "rest": { - name: "Rest", - effect: "O usuário dorme por dois turnos. Isso restaura completamente os PS do usuário e cura quaisquer condições negativas." + 'rest': { + name: 'Rest', + effect: 'O usuário dorme por dois turnos. Isso restaura completamente os PS do usuário e cura quaisquer condições negativas.' }, - "rockSlide": { - name: "Rock Slide", - effect: "Pedras grandes são arremessadas no Pokémon oponente para causar dano. Isso também pode fazer o Pokémon oponente hesitar." + 'rockSlide': { + name: 'Rock Slide', + effect: 'Pedras grandes são arremessadas no Pokémon oponente para causar dano. Isso também pode fazer o Pokémon oponente hesitar.' }, - "hyperFang": { - name: "Hyper Fang", - effect: "O usuário morde o alvo com força, usando as suas afiadas presas frontais. Isso também pode fazer o alvo hesitar." + 'hyperFang': { + name: 'Hyper Fang', + effect: 'O usuário morde o alvo com força, usando as suas afiadas presas frontais. Isso também pode fazer o alvo hesitar.' }, - "sharpen": { - name: "Sharpen", - effect: "O usuário abaixa o número de polígonos, ficando mais pontiagudo. Isso aumenta o seu atributo de Ataque." + 'sharpen': { + name: 'Sharpen', + effect: 'O usuário abaixa o número de polígonos, ficando mais pontiagudo. Isso aumenta o seu atributo de Ataque.' }, - "conversion": { - name: "Conversion", - effect: "O usuário muda seu tipo para o mesmo tipo do movimento no topo da lista dos movimentos que conhece no momento." + 'conversion': { + name: 'Conversion', + effect: 'O usuário muda seu tipo para o mesmo tipo do movimento no topo da lista dos movimentos que conhece no momento.' }, - "triAttack": { - name: "Tri Attack", - effect: "O usuário golpeia com um ataque de três raios simultâneos. Também pode queimar, congelar ou paralisar o alvo." + 'triAttack': { + name: 'Tri Attack', + effect: 'O usuário golpeia com um ataque de três raios simultâneos. Também pode queimar, congelar ou paralisar o alvo.' }, - "superFang": { - name: "Super Fang", - effect: "O usuário mastiga com força o alvo usando suas afiadas presas frontais. Isso corta os PS do alvo pela metade." + 'superFang': { + name: 'Super Fang', + effect: 'O usuário mastiga com força o alvo usando suas afiadas presas frontais. Isso corta os PS do alvo pela metade.' }, - "slash": { - name: "Slash", - effect: "O alvo é atacado com um açoite de garras ou lâminas. Golpes críticos ocorrem mais facilmente." + 'slash': { + name: 'Slash', + effect: 'O alvo é atacado com um açoite de garras ou lâminas. Golpes críticos ocorrem mais facilmente.' }, - "substitute": { - name: "Substitute", - effect: "O usuário faz uma cópia de si mesmo usando parte de seus PS. A cópia serve como uma isca para o usuário." + 'substitute': { + name: 'Substitute', + effect: 'O usuário faz uma cópia de si mesmo usando parte de seus PS. A cópia serve como uma isca para o usuário.' }, - "struggle": { - name: "Struggle", - effect: "Um ataque usado em desespero, apenas se o usuário não tiver PP. Isso também causa um pouco de dano no usuário." + 'struggle': { + name: 'Struggle', + effect: 'Um ataque usado em desespero, apenas se o usuário não tiver PP. Isso também causa um pouco de dano no usuário.' }, - "sketch": { - name: "Sketch", - effect: "Permite que o usuário aprenda permanentemente o último movimento usado pelo alvo. Assim que for usado, o Esboço desaparece." + 'sketch': { + name: 'Sketch', + effect: 'Permite que o usuário aprenda permanentemente o último movimento usado pelo alvo. Assim que for usado, o Esboço desaparece.' }, - "tripleKick": { - name: "Triple Kick", - effect: "Um ataque de três chutes consecutivos que se fortalece a cada golpe acertado." + 'tripleKick': { + name: 'Triple Kick', + effect: 'Um ataque de três chutes consecutivos que se fortalece a cada golpe acertado.' }, - "thief": { - name: "Thief", - effect: "O usuário ataca e rouba o item segurado por seu alvo simultaneamente. O usuário não pode roubar algo se ele já segurar um item." + 'thief': { + name: 'Thief', + effect: 'O usuário ataca e rouba o item segurado por seu alvo simultaneamente. O usuário não pode roubar algo se ele já segurar um item.' }, - "spiderWeb": { - name: "Spider Web", - effect: "O usuário enlaça o alvo com uma teia fina e grudenta, para que ele não possa fugir da batalha." + 'spiderWeb': { + name: 'Spider Web', + effect: 'O usuário enlaça o alvo com uma teia fina e grudenta, para que ele não possa fugir da batalha.' }, - "mindReader": { - name: "Mind Reader", - effect: "O usuário pressente os movimentos do alvo com sua mente para ter certeza que o seu próximo ataque não o erre." + 'mindReader': { + name: 'Mind Reader', + effect: 'O usuário pressente os movimentos do alvo com sua mente para ter certeza que o seu próximo ataque não o erre.' }, - "nightmare": { - name: "Nightmare", - effect: "Um alvo que dorme terá um pesadelo que causará dano a cada turno." + 'nightmare': { + name: 'Nightmare', + effect: 'Um alvo que dorme terá um pesadelo que causará dano a cada turno.' }, - "flameWheel": { - name: "Flame Wheel", - effect: "O usuário se envolve em fogo e dispara em direção ao alvo. Isso também pode causar queimaduras no oponente." + 'flameWheel': { + name: 'Flame Wheel', + effect: 'O usuário se envolve em fogo e dispara em direção ao alvo. Isso também pode causar queimaduras no oponente.' }, - "snore": { - name: "Snore", - effect: "Um ataque que só pode ser usado se o usuário estiver dormindo. O barulho alto pode fazer o alvo hesitar." + 'snore': { + name: 'Snore', + effect: 'Um ataque que só pode ser usado se o usuário estiver dormindo. O barulho alto pode fazer o alvo hesitar.' }, - "curse": { - name: "Curse", - effect: "Um movimento que funciona diferente com o tipo Fantasma do que com outros tipos." + 'curse': { + name: 'Curse', + effect: 'Um movimento que funciona diferente com o tipo Fantasma do que com outros tipos.' }, - "flail": { - name: "Flail", - effect: "O usuário agita os membros sem rumo para atacar. Quanto menores forem os PS do usuário, melhor será o movimento." + 'flail': { + name: 'Flail', + effect: 'O usuário agita os membros sem rumo para atacar. Quanto menores forem os PS do usuário, melhor será o movimento.' }, - "conversion2": { - name: "Conversion 2", - effect: "O usuário muda a própria tipagem para se fazer resistente ao tipo do último ataque usado pelo oponente." + 'conversion2': { + name: 'Conversion 2', + effect: 'O usuário muda a própria tipagem para se fazer resistente ao tipo do último ataque usado pelo oponente.' }, - "aeroblast": { - name: "Aeroblast", - effect: "Um vortex de vento é atirado em direção ao alvo para causar dano. Golpes críticos ocorrem mais facilmente." + 'aeroblast': { + name: 'Aeroblast', + effect: 'Um vortex de vento é atirado em direção ao alvo para causar dano. Golpes críticos ocorrem mais facilmente.' }, - "cottonSpore": { - name: "Cotton Spore", - effect: "O usuário solta esporos de algodão que grudam no Pokémon adversário. Isso prejudica bruscamente a Velocidade do oponente." + 'cottonSpore': { + name: 'Cotton Spore', + effect: 'O usuário solta esporos de algodão que grudam no Pokémon adversário. Isso prejudica bruscamente a Velocidade do oponente.' }, - "reversal": { - name: "Reversal", - effect: "Um ataque total que fica mais forte quanto menos PS o usuário possuir." + 'reversal': { + name: 'Reversal', + effect: 'Um ataque total que fica mais forte quanto menos PS o usuário possuir.' }, - "spite": { - name: "Spite", - effect: "O usuário libera todo o seu rancor no último movimento usado pelo oponente, cortando 4 PP do mesmo." + 'spite': { + name: 'Spite', + effect: 'O usuário libera todo o seu rancor no último movimento usado pelo oponente, cortando 4 PP do mesmo.' }, - "powderSnow": { - name: "Powder Snow", - effect: "O usuário ataca com uma brisa congelante de Neve em Pó. Isso talvez possa congelar o Pokémon adversário." + 'powderSnow': { + name: 'Powder Snow', + effect: 'O usuário ataca com uma brisa congelante de Neve em Pó. Isso talvez possa congelar o Pokémon adversário.' }, - "protect": { - name: "Protect", - effect: "Permite que o usuário desvie de todos os ataques. A sua chance de falhar aumenta, caso seja usado em sucessão." + 'protect': { + name: 'Protect', + effect: 'Permite que o usuário desvie de todos os ataques. A sua chance de falhar aumenta, caso seja usado em sucessão.' }, - "machPunch": { - name: "Mach Punch", - effect: "O usuário soca numa velocidade incompreensível. Esse movimento tem prioridade." + 'machPunch': { + name: 'Mach Punch', + effect: 'O usuário soca numa velocidade incompreensível. Esse movimento tem prioridade.' }, - "scaryFace": { - name: "Scary Face", - effect: "O usuário assusta o alvo com uma cara assustadora para prejudicar duramente a velocidade do oponente." + 'scaryFace': { + name: 'Scary Face', + effect: 'O usuário assusta o alvo com uma cara assustadora para prejudicar duramente a velocidade do oponente.' }, - "feintAttack": { - name: "Feint Attack", - effect: "O usuário se aproxima do alvo amigavelmente, então ataca com um soco inesperado. Esse ataque nunca erra." + 'feintAttack': { + name: 'Feint Attack', + effect: 'O usuário se aproxima do alvo amigavelmente, então ataca com um soco inesperado. Esse ataque nunca erra.' }, - "sweetKiss": { - name: "Sweet Kiss", - effect: "O usuário beija o alvo com uma fofura doce e angelical, causando confusão." + 'sweetKiss': { + name: 'Sweet Kiss', + effect: 'O usuário beija o alvo com uma fofura doce e angelical, causando confusão.' }, - "bellyDrum": { - name: "Belly Drum", - effect: "O usuário maximiza seu Ataque em troca de PS igual à metade do seu PS máximo." + 'bellyDrum': { + name: 'Belly Drum', + effect: 'O usuário maximiza seu Ataque em troca de PS igual à metade do seu PS máximo.' }, - "sludgeBomb": { - name: "Sludge Bomb", - effect: "Lodo insalubre é no arremessado no alvo. Isso também pode causar envenenamento." + 'sludgeBomb': { + name: 'Sludge Bomb', + effect: 'Lodo insalubre é no arremessado no alvo. Isso também pode causar envenenamento.' }, - "mud-Slap": { - name: "Mud-Slap", - effect: "O usuário arremessa lama no rosto do adversário para causar dano e prejudicar sua precisão." + 'mud-Slap': { + name: 'Mud-Slap', + effect: 'O usuário arremessa lama no rosto do adversário para causar dano e prejudicar sua precisão.' }, - "octazooka": { - name: "Octazooka", - effect: "O usuário ataca jogando tinta no rosto ou nos olhos do alvo. Isso pode prejudicar a Precisão do alvo." + 'octazooka': { + name: 'Octazooka', + effect: 'O usuário ataca jogando tinta no rosto ou nos olhos do alvo. Isso pode prejudicar a Precisão do alvo.' }, - "spikes": { - name: "Spikes", - effect: "O usuário lança armadilhas de espinhos nos pés da equipe adversária. As armadilhas ferem os Pokémon que são trocados em batalha." + 'spikes': { + name: 'Spikes', + effect: 'O usuário lança armadilhas de espinhos nos pés da equipe adversária. As armadilhas ferem os Pokémon que são trocados em batalha.' }, - "zapCannon": { - name: "Zap Cannon", - effect: "O usuário atira uma explosão elétrica como um canhão para infligir dano e causar paralisia." + 'zapCannon': { + name: 'Zap Cannon', + effect: 'O usuário atira uma explosão elétrica como um canhão para infligir dano e causar paralisia.' }, - "foresight": { - name: "Foresight", - effect: "Permite que um alvo do tipo Fantasma seja atingido por ataques do tipo Normal e Lutador. Isso também permite que um alvo evasivo seja acertado." + 'foresight': { + name: 'Foresight', + effect: 'Permite que um alvo do tipo Fantasma seja atingido por ataques do tipo Normal e Lutador. Isso também permite que um alvo evasivo seja acertado.' }, - "destinyBond": { - name: "Destiny Bond", - effect: "Quando esse movimento é usado, caso o usuário desmaie, o Pokémon que acertou o nocaute também desmaiará. A chance de falhar aumenta se usado em sucessão." + 'destinyBond': { + name: 'Destiny Bond', + effect: 'Quando esse movimento é usado, caso o usuário desmaie, o Pokémon que acertou o nocaute também desmaiará. A chance de falhar aumenta se usado em sucessão.' }, - "perishSong": { - name: "Perish Song", - effect: "Qualquer Pokémon que ouvir essa Canção desmaiará em três turnos, a não ser que ele seja retirado da batalha." + 'perishSong': { + name: 'Perish Song', + effect: 'Qualquer Pokémon que ouvir essa Canção desmaiará em três turnos, a não ser que ele seja retirado da batalha.' }, - "icyWind": { - name: "Icy Wind", - effect: "O usuário ataca com uma rajada de ar arrepiante. Isso também prejudica a Velocidade do Pokémon adversário." + 'icyWind': { + name: 'Icy Wind', + effect: 'O usuário ataca com uma rajada de ar arrepiante. Isso também prejudica a Velocidade do Pokémon adversário.' }, - "detect": { - name: "Detect", - effect: "Permite que o usuário desvie de todos os ataques. A sua chance de falhar aumenta, caso seja usado em sucessão." + 'detect': { + name: 'Detect', + effect: 'Permite que o usuário desvie de todos os ataques. A sua chance de falhar aumenta, caso seja usado em sucessão.' }, - "boneRush": { - name: "Bone Rush", - effect: "O usuário atinge o alvo com um osso duro de duas a cinco vezes seguidas." + 'boneRush': { + name: 'Bone Rush', + effect: 'O usuário atinge o alvo com um osso duro de duas a cinco vezes seguidas.' }, - "lock-On": { - name: "Lock-On", - effect: "O usuário foca sua mira no alvo. Isso garante que o próximo ataque não erre o alvo." + 'lock-On': { + name: 'Lock-On', + effect: 'O usuário foca sua mira no alvo. Isso garante que o próximo ataque não erre o alvo.' }, - "outrage": { - name: "Outrage", - effect: "O usuário fica furioso e ataca com violência de dois a três turnos. O usuário então se torna confuso." + 'outrage': { + name: 'Outrage', + effect: 'O usuário fica furioso e ataca com violência de dois a três turnos. O usuário então se torna confuso.' }, - "sandstorm": { - name: "Sandstorm", - effect: "Uma tempestade de areia é invocada durante 5 turnos para ferir todos os combatentes, exceto os tipos Pedra, Terra e Aço. Isso aumenta a Defesa Especial dos tipo Pedra." + 'sandstorm': { + name: 'Sandstorm', + effect: 'Uma tempestade de areia é invocada durante 5 turnos para ferir todos os combatentes, exceto os tipos Pedra, Terra e Aço. Isso aumenta a Defesa Especial dos tipo Pedra.' }, - "gigaDrain": { - name: "Giga Drain", - effect: "Um ataque que drena nutrientes. O usuário recupera PS pela metade do dano infligido ao alvo." + 'gigaDrain': { + name: 'Giga Drain', + effect: 'Um ataque que drena nutrientes. O usuário recupera PS pela metade do dano infligido ao alvo.' }, - "endure": { - name: "Endure", - effect: "O usuário resiste a qualquer ataque com pelo menos 1 PS. A chance de falhar aumenta caso seja usado em sucessão." + 'endure': { + name: 'Endure', + effect: 'O usuário resiste a qualquer ataque com pelo menos 1 PS. A chance de falhar aumenta caso seja usado em sucessão.' }, - "charm": { - name: "Charm", - effect: "O usuário contempla o alvo com um olhar charmoso, fazendo-o ficar menos atento. Isso prejudica duramente o Ataque do oponente." + 'charm': { + name: 'Charm', + effect: 'O usuário contempla o alvo com um olhar charmoso, fazendo-o ficar menos atento. Isso prejudica duramente o Ataque do oponente.' }, - "rollout": { - name: "Rollout", - effect: "O usuário rola continuamente em direção ao alvo por cinco turnos. O ataque fica mais forte a cada acerto." + 'rollout': { + name: 'Rollout', + effect: 'O usuário rola continuamente em direção ao alvo por cinco turnos. O ataque fica mais forte a cada acerto.' }, - "falseSwipe": { - name: "False Swipe", - effect: "Um ataque moderado que previne que o alvo desmaie. O alvo é deixado com pelo menos 1 de PS." + 'falseSwipe': { + name: 'False Swipe', + effect: 'Um ataque moderado que previne que o alvo desmaie. O alvo é deixado com pelo menos 1 de PS.' }, - "swagger": { - name: "Swagger", - effect: "O usuário enfurece e confunde o alvo. Entretanto, isso também aumenta bruscamente o Ataque do alvo." + 'swagger': { + name: 'Swagger', + effect: 'O usuário enfurece e confunde o alvo. Entretanto, isso também aumenta bruscamente o Ataque do alvo.' }, - "milkDrink": { - name: "Milk Drink", - effect: "O usuário restaura os próprios PS pela metade dos seus PS máximos." + 'milkDrink': { + name: 'Milk Drink', + effect: 'O usuário restaura os próprios PS pela metade dos seus PS máximos.' }, - "spark": { - name: "Spark", - effect: "O usuário direciona uma investida carregada com eletricidade no alvo. Isso pode paralisar o alvo." + 'spark': { + name: 'Spark', + effect: 'O usuário direciona uma investida carregada com eletricidade no alvo. Isso pode paralisar o alvo.' }, - "furyCutter": { - name: "Fury Cutter", - effect: "O alvo é cortado com foices ou garras. Esse ataque se torna mais poderoso se usado em sucessão." + 'furyCutter': { + name: 'Fury Cutter', + effect: 'O alvo é cortado com foices ou garras. Esse ataque se torna mais poderoso se usado em sucessão.' }, - "steelWing": { - name: "Steel Wing", - effect: "O alvo é atingido com asas de aço. Isso também pode aumentar a Defesa do usuário." + 'steelWing': { + name: 'Steel Wing', + effect: 'O alvo é atingido com asas de aço. Isso também pode aumentar a Defesa do usuário.' }, - "meanLook": { - name: "Mean Look", - effect: "O usuário encara o alvo com um olhar sombrio e opressor. O alvo se torna incapaz de fugir." + 'meanLook': { + name: 'Mean Look', + effect: 'O usuário encara o alvo com um olhar sombrio e opressor. O alvo se torna incapaz de fugir.' }, - "attract": { - name: "Attract", - effect: "Caso o adversário seja do gênero oposto ao usuário, o alvo se apaixona e se torna menos suscetível a atacar." + 'attract': { + name: 'Attract', + effect: 'Caso o adversário seja do gênero oposto ao usuário, o alvo se apaixona e se torna menos suscetível a atacar.' }, - "sleepTalk": { - name: "Sleep Talk", - effect: "Enquanto está dormindo, o usuário usa aleatoriamente um dos movimentos que tem conhecimento." + 'sleepTalk': { + name: 'Sleep Talk', + effect: 'Enquanto está dormindo, o usuário usa aleatoriamente um dos movimentos que tem conhecimento.' }, - "healBell": { - name: "Heal Bell", - effect: "O usuário toca um sino calmante para curar condições de estados de todos os Pokémon aliados na equipe." + 'healBell': { + name: 'Heal Bell', + effect: 'O usuário toca um sino calmante para curar condições de estados de todos os Pokémon aliados na equipe.' }, - "return": { - name: "Return", - effect: "Um ataque poderoso que fica mais poderoso à medida que o usuário gosta de seu Treinador." + 'return': { + name: 'Return', + effect: 'Um ataque poderoso que fica mais poderoso à medida que o usuário gosta de seu Treinador.' }, - "present": { - name: "Present", - effect: "O usuário ataca o alvo entregando um presente com uma armadilha oculta. Entretanto, às vezes cura os PS do alvo." + 'present': { + name: 'Present', + effect: 'O usuário ataca o alvo entregando um presente com uma armadilha oculta. Entretanto, às vezes cura os PS do alvo.' }, - "frustration": { - name: "Frustration", - effect: "Um ataque poderoso que fica mais poderoso à medida que o usuário desgosta de seu Treinador." + 'frustration': { + name: 'Frustration', + effect: 'Um ataque poderoso que fica mais poderoso à medida que o usuário desgosta de seu Treinador.' }, - "safeguard": { - name: "Safeguard", - effect: "O usuário cria um campo protetor que previne condições de estado por cinco turnos." + 'safeguard': { + name: 'Safeguard', + effect: 'O usuário cria um campo protetor que previne condições de estado por cinco turnos.' }, - "painSplit": { - name: "Pain Split", - effect: "O usuário adiciona os próprios PS aos PS do alvo, então compartilha igualmente os PS combinados com o alvo." + 'painSplit': { + name: 'Pain Split', + effect: 'O usuário adiciona os próprios PS aos PS do alvo, então compartilha igualmente os PS combinados com o alvo.' }, - "sacredFire": { - name: "Sacred Fire", - effect: "O usuário é arrasado com uma rajada de fogo místico de grande intensidade. Isso pode deixar o alvo queimado." + 'sacredFire': { + name: 'Sacred Fire', + effect: 'O usuário é arrasado com uma rajada de fogo místico de grande intensidade. Isso pode deixar o alvo queimado.' }, - "magnitude": { - name: "Magnitude", - effect: "O usuário ataca tudo ao seu redor com um grande tremor. Seu poder varia." + 'magnitude': { + name: 'Magnitude', + effect: 'O usuário ataca tudo ao seu redor com um grande tremor. Seu poder varia.' }, - "dynamicPunch": { - name: "Dynamic Punch", - effect: "O usuário soca o alvo com sua força totalmente concentrada. Em caso de acerto, confundirá o alvo." + 'dynamicPunch': { + name: 'Dynamic Punch', + effect: 'O usuário soca o alvo com sua força totalmente concentrada. Em caso de acerto, confundirá o alvo.' }, - "megahorn": { - name: "Megahorn", - effect: "Usando seu impressionante chifre resistente, o usuário golpeia o alvo sem trégua." + 'megahorn': { + name: 'Megahorn', + effect: 'Usando seu impressionante chifre resistente, o usuário golpeia o alvo sem trégua.' }, - "dragonBreath": { - name: "Dragon Breath", - effect: "O usuário sopra uma poderosa rajada que causa dano. Isso também pode paralisar o alvo." + 'dragonBreath': { + name: 'Dragon Breath', + effect: 'O usuário sopra uma poderosa rajada que causa dano. Isso também pode paralisar o alvo.' }, - "batonPass": { - name: "Baton Pass", - effect: "O usuário troca de lugar com um Pokémon da equipe em espera e passa para ele quaisquer mudanças de atributos." + 'batonPass': { + name: 'Baton Pass', + effect: 'O usuário troca de lugar com um Pokémon da equipe em espera e passa para ele quaisquer mudanças de atributos.' }, - "encore": { - name: "Encore", - effect: "O usuário enaltece o alvo para que ele continue usando o movimento que ele usou por último durante três turnos." + 'encore': { + name: 'Encore', + effect: 'O usuário enaltece o alvo para que ele continue usando o movimento que ele usou por último durante três turnos.' }, - "pursuit": { - name: "Pursuit", - effect: "Um ataque que causa o dobro do dano caso seja usado em um alvo que esteja sendo trocado para fora da batalha." + 'pursuit': { + name: 'Pursuit', + effect: 'Um ataque que causa o dobro do dano caso seja usado em um alvo que esteja sendo trocado para fora da batalha.' }, - "rapidSpin": { - name: "Rapid Spin", - effect: "Um ataque giratório que pode anular movimentos como Enlaçar, Embrulho, Sanguessuga e Espinhos." + 'rapidSpin': { + name: 'Rapid Spin', + effect: 'Um ataque giratório que pode anular movimentos como Enlaçar, Embrulho, Sanguessuga e Espinhos.' }, - "sweetScent": { - name: "Sweet Scent", - effect: "Um aroma doce que prejudica duramente a Evasão do Pokémon adversário." + 'sweetScent': { + name: 'Sweet Scent', + effect: 'Um aroma doce que prejudica duramente a Evasão do Pokémon adversário.' }, - "ironTail": { - name: "Iron Tail", - effect: "O alvo é esmagado com uma cauda dura como aço. Isso também pode prejudicar a Defesa do alvo." + 'ironTail': { + name: 'Iron Tail', + effect: 'O alvo é esmagado com uma cauda dura como aço. Isso também pode prejudicar a Defesa do alvo.' }, - "metalClaw": { - name: "Metal Claw", - effect: "O alvo é cortado com garras de metal. Isso também pode aumentar o Ataque do usuário." + 'metalClaw': { + name: 'Metal Claw', + effect: 'O alvo é cortado com garras de metal. Isso também pode aumentar o Ataque do usuário.' }, - "vitalThrow": { - name: "Vital Throw", - effect: "O usuário sempre ataca por último. Em troca, esse arremesso nunca erra." + 'vitalThrow': { + name: 'Vital Throw', + effect: 'O usuário sempre ataca por último. Em troca, esse arremesso nunca erra.' }, - "morningSun": { - name: "Morning Sun", - effect: "O usuário restaura os próprios PS. A quantidade de PS recuperada varia conforme o clima." + 'morningSun': { + name: 'Morning Sun', + effect: 'O usuário restaura os próprios PS. A quantidade de PS recuperada varia conforme o clima.' }, - "synthesis": { - name: "Synthesis", - effect: "O usuário restaura os próprios PS. A quantidade de PS recuperada varia conforme o clima." + 'synthesis': { + name: 'Synthesis', + effect: 'O usuário restaura os próprios PS. A quantidade de PS recuperada varia conforme o clima.' }, - "moonlight": { - name: "Moonlight", - effect: "O usuário restaura os próprios PS. A quantidade de PS recuperada varia conforme o clima." + 'moonlight': { + name: 'Moonlight', + effect: 'O usuário restaura os próprios PS. A quantidade de PS recuperada varia conforme o clima.' }, - "hiddenPower": { - name: "Hidden Power", - effect: "Um ataque único que varia em tipo dependendo do Pokémon que está utilizando." + 'hiddenPower': { + name: 'Hidden Power', + effect: 'Um ataque único que varia em tipo dependendo do Pokémon que está utilizando.' }, - "crossChop": { - name: "Cross Chop", - effect: "O usuário dá um golpe duplo com seus antebraços cruzados. Golpes críticos ocorrem mais facilmente." + 'crossChop': { + name: 'Cross Chop', + effect: 'O usuário dá um golpe duplo com seus antebraços cruzados. Golpes críticos ocorrem mais facilmente.' }, - "twister": { - name: "Twister", - effect: "O usuário rapidamente cria um tornado vicioso para rasgar os Pokémon adversários. Isso pode fazê-los hesitar." + 'twister': { + name: 'Twister', + effect: 'O usuário rapidamente cria um tornado vicioso para rasgar os Pokémon adversários. Isso pode fazê-los hesitar.' }, - "rainDance": { - name: "Rain Dance", - effect: "O usuário invoca uma chuva intensa que continua caindo por cinco turnos, fortalecendo os movimentos do tipo Água. Também enfraquece os movimentos do tipo fogo." + 'rainDance': { + name: 'Rain Dance', + effect: 'O usuário invoca uma chuva intensa que continua caindo por cinco turnos, fortalecendo os movimentos do tipo Água. Também enfraquece os movimentos do tipo fogo.' }, - "sunnyDay": { - name: "Sunny Day", - effect: "O usuário intensifica o sol por cinco turnos, fortalecendo os ataques do tipo Fogo. Também enfraquece os movimentos do tipo água." + 'sunnyDay': { + name: 'Sunny Day', + effect: 'O usuário intensifica o sol por cinco turnos, fortalecendo os ataques do tipo Fogo. Também enfraquece os movimentos do tipo água.' }, - "crunch": { - name: "Crunch", - effect: "O usuário mastiga o alvo com presas afiadas. Isso também pode prejudicar a Defesa do alvo." + 'crunch': { + name: 'Crunch', + effect: 'O usuário mastiga o alvo com presas afiadas. Isso também pode prejudicar a Defesa do alvo.' }, - "mirrorCoat": { - name: "Mirror Coat", - effect: "Um movimento de retaliação que contra-ataca qualquer ataque especial, infligindo o dobro do dano recebido." + 'mirrorCoat': { + name: 'Mirror Coat', + effect: 'Um movimento de retaliação que contra-ataca qualquer ataque especial, infligindo o dobro do dano recebido.' }, - "psychUp": { - name: "Psych Up", - effect: "O usuário hipnotiza a si mesmo para copiar qualquer mudança de atributo feita pelo alvo." + 'psychUp': { + name: 'Psych Up', + effect: 'O usuário hipnotiza a si mesmo para copiar qualquer mudança de atributo feita pelo alvo.' }, - "extremeSpeed": { - name: "Extreme Speed", - effect: "O usuário ataca o alvo numa velocidade invisível ao olho nu. Esse movimento tem prioridade." + 'extremeSpeed': { + name: 'Extreme Speed', + effect: 'O usuário ataca o alvo numa velocidade invisível ao olho nu. Esse movimento tem prioridade.' }, - "ancientPower": { - name: "Ancient Power", - effect: "O usuário ataca com um poder pré-histórico. Isso também pode fortalecer todos os atributos do usuário de uma vez." + 'ancientPower': { + name: 'Ancient Power', + effect: 'O usuário ataca com um poder pré-histórico. Isso também pode fortalecer todos os atributos do usuário de uma vez.' }, - "shadowBall": { - name: "Shadow Ball", - effect: "O usuário arremessa uma esfera sombria no alvo. Isso também pode prejudicar a Defesa Especial do alvo." + 'shadowBall': { + name: 'Shadow Ball', + effect: 'O usuário arremessa uma esfera sombria no alvo. Isso também pode prejudicar a Defesa Especial do alvo.' }, - "futureSight": { - name: "Future Sight", - effect: "Dois turnos após esse movimento ser usado, uma grande quantidade de energia psíquica atinge o alvo." + 'futureSight': { + name: 'Future Sight', + effect: 'Dois turnos após esse movimento ser usado, uma grande quantidade de energia psíquica atinge o alvo.' }, - "rockSmash": { - name: "Rock Smash", - effect: "O usuário ataca com um soco. Isso também pode prejudicar o atributo de Defesa do alvo." + 'rockSmash': { + name: 'Rock Smash', + effect: 'O usuário ataca com um soco. Isso também pode prejudicar o atributo de Defesa do alvo.' }, - "whirlpool": { - name: "Whirlpool", - effect: "O usuário prende o alvo num violento redemoinho por quatro ou cinco turnos." + 'whirlpool': { + name: 'Whirlpool', + effect: 'O usuário prende o alvo num violento redemoinho por quatro ou cinco turnos.' }, - "beatUp": { - name: "Beat Up", - effect: "O usuário reúne todos os Pokémon da equipe para atacar o alvo. Quanto maior o número de Pokémon na equipe, maior será o número de ataques." + 'beatUp': { + name: 'Beat Up', + effect: 'O usuário reúne todos os Pokémon da equipe para atacar o alvo. Quanto maior o número de Pokémon na equipe, maior será o número de ataques.' }, - "fakeOut": { - name: "Fake Out", - effect: "Um ataque que acerta primeiro e faz o alvo hesitar. Só funciona no primeiro turno do usuário em batalha." + 'fakeOut': { + name: 'Fake Out', + effect: 'Um ataque que acerta primeiro e faz o alvo hesitar. Só funciona no primeiro turno do usuário em batalha.' }, - "uproar": { - name: "Uproar", - effect: "O usuário ataca gritando por três turnos. Durante esse tempo, ninguém pode cair no sono." + 'uproar': { + name: 'Uproar', + effect: 'O usuário ataca gritando por três turnos. Durante esse tempo, ninguém pode cair no sono.' }, - "stockpile": { - name: "Stockpile", - effect: "O usuário carrega seu poder e fortalece a Defesa e a Defesa Especial. O movimento pode ser usado três vezes." + 'stockpile': { + name: 'Stockpile', + effect: 'O usuário carrega seu poder e fortalece a Defesa e a Defesa Especial. O movimento pode ser usado três vezes.' }, - "spitUp": { - name: "Spit Up", - effect: "O poder carregado usando o movimento Estocagem é liberado de uma só vez em um ataque. Quanto mais poder é armazenado, maior a força do movimento." + 'spitUp': { + name: 'Spit Up', + effect: 'O poder carregado usando o movimento Estocagem é liberado de uma só vez em um ataque. Quanto mais poder é armazenado, maior a força do movimento.' }, - "swallow": { - name: "Swallow", - effect: "O poder carregado usando o movimento Estocagem é absorvido pelo usuário para curar PS. Quanto mais poder for armazenado, mais PS serão recuperados." + 'swallow': { + name: 'Swallow', + effect: 'O poder carregado usando o movimento Estocagem é absorvido pelo usuário para curar PS. Quanto mais poder for armazenado, mais PS serão recuperados.' }, - "heatWave": { - name: "Heat Wave", - effect: "O usuário ataca exalando um sopro ardente nos Pokémon adversários. Isso também pode deixar esses Pokémon queimados." + 'heatWave': { + name: 'Heat Wave', + effect: 'O usuário ataca exalando um sopro ardente nos Pokémon adversários. Isso também pode deixar esses Pokémon queimados.' }, - "hail": { - name: "Hail", - effect: "O usuário invoca uma tempestade de granizo durante cinco turnos. Isso fere todos os Pokémon, exceto os tipo Gelo." + 'hail': { + name: 'Hail', + effect: 'O usuário invoca uma tempestade de granizo durante cinco turnos. Isso fere todos os Pokémon, exceto os tipo Gelo.' }, - "torment": { - name: "Torment", - effect: "O usuário atormenta o alvo, fazendo-o incapaz de usar o mesmo movimento duas vezes seguidas." + 'torment': { + name: 'Torment', + effect: 'O usuário atormenta o alvo, fazendo-o incapaz de usar o mesmo movimento duas vezes seguidas.' }, - "flatter": { - name: "Flatter", - effect: "Bajulação é usada para confundir o oponente. Entretanto, isso também fortalece o Ataque Especial do alvo." + 'flatter': { + name: 'Flatter', + effect: 'Bajulação é usada para confundir o oponente. Entretanto, isso também fortalece o Ataque Especial do alvo.' }, - "will-O-Wisp": { - name: "Will-O-Wisp", - effect: "O usuário atira uma sinistra chama azulada no alvo para causar uma queimadura." + 'will-O-Wisp': { + name: 'Will-O-Wisp', + effect: 'O usuário atira uma sinistra chama azulada no alvo para causar uma queimadura.' }, - "memento": { - name: "Memento", - effect: "O usuário desmaia quando usa esse movimento. Em troca, prejudica duramente o Ataque e o Ataque Especial do alvo." + 'memento': { + name: 'Memento', + effect: 'O usuário desmaia quando usa esse movimento. Em troca, prejudica duramente o Ataque e o Ataque Especial do alvo.' }, - "facade": { - name: "Facade", - effect: "Um ataque que dobra de poder caso o usuário esteja envenenado, queimado ou paralisado." + 'facade': { + name: 'Facade', + effect: 'Um ataque que dobra de poder caso o usuário esteja envenenado, queimado ou paralisado.' }, - "focusPunch": { - name: "Focus Punch", - effect: "O usuário foca sua mente antes de dar um soco. Esse ataque falhará caso o usuário seja atingido antes de executá-lo." + 'focusPunch': { + name: 'Focus Punch', + effect: 'O usuário foca sua mente antes de dar um soco. Esse ataque falhará caso o usuário seja atingido antes de executá-lo.' }, - "smellingSalts": { - name: "Smelling Salts", - effect: "Esse ataque causa o dobro do dano em um alvo paralisado. Entretanto, isso também cura a paralisia do alvo." + 'smellingSalts': { + name: 'Smelling Salts', + effect: 'Esse ataque causa o dobro do dano em um alvo paralisado. Entretanto, isso também cura a paralisia do alvo.' }, - "followMe": { - name: "Follow Me", - effect: "O usuário chama a atenção para si mesmo, fazendo todos os alvos mirarem apenas nele." + 'followMe': { + name: 'Follow Me', + effect: 'O usuário chama a atenção para si mesmo, fazendo todos os alvos mirarem apenas nele.' }, - "naturePower": { - name: "Nature Power", - effect: "Um ataque que faz uso do poder da natureza. Seus efeitos variam dependendo do ambiente ao redor do usuário." + 'naturePower': { + name: 'Nature Power', + effect: 'Um ataque que faz uso do poder da natureza. Seus efeitos variam dependendo do ambiente ao redor do usuário.' }, - "charge": { - name: "Charge", - effect: "O usuário fortalece o poder do golpe do tipo Elétrico usado no próximo turno. Isso também fortalece a Defesa Especial do usuário." + 'charge': { + name: 'Charge', + effect: 'O usuário fortalece o poder do golpe do tipo Elétrico usado no próximo turno. Isso também fortalece a Defesa Especial do usuário.' }, - "taunt": { - name: "Taunt", - effect: "O alvo é provocado e fica em fúria, fazendo-o usar apenas movimentos de ataque por três turnos." + 'taunt': { + name: 'Taunt', + effect: 'O alvo é provocado e fica em fúria, fazendo-o usar apenas movimentos de ataque por três turnos.' }, - "helpingHand": { - name: "Helping Hand", - effect: "O usuário auxilia um aliado, fortalecendo o poder do ataque desse aliado." + 'helpingHand': { + name: 'Helping Hand', + effect: 'O usuário auxilia um aliado, fortalecendo o poder do ataque desse aliado.' }, - "trick": { - name: "Trick", - effect: "O usuário pega o alvo de surpresa e faz uma troca de itens com o alvo." + 'trick': { + name: 'Trick', + effect: 'O usuário pega o alvo de surpresa e faz uma troca de itens com o alvo.' }, - "rolePlay": { - name: "Role Play", - effect: "O usuário imita o alvo completamente, copiando a Habilidade natural do alvo." + 'rolePlay': { + name: 'Role Play', + effect: 'O usuário imita o alvo completamente, copiando a Habilidade natural do alvo.' }, - "wish": { - name: "Wish", - effect: "Um turno após esse movimento ter sido usado, os PS do usuário ou de seu substituinte são restaurados pela metade dos PS máximos do usuário." + 'wish': { + name: 'Wish', + effect: 'Um turno após esse movimento ter sido usado, os PS do usuário ou de seu substituinte são restaurados pela metade dos PS máximos do usuário.' }, - "assist": { - name: "Assist", - effect: "O usuário na pressa usa aleatoriamente um dos movimentos conhecidos pelos outros Pokémon na equipe." + 'assist': { + name: 'Assist', + effect: 'O usuário na pressa usa aleatoriamente um dos movimentos conhecidos pelos outros Pokémon na equipe.' }, - "ingrain": { - name: "Ingrain", - effect: "O usuário planta suas raízes para curar seus PS por turno. Devido ao enraizamento, ele não pode sair da batalha." + 'ingrain': { + name: 'Ingrain', + effect: 'O usuário planta suas raízes para curar seus PS por turno. Devido ao enraizamento, ele não pode sair da batalha.' }, - "superpower": { - name: "Superpower", - effect: "O usuário ataca o alvo com grande poder. Entretanto, isso também prejudica o Ataque e Defesa do usuário." + 'superpower': { + name: 'Superpower', + effect: 'O usuário ataca o alvo com grande poder. Entretanto, isso também prejudica o Ataque e Defesa do usuário.' }, - "magicCoat": { - name: "Magic Coat", - effect: "Uma barreira que reflete de volta ao alvo movimentos como Semente Drenante e movimentos que reduzem atributos." + 'magicCoat': { + name: 'Magic Coat', + effect: 'Uma barreira que reflete de volta ao alvo movimentos como Semente Drenante e movimentos que reduzem atributos.' }, - "recycle": { - name: "Recycle", - effect: "O usuário recicla um item segurado que já foi usado em batalha para que possa ser usado de novo." + 'recycle': { + name: 'Recycle', + effect: 'O usuário recicla um item segurado que já foi usado em batalha para que possa ser usado de novo.' }, - "revenge": { - name: "Revenge", - effect: "Um movimento atacante que inflige o dobro do dano se o usuário foi ferido pelo adversário no mesmo turno." + 'revenge': { + name: 'Revenge', + effect: 'Um movimento atacante que inflige o dobro do dano se o usuário foi ferido pelo adversário no mesmo turno.' }, - "brickBreak": { - name: "Brick Break", - effect: "O usuário ataca com um corte veloz. Isso também quebra barreiras como Tela de Luz e Refletir." + 'brickBreak': { + name: 'Brick Break', + effect: 'O usuário ataca com um corte veloz. Isso também quebra barreiras como Tela de Luz e Refletir.' }, - "yawn": { - name: "Yawn", - effect: "O usuário dá um grande e preguiçoso bocejo que acalma o alvo, fazendo-o cair no sono no próximo turno." + 'yawn': { + name: 'Yawn', + effect: 'O usuário dá um grande e preguiçoso bocejo que acalma o alvo, fazendo-o cair no sono no próximo turno.' }, - "knockOff": { - name: "Knock Off", - effect: "O usuário dá um tapa no item segurado pelo alvo e esse item não poderá mais ser usado naquela batalha. Caso possua um item, o alvo receberá mais dano." + 'knockOff': { + name: 'Knock Off', + effect: 'O usuário dá um tapa no item segurado pelo alvo e esse item não poderá mais ser usado naquela batalha. Caso possua um item, o alvo receberá mais dano.' }, - "endeavor": { - name: "Endeavor", - effect: "Um movimento de ataque que corta os PS do alvo para que se equalize aos PS do usuário." + 'endeavor': { + name: 'Endeavor', + effect: 'Um movimento de ataque que corta os PS do alvo para que se equalize aos PS do usuário.' }, - "eruption": { - name: "Eruption", - effect: "O usuário ataca o Pokémon adversário com uma fúria explosiva. Quanto menor for os PS do usuário, menor será o poder do movimento." + 'eruption': { + name: 'Eruption', + effect: 'O usuário ataca o Pokémon adversário com uma fúria explosiva. Quanto menor for os PS do usuário, menor será o poder do movimento.' }, - "skillSwap": { - name: "Skill Swap", - effect: "O usuário utiliza seu poder psíquico para trocar de Habilidade com o alvo." + 'skillSwap': { + name: 'Skill Swap', + effect: 'O usuário utiliza seu poder psíquico para trocar de Habilidade com o alvo.' }, - "imprison": { - name: "Imprison", - effect: "Se os Pokémon adversários conhecerem algum movimento também conhecido pelo usuário, eles não poderão usá-lo." + 'imprison': { + name: 'Imprison', + effect: 'Se os Pokémon adversários conhecerem algum movimento também conhecido pelo usuário, eles não poderão usá-lo.' }, - "refresh": { - name: "Refresh", - effect: "O usuário descansa para curar a si mesmo de envenenamentos, queimaduras ou paralisias." + 'refresh': { + name: 'Refresh', + effect: 'O usuário descansa para curar a si mesmo de envenenamentos, queimaduras ou paralisias.' }, - "grudge": { - name: "Grudge", - effect: "Se o usuário desmaiar, o rancor do usuário vai esgotar completamente os PP do movimento que o nocauteou." + 'grudge': { + name: 'Grudge', + effect: 'Se o usuário desmaiar, o rancor do usuário vai esgotar completamente os PP do movimento que o nocauteou.' }, - "snatch": { - name: "Snatch", - effect: "O usuário rouba o efeito de qualquer tentativa de usar um movimento de cura ou mudança de atributo." + 'snatch': { + name: 'Snatch', + effect: 'O usuário rouba o efeito de qualquer tentativa de usar um movimento de cura ou mudança de atributo.' }, - "secretPower": { - name: "Secret Power", - effect: "Os efeitos adicionais deste movimento variam dependendo do ambiente ao redor do usuário." + 'secretPower': { + name: 'Secret Power', + effect: 'Os efeitos adicionais deste movimento variam dependendo do ambiente ao redor do usuário.' }, - "dive": { - name: "Dive", - effect: "Mergulhando no primeiro turno, o usuário emerge e ataca no próximo turno." + 'dive': { + name: 'Dive', + effect: 'Mergulhando no primeiro turno, o usuário emerge e ataca no próximo turno.' }, - "armThrust": { - name: "Arm Thrust", - effect: "O usuário solta uma sequência de golpes braçais com as palmas abertas, de duas a cinco vezes seguidas." + 'armThrust': { + name: 'Arm Thrust', + effect: 'O usuário solta uma sequência de golpes braçais com as palmas abertas, de duas a cinco vezes seguidas.' }, - "camouflage": { - name: "Camouflage", - effect: "O tipo do usuário é mudado dependendo do ambiente ao seu redor, como na margem da água, rodeado por grama ou dentro de uma caverna." + 'camouflage': { + name: 'Camouflage', + effect: 'O tipo do usuário é mudado dependendo do ambiente ao seu redor, como na margem da água, rodeado por grama ou dentro de uma caverna.' }, - "tailGlow": { - name: "Tail Glow", - effect: "O usuário direciona seu olhar à luzes piscantes para focar sua mente, aumentando drasticamente o seu Ataque Especial." + 'tailGlow': { + name: 'Tail Glow', + effect: 'O usuário direciona seu olhar à luzes piscantes para focar sua mente, aumentando drasticamente o seu Ataque Especial.' }, - "lusterPurge": { - name: "Luster Purge", - effect: "O usuário libera uma explosão de luz letal. Isso pode prejudicar a Defesa Especial do alvo." + 'lusterPurge': { + name: 'Luster Purge', + effect: 'O usuário libera uma explosão de luz letal. Isso pode prejudicar a Defesa Especial do alvo.' }, - "mistBall": { - name: "Mist Ball", - effect: "Um amalgamado de penas nevoentas envolvem e ferem o alvo. Isso pode prejudicar o Ataque Especial do alvo." + 'mistBall': { + name: 'Mist Ball', + effect: 'Um amalgamado de penas nevoentas envolvem e ferem o alvo. Isso pode prejudicar o Ataque Especial do alvo.' }, - "featherDance": { - name: "Feather Dance", - effect: "O usuário cobre o corpo do alvo com uma grande massa de penas que prejudicam duramente o Ataque do alvo." + 'featherDance': { + name: 'Feather Dance', + effect: 'O usuário cobre o corpo do alvo com uma grande massa de penas que prejudicam duramente o Ataque do alvo.' }, - "teeterDance": { - name: "Teeter Dance", - effect: "O usuário performa uma dança desajeitada que confunde os Pokémon ao seu redor." + 'teeterDance': { + name: 'Teeter Dance', + effect: 'O usuário performa uma dança desajeitada que confunde os Pokémon ao seu redor.' }, - "blazeKick": { - name: "Blaze Kick", - effect: "O usuário lança um chute que acerta golpes críticos com mais facilidade. Isso também pode deixar o alvo queimado." + 'blazeKick': { + name: 'Blaze Kick', + effect: 'O usuário lança um chute que acerta golpes críticos com mais facilidade. Isso também pode deixar o alvo queimado.' }, - "mudSport": { - name: "Mud Sport", - effect: "O usuário chuta lama ao redor do campo de batalha. Isso enfraquece os golpes do tipo Elétrico por cinco turnos." + 'mudSport': { + name: 'Mud Sport', + effect: 'O usuário chuta lama ao redor do campo de batalha. Isso enfraquece os golpes do tipo Elétrico por cinco turnos.' }, - "iceBall": { - name: "Ice Ball", - effect: "O usuário ataca continuamente por cinco turnos. O ataque se torna mais forte cada vez que acerta." + 'iceBall': { + name: 'Ice Ball', + effect: 'O usuário ataca continuamente por cinco turnos. O ataque se torna mais forte cada vez que acerta.' }, - "needleArm": { - name: "Needle Arm", - effect: "O usuário ataca selvagemente balançando seus braços pontiagudos. Isso pode fazer o alvo hesitar." + 'needleArm': { + name: 'Needle Arm', + effect: 'O usuário ataca selvagemente balançando seus braços pontiagudos. Isso pode fazer o alvo hesitar.' }, - "slackOff": { - name: "Slack Off", - effect: "O usuário relaxa, restaurando os próprios PS pela metade dos seus PS máximos." + 'slackOff': { + name: 'Slack Off', + effect: 'O usuário relaxa, restaurando os próprios PS pela metade dos seus PS máximos.' }, - "hyperVoice": { - name: "Hyper Voice", - effect: "O usuário libera um horrível grito estridente com o poder de infligir dano." + 'hyperVoice': { + name: 'Hyper Voice', + effect: 'O usuário libera um horrível grito estridente com o poder de infligir dano.' }, - "poisonFang": { - name: "Poison Fang", - effect: "O usuário morde o alvo com suas presas tóxicas. Isso pode envenenar seriamente o alvo." + 'poisonFang': { + name: 'Poison Fang', + effect: 'O usuário morde o alvo com suas presas tóxicas. Isso pode envenenar seriamente o alvo.' }, - "crushClaw": { - name: "Crush Claw", - effect: "O usuário retalha o alvo com garras duras e afiadas. Isso pode prejudicar a Defesa do alvo." + 'crushClaw': { + name: 'Crush Claw', + effect: 'O usuário retalha o alvo com garras duras e afiadas. Isso pode prejudicar a Defesa do alvo.' }, - "blastBurn": { - name: "Blast Burn", - effect: "O alvo é arrasado por uma ardente explosão. O usuário não pode se mover no próximo turno." + 'blastBurn': { + name: 'Blast Burn', + effect: 'O alvo é arrasado por uma ardente explosão. O usuário não pode se mover no próximo turno.' }, - "hydroCannon": { - name: "Hydro Cannon", - effect: "O alvo é acertado por uma explosão aquática. O usuário não pode se mover no próximo turno." + 'hydroCannon': { + name: 'Hydro Cannon', + effect: 'O alvo é acertado por uma explosão aquática. O usuário não pode se mover no próximo turno.' }, - "meteorMash": { - name: "Meteor Mash", - effect: "O alvo é acertado por um soco forte disparado como um meteoro. Isso pode fortalecer o Ataque do usuário." + 'meteorMash': { + name: 'Meteor Mash', + effect: 'O alvo é acertado por um soco forte disparado como um meteoro. Isso pode fortalecer o Ataque do usuário.' }, - "astonish": { - name: "Astonish", - effect: "O usuário ataca o alvo enquanto grita de forma alarmante. Isso pode fazer o alvo hesitar." + 'astonish': { + name: 'Astonish', + effect: 'O usuário ataca o alvo enquanto grita de forma alarmante. Isso pode fazer o alvo hesitar.' }, - "weatherBall": { - name: "Weather Ball", - effect: "Um ataque que varia de poder e tipo dependendo do clima." + 'weatherBall': { + name: 'Weather Ball', + effect: 'Um ataque que varia de poder e tipo dependendo do clima.' }, - "aromatherapy": { - name: "Aromatherapy", - effect: "O usuário lança uma fragrância calmante que cura todos os estados negativos afetando a equipe do usuário." + 'aromatherapy': { + name: 'Aromatherapy', + effect: 'O usuário lança uma fragrância calmante que cura todos os estados negativos afetando a equipe do usuário.' }, - "fakeTears": { - name: "Fake Tears", - effect: "O usuário finge chorar para perturbar o alvo, duramente prejudicando a sua Defesa Especial." + 'fakeTears': { + name: 'Fake Tears', + effect: 'O usuário finge chorar para perturbar o alvo, duramente prejudicando a sua Defesa Especial.' }, - "airCutter": { - name: "Air Cutter", - effect: "O usuário lança uma rajada de vento afiado para cortar seus oponentes. Golpes críticos ocorrem mais facilmente." + 'airCutter': { + name: 'Air Cutter', + effect: 'O usuário lança uma rajada de vento afiado para cortar seus oponentes. Golpes críticos ocorrem mais facilmente.' }, - "overheat": { - name: "Overheat", - effect: "O usuário ataca o alvo com seu poder máximo; contudo, o efeito colateral diminui o Ataque Especial do usuário." + 'overheat': { + name: 'Overheat', + effect: 'O usuário ataca o alvo com seu poder máximo; contudo, o efeito colateral diminui o Ataque Especial do usuário.' }, - "odorSleuth": { - name: "Odor Sleuth", - effect: "Permite que um alvo do tipo Fantasma seja atingido por ataques do tipo Normal e Lutador. Isso também permite que um alvo evasivo seja acertado." + 'odorSleuth': { + name: 'Odor Sleuth', + effect: 'Permite que um alvo do tipo Fantasma seja atingido por ataques do tipo Normal e Lutador. Isso também permite que um alvo evasivo seja acertado.' }, - "rockTomb": { - name: "Rock Tomb", - effect: "Rochas são arremessadas no alvo. Isso também diminui a Velocidade do alvo, impedindo que se movimente." + 'rockTomb': { + name: 'Rock Tomb', + effect: 'Rochas são arremessadas no alvo. Isso também diminui a Velocidade do alvo, impedindo que se movimente.' }, - "silverWind": { - name: "Silver Wind", - effect: "O alvo é atacado com escamas pulverulentas sopradas pelo vento. Isso pode aumentar todos os atributos do usuário." + 'silverWind': { + name: 'Silver Wind', + effect: 'O alvo é atacado com escamas pulverulentas sopradas pelo vento. Isso pode aumentar todos os atributos do usuário.' }, - "metalSound": { - name: "Metal Sound", - effect: "Um som horrível que lembra metal sendo raspado, isso prejudica duramente a Defesa Especial do alvo." + 'metalSound': { + name: 'Metal Sound', + effect: 'Um som horrível que lembra metal sendo raspado, isso prejudica duramente a Defesa Especial do alvo.' }, - "grassWhistle": { - name: "Grass Whistle", - effect: "O usuário toca uma agradável melodia que acalma o alvo, fazendo-o entrar em sono profundo." + 'grassWhistle': { + name: 'Grass Whistle', + effect: 'O usuário toca uma agradável melodia que acalma o alvo, fazendo-o entrar em sono profundo.' }, - "tickle": { - name: "Tickle", - effect: "O usuário faz cócegas no alvo, o fazendo rir, reduzindo seus atributos de Ataque e Defesa." + 'tickle': { + name: 'Tickle', + effect: 'O usuário faz cócegas no alvo, o fazendo rir, reduzindo seus atributos de Ataque e Defesa.' }, - "cosmicPower": { - name: "Cosmic Power", - effect: "O usuário absorve energia mística do espaço para aumentar sua Defesa e Defesa Especial." + 'cosmicPower': { + name: 'Cosmic Power', + effect: 'O usuário absorve energia mística do espaço para aumentar sua Defesa e Defesa Especial.' }, - "waterSpout": { - name: "Water Spout", - effect: "O usuário jorra água para ferir os Pokémon oponentes. Quanto menos PS o usuário tiver, menor será o poder do movimento." + 'waterSpout': { + name: 'Water Spout', + effect: 'O usuário jorra água para ferir os Pokémon oponentes. Quanto menos PS o usuário tiver, menor será o poder do movimento.' }, - "signalBeam": { - name: "Signal Beam", - effect: "O usuário ataca com um raio de luz sinistro. Isso também pode confundir o alvo." + 'signalBeam': { + name: 'Signal Beam', + effect: 'O usuário ataca com um raio de luz sinistro. Isso também pode confundir o alvo.' }, - "shadowPunch": { - name: "Shadow Punch", - effect: "O usuário dispara um soco dentre as sombras. Esse ataque nunca erra." + 'shadowPunch': { + name: 'Shadow Punch', + effect: 'O usuário dispara um soco dentre as sombras. Esse ataque nunca erra.' }, - "extrasensory": { - name: "Extrasensory", - effect: "O usuário ataca com um poder estranho e incompreensível. Isso também pode fazer o alvo hesitar." + 'extrasensory': { + name: 'Extrasensory', + effect: 'O usuário ataca com um poder estranho e incompreensível. Isso também pode fazer o alvo hesitar.' }, - "skyUppercut": { - name: "Sky Uppercut", - effect: "O usuário ataca o alvo com um gancho de direita poderoso direcionado ao céu." + 'skyUppercut': { + name: 'Sky Uppercut', + effect: 'O usuário ataca o alvo com um gancho de direita poderoso direcionado ao céu.' }, - "sandTomb": { - name: "Sand Tomb", - effect: "O usuário prende o alvo dentro de uma violenta tempestade de areia por quatro ou cinco turnos." + 'sandTomb': { + name: 'Sand Tomb', + effect: 'O usuário prende o alvo dentro de uma violenta tempestade de areia por quatro ou cinco turnos.' }, - "sheerCold": { - name: "Sheer Cold", - effect: "O alvo desmaia instantaneamente. É mais difícil de acertar se o usuário não for um tipo Gelo." + 'sheerCold': { + name: 'Sheer Cold', + effect: 'O alvo desmaia instantaneamente. É mais difícil de acertar se o usuário não for um tipo Gelo.' }, - "muddyWater": { - name: "Muddy Water", - effect: "O usuário ataca atirando água barrenta nos Pokémon adversários. Isso também pode diminuir a Precisão deles." + 'muddyWater': { + name: 'Muddy Water', + effect: 'O usuário ataca atirando água barrenta nos Pokémon adversários. Isso também pode diminuir a Precisão deles.' }, - "bulletSeed": { - name: "Bullet Seed", - effect: "O usuário atira sementes com grande força no alvo de duas a cinco vezes seguidas." + 'bulletSeed': { + name: 'Bullet Seed', + effect: 'O usuário atira sementes com grande força no alvo de duas a cinco vezes seguidas.' }, - "aerialAce": { - name: "Aerial Ace", - effect: "O usuário confunde o alvo com sua velocidade e então ataca. Esse ataque nunca erra." + 'aerialAce': { + name: 'Aerial Ace', + effect: 'O usuário confunde o alvo com sua velocidade e então ataca. Esse ataque nunca erra.' }, - "icicleSpear": { - name: "Icicle Spear", - effect: "O usuário arremessa lanças afiadas de gelo no alvo de duas a cinco vezes seguidas." + 'icicleSpear': { + name: 'Icicle Spear', + effect: 'O usuário arremessa lanças afiadas de gelo no alvo de duas a cinco vezes seguidas.' }, - "ironDefense": { - name: "Iron Defense", - effect: "O usuário endurece a superfície de seu corpo como aço, bruscamente fortalecendo sua Defesa." + 'ironDefense': { + name: 'Iron Defense', + effect: 'O usuário endurece a superfície de seu corpo como aço, bruscamente fortalecendo sua Defesa.' }, - "block": { - name: "Block", - effect: "O usuário bloqueia o caminho do alvo com seus braços amplamente abertos para prevenir escapatória." + 'block': { + name: 'Block', + effect: 'O usuário bloqueia o caminho do alvo com seus braços amplamente abertos para prevenir escapatória.' }, - "howl": { - name: "Howl", - effect: "O usuário uiva alto para fortalecer seu espirito, o que aumenta seu Ataque." + 'howl': { + name: 'Howl', + effect: 'O usuário uiva alto para fortalecer seu espirito, o que aumenta seu Ataque.' }, - "dragonClaw": { - name: "Dragon Claw", - effect: "O usuário corta o alvo com grandes garras afiadas." + 'dragonClaw': { + name: 'Dragon Claw', + effect: 'O usuário corta o alvo com grandes garras afiadas.' }, - "frenzyPlant": { - name: "Frenzy Plant", - effect: "O usuário esmaga o alvo com uma enorme árvore. O usuário não pode se mover no próximo turno." + 'frenzyPlant': { + name: 'Frenzy Plant', + effect: 'O usuário esmaga o alvo com uma enorme árvore. O usuário não pode se mover no próximo turno.' }, - "bulkUp": { - name: "Bulk Up", - effect: "O usuário flexiona os seus músculos para fortalecer seu corpo, aumentando os seus atributos de Ataque e Defesa." + 'bulkUp': { + name: 'Bulk Up', + effect: 'O usuário flexiona os seus músculos para fortalecer seu corpo, aumentando os seus atributos de Ataque e Defesa.' }, - "bounce": { - name: "Bounce", - effect: "O usuário pula alto e então cai em cima do alvo no segundo turno. Isso também pode deixar o alvo com paralisia." + 'bounce': { + name: 'Bounce', + effect: 'O usuário pula alto e então cai em cima do alvo no segundo turno. Isso também pode deixar o alvo com paralisia.' }, - "mudShot": { - name: "Mud Shot", - effect: "O usuário ataca arremessando uma bola de lama ao alvo. Isso também diminui a Velocidade do alvo." + 'mudShot': { + name: 'Mud Shot', + effect: 'O usuário ataca arremessando uma bola de lama ao alvo. Isso também diminui a Velocidade do alvo.' }, - "poisonTail": { - name: "Poison Tail", - effect: "O usuário acerta o alvo com sua cauda. Isso também pode envenenar o alvo. Golpes críticos ocorrem mais facilmente." + 'poisonTail': { + name: 'Poison Tail', + effect: 'O usuário acerta o alvo com sua cauda. Isso também pode envenenar o alvo. Golpes críticos ocorrem mais facilmente.' }, - "covet": { - name: "Covet", - effect: "O usuário, despretensiosamente, se aproxima do alvo e então rouba o item segurado pelo alvo." + 'covet': { + name: 'Covet', + effect: 'O usuário, despretensiosamente, se aproxima do alvo e então rouba o item segurado pelo alvo.' }, - "voltTackle": { - name: "Volt Tackle", - effect: "O usuário eletrifica a si próprio e então ataca. Isso também fere muito o usuário. Pode deixar o alvo com paralisia." + 'voltTackle': { + name: 'Volt Tackle', + effect: 'O usuário eletrifica a si próprio e então ataca. Isso também fere muito o usuário. Pode deixar o alvo com paralisia.' }, - "magicalLeaf": { - name: "Magical Leaf", - effect: "O usuário espalha folhas peculiares que perseguem o alvo. Esse ataque nunca erra." + 'magicalLeaf': { + name: 'Magical Leaf', + effect: 'O usuário espalha folhas peculiares que perseguem o alvo. Esse ataque nunca erra.' }, - "waterSport": { - name: "Water Sport", - effect: "O usuário encharca o campo de batalha. Isso enfraquece os movimentos do tipo Fogo por cinco turnos." + 'waterSport': { + name: 'Water Sport', + effect: 'O usuário encharca o campo de batalha. Isso enfraquece os movimentos do tipo Fogo por cinco turnos.' }, - "calmMind": { - name: "Calm Mind", - effect: "O usuário silenciosamente focaliza sua mente e acalma o seu espírito para aumentar ambos os atributos especiais." + 'calmMind': { + name: 'Calm Mind', + effect: 'O usuário silenciosamente focaliza sua mente e acalma o seu espírito para aumentar ambos os atributos especiais.' }, - "leafBlade": { - name: "Leaf Blade", - effect: "O usuário empunha uma folha afiada como uma espada e ataca cortando o alvo. Golpes críticos acertam mais facilmente." + 'leafBlade': { + name: 'Leaf Blade', + effect: 'O usuário empunha uma folha afiada como uma espada e ataca cortando o alvo. Golpes críticos acertam mais facilmente.' }, - "dragonDance": { - name: "Dragon Dance", - effect: "O usuário, energicamente, performa uma dança mística e poderosa para aumentar seu Ataque e Velocidade." + 'dragonDance': { + name: 'Dragon Dance', + effect: 'O usuário, energicamente, performa uma dança mística e poderosa para aumentar seu Ataque e Velocidade.' }, - "rockBlast": { - name: "Rock Blast", - effect: "O usuário arremessa rochas duras no alvo. Duas a cinco rochas são lançadas em sequência." + 'rockBlast': { + name: 'Rock Blast', + effect: 'O usuário arremessa rochas duras no alvo. Duas a cinco rochas são lançadas em sequência.' }, - "shockWave": { - name: "Shock Wave", - effect: "O usuário atinge o alvo com um repentino ataque de eletricidade. Esse ataque nunca erra." + 'shockWave': { + name: 'Shock Wave', + effect: 'O usuário atinge o alvo com um repentino ataque de eletricidade. Esse ataque nunca erra.' }, - "waterPulse": { - name: "Water Pulse", - effect: "O usuário ataca o alvo com uma pulsante explosão de água. Talvez isso confunda o alvo." + 'waterPulse': { + name: 'Water Pulse', + effect: 'O usuário ataca o alvo com uma pulsante explosão de água. Talvez isso confunda o alvo.' }, - "doomDesire": { - name: "Doom Desire", - effect: "Dois turnos após esse movimento ter sido usado, o usuário explode o alvo com um feixe de luz concentrado." + 'doomDesire': { + name: 'Doom Desire', + effect: 'Dois turnos após esse movimento ter sido usado, o usuário explode o alvo com um feixe de luz concentrado.' }, - "psychoBoost": { - name: "Psycho Boost", - effect: "O usuário ataca o alvo com poder máximo. O efeito colateral do ataque prejudica duramente o Ataque Especial do usuário." + 'psychoBoost': { + name: 'Psycho Boost', + effect: 'O usuário ataca o alvo com poder máximo. O efeito colateral do ataque prejudica duramente o Ataque Especial do usuário.' }, - "roost": { - name: "Roost", - effect: "O usuário pousa e descansa seu corpo. Isso restaura os PS do usuário pela metade do seu máximo de PS." + 'roost': { + name: 'Roost', + effect: 'O usuário pousa e descansa seu corpo. Isso restaura os PS do usuário pela metade do seu máximo de PS.' }, - "gravity": { - name: "Gravity", - effect: "Permite que Pokémon do tipo Voador ou Pokémon com a Habilidade Levitação possam ser atingidos por golpes do tipo Terra. Golpes que envolvam voar ficam inutilizados." + 'gravity': { + name: 'Gravity', + effect: 'Permite que Pokémon do tipo Voador ou Pokémon com a Habilidade Levitação possam ser atingidos por golpes do tipo Terra. Golpes que envolvam voar ficam inutilizados.' }, - "miracleEye": { - name: "Miracle Eye", - effect: "Permite que um alvo tipo Sombrio seja atingido por ataques do tipo Psíquico. Isso também permite que um alvo evasivo possa ser atingido." + 'miracleEye': { + name: 'Miracle Eye', + effect: 'Permite que um alvo tipo Sombrio seja atingido por ataques do tipo Psíquico. Isso também permite que um alvo evasivo possa ser atingido.' }, - "wake-UpSlap": { - name: "Wake-Up Slap", - effect: "Esse ataque causa muito dano em um alvo que estiver dormindo; entretanto, isso também acorda o alvo." + 'wake-UpSlap': { + name: 'Wake-Up Slap', + effect: 'Esse ataque causa muito dano em um alvo que estiver dormindo; entretanto, isso também acorda o alvo.' }, - "hammerArm": { - name: "Hammer Arm", - effect: "O usuário balança seus braços e atinge com seus fortes e pesados punhos. Isso diminui a Velocidade do usuário." + 'hammerArm': { + name: 'Hammer Arm', + effect: 'O usuário balança seus braços e atinge com seus fortes e pesados punhos. Isso diminui a Velocidade do usuário.' }, - "gyroBall": { - name: "Gyro Ball", - effect: "O alvo é acertado com um giro em alta velocidade. Quanto mais lento for o usuário comparado ao alvo, maior será o poder do movimento." + 'gyroBall': { + name: 'Gyro Ball', + effect: 'O alvo é acertado com um giro em alta velocidade. Quanto mais lento for o usuário comparado ao alvo, maior será o poder do movimento.' }, - "healingWish": { - name: "Healing Wish", - effect: "O usuário desmaia. Em troca, o Pokémon que tomará seu lugar terá seus PS restaurados e condições negativas curadas." + 'healingWish': { + name: 'Healing Wish', + effect: 'O usuário desmaia. Em troca, o Pokémon que tomará seu lugar terá seus PS restaurados e condições negativas curadas.' }, - "brine": { - name: "Brine", - effect: "Se os PS do alvo estiverem pela metade ou menos, esse ataque terá o dobro do poder." + 'brine': { + name: 'Brine', + effect: 'Se os PS do alvo estiverem pela metade ou menos, esse ataque terá o dobro do poder.' }, - "naturalGift": { - name: "Natural Gift", - effect: "O usuário canaliza o poder para atacar usando a Fruta que está segurando. A Fruta determina o tipo e o poder do movimento." + 'naturalGift': { + name: 'Natural Gift', + effect: 'O usuário canaliza o poder para atacar usando a Fruta que está segurando. A Fruta determina o tipo e o poder do movimento.' }, - "feint": { - name: "Feint", - effect: "Um ataque que acerta um alvo usando Proteção ou Detectar. Isso também extingue os efeitos desses movimentos." + 'feint': { + name: 'Feint', + effect: 'Um ataque que acerta um alvo usando Proteção ou Detectar. Isso também extingue os efeitos desses movimentos.' }, - "pluck": { - name: "Pluck", - effect: "O usuário bica o alvo. Caso o alvo esteja segurando uma Fruta, o usuário a come e ganha seu efeito." + 'pluck': { + name: 'Pluck', + effect: 'O usuário bica o alvo. Caso o alvo esteja segurando uma Fruta, o usuário a come e ganha seu efeito.' }, - "tailwind": { - name: "Tailwind", - effect: "O usuário forma um turbulento redemoinho que aumenta a Velocidade do usuário e de seus seus aliados por quatro turnos." + 'tailwind': { + name: 'Tailwind', + effect: 'O usuário forma um turbulento redemoinho que aumenta a Velocidade do usuário e de seus seus aliados por quatro turnos.' }, - "acupressure": { - name: "Acupressure", - effect: "O usuário aplica pressão em pontos de estresse, bruscamente fortalecendo um de seus atributos ou de seus aliados." + 'acupressure': { + name: 'Acupressure', + effect: 'O usuário aplica pressão em pontos de estresse, bruscamente fortalecendo um de seus atributos ou de seus aliados.' }, - "metalBurst": { - name: "Metal Burst", - effect: "O usuário revida com muito mais força contra o alvo que lhe infligiu dano por ultimo." + 'metalBurst': { + name: 'Metal Burst', + effect: 'O usuário revida com muito mais força contra o alvo que lhe infligiu dano por ultimo.' }, - "u-Turn": { - name: "U-turn", - effect: "Depois de fazer o seu ataque, o usuário corre de volta para trocar de lugar com um Pokémon da própria equipe." + 'u-Turn': { + name: 'U-turn', + effect: 'Depois de fazer o seu ataque, o usuário corre de volta para trocar de lugar com um Pokémon da própria equipe.' }, - "closeCombat": { - name: "Close Combat", - effect: "O usuário luta com o alvo de perto sem se defender. Isso diminui a Defesa e Defesa Especial do usuário." + 'closeCombat': { + name: 'Close Combat', + effect: 'O usuário luta com o alvo de perto sem se defender. Isso diminui a Defesa e Defesa Especial do usuário.' }, - "payback": { - name: "Payback", - effect: "O usuário acumula poder, então ataca. Se o usuário se mover depois do alvo, o poder deste ataque será dobrado." + 'payback': { + name: 'Payback', + effect: 'O usuário acumula poder, então ataca. Se o usuário se mover depois do alvo, o poder deste ataque será dobrado.' }, - "assurance": { - name: "Assurance", - effect: "Caso o alvo já tenha recebido dano no mesmo turno, o poder desse ataque é dobrado." + 'assurance': { + name: 'Assurance', + effect: 'Caso o alvo já tenha recebido dano no mesmo turno, o poder desse ataque é dobrado.' }, - "embargo": { - name: "Embargo", - effect: "Este movimento previne que o alvo use o seu item por cinco turnos. Seu Treinador também estará restrito de usar itens nele." + 'embargo': { + name: 'Embargo', + effect: 'Este movimento previne que o alvo use o seu item por cinco turnos. Seu Treinador também estará restrito de usar itens nele.' }, - "fling": { - name: "Fling", - effect: "O usuário arremessa seu item no alvo para atacar. O poder e o efeito deste movimento dependem do item utilizado." + 'fling': { + name: 'Fling', + effect: 'O usuário arremessa seu item no alvo para atacar. O poder e o efeito deste movimento dependem do item utilizado.' }, - "psychoShift": { - name: "Psycho Shift", - effect: "Usando seu poder psíquico da sugestão, o usuário transfere suas condições de estado para o alvo." + 'psychoShift': { + name: 'Psycho Shift', + effect: 'Usando seu poder psíquico da sugestão, o usuário transfere suas condições de estado para o alvo.' }, - "trumpCard": { - name: "Trump Card", - effect: "Quanto menos PP este movimento tiver, maior será sua força." + 'trumpCard': { + name: 'Trump Card', + effect: 'Quanto menos PP este movimento tiver, maior será sua força.' }, - "healBlock": { - name: "Heal Block", - effect: "Por cinco turnos, o usuário previne que a equipe adversária use quaisquer movimentos, Habilidades, ou itens segurados para recuperar PS." + 'healBlock': { + name: 'Heal Block', + effect: 'Por cinco turnos, o usuário previne que a equipe adversária use quaisquer movimentos, Habilidades, ou itens segurados para recuperar PS.' }, - "wringOut": { - name: "Wring Out", - effect: "O usuário torce o alvo com força bruta. Quando mais PS o alvo possuir, maior será o poder do movimento." + 'wringOut': { + name: 'Wring Out', + effect: 'O usuário torce o alvo com força bruta. Quando mais PS o alvo possuir, maior será o poder do movimento.' }, - "powerTrick": { - name: "Power Trick", - effect: "O usuário usufrui de seu poder psíquico para trocar os atributos de seu Ataque com sua Defesa." + 'powerTrick': { + name: 'Power Trick', + effect: 'O usuário usufrui de seu poder psíquico para trocar os atributos de seu Ataque com sua Defesa.' }, - "gastroAcid": { - name: "Gastro Acid", - effect: "O usuário arremessa os ácidos de seu estômago no alvo. O fluido elimina o efeito da habilidade do alvo." + 'gastroAcid': { + name: 'Gastro Acid', + effect: 'O usuário arremessa os ácidos de seu estômago no alvo. O fluido elimina o efeito da habilidade do alvo.' }, - "luckyChant": { - name: "Lucky Chant", - effect: "O usuário recita um encantamento em direção ao céu, prevenindo que os Pokémon oponentes acertem golpes críticos." + 'luckyChant': { + name: 'Lucky Chant', + effect: 'O usuário recita um encantamento em direção ao céu, prevenindo que os Pokémon oponentes acertem golpes críticos.' }, - "meFirst": { - name: "Me First", - effect: "O usuário corta a ação do alvo para roubar seu movimento e usá-lo com maior poder. Esse movimento falha caso não seja usado primeiro." + 'meFirst': { + name: 'Me First', + effect: 'O usuário corta a ação do alvo para roubar seu movimento e usá-lo com maior poder. Esse movimento falha caso não seja usado primeiro.' }, - "copycat": { - name: "Copycat", - effect: "O usuário imita o movimento imediatamente usado antes dele. O movimento falha caso nenhum outro movimento tenha sido usado." + 'copycat': { + name: 'Copycat', + effect: 'O usuário imita o movimento imediatamente usado antes dele. O movimento falha caso nenhum outro movimento tenha sido usado.' }, - "powerSwap": { - name: "Power Swap", - effect: "O usuário usufrui de seu poder psíquico para trocar mudanças de atributos feitas ao seu Ataque e Ataque Especial com os do alvo." + 'powerSwap': { + name: 'Power Swap', + effect: 'O usuário usufrui de seu poder psíquico para trocar mudanças de atributos feitas ao seu Ataque e Ataque Especial com os do alvo.' }, - "guardSwap": { - name: "Guard Swap", - effect: "O usuário usufrui de seu poder psíquico para trocar mudanças de atributos feitas à sua Defesa e Defesa Especial com as do alvo." + 'guardSwap': { + name: 'Guard Swap', + effect: 'O usuário usufrui de seu poder psíquico para trocar mudanças de atributos feitas à sua Defesa e Defesa Especial com as do alvo.' }, - "punishment": { - name: "Punishment", - effect: "Quanto mais os atributos do alvo estiverem fortalecidos, maior será o poder desse movimento." + 'punishment': { + name: 'Punishment', + effect: 'Quanto mais os atributos do alvo estiverem fortalecidos, maior será o poder desse movimento.' }, - "lastResort": { - name: "Last Resort", - effect: "Este movimento somente pode ser usado depois de o usuário ter usado todos os outros movimentos que ele conhece em batalha." + 'lastResort': { + name: 'Last Resort', + effect: 'Este movimento somente pode ser usado depois de o usuário ter usado todos os outros movimentos que ele conhece em batalha.' }, - "worrySeed": { - name: "Worry Seed", - effect: "Uma semente que causa preocupação é plantada no alvo. Isso previne o sono, fazendo a Habilidade do alvo se tornar Insônia." + 'worrySeed': { + name: 'Worry Seed', + effect: 'Uma semente que causa preocupação é plantada no alvo. Isso previne o sono, fazendo a Habilidade do alvo se tornar Insônia.' }, - "suckerPunch": { - name: "Sucker Punch", - effect: "Esse movimento permite que o usuário ataque primeiro. Esse ataque falha caso o alvo não esteja preparando um ataque." + 'suckerPunch': { + name: 'Sucker Punch', + effect: 'Esse movimento permite que o usuário ataque primeiro. Esse ataque falha caso o alvo não esteja preparando um ataque.' }, - "toxicSpikes": { - name: "Toxic Spikes", - effect: "O usuário planta uma armadilha de espinhos venenosos nos pés da equipe adversária. Os espinhos envenenam os Pokémon que entram em batalha." + 'toxicSpikes': { + name: 'Toxic Spikes', + effect: 'O usuário planta uma armadilha de espinhos venenosos nos pés da equipe adversária. Os espinhos envenenam os Pokémon que entram em batalha.' }, - "heartSwap": { - name: "Heart Swap", - effect: "O usuário usufrui de seu poder psíquico para trocar mudanças de atributos com o oponente." + 'heartSwap': { + name: 'Heart Swap', + effect: 'O usuário usufrui de seu poder psíquico para trocar mudanças de atributos com o oponente.' }, - "aquaRing": { - name: "Aqua Ring", - effect: "O usuário envolve-se em um véu feito de água. Ele recupera um pouco de PS a cada turno." + 'aquaRing': { + name: 'Aqua Ring', + effect: 'O usuário envolve-se em um véu feito de água. Ele recupera um pouco de PS a cada turno.' }, - "magnetRise": { - name: "Magnet Rise", - effect: "O usuário levita usando magnetismo gerado por eletricidade por cinco turnos." + 'magnetRise': { + name: 'Magnet Rise', + effect: 'O usuário levita usando magnetismo gerado por eletricidade por cinco turnos.' }, - "flareBlitz": { - name: "Flare Blitz", - effect: "O usuário cobre o próprio corpo com chamas e avança no alvo. Isso também fere muito o usuário e pode deixar o alvo com uma queimadura." + 'flareBlitz': { + name: 'Flare Blitz', + effect: 'O usuário cobre o próprio corpo com chamas e avança no alvo. Isso também fere muito o usuário e pode deixar o alvo com uma queimadura.' }, - "forcePalm": { - name: "Force Palm", - effect: "O alvo é atacado com uma onda de choque. Isso também pode deixar o alvo com paralisia." + 'forcePalm': { + name: 'Force Palm', + effect: 'O alvo é atacado com uma onda de choque. Isso também pode deixar o alvo com paralisia.' }, - "auraSphere": { - name: "Aura Sphere", - effect: "O usuário libera uma explosão de poder da aura de seu corpo no alvo. Esse ataque nunca erra." + 'auraSphere': { + name: 'Aura Sphere', + effect: 'O usuário libera uma explosão de poder da aura de seu corpo no alvo. Esse ataque nunca erra.' }, - "rockPolish": { - name: "Rock Polish", - effect: "O usuário pule seu corpo para reduzir entraves. Isso pode aumentar bruscamente a Velocidade." + 'rockPolish': { + name: 'Rock Polish', + effect: 'O usuário pule seu corpo para reduzir entraves. Isso pode aumentar bruscamente a Velocidade.' }, - "poisonJab": { - name: "Poison Jab", - effect: "O alvo é perfurado com um tentáculo ou braço banhado com veneno. Isso também pode envenenar o alvo." + 'poisonJab': { + name: 'Poison Jab', + effect: 'O alvo é perfurado com um tentáculo ou braço banhado com veneno. Isso também pode envenenar o alvo.' }, - "darkPulse": { - name: "Dark Pulse", - effect: "O usuário descarrega uma horrível aura imbuída com pensamentos obscuros. Isso também pode fazer o alvo hesitar." + 'darkPulse': { + name: 'Dark Pulse', + effect: 'O usuário descarrega uma horrível aura imbuída com pensamentos obscuros. Isso também pode fazer o alvo hesitar.' }, - "nightSlash": { - name: "Night Slash", - effect: "O usuário retalha o alvo no instante que surge uma oportunidade. Golpes críticos ocorrem mais facilmente." + 'nightSlash': { + name: 'Night Slash', + effect: 'O usuário retalha o alvo no instante que surge uma oportunidade. Golpes críticos ocorrem mais facilmente.' }, - "aquaTail": { - name: "Aqua Tail", - effect: "O usuário ataca balançando sua cauda como se fosse uma violenta e furiosa tempestade." + 'aquaTail': { + name: 'Aqua Tail', + effect: 'O usuário ataca balançando sua cauda como se fosse uma violenta e furiosa tempestade.' }, - "seedBomb": { - name: "Seed Bomb", - effect: "O usuário atira uma barragem de sementes de casca dura acertando o alvo por cima." + 'seedBomb': { + name: 'Seed Bomb', + effect: 'O usuário atira uma barragem de sementes de casca dura acertando o alvo por cima.' }, - "airSlash": { - name: "Air Slash", - effect: "O usuário ataca com uma lâmina de ar que corta até mesmo o céu. Isso pode fazer o alvo hesitar." + 'airSlash': { + name: 'Air Slash', + effect: 'O usuário ataca com uma lâmina de ar que corta até mesmo o céu. Isso pode fazer o alvo hesitar.' }, - "x-Scissor": { - name: "X-Scissor", - effect: "O usuário cutila o alvo cruzando suas foices ou garras como se elas fossem um par de tesouras." + 'x-Scissor': { + name: 'X-Scissor', + effect: 'O usuário cutila o alvo cruzando suas foices ou garras como se elas fossem um par de tesouras.' }, - "bugBuzz": { - name: "Bug Buzz", - effect: "O usuário gera uma dolorosa onda de som. Isso também pode diminuir o atributo de Defesa Especial do alvo." + 'bugBuzz': { + name: 'Bug Buzz', + effect: 'O usuário gera uma dolorosa onda de som. Isso também pode diminuir o atributo de Defesa Especial do alvo.' }, - "dragonPulse": { - name: "Dragon Pulse", - effect: "O alvo é atacado com uma onda de choque gerada pela boca aberta do usuário." + 'dragonPulse': { + name: 'Dragon Pulse', + effect: 'O alvo é atacado com uma onda de choque gerada pela boca aberta do usuário.' }, - "dragonRush": { - name: "Dragon Rush", - effect: "O usuário ataca o alvo enquanto demonstra uma ameaça esmagadora. Isso também pode fazer o alvo hesitar." + 'dragonRush': { + name: 'Dragon Rush', + effect: 'O usuário ataca o alvo enquanto demonstra uma ameaça esmagadora. Isso também pode fazer o alvo hesitar.' }, - "powerGem": { - name: "Power Gem", - effect: "O usuário ataca com um raio de luz que brilha como se fosse feito de pedras preciosas." + 'powerGem': { + name: 'Power Gem', + effect: 'O usuário ataca com um raio de luz que brilha como se fosse feito de pedras preciosas.' }, - "drainPunch": { - name: "Drain Punch", - effect: "Um soco que drena energia. Os PS do usuário são curados pela metade do dano infligido ao alvo." + 'drainPunch': { + name: 'Drain Punch', + effect: 'Um soco que drena energia. Os PS do usuário são curados pela metade do dano infligido ao alvo.' }, - "vacuumWave": { - name: "Vacuum Wave", - effect: "O usuário rodopia seus punhos para lançar uma onda de vácuo puro no alvo. Esse movimento tem prioridade." + 'vacuumWave': { + name: 'Vacuum Wave', + effect: 'O usuário rodopia seus punhos para lançar uma onda de vácuo puro no alvo. Esse movimento tem prioridade.' }, - "focusBlast": { - name: "Focus Blast", - effect: "O usuário eleva seu foco mental e libera o seu poder. Isso também pode diminuir a Defesa Especial do alvo." + 'focusBlast': { + name: 'Focus Blast', + effect: 'O usuário eleva seu foco mental e libera o seu poder. Isso também pode diminuir a Defesa Especial do alvo.' }, - "energyBall": { - name: "Energy Ball", - effect: "O usuário extrai o poder da natureza e dispara no alvo. Isso também pode diminuir a Defesa Especial do alvo." + 'energyBall': { + name: 'Energy Ball', + effect: 'O usuário extrai o poder da natureza e dispara no alvo. Isso também pode diminuir a Defesa Especial do alvo.' }, - "braveBird": { - name: "Brave Bird", - effect: "O usuário dobra suas asas e avança de uma baixa altitude. Isso também fere muito o usuário." + 'braveBird': { + name: 'Brave Bird', + effect: 'O usuário dobra suas asas e avança de uma baixa altitude. Isso também fere muito o usuário.' }, - "earthPower": { - name: "Earth Power", - effect: "O usuário faz o solo debaixo do alvo emergir com poder. Isso também pode diminuir a Defesa Especial do alvo." + 'earthPower': { + name: 'Earth Power', + effect: 'O usuário faz o solo debaixo do alvo emergir com poder. Isso também pode diminuir a Defesa Especial do alvo.' }, - "switcheroo": { - name: "Switcheroo", - effect: "O usuário troca de itens com o alvo mais rápido do que os olhos podem acompanhar." + 'switcheroo': { + name: 'Switcheroo', + effect: 'O usuário troca de itens com o alvo mais rápido do que os olhos podem acompanhar.' }, - "gigaImpact": { - name: "Giga Impact", - effect: "O usuário investe no alvo usando absolutamente todo o seu poder. O usuário não poderá se mover no próximo turno." + 'gigaImpact': { + name: 'Giga Impact', + effect: 'O usuário investe no alvo usando absolutamente todo o seu poder. O usuário não poderá se mover no próximo turno.' }, - "nastyPlot": { - name: "Nasty Plot", - effect: "O usuário estimula seu cérebro com pensamentos malvados. Isso bruscamente aumenta o Ataque Especial do usuário." + 'nastyPlot': { + name: 'Nasty Plot', + effect: 'O usuário estimula seu cérebro com pensamentos malvados. Isso bruscamente aumenta o Ataque Especial do usuário.' }, - "bulletPunch": { - name: "Bullet Punch", - effect: "O usuário atinge o alvo com socos fortes tão rápidos como tiros. Esse movimento tem prioridade." + 'bulletPunch': { + name: 'Bullet Punch', + effect: 'O usuário atinge o alvo com socos fortes tão rápidos como tiros. Esse movimento tem prioridade.' }, - "avalanche": { - name: "Avalanche", - effect: "Um ataque que inflige o dobro do dano caso o usuário já tenha sido ferido pelo alvo no mesmo turno." + 'avalanche': { + name: 'Avalanche', + effect: 'Um ataque que inflige o dobro do dano caso o usuário já tenha sido ferido pelo alvo no mesmo turno.' }, - "iceShard": { - name: "Ice Shard", - effect: "O usuário congela rapidamente cristais de gelo e os arremessa no alvo. Esse movimento tem prioridade." + 'iceShard': { + name: 'Ice Shard', + effect: 'O usuário congela rapidamente cristais de gelo e os arremessa no alvo. Esse movimento tem prioridade.' }, - "shadowClaw": { - name: "Shadow Claw", - effect: "O usuário corta com uma garra afiada feita de sombras. Golpes críticos ocorrem mais facilmente." + 'shadowClaw': { + name: 'Shadow Claw', + effect: 'O usuário corta com uma garra afiada feita de sombras. Golpes críticos ocorrem mais facilmente.' }, - "thunderFang": { - name: "Thunder Fang", - effect: "O usuário morde com presas eletrificadas. Isso também pode fazer o alvo hesitar ou deixá-lo paralisado." + 'thunderFang': { + name: 'Thunder Fang', + effect: 'O usuário morde com presas eletrificadas. Isso também pode fazer o alvo hesitar ou deixá-lo paralisado.' }, - "iceFang": { - name: "Ice Fang", - effect: "O usuário morde com presas infundidas com gelo. Isso também pode fazer o alvo hesitar ou deixá-lo congelado." + 'iceFang': { + name: 'Ice Fang', + effect: 'O usuário morde com presas infundidas com gelo. Isso também pode fazer o alvo hesitar ou deixá-lo congelado.' }, - "fireFang": { - name: "Fire Fang", - effect: "O usuário morde com presas cobertas de fogo. Isso também pode fazer o alvo hesitar ou deixá-lo queimado." + 'fireFang': { + name: 'Fire Fang', + effect: 'O usuário morde com presas cobertas de fogo. Isso também pode fazer o alvo hesitar ou deixá-lo queimado.' }, - "shadowSneak": { - name: "Shadow Sneak", - effect: "O usuário estende a própria sombra e ataca o alvo por trás. Esse movimento tem prioridade." + 'shadowSneak': { + name: 'Shadow Sneak', + effect: 'O usuário estende a própria sombra e ataca o alvo por trás. Esse movimento tem prioridade.' }, - "mudBomb": { - name: "Mud Bomb", - effect: "O usuário lança uma bola concentrada de lama para atacar. Isso também pode diminuir a Precisão do alvo." + 'mudBomb': { + name: 'Mud Bomb', + effect: 'O usuário lança uma bola concentrada de lama para atacar. Isso também pode diminuir a Precisão do alvo.' }, - "psychoCut": { - name: "Psycho Cut", - effect: "O usuário corta o alvo com lâminas materializadas com poder psíquico. Golpes críticos ocorrem mais facilmente." + 'psychoCut': { + name: 'Psycho Cut', + effect: 'O usuário corta o alvo com lâminas materializadas com poder psíquico. Golpes críticos ocorrem mais facilmente.' }, - "zenHeadbutt": { - name: "Zen Headbutt", - effect: "O usuário foca sua força de vontade em sua cabeça e ataca o alvo. Isso também pode fazer o alvo hesitar." + 'zenHeadbutt': { + name: 'Zen Headbutt', + effect: 'O usuário foca sua força de vontade em sua cabeça e ataca o alvo. Isso também pode fazer o alvo hesitar.' }, - "mirrorShot": { - name: "Mirror Shot", - effect: "O usuário libera um clarão de energia vindo de seu corpo polido no alvo. Isso pode diminuir a Precisão do alvo." + 'mirrorShot': { + name: 'Mirror Shot', + effect: 'O usuário libera um clarão de energia vindo de seu corpo polido no alvo. Isso pode diminuir a Precisão do alvo.' }, - "flashCannon": { - name: "Flash Cannon", - effect: "O usuário reúne toda a sua energia de luz e lança de uma só vez. Isso também pode diminuir a Defesa Especial do alvo." + 'flashCannon': { + name: 'Flash Cannon', + effect: 'O usuário reúne toda a sua energia de luz e lança de uma só vez. Isso também pode diminuir a Defesa Especial do alvo.' }, - "rockClimb": { - name: "Rock Climb", - effect: "O usuário ataca o alvo o esmagando com uma incrível força bruta. Isso pode confundir o alvo." + 'rockClimb': { + name: 'Rock Climb', + effect: 'O usuário ataca o alvo o esmagando com uma incrível força bruta. Isso pode confundir o alvo.' }, - "defog": { - name: "Defog", - effect: "Um vento forte que dispersa as barreiras do alvo como Refletir ou Tela de Luz. Isso também diminui a Evasiva do oponente." + 'defog': { + name: 'Defog', + effect: 'Um vento forte que dispersa as barreiras do alvo como Refletir ou Tela de Luz. Isso também diminui a Evasiva do oponente.' }, - "trickRoom": { - name: "Trick Room", - effect: "O usuário cria uma área bizarra onde Pokémon mais lentos se movem primeiro por cinco turnos." + 'trickRoom': { + name: 'Trick Room', + effect: 'O usuário cria uma área bizarra onde Pokémon mais lentos se movem primeiro por cinco turnos.' }, - "dracoMeteor": { - name: "Draco Meteor", - effect: "Cometas são invocados do céu e caem sobre o alvo. O efeito colateral do ataque duramente prejudica o atributo de Ataque Especial do usuário." + 'dracoMeteor': { + name: 'Draco Meteor', + effect: 'Cometas são invocados do céu e caem sobre o alvo. O efeito colateral do ataque duramente prejudica o atributo de Ataque Especial do usuário.' }, - "discharge": { - name: "Discharge", - effect: "O usuário atinge tudo ao seu redor liberando uma explosão de eletricidade. Isso também pode causar paralisia." + 'discharge': { + name: 'Discharge', + effect: 'O usuário atinge tudo ao seu redor liberando uma explosão de eletricidade. Isso também pode causar paralisia.' }, - "lavaPlume": { - name: "Lava Plume", - effect: "O usuário queima tudo ao seu redor com um inferno de chamas escarlate. Isso também pode causar uma queimadura em alvos atingidos." + 'lavaPlume': { + name: 'Lava Plume', + effect: 'O usuário queima tudo ao seu redor com um inferno de chamas escarlate. Isso também pode causar uma queimadura em alvos atingidos.' }, - "leafStorm": { - name: "Leaf Storm", - effect: "O usuário cria uma tempestade de folhas ao redor do alvo. Isso diminui duramente o Ataque Especial do usuário." + 'leafStorm': { + name: 'Leaf Storm', + effect: 'O usuário cria uma tempestade de folhas ao redor do alvo. Isso diminui duramente o Ataque Especial do usuário.' }, - "powerWhip": { - name: "Power Whip", - effect: "O usuário rodopia suas vinhas ou tentáculos com vigor para chicotear o alvo cruelmente." + 'powerWhip': { + name: 'Power Whip', + effect: 'O usuário rodopia suas vinhas ou tentáculos com vigor para chicotear o alvo cruelmente.' }, - "rockWrecker": { - name: "Rock Wrecker", - effect: "O usuário lança uma grande rocha no alvo. O usuário não pode se mover no próximo turno." + 'rockWrecker': { + name: 'Rock Wrecker', + effect: 'O usuário lança uma grande rocha no alvo. O usuário não pode se mover no próximo turno.' }, - "crossPoison": { - name: "Cross Poison", - effect: "Um ataque cortante com uma lâmina envenenada que pode envenenar o alvo. Golpes críticos ocorrem mais facilmente." + 'crossPoison': { + name: 'Cross Poison', + effect: 'Um ataque cortante com uma lâmina envenenada que pode envenenar o alvo. Golpes críticos ocorrem mais facilmente.' }, - "gunkShot": { - name: "Gunk Shot", - effect: "O usuário atira lixo repugnante no alvo. Isso também pode envenenar o alvo." + 'gunkShot': { + name: 'Gunk Shot', + effect: 'O usuário atira lixo repugnante no alvo. Isso também pode envenenar o alvo.' }, - "ironHead": { - name: "Iron Head", - effect: "O usuário acerta o alvo com sua cabeça dura como aço. Isso também pode fazer o alvo hesitar." + 'ironHead': { + name: 'Iron Head', + effect: 'O usuário acerta o alvo com sua cabeça dura como aço. Isso também pode fazer o alvo hesitar.' }, - "magnetBomb": { - name: "Magnet Bomb", - effect: "O usuário lança bombas de aço que grudam no alvo. Esse ataque nunca erra." + 'magnetBomb': { + name: 'Magnet Bomb', + effect: 'O usuário lança bombas de aço que grudam no alvo. Esse ataque nunca erra.' }, - "stoneEdge": { - name: "Stone Edge", - effect: "O usuário perfura o alvo por baixo com pedras afiadas. Golpes críticos ocorrem mais facilmente." + 'stoneEdge': { + name: 'Stone Edge', + effect: 'O usuário perfura o alvo por baixo com pedras afiadas. Golpes críticos ocorrem mais facilmente.' }, - "captivate": { - name: "Captivate", - effect: "Se algum dos Pokémon oponentes forem do gênero oposto do usuário, ele se encanta, o que diminui duramente o seu Ataque Especial." + 'captivate': { + name: 'Captivate', + effect: 'Se algum dos Pokémon oponentes forem do gênero oposto do usuário, ele se encanta, o que diminui duramente o seu Ataque Especial.' }, - "stealthRock": { - name: "Stealth Rock", - effect: "O usuário planta armadilhas de pedras levitantes ao redor da equipe oponente. A armadilha fere os Pokémon oponentes que entrarem em campo." + 'stealthRock': { + name: 'Stealth Rock', + effect: 'O usuário planta armadilhas de pedras levitantes ao redor da equipe oponente. A armadilha fere os Pokémon oponentes que entrarem em campo.' }, - "grassKnot": { - name: "Grass Knot", - effect: "O usuário planta uma armadilha com grama e o alvo tropeça nela. Quanto mais pesado o alvo for, maior é o poder do movimento." + 'grassKnot': { + name: 'Grass Knot', + effect: 'O usuário planta uma armadilha com grama e o alvo tropeça nela. Quanto mais pesado o alvo for, maior é o poder do movimento.' }, - "chatter": { - name: "Chatter", - effect: "O usuário ataca o alvo com ondas de som vindas de sua tagarelagem ensurdecedora. Isso confunde o alvo." + 'chatter': { + name: 'Chatter', + effect: 'O usuário ataca o alvo com ondas de som vindas de sua tagarelagem ensurdecedora. Isso confunde o alvo.' }, - "judgment": { - name: "Judgment", - effect: "O usuário libera incontáveis tiros de luz no alvo. A tipagem desse movimento varia dependendo do tipo de Placa que o usuário está segurando." + 'judgment': { + name: 'Judgment', + effect: 'O usuário libera incontáveis tiros de luz no alvo. A tipagem desse movimento varia dependendo do tipo de Placa que o usuário está segurando.' }, - "bugBite": { - name: "Bug Bite", - effect: "O usuário morde o alvo. Caso o alvo esteja segurando uma Fruta, o usuário a come e ganha seu efeito." + 'bugBite': { + name: 'Bug Bite', + effect: 'O usuário morde o alvo. Caso o alvo esteja segurando uma Fruta, o usuário a come e ganha seu efeito.' }, - "chargeBeam": { - name: "Charge Beam", - effect: "O usuário ataca com uma carga elétrica. O usuário pode usar a eletricidade que sobrar para fortalecer seu Ataque Especial." + 'chargeBeam': { + name: 'Charge Beam', + effect: 'O usuário ataca com uma carga elétrica. O usuário pode usar a eletricidade que sobrar para fortalecer seu Ataque Especial.' }, - "woodHammer": { - name: "Wood Hammer", - effect: "O usuário usa seu corpo rígido para golpear o alvo. Isso também fere muito o usuário." + 'woodHammer': { + name: 'Wood Hammer', + effect: 'O usuário usa seu corpo rígido para golpear o alvo. Isso também fere muito o usuário.' }, - "aquaJet": { - name: "Aqua Jet", - effect: "O usuário ataca o alvo em uma velocidade que o torna quase invisível. Esse movimento tem prioridade." + 'aquaJet': { + name: 'Aqua Jet', + effect: 'O usuário ataca o alvo em uma velocidade que o torna quase invisível. Esse movimento tem prioridade.' }, - "attackOrder": { - name: "Attack Order", - effect: "O usuário ordena que seus subordinados ataquem o alvo. Golpes críticos ocorrem mais facilmente." + 'attackOrder': { + name: 'Attack Order', + effect: 'O usuário ordena que seus subordinados ataquem o alvo. Golpes críticos ocorrem mais facilmente.' }, - "defendOrder": { - name: "Defend Order", - effect: "O usuário ordena que seus subordinados protejam seu corpo, aumentando seus atributos de Defesa e Defesa Especial." + 'defendOrder': { + name: 'Defend Order', + effect: 'O usuário ordena que seus subordinados protejam seu corpo, aumentando seus atributos de Defesa e Defesa Especial.' }, - "healOrder": { - name: "Heal Order", - effect: "O usuário ordena que seus subordinados o curem. O usuário restaura até metade de seus PS máximos." + 'healOrder': { + name: 'Heal Order', + effect: 'O usuário ordena que seus subordinados o curem. O usuário restaura até metade de seus PS máximos.' }, - "headSmash": { - name: "Head Smash", - effect: "O usuário usa toda a sua força para acertar uma perigosa cabeçada destrutiva no alvo. Isso também fere terrivelmente o usuário." + 'headSmash': { + name: 'Head Smash', + effect: 'O usuário usa toda a sua força para acertar uma perigosa cabeçada destrutiva no alvo. Isso também fere terrivelmente o usuário.' }, - "doubleHit": { - name: "Double Hit", - effect: "O usuário golpeia o alvo com uma longa cauda, vinhas, ou um tentáculo. O alvo é acertado duas vezes seguidas." + 'doubleHit': { + name: 'Double Hit', + effect: 'O usuário golpeia o alvo com uma longa cauda, vinhas, ou um tentáculo. O alvo é acertado duas vezes seguidas.' }, - "roarOfTime": { - name: "Roar of Time", - effect: "O usuário bombardeia o alvo com tamanho poder que distorce até mesmo o tempo; porém, não se moverá no próximo turno." + 'roarOfTime': { + name: 'Roar of Time', + effect: 'O usuário bombardeia o alvo com tamanho poder que distorce até mesmo o tempo; porém, não se moverá no próximo turno.' }, - "spacialRend": { - name: "Spacial Rend", - effect: "O usuário rasga a existência do alvo junto com o espaço ao seu redor. Golpes críticos ocorrem mais facilmente." + 'spacialRend': { + name: 'Spacial Rend', + effect: 'O usuário rasga a existência do alvo junto com o espaço ao seu redor. Golpes críticos ocorrem mais facilmente.' }, - "lunarDance": { - name: "Lunar Dance", - effect: "O usuário desmaia. Em troca, o Pokémon que tomará seu lugar terá suas condições negativas e PS restaurados." + 'lunarDance': { + name: 'Lunar Dance', + effect: 'O usuário desmaia. Em troca, o Pokémon que tomará seu lugar terá suas condições negativas e PS restaurados.' }, - "crushGrip": { - name: "Crush Grip", - effect: "O alvo é esmagado com grande força. Quanto mais PS o alvo possuir, maior será o poder desse movimento." + 'crushGrip': { + name: 'Crush Grip', + effect: 'O alvo é esmagado com grande força. Quanto mais PS o alvo possuir, maior será o poder desse movimento.' }, - "magmaStorm": { - name: "Magma Storm", - effect: "O alvo é preso dentro de um turbilhão de fogo que arde de quatro a cinco turnos." + 'magmaStorm': { + name: 'Magma Storm', + effect: 'O alvo é preso dentro de um turbilhão de fogo que arde de quatro a cinco turnos.' }, - "darkVoid": { - name: "Dark Void", - effect: "Pokémon oponentes são sugados para dentro de um mundo de total escuridão que os faz dormir." + 'darkVoid': { + name: 'Dark Void', + effect: 'Pokémon oponentes são sugados para dentro de um mundo de total escuridão que os faz dormir.' }, - "seedFlare": { - name: "Seed Flare", - effect: "O usuário emite uma onda de choque de seu corpo para atacar o alvo. Isso também pode diminuir duramente a Defesa Especial do alvo." + 'seedFlare': { + name: 'Seed Flare', + effect: 'O usuário emite uma onda de choque de seu corpo para atacar o alvo. Isso também pode diminuir duramente a Defesa Especial do alvo.' }, - "ominousWind": { - name: "Ominous Wind", - effect: "O usuário ataca o alvo com uma rajada de vento repulsivo. Talvez aumente todos os atributos do usuário de uma vez." + 'ominousWind': { + name: 'Ominous Wind', + effect: 'O usuário ataca o alvo com uma rajada de vento repulsivo. Talvez aumente todos os atributos do usuário de uma vez.' }, - "shadowForce": { - name: "Shadow Force", - effect: "O usuário desaparece, então atinge o alvo no próximo turno. Esse movimento acerta o alvo mesmo que ele proteja a si mesmo." + 'shadowForce': { + name: 'Shadow Force', + effect: 'O usuário desaparece, então atinge o alvo no próximo turno. Esse movimento acerta o alvo mesmo que ele proteja a si mesmo.' }, - "honeClaws": { - name: "Hone Claws", - effect: "O usuário afia suas garras para fortalecer seu Ataque e sua Precisão." + 'honeClaws': { + name: 'Hone Claws', + effect: 'O usuário afia suas garras para fortalecer seu Ataque e sua Precisão.' }, - "wideGuard": { - name: "Wide Guard", - effect: "O usuário e seus aliados são protegidos de ataques de longo alcance por um turno." + 'wideGuard': { + name: 'Wide Guard', + effect: 'O usuário e seus aliados são protegidos de ataques de longo alcance por um turno.' }, - "guardSplit": { - name: "Guard Split", - effect: "O usuário usufrui de seu poder psíquico para equalizar seus atributos de Defesa e Defesa Especial com o alvo." + 'guardSplit': { + name: 'Guard Split', + effect: 'O usuário usufrui de seu poder psíquico para equalizar seus atributos de Defesa e Defesa Especial com o alvo.' }, - "powerSplit": { - name: "Power Split", - effect: "O usuário usufrui de seu poder psíquico para igualar seus atributos de Ataque e Ataque Especial com o alvo." + 'powerSplit': { + name: 'Power Split', + effect: 'O usuário usufrui de seu poder psíquico para igualar seus atributos de Ataque e Ataque Especial com o alvo.' }, - "wonderRoom": { - name: "Wonder Room", - effect: "O usuário cria uma área bizarra onde os atributos de Defesa e Defesa Especial dos Pokémon são trocados por cinco turnos." + 'wonderRoom': { + name: 'Wonder Room', + effect: 'O usuário cria uma área bizarra onde os atributos de Defesa e Defesa Especial dos Pokémon são trocados por cinco turnos.' }, - "psyshock": { - name: "Psyshock", - effect: "O usuário materializa uma estranha onda psíquica para atacar o alvo. Esse ataque inflige dano físico." + 'psyshock': { + name: 'Psyshock', + effect: 'O usuário materializa uma estranha onda psíquica para atacar o alvo. Esse ataque inflige dano físico.' }, - "venoshock": { - name: "Venoshock", - effect: "O usuário encharca o alvo com um líquido venenoso especial. O poder desse movimento dobra se o alvo estiver envenenado." + 'venoshock': { + name: 'Venoshock', + effect: 'O usuário encharca o alvo com um líquido venenoso especial. O poder desse movimento dobra se o alvo estiver envenenado.' }, - "autotomize": { - name: "Autotomize", - effect: "O usuário perde parte de seu corpo para se tornar mais leve e bruscamente aumentar seu atributo de Velocidade." + 'autotomize': { + name: 'Autotomize', + effect: 'O usuário perde parte de seu corpo para se tornar mais leve e bruscamente aumentar seu atributo de Velocidade.' }, - "ragePowder": { - name: "Rage Powder", - effect: "O usuário espalha uma nuvem de pó irritante para chamar a atenção para si mesmo. Oponentes miram apenas no usuário." + 'ragePowder': { + name: 'Rage Powder', + effect: 'O usuário espalha uma nuvem de pó irritante para chamar a atenção para si mesmo. Oponentes miram apenas no usuário.' }, - "telekinesis": { - name: "Telekinesis", - effect: "O usuário faz o alvo flutuar usando o seu poder psíquico. O alvo fica propício a ser atingido por três turnos." + 'telekinesis': { + name: 'Telekinesis', + effect: 'O usuário faz o alvo flutuar usando o seu poder psíquico. O alvo fica propício a ser atingido por três turnos.' }, - "magicRoom": { - name: "Magic Room", - effect: "O usuário cria uma área bizarra onde os itens dos Pokémon perdem seus efeitos por cinco turnos." + 'magicRoom': { + name: 'Magic Room', + effect: 'O usuário cria uma área bizarra onde os itens dos Pokémon perdem seus efeitos por cinco turnos.' }, - "smackDown": { - name: "Smack Down", - effect: "O usuário atira uma pedra ou algum projétil similar para atacar o oponente. Um Pokémon voador irá cair no chão quando for acertado." + 'smackDown': { + name: 'Smack Down', + effect: 'O usuário atira uma pedra ou algum projétil similar para atacar o oponente. Um Pokémon voador irá cair no chão quando for acertado.' }, - "stormThrow": { - name: "Storm Throw", - effect: "O usuário atinge o alvo com um golpe poderoso. Esse ataque sempre resulta em um golpe critico." + 'stormThrow': { + name: 'Storm Throw', + effect: 'O usuário atinge o alvo com um golpe poderoso. Esse ataque sempre resulta em um golpe critico.' }, - "flameBurst": { - name: "Flame Burst", - effect: "O usuário ataca o alvo com uma chama explosiva. A explosão da chama também fere os Pokémon próximos ao alvo." + 'flameBurst': { + name: 'Flame Burst', + effect: 'O usuário ataca o alvo com uma chama explosiva. A explosão da chama também fere os Pokémon próximos ao alvo.' }, - "sludgeWave": { - name: "Sludge Wave", - effect: "O usuário atinge tudo à volta inundando a área com uma grande onda de sedimentos. Isso também pode envenenar os atingidos." + 'sludgeWave': { + name: 'Sludge Wave', + effect: 'O usuário atinge tudo à volta inundando a área com uma grande onda de sedimentos. Isso também pode envenenar os atingidos.' }, - "quiverDance": { - name: "Quiver Dance", - effect: "O usuário delicadamente executa uma linda dança mística. Isso fortalece os atributos de Ataque Especial, Defesa Especial e Velocidade do usuário." + 'quiverDance': { + name: 'Quiver Dance', + effect: 'O usuário delicadamente executa uma linda dança mística. Isso fortalece os atributos de Ataque Especial, Defesa Especial e Velocidade do usuário.' }, - "heavySlam": { - name: "Heavy Slam", - effect: "O usuário golpeia o alvo com seu corpo pesado. Quanto mais pesado o usuário for comparado ao alvo, maior será o poder do movimento." + 'heavySlam': { + name: 'Heavy Slam', + effect: 'O usuário golpeia o alvo com seu corpo pesado. Quanto mais pesado o usuário for comparado ao alvo, maior será o poder do movimento.' }, - "synchronoise": { - name: "Synchronoise", - effect: "Usando uma estranha onda de choque, o usuário inflige dano em qualquer Pokémon do mesmo tipo na área ao seu redor." + 'synchronoise': { + name: 'Synchronoise', + effect: 'Usando uma estranha onda de choque, o usuário inflige dano em qualquer Pokémon do mesmo tipo na área ao seu redor.' }, - "electroBall": { - name: "Electro Ball", - effect: "O usuário arremessa uma orbe elétrica no alvo. Quanto mais rápido for o usuário comparado ao alvo, maior será o poder do movimento." + 'electroBall': { + name: 'Electro Ball', + effect: 'O usuário arremessa uma orbe elétrica no alvo. Quanto mais rápido for o usuário comparado ao alvo, maior será o poder do movimento.' }, - "soak": { - name: "Soak", - effect: "O usuário atira uma corrente de água no alvo e muda a tipagem do alvo para Água." + 'soak': { + name: 'Soak', + effect: 'O usuário atira uma corrente de água no alvo e muda a tipagem do alvo para Água.' }, - "flameCharge": { - name: "Flame Charge", - effect: "Ocultando-se nas chamas, o usuário ataca. Então, concentrando mais poder, o usuário aumenta sua Velocidade." + 'flameCharge': { + name: 'Flame Charge', + effect: 'Ocultando-se nas chamas, o usuário ataca. Então, concentrando mais poder, o usuário aumenta sua Velocidade.' }, - "coil": { - name: "Coil", - effect: "O usuário enrola seu corpo e se concentra. Isso aumenta seus atributos de Ataque, Defesa e Precisão." + 'coil': { + name: 'Coil', + effect: 'O usuário enrola seu corpo e se concentra. Isso aumenta seus atributos de Ataque, Defesa e Precisão.' }, - "lowSweep": { - name: "Low Sweep", - effect: "O usuário faz um ataque repentino nas pernas do alvo, diminuindo a Velocidade dele." + 'lowSweep': { + name: 'Low Sweep', + effect: 'O usuário faz um ataque repentino nas pernas do alvo, diminuindo a Velocidade dele.' }, - "acidSpray": { - name: "Acid Spray", - effect: "O usuário cospe um fluido corrosivo no alvo. Isso duramente diminui a Defesa Especial do alvo." + 'acidSpray': { + name: 'Acid Spray', + effect: 'O usuário cospe um fluido corrosivo no alvo. Isso duramente diminui a Defesa Especial do alvo.' }, - "foulPlay": { - name: "Foul Play", - effect: "O usuário vira o poder do alvo contra ele. Quanto maior for o atributo de Ataque do alvo, maior será o poder do movimento." + 'foulPlay': { + name: 'Foul Play', + effect: 'O usuário vira o poder do alvo contra ele. Quanto maior for o atributo de Ataque do alvo, maior será o poder do movimento.' }, - "simpleBeam": { - name: "Simple Beam", - effect: "Essa misteriosa onda psíquica produzida pelo usuário muda a Habilidade do alvo para “Simples”." + 'simpleBeam': { + name: 'Simple Beam', + effect: 'Essa misteriosa onda psíquica produzida pelo usuário muda a Habilidade do alvo para “Simples”.' }, - "entrainment": { - name: "Entrainment", - effect: "O usuário dança em um ritmo estranho que contagia o alvo que o imita, fazendo a Habilidade do alvo tornar-se a mesma que a do usuário." + 'entrainment': { + name: 'Entrainment', + effect: 'O usuário dança em um ritmo estranho que contagia o alvo que o imita, fazendo a Habilidade do alvo tornar-se a mesma que a do usuário.' }, - "afterYou": { - name: "After You", - effect: "O usuário auxilia o alvo e o faz usar seu movimento exatamente após o usuário." + 'afterYou': { + name: 'After You', + effect: 'O usuário auxilia o alvo e o faz usar seu movimento exatamente após o usuário.' }, - "round": { - name: "Round", - effect: "O usuário ataca o alvo com uma música. Outros podem entrar na Ronda e fazer o ataque dar um dano ainda maior." + 'round': { + name: 'Round', + effect: 'O usuário ataca o alvo com uma música. Outros podem entrar na Ronda e fazer o ataque dar um dano ainda maior.' }, - "echoedVoice": { - name: "Echoed Voice", - effect: "O usuário ataca o alvo com uma voz ecoante. Se esse movimento for usado um turno após o outro, ele infligirá dano maior." + 'echoedVoice': { + name: 'Echoed Voice', + effect: 'O usuário ataca o alvo com uma voz ecoante. Se esse movimento for usado um turno após o outro, ele infligirá dano maior.' }, - "chipAway": { - name: "Chip Away", - effect: "Procurando por uma brecha, o usuário ataca consistentemente. As mudanças de atributos do alvo não afetam o dano desse movimento." + 'chipAway': { + name: 'Chip Away', + effect: 'Procurando por uma brecha, o usuário ataca consistentemente. As mudanças de atributos do alvo não afetam o dano desse movimento.' }, - "clearSmog": { - name: "Clear Smog", - effect: "O usuário ataca arremessando um amontoado de lama especial. Todas as mudanças de atributos voltam ao normal." + 'clearSmog': { + name: 'Clear Smog', + effect: 'O usuário ataca arremessando um amontoado de lama especial. Todas as mudanças de atributos voltam ao normal.' }, - "storedPower": { - name: "Stored Power", - effect: "O usuário ataca o alvo com seu poder armazenado. Quanto mais os atributos do usuário estiverem fortalecidos, maior será o poder do movimento." + 'storedPower': { + name: 'Stored Power', + effect: 'O usuário ataca o alvo com seu poder armazenado. Quanto mais os atributos do usuário estiverem fortalecidos, maior será o poder do movimento.' }, - "quickGuard": { - name: "Quick Guard", - effect: "O usuário protege a si mesmo e seus aliados de golpes de prioridade." + 'quickGuard': { + name: 'Quick Guard', + effect: 'O usuário protege a si mesmo e seus aliados de golpes de prioridade.' }, - "allySwitch": { - name: "Ally Switch", - effect: "O usuário teletransporta usando um estranho poder e troca de lugar com um de seus aliados." + 'allySwitch': { + name: 'Ally Switch', + effect: 'O usuário teletransporta usando um estranho poder e troca de lugar com um de seus aliados.' }, - "scald": { - name: "Scald", - effect: "O usuário atira água fervente no seu alvo. Isso também pode deixar o alvo com queimadura." + 'scald': { + name: 'Scald', + effect: 'O usuário atira água fervente no seu alvo. Isso também pode deixar o alvo com queimadura.' }, - "shellSmash": { - name: "Shell Smash", - effect: "O usuário quebra a própria concha, diminuindo sua Defesa e Defesa Especial, mas bruscamente aumentando Ataque, Ataque Especial e Velocidade." + 'shellSmash': { + name: 'Shell Smash', + effect: 'O usuário quebra a própria concha, diminuindo sua Defesa e Defesa Especial, mas bruscamente aumentando Ataque, Ataque Especial e Velocidade.' }, - "healPulse": { - name: "Heal Pulse", - effect: "O usuário emite um pulso curativo que restaura os PS do alvo pela metade de seus PS máximos." + 'healPulse': { + name: 'Heal Pulse', + effect: 'O usuário emite um pulso curativo que restaura os PS do alvo pela metade de seus PS máximos.' }, - "hex": { - name: "Hex", - effect: "Esse ataque cruel inflige dano massivo a um alvo afetado por condições negativas." + 'hex': { + name: 'Hex', + effect: 'Esse ataque cruel inflige dano massivo a um alvo afetado por condições negativas.' }, - "skyDrop": { - name: "Sky Drop", - effect: "O usuário leva o alvo para o céu, então o solta durante o próximo turno. O alvo não pode atacar enquanto estiver no céu." + 'skyDrop': { + name: 'Sky Drop', + effect: 'O usuário leva o alvo para o céu, então o solta durante o próximo turno. O alvo não pode atacar enquanto estiver no céu.' }, - "shiftGear": { - name: "Shift Gear", - effect: "O usuário roda suas engrenagens, aumentando seu Ataque e bruscamente aumentando sua Velocidade." + 'shiftGear': { + name: 'Shift Gear', + effect: 'O usuário roda suas engrenagens, aumentando seu Ataque e bruscamente aumentando sua Velocidade.' }, - "circleThrow": { - name: "Circle Throw", - effect: "O alvo é arremessado, e um Pokémon diferente é trazido para a batalha. Na natureza, isso termina uma batalha contra um único Pokémon." + 'circleThrow': { + name: 'Circle Throw', + effect: 'O alvo é arremessado, e um Pokémon diferente é trazido para a batalha. Na natureza, isso termina uma batalha contra um único Pokémon.' }, - "incinerate": { - name: "Incinerate", - effect: "O usuário ataca o Pokémon oponente com fogo. Se um Pokémon estiver segurando um certo item, como uma Fruta, o item será queimado e inutilizado." + 'incinerate': { + name: 'Incinerate', + effect: 'O usuário ataca o Pokémon oponente com fogo. Se um Pokémon estiver segurando um certo item, como uma Fruta, o item será queimado e inutilizado.' }, - "quash": { - name: "Quash", - effect: "O usuário reprime o alvo e o faz se mover por último." + 'quash': { + name: 'Quash', + effect: 'O usuário reprime o alvo e o faz se mover por último.' }, - "acrobatics": { - name: "Acrobatics", - effect: "O usuário atinge o alvo rapidamente. Se o usuário não estiver segurando um item, esse ataque causa um dano massivo." + 'acrobatics': { + name: 'Acrobatics', + effect: 'O usuário atinge o alvo rapidamente. Se o usuário não estiver segurando um item, esse ataque causa um dano massivo.' }, - "reflectType": { - name: "Reflect Type", - effect: "O usuário reflete o tipo do alvo, fazendo-o ter o mesmo tipo do alvo." + 'reflectType': { + name: 'Reflect Type', + effect: 'O usuário reflete o tipo do alvo, fazendo-o ter o mesmo tipo do alvo.' }, - "retaliate": { - name: "Retaliate", - effect: "O usuário se vinga por um aliado desmaiado. Se um aliado desmaiou no turno anterior, esse movimento ficará mais poderoso." + 'retaliate': { + name: 'Retaliate', + effect: 'O usuário se vinga por um aliado desmaiado. Se um aliado desmaiou no turno anterior, esse movimento ficará mais poderoso.' }, - "finalGambit": { - name: "Final Gambit", - effect: "O usuário arrisca tudo para atacar seu alvo. O usuário desmaia porém inflige dano igual aos seus PS perdidos." + 'finalGambit': { + name: 'Final Gambit', + effect: 'O usuário arrisca tudo para atacar seu alvo. O usuário desmaia porém inflige dano igual aos seus PS perdidos.' }, - "bestow": { - name: "Bestow", - effect: "O usuário passa seu item ao alvo se o alvo não estiver segurando um item." + 'bestow': { + name: 'Bestow', + effect: 'O usuário passa seu item ao alvo se o alvo não estiver segurando um item.' }, - "inferno": { - name: "Inferno", - effect: "O usuário ataca engolindo o alvo em intensas chamas. intense fire. Isso deixa o alvo com uma queimadura." + 'inferno': { + name: 'Inferno', + effect: 'O usuário ataca engolindo o alvo em intensas chamas. intense fire. Isso deixa o alvo com uma queimadura.' }, - "waterPledge": { - name: "Water Pledge", - effect: "Um pilar de água atinge o alvo. Quando combinado com seu equivalente do tipo fogo, seu dano aumenta e um arco-íris é formado." + 'waterPledge': { + name: 'Water Pledge', + effect: 'Um pilar de água atinge o alvo. Quando combinado com seu equivalente do tipo fogo, seu dano aumenta e um arco-íris é formado.' }, - "firePledge": { - name: "Fire Pledge", - effect: "Um pilar de fogo atinge o alvo. Quando combinado com seu equivalente do tipo Planta, seu dano aumenta e um vasto mar de fogo aparece." + 'firePledge': { + name: 'Fire Pledge', + effect: 'Um pilar de fogo atinge o alvo. Quando combinado com seu equivalente do tipo Planta, seu dano aumenta e um vasto mar de fogo aparece.' }, - "grassPledge": { - name: "Grass Pledge", - effect: "Um pilar de grama acerta o alvo. Quando combinado com seu equivalente do tipo Água, seu dano aumenta e um vasto pântano surge." + 'grassPledge': { + name: 'Grass Pledge', + effect: 'Um pilar de grama acerta o alvo. Quando combinado com seu equivalente do tipo Água, seu dano aumenta e um vasto pântano surge.' }, - "voltSwitch": { - name: "Volt Switch", - effect: "Depois de fazer o seu ataque, o usuário corre de volta para trocar de lugar com um Pokémon da própria equipe." + 'voltSwitch': { + name: 'Volt Switch', + effect: 'Depois de fazer o seu ataque, o usuário corre de volta para trocar de lugar com um Pokémon da própria equipe.' }, - "struggleBug": { - name: "Struggle Bug", - effect: "Enquanto resiste, o usuário ataca o Pokémon oponente. Isso diminui o Ataque Especial daqueles atingidos." + 'struggleBug': { + name: 'Struggle Bug', + effect: 'Enquanto resiste, o usuário ataca o Pokémon oponente. Isso diminui o Ataque Especial daqueles atingidos.' }, - "bulldoze": { - name: "Bulldoze", - effect: "O usuário atinge a todos ao seu redor pisoteando o chão. Isso diminui a Velocidade daqueles atingidos." + 'bulldoze': { + name: 'Bulldoze', + effect: 'O usuário atinge a todos ao seu redor pisoteando o chão. Isso diminui a Velocidade daqueles atingidos.' }, - "frostBreath": { - name: "Frost Breath", - effect: "O usuário sopra sua respiração gelada no alvo. Esse ataque sempre resulta em um golpe crítico." + 'frostBreath': { + name: 'Frost Breath', + effect: 'O usuário sopra sua respiração gelada no alvo. Esse ataque sempre resulta em um golpe crítico.' }, - "dragonTail": { - name: "Dragon Tail", - effect: "O alvo é arremessado e um Pokémon diferente é trazido para o combate. Em batalhas selvagens, isso encerra a batalha contra um único Pokémon." + 'dragonTail': { + name: 'Dragon Tail', + effect: 'O alvo é arremessado e um Pokémon diferente é trazido para o combate. Em batalhas selvagens, isso encerra a batalha contra um único Pokémon.' }, - "workUp": { - name: "Work Up", - effect: "O usuário se agita e seus atributos de Ataque e Ataque Especial são fortalecidos." + 'workUp': { + name: 'Work Up', + effect: 'O usuário se agita e seus atributos de Ataque e Ataque Especial são fortalecidos.' }, - "electroweb": { - name: "Electroweb", - effect: "O usuário ataca e captura os Pokémon adversários usando uma rede elétrica. Isso diminui a Velocidade deles." + 'electroweb': { + name: 'Electroweb', + effect: 'O usuário ataca e captura os Pokémon adversários usando uma rede elétrica. Isso diminui a Velocidade deles.' }, - "wildCharge": { - name: "Wild Charge", - effect: "O usuário se cobre de eletricidade e colide com o seu alvo. Isso também fere um pouco o usuário." + 'wildCharge': { + name: 'Wild Charge', + effect: 'O usuário se cobre de eletricidade e colide com o seu alvo. Isso também fere um pouco o usuário.' }, - "drillRun": { - name: "Drill Run", - effect: "O usuário colide com seu alvo enquanto rotaciona seu corpo como uma broca. Golpes críticos acertam mais facilmente." + 'drillRun': { + name: 'Drill Run', + effect: 'O usuário colide com seu alvo enquanto rotaciona seu corpo como uma broca. Golpes críticos acertam mais facilmente.' }, - "dualChop": { - name: "Dual Chop", - effect: "O usuário ataca o seu alvo o acertando com golpes brutais. O alvo é atingido duas vezes seguidas." + 'dualChop': { + name: 'Dual Chop', + effect: 'O usuário ataca o seu alvo o acertando com golpes brutais. O alvo é atingido duas vezes seguidas.' }, - "heartStamp": { - name: "Heart Stamp", - effect: "O usuário libera sua fúria em um golpe violento após enganar o alvo com sua atuação fofa. Isso também pode fazer o alvo hesitar." + 'heartStamp': { + name: 'Heart Stamp', + effect: 'O usuário libera sua fúria em um golpe violento após enganar o alvo com sua atuação fofa. Isso também pode fazer o alvo hesitar.' }, - "hornLeech": { - name: "Horn Leech", - effect: "O usuário drena a energia do alvo com seus chifres. Os PS do usuário são restaurados pela metade do dano recebido pelo alvo." + 'hornLeech': { + name: 'Horn Leech', + effect: 'O usuário drena a energia do alvo com seus chifres. Os PS do usuário são restaurados pela metade do dano recebido pelo alvo.' }, - "sacredSword": { - name: "Sacred Sword", - effect: "O usuário ataca cortando com um longo chifre. As mudanças de atributos do alvo não afetam o dano desse ataque." + 'sacredSword': { + name: 'Sacred Sword', + effect: 'O usuário ataca cortando com um longo chifre. As mudanças de atributos do alvo não afetam o dano desse ataque.' }, - "razorShell": { - name: "Razor Shell", - effect: "O usuário corta seu alvo com conchas afiadas. Isso pode também diminuir o atributo de Defesa do alvo." + 'razorShell': { + name: 'Razor Shell', + effect: 'O usuário corta seu alvo com conchas afiadas. Isso pode também diminuir o atributo de Defesa do alvo.' }, - "heatCrash": { - name: "Heat Crash", - effect: "O usuário golpeia seu alvo com seu corpo envolto em chamas. Quanto mais pesado o usuário for comparado ao alvo, maior será o poder do movimento." + 'heatCrash': { + name: 'Heat Crash', + effect: 'O usuário golpeia seu alvo com seu corpo envolto em chamas. Quanto mais pesado o usuário for comparado ao alvo, maior será o poder do movimento.' }, - "leafTornado": { - name: "Leaf Tornado", - effect: "O usuário ataca seu alvo cercando-o com folhas afiadas. Isso também pode diminuir a precisão do alvo." + 'leafTornado': { + name: 'Leaf Tornado', + effect: 'O usuário ataca seu alvo cercando-o com folhas afiadas. Isso também pode diminuir a precisão do alvo.' }, - "steamroller": { - name: "Steamroller", - effect: "O usuário esmaga seu alvo rolando sobre ele com seu corpo enrolado como uma bola. Isso também pode fazer o alvo hesitar." + 'steamroller': { + name: 'Steamroller', + effect: 'O usuário esmaga seu alvo rolando sobre ele com seu corpo enrolado como uma bola. Isso também pode fazer o alvo hesitar.' }, - "cottonGuard": { - name: "Cotton Guard", - effect: "O usuário protege a si mesmo envolvendo seu corpo em algodão macio, o que drasticamente aumenta o atributo de Defesa do usuário." + 'cottonGuard': { + name: 'Cotton Guard', + effect: 'O usuário protege a si mesmo envolvendo seu corpo em algodão macio, o que drasticamente aumenta o atributo de Defesa do usuário.' }, - "nightDaze": { - name: "Night Daze", - effect: "O usuário libera uma onda de choque escura como a noite no alvo. Isso também pode reduzir a Precisão do alvo." + 'nightDaze': { + name: 'Night Daze', + effect: 'O usuário libera uma onda de choque escura como a noite no alvo. Isso também pode reduzir a Precisão do alvo.' }, - "psystrike": { - name: "Psystrike", - effect: "O usuário materializa uma estranha onda psíquica para atacar o alvo. Esse ataque inflige dano físico." + 'psystrike': { + name: 'Psystrike', + effect: 'O usuário materializa uma estranha onda psíquica para atacar o alvo. Esse ataque inflige dano físico.' }, - "tailSlap": { - name: "Tail Slap", - effect: "O usuário ataca golpeando o alvo com sua cauda resistente. Isso acerta o alvo duas a cinco vezes seguidas." + 'tailSlap': { + name: 'Tail Slap', + effect: 'O usuário ataca golpeando o alvo com sua cauda resistente. Isso acerta o alvo duas a cinco vezes seguidas.' }, - "hurricane": { - name: "Hurricane", - effect: "O usuário ataca prendendo seu oponente num violento turbilhão que voa alto no céu. Isso também pode confundir o alvo." + 'hurricane': { + name: 'Hurricane', + effect: 'O usuário ataca prendendo seu oponente num violento turbilhão que voa alto no céu. Isso também pode confundir o alvo.' }, - "headCharge": { - name: "Head Charge", - effect: "O usuário ataca colidindo sua cabeça no alvo, usando sua pelagem protetora. Isso também fere um pouco o usuário." + 'headCharge': { + name: 'Head Charge', + effect: 'O usuário ataca colidindo sua cabeça no alvo, usando sua pelagem protetora. Isso também fere um pouco o usuário.' }, - "gearGrind": { - name: "Gear Grind", - effect: "O usuário ataca arremessando engrenagens de aço no seu alvo duas vezes em sequência." + 'gearGrind': { + name: 'Gear Grind', + effect: 'O usuário ataca arremessando engrenagens de aço no seu alvo duas vezes em sequência.' }, - "searingShot": { - name: "Searing Shot", - effect: "O usuário queima tudo ao seu redor com um inferno de chamas escarlate. Isso também pode causar uma queimadura em alvos atingidos." + 'searingShot': { + name: 'Searing Shot', + effect: 'O usuário queima tudo ao seu redor com um inferno de chamas escarlate. Isso também pode causar uma queimadura em alvos atingidos.' }, - "technoBlast": { - name: "Techno Blast", - effect: "O usuário atira um raio de luz em seu alvo. O tipo do movimento muda dependendo do Disco que o usuário estiver segurando." + 'technoBlast': { + name: 'Techno Blast', + effect: 'O usuário atira um raio de luz em seu alvo. O tipo do movimento muda dependendo do Disco que o usuário estiver segurando.' }, - "relicSong": { - name: "Relic Song", - effect: "O usuário canta uma antiga canção e ataca encantando o coração dos Pokémon adversários. Isso também pode induzir sono." + 'relicSong': { + name: 'Relic Song', + effect: 'O usuário canta uma antiga canção e ataca encantando o coração dos Pokémon adversários. Isso também pode induzir sono.' }, - "secretSword": { - name: "Secret Sword", - effect: "O usuário ataca cortando com seu longo chifre. O estranho poder contido no chifre inflige dano físico no alvo." + 'secretSword': { + name: 'Secret Sword', + effect: 'O usuário ataca cortando com seu longo chifre. O estranho poder contido no chifre inflige dano físico no alvo.' }, - "glaciate": { - name: "Glaciate", - effect: "O usuário ataca soprando ar congelante nos Pokémon oponentes. Isso diminui a Velocidade deles." + 'glaciate': { + name: 'Glaciate', + effect: 'O usuário ataca soprando ar congelante nos Pokémon oponentes. Isso diminui a Velocidade deles.' }, - "boltStrike": { - name: "Bolt Strike", - effect: "O usuário cobre a si mesmo com uma grande quantidade de eletricidade e avança no alvo. Isso também pode paralisar o alvo." + 'boltStrike': { + name: 'Bolt Strike', + effect: 'O usuário cobre a si mesmo com uma grande quantidade de eletricidade e avança no alvo. Isso também pode paralisar o alvo.' }, - "blueFlare": { - name: "Blue Flare", - effect: "O usuário ataca engolindo o alvo numa intensa, porém linda, chama azul. Isso também pode deixar o alvo com uma queimadura." + 'blueFlare': { + name: 'Blue Flare', + effect: 'O usuário ataca engolindo o alvo numa intensa, porém linda, chama azul. Isso também pode deixar o alvo com uma queimadura.' }, - "fieryDance": { - name: "Fiery Dance", - effect: "Coberto por chamas, o usuário dança e bate suas asas. Isso também pode aumentar o Ataque Especial do usuário." + 'fieryDance': { + name: 'Fiery Dance', + effect: 'Coberto por chamas, o usuário dança e bate suas asas. Isso também pode aumentar o Ataque Especial do usuário.' }, - "freezeShock": { - name: "Freeze Shock", - effect: "No segundo turno, o usuário acerta o alvo com gelo eletricamente carregado. Isso também pode deixar o alvo paralisado." + 'freezeShock': { + name: 'Freeze Shock', + effect: 'No segundo turno, o usuário acerta o alvo com gelo eletricamente carregado. Isso também pode deixar o alvo paralisado.' }, - "iceBurn": { - name: "Ice Burn", - effect: "No segundo turno, um impiedoso vento gélido cerca o alvo. Isso pode deixar o alvo com uma queimadura." + 'iceBurn': { + name: 'Ice Burn', + effect: 'No segundo turno, um impiedoso vento gélido cerca o alvo. Isso pode deixar o alvo com uma queimadura.' }, - "snarl": { - name: "Snarl", - effect: "O usuário grita como se ele estivesse reclamando de algo, diminuindo a Defesa Especial do Pokémon oponente." + 'snarl': { + name: 'Snarl', + effect: 'O usuário grita como se ele estivesse reclamando de algo, diminuindo a Defesa Especial do Pokémon oponente.' }, - "icicleCrash": { - name: "Icicle Crash", - effect: "O usuário ataca arremessando estacas de gelo no alvo violentamente. Isso também pode fazer o alvo hesitar." + 'icicleCrash': { + name: 'Icicle Crash', + effect: 'O usuário ataca arremessando estacas de gelo no alvo violentamente. Isso também pode fazer o alvo hesitar.' }, - "v-Create": { - name: "V-create", - effect: "Com uma ardente chama em sua testa, o usuário joga seu corpo em direção ao alvo. Isso diminui a Defesa, Defesa Especial, e Velocidade do usuário." + 'v-Create': { + name: 'V-create', + effect: 'Com uma ardente chama em sua testa, o usuário joga seu corpo em direção ao alvo. Isso diminui a Defesa, Defesa Especial, e Velocidade do usuário.' }, - "fusionFlare": { - name: "Fusion Flare", - effect: "O usuário invoca uma chama gigante. Esse movimento é mais poderoso quando influenciado por um enorme raio." + 'fusionFlare': { + name: 'Fusion Flare', + effect: 'O usuário invoca uma chama gigante. Esse movimento é mais poderoso quando influenciado por um enorme raio.' }, - "fusionBolt": { - name: "Fusion Bolt", - effect: "O usuário conduz um raio gigantesco. Esse movimento é mais poderoso quando influenciado por uma enorme chama." + 'fusionBolt': { + name: 'Fusion Bolt', + effect: 'O usuário conduz um raio gigantesco. Esse movimento é mais poderoso quando influenciado por uma enorme chama.' }, - "flyingPress": { - name: "Flying Press", - effect: "O usuário mergulha do céu em direção ao alvo. Esse movimento é simultaneamente do tipo Lutador e Voador." + 'flyingPress': { + name: 'Flying Press', + effect: 'O usuário mergulha do céu em direção ao alvo. Esse movimento é simultaneamente do tipo Lutador e Voador.' }, - "matBlock": { - name: "Mat Block", - effect: "Usando uma esteira elevada como escudo, o usuário protege a si mesmo e a seus aliados de golpes que causam dano. Isso não previne condições negativas." + 'matBlock': { + name: 'Mat Block', + effect: 'Usando uma esteira elevada como escudo, o usuário protege a si mesmo e a seus aliados de golpes que causam dano. Isso não previne condições negativas.' }, - "belch": { - name: "Belch", - effect: "O usuário expurga um arroto danificante no alvo. O usuário deve comer uma Fruta para usar esse movimento." + 'belch': { + name: 'Belch', + effect: 'O usuário expurga um arroto danificante no alvo. O usuário deve comer uma Fruta para usar esse movimento.' }, - "rototiller": { - name: "Rototiller", - effect: "O usuário ara o solo, facilitando o crescimento de plantas. Isso aumenta os atributos de Ataque e Ataque Especial dos Pokémon do tipo Planta." + 'rototiller': { + name: 'Rototiller', + effect: 'O usuário ara o solo, facilitando o crescimento de plantas. Isso aumenta os atributos de Ataque e Ataque Especial dos Pokémon do tipo Planta.' }, - "stickyWeb": { - name: "Sticky Web", - effect: "O usuário tece uma teia viscosa ao redor da equipe adversária, o que diminui a Velocidade dos adversários após entrarem em campo." + 'stickyWeb': { + name: 'Sticky Web', + effect: 'O usuário tece uma teia viscosa ao redor da equipe adversária, o que diminui a Velocidade dos adversários após entrarem em campo.' }, - "fellStinger": { - name: "Fell Stinger", - effect: "Quando o usuário nocauteia um alvo com este movimento, o atributo de Ataque do usuário aumenta bruscamente." + 'fellStinger': { + name: 'Fell Stinger', + effect: 'Quando o usuário nocauteia um alvo com este movimento, o atributo de Ataque do usuário aumenta bruscamente.' }, - "phantomForce": { - name: "Phantom Force", - effect: "O usuário desaparece para algum lugar e então ataca o alvo no próximo turno. Esse movimento acerta mesmo se o alvo estiver se protegendo." + 'phantomForce': { + name: 'Phantom Force', + effect: 'O usuário desaparece para algum lugar e então ataca o alvo no próximo turno. Esse movimento acerta mesmo se o alvo estiver se protegendo.' }, - "trick-Or-Treat": { - name: "Trick-or-Treat", - effect: "O usuário enche o alvo com o espírito do Halloween para celebrarem juntos. Isso adiciona o tipo Fantasma à tipagem do alvo." + 'trick-Or-Treat': { + name: 'Trick-or-Treat', + effect: 'O usuário enche o alvo com o espírito do Halloween para celebrarem juntos. Isso adiciona o tipo Fantasma à tipagem do alvo.' }, - "nobleRoar": { - name: "Noble Roar", - effect: "Soltando um nobre rugido, o usuário intimida o alvo e diminui seus atributos de Ataque e Ataque Especial." + 'nobleRoar': { + name: 'Noble Roar', + effect: 'Soltando um nobre rugido, o usuário intimida o alvo e diminui seus atributos de Ataque e Ataque Especial.' }, - "ionDeluge": { - name: "Ion Deluge", - effect: "O usuário dispersa partículas eletricamente carregadas, o que muda movimentos do tipo Normal para o tipo Elétrico." + 'ionDeluge': { + name: 'Ion Deluge', + effect: 'O usuário dispersa partículas eletricamente carregadas, o que muda movimentos do tipo Normal para o tipo Elétrico.' }, - "parabolicCharge": { - name: "Parabolic Charge", - effect: "O usuário ataca tudo ao seu redor. Os PS do usuário são restaurados pela metade do dano recebido por aqueles que foram atingidos." + 'parabolicCharge': { + name: 'Parabolic Charge', + effect: 'O usuário ataca tudo ao seu redor. Os PS do usuário são restaurados pela metade do dano recebido por aqueles que foram atingidos.' }, - "forest’SCurse": { - name: "Forest’s Curse", - effect: "O usuário conjura uma maldição da floresta no alvo. Isso adiciona o tipo Planta à tipagem do alvo." + 'forest’SCurse': { + name: 'Forest’s Curse', + effect: 'O usuário conjura uma maldição da floresta no alvo. Isso adiciona o tipo Planta à tipagem do alvo.' }, - "petalBlizzard": { - name: "Petal Blizzard", - effect: "O usuário rotaciona uma violenta nevasca composta por pétalas e ataca tudo ao seu redor." + 'petalBlizzard': { + name: 'Petal Blizzard', + effect: 'O usuário rotaciona uma violenta nevasca composta por pétalas e ataca tudo ao seu redor.' }, - "freeze-Dry": { - name: "Freeze-Dry", - effect: "O usuário rapidamente diminui a temperatura do alvo. Isso pode deixar o alvo congelado. Esse movimento é supereficaz contra tipos Água." + 'freeze-Dry': { + name: 'Freeze-Dry', + effect: 'O usuário rapidamente diminui a temperatura do alvo. Isso pode deixar o alvo congelado. Esse movimento é supereficaz contra tipos Água.' }, - "disarmingVoice": { - name: "Disarming Voice", - effect: "Liberando um grito encantador, o usuário inflige dano emocional nos Pokémon oponentes. Esse ataque nunca erra." + 'disarmingVoice': { + name: 'Disarming Voice', + effect: 'Liberando um grito encantador, o usuário inflige dano emocional nos Pokémon oponentes. Esse ataque nunca erra.' }, - "partingShot": { - name: "Parting Shot", - effect: "O usuário diminui os atributos de Ataque e Ataque Esp. do alvo com uma ameaça antes de ser trocado por outro Pokémon na equipe." + 'partingShot': { + name: 'Parting Shot', + effect: 'O usuário diminui os atributos de Ataque e Ataque Esp. do alvo com uma ameaça antes de ser trocado por outro Pokémon na equipe.' }, - "topsy-Turvy": { - name: "Topsy-Turvy", - effect: "Todas as mudanças de atributos afetando o alvo viram de cabeça para baixo e se tornam o oposto do que eram." + 'topsy-Turvy': { + name: 'Topsy-Turvy', + effect: 'Todas as mudanças de atributos afetando o alvo viram de cabeça para baixo e se tornam o oposto do que eram.' }, - "drainingKiss": { - name: "Draining Kiss", - effect: "O usuário rouba a energia do alvo com um beijo. Os PS do usuário são restaurados além da metade do dano recebido pelo alvo." + 'drainingKiss': { + name: 'Draining Kiss', + effect: 'O usuário rouba a energia do alvo com um beijo. Os PS do usuário são restaurados além da metade do dano recebido pelo alvo.' }, - "craftyShield": { - name: "Crafty Shield", - effect: "O usuário protege a si mesmo e seus aliados de condições negativas com um misterioso poder. Isso não previne golpes que inflijam dano." + 'craftyShield': { + name: 'Crafty Shield', + effect: 'O usuário protege a si mesmo e seus aliados de condições negativas com um misterioso poder. Isso não previne golpes que inflijam dano.' }, - "flowerShield": { - name: "Flower Shield", - effect: "Usando um misterioso poder, o usuário aumenta o atributo de Defesa de todos os Pokémon tipo Planta em batalha." + 'flowerShield': { + name: 'Flower Shield', + effect: 'Usando um misterioso poder, o usuário aumenta o atributo de Defesa de todos os Pokémon tipo Planta em batalha.' }, - "grassyTerrain": { - name: "Grassy Terrain", - effect: "O usuário transforma o campo de batalha em grama por cinco turnos. Isso restaura os PS dos Pokémon no solo um pouco a cada turno e fortalece golpes do tipo Grama." + 'grassyTerrain': { + name: 'Grassy Terrain', + effect: 'O usuário transforma o campo de batalha em grama por cinco turnos. Isso restaura os PS dos Pokémon no solo um pouco a cada turno e fortalece golpes do tipo Grama.' }, - "mistyTerrain": { - name: "Misty Terrain", - effect: "Isto protege os Pokémon no solo de condições de estado e corta pela metade o dano dos movimentos do tipo Dragão por cinco turnos." + 'mistyTerrain': { + name: 'Misty Terrain', + effect: 'Isto protege os Pokémon no solo de condições de estado e corta pela metade o dano dos movimentos do tipo Dragão por cinco turnos.' }, - "electrify": { - name: "Electrify", - effect: "Caso o alvo tenha sido energizado antes de usar um movimento durante aquele turno, o movimento do alvo se tornará do tipo Elétrico." + 'electrify': { + name: 'Electrify', + effect: 'Caso o alvo tenha sido energizado antes de usar um movimento durante aquele turno, o movimento do alvo se tornará do tipo Elétrico.' }, - "playRough": { - name: "Play Rough", - effect: "O usuário joga duro com o alvo e o ataca. Isso também pode diminuir o atributo de Ataque do alvo." + 'playRough': { + name: 'Play Rough', + effect: 'O usuário joga duro com o alvo e o ataca. Isso também pode diminuir o atributo de Ataque do alvo.' }, - "fairyWind": { - name: "Fairy Wind", - effect: "O usuário rotaciona um vento de fada e ataca o alvo com ele." + 'fairyWind': { + name: 'Fairy Wind', + effect: 'O usuário rotaciona um vento de fada e ataca o alvo com ele.' }, - "moonblast": { - name: "Moonblast", - effect: "Canalizando o poder da lua, o usuário ataca o alvo. Isso também pode diminuir o atributo de Ataque Especial do alvo." + 'moonblast': { + name: 'Moonblast', + effect: 'Canalizando o poder da lua, o usuário ataca o alvo. Isso também pode diminuir o atributo de Ataque Especial do alvo.' }, - "boomburst": { - name: "Boomburst", - effect: "O usuário ataca tudo ao seu redor com o poder destrutivo de um terrível som explosivo." + 'boomburst': { + name: 'Boomburst', + effect: 'O usuário ataca tudo ao seu redor com o poder destrutivo de um terrível som explosivo.' }, - "fairyLock": { - name: "Fairy Lock", - effect: "Bloqueando o campo de batalha, o usuário previne que todos os Pokémon fujam durante o próximo turno." + 'fairyLock': { + name: 'Fairy Lock', + effect: 'Bloqueando o campo de batalha, o usuário previne que todos os Pokémon fujam durante o próximo turno.' }, - "king’SShield": { - name: "King’s Shield", - effect: "O usuário assume uma posição defensiva enquanto protege a si mesmo de dano. Isto duramente diminui o Ataque de qualquer um que faça contato direto." + 'king’SShield': { + name: 'King’s Shield', + effect: 'O usuário assume uma posição defensiva enquanto protege a si mesmo de dano. Isto duramente diminui o Ataque de qualquer um que faça contato direto.' }, - "playNice": { - name: "Play Nice", - effect: "O usuário e o alvo se tornam amigos, fazendo com que o alvo perca sua vontade de lutar. Isso diminui o atributo de Ataque do alvo." + 'playNice': { + name: 'Play Nice', + effect: 'O usuário e o alvo se tornam amigos, fazendo com que o alvo perca sua vontade de lutar. Isso diminui o atributo de Ataque do alvo.' }, - "confide": { - name: "Confide", - effect: "O usuário conta um segredo para o alvo e o alvo perde sua habilidade de se concentrar. Isso diminui o Ataque Especial do alvo." + 'confide': { + name: 'Confide', + effect: 'O usuário conta um segredo para o alvo e o alvo perde sua habilidade de se concentrar. Isso diminui o Ataque Especial do alvo.' }, - "diamondStorm": { - name: "Diamond Storm", - effect: "O usuário provoca uma tempestade de diamantes para ferir os Pokémon oponentes. Isso também pode aumentar o atributo de Defesa do usuário." + 'diamondStorm': { + name: 'Diamond Storm', + effect: 'O usuário provoca uma tempestade de diamantes para ferir os Pokémon oponentes. Isso também pode aumentar o atributo de Defesa do usuário.' }, - "steamEruption": { - name: "Steam Eruption", - effect: "O usuário imerge o alvo em vapor superaquecido. Isso também pode deixar o alvo com uma queimadura." + 'steamEruption': { + name: 'Steam Eruption', + effect: 'O usuário imerge o alvo em vapor superaquecido. Isso também pode deixar o alvo com uma queimadura.' }, - "hyperspaceHole": { - name: "Hyperspace Hole", - effect: "Usando uma fenda espacial, o usuário aparece ao lado do alvo e ataca. Isso também acerta um alvo usando movimentos como Proteger ou Detectar." + 'hyperspaceHole': { + name: 'Hyperspace Hole', + effect: 'Usando uma fenda espacial, o usuário aparece ao lado do alvo e ataca. Isso também acerta um alvo usando movimentos como Proteger ou Detectar.' }, - "waterShuriken": { - name: "Water Shuriken", - effect: "O usuário acerta o alvo jogando estrelas ninja de duas a cinco vezes seguidas. Esse movimento tem prioridade." + 'waterShuriken': { + name: 'Water Shuriken', + effect: 'O usuário acerta o alvo jogando estrelas ninja de duas a cinco vezes seguidas. Esse movimento tem prioridade.' }, - "mysticalFire": { - name: "Mystical Fire", - effect: "O usuário ataca soprando um fogo ardente especial. Isso também diminui o Ataque Especial do alvo." + 'mysticalFire': { + name: 'Mystical Fire', + effect: 'O usuário ataca soprando um fogo ardente especial. Isso também diminui o Ataque Especial do alvo.' }, - "spikyShield": { - name: "Spiky Shield", - effect: "Além de proteger o alvo de ataques, este movimento também fere qualquer atacante que fizer contato direto." + 'spikyShield': { + name: 'Spiky Shield', + effect: 'Além de proteger o alvo de ataques, este movimento também fere qualquer atacante que fizer contato direto.' }, - "aromaticMist": { - name: "Aromatic Mist", - effect: "Usando um misterioso aroma, o usuário aumenta o atributo de Defesa Especial de um Pokémon aliado." + 'aromaticMist': { + name: 'Aromatic Mist', + effect: 'Usando um misterioso aroma, o usuário aumenta o atributo de Defesa Especial de um Pokémon aliado.' }, - "eerieImpulse": { - name: "Eerie Impulse", - effect: "O corpo do usuário gera um impulso misterioso. O alvo exposto ao impulso tem seu Ataque Especial duramente diminuído." + 'eerieImpulse': { + name: 'Eerie Impulse', + effect: 'O corpo do usuário gera um impulso misterioso. O alvo exposto ao impulso tem seu Ataque Especial duramente diminuído.' }, - "venomDrench": { - name: "Venom Drench", - effect: "Pokémon oponentes são encharcados por um estranho líquido venenoso. Isso diminui o Ataque, Ataque Esp. e Velocidade de um alvo envenenado." + 'venomDrench': { + name: 'Venom Drench', + effect: 'Pokémon oponentes são encharcados por um estranho líquido venenoso. Isso diminui o Ataque, Ataque Esp. e Velocidade de um alvo envenenado.' }, - "powder": { - name: "Powder", - effect: "O usuário cobre o alvo em pólvora. Se o alvo usar um movimento do tipo Fogo, a pólvora entra em combustão e causa dano ao alvo." + 'powder': { + name: 'Powder', + effect: 'O usuário cobre o alvo em pólvora. Se o alvo usar um movimento do tipo Fogo, a pólvora entra em combustão e causa dano ao alvo.' }, - "geomancy": { - name: "Geomancy", - effect: "O usuário absorve energia e bruscamente aumenta seus atributos de Ataque Especial, Defesa Especial e Velocidade no próximo turno." + 'geomancy': { + name: 'Geomancy', + effect: 'O usuário absorve energia e bruscamente aumenta seus atributos de Ataque Especial, Defesa Especial e Velocidade no próximo turno.' }, - "magneticFlux": { - name: "Magnetic Flux", - effect: "O usuário manipula campos magnéticos, o que aumenta os atributos de Defesa e Defesa Especial de Pokémon aliados com as Habilidades “Mais” ou “Menos”." + 'magneticFlux': { + name: 'Magnetic Flux', + effect: 'O usuário manipula campos magnéticos, o que aumenta os atributos de Defesa e Defesa Especial de Pokémon aliados com as Habilidades “Mais” ou “Menos”.' }, - "happyHour": { - name: "Happy Hour", - effect: "Usar Happy Hour dobra a quantidade de prêmio em dinheiro recebido após a batalha." + 'happyHour': { + name: 'Happy Hour', + effect: 'Usar Happy Hour dobra a quantidade de prêmio em dinheiro recebido após a batalha.' }, - "electricTerrain": { - name: "Electric Terrain", - effect: "O usuário eletrifica o campo de batalha por cinco turnos, fortalecendo movimentos do tipo Elétrico. Pokémon no solo não podem mais cair no sono." + 'electricTerrain': { + name: 'Electric Terrain', + effect: 'O usuário eletrifica o campo de batalha por cinco turnos, fortalecendo movimentos do tipo Elétrico. Pokémon no solo não podem mais cair no sono.' }, - "dazzlingGleam": { - name: "Dazzling Gleam", - effect: "O usuário causa dano ao Pokémon oponente emitindo um clarão poderoso." + 'dazzlingGleam': { + name: 'Dazzling Gleam', + effect: 'O usuário causa dano ao Pokémon oponente emitindo um clarão poderoso.' }, - "celebrate": { - name: "Celebrate", - effect: "O Pokémon te dá parabéns pelo seu dia especial!" + 'celebrate': { + name: 'Celebrate', + effect: 'O Pokémon te dá parabéns pelo seu dia especial!' }, - "holdHands": { - name: "Hold Hands", - effect: "O usuário e um aliado dão as mãos. Isso os deixam muito contentes." + 'holdHands': { + name: 'Hold Hands', + effect: 'O usuário e um aliado dão as mãos. Isso os deixam muito contentes.' }, - "baby-DollEyes": { - name: "Baby-Doll Eyes", - effect: "O usuário encara o alvo com seus olhos adoráveis, o que diminui seu atributo de Ataque. Esse movimento tem prioridade." + 'baby-DollEyes': { + name: 'Baby-Doll Eyes', + effect: 'O usuário encara o alvo com seus olhos adoráveis, o que diminui seu atributo de Ataque. Esse movimento tem prioridade.' }, - "nuzzle": { - name: "Nuzzle", - effect: "O usuário ataca esfregando suas bochechas eletrizadas contra o alvo. Isso também deixa o alvo paralisado." + 'nuzzle': { + name: 'Nuzzle', + effect: 'O usuário ataca esfregando suas bochechas eletrizadas contra o alvo. Isso também deixa o alvo paralisado.' }, - "holdBack": { - name: "Hold Back", - effect: "O usuário pega leve quando ataca e o alvo é deixado com pelo menos 1 PS." + 'holdBack': { + name: 'Hold Back', + effect: 'O usuário pega leve quando ataca e o alvo é deixado com pelo menos 1 PS.' }, - "infestation": { - name: "Infestation", - effect: "O alvo é infestado e atacado de quatro a cinco turnos. O alvo não pode fugir durante esse período." + 'infestation': { + name: 'Infestation', + effect: 'O alvo é infestado e atacado de quatro a cinco turnos. O alvo não pode fugir durante esse período.' }, - "power-UpPunch": { - name: "Power-Up Punch", - effect: "Golpear oponentes repetidamente faz os punhos do usuário enrijecerem. Acertar um alvo aumenta o Ataque." + 'power-UpPunch': { + name: 'Power-Up Punch', + effect: 'Golpear oponentes repetidamente faz os punhos do usuário enrijecerem. Acertar um alvo aumenta o Ataque.' }, - "oblivionWing": { - name: "Oblivion Wing", - effect: "O usuário absorve os PS de seu alvo. Os PS do usuário são restaurados além da metade do dano recebido pelo usuário." + 'oblivionWing': { + name: 'Oblivion Wing', + effect: 'O usuário absorve os PS de seu alvo. Os PS do usuário são restaurados além da metade do dano recebido pelo usuário.' }, - "thousandArrows": { - name: "Thousand Arrows", - effect: "Este movimento também acerta Pokémon adversários que estão no ar. Esses Pokémon são derrubados e caem no chão." + 'thousandArrows': { + name: 'Thousand Arrows', + effect: 'Este movimento também acerta Pokémon adversários que estão no ar. Esses Pokémon são derrubados e caem no chão.' }, - "thousandWaves": { - name: "Thousand Waves", - effect: "O usuário ataca com tremores que se dispersam pelo chão. Alvos atingidos não podem fugir da batalha." + 'thousandWaves': { + name: 'Thousand Waves', + effect: 'O usuário ataca com tremores que se dispersam pelo chão. Alvos atingidos não podem fugir da batalha.' }, - "land’SWrath": { - name: "Land’s Wrath", - effect: "O usuário reúne a energia da terra e foca esse poder nos Pokémon oponentes para causar dano." + 'land’SWrath': { + name: 'Land’s Wrath', + effect: 'O usuário reúne a energia da terra e foca esse poder nos Pokémon oponentes para causar dano.' }, - "lightOfRuin": { - name: "Light of Ruin", - effect: "Usufruindo do poder da flor eterna, o usuário atira um poderoso raio de luz. Isso também fere muito o usuário." + 'lightOfRuin': { + name: 'Light of Ruin', + effect: 'Usufruindo do poder da flor eterna, o usuário atira um poderoso raio de luz. Isso também fere muito o usuário.' }, - "originPulse": { - name: "Origin Pulse", - effect: "O usuário ataca o Pokémon adversário com inúmeros raios de luz resplandescente que brilham em uma cor de profundo azul." + 'originPulse': { + name: 'Origin Pulse', + effect: 'O usuário ataca o Pokémon adversário com inúmeros raios de luz resplandescente que brilham em uma cor de profundo azul.' }, - "precipiceBlades": { - name: "Precipice Blades", - effect: "O usuário ataca o Pokémon adversário manifestando o poder terrestre em espadas de pedra assustadoras." + 'precipiceBlades': { + name: 'Precipice Blades', + effect: 'O usuário ataca o Pokémon adversário manifestando o poder terrestre em espadas de pedra assustadoras.' }, - "dragonAscent": { - name: "Dragon Ascent", - effect: "Depois de alcançar grandes alturas, o usuário ataca o alvo mergulhando do céu em alta velocidade, porém isso diminui sua própria Defesa e Defesa Especial." + 'dragonAscent': { + name: 'Dragon Ascent', + effect: 'Depois de alcançar grandes alturas, o usuário ataca o alvo mergulhando do céu em alta velocidade, porém isso diminui sua própria Defesa e Defesa Especial.' }, - "hyperspaceFury": { - name: "Hyperspace Fury", - effect: "Usando seus diversos braços, o usuário libera golpes furiosos que ignoram efeitos de movimentos como Proteção e Detectar. Diminui a Defesa do usuário." + 'hyperspaceFury': { + name: 'Hyperspace Fury', + effect: 'Usando seus diversos braços, o usuário libera golpes furiosos que ignoram efeitos de movimentos como Proteção e Detectar. Diminui a Defesa do usuário.' }, - "breakneckBlitzPhysical": { - name: "Breakneck Blitz", - effect: "Utilizando o Poder Z, o usuário intensifica seu ímpeto e atinge o alvo em alta velocidade. Seu poder varia dependendo do movimento original." + 'breakneckBlitzPhysical': { + name: 'Breakneck Blitz', + effect: 'Utilizando o Poder Z, o usuário intensifica seu ímpeto e atinge o alvo em alta velocidade. Seu poder varia dependendo do movimento original.' }, - "breakneckBlitzSpecial": { - name: "Breakneck Blitz", - effect: "Dummy Data" + 'breakneckBlitzSpecial': { + name: 'Breakneck Blitz', + effect: 'Dummy Data' }, - "allOutPummelingPhysical": { - name: "All-Out Pummeling", - effect: "Utilizando o Poder Z, o usuário cria e arremessa um orbe de energia no alvo com força total. Seu poder varia dependendo do movimento original." + 'allOutPummelingPhysical': { + name: 'All-Out Pummeling', + effect: 'Utilizando o Poder Z, o usuário cria e arremessa um orbe de energia no alvo com força total. Seu poder varia dependendo do movimento original.' }, - "allOutPummelingSpecial": { - name: "All-Out Pummeling", - effect: "Dummy Data" + 'allOutPummelingSpecial': { + name: 'All-Out Pummeling', + effect: 'Dummy Data' }, - "supersonicSkystrikePhysical": { - name: "Supersonic Skystrike", - effect: "Utilizando o Poder Z, o usuário ascende e mergulha em direção ao alvo em alta velocidade. Seu poder varia dependendo do movimento original." + 'supersonicSkystrikePhysical': { + name: 'Supersonic Skystrike', + effect: 'Utilizando o Poder Z, o usuário ascende e mergulha em direção ao alvo em alta velocidade. Seu poder varia dependendo do movimento original.' }, - "supersonicSkystrikeSpecial": { - name: "Supersonic Skystrike", - effect: "Dummy Data" + 'supersonicSkystrikeSpecial': { + name: 'Supersonic Skystrike', + effect: 'Dummy Data' }, - "acidDownpourPhysical": { - name: "Acid Downpour", - effect: "Utilizando o Poder Z, o usuário cria um pântano venenoso e afoga o alvo com toda sua força. Seu poder varia dependendo do movimento original." + 'acidDownpourPhysical': { + name: 'Acid Downpour', + effect: 'Utilizando o Poder Z, o usuário cria um pântano venenoso e afoga o alvo com toda sua força. Seu poder varia dependendo do movimento original.' }, - "acidDownpourSpecial": { - name: "Acid Downpour", - effect: "Dummy Data" + 'acidDownpourSpecial': { + name: 'Acid Downpour', + effect: 'Dummy Data' }, - "tectonicRagePhysical": { - name: "Tectonic Rage", - effect: "Utilizando o Poder Z, o usuário abre uma cratera e mergulha nela com o alvo com força total. Seu poder varia dependendo do movimento original." + 'tectonicRagePhysical': { + name: 'Tectonic Rage', + effect: 'Utilizando o Poder Z, o usuário abre uma cratera e mergulha nela com o alvo com força total. Seu poder varia dependendo do movimento original.' }, - "tectonicRageSpecial": { - name: "Tectonic Rage", - effect: "Dummy Data" + 'tectonicRageSpecial': { + name: 'Tectonic Rage', + effect: 'Dummy Data' }, - "continentalCrushPhysical": { - name: "Continental Crush", - effect: "Utilizando o Poder Z, o usuário cria um meteoro que cai do céu em direção ao alvo com força total. Seu poder varia dependendo do movimento original." + 'continentalCrushPhysical': { + name: 'Continental Crush', + effect: 'Utilizando o Poder Z, o usuário cria um meteoro que cai do céu em direção ao alvo com força total. Seu poder varia dependendo do movimento original.' }, - "continentalCrushSpecial": { - name: "Continental Crush", - effect: "Dummy Data" + 'continentalCrushSpecial': { + name: 'Continental Crush', + effect: 'Dummy Data' }, - "savageSpinOutPhysical": { - name: "Savage Spin-Out", - effect: "Utilizando o Poder Z, o usuário restringe o alvo em um casulo de seda e ataca ele com força total. Seu poder varia dependendo do movimento original." + 'savageSpinOutPhysical': { + name: 'Savage Spin-Out', + effect: 'Utilizando o Poder Z, o usuário restringe o alvo em um casulo de seda e ataca ele com força total. Seu poder varia dependendo do movimento original.' }, - "savageSpinOutSpecial": { - name: "Savage Spin-Out", - effect: "Dummy Data" + 'savageSpinOutSpecial': { + name: 'Savage Spin-Out', + effect: 'Dummy Data' }, - "never-EndingNightmarePhysical": { - name: "Never-Ending Nightmare", - effect: "Utilizando o Poder Z, o usuário invoca espectros rancorosos que sufocam o alvo. Seu poder varia dependendo do movimento original." + 'never-EndingNightmarePhysical': { + name: 'Never-Ending Nightmare', + effect: 'Utilizando o Poder Z, o usuário invoca espectros rancorosos que sufocam o alvo. Seu poder varia dependendo do movimento original.' }, - "never-EndingNightmareSpecial": { - name: "Never-Ending Nightmare", - effect: "Dummy Data" + 'never-EndingNightmareSpecial': { + name: 'Never-Ending Nightmare', + effect: 'Dummy Data' }, - "corkscrewCrashPhysical": { - name: "Corkscrew Crash", - effect: "Utilizando o Poder Z, o usuário gira rapidamente e ataca o alvo com força total. Seu poder varia dependendo do movimento original." + 'corkscrewCrashPhysical': { + name: 'Corkscrew Crash', + effect: 'Utilizando o Poder Z, o usuário gira rapidamente e ataca o alvo com força total. Seu poder varia dependendo do movimento original.' }, - "corkscrewCrashSpecial": { - name: "Corkscrew Crash", - effect: "Dummy Data" + 'corkscrewCrashSpecial': { + name: 'Corkscrew Crash', + effect: 'Dummy Data' }, - "infernoOverdrivePhysical": { - name: "Inferno Overdrive", - effect: "Utilizando o Poder Z, o usuário cospe uma enorme labareda ardente contra o alvo com força total. Seu poder varia dependendo do movimento original." + 'infernoOverdrivePhysical': { + name: 'Inferno Overdrive', + effect: 'Utilizando o Poder Z, o usuário cospe uma enorme labareda ardente contra o alvo com força total. Seu poder varia dependendo do movimento original.' }, - "infernoOverdriveSpecial": { - name: "Inferno Overdrive", - effect: "Dummy Data" + 'infernoOverdriveSpecial': { + name: 'Inferno Overdrive', + effect: 'Dummy Data' }, - "hydroVortexPhysical": { - name: "Hydro Vortex", - effect: "Utilizando o Poder Z, o usuário cria um intenso turbilhão que engole o alvo com força total. Seu poder varia dependendo do movimento original." + 'hydroVortexPhysical': { + name: 'Hydro Vortex', + effect: 'Utilizando o Poder Z, o usuário cria um intenso turbilhão que engole o alvo com força total. Seu poder varia dependendo do movimento original.' }, - "hydroVortexSpecial": { - name: "Hydro Vortex", - effect: "Dummy Data" + 'hydroVortexSpecial': { + name: 'Hydro Vortex', + effect: 'Dummy Data' }, - "bloomDoomPhysical": { - name: "Bloom Doom", - effect: "Utilizando o Poder Z, o usuário absorve a energia vital do ambiente e ataca o alvo com força total. Seu poder varia dependendo do movimento original." + 'bloomDoomPhysical': { + name: 'Bloom Doom', + effect: 'Utilizando o Poder Z, o usuário absorve a energia vital do ambiente e ataca o alvo com força total. Seu poder varia dependendo do movimento original.' }, - "bloomDoomSpecial": { - name: "Bloom Doom", - effect: "Dummy Data" + 'bloomDoomSpecial': { + name: 'Bloom Doom', + effect: 'Dummy Data' }, - "gigavoltHavocPhysical": { - name: "Gigavolt Havoc", - effect: "Utilizando o Poder Z, o usuário concentra uma corrente elétrica carregada e atinge o alvo. Seu poder varia dependendo do movimento original." + 'gigavoltHavocPhysical': { + name: 'Gigavolt Havoc', + effect: 'Utilizando o Poder Z, o usuário concentra uma corrente elétrica carregada e atinge o alvo. Seu poder varia dependendo do movimento original.' }, - "gigavoltHavocSpecial": { - name: "Gigavolt Havoc", - effect: "Dummy Data" + 'gigavoltHavocSpecial': { + name: 'Gigavolt Havoc', + effect: 'Dummy Data' }, - "shatteredPsychePhysical": { - name: "Shattered Psyche", - effect: "Utilizando o Poder Z, o usuário manipula a cabeça do alvo e destrói-o mentalmente. Seu poder varia dependendo do movimento original." + 'shatteredPsychePhysical': { + name: 'Shattered Psyche', + effect: 'Utilizando o Poder Z, o usuário manipula a cabeça do alvo e destrói-o mentalmente. Seu poder varia dependendo do movimento original.' }, - "shatteredPsycheSpecial": { - name: "Shattered Psyche", - effect: "Dummy Data" + 'shatteredPsycheSpecial': { + name: 'Shattered Psyche', + effect: 'Dummy Data' }, - "subzeroSlammerPhysical": { - name: "Subzero Slammer", - effect: "Utilizando o Poder Z, o usuário lança um raio de gelo que reduz a temperatura do alvo a zero. Seu poder varia dependendo do movimento original." + 'subzeroSlammerPhysical': { + name: 'Subzero Slammer', + effect: 'Utilizando o Poder Z, o usuário lança um raio de gelo que reduz a temperatura do alvo a zero. Seu poder varia dependendo do movimento original.' }, - "subzeroSlammerSpecial": { - name: "Subzero Slammer", - effect: "Dummy Data" + 'subzeroSlammerSpecial': { + name: 'Subzero Slammer', + effect: 'Dummy Data' }, - "devastatingDrakePhysical": { - name: "Devastating Drake", - effect: "Utilizando o Poder Z, o usuário materializa sua aura, que ataca o alvo com força total. Seu poder varia dependendo do movimento original." + 'devastatingDrakePhysical': { + name: 'Devastating Drake', + effect: 'Utilizando o Poder Z, o usuário materializa sua aura, que ataca o alvo com força total. Seu poder varia dependendo do movimento original.' }, - "devastatingDrakeSpecial": { - name: "Devastating Drake", - effect: "Dummy Data" + 'devastatingDrakeSpecial': { + name: 'Devastating Drake', + effect: 'Dummy Data' }, - "blackHoleEclipsePhysical": { - name: "Black Hole Eclipse", - effect: "Utilizando o Poder Z, o usuário cria um buraco negro que engole o alvo. Seu poder varia dependendo do movimento original." + 'blackHoleEclipsePhysical': { + name: 'Black Hole Eclipse', + effect: 'Utilizando o Poder Z, o usuário cria um buraco negro que engole o alvo. Seu poder varia dependendo do movimento original.' }, - "blackHoleEclipseSpecial": { - name: "Black Hole Eclipse", - effect: "Dummy Data" + 'blackHoleEclipseSpecial': { + name: 'Black Hole Eclipse', + effect: 'Dummy Data' }, - "twinkleTacklePhysical": { - name: "Twinkle Tackle", - effect: "Utilizando o Poder Z, o usuário cria uma dimensão graciosa que deixa o alvo a sua mercê. Seu poder varia dependendo do movimento original." + 'twinkleTacklePhysical': { + name: 'Twinkle Tackle', + effect: 'Utilizando o Poder Z, o usuário cria uma dimensão graciosa que deixa o alvo a sua mercê. Seu poder varia dependendo do movimento original.' }, - "twinkleTackleSpecial": { - name: "Twinkle Tackle", - effect: "Dummy Data" + 'twinkleTackleSpecial': { + name: 'Twinkle Tackle', + effect: 'Dummy Data' }, - "catastropika": { - name: "Catastropika", - effect: "Utilizando seu Poder Z, Pikachu acumula o máximo de eletricidade que seu corpo suporta e pula no alvo com força total." + 'catastropika': { + name: 'Catastropika', + effect: 'Utilizando seu Poder Z, Pikachu acumula o máximo de eletricidade que seu corpo suporta e pula no alvo com força total.' }, - "shoreUp": { - name: "Shore Up", - effect: "Recupera metade dos PS do usuário. Durante uma Tempestade de Areia, recupera um pouco mais." + 'shoreUp': { + name: 'Shore Up', + effect: 'Recupera metade dos PS do usuário. Durante uma Tempestade de Areia, recupera um pouco mais.' }, - "firstImpression": { - name: "First Impression", - effect: "Embora esse movimento seja poderoso, ele funciona apenas na primeira rodada em que o usuário está em batalha." + 'firstImpression': { + name: 'First Impression', + effect: 'Embora esse movimento seja poderoso, ele funciona apenas na primeira rodada em que o usuário está em batalha.' }, - "banefulBunker": { - name: "Baneful Bunker", - effect: "Além de proteger o usuário de ataques, este movimento também envenena qualquer um que fizer contato direto." + 'banefulBunker': { + name: 'Baneful Bunker', + effect: 'Além de proteger o usuário de ataques, este movimento também envenena qualquer um que fizer contato direto.' }, - "spiritShackle": { - name: "Spirit Shackle", - effect: "O usuário ataca enquanto fisga simultaneamente a sombra do alvo e impede ele de escapar." + 'spiritShackle': { + name: 'Spirit Shackle', + effect: 'O usuário ataca enquanto fisga simultaneamente a sombra do alvo e impede ele de escapar.' }, - "darkestLariat": { - name: "Darkest Lariat", - effect: "O usuário balança os dois braços e acerta o alvo. As mudanças de atributos do alvo não afetam o dano deste ataque." + 'darkestLariat': { + name: 'Darkest Lariat', + effect: 'O usuário balança os dois braços e acerta o alvo. As mudanças de atributos do alvo não afetam o dano deste ataque.' }, - "sparklingAria": { - name: "Sparkling Aria", - effect: "Libera borbulhas ao cantar. Se um Pokémon estiver queimado, ele será curado pelo toque das bolhas." + 'sparklingAria': { + name: 'Sparkling Aria', + effect: 'Libera borbulhas ao cantar. Se um Pokémon estiver queimado, ele será curado pelo toque das bolhas.' }, - "iceHammer": { - name: "Ice Hammer", - effect: "O usuário gira seu corpo e bate com seus fortes e pesados punhos. Isso diminui a Velocidade do usuário." + 'iceHammer': { + name: 'Ice Hammer', + effect: 'O usuário gira seu corpo e bate com seus fortes e pesados punhos. Isso diminui a Velocidade do usuário.' }, - "floralHealing": { - name: "Floral Healing", - effect: "O usuário restaura os PS do alvo até metade a dos seus PS máximo. Ele restaura mais HP quando o terreno é de grama." + 'floralHealing': { + name: 'Floral Healing', + effect: 'O usuário restaura os PS do alvo até metade a dos seus PS máximo. Ele restaura mais HP quando o terreno é de grama.' }, - "highHorsepower": { - name: "High Horsepower", - effect: "O usuário ataca ferozmente o alvo usando todo o seu corpo." + 'highHorsepower': { + name: 'High Horsepower', + effect: 'O usuário ataca ferozmente o alvo usando todo o seu corpo.' }, - "strengthSap": { - name: "Strength Sap", - effect: "O usuário restaura seus PS em uma quantidade igual ao atributo de Ataque do alvo. Também diminui o atributo de Ataque do alvo." + 'strengthSap': { + name: 'Strength Sap', + effect: 'O usuário restaura seus PS em uma quantidade igual ao atributo de Ataque do alvo. Também diminui o atributo de Ataque do alvo.' }, - "solarBlade": { - name: "Solar Blade", - effect: "O usuário absorve luz e concentra-a em forma de lâmina com a energia absorvida no primeiro turno e atacando o alvo no próximo turno." + 'solarBlade': { + name: 'Solar Blade', + effect: 'O usuário absorve luz e concentra-a em forma de lâmina com a energia absorvida no primeiro turno e atacando o alvo no próximo turno.' }, - "leafage": { - name: "Leafage", - effect: "O usuário ataca lançando folhas no alvo." + 'leafage': { + name: 'Leafage', + effect: 'O usuário ataca lançando folhas no alvo.' }, - "spotlight": { - name: "Spotlight", - effect: "O usuário direciona o foco no alvo para que apenas ele seja atacado durante o turno." + 'spotlight': { + name: 'Spotlight', + effect: 'O usuário direciona o foco no alvo para que apenas ele seja atacado durante o turno.' }, - "toxicThread": { - name: "Toxic Thread", - effect: "O usuário dispara fios venenosos para envenenar o alvo e diminuir sua Velocidade." + 'toxicThread': { + name: 'Toxic Thread', + effect: 'O usuário dispara fios venenosos para envenenar o alvo e diminuir sua Velocidade.' }, - "laserFocus": { - name: "Laser Focus", - effect: "O usuário se concentra intensamente. O ataque no próximo turno sempre resultará em um golpe crítico." + 'laserFocus': { + name: 'Laser Focus', + effect: 'O usuário se concentra intensamente. O ataque no próximo turno sempre resultará em um golpe crítico.' }, - "gearUp": { - name: "Gear Up", - effect: "O usuário engata suas engrenagens para aumentar os atributos de Ataque e Ataque Esp. de Pokémon aliados com as Habilidades Mais ou Menos." + 'gearUp': { + name: 'Gear Up', + effect: 'O usuário engata suas engrenagens para aumentar os atributos de Ataque e Ataque Esp. de Pokémon aliados com as Habilidades Mais ou Menos.' }, - "throatChop": { - name: "Throat Chop", - effect: "O usuário acerta a garganta do alvo, e a dor resultante impede que o alvo use movimentos que emitam som por dois turnos." + 'throatChop': { + name: 'Throat Chop', + effect: 'O usuário acerta a garganta do alvo, e a dor resultante impede que o alvo use movimentos que emitam som por dois turnos.' }, - "pollenPuff": { - name: "Pollen Puff", - effect: "O usuário ataca o inimigo com uma bola de pólen explosiva. Se o alvo for um aliado, ele recebe uma bola de pólen que restaura seus PS em vez disso." + 'pollenPuff': { + name: 'Pollen Puff', + effect: 'O usuário ataca o inimigo com uma bola de pólen explosiva. Se o alvo for um aliado, ele recebe uma bola de pólen que restaura seus PS em vez disso.' }, - "anchorShot": { - name: "Anchor Shot", - effect: "O usuário revolve o alvo com a corrente de sua âncora enquanto ataca. O alvo se torna incapaz de fugir." + 'anchorShot': { + name: 'Anchor Shot', + effect: 'O usuário revolve o alvo com a corrente de sua âncora enquanto ataca. O alvo se torna incapaz de fugir.' }, - "psychicTerrain": { - name: "Psychic Terrain", - effect: "Protege o Pokémon no terreno de movimentos de prioridade e aumenta o poder dos movimentos do tipo Psíquico por cinco turnos." + 'psychicTerrain': { + name: 'Psychic Terrain', + effect: 'Protege o Pokémon no terreno de movimentos de prioridade e aumenta o poder dos movimentos do tipo Psíquico por cinco turnos.' }, - "lunge": { - name: "Lunge", - effect: "O usuário faz uma estocada no alvo, atacando com força total. Isso também diminui o Ataque do alvo." + 'lunge': { + name: 'Lunge', + effect: 'O usuário faz uma estocada no alvo, atacando com força total. Isso também diminui o Ataque do alvo.' }, - "fireLash": { - name: "Fire Lash", - effect: "O usuário atinge o alvo com um chicote em chamas. Também diminui a Defesa do alvo." + 'fireLash': { + name: 'Fire Lash', + effect: 'O usuário atinge o alvo com um chicote em chamas. Também diminui a Defesa do alvo.' }, - "powerTrip": { - name: "Power Trip", - effect: "O usuário ostenta sua força e ataca o alvo. Quanto mais os atributos do usuário forem aumentados, maior será o poder do movimento." + 'powerTrip': { + name: 'Power Trip', + effect: 'O usuário ostenta sua força e ataca o alvo. Quanto mais os atributos do usuário forem aumentados, maior será o poder do movimento.' }, - "burnUp": { - name: "Burn Up", - effect: "Para infligir um dano massivo, o usuário se exaure. Após usar esse movimento, o usuário não será mais do tipo Fogo." + 'burnUp': { + name: 'Burn Up', + effect: 'Para infligir um dano massivo, o usuário se exaure. Após usar esse movimento, o usuário não será mais do tipo Fogo.' }, - "speedSwap": { - name: "Speed Swap", - effect: "O usuário troca os atributos de Velocidade com o alvo." + 'speedSwap': { + name: 'Speed Swap', + effect: 'O usuário troca os atributos de Velocidade com o alvo.' }, - "smartStrike": { - name: "Smart Strike", - effect: "O usuário perfura o alvo com um chifre afiado. Esse ataque nunca erra." + 'smartStrike': { + name: 'Smart Strike', + effect: 'O usuário perfura o alvo com um chifre afiado. Esse ataque nunca erra.' }, - "purify": { - name: "Purify", - effect: "O usuário cura a condição de estado do alvo. Se o movimento for bem-sucedido, também recupera os PS do usuário." + 'purify': { + name: 'Purify', + effect: 'O usuário cura a condição de estado do alvo. Se o movimento for bem-sucedido, também recupera os PS do usuário.' }, - "revelationDance": { - name: "Revelation Dance", - effect: "O usuário ataca o alvo dançando intensamente. O tipo do usuário determina o tipo deste movimento." + 'revelationDance': { + name: 'Revelation Dance', + effect: 'O usuário ataca o alvo dançando intensamente. O tipo do usuário determina o tipo deste movimento.' }, - "coreEnforcer": { - name: "Core Enforcer", - effect: "Se os Pokémon nos quais o usuário causou dano já tiverem usado seus movimentos, esse movimento elimina o efeito da Habilidade do alvo." + 'coreEnforcer': { + name: 'Core Enforcer', + effect: 'Se os Pokémon nos quais o usuário causou dano já tiverem usado seus movimentos, esse movimento elimina o efeito da Habilidade do alvo.' }, - "tropKick": { - name: "Trop Kick", - effect: "O usuário desfere um chute intenso de origens tropicais no alvo. Também diminui o Ataque do alvo." + 'tropKick': { + name: 'Trop Kick', + effect: 'O usuário desfere um chute intenso de origens tropicais no alvo. Também diminui o Ataque do alvo.' }, - "instruct": { - name: "Instruct", - effect: "O usuário instrui o alvo a usar novamente o seu último movimento usado." + 'instruct': { + name: 'Instruct', + effect: 'O usuário instrui o alvo a usar novamente o seu último movimento usado.' }, - "beakBlast": { - name: "Beak Blast", - effect: "O usuário aquece o bico e depois ataca o alvo. Fazer contato direto com o Pokémon enquanto ele aquece o bico resultará em queimadura." + 'beakBlast': { + name: 'Beak Blast', + effect: 'O usuário aquece o bico e depois ataca o alvo. Fazer contato direto com o Pokémon enquanto ele aquece o bico resultará em queimadura.' }, - "clangingScales": { - name: "Clanging Scales", - effect: "O usuário esfrega as escamas de todo o seu corpo e faz um estrondo para machucar o Pokémon oponente. A Defesa do usuário diminui após o ataque." + 'clangingScales': { + name: 'Clanging Scales', + effect: 'O usuário esfrega as escamas de todo o seu corpo e faz um estrondo para machucar o Pokémon oponente. A Defesa do usuário diminui após o ataque.' }, - "dragonHammer": { - name: "Dragon Hammer", - effect: "O usuário usa seu corpo como um martelo para atacar o alvo e causar dano." + 'dragonHammer': { + name: 'Dragon Hammer', + effect: 'O usuário usa seu corpo como um martelo para atacar o alvo e causar dano.' }, - "brutalSwing": { - name: "Brutal Swing", - effect: "O usuário balança o corpo violentamente para infligir dano a tudo em seu redor." + 'brutalSwing': { + name: 'Brutal Swing', + effect: 'O usuário balança o corpo violentamente para infligir dano a tudo em seu redor.' }, - "auroraVeil": { - name: "Aurora Veil", - effect: "Esse movimento reduz o dano de movimentos físicos e especiais por cinco turnos. Só pode ser usado durante uma tempestade de granizo." + 'auroraVeil': { + name: 'Aurora Veil', + effect: 'Esse movimento reduz o dano de movimentos físicos e especiais por cinco turnos. Só pode ser usado durante uma tempestade de granizo.' }, - "sinisterArrowRaid": { - name: "Sinister Arrow Raid", - effect: "Utilizando o Poder Z, Decidueye cria incontáveis flechas e dispara-as contra o alvo com força total." + 'sinisterArrowRaid': { + name: 'Sinister Arrow Raid', + effect: 'Utilizando o Poder Z, Decidueye cria incontáveis flechas e dispara-as contra o alvo com força total.' }, - "maliciousMoonsault": { - name: "Malicious Moonsault", - effect: "Utilizando o Poder Z, Incineroar fortalece seu corpo e pula no alvo com força total." + 'maliciousMoonsault': { + name: 'Malicious Moonsault', + effect: 'Utilizando o Poder Z, Incineroar fortalece seu corpo e pula no alvo com força total.' }, - "oceanicOperetta": { - name: "Oceanic Operetta", - effect: "Utilizando o Poder Z, Primarina convoca uma quantidade massiva de água e lança contra o alvo com força total." + 'oceanicOperetta': { + name: 'Oceanic Operetta', + effect: 'Utilizando o Poder Z, Primarina convoca uma quantidade massiva de água e lança contra o alvo com força total.' }, - "guardianOfAlola": { - name: "Guardian of Alola", - effect: "Utilizando o Poder Z, o Espírito Nativo canaliza a energia de Alola e ataca o alvo com força total. Reduz muito os PS do alvo." + 'guardianOfAlola': { + name: 'Guardian of Alola', + effect: 'Utilizando o Poder Z, o Espírito Nativo canaliza a energia de Alola e ataca o alvo com força total. Reduz muito os PS do alvo.' }, - "soul-Stealing7-StarStrike": { - name: "Soul-Stealing 7-Star Strike", - effect: "Quando um Marshadow obtém o Poder Z, ele ataca o alvo consecutivamente com socos e chutes usando força total." + 'soul-Stealing7-StarStrike': { + name: 'Soul-Stealing 7-Star Strike', + effect: 'Quando um Marshadow obtém o Poder Z, ele ataca o alvo consecutivamente com socos e chutes usando força total.' }, - "stokedSparksurfer": { - name: "Stoked Sparksurfer", - effect: "Quando um Raichu de Alola obtém o Poder Z, ele lança um ataque contra o alvo com força total. Este movimento deixa o alvo paralisado." + 'stokedSparksurfer': { + name: 'Stoked Sparksurfer', + effect: 'Quando um Raichu de Alola obtém o Poder Z, ele lança um ataque contra o alvo com força total. Este movimento deixa o alvo paralisado.' }, - "pulverizingPancake": { - name: "Pulverizing Pancake", - effect: "O Poder Z desperta as capacidades máximas de seu Snorlax. O Pokémon movimenta seu enorme corpo velozmente e ataca o alvo com força total." + 'pulverizingPancake': { + name: 'Pulverizing Pancake', + effect: 'O Poder Z desperta as capacidades máximas de seu Snorlax. O Pokémon movimenta seu enorme corpo velozmente e ataca o alvo com força total.' }, - "extremeEvoboost": { - name: "Extreme Evoboost", - effect: "Quando um Eevee obtém o Poder Z, ele absorve energia dos seus amigos evoluídos e aumenta os seus atributos bruscamente." + 'extremeEvoboost': { + name: 'Extreme Evoboost', + effect: 'Quando um Eevee obtém o Poder Z, ele absorve energia dos seus amigos evoluídos e aumenta os seus atributos bruscamente.' }, - "genesisSupernova": { - name: "Genesis Supernova", - effect: "Quando um Mew obtém o Poder Z, ele ataca o alvo com força total. O terreno será carregado com energia psíquica." + 'genesisSupernova': { + name: 'Genesis Supernova', + effect: 'Quando um Mew obtém o Poder Z, ele ataca o alvo com força total. O terreno será carregado com energia psíquica.' }, - "shellTrap": { - name: "Shell Trap", - effect: "O usuário arma uma cilada explosiva. Se o usuário for atingido fisicamente, a cilada irá explodir e causar de dano ao Pokémon oponente." + 'shellTrap': { + name: 'Shell Trap', + effect: 'O usuário arma uma cilada explosiva. Se o usuário for atingido fisicamente, a cilada irá explodir e causar de dano ao Pokémon oponente.' }, - "fleurCannon": { - name: "Fleur Cannon", - effect: "O usuário dispara um raio poderoso. O efeito colateral do ataque prejudica duramente o Ataque Especial do usuário." + 'fleurCannon': { + name: 'Fleur Cannon', + effect: 'O usuário dispara um raio poderoso. O efeito colateral do ataque prejudica duramente o Ataque Especial do usuário.' }, - "psychicFangs": { - name: "Psychic Fangs", - effect: "O usuário morde o alvo com suas capacidades psíquicas. Pode destruir Tela de Luz e Refletir." + 'psychicFangs': { + name: 'Psychic Fangs', + effect: 'O usuário morde o alvo com suas capacidades psíquicas. Pode destruir Tela de Luz e Refletir.' }, - "stompingTantrum": { - name: "Stomping Tantrum", - effect: "Guiado pela frustração, o usuário ataca o alvo. Se o movimento anterior falhou, o poder do movimento é dobrado." + 'stompingTantrum': { + name: 'Stomping Tantrum', + effect: 'Guiado pela frustração, o usuário ataca o alvo. Se o movimento anterior falhou, o poder do movimento é dobrado.' }, - "shadowBone": { - name: "Shadow Bone", - effect: "O usuário ataca o alvo com um osso que contém um espírito. Pode diminuir a Defesa do alvo." + 'shadowBone': { + name: 'Shadow Bone', + effect: 'O usuário ataca o alvo com um osso que contém um espírito. Pode diminuir a Defesa do alvo.' }, - "accelerock": { - name: "Accelerock", - effect: "O usuário colide contra o alvo em alta velocidade. Esse movimento sempre ataca primeiro." + 'accelerock': { + name: 'Accelerock', + effect: 'O usuário colide contra o alvo em alta velocidade. Esse movimento sempre ataca primeiro.' }, - "liquidation": { - name: "Liquidation", - effect: "O usuário dispara no alvo um jato d'água poderoso. Diminui a Defesa do alvo." + 'liquidation': { + name: 'Liquidation', + effect: 'O usuário dispara no alvo um jato d\'água poderoso. Diminui a Defesa do alvo.' }, - "prismaticLaser": { - name: "Prismatic Laser", - effect: "O usuário dispara lasers poderosos usando o poder de um prisma. O usuário não pode se mover no próximo turno." + 'prismaticLaser': { + name: 'Prismatic Laser', + effect: 'O usuário dispara lasers poderosos usando o poder de um prisma. O usuário não pode se mover no próximo turno.' }, - "spectralThief": { - name: "Spectral Thief", - effect: "O usuário se esconde na sombra do alvo, rouba seus aumentos de atributos e então, ataca-o." + 'spectralThief': { + name: 'Spectral Thief', + effect: 'O usuário se esconde na sombra do alvo, rouba seus aumentos de atributos e então, ataca-o.' }, - "sunsteelStrike": { - name: "Sunsteel Strike", - effect: "O usuário atinge o alvo com a força de um meteoro. Esse movimento pode ser usado no alvo independentemente de sua Habilidade." + 'sunsteelStrike': { + name: 'Sunsteel Strike', + effect: 'O usuário atinge o alvo com a força de um meteoro. Esse movimento pode ser usado no alvo independentemente de sua Habilidade.' }, - "moongeistBeam": { - name: "Moongeist Beam", - effect: "O usuário emite um raio pavoroso para atacar o alvo. Esse movimento pode ser usado no alvo independentemente de sua Habilidade." + 'moongeistBeam': { + name: 'Moongeist Beam', + effect: 'O usuário emite um raio pavoroso para atacar o alvo. Esse movimento pode ser usado no alvo independentemente de sua Habilidade.' }, - "tearfulLook": { - name: "Tearful Look", - effect: "O usuário fica manhoso e o alvo perde a vontade de lutar. Diminui o Ataque e o Ataque Esp. do alvo." + 'tearfulLook': { + name: 'Tearful Look', + effect: 'O usuário fica manhoso e o alvo perde a vontade de lutar. Diminui o Ataque e o Ataque Esp. do alvo.' }, - "zingZap": { - name: "Zing Zap", - effect: "Uma forte explosão elétrica que cai sobre o alvo, eletrocutando-o e podendo fazê-lo hesitar." + 'zingZap': { + name: 'Zing Zap', + effect: 'Uma forte explosão elétrica que cai sobre o alvo, eletrocutando-o e podendo fazê-lo hesitar.' }, - "nature’SMadness": { - name: "Nature’s Madness", - effect: "O usuário atinge o alvo com a força da natureza. Reduz os PS do alvo pela metade." + 'nature’SMadness': { + name: 'Nature’s Madness', + effect: 'O usuário atinge o alvo com a força da natureza. Reduz os PS do alvo pela metade.' }, - "multi-Attack": { - name: "Multi-Attack", - effect: "Se envolvendo em energia concentrada, o usuário acerta o alvo. A memória segurada determina o tipo do movimento." + 'multi-Attack': { + name: 'Multi-Attack', + effect: 'Se envolvendo em energia concentrada, o usuário acerta o alvo. A memória segurada determina o tipo do movimento.' }, - "10,000,000VoltThunderbolt": { - name: "10,000,000 Volt Thunderbolt", - effect: "Usando seu Poder Z, o Pikachu de boné acumula eletricidade e despeja-a. Golpes críticos acertam mais facilmente." + '10,000,000VoltThunderbolt': { + name: '10,000,000 Volt Thunderbolt', + effect: 'Usando seu Poder Z, o Pikachu de boné acumula eletricidade e despeja-a. Golpes críticos acertam mais facilmente.' }, mindBlown: { - name: "Mind Blown", - effect: "O usuário ataca tudo ao seu redor fazendo sua própria cabeça explodir. Isso também causa dano ao usuário." + name: 'Mind Blown', + effect: 'O usuário ataca tudo ao seu redor fazendo sua própria cabeça explodir. Isso também causa dano ao usuário.' }, plasmaFists: { - name: "Plasma Fists", - effect: "O usuário ataca com punhos carregados eletricamente. Este movimento transforma movimentos do tipo Normal em movimentos do tipo Elétrico." + name: 'Plasma Fists', + effect: 'O usuário ataca com punhos carregados eletricamente. Este movimento transforma movimentos do tipo Normal em movimentos do tipo Elétrico.' }, photonGeyser: { - name: "Photon Geyser", - effect: "O usuário ataca o alvo com um pilar de luz. Este movimento causa dano de Ataque ou Ataque Especial—o que for maior para o usuário." + name: 'Photon Geyser', + effect: 'O usuário ataca o alvo com um pilar de luz. Este movimento causa dano de Ataque ou Ataque Especial—o que for maior para o usuário.' }, lightThatBurnsTheSky: { - name: "Light That Burns the Sky", - effect: "Este ataque causa dano de Ataque ou Ataque Especial—o que for maior para o usuário, Necrozma. Este movimento ignora a Habilidade do alvo." + name: 'Light That Burns the Sky', + effect: 'Este ataque causa dano de Ataque ou Ataque Especial—o que for maior para o usuário, Necrozma. Este movimento ignora a Habilidade do alvo.' }, searingSunrazeSmash: { - name: "Searing Sunraze Smash", - effect: "Após obter o Z-Power, o usuário, Solgaleo, ataca o alvo com força total. Este movimento pode ignorar o efeito da Habilidade do alvo." + name: 'Searing Sunraze Smash', + effect: 'Após obter o Z-Power, o usuário, Solgaleo, ataca o alvo com força total. Este movimento pode ignorar o efeito da Habilidade do alvo.' }, menacingMoonrazeMaelstrom: { - name: "Menacing Moonraze Maelstrom", - effect: "Após obter o Z-Power, o usuário, Lunala, ataca o alvo com força total. Este movimento pode ignorar o efeito da Habilidade do alvo." + name: 'Menacing Moonraze Maelstrom', + effect: 'Após obter o Z-Power, o usuário, Lunala, ataca o alvo com força total. Este movimento pode ignorar o efeito da Habilidade do alvo.' }, letsSnuggleForever: { - name: "Let's Snuggle Forever", - effect: "Após obter o Z-Power, o usuário, Mimikyu, soca o alvo com força total." + name: 'Let\'s Snuggle Forever', + effect: 'Após obter o Z-Power, o usuário, Mimikyu, soca o alvo com força total.' }, splinteredStormshards: { - name: "Splintered Stormshards", - effect: "Após obter o Z-Power, o usuário, Lycanroc, ataca o alvo com força total. Este movimento nega o efeito no campo de batalha." + name: 'Splintered Stormshards', + effect: 'Após obter o Z-Power, o usuário, Lycanroc, ataca o alvo com força total. Este movimento nega o efeito no campo de batalha.' }, clangorousSoulblaze: { - name: "Clangorous Soulblaze", - effect: "Após obter o Z-Power, o usuário, Kommo-o, ataca os Pokémon adversários com força total. Este movimento aumenta os atributos do usuário." + name: 'Clangorous Soulblaze', + effect: 'Após obter o Z-Power, o usuário, Kommo-o, ataca os Pokémon adversários com força total. Este movimento aumenta os atributos do usuário.' }, zippyZap: { - name: "Zippy Zap", - effect: "The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user's evasiveness." + name: 'Zippy Zap', + effect: 'The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user\'s evasiveness.' }, splishySplash: { - name: "Splishy Splash", - effect: "O usuário carrega uma onda enorme com eletricidade e atinge os Pokémon adversários com a onda. Isso também pode deixar os Pokémon adversários paralisados." + name: 'Splishy Splash', + effect: 'O usuário carrega uma onda enorme com eletricidade e atinge os Pokémon adversários com a onda. Isso também pode deixar os Pokémon adversários paralisados.' }, floatyFall: { - name: "Floaty Fall", - effect: "O usuário flutua no ar e então mergulha em um ângulo íngreme para atacar o alvo. Isso também pode fazer o alvo hesitar." + name: 'Floaty Fall', + effect: 'O usuário flutua no ar e então mergulha em um ângulo íngreme para atacar o alvo. Isso também pode fazer o alvo hesitar.' }, pikaPapow: { - name: "Pika Papow", - effect: "Quanto mais o Pikachu ama seu Treinador, maior o poder do movimento. Nunca erra." + name: 'Pika Papow', + effect: 'Quanto mais o Pikachu ama seu Treinador, maior o poder do movimento. Nunca erra.' }, bouncyBubble: { - name: "Bouncy Bubble", - effect: "O usuário ataca atirando bolhas de água no alvo. Em seguida, absorve água e restaura seu HP pela metade do dano causado ao alvo." + name: 'Bouncy Bubble', + effect: 'O usuário ataca atirando bolhas de água no alvo. Em seguida, absorve água e restaura seu HP pela metade do dano causado ao alvo.' }, buzzyBuzz: { - name: "Buzzy Buzz", - effect: "O usuário dispara um choque de eletricidade para atacar o alvo. Isso também deixa o alvo paralisado." + name: 'Buzzy Buzz', + effect: 'O usuário dispara um choque de eletricidade para atacar o alvo. Isso também deixa o alvo paralisado.' }, sizzlySlide: { - name: "Sizzly Slide", - effect: "O usuário se envolve em fogo e carrega contra o alvo. Isso também deixa o alvo queimado." + name: 'Sizzly Slide', + effect: 'O usuário se envolve em fogo e carrega contra o alvo. Isso também deixa o alvo queimado.' }, glitzyGlow: { - name: "Glitzy Glow", - effect: "O usuário bombardeia o alvo com força telecinética. Uma parede maravilhosa de luz é erguida para enfraquecer o poder dos movimentos especiais dos Pokémon adversários." + name: 'Glitzy Glow', + effect: 'O usuário bombardeia o alvo com força telecinética. Uma parede maravilhosa de luz é erguida para enfraquecer o poder dos movimentos especiais dos Pokémon adversários.' }, baddyBad: { - name: "Baddy Bad", - effect: "O usuário age mal e ataca o alvo. Uma parede maravilhosa de luz é erguida para enfraquecer o poder dos movimentos físicos dos Pokémon adversários." + name: 'Baddy Bad', + effect: 'O usuário age mal e ataca o alvo. Uma parede maravilhosa de luz é erguida para enfraquecer o poder dos movimentos físicos dos Pokémon adversários.' }, sappySeed: { - name: "Sappy Seed", - effect: "O usuário cresce um caule gigantesco que espalha sementes para atacar o alvo. As sementes drenam o HP do alvo a cada turno." + name: 'Sappy Seed', + effect: 'O usuário cresce um caule gigantesco que espalha sementes para atacar o alvo. As sementes drenam o HP do alvo a cada turno.' }, freezyFrost: { - name: "Freezy Frost", - effect: "O usuário ataca com um cristal feito de névoa congelada fria. Isso elimina todas as mudanças de atributo entre todos os Pokémon envolvidos na batalha." + name: 'Freezy Frost', + effect: 'O usuário ataca com um cristal feito de névoa congelada fria. Isso elimina todas as mudanças de atributo entre todos os Pokémon envolvidos na batalha.' }, sparklySwirl: { - name: "Sparkly Swirl", - effect: "O usuário ataca o alvo envolvendo-o com um redemoinho de um aroma esmagador. Isso também cura todas as condições de status do grupo do usuário." + name: 'Sparkly Swirl', + effect: 'O usuário ataca o alvo envolvendo-o com um redemoinho de um aroma esmagador. Isso também cura todas as condições de status do grupo do usuário.' }, veeveeVolley: { - name: "Veevee Volley", - effect: "Quanto mais o Eevee ama seu Treinador, maior o poder do movimento. Nunca erra." + name: 'Veevee Volley', + effect: 'Quanto mais o Eevee ama seu Treinador, maior o poder do movimento. Nunca erra.' }, doubleIronBash: { - name: "Double Iron Bash", - effect: "O usuário gira, centrando a porca hexagonal em seu peito e depois ataca com seus braços duas vezes seguidas. Isso também pode fazer o alvo hesitar." + name: 'Double Iron Bash', + effect: 'O usuário gira, centrando a porca hexagonal em seu peito e depois ataca com seus braços duas vezes seguidas. Isso também pode fazer o alvo hesitar.' }, maxGuard: { - name: "Max Guard", - effect: "Este movimento permite ao usuário proteger-se de todos os ataques. Sua chance de falhar aumenta se for usado em sucessão." + name: 'Max Guard', + effect: 'Este movimento permite ao usuário proteger-se de todos os ataques. Sua chance de falhar aumenta se for usado em sucessão.' }, dynamaxCannon: { - name: "Dynamax Cannon", - effect: "O usuário libera um forte feixe de seu núcleo. Este movimento causa o dobro do dano se o alvo estiver acima do nível 200." + name: 'Dynamax Cannon', + effect: 'O usuário libera um forte feixe de seu núcleo. Este movimento causa o dobro do dano se o alvo estiver acima do nível 200.' }, snipeShot: { - name: "Snipe Shot", - effect: "O usuário ignora os efeitos dos movimentos e Habilidades dos Pokémon adversários que atraem movimentos, permitindo que este movimento atinja o alvo escolhido." + name: 'Snipe Shot', + effect: 'O usuário ignora os efeitos dos movimentos e Habilidades dos Pokémon adversários que atraem movimentos, permitindo que este movimento atinja o alvo escolhido.' }, jawLock: { - name: "Jaw Lock", - effect: "Este movimento impede o usuário e o alvo de trocarem de lugar até que um deles desmaie. O efeito desaparece se qualquer um dos Pokémon deixar o campo." + name: 'Jaw Lock', + effect: 'Este movimento impede o usuário e o alvo de trocarem de lugar até que um deles desmaie. O efeito desaparece se qualquer um dos Pokémon deixar o campo.' }, stuffCheeks: { - name: "Stuff Cheeks", - effect: "O usuário come sua Fruta segurada, depois aumenta muito seu atributo de Defesa." + name: 'Stuff Cheeks', + effect: 'O usuário come sua Fruta segurada, depois aumenta muito seu atributo de Defesa.' }, noRetreat: { - name: "No Retreat", - effect: "Este movimento aumenta todos os atributos do usuário, mas impede o usuário de trocar de lugar ou fugir." + name: 'No Retreat', + effect: 'Este movimento aumenta todos os atributos do usuário, mas impede o usuário de trocar de lugar ou fugir.' }, tarShot: { - name: "Tar Shot", - effect: "O usuário derrama alcatrão pegajoso sobre o alvo, diminuindo o atributo de Velocidade do alvo. O alvo se torna mais fraco contra movimentos do tipo Fogo." + name: 'Tar Shot', + effect: 'O usuário derrama alcatrão pegajoso sobre o alvo, diminuindo o atributo de Velocidade do alvo. O alvo se torna mais fraco contra movimentos do tipo Fogo.' }, magicPowder: { - name: "Magic Powder", - effect: "O usuário espalha uma nuvem de pó mágico que muda o alvo para o tipo Psíquico." + name: 'Magic Powder', + effect: 'O usuário espalha uma nuvem de pó mágico que muda o alvo para o tipo Psíquico.' }, dragonDarts: { - name: "Dragon Darts", - effect: "O usuário ataca duas vezes usando Dreepy. Se houver dois alvos, este movimento atinge cada alvo uma vez." + name: 'Dragon Darts', + effect: 'O usuário ataca duas vezes usando Dreepy. Se houver dois alvos, este movimento atinge cada alvo uma vez.' }, teatime: { - name: "Teatime", - effect: "O usuário faz hora do chá com todos os Pokémon na batalha. Cada Pokémon come sua Fruta segurada." + name: 'Teatime', + effect: 'O usuário faz hora do chá com todos os Pokémon na batalha. Cada Pokémon come sua Fruta segurada.' }, octolock: { - name: "Octolock", - effect: "O usuário prende o alvo e impede que ele fuja. Este movimento também diminui os atributos de Defesa e Def. Esp. do alvo a cada turno." + name: 'Octolock', + effect: 'O usuário prende o alvo e impede que ele fuja. Este movimento também diminui os atributos de Defesa e Def. Esp. do alvo a cada turno.' }, boltBeak: { - name: "Bolt Beak", - effect: "O usuário fere o alvo com seu bico eletrificado. Se o usuário atacar antes do alvo, o poder deste movimento é dobrado." + name: 'Bolt Beak', + effect: 'O usuário fere o alvo com seu bico eletrificado. Se o usuário atacar antes do alvo, o poder deste movimento é dobrado.' }, fishiousRend: { - name: "Fishious Rend", - effect: "O usuário fere o alvo com suas brânquias duras. Se o usuário atacar antes do alvo, o poder deste movimento é dobrado." + name: 'Fishious Rend', + effect: 'O usuário fere o alvo com suas brânquias duras. Se o usuário atacar antes do alvo, o poder deste movimento é dobrado.' }, courtChange: { - name: "Court Change", - effect: "Com seu poder misterioso, o usuário troca os efeitos de cada lado do campo." + name: 'Court Change', + effect: 'Com seu poder misterioso, o usuário troca os efeitos de cada lado do campo.' }, maxFlare: { - name: "Max Flare", - effect: "Este é um ataque do tipo Fogo que Pokémon Dynamax usam. O usuário intensifica o sol por cinco turnos." + name: 'Max Flare', + effect: 'Este é um ataque do tipo Fogo que Pokémon Dynamax usam. O usuário intensifica o sol por cinco turnos.' }, maxFlutterby: { - name: "Max Flutterby", - effect: "Este é um ataque do tipo Inseto que Pokémon Dynamax usam. Isso diminui o atributo de Atq. Esp. do alvo." + name: 'Max Flutterby', + effect: 'Este é um ataque do tipo Inseto que Pokémon Dynamax usam. Isso diminui o atributo de Atq. Esp. do alvo.' }, maxLightning: { - name: "Max Lightning", - effect: "Este é um ataque do tipo Elétrico que Pokémon Dynamax usam. O usuário transforma o chão em Terreno Elétrico por cinco turnos." + name: 'Max Lightning', + effect: 'Este é um ataque do tipo Elétrico que Pokémon Dynamax usam. O usuário transforma o chão em Terreno Elétrico por cinco turnos.' }, maxStrike: { - name: "Max Strike", - effect: "Este é um ataque do tipo Normal que Pokémon Dynamax usam. Isso diminui o atributo de Velocidade do alvo." + name: 'Max Strike', + effect: 'Este é um ataque do tipo Normal que Pokémon Dynamax usam. Isso diminui o atributo de Velocidade do alvo.' }, maxKnuckle: { - name: "Max Knuckle", - effect: "Este é um ataque do tipo Lutador que Pokémon Dynamax usam. Isso aumenta os atributos de Ataque dos Pokémon aliados." + name: 'Max Knuckle', + effect: 'Este é um ataque do tipo Lutador que Pokémon Dynamax usam. Isso aumenta os atributos de Ataque dos Pokémon aliados.' }, maxPhantasm: { - name: "Max Phantasm", - effect: "Este é um ataque do tipo Fantasma que Pokémon Dynamax usam. Isso diminui o atributo de Defesa do alvo." + name: 'Max Phantasm', + effect: 'Este é um ataque do tipo Fantasma que Pokémon Dynamax usam. Isso diminui o atributo de Defesa do alvo.' }, maxHailstorm: { - name: "Max Hailstorm", - effect: "Este é um ataque do tipo Gelo que Pokémon Dynamax usam. O usuário convoca uma tempestade de granizo que dura cinco turnos." + name: 'Max Hailstorm', + effect: 'Este é um ataque do tipo Gelo que Pokémon Dynamax usam. O usuário convoca uma tempestade de granizo que dura cinco turnos.' }, maxOoze: { - name: "Max Ooze", - effect: "Este é um ataque do tipo Veneno que Pokémon Dynamax usam. Isso aumenta os atributos de Atq. Esp. dos Pokémon aliados." + name: 'Max Ooze', + effect: 'Este é um ataque do tipo Veneno que Pokémon Dynamax usam. Isso aumenta os atributos de Atq. Esp. dos Pokémon aliados.' }, maxGeyser: { - name: "Max Geyser", - effect: "Este é um ataque do tipo Água que Pokémon Dynamax usam. O usuário convoca uma chuva pesada que cai por cinco turnos." + name: 'Max Geyser', + effect: 'Este é um ataque do tipo Água que Pokémon Dynamax usam. O usuário convoca uma chuva pesada que cai por cinco turnos.' }, maxAirstream: { - name: "Max Airstream", - effect: "Este é um ataque do tipo Voador que Pokémon Dynamax usam. Isso aumenta os atributos de Velocidade dos Pokémon aliados." + name: 'Max Airstream', + effect: 'Este é um ataque do tipo Voador que Pokémon Dynamax usam. Isso aumenta os atributos de Velocidade dos Pokémon aliados.' }, maxStarfall: { - name: "Max Starfall", - effect: "Este é um ataque do tipo Fada que Pokémon Dynamax usam. O usuário transforma o chão em Terreno de Nevoeiro por cinco turnos." + name: 'Max Starfall', + effect: 'Este é um ataque do tipo Fada que Pokémon Dynamax usam. O usuário transforma o chão em Terreno de Nevoeiro por cinco turnos.' }, maxWyrmwind: { - name: "Max Wyrmwind", - effect: "Este é um ataque do tipo Dragão que Pokémon Dynamax usam. Isso diminui o atributo de Ataque do alvo." + name: 'Max Wyrmwind', + effect: 'Este é um ataque do tipo Dragão que Pokémon Dynamax usam. Isso diminui o atributo de Ataque do alvo.' }, maxMindstorm: { - name: "Max Mindstorm", - effect: "Este é um ataque do tipo Psíquico que Pokémon Dynamax usam. O usuário transforma o chão em Terreno Psíquico por cinco turnos." + name: 'Max Mindstorm', + effect: 'Este é um ataque do tipo Psíquico que Pokémon Dynamax usam. O usuário transforma o chão em Terreno Psíquico por cinco turnos.' }, maxRockfall: { - name: "Max Rockfall", - effect: "Este é um ataque do tipo Pedra que Pokémon Dynamax usam. O usuário convoca uma tempestade de areia que dura cinco turnos." + name: 'Max Rockfall', + effect: 'Este é um ataque do tipo Pedra que Pokémon Dynamax usam. O usuário convoca uma tempestade de areia que dura cinco turnos.' }, maxQuake: { - name: "Max Quake", - effect: "Este é um ataque do tipo Terra que Pokémon Dynamax usam. Isso aumenta os atributos de Def. Esp. dos Pokémon aliados." + name: 'Max Quake', + effect: 'Este é um ataque do tipo Terra que Pokémon Dynamax usam. Isso aumenta os atributos de Def. Esp. dos Pokémon aliados.' }, maxDarkness: { - name: "Max Darkness", - effect: "Este é um ataque do tipo Sombrio que Pokémon Dynamax usam. Isso diminui o atributo de Def. Esp. do alvo." + name: 'Max Darkness', + effect: 'Este é um ataque do tipo Sombrio que Pokémon Dynamax usam. Isso diminui o atributo de Def. Esp. do alvo.' }, maxOvergrowth: { - name: "Max Overgrowth", - effect: "Este é um ataque do tipo Grama que Pokémon Dynamax usam. O usuário transforma o chão em Terreno de Grama por cinco turnos." + name: 'Max Overgrowth', + effect: 'Este é um ataque do tipo Grama que Pokémon Dynamax usam. O usuário transforma o chão em Terreno de Grama por cinco turnos.' }, maxSteelspike: { - name: "Max Steelspike", - effect: "Este é um ataque do tipo Aço que Pokémon Dynamax usam. Isso aumenta os atributos de Defesa dos Pokémon aliados." + name: 'Max Steelspike', + effect: 'Este é um ataque do tipo Aço que Pokémon Dynamax usam. Isso aumenta os atributos de Defesa dos Pokémon aliados.' }, clangorousSoul: { - name: "Clangorous Soul", - effect: "O usuário aumenta todos os seus atributos usando um pouco de seu HP." + name: 'Clangorous Soul', + effect: 'O usuário aumenta todos os seus atributos usando um pouco de seu HP.' }, bodyPress: { - name: "Body Press", - effect: "O usuário ataca pressionando seu corpo contra o alvo. Quanto maior a Defesa do usuário, mais dano pode infligir ao alvo." + name: 'Body Press', + effect: 'O usuário ataca pressionando seu corpo contra o alvo. Quanto maior a Defesa do usuário, mais dano pode infligir ao alvo.' }, decorate: { - name: "Decorate", - effect: "O usuário aumenta muito os atributos de Ataque e Atq. Esp. do alvo decorando o alvo." + name: 'Decorate', + effect: 'O usuário aumenta muito os atributos de Ataque e Atq. Esp. do alvo decorando o alvo.' }, drumBeating: { - name: "Drum Beating", - effect: "O usuário toca seu tambor, controlando as raízes do tambor para atacar o alvo. Isso também diminui o atributo de Velocidade do alvo." + name: 'Drum Beating', + effect: 'O usuário toca seu tambor, controlando as raízes do tambor para atacar o alvo. Isso também diminui o atributo de Velocidade do alvo.' }, snapTrap: { - name: "Snap Trap", - effect: "O usuário prende o alvo em uma armadilha rápida por quatro ou cinco turnos." + name: 'Snap Trap', + effect: 'O usuário prende o alvo em uma armadilha rápida por quatro ou cinco turnos.' }, pyroBall: { - name: "Pyro Ball", - effect: "O usuário ataca acendendo uma pequena pedra e lançando-a como uma bola de fogo no alvo. Isso também pode deixar o alvo queimado." + name: 'Pyro Ball', + effect: 'O usuário ataca acendendo uma pequena pedra e lançando-a como uma bola de fogo no alvo. Isso também pode deixar o alvo queimado.' }, behemothBlade: { - name: "Behemoth Blade", - effect: "O usuário empunha uma espada grande e poderosa usando todo o seu corpo e corta o alvo em um ataque vigoroso." + name: 'Behemoth Blade', + effect: 'O usuário empunha uma espada grande e poderosa usando todo o seu corpo e corta o alvo em um ataque vigoroso.' }, behemothBash: { - name: "Behemoth Bash", - effect: "O corpo do usuário se torna um escudo firme e atinge o alvo com força." + name: 'Behemoth Bash', + effect: 'O corpo do usuário se torna um escudo firme e atinge o alvo com força.' }, auraWheel: { - name: "Aura Wheel", - effect: "Morpeko ataca e aumenta sua Velocidade com a energia armazenada em suas bochechas. O tipo deste movimento muda dependendo da forma do usuário." + name: 'Aura Wheel', + effect: 'Morpeko ataca e aumenta sua Velocidade com a energia armazenada em suas bochechas. O tipo deste movimento muda dependendo da forma do usuário.' }, breakingSwipe: { - name: "Breaking Swipe", - effect: "O usuário balança sua cauda dura violentamente e ataca os Pokémon adversários. Isso também diminui os atributos de Ataque deles." + name: 'Breaking Swipe', + effect: 'O usuário balança sua cauda dura violentamente e ataca os Pokémon adversários. Isso também diminui os atributos de Ataque deles.' }, branchPoke: { - name: "Branch Poke", - effect: "O usuário ataca o alvo cutucando-o com um galho pontiagudo." + name: 'Branch Poke', + effect: 'O usuário ataca o alvo cutucando-o com um galho pontiagudo.' }, overdrive: { - name: "Overdrive", - effect: "O usuário ataca os Pokémon adversários vibrando uma guitarra ou baixo, causando um eco enorme e uma vibração forte." + name: 'Overdrive', + effect: 'O usuário ataca os Pokémon adversários vibrando uma guitarra ou baixo, causando um eco enorme e uma vibração forte.' }, appleAcid: { - name: "Apple Acid", - effect: "O usuário ataca o alvo com um líquido ácido criado a partir de maçãs azedas. Isso também diminui o atributo de Def. Esp. do alvo." + name: 'Apple Acid', + effect: 'O usuário ataca o alvo com um líquido ácido criado a partir de maçãs azedas. Isso também diminui o atributo de Def. Esp. do alvo.' }, gravApple: { - name: "Grav Apple", - effect: "O usuário inflige dano derrubando uma maçã de cima. Isso também diminui o atributo de Defesa do alvo." + name: 'Grav Apple', + effect: 'O usuário inflige dano derrubando uma maçã de cima. Isso também diminui o atributo de Defesa do alvo.' }, spiritBreak: { - name: "Spirit Break", - effect: "O usuário ataca o alvo com tanta força que poderia quebrar o espírito do alvo. Isso também diminui o atributo de Atq. Esp. do alvo." + name: 'Spirit Break', + effect: 'O usuário ataca o alvo com tanta força que poderia quebrar o espírito do alvo. Isso também diminui o atributo de Atq. Esp. do alvo.' }, strangeSteam: { - name: "Strange Steam", - effect: "O usuário ataca o alvo emitindo vapor. Isso também pode deixar o alvo confuso." + name: 'Strange Steam', + effect: 'O usuário ataca o alvo emitindo vapor. Isso também pode deixar o alvo confuso.' }, lifeDew: { - name: "Life Dew", - effect: "O usuário espalha água misteriosa ao redor e restaura o HP de si mesmo e de seus Pokémon aliados na batalha." + name: 'Life Dew', + effect: 'O usuário espalha água misteriosa ao redor e restaura o HP de si mesmo e de seus Pokémon aliados na batalha.' }, obstruct: { - name: "Obstruct", - effect: "Este movimento permite ao usuário proteger-se de todos os ataques. Sua chance de falhar aumenta se for usado em sucessão. Contato direto reduz severamente o atributo de Defesa do atacante." + name: 'Obstruct', + effect: 'Este movimento permite ao usuário proteger-se de todos os ataques. Sua chance de falhar aumenta se for usado em sucessão. Contato direto reduz severamente o atributo de Defesa do atacante.' }, falseSurrender: { - name: "False Surrender", - effect: "O usuário finge abaixar a cabeça, mas então esfaqueia o alvo com seus cabelos desgrenhados. Este ataque nunca erra." + name: 'False Surrender', + effect: 'O usuário finge abaixar a cabeça, mas então esfaqueia o alvo com seus cabelos desgrenhados. Este ataque nunca erra.' }, meteorAssault: { - name: "Meteor Assault", - effect: "O usuário ataca selvagemente com seu alho-poró grosso. O usuário não pode se mover na próxima rodada, porque a força deste movimento o faz cambalear." + name: 'Meteor Assault', + effect: 'O usuário ataca selvagemente com seu alho-poró grosso. O usuário não pode se mover na próxima rodada, porque a força deste movimento o faz cambalear.' }, eternabeam: { - name: "Eternabeam", - effect: "Este é o ataque mais poderoso de Eternatus em sua forma original. O usuário não pode se mover na próxima rodada." + name: 'Eternabeam', + effect: 'Este é o ataque mais poderoso de Eternatus em sua forma original. O usuário não pode se mover na próxima rodada.' }, steelBeam: { - name: "Steel Beam", - effect: "O usuário dispara um feixe de aço que coletou de todo o seu corpo. Isso também causa dano ao usuário." + name: 'Steel Beam', + effect: 'O usuário dispara um feixe de aço que coletou de todo o seu corpo. Isso também causa dano ao usuário.' }, expandingForce: { - name: "Expanding Force", - effect: "O usuário ataca o alvo com seu poder psíquico. O poder deste movimento aumenta e danifica todos os Pokémon adversários no Terreno Psíquico." + name: 'Expanding Force', + effect: 'O usuário ataca o alvo com seu poder psíquico. O poder deste movimento aumenta e danifica todos os Pokémon adversários no Terreno Psíquico.' }, steelRoller: { - name: "Steel Roller", - effect: "O usuário ataca enquanto destrói o terreno. Este movimento falha quando o chão não foi transformado em um terreno." + name: 'Steel Roller', + effect: 'O usuário ataca enquanto destrói o terreno. Este movimento falha quando o chão não foi transformado em um terreno.' }, scaleShot: { - name: "Scale Shot", - effect: "O usuário ataca atirando escamas de duas a cinco vezes seguidas. Este movimento aumenta o atributo de Velocidade do usuário, mas diminui seu atributo de Defesa." + name: 'Scale Shot', + effect: 'O usuário ataca atirando escamas de duas a cinco vezes seguidas. Este movimento aumenta o atributo de Velocidade do usuário, mas diminui seu atributo de Defesa.' }, meteorBeam: { - name: "Meteor Beam", - effect: "Neste ataque de dois turnos, o usuário reúne energia espacial e aumenta seu atributo de Atq. Esp., depois ataca o alvo no próximo turno." + name: 'Meteor Beam', + effect: 'Neste ataque de dois turnos, o usuário reúne energia espacial e aumenta seu atributo de Atq. Esp., depois ataca o alvo no próximo turno.' }, shellSideArm: { - name: "Shell Side Arm", - effect: "Este movimento causa dano físico ou especial, o que for mais eficaz. Isso também pode envenenar o alvo." + name: 'Shell Side Arm', + effect: 'Este movimento causa dano físico ou especial, o que for mais eficaz. Isso também pode envenenar o alvo.' }, mistyExplosion: { - name: "Misty Explosion", - effect: "O usuário ataca tudo ao seu redor e desmaia ao usar este movimento. O poder deste movimento é aumentado no Terreno de Nevoeiro." + name: 'Misty Explosion', + effect: 'O usuário ataca tudo ao seu redor e desmaia ao usar este movimento. O poder deste movimento é aumentado no Terreno de Nevoeiro.' }, grassyGlide: { - name: "Grassy Glide", - effect: "Deslizando no chão, o usuário ataca o alvo. Este movimento sempre ataca primeiro no Terreno de Grama." + name: 'Grassy Glide', + effect: 'Deslizando no chão, o usuário ataca o alvo. Este movimento sempre ataca primeiro no Terreno de Grama.' }, risingVoltage: { - name: "Rising Voltage", - effect: "O usuário ataca com a voltagem elétrica que sobe do chão. O poder deste movimento dobra quando o alvo está no Terreno Elétrico." + name: 'Rising Voltage', + effect: 'O usuário ataca com a voltagem elétrica que sobe do chão. O poder deste movimento dobra quando o alvo está no Terreno Elétrico.' }, terrainPulse: { - name: "Terrain Pulse", - effect: "O usuário utiliza o poder do terreno para atacar. O tipo e o poder deste movimento mudam dependendo do terreno em que é usado." + name: 'Terrain Pulse', + effect: 'O usuário utiliza o poder do terreno para atacar. O tipo e o poder deste movimento mudam dependendo do terreno em que é usado.' }, skitterSmack: { - name: "Skitter Smack", - effect: "O usuário corre por trás do alvo para atacar. Isso também diminui o atributo de Atq. Esp. do alvo." + name: 'Skitter Smack', + effect: 'O usuário corre por trás do alvo para atacar. Isso também diminui o atributo de Atq. Esp. do alvo.' }, burningJealousy: { - name: "Burning Jealousy", - effect: "O usuário ataca com energia da inveja. Isso deixa todos os Pokémon adversários que tiveram seus atributos aumentados durante o turno com uma queimadura." + name: 'Burning Jealousy', + effect: 'O usuário ataca com energia da inveja. Isso deixa todos os Pokémon adversários que tiveram seus atributos aumentados durante o turno com uma queimadura.' }, lashOut: { - name: "Lash Out", - effect: "O usuário ataca para desabafar sua frustração contra o alvo. Se os atributos do usuário foram diminuídos durante este turno, o poder deste movimento é dobrado." + name: 'Lash Out', + effect: 'O usuário ataca para desabafar sua frustração contra o alvo. Se os atributos do usuário foram diminuídos durante este turno, o poder deste movimento é dobrado.' }, poltergeist: { - name: "Poltergeist", - effect: "O usuário ataca o alvo controlando o item do alvo. O movimento falha se o alvo não tiver um item." + name: 'Poltergeist', + effect: 'O usuário ataca o alvo controlando o item do alvo. O movimento falha se o alvo não tiver um item.' }, corrosiveGas: { - name: "Corrosive Gas", - effect: "O usuário envolve tudo ao seu redor com gás altamente ácido e derrete os itens que eles seguram." + name: 'Corrosive Gas', + effect: 'O usuário envolve tudo ao seu redor com gás altamente ácido e derrete os itens que eles seguram.' }, coaching: { - name: "Coaching", - effect: "O usuário treina adequadamente seus Pokémon aliados, aumentando seus atributos de Ataque e Defesa." + name: 'Coaching', + effect: 'O usuário treina adequadamente seus Pokémon aliados, aumentando seus atributos de Ataque e Defesa.' }, flipTurn: { - name: "Flip Turn", - effect: "Após fazer seu ataque, o usuário corre para trocar de lugar com um Pokémon do grupo à espera." + name: 'Flip Turn', + effect: 'Após fazer seu ataque, o usuário corre para trocar de lugar com um Pokémon do grupo à espera.' }, tripleAxel: { - name: "Triple Axel", - effect: "Um ataque de três chutes consecutivos que se torna mais poderoso a cada acerto bem-sucedido." + name: 'Triple Axel', + effect: 'Um ataque de três chutes consecutivos que se torna mais poderoso a cada acerto bem-sucedido.' }, dualWingbeat: { - name: "Dual Wingbeat", - effect: "O usuário atinge o alvo com suas asas. O alvo é atingido duas vezes seguidas." + name: 'Dual Wingbeat', + effect: 'O usuário atinge o alvo com suas asas. O alvo é atingido duas vezes seguidas.' }, scorchingSands: { - name: "Scorching Sands", - effect: "O usuário joga areia escaldante no alvo para atacar. Isso também pode deixar o alvo queimado." + name: 'Scorching Sands', + effect: 'O usuário joga areia escaldante no alvo para atacar. Isso também pode deixar o alvo queimado.' }, jungleHealing: { - name: "Jungle Healing", - effect: "O usuário se torna um com a selva, restaurando HP e curando quaisquer condições de status de si mesmo e de seus Pokémon aliados na batalha." + name: 'Jungle Healing', + effect: 'O usuário se torna um com a selva, restaurando HP e curando quaisquer condições de status de si mesmo e de seus Pokémon aliados na batalha.' }, wickedBlow: { - name: "Wicked Blow", - effect: "O usuário, tendo dominado o estilo Sombrio, atinge o alvo com um golpe feroz. Este ataque sempre resulta em um golpe crítico." + name: 'Wicked Blow', + effect: 'O usuário, tendo dominado o estilo Sombrio, atinge o alvo com um golpe feroz. Este ataque sempre resulta em um golpe crítico.' }, surgingStrikes: { - name: "Surging Strikes", - effect: "O usuário, tendo dominado o estilo Água, atinge o alvo com um movimento fluido três vezes seguidas. Este ataque sempre resulta em um golpe crítico." + name: 'Surging Strikes', + effect: 'O usuário, tendo dominado o estilo Água, atinge o alvo com um movimento fluido três vezes seguidas. Este ataque sempre resulta em um golpe crítico.' }, thunderCage: { - name: "Thunder Cage", - effect: "O usuário prende o alvo em uma gaiola de eletricidade cintilante por quatro ou cinco turnos." + name: 'Thunder Cage', + effect: 'O usuário prende o alvo em uma gaiola de eletricidade cintilante por quatro ou cinco turnos.' }, dragonEnergy: { - name: "Dragon Energy", - effect: "Convertendo sua força vital em poder, o usuário ataca os Pokémon adversários. Quanto menor o HP do usuário, menor o poder do movimento." + name: 'Dragon Energy', + effect: 'Convertendo sua força vital em poder, o usuário ataca os Pokémon adversários. Quanto menor o HP do usuário, menor o poder do movimento.' }, freezingGlare: { - name: "Freezing Glare", - effect: "O usuário dispara seu poder psíquico dos olhos para atacar. Isso também pode deixar o alvo congelado." + name: 'Freezing Glare', + effect: 'O usuário dispara seu poder psíquico dos olhos para atacar. Isso também pode deixar o alvo congelado.' }, fieryWrath: { - name: "Fiery Wrath", - effect: "O usuário transforma sua ira em uma aura semelhante ao fogo para atacar. Isso também pode fazer os Pokémon adversários hesitarem." + name: 'Fiery Wrath', + effect: 'O usuário transforma sua ira em uma aura semelhante ao fogo para atacar. Isso também pode fazer os Pokémon adversários hesitarem.' }, thunderousKick: { - name: "Thunderous Kick", - effect: "O usuário oprime o alvo com movimento semelhante ao relâmpago antes de entregar um chute. Isso também diminui o atributo de Defesa do alvo." + name: 'Thunderous Kick', + effect: 'O usuário oprime o alvo com movimento semelhante ao relâmpago antes de entregar um chute. Isso também diminui o atributo de Defesa do alvo.' }, glacialLance: { - name: "Glacial Lance", - effect: "O usuário ataca lançando uma lança de gelo envolta em nevasca nos Pokémon adversários." + name: 'Glacial Lance', + effect: 'O usuário ataca lançando uma lança de gelo envolta em nevasca nos Pokémon adversários.' }, astralBarrage: { - name: "Astral Barrage", - effect: "O usuário ataca enviando uma quantidade assustadora de pequenos fantasmas nos Pokémon adversários." + name: 'Astral Barrage', + effect: 'O usuário ataca enviando uma quantidade assustadora de pequenos fantasmas nos Pokémon adversários.' }, eerieSpell: { - name: "Eerie Spell", - effect: "O usuário ataca com seu tremendo poder psíquico. Isso também remove 3 PP do último movimento usado pelo alvo." + name: 'Eerie Spell', + effect: 'O usuário ataca com seu tremendo poder psíquico. Isso também remove 3 PP do último movimento usado pelo alvo.' }, direClaw: { - name: "Dire Claw", - effect: "O usuário ataca o alvo com garras destruidoras. Isso também pode deixar o alvo envenenado, paralisado ou adormecido." + name: 'Dire Claw', + effect: 'O usuário ataca o alvo com garras destruidoras. Isso também pode deixar o alvo envenenado, paralisado ou adormecido.' }, psyshieldBash: { - name: "Psyshield Bash", - effect: "Envoltando-se em energia psíquica, o usuário se choca contra o alvo. Isso também aumenta o atributo de Defesa do usuário." + name: 'Psyshield Bash', + effect: 'Envoltando-se em energia psíquica, o usuário se choca contra o alvo. Isso também aumenta o atributo de Defesa do usuário.' }, powerShift: { - name: "Power Shift", - effect: "O usuário troca seus atributos de Ataque e Defesa." + name: 'Power Shift', + effect: 'O usuário troca seus atributos de Ataque e Defesa.' }, stoneAxe: { - name: "Stone Axe", - effect: "O usuário balança seus machados de pedra no alvo. Fragmentos de pedra deixados para trás por este ataque flutuam ao redor do alvo." + name: 'Stone Axe', + effect: 'O usuário balança seus machados de pedra no alvo. Fragmentos de pedra deixados para trás por este ataque flutuam ao redor do alvo.' }, springtideStorm: { - name: "Springtide Storm", - effect: "O usuário ataca envolvendo os Pokémon adversários em ventos ferozes repletos de amor e ódio. Isso também pode diminuir os atributos de Ataque deles." + name: 'Springtide Storm', + effect: 'O usuário ataca envolvendo os Pokémon adversários em ventos ferozes repletos de amor e ódio. Isso também pode diminuir os atributos de Ataque deles.' }, mysticalPower: { - name: "Mystical Power", - effect: "O usuário ataca emitindo um poder misterioso. Isso também aumenta o atributo de Atq. Esp. do usuário." + name: 'Mystical Power', + effect: 'O usuário ataca emitindo um poder misterioso. Isso também aumenta o atributo de Atq. Esp. do usuário.' }, ragingFury: { - name: "Raging Fury", - effect: "O usuário se enfurece espalhando chamas por dois ou três turnos. O usuário então fica confuso." + name: 'Raging Fury', + effect: 'O usuário se enfurece espalhando chamas por dois ou três turnos. O usuário então fica confuso.' }, waveCrash: { - name: "Wave Crash", - effect: "O usuário se envolve em água e atinge o alvo com todo o corpo para infligir dano. Isso também causa muito dano ao usuário." + name: 'Wave Crash', + effect: 'O usuário se envolve em água e atinge o alvo com todo o corpo para infligir dano. Isso também causa muito dano ao usuário.' }, chloroblast: { - name: "Chloroblast", - effect: "O usuário lança sua clorofila acumulada para infligir dano no alvo. Isso também causa dano ao usuário." + name: 'Chloroblast', + effect: 'O usuário lança sua clorofila acumulada para infligir dano no alvo. Isso também causa dano ao usuário.' }, mountainGale: { - name: "Mountain Gale", - effect: "O usuário arremessa pedaços gigantes de gelo no alvo para infligir dano. Isso também pode fazer o alvo hesitar." + name: 'Mountain Gale', + effect: 'O usuário arremessa pedaços gigantes de gelo no alvo para infligir dano. Isso também pode fazer o alvo hesitar.' }, victoryDance: { - name: "Victory Dance", - effect: "O usuário realiza uma dança intensa para inaugurar a vitória, aumentando seus atributos de Ataque, Defesa e Velocidade." + name: 'Victory Dance', + effect: 'O usuário realiza uma dança intensa para inaugurar a vitória, aumentando seus atributos de Ataque, Defesa e Velocidade.' }, headlongRush: { - name: "Headlong Rush", - effect: "O usuário se choca contra o alvo em um ataque de corpo inteiro. Isso também diminui os atributos de Defesa e Def. Esp. do usuário." + name: 'Headlong Rush', + effect: 'O usuário se choca contra o alvo em um ataque de corpo inteiro. Isso também diminui os atributos de Defesa e Def. Esp. do usuário.' }, barbBarrage: { - name: "Barb Barrage", - effect: "O usuário lança inúmeras barbas tóxicas para infligir dano. O poder deste movimento é dobrado se o alvo já estiver envenenado." + name: 'Barb Barrage', + effect: 'O usuário lança inúmeras barbas tóxicas para infligir dano. O poder deste movimento é dobrado se o alvo já estiver envenenado.' }, esperWing: { - name: "Esper Wing", - effect: "O usuário corta o alvo com asas enriquecidas com aura. Isso também aumenta o atributo de Velocidade do usuário. Este movimento tem uma chance aumentada de causar um golpe crítico." + name: 'Esper Wing', + effect: 'O usuário corta o alvo com asas enriquecidas com aura. Isso também aumenta o atributo de Velocidade do usuário. Este movimento tem uma chance aumentada de causar um golpe crítico.' }, bitterMalice: { - name: "Bitter Malice", - effect: "O usuário ataca o alvo com um ressentimento arrepiante. Isso também diminui o atributo de Ataque do alvo." + name: 'Bitter Malice', + effect: 'O usuário ataca o alvo com um ressentimento arrepiante. Isso também diminui o atributo de Ataque do alvo.' }, shelter: { - name: "Shelter", - effect: "O usuário torna sua pele tão dura quanto um escudo de ferro, aumentando muito seu atributo de Defesa." + name: 'Shelter', + effect: 'O usuário torna sua pele tão dura quanto um escudo de ferro, aumentando muito seu atributo de Defesa.' }, tripleArrows: { - name: "Triple Arrows", - effect: "O usuário chuta e depois dispara três flechas. Este movimento tem uma chance aumentada de causar um golpe crítico e também pode diminuir o atributo de Defesa do alvo ou fazê-lo hesitar." + name: 'Triple Arrows', + effect: 'O usuário chuta e depois dispara três flechas. Este movimento tem uma chance aumentada de causar um golpe crítico e também pode diminuir o atributo de Defesa do alvo ou fazê-lo hesitar.' }, infernalParade: { - name: "Infernal Parade", - effect: "O usuário ataca com miríades de bolas de fogo. Isso também pode deixar o alvo queimado. O poder deste movimento é dobrado se o alvo tiver uma condição de status." + name: 'Infernal Parade', + effect: 'O usuário ataca com miríades de bolas de fogo. Isso também pode deixar o alvo queimado. O poder deste movimento é dobrado se o alvo tiver uma condição de status.' }, ceaselessEdge: { - name: "Ceaseless Edge", - effect: "O usuário corta sua lâmina de concha no alvo. Fragmentos de concha deixados para trás por este ataque permanecem espalhados sob o alvo como espinhos." + name: 'Ceaseless Edge', + effect: 'O usuário corta sua lâmina de concha no alvo. Fragmentos de concha deixados para trás por este ataque permanecem espalhados sob o alvo como espinhos.' }, bleakwindStorm: { - name: "Bleakwind Storm", - effect: "O usuário ataca com ventos selvagemente frios que fazem tanto o corpo quanto o espírito tremerem. Isso também pode diminuir os atributos de Velocidade dos Pokémon adversários." + name: 'Bleakwind Storm', + effect: 'O usuário ataca com ventos selvagemente frios que fazem tanto o corpo quanto o espírito tremerem. Isso também pode diminuir os atributos de Velocidade dos Pokémon adversários.' }, wildboltStorm: { - name: "Wildbolt Storm", - effect: "O usuário invoca uma tempestade trovejante e ataca selvagemente com relâmpagos e vento. Isso também pode deixar os Pokémon adversários paralisados." + name: 'Wildbolt Storm', + effect: 'O usuário invoca uma tempestade trovejante e ataca selvagemente com relâmpagos e vento. Isso também pode deixar os Pokémon adversários paralisados.' }, sandsearStorm: { - name: "Sandsear Storm", - effect: "O usuário ataca envolvendo os Pokémon adversários em ventos ferozes e areia escaldante. Isso também pode deixá-los queimados." + name: 'Sandsear Storm', + effect: 'O usuário ataca envolvendo os Pokémon adversários em ventos ferozes e areia escaldante. Isso também pode deixá-los queimados.' }, lunarBlessing: { - name: "Lunar Blessing", - effect: "O usuário recebe uma bênção do crescente lunar, restaurando HP e curando condições de status para si mesmo e seus Pokémon aliados atualmente na batalha." + name: 'Lunar Blessing', + effect: 'O usuário recebe uma bênção do crescente lunar, restaurando HP e curando condições de status para si mesmo e seus Pokémon aliados atualmente na batalha.' }, takeHeart: { - name: "Take Heart", - effect: "O usuário levanta o espírito, curando suas próprias condições de status e aumentando seus atributos de Atq. Esp. e Def. Esp." + name: 'Take Heart', + effect: 'O usuário levanta o espírito, curando suas próprias condições de status e aumentando seus atributos de Atq. Esp. e Def. Esp.' }, gMaxWildfire: { - name: "G-Max Wildfire", - effect: "Um ataque do tipo Fogo que o Gigantamax Charizard usa. Este movimento continua causando dano aos oponentes por quatro turnos." + name: 'G-Max Wildfire', + effect: 'Um ataque do tipo Fogo que o Gigantamax Charizard usa. Este movimento continua causando dano aos oponentes por quatro turnos.' }, gMaxBefuddle: { - name: "G-Max Befuddle", - effect: "Um ataque do tipo Inseto que o Gigantamax Butterfree usa. Este movimento inflige as condições de envenenado, paralisado ou adormecido nos oponentes." + name: 'G-Max Befuddle', + effect: 'Um ataque do tipo Inseto que o Gigantamax Butterfree usa. Este movimento inflige as condições de envenenado, paralisado ou adormecido nos oponentes.' }, gMaxVoltCrash: { - name: "G-Max Volt Crash", - effect: "Um ataque do tipo Elétrico que o Gigantamax Pikachu usa. Este movimento paralisa os oponentes." + name: 'G-Max Volt Crash', + effect: 'Um ataque do tipo Elétrico que o Gigantamax Pikachu usa. Este movimento paralisa os oponentes.' }, gMaxGoldRush: { - name: "G-Max Gold Rush", - effect: "Um ataque do tipo Normal que o Gigantamax Meowth usa. Este movimento confunde os oponentes e também ganha dinheiro extra." + name: 'G-Max Gold Rush', + effect: 'Um ataque do tipo Normal que o Gigantamax Meowth usa. Este movimento confunde os oponentes e também ganha dinheiro extra.' }, - "gMaxChiStrike": { - name: "G-Max Chi Strike", - effect: "Um ataque do tipo Lutador que Gigantamax Machamp usa. Este movimento aumenta a chance de acertos críticos." + 'gMaxChiStrike': { + name: 'G-Max Chi Strike', + effect: 'Um ataque do tipo Lutador que Gigantamax Machamp usa. Este movimento aumenta a chance de acertos críticos.' }, - "gMaxTerror": { - name: "G-Max Terror", - effect: "Um ataque do tipo Fantasma que Gigantamax Gengar usa. Este Pokémon pisa na sombra do Pokémon adversário para impedi-lo de escapar." + 'gMaxTerror': { + name: 'G-Max Terror', + effect: 'Um ataque do tipo Fantasma que Gigantamax Gengar usa. Este Pokémon pisa na sombra do Pokémon adversário para impedi-lo de escapar.' }, - "gMaxResonance": { - name: "G-Max Resonance", - effect: "Um ataque do tipo Gelo que Gigantamax Lapras usa. Este movimento reduz o dano recebido por cinco turnos." + 'gMaxResonance': { + name: 'G-Max Resonance', + effect: 'Um ataque do tipo Gelo que Gigantamax Lapras usa. Este movimento reduz o dano recebido por cinco turnos.' }, - "gMaxCuddle": { - name: "G-Max Cuddle", - effect: "Um ataque do tipo Normal que Gigantamax Eevee usa. Este movimento apaixona os oponentes." + 'gMaxCuddle': { + name: 'G-Max Cuddle', + effect: 'Um ataque do tipo Normal que Gigantamax Eevee usa. Este movimento apaixona os oponentes.' }, - "gMaxReplenish": { - name: "G-Max Replenish", - effect: "Um ataque do tipo Normal que Gigantamax Snorlax usa. Este movimento restaura Frutas que foram comidas." + 'gMaxReplenish': { + name: 'G-Max Replenish', + effect: 'Um ataque do tipo Normal que Gigantamax Snorlax usa. Este movimento restaura Frutas que foram comidas.' }, - "gMaxMalodor": { - name: "G-Max Malodor", - effect: "Um ataque do tipo Veneno que Gigantamax Garbodor usa. Este movimento envenena os oponentes." + 'gMaxMalodor': { + name: 'G-Max Malodor', + effect: 'Um ataque do tipo Veneno que Gigantamax Garbodor usa. Este movimento envenena os oponentes.' }, - "gMaxStonesurge": { - name: "G-Max Stonesurge", - effect: "Um ataque do tipo Água que Gigantamax Drednaw usa. Este movimento espalha pedras afiadas pelo campo." + 'gMaxStonesurge': { + name: 'G-Max Stonesurge', + effect: 'Um ataque do tipo Água que Gigantamax Drednaw usa. Este movimento espalha pedras afiadas pelo campo.' }, - "gMaxWindRage": { - name: "G-Max Wind Rage", - effect: "Um ataque do tipo Voador que Gigantamax Corviknight usa. Este movimento remove os efeitos de movimentos como Reflect e Light Screen." + 'gMaxWindRage': { + name: 'G-Max Wind Rage', + effect: 'Um ataque do tipo Voador que Gigantamax Corviknight usa. Este movimento remove os efeitos de movimentos como Reflect e Light Screen.' }, - "gMaxStunShock": { - name: "G-Max Stun Shock", - effect: "Um ataque do tipo Elétrico que Gigantamax Toxtricity usa. Este movimento envenena ou paralisa os oponentes." + 'gMaxStunShock': { + name: 'G-Max Stun Shock', + effect: 'Um ataque do tipo Elétrico que Gigantamax Toxtricity usa. Este movimento envenena ou paralisa os oponentes.' }, - "gMaxFinale": { - name: "G-Max Finale", - effect: "Um ataque do tipo Fada que Gigantamax Alcremie usa. Este movimento cura os PS dos aliados." + 'gMaxFinale': { + name: 'G-Max Finale', + effect: 'Um ataque do tipo Fada que Gigantamax Alcremie usa. Este movimento cura os PS dos aliados.' }, - "gMaxDepletion": { - name: "G-Max Depletion", - effect: "Um ataque do tipo Dragão que Gigantamax Duraludon usa. Reduz o PP do último movimento usado." + 'gMaxDepletion': { + name: 'G-Max Depletion', + effect: 'Um ataque do tipo Dragão que Gigantamax Duraludon usa. Reduz o PP do último movimento usado.' }, - "gMaxGravitas": { - name: "G-Max Gravitas", - effect: "Um ataque do tipo Psíquico que Gigantamax Orbeetle usa. Este movimento muda a gravidade por cinco turnos." + 'gMaxGravitas': { + name: 'G-Max Gravitas', + effect: 'Um ataque do tipo Psíquico que Gigantamax Orbeetle usa. Este movimento muda a gravidade por cinco turnos.' }, - "gMaxVolcalith": { - name: "G-Max Volcalith", - effect: "Um ataque do tipo Pedra que Gigantamax Coalossal usa. Este movimento continua a causar dano aos oponentes por quatro turnos." + 'gMaxVolcalith': { + name: 'G-Max Volcalith', + effect: 'Um ataque do tipo Pedra que Gigantamax Coalossal usa. Este movimento continua a causar dano aos oponentes por quatro turnos.' }, - "gMaxSandblast": { - name: "G-Max Sandblast", - effect: "Um ataque do tipo Terra que Gigantamax Sandaconda usa. Os oponentes ficam presos em uma tempestade de areia furiosa por quatro a cinco turnos." + 'gMaxSandblast': { + name: 'G-Max Sandblast', + effect: 'Um ataque do tipo Terra que Gigantamax Sandaconda usa. Os oponentes ficam presos em uma tempestade de areia furiosa por quatro a cinco turnos.' }, - "gMaxSnooze": { - name: "G-Max Snooze", - effect: "Um ataque do tipo Sombrio que Gigantamax Grimmsnarl usa. O usuário solta um grande bocejo que faz com que os alvos adormeçam no próximo turno." + 'gMaxSnooze': { + name: 'G-Max Snooze', + effect: 'Um ataque do tipo Sombrio que Gigantamax Grimmsnarl usa. O usuário solta um grande bocejo que faz com que os alvos adormeçam no próximo turno.' }, - "gMaxTartness": { - name: "G-Max Tartness", - effect: "Um ataque do tipo Planta que Gigantamax Flapple usa. Este movimento reduz a evasão dos oponentes." + 'gMaxTartness': { + name: 'G-Max Tartness', + effect: 'Um ataque do tipo Planta que Gigantamax Flapple usa. Este movimento reduz a evasão dos oponentes.' }, - "gMaxSweetness": { - name: "G-Max Sweetness", - effect: "Um ataque do tipo Planta que Gigantamax Appletun usa. Este movimento cura as condições de status dos aliados." + 'gMaxSweetness': { + name: 'G-Max Sweetness', + effect: 'Um ataque do tipo Planta que Gigantamax Appletun usa. Este movimento cura as condições de status dos aliados.' }, - "gMaxSmite": { - name: "G-Max Smite", - effect: "Um ataque do tipo Fada que Gigantamax Hatterene usa. Este movimento confunde os oponentes." + 'gMaxSmite': { + name: 'G-Max Smite', + effect: 'Um ataque do tipo Fada que Gigantamax Hatterene usa. Este movimento confunde os oponentes.' }, - "gMaxSteelsurge": { - name: "G-Max Steelsurge", - effect: "Um ataque do tipo Aço que Gigantamax Copperajah usa. Este movimento espalha estacas afiadas pelo campo." + 'gMaxSteelsurge': { + name: 'G-Max Steelsurge', + effect: 'Um ataque do tipo Aço que Gigantamax Copperajah usa. Este movimento espalha estacas afiadas pelo campo.' }, - "gMaxMeltdown": { - name: "G-Max Meltdown", - effect: "Um ataque do tipo Aço que Gigantamax Melmetal usa. Este movimento impede os oponentes de usar o mesmo movimento duas vezes seguidas." + 'gMaxMeltdown': { + name: 'G-Max Meltdown', + effect: 'Um ataque do tipo Aço que Gigantamax Melmetal usa. Este movimento impede os oponentes de usar o mesmo movimento duas vezes seguidas.' }, - "gMaxFoamBurst": { - name: "G-Max Foam Burst", - effect: "Um ataque do tipo Água que Gigantamax Kingler usa. Este movimento reduz drasticamente a Velocidade dos oponentes." + 'gMaxFoamBurst': { + name: 'G-Max Foam Burst', + effect: 'Um ataque do tipo Água que Gigantamax Kingler usa. Este movimento reduz drasticamente a Velocidade dos oponentes.' }, - "gMaxCentiferno": { - name: "G-Max Centiferno", - effect: "Um ataque do tipo Fogo que Gigantamax Centiskorch usa. Este movimento prende os oponentes em chamas por quatro a cinco turnos." + 'gMaxCentiferno': { + name: 'G-Max Centiferno', + effect: 'Um ataque do tipo Fogo que Gigantamax Centiskorch usa. Este movimento prende os oponentes em chamas por quatro a cinco turnos.' }, - "gMaxVineLash": { - name: "G-Max Vine Lash", - effect: "Um ataque do tipo Planta que Gigantamax Venusaur usa. Este movimento continua a causar dano aos oponentes por quatro turnos." + 'gMaxVineLash': { + name: 'G-Max Vine Lash', + effect: 'Um ataque do tipo Planta que Gigantamax Venusaur usa. Este movimento continua a causar dano aos oponentes por quatro turnos.' }, - "gMaxCannonade": { - name: "G-Max Cannonade", - effect: "Um ataque do tipo Água que Gigantamax Blastoise usa. Este movimento continua a causar dano aos oponentes por quatro turnos." + 'gMaxCannonade': { + name: 'G-Max Cannonade', + effect: 'Um ataque do tipo Água que Gigantamax Blastoise usa. Este movimento continua a causar dano aos oponentes por quatro turnos.' }, - "gMaxDrumSolo": { - name: "G-Max Drum Solo", - effect: "Um ataque do tipo Planta que Gigantamax Rillaboom usa. Este movimento pode ser usado no alvo independentemente de suas Habilidades." + 'gMaxDrumSolo': { + name: 'G-Max Drum Solo', + effect: 'Um ataque do tipo Planta que Gigantamax Rillaboom usa. Este movimento pode ser usado no alvo independentemente de suas Habilidades.' }, - "gMaxFireball": { - name: "G-Max Fireball", - effect: "Um ataque do tipo Fogo que Gigantamax Cinderace usa. Este movimento pode ser usado no alvo independentemente de suas Habilidades." + 'gMaxFireball': { + name: 'G-Max Fireball', + effect: 'Um ataque do tipo Fogo que Gigantamax Cinderace usa. Este movimento pode ser usado no alvo independentemente de suas Habilidades.' }, - "gMaxHydrosnipe": { - name: "G-Max Hydrosnipe", - effect: "Um ataque do tipo Água que Gigantamax Inteleon usa. Este movimento pode ser usado no alvo independentemente de suas Habilidades." + 'gMaxHydrosnipe': { + name: 'G-Max Hydrosnipe', + effect: 'Um ataque do tipo Água que Gigantamax Inteleon usa. Este movimento pode ser usado no alvo independentemente de suas Habilidades.' }, - "gMaxOneBlow": { - name: "G-Max One Blow", - effect: "Um ataque do tipo Sombrio que Gigantamax Urshifu usa. Este movimento único pode ignorar o Max Guard." + 'gMaxOneBlow': { + name: 'G-Max One Blow', + effect: 'Um ataque do tipo Sombrio que Gigantamax Urshifu usa. Este movimento único pode ignorar o Max Guard.' }, - "gMaxRapidFlow": { - name: "G-Max Rapid Flow", - effect: "Um ataque do tipo Água que Gigantamax Urshifu usa. Este movimento rápido pode ignorar o Max Guard." + 'gMaxRapidFlow': { + name: 'G-Max Rapid Flow', + effect: 'Um ataque do tipo Água que Gigantamax Urshifu usa. Este movimento rápido pode ignorar o Max Guard.' }, - "teraBlast": { - name: "Tera Blast", - effect: "Se o usuário estiver Terastalizado, ele libera energia de seu Tera Tipo. Este movimento causa dano usando o maior entre o Ataque ou Ataque Esp. do usuário." + 'teraBlast': { + name: 'Tera Blast', + effect: 'Se o usuário estiver Terastalizado, ele libera energia de seu Tera Tipo. Este movimento causa dano usando o maior entre o Ataque ou Ataque Esp. do usuário.' }, - "silkTrap": { - name: "Silk Trap", - effect: "O usuário tece uma armadilha de seda, protegendo-se de dano enquanto reduz o atributo de Velocidade de qualquer atacante que faça contato direto." + 'silkTrap': { + name: 'Silk Trap', + effect: 'O usuário tece uma armadilha de seda, protegendo-se de dano enquanto reduz o atributo de Velocidade de qualquer atacante que faça contato direto.' }, - "axeKick": { - name: "Axe Kick", - effect: "O usuário ataca chutando para cima e depois abaixando o calcanhar sobre o alvo. Isso também pode confundir o alvo. Se errar, o usuário sofre dano." + 'axeKick': { + name: 'Axe Kick', + effect: 'O usuário ataca chutando para cima e depois abaixando o calcanhar sobre o alvo. Isso também pode confundir o alvo. Se errar, o usuário sofre dano.' }, - "lastRespects": { - name: "Last Respects", - effect: "O usuário ataca para vingar seus aliados. Quanto mais aliados derrotados, maior o poder do movimento." + 'lastRespects': { + name: 'Last Respects', + effect: 'O usuário ataca para vingar seus aliados. Quanto mais aliados derrotados, maior o poder do movimento.' }, - "luminaCrash": { - name: "Lumina Crash", - effect: "O usuário ataca liberando uma luz peculiar que afeta até a mente. Isso também reduz muito a Defesa Esp. do alvo." + 'luminaCrash': { + name: 'Lumina Crash', + effect: 'O usuário ataca liberando uma luz peculiar que afeta até a mente. Isso também reduz muito a Defesa Esp. do alvo.' }, - "orderUp": { - name: "Order Up", - effect: "O usuário ataca com elegância. Se o usuário tiver um Tatsugiri na boca, este movimento aumenta uma dos atributos do usuário com base na forma do Tatsugiri." + 'orderUp': { + name: 'Order Up', + effect: 'O usuário ataca com elegância. Se o usuário tiver um Tatsugiri na boca, este movimento aumenta uma dos atributos do usuário com base na forma do Tatsugiri.' }, - "jetPunch": { - name: "Jet Punch", - effect: "O usuário convoca um turbilhão ao redor de seu punho e ataca com velocidade cegante. Este movimento sempre age primeiro." + 'jetPunch': { + name: 'Jet Punch', + effect: 'O usuário convoca um turbilhão ao redor de seu punho e ataca com velocidade cegante. Este movimento sempre age primeiro.' }, - "spicyExtract": { - name: "Spicy Extract", - effect: "O usuário emite um extrato incrivelmente picante, aumentando muito o Ataque do alvo e reduzindo muito a Defesa do alvo." + 'spicyExtract': { + name: 'Spicy Extract', + effect: 'O usuário emite um extrato incrivelmente picante, aumentando muito o Ataque do alvo e reduzindo muito a Defesa do alvo.' }, - "spinOut": { - name: "Spin Out", - effect: "O usuário gira furiosamente ao esticar as pernas, causando dano ao alvo. Isso também reduz muito a Velocidade do usuário." + 'spinOut': { + name: 'Spin Out', + effect: 'O usuário gira furiosamente ao esticar as pernas, causando dano ao alvo. Isso também reduz muito a Velocidade do usuário.' }, - "populationBomb": { - name: "Population Bomb", - effect: "Os companheiros do usuário se reúnem em massa para executar um ataque combinado que atinge o alvo de uma a dez vezes seguidas." + 'populationBomb': { + name: 'Population Bomb', + effect: 'Os companheiros do usuário se reúnem em massa para executar um ataque combinado que atinge o alvo de uma a dez vezes seguidas.' }, - "iceSpinner": { - name: "Ice Spinner", - effect: "O usuário cobre seus pés com gelo fino e gira ao redor, atingindo o alvo. O movimento giratório deste movimento também destrói o terreno." + 'iceSpinner': { + name: 'Ice Spinner', + effect: 'O usuário cobre seus pés com gelo fino e gira ao redor, atingindo o alvo. O movimento giratório deste movimento também destrói o terreno.' }, - "glaiveRush": { - name: "Glaive Rush", - effect: "O usuário lança todo o seu corpo em uma carga imprudente. Após o uso deste movimento, ataques contra o usuário não podem errar e infligirão o dobro do dano até a próxima vez que o usuário agir." + 'glaiveRush': { + name: 'Glaive Rush', + effect: 'O usuário lança todo o seu corpo em uma carga imprudente. Após o uso deste movimento, ataques contra o usuário não podem errar e infligirão o dobro do dano até a próxima vez que o usuário agir.' }, - "revivalBlessing": { - name: "Revival Blessing", - effect: "O usuário concede uma bênção amorosa, reanimando um Pokémon da equipe que tenha desmaiado e restaurando metade do máximo de PS desse Pokémon." + 'revivalBlessing': { + name: 'Revival Blessing', + effect: 'O usuário concede uma bênção amorosa, reanimando um Pokémon da equipe que tenha desmaiado e restaurando metade do máximo de PS desse Pokémon.' }, - "saltCure": { - name: "Salt Cure", - effect: "O usuário cura o alvo com sal, causando dano a cada turno. Tipos de Aço e Água são mais fortemente afetados por este movimento." + 'saltCure': { + name: 'Salt Cure', + effect: 'O usuário cura o alvo com sal, causando dano a cada turno. Tipos de Aço e Água são mais fortemente afetados por este movimento.' }, - "tripleDive": { - name: "Triple Dive", - effect: "O usuário executa um mergulho triplo perfeitamente cronometrado, atingindo o alvo com respingos de água três vezes seguidas." + 'tripleDive': { + name: 'Triple Dive', + effect: 'O usuário executa um mergulho triplo perfeitamente cronometrado, atingindo o alvo com respingos de água três vezes seguidas.' }, - "mortalSpin": { - name: "Mortal Spin", - effect: "O usuário realiza um ataque giratório que também pode eliminar os efeitos de movimentos como Bind, Wrap e Leech Seed. Isso também envenena os Pokémon oponentes." + 'mortalSpin': { + name: 'Mortal Spin', + effect: 'O usuário realiza um ataque giratório que também pode eliminar os efeitos de movimentos como Bind, Wrap e Leech Seed. Isso também envenena os Pokémon oponentes.' }, - "doodle": { - name: "Doodle", - effect: "O usuário captura a essência do alvo em um esboço. Isso muda as Habilidades do usuário e de seus Pokémon aliados para a do alvo." + 'doodle': { + name: 'Doodle', + effect: 'O usuário captura a essência do alvo em um esboço. Isso muda as Habilidades do usuário e de seus Pokémon aliados para a do alvo.' }, - "filletAway": { - name: "Fillet Away", - effect: "O usuário aumenta muito seus atributos de Ataque, Ataque Esp. e Velocidade ao usar seus próprios PS." + 'filletAway': { + name: 'Fillet Away', + effect: 'O usuário aumenta muito seus atributos de Ataque, Ataque Esp. e Velocidade ao usar seus próprios PS.' }, - "kowtowCleave": { - name: "Kowtow Cleave", - effect: "O usuário corta o alvo depois de se curvar para fazer o alvo baixar a guarda. Este ataque nunca erra." + 'kowtowCleave': { + name: 'Kowtow Cleave', + effect: 'O usuário corta o alvo depois de se curvar para fazer o alvo baixar a guarda. Este ataque nunca erra.' }, - "flowerTrick": { - name: "Flower Trick", - effect: "O usuário lança um buquê de flores armado no alvo. Este ataque nunca erra e sempre resulta em um golpe crítico." + 'flowerTrick': { + name: 'Flower Trick', + effect: 'O usuário lança um buquê de flores armado no alvo. Este ataque nunca erra e sempre resulta em um golpe crítico.' }, - "torchSong": { - name: "Torch Song", - effect: "O usuário exala chamas furiosas como se estivesse cantando uma canção, queimando o alvo. Isso também aumenta o atributo de Ataque Esp. do usuário." + 'torchSong': { + name: 'Torch Song', + effect: 'O usuário exala chamas furiosas como se estivesse cantando uma canção, queimando o alvo. Isso também aumenta o atributo de Ataque Esp. do usuário.' }, - "aquaStep": { - name: "Aqua Step", - effect: "O usuário brinca com o alvo e o ataca usando passos de dança leves e fluidos. Isso também aumenta a Velocidade do usuário." + 'aquaStep': { + name: 'Aqua Step', + effect: 'O usuário brinca com o alvo e o ataca usando passos de dança leves e fluidos. Isso também aumenta a Velocidade do usuário.' }, - "ragingBull": { - name: "Raging Bull", - effect: "O usuário realiza um ataque de investida como um touro enfurecido. O tipo deste movimento depende da forma do usuário. Ele também pode quebrar barreiras, como Light Screen e Reflect." + 'ragingBull': { + name: 'Raging Bull', + effect: 'O usuário realiza um ataque de investida como um touro enfurecido. O tipo deste movimento depende da forma do usuário. Ele também pode quebrar barreiras, como Light Screen e Reflect.' }, - "makeItRain": { - name: "Make It Rain", - effect: "O usuário ataca lançando uma massa de moedas. Isso também reduz o atributo de Ataque Esp. do usuário. Dinheiro é ganho após a batalha." + 'makeItRain': { + name: 'Make It Rain', + effect: 'O usuário ataca lançando uma massa de moedas. Isso também reduz o atributo de Ataque Esp. do usuário. Dinheiro é ganho após a batalha.' }, - "psyblade": { - name: "Psyblade", - effect: "O usuário fende o alvo com uma lâmina etérea. O poder deste movimento é aumentado em 50% se o usuário estiver no Electric Terrain." + 'psyblade': { + name: 'Psyblade', + effect: 'O usuário fende o alvo com uma lâmina etérea. O poder deste movimento é aumentado em 50% se o usuário estiver no Electric Terrain.' }, - "hydroSteam": { - name: "Hydro Steam", - effect: "O usuário ataca o alvo com água fervente. O poder deste movimento não é reduzido sob sol forte, mas sim aumentado em 50%." + 'hydroSteam': { + name: 'Hydro Steam', + effect: 'O usuário ataca o alvo com água fervente. O poder deste movimento não é reduzido sob sol forte, mas sim aumentado em 50%.' }, - "ruination": { - name: "Ruination", - effect: "O usuário invoca um desastre ruinoso. Isso corta os PS do alvo pela metade." + 'ruination': { + name: 'Ruination', + effect: 'O usuário invoca um desastre ruinoso. Isso corta os PS do alvo pela metade.' }, - "collisionCourse": { - name: "Collision Course", - effect: "O usuário se transforma e cai no chão, causando uma explosão pré-histórica massiva. O poder deste movimento é aumentado mais do que o usual se for um golpe super eficaz." + 'collisionCourse': { + name: 'Collision Course', + effect: 'O usuário se transforma e cai no chão, causando uma explosão pré-histórica massiva. O poder deste movimento é aumentado mais do que o usual se for um golpe super eficaz.' }, - "electroDrift": { - name: "Electro Drift", - effect: "O usuário avança a velocidades ultra-rápidas, perfurando o alvo com eletricidade futurista. O poder deste movimento é aumentado mais do que o usual se for um golpe super eficaz." + 'electroDrift': { + name: 'Electro Drift', + effect: 'O usuário avança a velocidades ultra-rápidas, perfurando o alvo com eletricidade futurista. O poder deste movimento é aumentado mais do que o usual se for um golpe super eficaz.' }, - "shedTail": { - name: "Shed Tail", - effect: "O usuário cria um substituto para si mesmo usando seus próprios PS antes de trocar de lugar com um Pokémon da equipe que está esperando." + 'shedTail': { + name: 'Shed Tail', + effect: 'O usuário cria um substituto para si mesmo usando seus próprios PS antes de trocar de lugar com um Pokémon da equipe que está esperando.' }, - "chillyReception": { - name: "Chilly Reception", - effect: "O usuário conta uma piada terrivelmente ruim antes de trocar de lugar com um Pokémon da equipe que está esperando. Isso invoca uma nevasca que dura cinco turnos." + 'chillyReception': { + name: 'Chilly Reception', + effect: 'O usuário conta uma piada terrivelmente ruim antes de trocar de lugar com um Pokémon da equipe que está esperando. Isso invoca uma nevasca que dura cinco turnos.' }, - "tidyUp": { - name: "Tidy Up", - effect: "O usuário arruma e remove os efeitos de Spikes, Stealth Rock, Sticky Web, Toxic Spikes e Substitute. Isso também aumenta os atributos de Ataque e Velocidade do usuário." + 'tidyUp': { + name: 'Tidy Up', + effect: 'O usuário arruma e remove os efeitos de Spikes, Stealth Rock, Sticky Web, Toxic Spikes e Substitute. Isso também aumenta os atributos de Ataque e Velocidade do usuário.' }, - "snowscape": { - name: "Snowscape", - effect: "O usuário invoca uma tempestade de neve que dura cinco turnos. Isso aumenta os atributos de Defesa dos tipos Gelo." + 'snowscape': { + name: 'Snowscape', + effect: 'O usuário invoca uma tempestade de neve que dura cinco turnos. Isso aumenta os atributos de Defesa dos tipos Gelo.' }, - "pounce": { - name: "Pounce", - effect: "O usuário ataca saltando sobre o alvo. Isso também reduz a Velocidade do alvo." + 'pounce': { + name: 'Pounce', + effect: 'O usuário ataca saltando sobre o alvo. Isso também reduz a Velocidade do alvo.' }, - "trailblaze": { - name: "Trailblaze", - effect: "O usuário ataca repentinamente como se estivesse saltando de dentro da grama alta. A agilidade do usuário aumenta sua Velocidade." + 'trailblaze': { + name: 'Trailblaze', + effect: 'O usuário ataca repentinamente como se estivesse saltando de dentro da grama alta. A agilidade do usuário aumenta sua Velocidade.' }, - "chillingWater": { - name: "Chilling Water", - effect: "O usuário ataca o alvo derramando sobre ele água tão fria que suga seu poder. Isso também reduz o atributo de Ataque do alvo." + 'chillingWater': { + name: 'Chilling Water', + effect: 'O usuário ataca o alvo derramando sobre ele água tão fria que suga seu poder. Isso também reduz o atributo de Ataque do alvo.' }, - "hyperDrill": { - name: "Hyper Drill", - effect: "O usuário gira a parte pontiaguda de seu corpo em alta velocidade para perfurar o alvo. Este ataque pode atingir um alvo que esteja usando um movimento como Protect ou Detect." + 'hyperDrill': { + name: 'Hyper Drill', + effect: 'O usuário gira a parte pontiaguda de seu corpo em alta velocidade para perfurar o alvo. Este ataque pode atingir um alvo que esteja usando um movimento como Protect ou Detect.' }, - "twinBeam": { - name: "Twin Beam", - effect: "O usuário dispara feixes místicos de seus olhos para causar dano. O alvo é atingido duas vezes seguidas." + 'twinBeam': { + name: 'Twin Beam', + effect: 'O usuário dispara feixes místicos de seus olhos para causar dano. O alvo é atingido duas vezes seguidas.' }, - "rageFist": { - name: "Rage Fist", - effect: "O usuário converte sua raiva em energia para atacar. Quanto mais vezes o usuário foi atingido por ataques, maior o poder do movimento." + 'rageFist': { + name: 'Rage Fist', + effect: 'O usuário converte sua raiva em energia para atacar. Quanto mais vezes o usuário foi atingido por ataques, maior o poder do movimento.' }, - "armorCannon": { - name: "Armor Cannon", - effect: "O usuário dispara sua própria armadura como projéteis ardentes. Isso também reduz os atributos de Defesa e Defesa Esp. do usuário." + 'armorCannon': { + name: 'Armor Cannon', + effect: 'O usuário dispara sua própria armadura como projéteis ardentes. Isso também reduz os atributos de Defesa e Defesa Esp. do usuário.' }, - "bitterBlade": { - name: "Bitter Blade", - effect: "O usuário concentra seus sentimentos amargos em relação ao mundo dos vivos em um ataque cortante. Os PS do usuário são restaurados em até metade do dano causado ao alvo." + 'bitterBlade': { + name: 'Bitter Blade', + effect: 'O usuário concentra seus sentimentos amargos em relação ao mundo dos vivos em um ataque cortante. Os PS do usuário são restaurados em até metade do dano causado ao alvo.' }, - "doubleShock": { - name: "Double Shock", - effect: "O usuário descarrega toda a eletricidade de seu corpo para executar um ataque de alto dano. Após usar este movimento, o usuário não será mais do tipo Elétrico." + 'doubleShock': { + name: 'Double Shock', + effect: 'O usuário descarrega toda a eletricidade de seu corpo para executar um ataque de alto dano. Após usar este movimento, o usuário não será mais do tipo Elétrico.' }, - "gigatonHammer": { - name: "Gigaton Hammer", - effect: "O usuário balança todo o seu corpo para atacar com seu enorme martelo. Este movimento não pode ser usado duas vezes seguidas." + 'gigatonHammer': { + name: 'Gigaton Hammer', + effect: 'O usuário balança todo o seu corpo para atacar com seu enorme martelo. Este movimento não pode ser usado duas vezes seguidas.' }, - "comeuppance": { - name: "Comeuppance", - effect: "O usuário retalia com muito mais força contra o oponente que causou o último dano a ele." + 'comeuppance': { + name: 'Comeuppance', + effect: 'O usuário retalia com muito mais força contra o oponente que causou o último dano a ele.' }, - "aquaCutter": { - name: "Aqua Cutter", - effect: "O usuário expele água pressurizada para cortar o alvo como uma lâmina. Este movimento tem uma chance aumentada de resultar em um golpe crítico." + 'aquaCutter': { + name: 'Aqua Cutter', + effect: 'O usuário expele água pressurizada para cortar o alvo como uma lâmina. Este movimento tem uma chance aumentada de resultar em um golpe crítico.' }, - "blazingTorque": { - name: "Blazing Torque", - effect: "O usuário acelera seu motor ardente no alvo. Isso também pode deixar o alvo queimado." + 'blazingTorque': { + name: 'Blazing Torque', + effect: 'O usuário acelera seu motor ardente no alvo. Isso também pode deixar o alvo queimado.' }, - "wickedTorque": { - name: "Wicked Torque", - effect: "O usuário acelera seu motor no alvo com intenção maliciosa. Isso pode fazer o alvo adormecer." + 'wickedTorque': { + name: 'Wicked Torque', + effect: 'O usuário acelera seu motor no alvo com intenção maliciosa. Isso pode fazer o alvo adormecer.' }, - "noxiousTorque": { - name: "Noxious Torque", - effect: "O usuário acelera seu motor venenoso no alvo. Isso também pode envenenar o alvo." + 'noxiousTorque': { + name: 'Noxious Torque', + effect: 'O usuário acelera seu motor venenoso no alvo. Isso também pode envenenar o alvo.' }, - "combatTorque": { - name: "Combat Torque", - effect: "O usuário acelera seu motor com força no alvo. Isso também pode deixar o alvo paralisado." + 'combatTorque': { + name: 'Combat Torque', + effect: 'O usuário acelera seu motor com força no alvo. Isso também pode deixar o alvo paralisado.' }, - "magicalTorque": { - name: "Magical Torque", - effect: "O usuário acelera seu motor de fadas no alvo. Isso também pode confundir o alvo." + 'magicalTorque': { + name: 'Magical Torque', + effect: 'O usuário acelera seu motor de fadas no alvo. Isso também pode confundir o alvo.' }, - "bloodMoon": { - name: "Blood Moon", - effect: "O usuário libera toda a força de seu espírito de uma lua cheia que brilha tão vermelha quanto o sangue. Este movimento não pode ser usado duas vezes seguidas." + 'bloodMoon': { + name: 'Blood Moon', + effect: 'O usuário libera toda a força de seu espírito de uma lua cheia que brilha tão vermelha quanto o sangue. Este movimento não pode ser usado duas vezes seguidas.' }, - "matchaGotcha": { - name: "Matcha Gotcha", - effect: "O usuário dispara um jato de chá que misturou. Os PS do usuário são restaurados em até metade do dano causado ao alvo. Isso também pode deixar o alvo queimado." + 'matchaGotcha': { + name: 'Matcha Gotcha', + effect: 'O usuário dispara um jato de chá que misturou. Os PS do usuário são restaurados em até metade do dano causado ao alvo. Isso também pode deixar o alvo queimado.' }, - "syrupBomb": { - name: "Syrup Bomb", - effect: "O usuário detona uma explosão de xarope de doces pegajoso, que reveste o alvo e faz o atributo de Velocidade do alvo cair a cada turno por três turnos." + 'syrupBomb': { + name: 'Syrup Bomb', + effect: 'O usuário detona uma explosão de xarope de doces pegajoso, que reveste o alvo e faz o atributo de Velocidade do alvo cair a cada turno por três turnos.' }, - "ivyCudgel": { - name: "Ivy Cudgel", - effect: "O usuário golpeia com um porrete envolto em hera. O tipo deste movimento muda dependendo da máscara usada pelo usuário, e tem uma chance aumentada de resultar em um golpe crítico." + 'ivyCudgel': { + name: 'Ivy Cudgel', + effect: 'O usuário golpeia com um porrete envolto em hera. O tipo deste movimento muda dependendo da máscara usada pelo usuário, e tem uma chance aumentada de resultar em um golpe crítico.' }, - "electroShot": { - name: "Electro Shot", - effect: "O usuário acumula eletricidade no primeiro turno, aumentando suo atributo de Ataque Esp., e então dispara um tiro de alta voltagem no próximo turno. O tiro será disparado imediatamente na chuva." + 'electroShot': { + name: 'Electro Shot', + effect: 'O usuário acumula eletricidade no primeiro turno, aumentando suo atributo de Ataque Esp., e então dispara um tiro de alta voltagem no próximo turno. O tiro será disparado imediatamente na chuva.' }, - "teraStarstorm": { - name: "Tera Starstorm", - effect: "Com o poder de seus cristais, o usuário bombardeia e elimina o alvo. Quando usado por Terapagos em sua Forma Estelar, este movimento causa dano a todos os Pokémon oponentes." + 'teraStarstorm': { + name: 'Tera Starstorm', + effect: 'Com o poder de seus cristais, o usuário bombardeia e elimina o alvo. Quando usado por Terapagos em sua Forma Estelar, este movimento causa dano a todos os Pokémon oponentes.' }, - "fickleBeam": { - name: "Fickle Beam", - effect: "O usuário dispara um feixe de luz para causar dano. Às vezes, todas as cabeças do usuário disparam feixes ao mesmo tempo, dobrando o poder do movimento." + 'fickleBeam': { + name: 'Fickle Beam', + effect: 'O usuário dispara um feixe de luz para causar dano. Às vezes, todas as cabeças do usuário disparam feixes ao mesmo tempo, dobrando o poder do movimento.' }, - "burningBulwark": { - name: "Burning Bulwark", - effect: "A pele intensamente quente do usuário o protege de ataques e também queima qualquer atacante que faça contato direto." + 'burningBulwark': { + name: 'Burning Bulwark', + effect: 'A pele intensamente quente do usuário o protege de ataques e também queima qualquer atacante que faça contato direto.' }, - "thunderclap": { - name: "Thunderclap", - effect: "Este movimento permite que o usuário ataque primeiro com um choque de eletricidade. Este movimento falha se o alvo não estiver preparando um ataque." + 'thunderclap': { + name: 'Thunderclap', + effect: 'Este movimento permite que o usuário ataque primeiro com um choque de eletricidade. Este movimento falha se o alvo não estiver preparando um ataque.' }, - "mightyCleave": { - name: "Mighty Cleave", - effect: "O usuário empunha a luz que se acumulou no topo de sua cabeça para cortar o alvo. Este movimento atinge mesmo se o alvo se proteger." + 'mightyCleave': { + name: 'Mighty Cleave', + effect: 'O usuário empunha a luz que se acumulou no topo de sua cabeça para cortar o alvo. Este movimento atinge mesmo se o alvo se proteger.' }, - "tachyonCutter": { - name: "Tachyon Cutter", - effect: "O usuário ataca lançando lâminas de partículas no alvo duas vezes seguidas. Este ataque nunca erra." + 'tachyonCutter': { + name: 'Tachyon Cutter', + effect: 'O usuário ataca lançando lâminas de partículas no alvo duas vezes seguidas. Este ataque nunca erra.' }, - "hardPress": { - name: "Hard Press", - effect: "O alvo é esmagado com um braço, uma garra ou algo do tipo para causar dano. Quanto mais PS o alvo tiver, maior o poder do movimento." + 'hardPress': { + name: 'Hard Press', + effect: 'O alvo é esmagado com um braço, uma garra ou algo do tipo para causar dano. Quanto mais PS o alvo tiver, maior o poder do movimento.' }, - "dragonCheer": { - name: "Dragon Cheer", - effect: "O usuário eleva o moral de seus aliados com um grito dracônico, para que seus futuros ataques tenham uma chance aumentada de resultar em golpes críticos. Isso anima mais os tipos Dragão." + 'dragonCheer': { + name: 'Dragon Cheer', + effect: 'O usuário eleva o moral de seus aliados com um grito dracônico, para que seus futuros ataques tenham uma chance aumentada de resultar em golpes críticos. Isso anima mais os tipos Dragão.' }, - "alluringVoice": { - name: "Alluring Voice", - effect: "O usuário ataca o alvo usando sua voz angelical. Isso também confunde o alvo se seus atributos tiverem sido aumentadas durante o turno." + 'alluringVoice': { + name: 'Alluring Voice', + effect: 'O usuário ataca o alvo usando sua voz angelical. Isso também confunde o alvo se seus atributos tiverem sido aumentadas durante o turno.' }, - "temperFlare": { - name: "Temper Flare", - effect: "Impulsionado pelo desespero, o usuário ataca o alvo. O poder deste movimento é dobrado se o movimento anterior do usuário tiver falhado." + 'temperFlare': { + name: 'Temper Flare', + effect: 'Impulsionado pelo desespero, o usuário ataca o alvo. O poder deste movimento é dobrado se o movimento anterior do usuário tiver falhado.' }, - "supercellSlam": { - name: "Supercell Slam", - effect: "O usuário eletrifica seu corpo e cai sobre o alvo para causar dano. Se este movimento errar, o usuário sofre dano." + 'supercellSlam': { + name: 'Supercell Slam', + effect: 'O usuário eletrifica seu corpo e cai sobre o alvo para causar dano. Se este movimento errar, o usuário sofre dano.' }, - "psychicNoise": { - name: "Psychic Noise", - effect: "O usuário ataca o alvo com ondas sonoras desagradáveis. Por dois turnos, o alvo é impedido de recuperar PS através de movimentos, Habilidades ou itens mantidos." + 'psychicNoise': { + name: 'Psychic Noise', + effect: 'O usuário ataca o alvo com ondas sonoras desagradáveis. Por dois turnos, o alvo é impedido de recuperar PS através de movimentos, Habilidades ou itens mantidos.' }, - "upperHand": { - name: "Upper Hand", - effect: "O usuário reage ao movimento do alvo e o ataca com o calcanhar da palma da mão, fazendo o alvo hesitar. Este movimento falha se o alvo não estiver preparando um movimento de prioridade." + 'upperHand': { + name: 'Upper Hand', + effect: 'O usuário reage ao movimento do alvo e o ataca com o calcanhar da palma da mão, fazendo o alvo hesitar. Este movimento falha se o alvo não estiver preparando um movimento de prioridade.' }, - "malignantChain": { - name: "Malignant Chain", - effect: "O usuário derrama toxinas no alvo envolvendo-o em uma corrente tóxica e corrosiva. Isso também pode deixar o alvo seriamente envenenado." + 'malignantChain': { + name: 'Malignant Chain', + effect: 'O usuário derrama toxinas no alvo envolvendo-o em uma corrente tóxica e corrosiva. Isso também pode deixar o alvo seriamente envenenado.' } -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/pt_BR/nature.ts b/src/locales/pt_BR/nature.ts index 3cb33340e2c..8c957c31ca8 100644 --- a/src/locales/pt_BR/nature.ts +++ b/src/locales/pt_BR/nature.ts @@ -1,29 +1,29 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const nature: SimpleTranslationEntries = { - "Hardy": "Destemida", - "Lonely": "Solitária", - "Brave": "Valente", - "Adamant": "Rígida", - "Naughty": "Teimosa", - "Bold": "Corajosa", - "Docile": "Dócil", - "Relaxed": "Relaxada", - "Impish": "Inquieta", - "Lax": "Relaxada", - "Timid": "Tímida", - "Hasty": "Apressada", - "Serious": "Séria", - "Jolly": "Alegre", - "Naive": "Ingênua", - "Modest": "Modesta", - "Mild": "Mansa", - "Quiet": "Quieta", - "Bashful": "Atrapalhada", - "Rash": "Rabugenta", - "Calm": "Calma", - "Gentle": "Gentil", - "Sassy": "Atrevida", - "Careful": "Cuidadosa", - "Quirky": "Peculiar", -} as const; \ No newline at end of file + 'Hardy': 'Destemida', + 'Lonely': 'Solitária', + 'Brave': 'Valente', + 'Adamant': 'Rígida', + 'Naughty': 'Teimosa', + 'Bold': 'Corajosa', + 'Docile': 'Dócil', + 'Relaxed': 'Relaxada', + 'Impish': 'Inquieta', + 'Lax': 'Relaxada', + 'Timid': 'Tímida', + 'Hasty': 'Apressada', + 'Serious': 'Séria', + 'Jolly': 'Alegre', + 'Naive': 'Ingênua', + 'Modest': 'Modesta', + 'Mild': 'Mansa', + 'Quiet': 'Quieta', + 'Bashful': 'Atrapalhada', + 'Rash': 'Rabugenta', + 'Calm': 'Calma', + 'Gentle': 'Gentil', + 'Sassy': 'Atrevida', + 'Careful': 'Cuidadosa', + 'Quirky': 'Peculiar', +} as const; diff --git a/src/locales/pt_BR/pokeball.ts b/src/locales/pt_BR/pokeball.ts index 75d81ebde03..527cf90d3b1 100644 --- a/src/locales/pt_BR/pokeball.ts +++ b/src/locales/pt_BR/pokeball.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokeball: SimpleTranslationEntries = { - "pokeBall": "Poké Bola", - "greatBall": "Grande Bola", - "ultraBall": "Ultra Bola", - "rogueBall": "Bola Rogue", - "masterBall": "Bola Mestra", - "luxuryBall": "Bola Luxo", -} as const; \ No newline at end of file + 'pokeBall': 'Poké Bola', + 'greatBall': 'Grande Bola', + 'ultraBall': 'Ultra Bola', + 'rogueBall': 'Bola Rogue', + 'masterBall': 'Bola Mestra', + 'luxuryBall': 'Bola Luxo', +} as const; diff --git a/src/locales/pt_BR/pokemon-info.ts b/src/locales/pt_BR/pokemon-info.ts index 99cef266c6f..497d114b5c2 100644 --- a/src/locales/pt_BR/pokemon-info.ts +++ b/src/locales/pt_BR/pokemon-info.ts @@ -1,41 +1,41 @@ -import { PokemonInfoTranslationEntries } from "#app/plugins/i18n"; +import { PokemonInfoTranslationEntries } from '#app/plugins/i18n'; export const pokemonInfo: PokemonInfoTranslationEntries = { - Stat: { - "HP": "PS", - "HPshortened": "PS", - "ATK": "Ataque", - "ATKshortened": "Ata", - "DEF": "Defesa", - "DEFshortened": "Def", - "SPATK": "At. Esp.", - "SPATKshortened": "AtEsp", - "SPDEF": "Def. Esp.", - "SPDEFshortened": "DefEsp", - "SPD": "Veloc.", - "SPDshortened": "Veloc." - }, + Stat: { + 'HP': 'PS', + 'HPshortened': 'PS', + 'ATK': 'Ataque', + 'ATKshortened': 'Ata', + 'DEF': 'Defesa', + 'DEFshortened': 'Def', + 'SPATK': 'At. Esp.', + 'SPATKshortened': 'AtEsp', + 'SPDEF': 'Def. Esp.', + 'SPDEFshortened': 'DefEsp', + 'SPD': 'Veloc.', + 'SPDshortened': 'Veloc.' + }, - Type: { - "UNKNOWN": "Desconhecido", - "NORMAL": "Normal", - "FIGHTING": "Lutador", - "FLYING": "Voador", - "POISON": "Veneno", - "GROUND": "Terra", - "ROCK": "Pedra", - "BUG": "Inseto", - "GHOST": "Fantasma", - "STEEL": "Aço", - "FIRE": "Fogo", - "WATER": "Água", - "GRASS": "Grama", - "ELECTRIC": "Elétrico", - "PSYCHIC": "Psíquico", - "ICE": "Gelo", - "DRAGON": "Dragão", - "DARK": "Sombrio", - "FAIRY": "Fada", - "STELLAR": "Estelar" - }, -} as const; \ No newline at end of file + Type: { + 'UNKNOWN': 'Desconhecido', + 'NORMAL': 'Normal', + 'FIGHTING': 'Lutador', + 'FLYING': 'Voador', + 'POISON': 'Veneno', + 'GROUND': 'Terra', + 'ROCK': 'Pedra', + 'BUG': 'Inseto', + 'GHOST': 'Fantasma', + 'STEEL': 'Aço', + 'FIRE': 'Fogo', + 'WATER': 'Água', + 'GRASS': 'Grama', + 'ELECTRIC': 'Elétrico', + 'PSYCHIC': 'Psíquico', + 'ICE': 'Gelo', + 'DRAGON': 'Dragão', + 'DARK': 'Sombrio', + 'FAIRY': 'Fada', + 'STELLAR': 'Estelar' + }, +} as const; diff --git a/src/locales/pt_BR/pokemon.ts b/src/locales/pt_BR/pokemon.ts index e94d37aef29..ff130a73e61 100644 --- a/src/locales/pt_BR/pokemon.ts +++ b/src/locales/pt_BR/pokemon.ts @@ -1,1086 +1,1086 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokemon: SimpleTranslationEntries = { - "bulbasaur": "Bulbasaur", - "ivysaur": "Ivysaur", - "venusaur": "Venusaur", - "charmander": "Charmander", - "charmeleon": "Charmeleon", - "charizard": "Charizard", - "squirtle": "Squirtle", - "wartortle": "Wartortle", - "blastoise": "Blastoise", - "caterpie": "Caterpie", - "metapod": "Metapod", - "butterfree": "Butterfree", - "weedle": "Weedle", - "kakuna": "Kakuna", - "beedrill": "Beedrill", - "pidgey": "Pidgey", - "pidgeotto": "Pidgeotto", - "pidgeot": "Pidgeot", - "rattata": "Rattata", - "raticate": "Raticate", - "spearow": "Spearow", - "fearow": "Fearow", - "ekans": "Ekans", - "arbok": "Arbok", - "pikachu": "Pikachu", - "raichu": "Raichu", - "sandshrew": "Sandshrew", - "sandslash": "Sandslash", - "nidoran_f": "Nidoran♀", - "nidorina": "Nidorina", - "nidoqueen": "Nidoqueen", - "nidoran_m": "Nidoran♂", - "nidorino": "Nidorino", - "nidoking": "Nidoking", - "clefairy": "Clefairy", - "clefable": "Clefable", - "vulpix": "Vulpix", - "ninetales": "Ninetales", - "jigglypuff": "Jigglypuff", - "wigglytuff": "Wigglytuff", - "zubat": "Zubat", - "golbat": "Golbat", - "oddish": "Oddish", - "gloom": "Gloom", - "vileplume": "Vileplume", - "paras": "Paras", - "parasect": "Parasect", - "venonat": "Venonat", - "venomoth": "Venomoth", - "diglett": "Diglett", - "dugtrio": "Dugtrio", - "meowth": "Meowth", - "persian": "Persian", - "psyduck": "Psyduck", - "golduck": "Golduck", - "mankey": "Mankey", - "primeape": "Primeape", - "growlithe": "Growlithe", - "arcanine": "Arcanine", - "poliwag": "Poliwag", - "poliwhirl": "Poliwhirl", - "poliwrath": "Poliwrath", - "abra": "Abra", - "kadabra": "Kadabra", - "alakazam": "Alakazam", - "machop": "Machop", - "machoke": "Machoke", - "machamp": "Machamp", - "bellsprout": "Bellsprout", - "weepinbell": "Weepinbell", - "victreebel": "Victreebel", - "tentacool": "Tentacool", - "tentacruel": "Tentacruel", - "geodude": "Geodude", - "graveler": "Graveler", - "golem": "Golem", - "ponyta": "Ponyta", - "rapidash": "Rapidash", - "slowpoke": "Slowpoke", - "slowbro": "Slowbro", - "magnemite": "Magnemite", - "magneton": "Magneton", - "farfetchd": "Farfetch'd", - "doduo": "Doduo", - "dodrio": "Dodrio", - "seel": "Seel", - "dewgong": "Dewgong", - "grimer": "Grimer", - "muk": "Muk", - "shellder": "Shellder", - "cloyster": "Cloyster", - "gastly": "Gastly", - "haunter": "Haunter", - "gengar": "Gengar", - "onix": "Onix", - "drowzee": "Drowzee", - "hypno": "Hypno", - "krabby": "Krabby", - "kingler": "Kingler", - "voltorb": "Voltorb", - "electrode": "Electrode", - "exeggcute": "Exeggcute", - "exeggutor": "Exeggutor", - "cubone": "Cubone", - "marowak": "Marowak", - "hitmonlee": "Hitmonlee", - "hitmonchan": "Hitmonchan", - "lickitung": "Lickitung", - "koffing": "Koffing", - "weezing": "Weezing", - "rhyhorn": "Rhyhorn", - "rhydon": "Rhydon", - "chansey": "Chansey", - "tangela": "Tangela", - "kangaskhan": "Kangaskhan", - "horsea": "Horsea", - "seadra": "Seadra", - "goldeen": "Goldeen", - "seaking": "Seaking", - "staryu": "Staryu", - "starmie": "Starmie", - "mr_mime": "Mr. Mime", - "scyther": "Scyther", - "jynx": "Jynx", - "electabuzz": "Electabuzz", - "magmar": "Magmar", - "pinsir": "Pinsir", - "tauros": "Tauros", - "magikarp": "Magikarp", - "gyarados": "Gyarados", - "lapras": "Lapras", - "ditto": "Ditto", - "eevee": "Eevee", - "vaporeon": "Vaporeon", - "jolteon": "Jolteon", - "flareon": "Flareon", - "porygon": "Porygon", - "omanyte": "Omanyte", - "omastar": "Omastar", - "kabuto": "Kabuto", - "kabutops": "Kabutops", - "aerodactyl": "Aerodactyl", - "snorlax": "Snorlax", - "articuno": "Articuno", - "zapdos": "Zapdos", - "moltres": "Moltres", - "dratini": "Dratini", - "dragonair": "Dragonair", - "dragonite": "Dragonite", - "mewtwo": "Mewtwo", - "mew": "Mew", - "chikorita": "Chikorita", - "bayleef": "Bayleef", - "meganium": "Meganium", - "cyndaquil": "Cyndaquil", - "quilava": "Quilava", - "typhlosion": "Typhlosion", - "totodile": "Totodile", - "croconaw": "Croconaw", - "feraligatr": "Feraligatr", - "sentret": "Sentret", - "furret": "Furret", - "hoothoot": "Hoothoot", - "noctowl": "Noctowl", - "ledyba": "Ledyba", - "ledian": "Ledian", - "spinarak": "Spinarak", - "ariados": "Ariados", - "crobat": "Crobat", - "chinchou": "Chinchou", - "lanturn": "Lanturn", - "pichu": "Pichu", - "cleffa": "Cleffa", - "igglybuff": "Igglybuff", - "togepi": "Togepi", - "togetic": "Togetic", - "natu": "Natu", - "xatu": "Xatu", - "mareep": "Mareep", - "flaaffy": "Flaaffy", - "ampharos": "Ampharos", - "bellossom": "Bellossom", - "marill": "Marill", - "azumarill": "Azumarill", - "sudowoodo": "Sudowoodo", - "politoed": "Politoed", - "hoppip": "Hoppip", - "skiploom": "Skiploom", - "jumpluff": "Jumpluff", - "aipom": "Aipom", - "sunkern": "Sunkern", - "sunflora": "Sunflora", - "yanma": "Yanma", - "wooper": "Wooper", - "quagsire": "Quagsire", - "espeon": "Espeon", - "umbreon": "Umbreon", - "murkrow": "Murkrow", - "slowking": "Slowking", - "misdreavus": "Misdreavus", - "unown": "Unown", - "wobbuffet": "Wobbuffet", - "girafarig": "Girafarig", - "pineco": "Pineco", - "forretress": "Forretress", - "dunsparce": "Dunsparce", - "gligar": "Gligar", - "steelix": "Steelix", - "snubbull": "Snubbull", - "granbull": "Granbull", - "qwilfish": "Qwilfish", - "scizor": "Scizor", - "shuckle": "Shuckle", - "heracross": "Heracross", - "sneasel": "Sneasel", - "teddiursa": "Teddiursa", - "ursaring": "Ursaring", - "slugma": "Slugma", - "magcargo": "Magcargo", - "swinub": "Swinub", - "piloswine": "Piloswine", - "corsola": "Corsola", - "remoraid": "Remoraid", - "octillery": "Octillery", - "delibird": "Delibird", - "mantine": "Mantine", - "skarmory": "Skarmory", - "houndour": "Houndour", - "houndoom": "Houndoom", - "kingdra": "Kingdra", - "phanpy": "Phanpy", - "donphan": "Donphan", - "porygon2": "Porygon2", - "stantler": "Stantler", - "smeargle": "Smeargle", - "tyrogue": "Tyrogue", - "hitmontop": "Hitmontop", - "smoochum": "Smoochum", - "elekid": "Elekid", - "magby": "Magby", - "miltank": "Miltank", - "blissey": "Blissey", - "raikou": "Raikou", - "entei": "Entei", - "suicune": "Suicune", - "larvitar": "Larvitar", - "pupitar": "Pupitar", - "tyranitar": "Tyranitar", - "lugia": "Lugia", - "ho_oh": "Ho-Oh", - "celebi": "Celebi", - "treecko": "Treecko", - "grovyle": "Grovyle", - "sceptile": "Sceptile", - "torchic": "Torchic", - "combusken": "Combusken", - "blaziken": "Blaziken", - "mudkip": "Mudkip", - "marshtomp": "Marshtomp", - "swampert": "Swampert", - "poochyena": "Poochyena", - "mightyena": "Mightyena", - "zigzagoon": "Zigzagoon", - "linoone": "Linoone", - "wurmple": "Wurmple", - "silcoon": "Silcoon", - "beautifly": "Beautifly", - "cascoon": "Cascoon", - "dustox": "Dustox", - "lotad": "Lotad", - "lombre": "Lombre", - "ludicolo": "Ludicolo", - "seedot": "Seedot", - "nuzleaf": "Nuzleaf", - "shiftry": "Shiftry", - "taillow": "Taillow", - "swellow": "Swellow", - "wingull": "Wingull", - "pelipper": "Pelipper", - "ralts": "Ralts", - "kirlia": "Kirlia", - "gardevoir": "Gardevoir", - "surskit": "Surskit", - "masquerain": "Masquerain", - "shroomish": "Shroomish", - "breloom": "Breloom", - "slakoth": "Slakoth", - "vigoroth": "Vigoroth", - "slaking": "Slaking", - "nincada": "Nincada", - "ninjask": "Ninjask", - "shedinja": "Shedinja", - "whismur": "Whismur", - "loudred": "Loudred", - "exploud": "Exploud", - "makuhita": "Makuhita", - "hariyama": "Hariyama", - "azurill": "Azurill", - "nosepass": "Nosepass", - "skitty": "Skitty", - "delcatty": "Delcatty", - "sableye": "Sableye", - "mawile": "Mawile", - "aron": "Aron", - "lairon": "Lairon", - "aggron": "Aggron", - "meditite": "Meditite", - "medicham": "Medicham", - "electrike": "Electrike", - "manectric": "Manectric", - "plusle": "Plusle", - "minun": "Minun", - "volbeat": "Volbeat", - "illumise": "Illumise", - "roselia": "Roselia", - "gulpin": "Gulpin", - "swalot": "Swalot", - "carvanha": "Carvanha", - "sharpedo": "Sharpedo", - "wailmer": "Wailmer", - "wailord": "Wailord", - "numel": "Numel", - "camerupt": "Camerupt", - "torkoal": "Torkoal", - "spoink": "Spoink", - "grumpig": "Grumpig", - "spinda": "Spinda", - "trapinch": "Trapinch", - "vibrava": "Vibrava", - "flygon": "Flygon", - "cacnea": "Cacnea", - "cacturne": "Cacturne", - "swablu": "Swablu", - "altaria": "Altaria", - "zangoose": "Zangoose", - "seviper": "Seviper", - "lunatone": "Lunatone", - "solrock": "Solrock", - "barboach": "Barboach", - "whiscash": "Whiscash", - "corphish": "Corphish", - "crawdaunt": "Crawdaunt", - "baltoy": "Baltoy", - "claydol": "Claydol", - "lileep": "Lileep", - "cradily": "Cradily", - "anorith": "Anorith", - "armaldo": "Armaldo", - "feebas": "Feebas", - "milotic": "Milotic", - "castform": "Castform", - "kecleon": "Kecleon", - "shuppet": "Shuppet", - "banette": "Banette", - "duskull": "Duskull", - "dusclops": "Dusclops", - "tropius": "Tropius", - "chimecho": "Chimecho", - "absol": "Absol", - "wynaut": "Wynaut", - "snorunt": "Snorunt", - "glalie": "Glalie", - "spheal": "Spheal", - "sealeo": "Sealeo", - "walrein": "Walrein", - "clamperl": "Clamperl", - "huntail": "Huntail", - "gorebyss": "Gorebyss", - "relicanth": "Relicanth", - "luvdisc": "Luvdisc", - "bagon": "Bagon", - "shelgon": "Shelgon", - "salamence": "Salamence", - "beldum": "Beldum", - "metang": "Metang", - "metagross": "Metagross", - "regirock": "Regirock", - "regice": "Regice", - "registeel": "Registeel", - "latias": "Latias", - "latios": "Latios", - "kyogre": "Kyogre", - "groudon": "Groudon", - "rayquaza": "Rayquaza", - "jirachi": "Jirachi", - "deoxys": "Deoxys", - "turtwig": "Turtwig", - "grotle": "Grotle", - "torterra": "Torterra", - "chimchar": "Chimchar", - "monferno": "Monferno", - "infernape": "Infernape", - "piplup": "Piplup", - "prinplup": "Prinplup", - "empoleon": "Empoleon", - "starly": "Starly", - "staravia": "Staravia", - "staraptor": "Staraptor", - "bidoof": "Bidoof", - "bibarel": "Bibarel", - "kricketot": "Kricketot", - "kricketune": "Kricketune", - "shinx": "Shinx", - "luxio": "Luxio", - "luxray": "Luxray", - "budew": "Budew", - "roserade": "Roserade", - "cranidos": "Cranidos", - "rampardos": "Rampardos", - "shieldon": "Shieldon", - "bastiodon": "Bastiodon", - "burmy": "Burmy", - "wormadam": "Wormadam", - "mothim": "Mothim", - "combee": "Combee", - "vespiquen": "Vespiquen", - "pachirisu": "Pachirisu", - "buizel": "Buizel", - "floatzel": "Floatzel", - "cherubi": "Cherubi", - "cherrim": "Cherrim", - "shellos": "Shellos", - "gastrodon": "Gastrodon", - "ambipom": "Ambipom", - "drifloon": "Drifloon", - "drifblim": "Drifblim", - "buneary": "Buneary", - "lopunny": "Lopunny", - "mismagius": "Mismagius", - "honchkrow": "Honchkrow", - "glameow": "Glameow", - "purugly": "Purugly", - "chingling": "Chingling", - "stunky": "Stunky", - "skuntank": "Skuntank", - "bronzor": "Bronzor", - "bronzong": "Bronzong", - "bonsly": "Bonsly", - "mime_jr": "Mime Jr.", - "happiny": "Happiny", - "chatot": "Chatot", - "spiritomb": "Spiritomb", - "gible": "Gible", - "gabite": "Gabite", - "garchomp": "Garchomp", - "munchlax": "Munchlax", - "riolu": "Riolu", - "lucario": "Lucario", - "hippopotas": "Hippopotas", - "hippowdon": "Hippowdon", - "skorupi": "Skorupi", - "drapion": "Drapion", - "croagunk": "Croagunk", - "toxicroak": "Toxicroak", - "carnivine": "Carnivine", - "finneon": "Finneon", - "lumineon": "Lumineon", - "mantyke": "Mantyke", - "snover": "Snover", - "abomasnow": "Abomasnow", - "weavile": "Weavile", - "magnezone": "Magnezone", - "lickilicky": "Lickilicky", - "rhyperior": "Rhyperior", - "tangrowth": "Tangrowth", - "electivire": "Electivire", - "magmortar": "Magmortar", - "togekiss": "Togekiss", - "yanmega": "Yanmega", - "leafeon": "Leafeon", - "glaceon": "Glaceon", - "gliscor": "Gliscor", - "mamoswine": "Mamoswine", - "porygon_z": "Porygon-Z", - "gallade": "Gallade", - "probopass": "Probopass", - "dusknoir": "Dusknoir", - "froslass": "Froslass", - "rotom": "Rotom", - "uxie": "Uxie", - "mesprit": "Mesprit", - "azelf": "Azelf", - "dialga": "Dialga", - "palkia": "Palkia", - "heatran": "Heatran", - "regigigas": "Regigigas", - "giratina": "Giratina", - "cresselia": "Cresselia", - "phione": "Phione", - "manaphy": "Manaphy", - "darkrai": "Darkrai", - "shaymin": "Shaymin", - "arceus": "Arceus", - "victini": "Victini", - "snivy": "Snivy", - "servine": "Servine", - "serperior": "Serperior", - "tepig": "Tepig", - "pignite": "Pignite", - "emboar": "Emboar", - "oshawott": "Oshawott", - "dewott": "Dewott", - "samurott": "Samurott", - "patrat": "Patrat", - "watchog": "Watchog", - "lillipup": "Lillipup", - "herdier": "Herdier", - "stoutland": "Stoutland", - "purrloin": "Purrloin", - "liepard": "Liepard", - "pansage": "Pansage", - "simisage": "Simisage", - "pansear": "Pansear", - "simisear": "Simisear", - "panpour": "Panpour", - "simipour": "Simipour", - "munna": "Munna", - "musharna": "Musharna", - "pidove": "Pidove", - "tranquill": "Tranquill", - "unfezant": "Unfezant", - "blitzle": "Blitzle", - "zebstrika": "Zebstrika", - "roggenrola": "Roggenrola", - "boldore": "Boldore", - "gigalith": "Gigalith", - "woobat": "Woobat", - "swoobat": "Swoobat", - "drilbur": "Drilbur", - "excadrill": "Excadrill", - "audino": "Audino", - "timburr": "Timburr", - "gurdurr": "Gurdurr", - "conkeldurr": "Conkeldurr", - "tympole": "Tympole", - "palpitoad": "Palpitoad", - "seismitoad": "Seismitoad", - "throh": "Throh", - "sawk": "Sawk", - "sewaddle": "Sewaddle", - "swadloon": "Swadloon", - "leavanny": "Leavanny", - "venipede": "Venipede", - "whirlipede": "Whirlipede", - "scolipede": "Scolipede", - "cottonee": "Cottonee", - "whimsicott": "Whimsicott", - "petilil": "Petilil", - "lilligant": "Lilligant", - "basculin": "Basculin", - "sandile": "Sandile", - "krokorok": "Krokorok", - "krookodile": "Krookodile", - "darumaka": "Darumaka", - "darmanitan": "Darmanitan", - "maractus": "Maractus", - "dwebble": "Dwebble", - "crustle": "Crustle", - "scraggy": "Scraggy", - "scrafty": "Scrafty", - "sigilyph": "Sigilyph", - "yamask": "Yamask", - "cofagrigus": "Cofagrigus", - "tirtouga": "Tirtouga", - "carracosta": "Carracosta", - "archen": "Archen", - "archeops": "Archeops", - "trubbish": "Trubbish", - "garbodor": "Garbodor", - "zorua": "Zorua", - "zoroark": "Zoroark", - "minccino": "Minccino", - "cinccino": "Cinccino", - "gothita": "Gothita", - "gothorita": "Gothorita", - "gothitelle": "Gothitelle", - "solosis": "Solosis", - "duosion": "Duosion", - "reuniclus": "Reuniclus", - "ducklett": "Ducklett", - "swanna": "Swanna", - "vanillite": "Vanillite", - "vanillish": "Vanillish", - "vanilluxe": "Vanilluxe", - "deerling": "Deerling", - "sawsbuck": "Sawsbuck", - "emolga": "Emolga", - "karrablast": "Karrablast", - "escavalier": "Escavalier", - "foongus": "Foongus", - "amoonguss": "Amoonguss", - "frillish": "Frillish", - "jellicent": "Jellicent", - "alomomola": "Alomomola", - "joltik": "Joltik", - "galvantula": "Galvantula", - "ferroseed": "Ferroseed", - "ferrothorn": "Ferrothorn", - "klink": "Klink", - "klang": "Klang", - "klinklang": "Klinklang", - "tynamo": "Tynamo", - "eelektrik": "Eelektrik", - "eelektross": "Eelektross", - "elgyem": "Elgyem", - "beheeyem": "Beheeyem", - "litwick": "Litwick", - "lampent": "Lampent", - "chandelure": "Chandelure", - "axew": "Axew", - "fraxure": "Fraxure", - "haxorus": "Haxorus", - "cubchoo": "Cubchoo", - "beartic": "Beartic", - "cryogonal": "Cryogonal", - "shelmet": "Shelmet", - "accelgor": "Accelgor", - "stunfisk": "Stunfisk", - "mienfoo": "Mienfoo", - "mienshao": "Mienshao", - "druddigon": "Druddigon", - "golett": "Golett", - "golurk": "Golurk", - "pawniard": "Pawniard", - "bisharp": "Bisharp", - "bouffalant": "Bouffalant", - "rufflet": "Rufflet", - "braviary": "Braviary", - "vullaby": "Vullaby", - "mandibuzz": "Mandibuzz", - "heatmor": "Heatmor", - "durant": "Durant", - "deino": "Deino", - "zweilous": "Zweilous", - "hydreigon": "Hydreigon", - "larvesta": "Larvesta", - "volcarona": "Volcarona", - "cobalion": "Cobalion", - "terrakion": "Terrakion", - "virizion": "Virizion", - "tornadus": "Tornadus", - "thundurus": "Thundurus", - "reshiram": "Reshiram", - "zekrom": "Zekrom", - "landorus": "Landorus", - "kyurem": "Kyurem", - "keldeo": "Keldeo", - "meloetta": "Meloetta", - "genesect": "Genesect", - "chespin": "Chespin", - "quilladin": "Quilladin", - "chesnaught": "Chesnaught", - "fennekin": "Fennekin", - "braixen": "Braixen", - "delphox": "Delphox", - "froakie": "Froakie", - "frogadier": "Frogadier", - "greninja": "Greninja", - "bunnelby": "Bunnelby", - "diggersby": "Diggersby", - "fletchling": "Fletchling", - "fletchinder": "Fletchinder", - "talonflame": "Talonflame", - "scatterbug": "Scatterbug", - "spewpa": "Spewpa", - "vivillon": "Vivillon", - "litleo": "Litleo", - "pyroar": "Pyroar", - "flabebe": "Flabébé", - "floette": "Floette", - "florges": "Florges", - "skiddo": "Skiddo", - "gogoat": "Gogoat", - "pancham": "Pancham", - "pangoro": "Pangoro", - "furfrou": "Furfrou", - "espurr": "Espurr", - "meowstic": "Meowstic", - "honedge": "Honedge", - "doublade": "Doublade", - "aegislash": "Aegislash", - "spritzee": "Spritzee", - "aromatisse": "Aromatisse", - "swirlix": "Swirlix", - "slurpuff": "Slurpuff", - "inkay": "Inkay", - "malamar": "Malamar", - "binacle": "Binacle", - "barbaracle": "Barbaracle", - "skrelp": "Skrelp", - "dragalge": "Dragalge", - "clauncher": "Clauncher", - "clawitzer": "Clawitzer", - "helioptile": "Helioptile", - "heliolisk": "Heliolisk", - "tyrunt": "Tyrunt", - "tyrantrum": "Tyrantrum", - "amaura": "Amaura", - "aurorus": "Aurorus", - "sylveon": "Sylveon", - "hawlucha": "Hawlucha", - "dedenne": "Dedenne", - "carbink": "Carbink", - "goomy": "Goomy", - "sliggoo": "Sliggoo", - "goodra": "Goodra", - "klefki": "Klefki", - "phantump": "Phantump", - "trevenant": "Trevenant", - "pumpkaboo": "Pumpkaboo", - "gourgeist": "Gourgeist", - "bergmite": "Bergmite", - "avalugg": "Avalugg", - "noibat": "Noibat", - "noivern": "Noivern", - "xerneas": "Xerneas", - "yveltal": "Yveltal", - "zygarde": "Zygarde", - "diancie": "Diancie", - "hoopa": "Hoopa", - "volcanion": "Volcanion", - "rowlet": "Rowlet", - "dartrix": "Dartrix", - "decidueye": "Decidueye", - "litten": "Litten", - "torracat": "Torracat", - "incineroar": "Incineroar", - "popplio": "Popplio", - "brionne": "Brionne", - "primarina": "Primarina", - "pikipek": "Pikipek", - "trumbeak": "Trumbeak", - "toucannon": "Toucannon", - "yungoos": "Yungoos", - "gumshoos": "Gumshoos", - "grubbin": "Grubbin", - "charjabug": "Charjabug", - "vikavolt": "Vikavolt", - "crabrawler": "Crabrawler", - "crabominable": "Crabominable", - "oricorio": "Oricorio", - "cutiefly": "Cutiefly", - "ribombee": "Ribombee", - "rockruff": "Rockruff", - "lycanroc": "Lycanroc", - "wishiwashi": "Wishiwashi", - "mareanie": "Mareanie", - "toxapex": "Toxapex", - "mudbray": "Mudbray", - "mudsdale": "Mudsdale", - "dewpider": "Dewpider", - "araquanid": "Araquanid", - "fomantis": "Fomantis", - "lurantis": "Lurantis", - "morelull": "Morelull", - "shiinotic": "Shiinotic", - "salandit": "Salandit", - "salazzle": "Salazzle", - "stufful": "Stufful", - "bewear": "Bewear", - "bounsweet": "Bounsweet", - "steenee": "Steenee", - "tsareena": "Tsareena", - "comfey": "Comfey", - "oranguru": "Oranguru", - "passimian": "Passimian", - "wimpod": "Wimpod", - "golisopod": "Golisopod", - "sandygast": "Sandygast", - "palossand": "Palossand", - "pyukumuku": "Pyukumuku", - "type_null": "Tipo Nulo", - "silvally": "Silvally", - "minior": "Minior", - "komala": "Komala", - "turtonator": "Turtonator", - "togedemaru": "Togedemaru", - "mimikyu": "Mimikyu", - "bruxish": "Bruxish", - "drampa": "Drampa", - "dhelmise": "Dhelmise", - "jangmo_o": "Jangmo-o", - "hakamo_o": "Hakamo-o", - "kommo_o": "Kommo-o", - "tapu_koko": "Tapu Koko", - "tapu_lele": "Tapu Lele", - "tapu_bulu": "Tapu Bulu", - "tapu_fini": "Tapu Fini", - "cosmog": "Cosmog", - "cosmoem": "Cosmoem", - "solgaleo": "Solgaleo", - "lunala": "Lunala", - "nihilego": "Nihilego", - "buzzwole": "Buzzwole", - "pheromosa": "Pheromosa", - "xurkitree": "Xurkitree", - "celesteela": "Celesteela", - "kartana": "Kartana", - "guzzlord": "Guzzlord", - "necrozma": "Necrozma", - "magearna": "Magearna", - "marshadow": "Marshadow", - "poipole": "Poipole", - "naganadel": "Naganadel", - "stakataka": "Stakataka", - "blacephalon": "Blacephalon", - "zeraora": "Zeraora", - "meltan": "Meltan", - "melmetal": "Melmetal", - "grookey": "Grookey", - "thwackey": "Thwackey", - "rillaboom": "Rillaboom", - "scorbunny": "Scorbunny", - "raboot": "Raboot", - "cinderace": "Cinderace", - "sobble": "Sobble", - "drizzile": "Drizzile", - "inteleon": "Inteleon", - "skwovet": "Skwovet", - "greedent": "Greedent", - "rookidee": "Rookidee", - "corvisquire": "Corvisquire", - "corviknight": "Corviknight", - "blipbug": "Blipbug", - "dottler": "Dottler", - "orbeetle": "Orbeetle", - "nickit": "Nickit", - "thievul": "Thievul", - "gossifleur": "Gossifleur", - "eldegoss": "Eldegoss", - "wooloo": "Wooloo", - "dubwool": "Dubwool", - "chewtle": "Chewtle", - "drednaw": "Drednaw", - "yamper": "Yamper", - "boltund": "Boltund", - "rolycoly": "Rolycoly", - "carkol": "Carkol", - "coalossal": "Coalossal", - "applin": "Applin", - "flapple": "Flapple", - "appletun": "Appletun", - "silicobra": "Silicobra", - "sandaconda": "Sandaconda", - "cramorant": "Cramorant", - "arrokuda": "Arrokuda", - "barraskewda": "Barraskewda", - "toxel": "Toxel", - "toxtricity": "Toxtricity", - "sizzlipede": "Sizzlipede", - "centiskorch": "Centiskorch", - "clobbopus": "Clobbopus", - "grapploct": "Grapploct", - "sinistea": "Sinistea", - "polteageist": "Polteageist", - "hatenna": "Hatenna", - "hattrem": "Hattrem", - "hatterene": "Hatterene", - "impidimp": "Impidimp", - "morgrem": "Morgrem", - "grimmsnarl": "Grimmsnarl", - "obstagoon": "Obstagoon", - "perrserker": "Perrserker", - "cursola": "Cursola", - "sirfetchd": "Sirfetch'd", - "mr_rime": "Mr. Rime", - "runerigus": "Runerigus", - "milcery": "Milcery", - "alcremie": "Alcremie", - "falinks": "Falinks", - "pincurchin": "Pincurchin", - "snom": "Snom", - "frosmoth": "Frosmoth", - "stonjourner": "Stonjourner", - "eiscue": "Eiscue", - "indeedee": "Indeedee", - "morpeko": "Morpeko", - "cufant": "Cufant", - "copperajah": "Copperajah", - "dracozolt": "Dracozolt", - "arctozolt": "Arctozolt", - "dracovish": "Dracovish", - "arctovish": "Arctovish", - "duraludon": "Duraludon", - "dreepy": "Dreepy", - "drakloak": "Drakloak", - "dragapult": "Dragapult", - "zacian": "Zacian", - "zamazenta": "Zamazenta", - "eternatus": "Eternatus", - "kubfu": "Kubfu", - "urshifu": "Urshifu", - "zarude": "Zarude", - "regieleki": "Regieleki", - "regidrago": "Regidrago", - "glastrier": "Glastrier", - "spectrier": "Spectrier", - "calyrex": "Calyrex", - "wyrdeer": "Wyrdeer", - "kleavor": "Kleavor", - "ursaluna": "Ursaluna", - "basculegion": "Basculegion", - "sneasler": "Sneasler", - "overqwil": "Overqwil", - "enamorus": "Enamorus", - "sprigatito": "Sprigatito", - "floragato": "Floragato", - "meowscarada": "Meowscarada", - "fuecoco": "Fuecoco", - "crocalor": "Crocalor", - "skeledirge": "Skeledirge", - "quaxly": "Quaxly", - "quaxwell": "Quaxwell", - "quaquaval": "Quaquaval", - "lechonk": "Lechonk", - "oinkologne": "Oinkologne", - "tarountula": "Tarountula", - "spidops": "Spidops", - "nymble": "Nymble", - "lokix": "Lokix", - "pawmi": "Pawmi", - "pawmo": "Pawmo", - "pawmot": "Pawmot", - "tandemaus": "Tandemaus", - "maushold": "Maushold", - "fidough": "Fidough", - "dachsbun": "Dachsbun", - "smoliv": "Smoliv", - "dolliv": "Dolliv", - "arboliva": "Arboliva", - "squawkabilly": "Squawkabilly", - "nacli": "Nacli", - "naclstack": "Naclstack", - "garganacl": "Garganacl", - "charcadet": "Charcadet", - "armarouge": "Armarouge", - "ceruledge": "Ceruledge", - "tadbulb": "Tadbulb", - "bellibolt": "Bellibolt", - "wattrel": "Wattrel", - "kilowattrel": "Kilowattrel", - "maschiff": "Maschiff", - "mabosstiff": "Mabosstiff", - "shroodle": "Shroodle", - "grafaiai": "Grafaiai", - "bramblin": "Bramblin", - "brambleghast": "Brambleghast", - "toedscool": "Toedscool", - "toedscruel": "Toedscruel", - "klawf": "Klawf", - "capsakid": "Capsakid", - "scovillain": "Scovillain", - "rellor": "Rellor", - "rabsca": "Rabsca", - "flittle": "Flittle", - "espathra": "Espathra", - "tinkatink": "Tinkatink", - "tinkatuff": "Tinkatuff", - "tinkaton": "Tinkaton", - "wiglett": "Wiglett", - "wugtrio": "Wugtrio", - "bombirdier": "Bombirdier", - "finizen": "Finizen", - "palafin": "Palafin", - "varoom": "Varoom", - "revavroom": "Revavroom", - "cyclizar": "Cyclizar", - "orthworm": "Orthworm", - "glimmet": "Glimmet", - "glimmora": "Glimmora", - "greavard": "Greavard", - "houndstone": "Houndstone", - "flamigo": "Flamigo", - "cetoddle": "Cetoddle", - "cetitan": "Cetitan", - "veluza": "Veluza", - "dondozo": "Dondozo", - "tatsugiri": "Tatsugiri", - "annihilape": "Annihilape", - "clodsire": "Clodsire", - "farigiraf": "Farigiraf", - "dudunsparce": "Dudunsparce", - "kingambit": "Kingambit", - "great_tusk": "Presa Grande", - "scream_tail": "Cauda Brado", - "brute_bonnet": "Capuz Bruto", - "flutter_mane": "Juba Sopro", - "slither_wing": "Asa Rasteira", - "sandy_shocks": "Choque Areia", - "iron_treads": "Trilho Férreo", - "iron_bundle": "Pacote Férreo", - "iron_hands": "Mãos Férreas", - "iron_jugulis": "Jugulares Férreas", - "iron_moth": "Mariposa Férrea", - "iron_thorns": "Espinhos Férreos", - "frigibax": "Frigibax", - "arctibax": "Arctibax", - "baxcalibur": "Baxcalibur", - "gimmighoul": "Gimmighoul", - "gholdengo": "Gholdengo", - "wo_chien": "Wo-Chien", - "chien_pao": "Chien-Pao", - "ting_lu": "Ting-Lu", - "chi_yu": "Chi-Yu", - "roaring_moon": "Lua Estrondo", - "iron_valiant": "Valentia Férrea", - "koraidon": "Koraidon", - "miraidon": "Miraidon", - "walking_wake": "Onda Ando", - "iron_leaves": "Folhas Férreas", - "dipplin": "Dipplin", - "poltchageist": "Poltchageist", - "sinistcha": "Sinistcha", - "okidogi": "Okidogi", - "munkidori": "Munkidori", - "fezandipiti": "Fezandipiti", - "ogerpon": "Ogerpon", - "archaludon": "Archaludon", - "hydrapple": "Hydrapple", - "gouging_fire": "Fogo Corrosão", - "raging_bolt": "Raio Fúria", - "iron_boulder": "Rocha Férrea", - "iron_crown": "Chifres Férreos", - "terapagos": "Terapagos", - "pecharunt": "Pecharunt", - "alola_rattata": "Rattata", - "alola_raticate": "Raticate", - "alola_raichu": "Raichu", - "alola_sandshrew": "Sandshrew", - "alola_sandslash": "Sandslash", - "alola_vulpix": "Vulpix", - "alola_ninetales": "Ninetales", - "alola_diglett": "Diglett", - "alola_dugtrio": "Dugtrio", - "alola_meowth": "Meowth", - "alola_persian": "Persian", - "alola_geodude": "Geodude", - "alola_graveler": "Graveler", - "alola_golem": "Golem", - "alola_grimer": "Grimer", - "alola_muk": "Muk", - "alola_exeggutor": "Exeggutor", - "alola_marowak": "Marowak", - "eternal_floette": "Floette", - "galar_meowth": "Meowth", - "galar_ponyta": "Ponyta", - "galar_rapidash": "Rapidash", - "galar_slowpoke": "Slowpoke", - "galar_slowbro": "Slowbro", - "galar_farfetchd": "Farfetch'd", - "galar_weezing": "Weezing", - "galar_mr_mime": "Mr. Mime", - "galar_articuno": "Articuno", - "galar_zapdos": "Zapdos", - "galar_moltres": "Moltres", - "galar_slowking": "Slowking", - "galar_corsola": "Corsola", - "galar_zigzagoon": "Zigzagoon", - "galar_linoone": "Linoone", - "galar_darumaka": "Darumaka", - "galar_darmanitan": "Darmanitan", - "galar_yamask": "Yamask", - "galar_stunfisk": "Stunfisk", - "hisui_growlithe": "Growlithe", - "hisui_arcanine": "Arcanine", - "hisui_voltorb": "Voltorb", - "hisui_electrode": "Electrode", - "hisui_typhlosion": "Typhlosion", - "hisui_qwilfish": "Qwilfish", - "hisui_sneasel": "Sneasel", - "hisui_samurott": "Samurott", - "hisui_lilligant": "Lilligant", - "hisui_zorua": "Zorua", - "hisui_zoroark": "Zoroark", - "hisui_braviary": "Braviary", - "hisui_sliggoo": "Sliggoo", - "hisui_goodra": "Goodra", - "hisui_avalugg": "Avalugg", - "hisui_decidueye": "Decidueye", - "paldea_tauros": "Tauros", - "paldea_wooper": "Wooper", - "bloodmoon_ursaluna": "Ursaluna", + 'bulbasaur': 'Bulbasaur', + 'ivysaur': 'Ivysaur', + 'venusaur': 'Venusaur', + 'charmander': 'Charmander', + 'charmeleon': 'Charmeleon', + 'charizard': 'Charizard', + 'squirtle': 'Squirtle', + 'wartortle': 'Wartortle', + 'blastoise': 'Blastoise', + 'caterpie': 'Caterpie', + 'metapod': 'Metapod', + 'butterfree': 'Butterfree', + 'weedle': 'Weedle', + 'kakuna': 'Kakuna', + 'beedrill': 'Beedrill', + 'pidgey': 'Pidgey', + 'pidgeotto': 'Pidgeotto', + 'pidgeot': 'Pidgeot', + 'rattata': 'Rattata', + 'raticate': 'Raticate', + 'spearow': 'Spearow', + 'fearow': 'Fearow', + 'ekans': 'Ekans', + 'arbok': 'Arbok', + 'pikachu': 'Pikachu', + 'raichu': 'Raichu', + 'sandshrew': 'Sandshrew', + 'sandslash': 'Sandslash', + 'nidoran_f': 'Nidoran♀', + 'nidorina': 'Nidorina', + 'nidoqueen': 'Nidoqueen', + 'nidoran_m': 'Nidoran♂', + 'nidorino': 'Nidorino', + 'nidoking': 'Nidoking', + 'clefairy': 'Clefairy', + 'clefable': 'Clefable', + 'vulpix': 'Vulpix', + 'ninetales': 'Ninetales', + 'jigglypuff': 'Jigglypuff', + 'wigglytuff': 'Wigglytuff', + 'zubat': 'Zubat', + 'golbat': 'Golbat', + 'oddish': 'Oddish', + 'gloom': 'Gloom', + 'vileplume': 'Vileplume', + 'paras': 'Paras', + 'parasect': 'Parasect', + 'venonat': 'Venonat', + 'venomoth': 'Venomoth', + 'diglett': 'Diglett', + 'dugtrio': 'Dugtrio', + 'meowth': 'Meowth', + 'persian': 'Persian', + 'psyduck': 'Psyduck', + 'golduck': 'Golduck', + 'mankey': 'Mankey', + 'primeape': 'Primeape', + 'growlithe': 'Growlithe', + 'arcanine': 'Arcanine', + 'poliwag': 'Poliwag', + 'poliwhirl': 'Poliwhirl', + 'poliwrath': 'Poliwrath', + 'abra': 'Abra', + 'kadabra': 'Kadabra', + 'alakazam': 'Alakazam', + 'machop': 'Machop', + 'machoke': 'Machoke', + 'machamp': 'Machamp', + 'bellsprout': 'Bellsprout', + 'weepinbell': 'Weepinbell', + 'victreebel': 'Victreebel', + 'tentacool': 'Tentacool', + 'tentacruel': 'Tentacruel', + 'geodude': 'Geodude', + 'graveler': 'Graveler', + 'golem': 'Golem', + 'ponyta': 'Ponyta', + 'rapidash': 'Rapidash', + 'slowpoke': 'Slowpoke', + 'slowbro': 'Slowbro', + 'magnemite': 'Magnemite', + 'magneton': 'Magneton', + 'farfetchd': 'Farfetch\'d', + 'doduo': 'Doduo', + 'dodrio': 'Dodrio', + 'seel': 'Seel', + 'dewgong': 'Dewgong', + 'grimer': 'Grimer', + 'muk': 'Muk', + 'shellder': 'Shellder', + 'cloyster': 'Cloyster', + 'gastly': 'Gastly', + 'haunter': 'Haunter', + 'gengar': 'Gengar', + 'onix': 'Onix', + 'drowzee': 'Drowzee', + 'hypno': 'Hypno', + 'krabby': 'Krabby', + 'kingler': 'Kingler', + 'voltorb': 'Voltorb', + 'electrode': 'Electrode', + 'exeggcute': 'Exeggcute', + 'exeggutor': 'Exeggutor', + 'cubone': 'Cubone', + 'marowak': 'Marowak', + 'hitmonlee': 'Hitmonlee', + 'hitmonchan': 'Hitmonchan', + 'lickitung': 'Lickitung', + 'koffing': 'Koffing', + 'weezing': 'Weezing', + 'rhyhorn': 'Rhyhorn', + 'rhydon': 'Rhydon', + 'chansey': 'Chansey', + 'tangela': 'Tangela', + 'kangaskhan': 'Kangaskhan', + 'horsea': 'Horsea', + 'seadra': 'Seadra', + 'goldeen': 'Goldeen', + 'seaking': 'Seaking', + 'staryu': 'Staryu', + 'starmie': 'Starmie', + 'mr_mime': 'Mr. Mime', + 'scyther': 'Scyther', + 'jynx': 'Jynx', + 'electabuzz': 'Electabuzz', + 'magmar': 'Magmar', + 'pinsir': 'Pinsir', + 'tauros': 'Tauros', + 'magikarp': 'Magikarp', + 'gyarados': 'Gyarados', + 'lapras': 'Lapras', + 'ditto': 'Ditto', + 'eevee': 'Eevee', + 'vaporeon': 'Vaporeon', + 'jolteon': 'Jolteon', + 'flareon': 'Flareon', + 'porygon': 'Porygon', + 'omanyte': 'Omanyte', + 'omastar': 'Omastar', + 'kabuto': 'Kabuto', + 'kabutops': 'Kabutops', + 'aerodactyl': 'Aerodactyl', + 'snorlax': 'Snorlax', + 'articuno': 'Articuno', + 'zapdos': 'Zapdos', + 'moltres': 'Moltres', + 'dratini': 'Dratini', + 'dragonair': 'Dragonair', + 'dragonite': 'Dragonite', + 'mewtwo': 'Mewtwo', + 'mew': 'Mew', + 'chikorita': 'Chikorita', + 'bayleef': 'Bayleef', + 'meganium': 'Meganium', + 'cyndaquil': 'Cyndaquil', + 'quilava': 'Quilava', + 'typhlosion': 'Typhlosion', + 'totodile': 'Totodile', + 'croconaw': 'Croconaw', + 'feraligatr': 'Feraligatr', + 'sentret': 'Sentret', + 'furret': 'Furret', + 'hoothoot': 'Hoothoot', + 'noctowl': 'Noctowl', + 'ledyba': 'Ledyba', + 'ledian': 'Ledian', + 'spinarak': 'Spinarak', + 'ariados': 'Ariados', + 'crobat': 'Crobat', + 'chinchou': 'Chinchou', + 'lanturn': 'Lanturn', + 'pichu': 'Pichu', + 'cleffa': 'Cleffa', + 'igglybuff': 'Igglybuff', + 'togepi': 'Togepi', + 'togetic': 'Togetic', + 'natu': 'Natu', + 'xatu': 'Xatu', + 'mareep': 'Mareep', + 'flaaffy': 'Flaaffy', + 'ampharos': 'Ampharos', + 'bellossom': 'Bellossom', + 'marill': 'Marill', + 'azumarill': 'Azumarill', + 'sudowoodo': 'Sudowoodo', + 'politoed': 'Politoed', + 'hoppip': 'Hoppip', + 'skiploom': 'Skiploom', + 'jumpluff': 'Jumpluff', + 'aipom': 'Aipom', + 'sunkern': 'Sunkern', + 'sunflora': 'Sunflora', + 'yanma': 'Yanma', + 'wooper': 'Wooper', + 'quagsire': 'Quagsire', + 'espeon': 'Espeon', + 'umbreon': 'Umbreon', + 'murkrow': 'Murkrow', + 'slowking': 'Slowking', + 'misdreavus': 'Misdreavus', + 'unown': 'Unown', + 'wobbuffet': 'Wobbuffet', + 'girafarig': 'Girafarig', + 'pineco': 'Pineco', + 'forretress': 'Forretress', + 'dunsparce': 'Dunsparce', + 'gligar': 'Gligar', + 'steelix': 'Steelix', + 'snubbull': 'Snubbull', + 'granbull': 'Granbull', + 'qwilfish': 'Qwilfish', + 'scizor': 'Scizor', + 'shuckle': 'Shuckle', + 'heracross': 'Heracross', + 'sneasel': 'Sneasel', + 'teddiursa': 'Teddiursa', + 'ursaring': 'Ursaring', + 'slugma': 'Slugma', + 'magcargo': 'Magcargo', + 'swinub': 'Swinub', + 'piloswine': 'Piloswine', + 'corsola': 'Corsola', + 'remoraid': 'Remoraid', + 'octillery': 'Octillery', + 'delibird': 'Delibird', + 'mantine': 'Mantine', + 'skarmory': 'Skarmory', + 'houndour': 'Houndour', + 'houndoom': 'Houndoom', + 'kingdra': 'Kingdra', + 'phanpy': 'Phanpy', + 'donphan': 'Donphan', + 'porygon2': 'Porygon2', + 'stantler': 'Stantler', + 'smeargle': 'Smeargle', + 'tyrogue': 'Tyrogue', + 'hitmontop': 'Hitmontop', + 'smoochum': 'Smoochum', + 'elekid': 'Elekid', + 'magby': 'Magby', + 'miltank': 'Miltank', + 'blissey': 'Blissey', + 'raikou': 'Raikou', + 'entei': 'Entei', + 'suicune': 'Suicune', + 'larvitar': 'Larvitar', + 'pupitar': 'Pupitar', + 'tyranitar': 'Tyranitar', + 'lugia': 'Lugia', + 'ho_oh': 'Ho-Oh', + 'celebi': 'Celebi', + 'treecko': 'Treecko', + 'grovyle': 'Grovyle', + 'sceptile': 'Sceptile', + 'torchic': 'Torchic', + 'combusken': 'Combusken', + 'blaziken': 'Blaziken', + 'mudkip': 'Mudkip', + 'marshtomp': 'Marshtomp', + 'swampert': 'Swampert', + 'poochyena': 'Poochyena', + 'mightyena': 'Mightyena', + 'zigzagoon': 'Zigzagoon', + 'linoone': 'Linoone', + 'wurmple': 'Wurmple', + 'silcoon': 'Silcoon', + 'beautifly': 'Beautifly', + 'cascoon': 'Cascoon', + 'dustox': 'Dustox', + 'lotad': 'Lotad', + 'lombre': 'Lombre', + 'ludicolo': 'Ludicolo', + 'seedot': 'Seedot', + 'nuzleaf': 'Nuzleaf', + 'shiftry': 'Shiftry', + 'taillow': 'Taillow', + 'swellow': 'Swellow', + 'wingull': 'Wingull', + 'pelipper': 'Pelipper', + 'ralts': 'Ralts', + 'kirlia': 'Kirlia', + 'gardevoir': 'Gardevoir', + 'surskit': 'Surskit', + 'masquerain': 'Masquerain', + 'shroomish': 'Shroomish', + 'breloom': 'Breloom', + 'slakoth': 'Slakoth', + 'vigoroth': 'Vigoroth', + 'slaking': 'Slaking', + 'nincada': 'Nincada', + 'ninjask': 'Ninjask', + 'shedinja': 'Shedinja', + 'whismur': 'Whismur', + 'loudred': 'Loudred', + 'exploud': 'Exploud', + 'makuhita': 'Makuhita', + 'hariyama': 'Hariyama', + 'azurill': 'Azurill', + 'nosepass': 'Nosepass', + 'skitty': 'Skitty', + 'delcatty': 'Delcatty', + 'sableye': 'Sableye', + 'mawile': 'Mawile', + 'aron': 'Aron', + 'lairon': 'Lairon', + 'aggron': 'Aggron', + 'meditite': 'Meditite', + 'medicham': 'Medicham', + 'electrike': 'Electrike', + 'manectric': 'Manectric', + 'plusle': 'Plusle', + 'minun': 'Minun', + 'volbeat': 'Volbeat', + 'illumise': 'Illumise', + 'roselia': 'Roselia', + 'gulpin': 'Gulpin', + 'swalot': 'Swalot', + 'carvanha': 'Carvanha', + 'sharpedo': 'Sharpedo', + 'wailmer': 'Wailmer', + 'wailord': 'Wailord', + 'numel': 'Numel', + 'camerupt': 'Camerupt', + 'torkoal': 'Torkoal', + 'spoink': 'Spoink', + 'grumpig': 'Grumpig', + 'spinda': 'Spinda', + 'trapinch': 'Trapinch', + 'vibrava': 'Vibrava', + 'flygon': 'Flygon', + 'cacnea': 'Cacnea', + 'cacturne': 'Cacturne', + 'swablu': 'Swablu', + 'altaria': 'Altaria', + 'zangoose': 'Zangoose', + 'seviper': 'Seviper', + 'lunatone': 'Lunatone', + 'solrock': 'Solrock', + 'barboach': 'Barboach', + 'whiscash': 'Whiscash', + 'corphish': 'Corphish', + 'crawdaunt': 'Crawdaunt', + 'baltoy': 'Baltoy', + 'claydol': 'Claydol', + 'lileep': 'Lileep', + 'cradily': 'Cradily', + 'anorith': 'Anorith', + 'armaldo': 'Armaldo', + 'feebas': 'Feebas', + 'milotic': 'Milotic', + 'castform': 'Castform', + 'kecleon': 'Kecleon', + 'shuppet': 'Shuppet', + 'banette': 'Banette', + 'duskull': 'Duskull', + 'dusclops': 'Dusclops', + 'tropius': 'Tropius', + 'chimecho': 'Chimecho', + 'absol': 'Absol', + 'wynaut': 'Wynaut', + 'snorunt': 'Snorunt', + 'glalie': 'Glalie', + 'spheal': 'Spheal', + 'sealeo': 'Sealeo', + 'walrein': 'Walrein', + 'clamperl': 'Clamperl', + 'huntail': 'Huntail', + 'gorebyss': 'Gorebyss', + 'relicanth': 'Relicanth', + 'luvdisc': 'Luvdisc', + 'bagon': 'Bagon', + 'shelgon': 'Shelgon', + 'salamence': 'Salamence', + 'beldum': 'Beldum', + 'metang': 'Metang', + 'metagross': 'Metagross', + 'regirock': 'Regirock', + 'regice': 'Regice', + 'registeel': 'Registeel', + 'latias': 'Latias', + 'latios': 'Latios', + 'kyogre': 'Kyogre', + 'groudon': 'Groudon', + 'rayquaza': 'Rayquaza', + 'jirachi': 'Jirachi', + 'deoxys': 'Deoxys', + 'turtwig': 'Turtwig', + 'grotle': 'Grotle', + 'torterra': 'Torterra', + 'chimchar': 'Chimchar', + 'monferno': 'Monferno', + 'infernape': 'Infernape', + 'piplup': 'Piplup', + 'prinplup': 'Prinplup', + 'empoleon': 'Empoleon', + 'starly': 'Starly', + 'staravia': 'Staravia', + 'staraptor': 'Staraptor', + 'bidoof': 'Bidoof', + 'bibarel': 'Bibarel', + 'kricketot': 'Kricketot', + 'kricketune': 'Kricketune', + 'shinx': 'Shinx', + 'luxio': 'Luxio', + 'luxray': 'Luxray', + 'budew': 'Budew', + 'roserade': 'Roserade', + 'cranidos': 'Cranidos', + 'rampardos': 'Rampardos', + 'shieldon': 'Shieldon', + 'bastiodon': 'Bastiodon', + 'burmy': 'Burmy', + 'wormadam': 'Wormadam', + 'mothim': 'Mothim', + 'combee': 'Combee', + 'vespiquen': 'Vespiquen', + 'pachirisu': 'Pachirisu', + 'buizel': 'Buizel', + 'floatzel': 'Floatzel', + 'cherubi': 'Cherubi', + 'cherrim': 'Cherrim', + 'shellos': 'Shellos', + 'gastrodon': 'Gastrodon', + 'ambipom': 'Ambipom', + 'drifloon': 'Drifloon', + 'drifblim': 'Drifblim', + 'buneary': 'Buneary', + 'lopunny': 'Lopunny', + 'mismagius': 'Mismagius', + 'honchkrow': 'Honchkrow', + 'glameow': 'Glameow', + 'purugly': 'Purugly', + 'chingling': 'Chingling', + 'stunky': 'Stunky', + 'skuntank': 'Skuntank', + 'bronzor': 'Bronzor', + 'bronzong': 'Bronzong', + 'bonsly': 'Bonsly', + 'mime_jr': 'Mime Jr.', + 'happiny': 'Happiny', + 'chatot': 'Chatot', + 'spiritomb': 'Spiritomb', + 'gible': 'Gible', + 'gabite': 'Gabite', + 'garchomp': 'Garchomp', + 'munchlax': 'Munchlax', + 'riolu': 'Riolu', + 'lucario': 'Lucario', + 'hippopotas': 'Hippopotas', + 'hippowdon': 'Hippowdon', + 'skorupi': 'Skorupi', + 'drapion': 'Drapion', + 'croagunk': 'Croagunk', + 'toxicroak': 'Toxicroak', + 'carnivine': 'Carnivine', + 'finneon': 'Finneon', + 'lumineon': 'Lumineon', + 'mantyke': 'Mantyke', + 'snover': 'Snover', + 'abomasnow': 'Abomasnow', + 'weavile': 'Weavile', + 'magnezone': 'Magnezone', + 'lickilicky': 'Lickilicky', + 'rhyperior': 'Rhyperior', + 'tangrowth': 'Tangrowth', + 'electivire': 'Electivire', + 'magmortar': 'Magmortar', + 'togekiss': 'Togekiss', + 'yanmega': 'Yanmega', + 'leafeon': 'Leafeon', + 'glaceon': 'Glaceon', + 'gliscor': 'Gliscor', + 'mamoswine': 'Mamoswine', + 'porygon_z': 'Porygon-Z', + 'gallade': 'Gallade', + 'probopass': 'Probopass', + 'dusknoir': 'Dusknoir', + 'froslass': 'Froslass', + 'rotom': 'Rotom', + 'uxie': 'Uxie', + 'mesprit': 'Mesprit', + 'azelf': 'Azelf', + 'dialga': 'Dialga', + 'palkia': 'Palkia', + 'heatran': 'Heatran', + 'regigigas': 'Regigigas', + 'giratina': 'Giratina', + 'cresselia': 'Cresselia', + 'phione': 'Phione', + 'manaphy': 'Manaphy', + 'darkrai': 'Darkrai', + 'shaymin': 'Shaymin', + 'arceus': 'Arceus', + 'victini': 'Victini', + 'snivy': 'Snivy', + 'servine': 'Servine', + 'serperior': 'Serperior', + 'tepig': 'Tepig', + 'pignite': 'Pignite', + 'emboar': 'Emboar', + 'oshawott': 'Oshawott', + 'dewott': 'Dewott', + 'samurott': 'Samurott', + 'patrat': 'Patrat', + 'watchog': 'Watchog', + 'lillipup': 'Lillipup', + 'herdier': 'Herdier', + 'stoutland': 'Stoutland', + 'purrloin': 'Purrloin', + 'liepard': 'Liepard', + 'pansage': 'Pansage', + 'simisage': 'Simisage', + 'pansear': 'Pansear', + 'simisear': 'Simisear', + 'panpour': 'Panpour', + 'simipour': 'Simipour', + 'munna': 'Munna', + 'musharna': 'Musharna', + 'pidove': 'Pidove', + 'tranquill': 'Tranquill', + 'unfezant': 'Unfezant', + 'blitzle': 'Blitzle', + 'zebstrika': 'Zebstrika', + 'roggenrola': 'Roggenrola', + 'boldore': 'Boldore', + 'gigalith': 'Gigalith', + 'woobat': 'Woobat', + 'swoobat': 'Swoobat', + 'drilbur': 'Drilbur', + 'excadrill': 'Excadrill', + 'audino': 'Audino', + 'timburr': 'Timburr', + 'gurdurr': 'Gurdurr', + 'conkeldurr': 'Conkeldurr', + 'tympole': 'Tympole', + 'palpitoad': 'Palpitoad', + 'seismitoad': 'Seismitoad', + 'throh': 'Throh', + 'sawk': 'Sawk', + 'sewaddle': 'Sewaddle', + 'swadloon': 'Swadloon', + 'leavanny': 'Leavanny', + 'venipede': 'Venipede', + 'whirlipede': 'Whirlipede', + 'scolipede': 'Scolipede', + 'cottonee': 'Cottonee', + 'whimsicott': 'Whimsicott', + 'petilil': 'Petilil', + 'lilligant': 'Lilligant', + 'basculin': 'Basculin', + 'sandile': 'Sandile', + 'krokorok': 'Krokorok', + 'krookodile': 'Krookodile', + 'darumaka': 'Darumaka', + 'darmanitan': 'Darmanitan', + 'maractus': 'Maractus', + 'dwebble': 'Dwebble', + 'crustle': 'Crustle', + 'scraggy': 'Scraggy', + 'scrafty': 'Scrafty', + 'sigilyph': 'Sigilyph', + 'yamask': 'Yamask', + 'cofagrigus': 'Cofagrigus', + 'tirtouga': 'Tirtouga', + 'carracosta': 'Carracosta', + 'archen': 'Archen', + 'archeops': 'Archeops', + 'trubbish': 'Trubbish', + 'garbodor': 'Garbodor', + 'zorua': 'Zorua', + 'zoroark': 'Zoroark', + 'minccino': 'Minccino', + 'cinccino': 'Cinccino', + 'gothita': 'Gothita', + 'gothorita': 'Gothorita', + 'gothitelle': 'Gothitelle', + 'solosis': 'Solosis', + 'duosion': 'Duosion', + 'reuniclus': 'Reuniclus', + 'ducklett': 'Ducklett', + 'swanna': 'Swanna', + 'vanillite': 'Vanillite', + 'vanillish': 'Vanillish', + 'vanilluxe': 'Vanilluxe', + 'deerling': 'Deerling', + 'sawsbuck': 'Sawsbuck', + 'emolga': 'Emolga', + 'karrablast': 'Karrablast', + 'escavalier': 'Escavalier', + 'foongus': 'Foongus', + 'amoonguss': 'Amoonguss', + 'frillish': 'Frillish', + 'jellicent': 'Jellicent', + 'alomomola': 'Alomomola', + 'joltik': 'Joltik', + 'galvantula': 'Galvantula', + 'ferroseed': 'Ferroseed', + 'ferrothorn': 'Ferrothorn', + 'klink': 'Klink', + 'klang': 'Klang', + 'klinklang': 'Klinklang', + 'tynamo': 'Tynamo', + 'eelektrik': 'Eelektrik', + 'eelektross': 'Eelektross', + 'elgyem': 'Elgyem', + 'beheeyem': 'Beheeyem', + 'litwick': 'Litwick', + 'lampent': 'Lampent', + 'chandelure': 'Chandelure', + 'axew': 'Axew', + 'fraxure': 'Fraxure', + 'haxorus': 'Haxorus', + 'cubchoo': 'Cubchoo', + 'beartic': 'Beartic', + 'cryogonal': 'Cryogonal', + 'shelmet': 'Shelmet', + 'accelgor': 'Accelgor', + 'stunfisk': 'Stunfisk', + 'mienfoo': 'Mienfoo', + 'mienshao': 'Mienshao', + 'druddigon': 'Druddigon', + 'golett': 'Golett', + 'golurk': 'Golurk', + 'pawniard': 'Pawniard', + 'bisharp': 'Bisharp', + 'bouffalant': 'Bouffalant', + 'rufflet': 'Rufflet', + 'braviary': 'Braviary', + 'vullaby': 'Vullaby', + 'mandibuzz': 'Mandibuzz', + 'heatmor': 'Heatmor', + 'durant': 'Durant', + 'deino': 'Deino', + 'zweilous': 'Zweilous', + 'hydreigon': 'Hydreigon', + 'larvesta': 'Larvesta', + 'volcarona': 'Volcarona', + 'cobalion': 'Cobalion', + 'terrakion': 'Terrakion', + 'virizion': 'Virizion', + 'tornadus': 'Tornadus', + 'thundurus': 'Thundurus', + 'reshiram': 'Reshiram', + 'zekrom': 'Zekrom', + 'landorus': 'Landorus', + 'kyurem': 'Kyurem', + 'keldeo': 'Keldeo', + 'meloetta': 'Meloetta', + 'genesect': 'Genesect', + 'chespin': 'Chespin', + 'quilladin': 'Quilladin', + 'chesnaught': 'Chesnaught', + 'fennekin': 'Fennekin', + 'braixen': 'Braixen', + 'delphox': 'Delphox', + 'froakie': 'Froakie', + 'frogadier': 'Frogadier', + 'greninja': 'Greninja', + 'bunnelby': 'Bunnelby', + 'diggersby': 'Diggersby', + 'fletchling': 'Fletchling', + 'fletchinder': 'Fletchinder', + 'talonflame': 'Talonflame', + 'scatterbug': 'Scatterbug', + 'spewpa': 'Spewpa', + 'vivillon': 'Vivillon', + 'litleo': 'Litleo', + 'pyroar': 'Pyroar', + 'flabebe': 'Flabébé', + 'floette': 'Floette', + 'florges': 'Florges', + 'skiddo': 'Skiddo', + 'gogoat': 'Gogoat', + 'pancham': 'Pancham', + 'pangoro': 'Pangoro', + 'furfrou': 'Furfrou', + 'espurr': 'Espurr', + 'meowstic': 'Meowstic', + 'honedge': 'Honedge', + 'doublade': 'Doublade', + 'aegislash': 'Aegislash', + 'spritzee': 'Spritzee', + 'aromatisse': 'Aromatisse', + 'swirlix': 'Swirlix', + 'slurpuff': 'Slurpuff', + 'inkay': 'Inkay', + 'malamar': 'Malamar', + 'binacle': 'Binacle', + 'barbaracle': 'Barbaracle', + 'skrelp': 'Skrelp', + 'dragalge': 'Dragalge', + 'clauncher': 'Clauncher', + 'clawitzer': 'Clawitzer', + 'helioptile': 'Helioptile', + 'heliolisk': 'Heliolisk', + 'tyrunt': 'Tyrunt', + 'tyrantrum': 'Tyrantrum', + 'amaura': 'Amaura', + 'aurorus': 'Aurorus', + 'sylveon': 'Sylveon', + 'hawlucha': 'Hawlucha', + 'dedenne': 'Dedenne', + 'carbink': 'Carbink', + 'goomy': 'Goomy', + 'sliggoo': 'Sliggoo', + 'goodra': 'Goodra', + 'klefki': 'Klefki', + 'phantump': 'Phantump', + 'trevenant': 'Trevenant', + 'pumpkaboo': 'Pumpkaboo', + 'gourgeist': 'Gourgeist', + 'bergmite': 'Bergmite', + 'avalugg': 'Avalugg', + 'noibat': 'Noibat', + 'noivern': 'Noivern', + 'xerneas': 'Xerneas', + 'yveltal': 'Yveltal', + 'zygarde': 'Zygarde', + 'diancie': 'Diancie', + 'hoopa': 'Hoopa', + 'volcanion': 'Volcanion', + 'rowlet': 'Rowlet', + 'dartrix': 'Dartrix', + 'decidueye': 'Decidueye', + 'litten': 'Litten', + 'torracat': 'Torracat', + 'incineroar': 'Incineroar', + 'popplio': 'Popplio', + 'brionne': 'Brionne', + 'primarina': 'Primarina', + 'pikipek': 'Pikipek', + 'trumbeak': 'Trumbeak', + 'toucannon': 'Toucannon', + 'yungoos': 'Yungoos', + 'gumshoos': 'Gumshoos', + 'grubbin': 'Grubbin', + 'charjabug': 'Charjabug', + 'vikavolt': 'Vikavolt', + 'crabrawler': 'Crabrawler', + 'crabominable': 'Crabominable', + 'oricorio': 'Oricorio', + 'cutiefly': 'Cutiefly', + 'ribombee': 'Ribombee', + 'rockruff': 'Rockruff', + 'lycanroc': 'Lycanroc', + 'wishiwashi': 'Wishiwashi', + 'mareanie': 'Mareanie', + 'toxapex': 'Toxapex', + 'mudbray': 'Mudbray', + 'mudsdale': 'Mudsdale', + 'dewpider': 'Dewpider', + 'araquanid': 'Araquanid', + 'fomantis': 'Fomantis', + 'lurantis': 'Lurantis', + 'morelull': 'Morelull', + 'shiinotic': 'Shiinotic', + 'salandit': 'Salandit', + 'salazzle': 'Salazzle', + 'stufful': 'Stufful', + 'bewear': 'Bewear', + 'bounsweet': 'Bounsweet', + 'steenee': 'Steenee', + 'tsareena': 'Tsareena', + 'comfey': 'Comfey', + 'oranguru': 'Oranguru', + 'passimian': 'Passimian', + 'wimpod': 'Wimpod', + 'golisopod': 'Golisopod', + 'sandygast': 'Sandygast', + 'palossand': 'Palossand', + 'pyukumuku': 'Pyukumuku', + 'type_null': 'Tipo Nulo', + 'silvally': 'Silvally', + 'minior': 'Minior', + 'komala': 'Komala', + 'turtonator': 'Turtonator', + 'togedemaru': 'Togedemaru', + 'mimikyu': 'Mimikyu', + 'bruxish': 'Bruxish', + 'drampa': 'Drampa', + 'dhelmise': 'Dhelmise', + 'jangmo_o': 'Jangmo-o', + 'hakamo_o': 'Hakamo-o', + 'kommo_o': 'Kommo-o', + 'tapu_koko': 'Tapu Koko', + 'tapu_lele': 'Tapu Lele', + 'tapu_bulu': 'Tapu Bulu', + 'tapu_fini': 'Tapu Fini', + 'cosmog': 'Cosmog', + 'cosmoem': 'Cosmoem', + 'solgaleo': 'Solgaleo', + 'lunala': 'Lunala', + 'nihilego': 'Nihilego', + 'buzzwole': 'Buzzwole', + 'pheromosa': 'Pheromosa', + 'xurkitree': 'Xurkitree', + 'celesteela': 'Celesteela', + 'kartana': 'Kartana', + 'guzzlord': 'Guzzlord', + 'necrozma': 'Necrozma', + 'magearna': 'Magearna', + 'marshadow': 'Marshadow', + 'poipole': 'Poipole', + 'naganadel': 'Naganadel', + 'stakataka': 'Stakataka', + 'blacephalon': 'Blacephalon', + 'zeraora': 'Zeraora', + 'meltan': 'Meltan', + 'melmetal': 'Melmetal', + 'grookey': 'Grookey', + 'thwackey': 'Thwackey', + 'rillaboom': 'Rillaboom', + 'scorbunny': 'Scorbunny', + 'raboot': 'Raboot', + 'cinderace': 'Cinderace', + 'sobble': 'Sobble', + 'drizzile': 'Drizzile', + 'inteleon': 'Inteleon', + 'skwovet': 'Skwovet', + 'greedent': 'Greedent', + 'rookidee': 'Rookidee', + 'corvisquire': 'Corvisquire', + 'corviknight': 'Corviknight', + 'blipbug': 'Blipbug', + 'dottler': 'Dottler', + 'orbeetle': 'Orbeetle', + 'nickit': 'Nickit', + 'thievul': 'Thievul', + 'gossifleur': 'Gossifleur', + 'eldegoss': 'Eldegoss', + 'wooloo': 'Wooloo', + 'dubwool': 'Dubwool', + 'chewtle': 'Chewtle', + 'drednaw': 'Drednaw', + 'yamper': 'Yamper', + 'boltund': 'Boltund', + 'rolycoly': 'Rolycoly', + 'carkol': 'Carkol', + 'coalossal': 'Coalossal', + 'applin': 'Applin', + 'flapple': 'Flapple', + 'appletun': 'Appletun', + 'silicobra': 'Silicobra', + 'sandaconda': 'Sandaconda', + 'cramorant': 'Cramorant', + 'arrokuda': 'Arrokuda', + 'barraskewda': 'Barraskewda', + 'toxel': 'Toxel', + 'toxtricity': 'Toxtricity', + 'sizzlipede': 'Sizzlipede', + 'centiskorch': 'Centiskorch', + 'clobbopus': 'Clobbopus', + 'grapploct': 'Grapploct', + 'sinistea': 'Sinistea', + 'polteageist': 'Polteageist', + 'hatenna': 'Hatenna', + 'hattrem': 'Hattrem', + 'hatterene': 'Hatterene', + 'impidimp': 'Impidimp', + 'morgrem': 'Morgrem', + 'grimmsnarl': 'Grimmsnarl', + 'obstagoon': 'Obstagoon', + 'perrserker': 'Perrserker', + 'cursola': 'Cursola', + 'sirfetchd': 'Sirfetch\'d', + 'mr_rime': 'Mr. Rime', + 'runerigus': 'Runerigus', + 'milcery': 'Milcery', + 'alcremie': 'Alcremie', + 'falinks': 'Falinks', + 'pincurchin': 'Pincurchin', + 'snom': 'Snom', + 'frosmoth': 'Frosmoth', + 'stonjourner': 'Stonjourner', + 'eiscue': 'Eiscue', + 'indeedee': 'Indeedee', + 'morpeko': 'Morpeko', + 'cufant': 'Cufant', + 'copperajah': 'Copperajah', + 'dracozolt': 'Dracozolt', + 'arctozolt': 'Arctozolt', + 'dracovish': 'Dracovish', + 'arctovish': 'Arctovish', + 'duraludon': 'Duraludon', + 'dreepy': 'Dreepy', + 'drakloak': 'Drakloak', + 'dragapult': 'Dragapult', + 'zacian': 'Zacian', + 'zamazenta': 'Zamazenta', + 'eternatus': 'Eternatus', + 'kubfu': 'Kubfu', + 'urshifu': 'Urshifu', + 'zarude': 'Zarude', + 'regieleki': 'Regieleki', + 'regidrago': 'Regidrago', + 'glastrier': 'Glastrier', + 'spectrier': 'Spectrier', + 'calyrex': 'Calyrex', + 'wyrdeer': 'Wyrdeer', + 'kleavor': 'Kleavor', + 'ursaluna': 'Ursaluna', + 'basculegion': 'Basculegion', + 'sneasler': 'Sneasler', + 'overqwil': 'Overqwil', + 'enamorus': 'Enamorus', + 'sprigatito': 'Sprigatito', + 'floragato': 'Floragato', + 'meowscarada': 'Meowscarada', + 'fuecoco': 'Fuecoco', + 'crocalor': 'Crocalor', + 'skeledirge': 'Skeledirge', + 'quaxly': 'Quaxly', + 'quaxwell': 'Quaxwell', + 'quaquaval': 'Quaquaval', + 'lechonk': 'Lechonk', + 'oinkologne': 'Oinkologne', + 'tarountula': 'Tarountula', + 'spidops': 'Spidops', + 'nymble': 'Nymble', + 'lokix': 'Lokix', + 'pawmi': 'Pawmi', + 'pawmo': 'Pawmo', + 'pawmot': 'Pawmot', + 'tandemaus': 'Tandemaus', + 'maushold': 'Maushold', + 'fidough': 'Fidough', + 'dachsbun': 'Dachsbun', + 'smoliv': 'Smoliv', + 'dolliv': 'Dolliv', + 'arboliva': 'Arboliva', + 'squawkabilly': 'Squawkabilly', + 'nacli': 'Nacli', + 'naclstack': 'Naclstack', + 'garganacl': 'Garganacl', + 'charcadet': 'Charcadet', + 'armarouge': 'Armarouge', + 'ceruledge': 'Ceruledge', + 'tadbulb': 'Tadbulb', + 'bellibolt': 'Bellibolt', + 'wattrel': 'Wattrel', + 'kilowattrel': 'Kilowattrel', + 'maschiff': 'Maschiff', + 'mabosstiff': 'Mabosstiff', + 'shroodle': 'Shroodle', + 'grafaiai': 'Grafaiai', + 'bramblin': 'Bramblin', + 'brambleghast': 'Brambleghast', + 'toedscool': 'Toedscool', + 'toedscruel': 'Toedscruel', + 'klawf': 'Klawf', + 'capsakid': 'Capsakid', + 'scovillain': 'Scovillain', + 'rellor': 'Rellor', + 'rabsca': 'Rabsca', + 'flittle': 'Flittle', + 'espathra': 'Espathra', + 'tinkatink': 'Tinkatink', + 'tinkatuff': 'Tinkatuff', + 'tinkaton': 'Tinkaton', + 'wiglett': 'Wiglett', + 'wugtrio': 'Wugtrio', + 'bombirdier': 'Bombirdier', + 'finizen': 'Finizen', + 'palafin': 'Palafin', + 'varoom': 'Varoom', + 'revavroom': 'Revavroom', + 'cyclizar': 'Cyclizar', + 'orthworm': 'Orthworm', + 'glimmet': 'Glimmet', + 'glimmora': 'Glimmora', + 'greavard': 'Greavard', + 'houndstone': 'Houndstone', + 'flamigo': 'Flamigo', + 'cetoddle': 'Cetoddle', + 'cetitan': 'Cetitan', + 'veluza': 'Veluza', + 'dondozo': 'Dondozo', + 'tatsugiri': 'Tatsugiri', + 'annihilape': 'Annihilape', + 'clodsire': 'Clodsire', + 'farigiraf': 'Farigiraf', + 'dudunsparce': 'Dudunsparce', + 'kingambit': 'Kingambit', + 'great_tusk': 'Presa Grande', + 'scream_tail': 'Cauda Brado', + 'brute_bonnet': 'Capuz Bruto', + 'flutter_mane': 'Juba Sopro', + 'slither_wing': 'Asa Rasteira', + 'sandy_shocks': 'Choque Areia', + 'iron_treads': 'Trilho Férreo', + 'iron_bundle': 'Pacote Férreo', + 'iron_hands': 'Mãos Férreas', + 'iron_jugulis': 'Jugulares Férreas', + 'iron_moth': 'Mariposa Férrea', + 'iron_thorns': 'Espinhos Férreos', + 'frigibax': 'Frigibax', + 'arctibax': 'Arctibax', + 'baxcalibur': 'Baxcalibur', + 'gimmighoul': 'Gimmighoul', + 'gholdengo': 'Gholdengo', + 'wo_chien': 'Wo-Chien', + 'chien_pao': 'Chien-Pao', + 'ting_lu': 'Ting-Lu', + 'chi_yu': 'Chi-Yu', + 'roaring_moon': 'Lua Estrondo', + 'iron_valiant': 'Valentia Férrea', + 'koraidon': 'Koraidon', + 'miraidon': 'Miraidon', + 'walking_wake': 'Onda Ando', + 'iron_leaves': 'Folhas Férreas', + 'dipplin': 'Dipplin', + 'poltchageist': 'Poltchageist', + 'sinistcha': 'Sinistcha', + 'okidogi': 'Okidogi', + 'munkidori': 'Munkidori', + 'fezandipiti': 'Fezandipiti', + 'ogerpon': 'Ogerpon', + 'archaludon': 'Archaludon', + 'hydrapple': 'Hydrapple', + 'gouging_fire': 'Fogo Corrosão', + 'raging_bolt': 'Raio Fúria', + 'iron_boulder': 'Rocha Férrea', + 'iron_crown': 'Chifres Férreos', + 'terapagos': 'Terapagos', + 'pecharunt': 'Pecharunt', + 'alola_rattata': 'Rattata', + 'alola_raticate': 'Raticate', + 'alola_raichu': 'Raichu', + 'alola_sandshrew': 'Sandshrew', + 'alola_sandslash': 'Sandslash', + 'alola_vulpix': 'Vulpix', + 'alola_ninetales': 'Ninetales', + 'alola_diglett': 'Diglett', + 'alola_dugtrio': 'Dugtrio', + 'alola_meowth': 'Meowth', + 'alola_persian': 'Persian', + 'alola_geodude': 'Geodude', + 'alola_graveler': 'Graveler', + 'alola_golem': 'Golem', + 'alola_grimer': 'Grimer', + 'alola_muk': 'Muk', + 'alola_exeggutor': 'Exeggutor', + 'alola_marowak': 'Marowak', + 'eternal_floette': 'Floette', + 'galar_meowth': 'Meowth', + 'galar_ponyta': 'Ponyta', + 'galar_rapidash': 'Rapidash', + 'galar_slowpoke': 'Slowpoke', + 'galar_slowbro': 'Slowbro', + 'galar_farfetchd': 'Farfetch\'d', + 'galar_weezing': 'Weezing', + 'galar_mr_mime': 'Mr. Mime', + 'galar_articuno': 'Articuno', + 'galar_zapdos': 'Zapdos', + 'galar_moltres': 'Moltres', + 'galar_slowking': 'Slowking', + 'galar_corsola': 'Corsola', + 'galar_zigzagoon': 'Zigzagoon', + 'galar_linoone': 'Linoone', + 'galar_darumaka': 'Darumaka', + 'galar_darmanitan': 'Darmanitan', + 'galar_yamask': 'Yamask', + 'galar_stunfisk': 'Stunfisk', + 'hisui_growlithe': 'Growlithe', + 'hisui_arcanine': 'Arcanine', + 'hisui_voltorb': 'Voltorb', + 'hisui_electrode': 'Electrode', + 'hisui_typhlosion': 'Typhlosion', + 'hisui_qwilfish': 'Qwilfish', + 'hisui_sneasel': 'Sneasel', + 'hisui_samurott': 'Samurott', + 'hisui_lilligant': 'Lilligant', + 'hisui_zorua': 'Zorua', + 'hisui_zoroark': 'Zoroark', + 'hisui_braviary': 'Braviary', + 'hisui_sliggoo': 'Sliggoo', + 'hisui_goodra': 'Goodra', + 'hisui_avalugg': 'Avalugg', + 'hisui_decidueye': 'Decidueye', + 'paldea_tauros': 'Tauros', + 'paldea_wooper': 'Wooper', + 'bloodmoon_ursaluna': 'Ursaluna', } as const; diff --git a/src/locales/pt_BR/splash-messages.ts b/src/locales/pt_BR/splash-messages.ts index 85c11300a9f..371430d87a8 100644 --- a/src/locales/pt_BR/splash-messages.ts +++ b/src/locales/pt_BR/splash-messages.ts @@ -1,37 +1,37 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const splashMessages: SimpleTranslationEntries = { - "battlesWon": "Batalhas Ganhas!", - "joinTheDiscord": "Junte-se ao Discord!", - "infiniteLevels": "Níveis Infinitos!", - "everythingStacks": "Tudo Acumula!", - "optionalSaveScumming": "Você Pode Dar F5!", - "biomes": "35 Biomas!", - "openSource": "Código Aberto!", - "playWithSpeed": "Jogue na Velocidade 5x!", - "liveBugTesting": "Testamos os Bugs Ao Vivo!", - "heavyInfluence": "Grande Influência de RoR2!", - "pokemonRiskAndPokemonRain": "Pokémon Risk e Pokémon Rain!", - "nowWithMoreSalt": "O Choro é Livre!", - "infiniteFusionAtHome": "Infinite Fusion da Shopee!", - "brokenEggMoves": "Mov. de Ovo Apelões!", - "magnificent": "Magnífico!", - "mubstitute": "Mubstituto!", - "thatsCrazy": "Que Doidera!", - "oranceJuice": "Suco de Laranja!", - "questionableBalancing": "Balanceamento Questionável!", - "coolShaders": "Shader Maneiros!", - "aiFree": "Livre de IA!", - "suddenDifficultySpikes": "Ficou Difícil do Nada!", - "basedOnAnUnfinishedFlashGame": "Baseado num Jogo Online Inacabado!", - "moreAddictiveThanIntended": "Mais Viciante do que Planejado!", - "mostlyConsistentSeeds": "Consistente (na Maioria das Vezes)!", - "achievementPointsDontDoAnything": "Pontos de Conquista Não Fazem Nada!", - "youDoNotStartAtLevel": "Você Não Começa no Nível 2000!", - "dontTalkAboutTheManaphyEggIncident": "Não Fale do Incidente do Ovo de Manaphy!", - "alsoTryPokengine": "Também Jogue Pokéngine!", - "alsoTryEmeraldRogue": "Também Jogue Emerald Rogue!", - "alsoTryRadicalRed": "Também Jogue Radical Red!", - "eeveeExpo": "Eevee Expo!", - "ynoproject": "YNOproject!", -} as const; \ No newline at end of file + 'battlesWon': 'Batalhas Ganhas!', + 'joinTheDiscord': 'Junte-se ao Discord!', + 'infiniteLevels': 'Níveis Infinitos!', + 'everythingStacks': 'Tudo Acumula!', + 'optionalSaveScumming': 'Você Pode Dar F5!', + 'biomes': '35 Biomas!', + 'openSource': 'Código Aberto!', + 'playWithSpeed': 'Jogue na Velocidade 5x!', + 'liveBugTesting': 'Testamos os Bugs Ao Vivo!', + 'heavyInfluence': 'Grande Influência de RoR2!', + 'pokemonRiskAndPokemonRain': 'Pokémon Risk e Pokémon Rain!', + 'nowWithMoreSalt': 'O Choro é Livre!', + 'infiniteFusionAtHome': 'Infinite Fusion da Shopee!', + 'brokenEggMoves': 'Mov. de Ovo Apelões!', + 'magnificent': 'Magnífico!', + 'mubstitute': 'Mubstituto!', + 'thatsCrazy': 'Que Doidera!', + 'oranceJuice': 'Suco de Laranja!', + 'questionableBalancing': 'Balanceamento Questionável!', + 'coolShaders': 'Shader Maneiros!', + 'aiFree': 'Livre de IA!', + 'suddenDifficultySpikes': 'Ficou Difícil do Nada!', + 'basedOnAnUnfinishedFlashGame': 'Baseado num Jogo Online Inacabado!', + 'moreAddictiveThanIntended': 'Mais Viciante do que Planejado!', + 'mostlyConsistentSeeds': 'Consistente (na Maioria das Vezes)!', + 'achievementPointsDontDoAnything': 'Pontos de Conquista Não Fazem Nada!', + 'youDoNotStartAtLevel': 'Você Não Começa no Nível 2000!', + 'dontTalkAboutTheManaphyEggIncident': 'Não Fale do Incidente do Ovo de Manaphy!', + 'alsoTryPokengine': 'Também Jogue Pokéngine!', + 'alsoTryEmeraldRogue': 'Também Jogue Emerald Rogue!', + 'alsoTryRadicalRed': 'Também Jogue Radical Red!', + 'eeveeExpo': 'Eevee Expo!', + 'ynoproject': 'YNOproject!', +} as const; diff --git a/src/locales/pt_BR/starter-select-ui-handler.ts b/src/locales/pt_BR/starter-select-ui-handler.ts index 7d77f48f290..bd021bf6445 100644 --- a/src/locales/pt_BR/starter-select-ui-handler.ts +++ b/src/locales/pt_BR/starter-select-ui-handler.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,39 +6,39 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const starterSelectUiHandler: SimpleTranslationEntries = { - "confirmStartTeam": 'Começar com esses Pokémon?', - "gen1": "I", - "gen2": "II", - "gen3": "III", - "gen4": "IV", - "gen5": "V", - "gen6": "VI", - "gen7": "VII", - "gen8": "VIII", - "gen9": "IX", - "growthRate": "Crescimento:", - "ability": "Habilidade:", - "passive": "Passiva:", - "nature": "Natureza:", - "eggMoves": "Mov. de Ovo", - "start": "Iniciar", - "addToParty": "Adicionar à equipe", - "toggleIVs": "Mostrar IVs", - "manageMoves": "Mudar Movimentos", - "useCandies": "Usar Doces", - "selectMoveSwapOut": "Escolha um movimento para substituir.", - "selectMoveSwapWith": "Escolha o movimento que substituirá", - "unlockPassive": "Aprender Passiva", - "reduceCost": "Reduzir Custo", - "cycleShiny": "R: Mudar Shiny", - "cycleForm": 'F: Mudar Forma', - "cycleGender": 'G: Mudar Gênero', - "cycleAbility": 'E: Mudar Habilidade', - "cycleNature": 'N: Mudar Natureza', - "cycleVariant": 'V: Mudar Variante', - "enablePassive": "Ativar Passiva", - "disablePassive": "Desativar Passiva", - "locked": "Bloqueada", - "disabled": "Desativada", - "uncaught": "Não capturado" -} + 'confirmStartTeam': 'Começar com esses Pokémon?', + 'gen1': 'I', + 'gen2': 'II', + 'gen3': 'III', + 'gen4': 'IV', + 'gen5': 'V', + 'gen6': 'VI', + 'gen7': 'VII', + 'gen8': 'VIII', + 'gen9': 'IX', + 'growthRate': 'Crescimento:', + 'ability': 'Habilidade:', + 'passive': 'Passiva:', + 'nature': 'Natureza:', + 'eggMoves': 'Mov. de Ovo', + 'start': 'Iniciar', + 'addToParty': 'Adicionar à equipe', + 'toggleIVs': 'Mostrar IVs', + 'manageMoves': 'Mudar Movimentos', + 'useCandies': 'Usar Doces', + 'selectMoveSwapOut': 'Escolha um movimento para substituir.', + 'selectMoveSwapWith': 'Escolha o movimento que substituirá', + 'unlockPassive': 'Aprender Passiva', + 'reduceCost': 'Reduzir Custo', + 'cycleShiny': 'R: Mudar Shiny', + 'cycleForm': 'F: Mudar Forma', + 'cycleGender': 'G: Mudar Gênero', + 'cycleAbility': 'E: Mudar Habilidade', + 'cycleNature': 'N: Mudar Natureza', + 'cycleVariant': 'V: Mudar Variante', + 'enablePassive': 'Ativar Passiva', + 'disablePassive': 'Desativar Passiva', + 'locked': 'Bloqueada', + 'disabled': 'Desativada', + 'uncaught': 'Não capturado' +}; diff --git a/src/locales/pt_BR/trainers.ts b/src/locales/pt_BR/trainers.ts index 96dc7d1934e..879585bb59d 100644 --- a/src/locales/pt_BR/trainers.ts +++ b/src/locales/pt_BR/trainers.ts @@ -1,244 +1,244 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; // Titles of special trainers like gym leaders, elite four, and the champion export const titles: SimpleTranslationEntries = { - "elite_four": "Elite dos Quatro", - "gym_leader": "Líder de Ginásio", - "gym_leader_female": "Líder de Ginásio", - "champion": "Campeão", - "rival": "Rival", - "professor": "Professor", - "frontier_brain": "Cérebro da Fronteira", - // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. + 'elite_four': 'Elite dos Quatro', + 'gym_leader': 'Líder de Ginásio', + 'gym_leader_female': 'Líder de Ginásio', + 'champion': 'Campeão', + 'rival': 'Rival', + 'professor': 'Professor', + 'frontier_brain': 'Cérebro da Fronteira', + // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. } as const; // Titles of trainers like "Youngster" or "Lass" export const trainerClasses: SimpleTranslationEntries = { - "ace_trainer": "Trinador Ás", - "ace_trainer_female": "Trinadora Ás", - "ace_duo": "Dupla Ás", - "artist": "Artista", - "artist_female": "Artista", - "backpackers": "Mochileiros", - "backers": "Torcedores", - "backpacker": "Mochileiro", - "backpacker_female": "Mochileira", - "baker": "Padeira", - "battle_girl": "Lutadora", - "beauty": "Modelo", - "beginners": "Beginners", - "biker": "Motoqueiro", - "black_belt": "Faixa Preta", - "breeder": "Criador", - "breeder_female": "Criadora", - "breeders": "Criadores", - "clerk": "Funcionário", - "clerk_female": "Funcionária", - "colleagues": "Funcionários", - "crush_kin": "Casal Lutador", - "cyclist": "Ciclista", - "cyclist_female": "Ciclista", - "cyclists": "Ciclistas", - "dancer": "Dançarino", - "dancer_female": "Dançarina", - "depot_agent": "Ferroviário", - "doctor": "Doutor", - "doctor_female": "Doutora", - "fishermen": "Pescador", - "fishermen_female": "Pescadora", - "gentleman": "Cavalheiro", - "guitarist": "Guitarrista", - "guitarist_female": "Guitarrista", - "harlequin": "Arlequim", - "hiker": "Montanhista", - "hooligans": "Bandoleiro", - "hoopster": "Jogador de Basquete", - "infielder": "Jogador de Baseball", - "janitor": "Faxineiro", - "lady": "Dama", - "lass": "Senhorita", - "linebacker": "Zagueiro", - "maid": "Doméstica", - "madame": "Madame", - "medical_team": "Equipe Médica", - "musician": "Músico", - "hex_maniac": "Ocultista", - "nurse": "Enfermeira", - "nursery_aide": "Professora do Berçário", - "officer": "Policial", - "parasol_lady": "Moça de Sombrinha", - "pilot": "Piloto", - "pokéfan": "Pokefã", - "pokéfan_female": "Pokéfã", - "pokéfan_family": "Família Pokefã", - "preschooler": "Menino do Prezinho", - "preschooler_female": "Menina do Prezinho", - "preschoolers": "Alunos do Prezinho", - "psychic": "Médium", - "psychic_female": "Médium", - "psychics": "Médiuns", - "pokémon_ranger": "Guarda Pokémon", - "pokémon_ranger_female": "Guarda Pokémon", - "pokémon_rangers": "Guardas Pokémon", - "ranger": "Guarda", - "restaurant_staff": "Equipe do Restaurante", - "rich": "Burguês", - "rich_female": "Burguesa", - "rich_boy": "Riquinho", - "rich_couple": "Casal Burguês", - "rich_kid": "Garoto Rico", - "rich_kid_female": "Garota Rica", - "rich_kids": "Garotos Ricos", - "roughneck": "Arruaceiro", - "scientist": "Cientista", - "scientist_female": "Cientista", - "scientists": "Cientistas", - "smasher": "Tenista", - "snow_worker": "Operário da Neve", - "snow_worker_female": "Operária da Neve", - "striker": "Atacante", - "school_kid": "Estudante", - "school_kid_female": "Estudante", - "school_kids": "Estudantes", - "swimmer": "Nadador", - "swimmer_female": "Nadadora", - "swimmers": "Nadadores", - "twins": "Gêmeos", - "veteran": "Veterano", - "veteran_female": "Veterana", - "veteran_duo": "Dupla Veterana", - "waiter": "Garçom", - "waitress": "Garçonete", - "worker": "Operário", - "worker_female": "Operária", - "workers": "Operários", - "youngster": "Jovem", + 'ace_trainer': 'Trinador Ás', + 'ace_trainer_female': 'Trinadora Ás', + 'ace_duo': 'Dupla Ás', + 'artist': 'Artista', + 'artist_female': 'Artista', + 'backpackers': 'Mochileiros', + 'backers': 'Torcedores', + 'backpacker': 'Mochileiro', + 'backpacker_female': 'Mochileira', + 'baker': 'Padeira', + 'battle_girl': 'Lutadora', + 'beauty': 'Modelo', + 'beginners': 'Beginners', + 'biker': 'Motoqueiro', + 'black_belt': 'Faixa Preta', + 'breeder': 'Criador', + 'breeder_female': 'Criadora', + 'breeders': 'Criadores', + 'clerk': 'Funcionário', + 'clerk_female': 'Funcionária', + 'colleagues': 'Funcionários', + 'crush_kin': 'Casal Lutador', + 'cyclist': 'Ciclista', + 'cyclist_female': 'Ciclista', + 'cyclists': 'Ciclistas', + 'dancer': 'Dançarino', + 'dancer_female': 'Dançarina', + 'depot_agent': 'Ferroviário', + 'doctor': 'Doutor', + 'doctor_female': 'Doutora', + 'fishermen': 'Pescador', + 'fishermen_female': 'Pescadora', + 'gentleman': 'Cavalheiro', + 'guitarist': 'Guitarrista', + 'guitarist_female': 'Guitarrista', + 'harlequin': 'Arlequim', + 'hiker': 'Montanhista', + 'hooligans': 'Bandoleiro', + 'hoopster': 'Jogador de Basquete', + 'infielder': 'Jogador de Baseball', + 'janitor': 'Faxineiro', + 'lady': 'Dama', + 'lass': 'Senhorita', + 'linebacker': 'Zagueiro', + 'maid': 'Doméstica', + 'madame': 'Madame', + 'medical_team': 'Equipe Médica', + 'musician': 'Músico', + 'hex_maniac': 'Ocultista', + 'nurse': 'Enfermeira', + 'nursery_aide': 'Professora do Berçário', + 'officer': 'Policial', + 'parasol_lady': 'Moça de Sombrinha', + 'pilot': 'Piloto', + 'pokéfan': 'Pokefã', + 'pokéfan_female': 'Pokéfã', + 'pokéfan_family': 'Família Pokefã', + 'preschooler': 'Menino do Prezinho', + 'preschooler_female': 'Menina do Prezinho', + 'preschoolers': 'Alunos do Prezinho', + 'psychic': 'Médium', + 'psychic_female': 'Médium', + 'psychics': 'Médiuns', + 'pokémon_ranger': 'Guarda Pokémon', + 'pokémon_ranger_female': 'Guarda Pokémon', + 'pokémon_rangers': 'Guardas Pokémon', + 'ranger': 'Guarda', + 'restaurant_staff': 'Equipe do Restaurante', + 'rich': 'Burguês', + 'rich_female': 'Burguesa', + 'rich_boy': 'Riquinho', + 'rich_couple': 'Casal Burguês', + 'rich_kid': 'Garoto Rico', + 'rich_kid_female': 'Garota Rica', + 'rich_kids': 'Garotos Ricos', + 'roughneck': 'Arruaceiro', + 'scientist': 'Cientista', + 'scientist_female': 'Cientista', + 'scientists': 'Cientistas', + 'smasher': 'Tenista', + 'snow_worker': 'Operário da Neve', + 'snow_worker_female': 'Operária da Neve', + 'striker': 'Atacante', + 'school_kid': 'Estudante', + 'school_kid_female': 'Estudante', + 'school_kids': 'Estudantes', + 'swimmer': 'Nadador', + 'swimmer_female': 'Nadadora', + 'swimmers': 'Nadadores', + 'twins': 'Gêmeos', + 'veteran': 'Veterano', + 'veteran_female': 'Veterana', + 'veteran_duo': 'Dupla Veterana', + 'waiter': 'Garçom', + 'waitress': 'Garçonete', + 'worker': 'Operário', + 'worker_female': 'Operária', + 'workers': 'Operários', + 'youngster': 'Jovem', } as const; // Names of special trainers like gym leaders, elite four, and the champion export const trainerNames: SimpleTranslationEntries = { - "brock": "Brock", - "misty": "Misty", - "lt_surge": "Ten. Surge", - "erika": "Erika", - "janine": "Janine", - "sabrina": "Sabrina", - "blaine": "Blaine", - "giovanni": "Giovanni", - "falkner": "Falkner", - "bugsy": "Bugsy", - "whitney": "Whitney", - "morty": "Morty", - "chuck": "Chuck", - "jasmine": "Jasmine", - "pryce": "Pryce", - "clair": "Clair", - "roxanne": "Roxanne", - "brawly": "Brawly", - "wattson": "Wattson", - "flannery": "Flannery", - "norman": "Norman", - "winona": "Winona", - "tate": "Tate", - "liza": "Liza", - "juan": "Juan", - "roark": "Roark", - "gardenia": "Gardenia", - "maylene": "Maylene", - "crasher_wake": "Demolidor Wake", - "fantina": "Fantina", - "byron": "Byron", - "candice": "Candice", - "volkner": "Volkner", - "cilan": "Cilan", - "chili": "Chili", - "cress": "Cress", - "cheren": "Cheren", - "lenora": "Lenora", - "roxie": "Roxie", - "burgh": "Burgh", - "elesa": "Elesa", - "clay": "Clay", - "skyla": "Skyla", - "brycen": "Brycen", - "drayden": "Drayden", - "marlon": "Marlon", - "viola": "Viola", - "grant": "Grant", - "korrina": "Korrina", - "ramos": "Ramos", - "clemont": "Clemont", - "valerie": "Valerie", - "olympia": "Olympia", - "wulfric": "Wulfric", - "milo": "Milo", - "nessa": "Nessa", - "kabu": "Kabu", - "bea": "Bea", - "allister": "Allister", - "opal": "Opal", - "bede": "Bede", - "gordie": "Gordie", - "melony": "Melony", - "piers": "Piers", - "marnie": "Marnie", - "raihan": "Raihan", - "katy": "Katy", - "brassius": "Brassius", - "iono": "Iono", - "kofu": "Kofu", - "larry": "Larry", - "ryme": "Ryme", - "tulip": "Tulip", - "grusha": "Grusha", - "lorelei": "Lorelei", - "bruno": "Bruno", - "agatha": "Agatha", - "lance": "Lance", - "will": "Will", - "koga": "Koga", - "karen": "Karen", - "sidney": "Sidney", - "phoebe": "Phoebe", - "glacia": "Glacia", - "drake": "Drake", - "aaron": "Aaron", - "bertha": "Bertha", - "flint": "Flint", - "lucian": "Lucian", - "shauntal": "Shauntal", - "marshal": "Marshal", - "grimsley": "Grimsley", - "caitlin": "Caitlin", - "malva": "Malva", - "siebold": "Siebold", - "wikstrom": "Wikstrom", - "drasna": "Drasna", - "hala": "Hala", - "molayne": "Molayne", - "olivia": "Olivia", - "acerola": "Acerola", - "kahili": "Kahili", - "rika": "Rika", - "poppy": "Poppy", - "hassel": "Hassel", - "crispin": "Crispin", - "amarys": "Amarys", - "lacey": "Lacey", - "drayton": "Drayton", - "blue": "Blue", - "red": "Red", - "steven": "Steven", - "wallace": "Wallace", - "cynthia": "Cynthia", - "alder": "Alder", - "iris": "Iris", - "diantha": "Diantha", - "hau": "Hau", - "geeta": "Geeta", - "nemona": "Nemona", - "kieran": "Kieran", - "leon": "Leon", - "rival": "Finn", - "rival_female": "Ivy", -} as const; \ No newline at end of file + 'brock': 'Brock', + 'misty': 'Misty', + 'lt_surge': 'Ten. Surge', + 'erika': 'Erika', + 'janine': 'Janine', + 'sabrina': 'Sabrina', + 'blaine': 'Blaine', + 'giovanni': 'Giovanni', + 'falkner': 'Falkner', + 'bugsy': 'Bugsy', + 'whitney': 'Whitney', + 'morty': 'Morty', + 'chuck': 'Chuck', + 'jasmine': 'Jasmine', + 'pryce': 'Pryce', + 'clair': 'Clair', + 'roxanne': 'Roxanne', + 'brawly': 'Brawly', + 'wattson': 'Wattson', + 'flannery': 'Flannery', + 'norman': 'Norman', + 'winona': 'Winona', + 'tate': 'Tate', + 'liza': 'Liza', + 'juan': 'Juan', + 'roark': 'Roark', + 'gardenia': 'Gardenia', + 'maylene': 'Maylene', + 'crasher_wake': 'Demolidor Wake', + 'fantina': 'Fantina', + 'byron': 'Byron', + 'candice': 'Candice', + 'volkner': 'Volkner', + 'cilan': 'Cilan', + 'chili': 'Chili', + 'cress': 'Cress', + 'cheren': 'Cheren', + 'lenora': 'Lenora', + 'roxie': 'Roxie', + 'burgh': 'Burgh', + 'elesa': 'Elesa', + 'clay': 'Clay', + 'skyla': 'Skyla', + 'brycen': 'Brycen', + 'drayden': 'Drayden', + 'marlon': 'Marlon', + 'viola': 'Viola', + 'grant': 'Grant', + 'korrina': 'Korrina', + 'ramos': 'Ramos', + 'clemont': 'Clemont', + 'valerie': 'Valerie', + 'olympia': 'Olympia', + 'wulfric': 'Wulfric', + 'milo': 'Milo', + 'nessa': 'Nessa', + 'kabu': 'Kabu', + 'bea': 'Bea', + 'allister': 'Allister', + 'opal': 'Opal', + 'bede': 'Bede', + 'gordie': 'Gordie', + 'melony': 'Melony', + 'piers': 'Piers', + 'marnie': 'Marnie', + 'raihan': 'Raihan', + 'katy': 'Katy', + 'brassius': 'Brassius', + 'iono': 'Iono', + 'kofu': 'Kofu', + 'larry': 'Larry', + 'ryme': 'Ryme', + 'tulip': 'Tulip', + 'grusha': 'Grusha', + 'lorelei': 'Lorelei', + 'bruno': 'Bruno', + 'agatha': 'Agatha', + 'lance': 'Lance', + 'will': 'Will', + 'koga': 'Koga', + 'karen': 'Karen', + 'sidney': 'Sidney', + 'phoebe': 'Phoebe', + 'glacia': 'Glacia', + 'drake': 'Drake', + 'aaron': 'Aaron', + 'bertha': 'Bertha', + 'flint': 'Flint', + 'lucian': 'Lucian', + 'shauntal': 'Shauntal', + 'marshal': 'Marshal', + 'grimsley': 'Grimsley', + 'caitlin': 'Caitlin', + 'malva': 'Malva', + 'siebold': 'Siebold', + 'wikstrom': 'Wikstrom', + 'drasna': 'Drasna', + 'hala': 'Hala', + 'molayne': 'Molayne', + 'olivia': 'Olivia', + 'acerola': 'Acerola', + 'kahili': 'Kahili', + 'rika': 'Rika', + 'poppy': 'Poppy', + 'hassel': 'Hassel', + 'crispin': 'Crispin', + 'amarys': 'Amarys', + 'lacey': 'Lacey', + 'drayton': 'Drayton', + 'blue': 'Blue', + 'red': 'Red', + 'steven': 'Steven', + 'wallace': 'Wallace', + 'cynthia': 'Cynthia', + 'alder': 'Alder', + 'iris': 'Iris', + 'diantha': 'Diantha', + 'hau': 'Hau', + 'geeta': 'Geeta', + 'nemona': 'Nemona', + 'kieran': 'Kieran', + 'leon': 'Leon', + 'rival': 'Finn', + 'rival_female': 'Ivy', +} as const; diff --git a/src/locales/pt_BR/tutorial.ts b/src/locales/pt_BR/tutorial.ts index 1f79616481f..a17361570ce 100644 --- a/src/locales/pt_BR/tutorial.ts +++ b/src/locales/pt_BR/tutorial.ts @@ -1,7 +1,7 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const tutorial: SimpleTranslationEntries = { - "intro": `Bem-vindo ao PokéRogue! Este é um jogo Pokémon feito por fãs focado em batalhas com elementos roguelite. + 'intro': `Bem-vindo ao PokéRogue! Este é um jogo Pokémon feito por fãs focado em batalhas com elementos roguelite. $Este jogo não é monetizado e não reivindicamos propriedade de Pokémon nem dos ativos protegidos $por direitos autorais usados. $O jogo é um trabalho em andamento, mas é totalmente jogável. @@ -9,30 +9,30 @@ export const tutorial: SimpleTranslationEntries = { $Se o jogo estiver rodando lentamente, certifique-se de que a 'Aceleração de hardware' esteja ativada $nas configurações do seu navegador.`, - "accessMenu": `Para acessar o menu, aperte M ou Esc. + 'accessMenu': `Para acessar o menu, aperte M ou Esc. $O menu contém configurações e diversas funções.`, - "menu": `A partir deste menu, você pode acessar as configurações. + 'menu': `A partir deste menu, você pode acessar as configurações. $Nas configurações, você pode alterar a velocidade do jogo, $o estilo da janela, entre outras opções. $Existem também vários outros recursos disponíveis aqui. $Não deixe de conferir todos eles!`, - "starterSelect": `Aqui você pode escolher seus iniciais.\nEsses serão os primeiro Pokémon da sua equipe. + 'starterSelect': `Aqui você pode escolher seus iniciais.\nEsses serão os primeiro Pokémon da sua equipe. $Cada inicial tem seu custo. Sua equipe pode ter até 6\nmembros, desde que a soma dos custos não ultrapasse 10. $Você pode escolher o gênero, a habilidade\ne até a forma do seu inicial. $Essas opções dependem das variantes dessa\nespécie que você já capturou ou chocou. $Os IVs de cada inicial são os melhores de todos os Pokémon\ndaquela espécie que você já capturou ou chocou. $Sempre capture vários Pokémon de várias espécies!`, - "pokerus": `Todo dia, 3 Pokémon iniciais ficam com uma borda roxa. + 'pokerus': `Todo dia, 3 Pokémon iniciais ficam com uma borda roxa. $Caso veja um inicial que você possui com uma dessa, tente\nadicioná-lo a sua equipe. Lembre-se de olhar seu sumário!`, - "statChange": `As mudanças de atributos se mantém após a batalha desde que o Pokémon não seja trocado. + 'statChange': `As mudanças de atributos se mantém após a batalha desde que o Pokémon não seja trocado. $Seus Pokémon voltam a suas Poké Bolas antes de batalhas contra treinadores e de entrar em um novo bioma. $Para ver as mudanças de atributos dos Pokémon em campo, mantena C ou Shift pressionado durante a batalha.`, - "selectItem": `Após cada batalha, você pode escolher entre 3 itens aleatórios. + 'selectItem': `Após cada batalha, você pode escolher entre 3 itens aleatórios. $Você pode escolher apenas um deles. $Esses itens variam entre consumíveis, itens de segurar e itens passivos permanentes. $A maioria dos efeitos de itens não consumíveis podem ser acumulados. @@ -42,10 +42,10 @@ export const tutorial: SimpleTranslationEntries = { $Você pode comprar itens consumíveis com dinheiro, e sua variedade aumentará conforme você for mais longe. $Certifique-se de comprá-los antes de escolher seu item aleatório. Ao escolhê-lo, a próxima batalha começará.`, - "eggGacha": `Aqui você pode trocar seus vouchers\npor ovos de Pokémon. + 'eggGacha': `Aqui você pode trocar seus vouchers\npor ovos de Pokémon. $Ovos ficam mais próximos de chocar após cada batalha.\nOvos mais raros demoram mais para chocar. $Pokémon chocados não serão adicionados a sua equipe,\nmas sim aos seus iniciais. $Pokémon chocados geralmente possuem IVs melhores\nque Pokémon selvagens. $Alguns Pokémon só podem ser obtidos através de seus ovos. $Temos 3 máquinas, cada uma com seu bônus específico,\nentão escolha a que mais lhe convém!`, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/pt_BR/voucher.ts b/src/locales/pt_BR/voucher.ts index 7af569e88cb..2df0ccd7a9d 100644 --- a/src/locales/pt_BR/voucher.ts +++ b/src/locales/pt_BR/voucher.ts @@ -1,11 +1,11 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const voucher: SimpleTranslationEntries = { - "vouchers": "Vouchers", - "eggVoucher": "Egg Voucher", - "eggVoucherPlus": "Egg Voucher Plus", - "eggVoucherPremium": "Egg Voucher Premium", - "eggVoucherGold": "Egg Voucher Gold", - "locked": "Locked", - "defeatTrainer": "Defeat {{trainerName}}" -} as const; \ No newline at end of file + 'vouchers': 'Vouchers', + 'eggVoucher': 'Egg Voucher', + 'eggVoucherPlus': 'Egg Voucher Plus', + 'eggVoucherPremium': 'Egg Voucher Premium', + 'eggVoucherGold': 'Egg Voucher Gold', + 'locked': 'Locked', + 'defeatTrainer': 'Defeat {{trainerName}}' +} as const; diff --git a/src/locales/pt_BR/weather.ts b/src/locales/pt_BR/weather.ts index de37cab7812..7b60917005a 100644 --- a/src/locales/pt_BR/weather.ts +++ b/src/locales/pt_BR/weather.ts @@ -1,44 +1,44 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The weather namespace holds text displayed when weather is active during a battle */ export const weather: SimpleTranslationEntries = { - "sunnyStartMessage": "A luz do sol ficou clara!", - "sunnyLapseMessage": "A luz do sol está forte.", - "sunnyClearMessage": "A luz do sol sumiu.", + 'sunnyStartMessage': 'A luz do sol ficou clara!', + 'sunnyLapseMessage': 'A luz do sol está forte.', + 'sunnyClearMessage': 'A luz do sol sumiu.', - "rainStartMessage": "Começou a chover!", - "rainLapseMessage": "A chuva continua forte.", - "rainClearMessage": "A chuva parou.", + 'rainStartMessage': 'Começou a chover!', + 'rainLapseMessage': 'A chuva continua forte.', + 'rainClearMessage': 'A chuva parou.', - "sandstormStartMessage": "Uma tempestade de areia se formou!", - "sandstormLapseMessage": "A tempestade de areia é violenta.", - "sandstormClearMessage": "A tempestade de areia diminuiu.", - "sandstormDamageMessage": "{{pokemonPrefix}}{{pokemonName}} é atingido\npela tempestade de areia!", + 'sandstormStartMessage': 'Uma tempestade de areia se formou!', + 'sandstormLapseMessage': 'A tempestade de areia é violenta.', + 'sandstormClearMessage': 'A tempestade de areia diminuiu.', + 'sandstormDamageMessage': '{{pokemonPrefix}}{{pokemonName}} é atingido\npela tempestade de areia!', - "hailStartMessage": "Começou a chover granizo!", - "hailLapseMessage": "Granizo cai do céu.", - "hailClearMessage": "O granizo parou.", - "hailDamageMessage": "{{pokemonPrefix}}{{pokemonName}} é atingido\npelo granizo!", + 'hailStartMessage': 'Começou a chover granizo!', + 'hailLapseMessage': 'Granizo cai do céu.', + 'hailClearMessage': 'O granizo parou.', + 'hailDamageMessage': '{{pokemonPrefix}}{{pokemonName}} é atingido\npelo granizo!', - "snowStartMessage": "Começou a nevar!", - "snowLapseMessage": "A neve continua caindo.", - "snowClearMessage": "Parou de nevar.", + 'snowStartMessage': 'Começou a nevar!', + 'snowLapseMessage': 'A neve continua caindo.', + 'snowClearMessage': 'Parou de nevar.', - "fogStartMessage": "Uma névoa densa se formou!", - "fogLapseMessage": "A névoa continua forte.", - "fogClearMessage": "A névoa sumiu.", + 'fogStartMessage': 'Uma névoa densa se formou!', + 'fogLapseMessage': 'A névoa continua forte.', + 'fogClearMessage': 'A névoa sumiu.', - "heavyRainStartMessage": "Um temporal começou!", - "heavyRainLapseMessage": "O temporal continua forte.", - "heavyRainClearMessage": "O temporal parou.", + 'heavyRainStartMessage': 'Um temporal começou!', + 'heavyRainLapseMessage': 'O temporal continua forte.', + 'heavyRainClearMessage': 'O temporal parou.', - "harshSunStartMessage": "A luz do sol está escaldante!", - "harshSunLapseMessage": "A luz do sol é intensa.", - "harshSunClearMessage": "A luz do sol enfraqueceu.", + 'harshSunStartMessage': 'A luz do sol está escaldante!', + 'harshSunLapseMessage': 'A luz do sol é intensa.', + 'harshSunClearMessage': 'A luz do sol enfraqueceu.', - "strongWindsStartMessage": "Ventos fortes apareceram!", - "strongWindsLapseMessage": "Os ventos fortes continuam.", - "strongWindsClearMessage": "Os ventos fortes diminuíram.", -} \ No newline at end of file + 'strongWindsStartMessage': 'Ventos fortes apareceram!', + 'strongWindsLapseMessage': 'Os ventos fortes continuam.', + 'strongWindsClearMessage': 'Os ventos fortes diminuíram.', +}; diff --git a/src/locales/zh_CN/ability-trigger.ts b/src/locales/zh_CN/ability-trigger.ts index d40fad7a10a..760702f63d8 100644 --- a/src/locales/zh_CN/ability-trigger.ts +++ b/src/locales/zh_CN/ability-trigger.ts @@ -1,6 +1,6 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const abilityTriggers: SimpleTranslationEntries = { - 'blockRecoilDamage' : `{{pokemonName}} 的 {{abilityName}}\n抵消了反作用力!`, - 'badDreams': `{{pokemonName}} 被折磨着!` -} as const; \ No newline at end of file + 'blockRecoilDamage' : '{{pokemonName}} 的 {{abilityName}}\n抵消了反作用力!', + 'badDreams': '{{pokemonName}} 被折磨着!' +} as const; diff --git a/src/locales/zh_CN/ability.ts b/src/locales/zh_CN/ability.ts index 24859668764..d6cfd8c6cb5 100644 --- a/src/locales/zh_CN/ability.ts +++ b/src/locales/zh_CN/ability.ts @@ -1,1244 +1,1244 @@ -import { AbilityTranslationEntries } from "#app/plugins/i18n.js"; +import { AbilityTranslationEntries } from '#app/plugins/i18n.js'; export const ability: AbilityTranslationEntries = { stench: { - name: "恶臭", - description: "通过释放臭臭的气味,在攻\n击的时候,有时会使对手畏\n缩。", + name: '恶臭', + description: '通过释放臭臭的气味,在攻\n击的时候,有时会使对手畏\n缩。', }, drizzle: { - name: "降雨", - description: "出场时,会将天气变为下雨\n。", + name: '降雨', + description: '出场时,会将天气变为下雨\n。', }, speedBoost: { - name: "加速", - description: "每一回合速度会变快。", + name: '加速', + description: '每一回合速度会变快。', }, battleArmor: { - name: "战斗盔甲", - description: "被坚硬的甲壳守护着,不会\n被对手的攻击击中要害。", + name: '战斗盔甲', + description: '被坚硬的甲壳守护着,不会\n被对手的攻击击中要害。', }, sturdy: { - name: "结实", - description: "在HP全满时,即使受到招\n式攻击,也不会被一击打倒\n。一击必杀的招式也没有效\n果。", + name: '结实', + description: '在HP全满时,即使受到招\n式攻击,也不会被一击打倒\n。一击必杀的招式也没有效\n果。', }, damp: { - name: "湿气", - description: "通过把周围都弄湿,使谁都\n无法使用自爆等爆炸类的招\n式。", + name: '湿气', + description: '通过把周围都弄湿,使谁都\n无法使用自爆等爆炸类的招\n式。', }, limber: { - name: "柔软", - description: "因为身体柔软,不会变为麻\n痹状态。", + name: '柔软', + description: '因为身体柔软,不会变为麻\n痹状态。', }, sandVeil: { - name: "沙隐", - description: "在沙暴的时候,闪避率会提\n高。", + name: '沙隐', + description: '在沙暴的时候,闪避率会提\n高。', }, static: { - name: "静电", - description: "身上带有静电,有时会让接\n触到的对手麻痹。", + name: '静电', + description: '身上带有静电,有时会让接\n触到的对手麻痹。', }, voltAbsorb: { - name: "蓄电", - description: "受到电属性的招式攻击时,\n不会受到伤害,而是会回复。", + name: '蓄电', + description: '受到电属性的招式攻击时,\n不会受到伤害,而是会回复。', }, waterAbsorb: { - name: "储水", - description: "受到水属性的招式攻击时,\n不会受到伤害,而是会回复。", + name: '储水', + description: '受到水属性的招式攻击时,\n不会受到伤害,而是会回复。', }, oblivious: { - name: "迟钝", - description: "因为感觉迟钝,不会变为着\n迷和被挑衅状态。对威吓也\n毫不动摇。", + name: '迟钝', + description: '因为感觉迟钝,不会变为着\n迷和被挑衅状态。对威吓也\n毫不动摇。', }, cloudNine: { - name: "无关天气", - description: "任何天气的影响都会消失。", + name: '无关天气', + description: '任何天气的影响都会消失。', }, compoundEyes: { - name: "复眼", - description: "因为拥有复眼,招式的命中\n率会提高。", + name: '复眼', + description: '因为拥有复眼,招式的命中\n率会提高。', }, insomnia: { - name: "不眠", - description: "因为有着睡不着的体质,所\n以不会陷入睡眠状态。", + name: '不眠', + description: '因为有着睡不着的体质,所\n以不会陷入睡眠状态。', }, colorChange: { - name: "变色", - description: "自己的属性会变为从对手处\n所受招式的属性。", + name: '变色', + description: '自己的属性会变为从对手处\n所受招式的属性。', }, immunity: { - name: "免疫", - description: "因为体内拥有免疫能力,不\n会变为中毒状态。", + name: '免疫', + description: '因为体内拥有免疫能力,不\n会变为中毒状态。', }, flashFire: { - name: "引火", - description: "受到火属性的招式攻击时,\n吸收火焰,自己使出的火属\n性招式会变强。", + name: '引火', + description: '受到火属性的招式攻击时,\n吸收火焰,自己使出的火属\n性招式会变强。', }, shieldDust: { - name: "鳞粉", - description: "被鳞粉守护着,不会受到招\n式的追加效果影响。", + name: '鳞粉', + description: '被鳞粉守护着,不会受到招\n式的追加效果影响。', }, ownTempo: { - name: "我行我素", - description: "因为我行我素,不会变为混\n乱状态。对威吓也毫不动摇。", + name: '我行我素', + description: '因为我行我素,不会变为混\n乱状态。对威吓也毫不动摇。', }, suctionCups: { - name: "吸盘", - description: "用吸盘牢牢贴在地面上,让\n替换宝可梦的招式和道具无\n效。", + name: '吸盘', + description: '用吸盘牢牢贴在地面上,让\n替换宝可梦的招式和道具无\n效。', }, intimidate: { - name: "威吓", - description: "出场时威吓对手,让其退缩\n,降低对手的攻击。", + name: '威吓', + description: '出场时威吓对手,让其退缩\n,降低对手的攻击。', }, shadowTag: { - name: "踩影", - description: "踩住对手的影子使其无法逃\n走或替换。", + name: '踩影', + description: '踩住对手的影子使其无法逃\n走或替换。', }, roughSkin: { - name: "粗糙皮肤", - description: "受到攻击时,用粗糙的皮肤\n弄伤接触到自己的对手。", + name: '粗糙皮肤', + description: '受到攻击时,用粗糙的皮肤\n弄伤接触到自己的对手。', }, wonderGuard: { - name: "神奇守护", - description: "不可思议的力量,只有效果\n绝佳的招式才能击中。", + name: '神奇守护', + description: '不可思议的力量,只有效果\n绝佳的招式才能击中。', }, levitate: { - name: "飘浮", - description: "从地面浮起,从而不会受到\n地面属性招式的攻击。", + name: '飘浮', + description: '从地面浮起,从而不会受到\n地面属性招式的攻击。', }, effectSpore: { - name: "孢子", - description: "受到攻击时,有时会把接触\n到自己的对手变为中毒、麻\n痹或睡眠状态。", + name: '孢子', + description: '受到攻击时,有时会把接触\n到自己的对手变为中毒、麻\n痹或睡眠状态。', }, synchronize: { - name: "同步", - description: "将自己的中毒、麻痹或灼伤\n状态传染给对手。", + name: '同步', + description: '将自己的中毒、麻痹或灼伤\n状态传染给对手。', }, clearBody: { - name: "恒净之躯", - description: "不会因为对手的招式或特性\n而被降低能力。", + name: '恒净之躯', + description: '不会因为对手的招式或特性\n而被降低能力。', }, naturalCure: { - name: "自然回复", - description: "回到同行队伍后,异常状态\n就会被治愈。", + name: '自然回复', + description: '回到同行队伍后,异常状态\n就会被治愈。', }, lightningRod: { - name: "避雷针", - description: "将电属性的招式吸引到自己\n身上,不会受到伤害,而是\n会提高特攻。", + name: '避雷针', + description: '将电属性的招式吸引到自己\n身上,不会受到伤害,而是\n会提高特攻。', }, sereneGrace: { - name: "天恩", - description: "托天恩的福,招式的追加效\n果容易出现。", + name: '天恩', + description: '托天恩的福,招式的追加效\n果容易出现。', }, swiftSwim: { - name: "悠游自如", - description: "下雨天气时,速度会提高。", + name: '悠游自如', + description: '下雨天气时,速度会提高。', }, chlorophyll: { - name: "叶绿素", - description: "晴朗天气时,速度会提高。", + name: '叶绿素', + description: '晴朗天气时,速度会提高。', }, illuminate: { - name: "发光", - description: "通过让周围变亮来保持命中\n率不会被降低。", + name: '发光', + description: '通过让周围变亮来保持命中\n率不会被降低。', }, trace: { - name: "复制", - description: "出场时,复制对手的特性,\n变为与之相同的特性。", + name: '复制', + description: '出场时,复制对手的特性,\n变为与之相同的特性。', }, hugePower: { - name: "大力士", - description: "物理攻击的威力会变为2倍\n。", + name: '大力士', + description: '物理攻击的威力会变为2倍\n。', }, poisonPoint: { - name: "毒刺", - description: "有时会让接触到自己的对手\n变为中毒状态。", + name: '毒刺', + description: '有时会让接触到自己的对手\n变为中毒状态。', }, innerFocus: { - name: "精神力", - description: "拥有经过锻炼的精神,而不\n会因对手的攻击而畏缩。对\n威吓也毫不动摇。", + name: '精神力', + description: '拥有经过锻炼的精神,而不\n会因对手的攻击而畏缩。对\n威吓也毫不动摇。', }, magmaArmor: { - name: "熔岩铠甲", - description: "将炽热的熔岩覆盖在身上,\n不会变为冰冻状态。", + name: '熔岩铠甲', + description: '将炽热的熔岩覆盖在身上,\n不会变为冰冻状态。', }, waterVeil: { - name: "水幕", - description: "将水幕裹在身上,不会变为\n灼伤状态。", + name: '水幕', + description: '将水幕裹在身上,不会变为\n灼伤状态。', }, magnetPull: { - name: "磁力", - description: "用磁力吸住钢属性的宝可梦\n,使其无法逃走。", + name: '磁力', + description: '用磁力吸住钢属性的宝可梦\n,使其无法逃走。', }, soundproof: { - name: "隔音", - description: "通过屏蔽声音,不受到声音\n招式的影响。", + name: '隔音', + description: '通过屏蔽声音,不受到声音\n招式的影响。', }, rainDish: { - name: "雨盘", - description: "下雨天气时,会缓缓回复\nHP。", + name: '雨盘', + description: '下雨天气时,会缓缓回复\nHP。', }, sandStream: { - name: "扬沙", - description: "出场时,会把天气变为沙暴。", + name: '扬沙', + description: '出场时,会把天气变为沙暴。', }, pressure: { - name: "压迫感", - description: "给予对手压迫感,大量减少\n其使用招式的PP。", + name: '压迫感', + description: '给予对手压迫感,大量减少\n其使用招式的PP。', }, thickFat: { - name: "厚脂肪", - description: "因为被厚厚的脂肪保护着,\n会让火属性和冰属性的招式\n伤害减半。", + name: '厚脂肪', + description: '因为被厚厚的脂肪保护着,\n会让火属性和冰属性的招式\n伤害减半。', }, earlyBird: { - name: "早起", - description: "即使变为睡眠状态,也能以\n2倍的速度提早醒来。", + name: '早起', + description: '即使变为睡眠状态,也能以\n2倍的速度提早醒来。', }, flameBody: { - name: "火焰之躯", - description: "有时会让接触到自己的对手\n变为灼伤状态。", + name: '火焰之躯', + description: '有时会让接触到自己的对手\n变为灼伤状态。', }, runAway: { - name: "逃跑", - description: "一定能从野生宝可梦那儿逃\n走。", + name: '逃跑', + description: '一定能从野生宝可梦那儿逃\n走。', }, keenEye: { - name: "锐利目光", - description: "多亏了锐利的目光,命中率\n不会被降低。", + name: '锐利目光', + description: '多亏了锐利的目光,命中率\n不会被降低。', }, hyperCutter: { - name: "怪力钳", - description: "因为拥有以力量自豪的钳子,\n不会被对手降低攻击。", + name: '怪力钳', + description: '因为拥有以力量自豪的钳子,\n不会被对手降低攻击。', }, pickup: { - name: "捡拾", - description: "有时会捡来对手用过的道具,\n冒险过程中也会捡到。", + name: '捡拾', + description: '有时会捡来对手用过的道具,\n冒险过程中也会捡到。', }, truant: { - name: "懒惰", - description: "如果使出招式,下一回合就\n会休息。", + name: '懒惰', + description: '如果使出招式,下一回合就\n会休息。', }, hustle: { - name: "活力", - description: "自己的攻击变高,但命中率\n会降低。", + name: '活力', + description: '自己的攻击变高,但命中率\n会降低。', }, cuteCharm: { - name: "迷人之躯", - description: "有时会让接触到自己的对手\n着迷。", + name: '迷人之躯', + description: '有时会让接触到自己的对手\n着迷。', }, plus: { - name: "正电", - description: "出场的伙伴之间如果有正电\n或负电特性的宝可梦,自己\n的特攻会提高。", + name: '正电', + description: '出场的伙伴之间如果有正电\n或负电特性的宝可梦,自己\n的特攻会提高。', }, minus: { - name: "负电", - description: "出场的伙伴之间如果有正电\n或负电特性的宝可梦,自己\n的特攻会提高。", + name: '负电', + description: '出场的伙伴之间如果有正电\n或负电特性的宝可梦,自己\n的特攻会提高。', }, forecast: { - name: "阴晴不定", - description: "受天气的影响,会变为水属\n性、火属性或冰属性中的某\n一个。", + name: '阴晴不定', + description: '受天气的影响,会变为水属\n性、火属性或冰属性中的某\n一个。', }, stickyHold: { - name: "黏着", - description: "因为道具是粘在黏性身体上\n的,所以不会被对手夺走。", + name: '黏着', + description: '因为道具是粘在黏性身体上\n的,所以不会被对手夺走。', }, shedSkin: { - name: "蜕皮", - description: "通过蜕去身上的皮,有时会\n治愈异常状态。", + name: '蜕皮', + description: '通过蜕去身上的皮,有时会\n治愈异常状态。', }, guts: { - name: "毅力", - description: "如果变为异常状态,会拿出\n毅力,攻击会提高。", + name: '毅力', + description: '如果变为异常状态,会拿出\n毅力,攻击会提高。', }, marvelScale: { - name: "神奇鳞片", - description: "如果变为异常状态,神奇鳞\n片会发生反应,防御会提高。", + name: '神奇鳞片', + description: '如果变为异常状态,神奇鳞\n片会发生反应,防御会提高。', }, liquidOoze: { - name: "污泥浆", - description: "吸收了污泥浆的对手会因强\n烈的恶臭而受到伤害,减少\nHP。", + name: '污泥浆', + description: '吸收了污泥浆的对手会因强\n烈的恶臭而受到伤害,减少\nHP。', }, overgrow: { - name: "茂盛", - description: "HP减少的时候,草属性的\n招式威力会提高。", + name: '茂盛', + description: 'HP减少的时候,草属性的\n招式威力会提高。', }, blaze: { - name: "猛火", - description: "HP减少的时候,火属性的\n招式威力会提高。", + name: '猛火', + description: 'HP减少的时候,火属性的\n招式威力会提高。', }, torrent: { - name: "激流", - description: "HP减少的时候,水属性的\n招式威力会提高。", + name: '激流', + description: 'HP减少的时候,水属性的\n招式威力会提高。', }, swarm: { - name: "虫之预感", - description: "HP减少的时候,虫属性的\n招式威力会提高。", + name: '虫之预感', + description: 'HP减少的时候,虫属性的\n招式威力会提高。', }, rockHead: { - name: "坚硬脑袋", - description: "即使使出会受反作用力伤害\n的招式,HP也不会减少。", + name: '坚硬脑袋', + description: '即使使出会受反作用力伤害\n的招式,HP也不会减少。', }, drought: { - name: "日照", - description: "出场时,会将天气变为晴朗。", + name: '日照', + description: '出场时,会将天气变为晴朗。', }, arenaTrap: { - name: "沙穴", - description: "在战斗中让对手无法逃走。", + name: '沙穴', + description: '在战斗中让对手无法逃走。', }, vitalSpirit: { - name: "干劲", - description: "通过激发出干劲,不会变为\n睡眠状态。", + name: '干劲', + description: '通过激发出干劲,不会变为\n睡眠状态。', }, whiteSmoke: { - name: "白色烟雾", - description: "被白色烟雾保护着,不会被\n对手降低能力。", + name: '白色烟雾', + description: '被白色烟雾保护着,不会被\n对手降低能力。', }, purePower: { - name: "瑜伽之力", - description: "因瑜伽的力量,物理攻击的\n威力会变为2倍。", + name: '瑜伽之力', + description: '因瑜伽的力量,物理攻击的\n威力会变为2倍。', }, shellArmor: { - name: "硬壳盔甲", - description: "被坚硬的壳保护着,对手的\n攻击不会击中要害。", + name: '硬壳盔甲', + description: '被坚硬的壳保护着,对手的\n攻击不会击中要害。', }, airLock: { - name: "气闸", - description: "所有天气的影响都会消失。", + name: '气闸', + description: '所有天气的影响都会消失。', }, tangledFeet: { - name: "蹒跚", - description: "在混乱状态时,闪避率会提\n高。", + name: '蹒跚', + description: '在混乱状态时,闪避率会提\n高。', }, motorDrive: { - name: "电气引擎", - description: "受到电属性的招式攻击时,\n不会受到伤害,而是速度会\n提高。", + name: '电气引擎', + description: '受到电属性的招式攻击时,\n不会受到伤害,而是速度会\n提高。', }, rivalry: { - name: "斗争心", - description: "面对性别相同的对手,会燃\n起斗争心,变得更强。而面\n对性别不同的,则会变弱。", + name: '斗争心', + description: '面对性别相同的对手,会燃\n起斗争心,变得更强。而面\n对性别不同的,则会变弱。', }, steadfast: { - name: "不屈之心", - description: "每次畏缩时,不屈之心就会\n燃起,速度也会提高。", + name: '不屈之心', + description: '每次畏缩时,不屈之心就会\n燃起,速度也会提高。', }, snowCloak: { - name: "雪隐", - description: "下雪天气时,闪避率会提高。", + name: '雪隐', + description: '下雪天气时,闪避率会提高。', }, gluttony: { - name: "贪吃鬼", - description: "原本HP变得很少时才会吃\n树果,在HP还有一半时就\n会把它吃掉。", + name: '贪吃鬼', + description: '原本HP变得很少时才会吃\n树果,在HP还有一半时就\n会把它吃掉。', }, angerPoint: { - name: "愤怒穴位", - description: "要害被击中时,会大发雷霆\n,攻击力变为最大。", + name: '愤怒穴位', + description: '要害被击中时,会大发雷霆\n,攻击力变为最大。', }, unburden: { - name: "轻装", - description: "失去所持有的道具时,速度\n会提高。", + name: '轻装', + description: '失去所持有的道具时,速度\n会提高。', }, heatproof: { - name: "耐热", - description: "耐热的体质会让火属性的招\n式伤害减半。", + name: '耐热', + description: '耐热的体质会让火属性的招\n式伤害减半。', }, simple: { - name: "单纯", - description: "能力变化会变为平时的2倍。", + name: '单纯', + description: '能力变化会变为平时的2倍。', }, drySkin: { - name: "干燥皮肤", - description: "下雨天气时和受到水属性的\n招式时,HP会回复。晴朗\n天气时和受到火属性的招式\n时,HP会减少。", + name: '干燥皮肤', + description: '下雨天气时和受到水属性的\n招式时,HP会回复。晴朗\n天气时和受到火属性的招式\n时,HP会减少。', }, download: { - name: "下载", - description: "比较对手的防御和特防,根\n据较低的那项能力相应地提\n高自己的攻击或特攻。", + name: '下载', + description: '比较对手的防御和特防,根\n据较低的那项能力相应地提\n高自己的攻击或特攻。', }, ironFist: { - name: "铁拳", - description: "使用拳类招式的威力会提高。", + name: '铁拳', + description: '使用拳类招式的威力会提高。', }, poisonHeal: { - name: "毒疗", - description: "变为中毒状态时,HP不会\n减少,反而会增加起来。", + name: '毒疗', + description: '变为中毒状态时,HP不会\n减少,反而会增加起来。', }, adaptability: { - name: "适应力", - description: "与自身同属性的招式威力会\n提高。", + name: '适应力', + description: '与自身同属性的招式威力会\n提高。', }, skillLink: { - name: "连续攻击", - description: "如果使用连续招式,总是能\n使出最高次数。", + name: '连续攻击', + description: '如果使用连续招式,总是能\n使出最高次数。', }, hydration: { - name: "湿润之躯", - description: "下雨天气时,异常状态会治\n愈。", + name: '湿润之躯', + description: '下雨天气时,异常状态会治\n愈。', }, solarPower: { - name: "太阳之力", - description: "晴朗天气时,特攻会提高,\n而每回合HP会减少。", + name: '太阳之力', + description: '晴朗天气时,特攻会提高,\n而每回合HP会减少。', }, quickFeet: { - name: "飞毛腿", - description: "变为异常状态时,速度会提\n高。", + name: '飞毛腿', + description: '变为异常状态时,速度会提\n高。', }, normalize: { - name: "一般皮肤", - description: "无论是什么属性的招式,全\n部会变为一般属性。威力会\n少量提高。", + name: '一般皮肤', + description: '无论是什么属性的招式,全\n部会变为一般属性。威力会\n少量提高。', }, sniper: { - name: "狙击手", - description: "击中要害时,威力会变得更\n强。", + name: '狙击手', + description: '击中要害时,威力会变得更\n强。', }, magicGuard: { - name: "魔法防守", - description: "不会受到攻击以外的伤害。", + name: '魔法防守', + description: '不会受到攻击以外的伤害。', }, noGuard: { - name: "无防守", - description: "由于无防守战术,双方使出\n的招式都必定会击中。", + name: '无防守', + description: '由于无防守战术,双方使出\n的招式都必定会击中。', }, stall: { - name: "慢出", - description: "使出招式的顺序必定会变为\n最后。", + name: '慢出', + description: '使出招式的顺序必定会变为\n最后。', }, technician: { - name: "技术高手", - description: "攻击时可以将低威力招式的\n威力提高。", + name: '技术高手', + description: '攻击时可以将低威力招式的\n威力提高。', }, leafGuard: { - name: "叶子防守", - description: "晴朗天气时,不会变为异常\n状态。", + name: '叶子防守', + description: '晴朗天气时,不会变为异常\n状态。', }, klutz: { - name: "笨拙", - description: "无法使用持有的道具。", + name: '笨拙', + description: '无法使用持有的道具。', }, moldBreaker: { - name: "破格", - description: "可以不受对手特性的干扰,\n向对手使出招式。", + name: '破格', + description: '可以不受对手特性的干扰,\n向对手使出招式。', }, superLuck: { - name: "超幸运", - description: "因为拥有超幸运,攻击容易\n击中对手的要害。", + name: '超幸运', + description: '因为拥有超幸运,攻击容易\n击中对手的要害。', }, aftermath: { - name: "引爆", - description: "变为濒死时,会对接触到自\n己的对手造成伤害。", + name: '引爆', + description: '变为濒死时,会对接触到自\n己的对手造成伤害。', }, anticipation: { - name: "危险预知", - description: "可以察觉到对手拥有的危险\n招式。", + name: '危险预知', + description: '可以察觉到对手拥有的危险\n招式。', }, forewarn: { - name: "预知梦", - description: "出场时,只读取1个对手拥\n有的招式。", + name: '预知梦', + description: '出场时,只读取1个对手拥\n有的招式。', }, unaware: { - name: "纯朴", - description: "可以无视对手能力的变化,\n进行攻击。", + name: '纯朴', + description: '可以无视对手能力的变化,\n进行攻击。', }, tintedLens: { - name: "有色眼镜", - description: "可以将效果不好的招式以通\n常的威力使出。", + name: '有色眼镜', + description: '可以将效果不好的招式以通\n常的威力使出。', }, filter: { - name: "过滤", - description: "受到效果绝佳的攻击时,可\n以减弱其威力。", + name: '过滤', + description: '受到效果绝佳的攻击时,可\n以减弱其威力。', }, slowStart: { - name: "慢启动", - description: "在5回合内,攻击和速度减\n半。", + name: '慢启动', + description: '在5回合内,攻击和速度减\n半。', }, scrappy: { - name: "胆量", - description: "一般属性和格斗属性的招式\n可以击中幽灵属性的宝可梦\n。对威吓也毫不动摇。", + name: '胆量', + description: '一般属性和格斗属性的招式\n可以击中幽灵属性的宝可梦\n。对威吓也毫不动摇。', }, stormDrain: { - name: "引水", - description: "将水属性的招式引到自己身\n上,不会受到伤害,而是会\n提高特攻。", + name: '引水', + description: '将水属性的招式引到自己身\n上,不会受到伤害,而是会\n提高特攻。', }, iceBody: { - name: "冰冻之躯", - description: "下雪天气时,会缓缓回复\nHP。", + name: '冰冻之躯', + description: '下雪天气时,会缓缓回复\nHP。', }, solidRock: { - name: "坚硬岩石", - description: "受到效果绝佳的攻击时,可\n以减弱其威力。", + name: '坚硬岩石', + description: '受到效果绝佳的攻击时,可\n以减弱其威力。', }, snowWarning: { - name: "降雪", - description: "出场时,会将天气变为下雪。", + name: '降雪', + description: '出场时,会将天气变为下雪。', }, honeyGather: { - name: "采蜜", - description: "战斗结束时,有时候会捡来\n甜甜蜜。", + name: '采蜜', + description: '战斗结束时,有时候会捡来\n甜甜蜜。', }, frisk: { - name: "察觉", - description: "进入战斗时,神奇宝贝可以检查对方神奇宝贝的能力。", + name: '察觉', + description: '进入战斗时,神奇宝贝可以检查对方神奇宝贝的能力。', }, reckless: { - name: "舍身", - description: "自己会因反作用力受伤的招\n式,其威力会提高。", + name: '舍身', + description: '自己会因反作用力受伤的招\n式,其威力会提高。', }, multitype: { - name: "多属性", - description: "自己的属性会根据持有的石\n板而改变。", + name: '多属性', + description: '自己的属性会根据持有的石\n板而改变。', }, flowerGift: { - name: "花之礼", - description: "晴朗天气时,自己与同伴的\n攻击和特防能力会提高。", + name: '花之礼', + description: '晴朗天气时,自己与同伴的\n攻击和特防能力会提高。', }, badDreams: { - name: "梦魇", - description: "给予睡眠状态的对手伤害。", + name: '梦魇', + description: '给予睡眠状态的对手伤害。', }, pickpocket: { - name: "顺手牵羊", - description: "盗取接触到自己的对手的道\n具。", + name: '顺手牵羊', + description: '盗取接触到自己的对手的道\n具。', }, sheerForce: { - name: "强行", - description: "招式的追加效果消失,但因\n此能以更高的威力使出招式\n。", + name: '强行', + description: '招式的追加效果消失,但因\n此能以更高的威力使出招式\n。', }, contrary: { - name: "唱反调", - description: "能力的变化发生逆转,原本\n提高时会降低,而原本降低\n时会提高。", + name: '唱反调', + description: '能力的变化发生逆转,原本\n提高时会降低,而原本降低\n时会提高。', }, unnerve: { - name: "紧张感", - description: "让对手紧张,使其无法食用\n树果。", + name: '紧张感', + description: '让对手紧张,使其无法食用\n树果。', }, defiant: { - name: "不服输", - description: "被对手降低能力时,攻击会\n大幅提高。", + name: '不服输', + description: '被对手降低能力时,攻击会\n大幅提高。', }, defeatist: { - name: "软弱", - description: "HP减半时,会变得软弱,\n攻击和特攻会减半。", + name: '软弱', + description: 'HP减半时,会变得软弱,\n攻击和特攻会减半。', }, cursedBody: { - name: "诅咒之躯", - description: "受到攻击时,有时会把对手\n的招式变为定身法状态。", + name: '诅咒之躯', + description: '受到攻击时,有时会把对手\n的招式变为定身法状态。', }, healer: { - name: "治愈之心", - description: "有时会治愈异常状态的同伴。", + name: '治愈之心', + description: '有时会治愈异常状态的同伴。', }, friendGuard: { - name: "友情防守", - description: "可以减少我方的伤害。", + name: '友情防守', + description: '可以减少我方的伤害。', }, weakArmor: { - name: "碎裂铠甲", - description: "受到物理招式的伤害时,防\n御会降低,速度会大幅提高。", + name: '碎裂铠甲', + description: '受到物理招式的伤害时,防\n御会降低,速度会大幅提高。', }, heavyMetal: { - name: "重金属", - description: "自身的重量会变为2倍。", + name: '重金属', + description: '自身的重量会变为2倍。', }, lightMetal: { - name: "轻金属", - description: "自身的重量会减半。", + name: '轻金属', + description: '自身的重量会减半。', }, multiscale: { - name: "多重鳞片", - description: "HP全满时,受到的伤害会\n变少。", + name: '多重鳞片', + description: 'HP全满时,受到的伤害会\n变少。', }, toxicBoost: { - name: "中毒激升", - description: "变为中毒状态时,物理招式\n的威力会提高。", + name: '中毒激升', + description: '变为中毒状态时,物理招式\n的威力会提高。', }, flareBoost: { - name: "受热激升", - description: "变为灼伤状态时,特殊招式\n的威力会提高。", + name: '受热激升', + description: '变为灼伤状态时,特殊招式\n的威力会提高。', }, harvest: { - name: "收获", - description: "可以多次制作出已被使用掉\n的树果。", + name: '收获', + description: '可以多次制作出已被使用掉\n的树果。', }, telepathy: { - name: "心灵感应", - description: "读取我方的攻击,并闪避其\n招式伤害。", + name: '心灵感应', + description: '读取我方的攻击,并闪避其\n招式伤害。', }, moody: { - name: "心情不定", - description: "每一回合,能力中的某项会\n大幅提高,而某项会降低。", + name: '心情不定', + description: '每一回合,能力中的某项会\n大幅提高,而某项会降低。', }, overcoat: { - name: "防尘", - description: "不会受到沙暴的伤害。也不\n会受到粉末类和孢子类招式\n的影响。", + name: '防尘', + description: '不会受到沙暴的伤害。也不\n会受到粉末类和孢子类招式\n的影响。', }, poisonTouch: { - name: "毒手", - description: "只通过接触就有可能让对手\n变为中毒状态。", + name: '毒手', + description: '只通过接触就有可能让对手\n变为中毒状态。', }, regenerator: { - name: "再生力", - description: "退回同行队伍后,HP会少\n量回复。", + name: '再生力', + description: '退回同行队伍后,HP会少\n量回复。', }, bigPecks: { - name: "健壮胸肌", - description: "不会受到防御降低的效果。", + name: '健壮胸肌', + description: '不会受到防御降低的效果。', }, sandRush: { - name: "拨沙", - description: "沙暴天气时,速度会提高。", + name: '拨沙', + description: '沙暴天气时,速度会提高。', }, wonderSkin: { - name: "奇迹皮肤", - description: "成为不易受到变化招式攻击\n的身体。", + name: '奇迹皮肤', + description: '成为不易受到变化招式攻击\n的身体。', }, analytic: { - name: "分析", - description: "如果在最后使出招式,招式\n的威力会提高。", + name: '分析', + description: '如果在最后使出招式,招式\n的威力会提高。', }, illusion: { - name: "幻觉", - description: "假扮成同行队伍中的最后一\n只宝可梦出场,迷惑对手。", + name: '幻觉', + description: '假扮成同行队伍中的最后一\n只宝可梦出场,迷惑对手。', }, imposter: { - name: "变身者", - description: "变身为当前面对的宝可梦。", + name: '变身者', + description: '变身为当前面对的宝可梦。', }, infiltrator: { - name: "穿透", - description: "可以穿透对手的壁障或替身\n进行攻击。", + name: '穿透', + description: '可以穿透对手的壁障或替身\n进行攻击。', }, mummy: { - name: "木乃伊", - description: "被对手接触到后,会将对手\n变为木乃伊。", + name: '木乃伊', + description: '被对手接触到后,会将对手\n变为木乃伊。', }, moxie: { - name: "自信过度", - description: "如果打倒对手,就会充满自\n信,攻击会提高。", + name: '自信过度', + description: '如果打倒对手,就会充满自\n信,攻击会提高。', }, justified: { - name: "正义之心", - description: "受到恶属性的招式攻击时,\n因为正义感,攻击会提高。", + name: '正义之心', + description: '受到恶属性的招式攻击时,\n因为正义感,攻击会提高。', }, rattled: { - name: "胆怯", - description: "受到恶属性、幽灵属性和虫\n属性的攻击或威吓时,会因\n胆怯而速度提高。", + name: '胆怯', + description: '受到恶属性、幽灵属性和虫\n属性的攻击或威吓时,会因\n胆怯而速度提高。', }, magicBounce: { - name: "魔法镜", - description: "可以不受到由对手使出的变\n化招式影响,并将其反弹。", + name: '魔法镜', + description: '可以不受到由对手使出的变\n化招式影响,并将其反弹。', }, sapSipper: { - name: "食草", - description: "受到草属性的招式攻击时,\n不会受到伤害,而是攻击会\n提高。", + name: '食草', + description: '受到草属性的招式攻击时,\n不会受到伤害,而是攻击会\n提高。', }, prankster: { - name: "恶作剧之心", - description: "可以率先使出变化招式。", + name: '恶作剧之心', + description: '可以率先使出变化招式。', }, sandForce: { - name: "沙之力", - description: "沙暴天气时,岩石属性、地\n面属性和钢属性的招式威力\n会提高。", + name: '沙之力', + description: '沙暴天气时,岩石属性、地\n面属性和钢属性的招式威力\n会提高。', }, ironBarbs: { - name: "铁刺", - description: "用铁刺给予接触到自己的对\n手伤害。", + name: '铁刺', + description: '用铁刺给予接触到自己的对\n手伤害。', }, zenMode: { - name: "达摩模式", - description: "HP变为一半以下时,样子\n会改变。", + name: '达摩模式', + description: 'HP变为一半以下时,样子\n会改变。', }, victoryStar: { - name: "胜利之星", - description: "自己和同伴的命中率会提高。", + name: '胜利之星', + description: '自己和同伴的命中率会提高。', }, turboblaze: { - name: "涡轮火焰", - description: "可以不受对手特性的干扰,\n向对手使出招式。", + name: '涡轮火焰', + description: '可以不受对手特性的干扰,\n向对手使出招式。', }, teravolt: { - name: "兆级电压", - description: "可以不受对手特性的干扰,\n向对手使出招式。", + name: '兆级电压', + description: '可以不受对手特性的干扰,\n向对手使出招式。', }, aromaVeil: { - name: "芳香幕", - description: "可以防住向自己和同伴发出\n的心灵攻击。", + name: '芳香幕', + description: '可以防住向自己和同伴发出\n的心灵攻击。', }, flowerVeil: { - name: "花幕", - description: "我方的草属性宝可梦能力不\n会降低,也不会变为异常状\n态。", + name: '花幕', + description: '我方的草属性宝可梦能力不\n会降低,也不会变为异常状\n态。', }, cheekPouch: { - name: "颊囊", - description: "无论是哪种树果,食用后,\nHP都会回复。", + name: '颊囊', + description: '无论是哪种树果,食用后,\nHP都会回复。', }, protean: { - name: "变幻自如", - description: "变为与自己使出的招式相同\n的属性。每次出场战斗仅生\n效一次。", + name: '变幻自如', + description: '变为与自己使出的招式相同\n的属性。每次出场战斗仅生\n效一次。', }, furCoat: { - name: "毛皮大衣", - description: "对手给予的物理招式的伤害\n会减半。", + name: '毛皮大衣', + description: '对手给予的物理招式的伤害\n会减半。', }, magician: { - name: "魔术师", - description: "夺走被自己的招式击中的对\n手的道具。", + name: '魔术师', + description: '夺走被自己的招式击中的对\n手的道具。', }, bulletproof: { - name: "防弹", - description: "可以防住对手的球和弹类招\n式。", + name: '防弹', + description: '可以防住对手的球和弹类招\n式。', }, competitive: { - name: "好胜", - description: "如果被对手降低能力,特攻\n会大幅提高。", + name: '好胜', + description: '如果被对手降低能力,特攻\n会大幅提高。', }, strongJaw: { - name: "强壮之颚", - description: "因为颚部强壮,啃咬类招式\n的威力会提高。", + name: '强壮之颚', + description: '因为颚部强壮,啃咬类招式\n的威力会提高。', }, refrigerate: { - name: "冰冻皮肤", - description: "一般属性的招式会变为冰属\n性。威力会少量提高。", + name: '冰冻皮肤', + description: '一般属性的招式会变为冰属\n性。威力会少量提高。', }, sweetVeil: { - name: "甜幕", - description: "自己和同伴的宝可梦不会变\n为睡眠状态。", + name: '甜幕', + description: '自己和同伴的宝可梦不会变\n为睡眠状态。', }, stanceChange: { - name: "战斗切换", - description: "如果使出攻击招式,会变为\n刀剑形态,如果使出招式“\n王者盾牌”,会变为盾牌形\n态。", + name: '战斗切换', + description: '如果使出攻击招式,会变为\n刀剑形态,如果使出招式“\n王者盾牌”,会变为盾牌形\n态。', }, galeWings: { - name: "疾风之翼", - description: "HP全满时,飞行属性的招\n式可以率先使出。", + name: '疾风之翼', + description: 'HP全满时,飞行属性的招\n式可以率先使出。', }, megaLauncher: { - name: "超级发射器", - description: "波动和波导类招式的威力会\n提高。", + name: '超级发射器', + description: '波动和波导类招式的威力会\n提高。', }, grassPelt: { - name: "草之毛皮", - description: "在青草场地时,防御会提高。", + name: '草之毛皮', + description: '在青草场地时,防御会提高。', }, symbiosis: { - name: "共生", - description: "同伴使用道具时,会把自己\n持有的道具传递给同伴。", + name: '共生', + description: '同伴使用道具时,会把自己\n持有的道具传递给同伴。', }, toughClaws: { - name: "硬爪", - description: "接触到对手的招式威力会提\n高。", + name: '硬爪', + description: '接触到对手的招式威力会提\n高。', }, pixilate: { - name: "妖精皮肤", - description: "一般属性的招式会变为妖精\n属性。威力会少量提高。", + name: '妖精皮肤', + description: '一般属性的招式会变为妖精\n属性。威力会少量提高。', }, gooey: { - name: "黏滑", - description: "对于用攻击接触到自己的对\n手,会降低其速度。", + name: '黏滑', + description: '对于用攻击接触到自己的对\n手,会降低其速度。', }, aerilate: { - name: "飞行皮肤", - description: "一般属性的招式会变为飞行\n属性。威力会少量提高。", + name: '飞行皮肤', + description: '一般属性的招式会变为飞行\n属性。威力会少量提高。', }, parentalBond: { - name: "亲子爱", - description: "亲子俩可以合计攻击2次。", + name: '亲子爱', + description: '亲子俩可以合计攻击2次。', }, darkAura: { - name: "暗黑气场", - description: "全体的恶属性招式变强。", + name: '暗黑气场', + description: '全体的恶属性招式变强。', }, fairyAura: { - name: "妖精气场", - description: "全体的妖精属性招式变强。", + name: '妖精气场', + description: '全体的妖精属性招式变强。', }, auraBreak: { - name: "气场破坏", - description: "让气场的效果发生逆转,降\n低威力。", + name: '气场破坏', + description: '让气场的效果发生逆转,降\n低威力。', }, primordialSea: { - name: "始源之海", - description: "变为不会受到火属性攻击的\n天气。", + name: '始源之海', + description: '变为不会受到火属性攻击的\n天气。', }, desolateLand: { - name: "终结之地", - description: "变为不会受到水属性攻击的\n天气。", + name: '终结之地', + description: '变为不会受到水属性攻击的\n天气。', }, deltaStream: { - name: "德尔塔气流", - description: "变为令飞行属性的弱点消失\n的天气。", + name: '德尔塔气流', + description: '变为令飞行属性的弱点消失\n的天气。', }, stamina: { - name: "持久力", - description: "受到攻击时,防御会提高。", + name: '持久力', + description: '受到攻击时,防御会提高。', }, wimpOut: { - name: "跃跃欲逃", - description: "HP变为一半时,会慌慌张\n张逃走,退回同行队伍中。", + name: '跃跃欲逃', + description: 'HP变为一半时,会慌慌张\n张逃走,退回同行队伍中。', }, emergencyExit: { - name: "危险回避", - description: "HP变为一半时,为了回避\n危险,会退回到同行队伍中。", + name: '危险回避', + description: 'HP变为一半时,为了回避\n危险,会退回到同行队伍中。', }, waterCompaction: { - name: "遇水凝固", - description: "受到水属性的招式攻击时,\n防御会大幅提高。", + name: '遇水凝固', + description: '受到水属性的招式攻击时,\n防御会大幅提高。', }, merciless: { - name: "不仁不义", - description: "攻击中毒状态的对手时,\n必定会击中要害。", + name: '不仁不义', + description: '攻击中毒状态的对手时,\n必定会击中要害。', }, shieldsDown: { - name: "界限盾壳", - description: "HP变为一半时,壳会坏掉,\n变得有攻击性。", + name: '界限盾壳', + description: 'HP变为一半时,壳会坏掉,\n变得有攻击性。', }, stakeout: { - name: "蹲守", - description: "可以对替换出场的对手以2\n倍的伤害进行攻击。", + name: '蹲守', + description: '可以对替换出场的对手以2\n倍的伤害进行攻击。', }, waterBubble: { - name: "水泡", - description: "降低自己受到的火属性招式\n的威力,不会灼伤。", + name: '水泡', + description: '降低自己受到的火属性招式\n的威力,不会灼伤。', }, steelworker: { - name: "钢能力者", - description: "钢属性的招式威力会提高。", + name: '钢能力者', + description: '钢属性的招式威力会提高。', }, berserk: { - name: "怒火冲天", - description: "因对手的攻击HP变为一半\n时,特攻会提高。", + name: '怒火冲天', + description: '因对手的攻击HP变为一半\n时,特攻会提高。', }, slushRush: { - name: "拨雪", - description: "下雪天气时,速度会提高。", + name: '拨雪', + description: '下雪天气时,速度会提高。', }, longReach: { - name: "远隔", - description: "可以不接触对手就使出所有\n的招式。", + name: '远隔', + description: '可以不接触对手就使出所有\n的招式。', }, liquidVoice: { - name: "湿润之声", - description: "所有的声音招式都变为水属\n性。", + name: '湿润之声', + description: '所有的声音招式都变为水属\n性。', }, triage: { - name: "先行治疗", - description: "可以率先使出回复招式。", + name: '先行治疗', + description: '可以率先使出回复招式。', }, galvanize: { - name: "电气皮肤", - description: "一般属性的招式会变为电属\n性。威力会少量提高。", + name: '电气皮肤', + description: '一般属性的招式会变为电属\n性。威力会少量提高。', }, surgeSurfer: { - name: "冲浪之尾", - description: "电气场地时,速度会变为2\n倍。", + name: '冲浪之尾', + description: '电气场地时,速度会变为2\n倍。', }, schooling: { - name: "鱼群", - description: "HP多的时候会聚起来变强。\nHP剩余量变少时,群体\n会分崩离析。", + name: '鱼群', + description: 'HP多的时候会聚起来变强。\nHP剩余量变少时,群体\n会分崩离析。', }, disguise: { - name: "画皮", - description: "通过画皮覆盖住身体,可以\n防住1次攻击。", + name: '画皮', + description: '通过画皮覆盖住身体,可以\n防住1次攻击。', }, battleBond: { - name: "牵绊变身", - description: "打倒对手时,与训练家的牵\n绊会增强,自己的攻击、特\n攻、速度会提高。", + name: '牵绊变身', + description: '打倒对手时,与训练家的牵\n绊会增强,自己的攻击、特\n攻、速度会提高。', }, powerConstruct: { - name: "群聚变形", - description: "HP变为一半时,细胞们会\n赶来支援,变为完全体形态。", + name: '群聚变形', + description: 'HP变为一半时,细胞们会\n赶来支援,变为完全体形态。', }, corrosion: { - name: "腐蚀", - description: "可以使钢属性和毒属性的宝\n可梦也陷入中毒状态。", + name: '腐蚀', + description: '可以使钢属性和毒属性的宝\n可梦也陷入中毒状态。', }, comatose: { - name: "绝对睡眠", - description: "总是半梦半醒的状态,绝对\n不会醒来。可以就这么睡着\n进行攻击。", + name: '绝对睡眠', + description: '总是半梦半醒的状态,绝对\n不会醒来。可以就这么睡着\n进行攻击。', }, queenlyMajesty: { - name: "女王的威严", - description: "向对手施加威慑力,使其无\n法对我方使出先制招式。", + name: '女王的威严', + description: '向对手施加威慑力,使其无\n法对我方使出先制招式。', }, innardsOut: { - name: "飞出的内在物", - description: "被对手打倒的时候,会给予\n对手相当于HP剩余量的伤\n害。", + name: '飞出的内在物', + description: '被对手打倒的时候,会给予\n对手相当于HP剩余量的伤\n害。', }, dancer: { - name: "舞者", - description: "有谁使出跳舞招式时,自己\n也能就这么接着使出跳舞招\n式。", + name: '舞者', + description: '有谁使出跳舞招式时,自己\n也能就这么接着使出跳舞招\n式。', }, battery: { - name: "蓄电池", - description: "会提高我方的特殊招式的威\n力。", + name: '蓄电池', + description: '会提高我方的特殊招式的威\n力。', }, fluffy: { - name: "毛茸茸", - description: "会将对手所给予的接触类招\n式的伤害减半,但火属性招\n式的伤害会变为2倍。", + name: '毛茸茸', + description: '会将对手所给予的接触类招\n式的伤害减半,但火属性招\n式的伤害会变为2倍。', }, dazzling: { - name: "鲜艳之躯", - description: "让对手吓一跳,使其无法对\n我方使出先制招式。", + name: '鲜艳之躯', + description: '让对手吓一跳,使其无法对\n我方使出先制招式。', }, soulHeart: { - name: "魂心", - description: "宝可梦每次变为濒死状态时\n,特攻会提高。", + name: '魂心', + description: '宝可梦每次变为濒死状态时\n,特攻会提高。', }, tanglingHair: { - name: "卷发", - description: "对于用攻击接触到自己的对\n手,会降低其速度。", + name: '卷发', + description: '对于用攻击接触到自己的对\n手,会降低其速度。', }, receiver: { - name: "接球手", - description: "继承被打倒的同伴的特性,\n变为相同的特性。", + name: '接球手', + description: '继承被打倒的同伴的特性,\n变为相同的特性。', }, powerOfAlchemy: { - name: "化学之力", - description: "继承被打倒的同伴的特性,\n变为相同的特性。", + name: '化学之力', + description: '继承被打倒的同伴的特性,\n变为相同的特性。', }, beastBoost: { - name: "异兽提升", - description: "打倒对手的时候,自己最高\n的那项能力会提高。", + name: '异兽提升', + description: '打倒对手的时候,自己最高\n的那项能力会提高。', }, rksSystem: { - name: "AR系统", - description: "根据持有的存储碟,自己的\n属性会改变。", + name: 'AR系统', + description: '根据持有的存储碟,自己的\n属性会改变。', }, electricSurge: { - name: "电气制造者", - description: "出场时,会布下电气场地。", + name: '电气制造者', + description: '出场时,会布下电气场地。', }, psychicSurge: { - name: "精神制造者", - description: "出场时,会布下精神场地。", + name: '精神制造者', + description: '出场时,会布下精神场地。', }, mistySurge: { - name: "薄雾制造者", - description: "出场时,会布下薄雾场地。", + name: '薄雾制造者', + description: '出场时,会布下薄雾场地。', }, grassySurge: { - name: "青草制造者", - description: "出场时,会布下青草场地。", + name: '青草制造者', + description: '出场时,会布下青草场地。', }, fullMetalBody: { - name: "金属防护", - description: "不会因为对手的招式或特性\n而被降低能力。", + name: '金属防护', + description: '不会因为对手的招式或特性\n而被降低能力。', }, shadowShield: { - name: "幻影防守", - description: "HP全满时,受到的伤害会\n变少。", + name: '幻影防守', + description: 'HP全满时,受到的伤害会\n变少。', }, prismArmor: { - name: "棱镜装甲", - description: "受到效果绝佳的攻击时,可\n以减弱其威力。", + name: '棱镜装甲', + description: '受到效果绝佳的攻击时,可\n以减弱其威力。', }, neuroforce: { - name: "脑核之力", - description: "效果绝佳的攻击,威力会变\n得更强。", + name: '脑核之力', + description: '效果绝佳的攻击,威力会变\n得更强。', }, intrepidSword: { - name: "不挠之剑", - description: "首次出场时,攻击会提高。", + name: '不挠之剑', + description: '首次出场时,攻击会提高。', }, dauntlessShield: { - name: "不屈之盾", - description: "首次出场时,防御会提高。", + name: '不屈之盾', + description: '首次出场时,防御会提高。', }, libero: { - name: "自由者", - description: "变为与自己使出的招式相同\n的属性。每次出场战斗仅生\n效一次。", + name: '自由者', + description: '变为与自己使出的招式相同\n的属性。每次出场战斗仅生\n效一次。', }, ballFetch: { - name: "捡球", - description: "没有携带道具时,会拾取第\n1个投出后捕捉失败的精灵\n球。", + name: '捡球', + description: '没有携带道具时,会拾取第\n1个投出后捕捉失败的精灵\n球。', }, cottonDown: { - name: "棉絮", - description: "受到攻击后撒下棉絮,降低\n除自己以外的所有宝可梦的\n速度。", + name: '棉絮', + description: '受到攻击后撒下棉絮,降低\n除自己以外的所有宝可梦的\n速度。', }, propellerTail: { - name: "螺旋尾鳍", - description: "能无视具有吸引对手招式效\n果的特性或招式的影响。", + name: '螺旋尾鳍', + description: '能无视具有吸引对手招式效\n果的特性或招式的影响。', }, mirrorArmor: { - name: "镜甲", - description: "只反弹自己受到的能力降低\n效果。", + name: '镜甲', + description: '只反弹自己受到的能力降低\n效果。', }, gulpMissile: { - name: "一口导弹", - description: "冲浪或潜水时会叼来猎物。\n受到伤害时,会吐出猎物进\n行攻击。", + name: '一口导弹', + description: '冲浪或潜水时会叼来猎物。\n受到伤害时,会吐出猎物进\n行攻击。', }, stalwart: { - name: "坚毅", - description: "能无视具有吸引对手招式效\n果的特性或招式的影响。", + name: '坚毅', + description: '能无视具有吸引对手招式效\n果的特性或招式的影响。', }, steamEngine: { - name: "蒸汽机", - description: "受到水属性或火属性的招式\n攻击时,速度会巨幅提高。", + name: '蒸汽机', + description: '受到水属性或火属性的招式\n攻击时,速度会巨幅提高。', }, punkRock: { - name: "庞克摇滚", - description: "声音招式的威力会提高。受\n到的声音招式伤害会减半。", + name: '庞克摇滚', + description: '声音招式的威力会提高。受\n到的声音招式伤害会减半。', }, sandSpit: { - name: "吐沙", - description: "受到攻击时,会刮起沙暴。", + name: '吐沙', + description: '受到攻击时,会刮起沙暴。', }, iceScales: { - name: "冰鳞粉", - description: "由于有冰鳞粉的守护,受到\n的特殊攻击伤害会减半。", + name: '冰鳞粉', + description: '由于有冰鳞粉的守护,受到\n的特殊攻击伤害会减半。', }, ripen: { - name: "熟成", - description: "使树果成熟,效果变为2倍。", + name: '熟成', + description: '使树果成熟,效果变为2倍。', }, iceFace: { - name: "结冻头", - description: "头部的冰会代替自己承受物\n理攻击,但是样子会改变。\n下雪时,冰会恢复原状。", + name: '结冻头', + description: '头部的冰会代替自己承受物\n理攻击,但是样子会改变。\n下雪时,冰会恢复原状。', }, powerSpot: { - name: "能量点", - description: "只要处在相邻位置,招式的\n威力就会提高。", + name: '能量点', + description: '只要处在相邻位置,招式的\n威力就会提高。', }, mimicry: { - name: "拟态", - description: "宝可梦的属性会根据场地的\n状态而变化。", + name: '拟态', + description: '宝可梦的属性会根据场地的\n状态而变化。', }, screenCleaner: { - name: "除障", - description: "出场时,敌方和我方的光墙\n、反射壁和极光幕的效果会\n消失。", + name: '除障', + description: '出场时,敌方和我方的光墙\n、反射壁和极光幕的效果会\n消失。', }, steelySpirit: { - name: "钢之意志", - description: "我方的钢属性攻击威力会提\n高。", + name: '钢之意志', + description: '我方的钢属性攻击威力会提\n高。', }, perishBody: { - name: "灭亡之躯", - description: "受到接触类招式攻击时,双\n方都会在3回合后变为濒死\n状态。替换后效果消失。", + name: '灭亡之躯', + description: '受到接触类招式攻击时,双\n方都会在3回合后变为濒死\n状态。替换后效果消失。', }, wanderingSpirit: { - name: "游魂", - description: "与使用接触类招式攻击自己\n的宝可梦互换特性。", + name: '游魂', + description: '与使用接触类招式攻击自己\n的宝可梦互换特性。', }, gorillaTactics: { - name: "一猩一意", - description: "虽然攻击会提高,但是只能\n使出一开始所选的招式。", + name: '一猩一意', + description: '虽然攻击会提高,但是只能\n使出一开始所选的招式。', }, neutralizingGas: { - name: "化学变化气体", - description: "特性为化学变化气体的宝可\n梦在场时,场上所有宝可梦\n的特性效果都会消失或者无\n法生效。", + name: '化学变化气体', + description: '特性为化学变化气体的宝可\n梦在场时,场上所有宝可梦\n的特性效果都会消失或者无\n法生效。', }, pastelVeil: { - name: "粉彩护幕", - description: "自己和同伴都不会陷入中毒\n的异常状态。", + name: '粉彩护幕', + description: '自己和同伴都不会陷入中毒\n的异常状态。', }, hungerSwitch: { - name: "饱了又饿", - description: "每回合结束时会在满腹花纹\n与空腹花纹之间交替改变样\n子。", + name: '饱了又饿', + description: '每回合结束时会在满腹花纹\n与空腹花纹之间交替改变样\n子。', }, quickDraw: { - name: "速击", - description: "有时能比对手先一步行动。", + name: '速击', + description: '有时能比对手先一步行动。', }, unseenFist: { - name: "无形拳", - description: "如果使出的是接触到对手的\n招式,就可以无视守护效果\n进行攻击。", + name: '无形拳', + description: '如果使出的是接触到对手的\n招式,就可以无视守护效果\n进行攻击。', }, curiousMedicine: { - name: "怪药", - description: "出场时会从贝壳撒药,将我\n方的能力变化复原。", + name: '怪药', + description: '出场时会从贝壳撒药,将我\n方的能力变化复原。', }, transistor: { - name: "电晶体", - description: "电属性的招式威力会提高。", + name: '电晶体', + description: '电属性的招式威力会提高。', }, dragonsMaw: { - name: "龙颚", - description: "龙属性的招式威力会提高。", + name: '龙颚', + description: '龙属性的招式威力会提高。', }, chillingNeigh: { - name: "苍白嘶鸣", - description: "打倒对手时会用冰冷的声音\n嘶鸣并提高攻击。", + name: '苍白嘶鸣', + description: '打倒对手时会用冰冷的声音\n嘶鸣并提高攻击。', }, grimNeigh: { - name: "漆黑嘶鸣", - description: "打倒对手时会用恐怖的声音\n嘶鸣并提高特攻。", + name: '漆黑嘶鸣', + description: '打倒对手时会用恐怖的声音\n嘶鸣并提高特攻。', }, asOneGlastrier: { - name: "人马一体", - description: "兼备蕾冠王的紧张感和灵幽\n马的漆黑嘶鸣这两种特性。", + name: '人马一体', + description: '兼备蕾冠王的紧张感和灵幽\n马的漆黑嘶鸣这两种特性。', }, asOneSpectrier: { - name: "人马一体", - description: "兼备蕾冠王的紧张感和灵幽\n马的漆黑嘶鸣这两种特性。", + name: '人马一体', + description: '兼备蕾冠王的紧张感和灵幽\n马的漆黑嘶鸣这两种特性。', }, lingeringAroma: { - name: "甩不掉的气味", - description: "被对手接触到后,甩不掉的\n气味会沾上对手。", + name: '甩不掉的气味', + description: '被对手接触到后,甩不掉的\n气味会沾上对手。', }, seedSower: { - name: "掉出种子", - description: "受到攻击时,会将脚下变成\n青草场地。", + name: '掉出种子', + description: '受到攻击时,会将脚下变成\n青草场地。', }, thermalExchange: { - name: "热交换", - description: "受到火属性的招式攻击时,\n攻击会提高,且不会陷入灼\n伤状态。", + name: '热交换', + description: '受到火属性的招式攻击时,\n攻击会提高,且不会陷入灼\n伤状态。', }, angerShell: { - name: "愤怒甲壳", - description: "因被对手攻击而HP变为一\n半时,会因愤怒降低防御和\n特防。但攻击、特攻、速度\n会提高。", + name: '愤怒甲壳', + description: '因被对手攻击而HP变为一\n半时,会因愤怒降低防御和\n特防。但攻击、特攻、速度\n会提高。', }, purifyingSalt: { - name: "洁净之盐", - description: "因洁净的盐而不会陷入异常\n状态。会让幽灵属性的招式\n伤害减半。", + name: '洁净之盐', + description: '因洁净的盐而不会陷入异常\n状态。会让幽灵属性的招式\n伤害减半。', }, wellBakedBody: { - name: "焦香之躯", - description: "受到火属性的招式攻击时,\n不会受到伤害,而是会大幅\n提高防御。", + name: '焦香之躯', + description: '受到火属性的招式攻击时,\n不会受到伤害,而是会大幅\n提高防御。', }, windRider: { - name: "乘风", - description: "吹起了顺风或受到风的招式\n攻击时,不会受到伤害,而\n是会提高攻击。", + name: '乘风', + description: '吹起了顺风或受到风的招式\n攻击时,不会受到伤害,而\n是会提高攻击。', }, guardDog: { - name: "看门犬", - description: "受到威吓时,攻击会提高。\n让替换宝可梦的招式和道具\n无效。", + name: '看门犬', + description: '受到威吓时,攻击会提高。\n让替换宝可梦的招式和道具\n无效。', }, rockyPayload: { - name: "搬岩", - description: "岩石属性的招式威力会提高。", + name: '搬岩', + description: '岩石属性的招式威力会提高。', }, windPower: { - name: "风力发电", - description: "受到风的招式攻击时,会变\n为充电状态。", + name: '风力发电', + description: '受到风的招式攻击时,会变\n为充电状态。', }, zeroToHero: { - name: "全能变身", - description: "回到同行队伍后,会变为全\n能形态。", + name: '全能变身', + description: '回到同行队伍后,会变为全\n能形态。', }, commander: { - name: "发号施令", - description: "出场时,若我方当中有吃吼\n霸,就会进入其口中,并从\n其口中发出指令。", + name: '发号施令', + description: '出场时,若我方当中有吃吼\n霸,就会进入其口中,并从\n其口中发出指令。', }, electromorphosis: { - name: "电力转换", - description: "受到伤害时,会变为充电状\n态。", + name: '电力转换', + description: '受到伤害时,会变为充电状\n态。', }, protosynthesis: { - name: "古代活性", - description: "携带着驱劲能量或天气为晴\n朗时,数值最高的能力会提\n高。", + name: '古代活性', + description: '携带着驱劲能量或天气为晴\n朗时,数值最高的能力会提\n高。', }, quarkDrive: { - name: "夸克充能", - description: "携带着驱劲能量或在电气场\n地上时,数值最高的能力会\n提高。", + name: '夸克充能', + description: '携带着驱劲能量或在电气场\n地上时,数值最高的能力会\n提高。', }, goodAsGold: { - name: "黄金之躯", - description: "不会氧化的坚固黄金身躯不\n会受到对手的变化招式的影\n响。", + name: '黄金之躯', + description: '不会氧化的坚固黄金身躯不\n会受到对手的变化招式的影\n响。', }, vesselOfRuin: { - name: "灾祸之鼎", - description: "以能呼唤灾厄的鼎的力量降\n低除自己以外的宝可梦的特\n攻。", + name: '灾祸之鼎', + description: '以能呼唤灾厄的鼎的力量降\n低除自己以外的宝可梦的特\n攻。', }, swordOfRuin: { - name: "灾祸之剑", - description: "以能呼唤灾厄的剑的力量降\n低除自己以外的宝可梦的防\n御。", + name: '灾祸之剑', + description: '以能呼唤灾厄的剑的力量降\n低除自己以外的宝可梦的防\n御。', }, tabletsOfRuin: { - name: "灾祸之简", - description: "以能呼唤灾厄的简的力量降\n低除自己以外的宝可梦的攻\n击。", + name: '灾祸之简', + description: '以能呼唤灾厄的简的力量降\n低除自己以外的宝可梦的攻\n击。', }, beadsOfRuin: { - name: "灾祸之玉", - description: "以能呼唤灾厄的勾玉的力量\n降低除自己以外的宝可梦的\n特防。", + name: '灾祸之玉', + description: '以能呼唤灾厄的勾玉的力量\n降低除自己以外的宝可梦的\n特防。', }, orichalcumPulse: { - name: "绯红脉动", - description: "出场时,会将天气变为晴朗\n。日照强烈时,会通过古代\n的脉动升高攻击。", + name: '绯红脉动', + description: '出场时,会将天气变为晴朗\n。日照强烈时,会通过古代\n的脉动升高攻击。', }, hadronEngine: { - name: "强子引擎", - description: "出场时,会布下电气场地。\n处于电气场地时,会通过未\n来的机关升高特攻。", + name: '强子引擎', + description: '出场时,会布下电气场地。\n处于电气场地时,会通过未\n来的机关升高特攻。', }, opportunist: { - name: "跟风", - description: "对手的能力提高时,自己也\n会趁机同样地提高能力。", + name: '跟风', + description: '对手的能力提高时,自己也\n会趁机同样地提高能力。', }, cudChew: { - name: "反刍", - description: "吃了树果后,会在下一回合\n结束时从胃反刍出来再吃1\n次。", + name: '反刍', + description: '吃了树果后,会在下一回合\n结束时从胃反刍出来再吃1\n次。', }, sharpness: { - name: "锋锐", - description: "提高切割对手的招式的威力。", + name: '锋锐', + description: '提高切割对手的招式的威力。', }, supremeOverlord: { - name: "大将", - description: "出场时,攻击和特攻会按照\n目前被打倒的同伴数量逐渐\n提升,被打倒越多,提升越\n多。", + name: '大将', + description: '出场时,攻击和特攻会按照\n目前被打倒的同伴数量逐渐\n提升,被打倒越多,提升越\n多。', }, costar: { - name: "同台共演", - description: "出场时,复制同伴的能力变\n化。", + name: '同台共演', + description: '出场时,复制同伴的能力变\n化。', }, toxicDebris: { - name: "毒满地", - description: "受到物理招式的伤害时,会\n在对手脚下散布毒菱。", + name: '毒满地', + description: '受到物理招式的伤害时,会\n在对手脚下散布毒菱。', }, armorTail: { - name: "尾甲", - description: "包裹头部的神秘尾巴使对手\n无法对我方使出先制招式。", + name: '尾甲', + description: '包裹头部的神秘尾巴使对手\n无法对我方使出先制招式。', }, earthEater: { - name: "食土", - description: "受到地面属性的招式攻击时\n,不会受到伤害,而是会得\n到回复。", + name: '食土', + description: '受到地面属性的招式攻击时\n,不会受到伤害,而是会得\n到回复。', }, myceliumMight: { - name: "菌丝之力", - description: "使出变化招式时,虽然行动\n必定会变慢,但能不受对手\n的特性妨碍。", + name: '菌丝之力', + description: '使出变化招式时,虽然行动\n必定会变慢,但能不受对手\n的特性妨碍。', }, mindsEye: { - name: "心眼", - description: "一般属性和格斗属性的招式\n可以击中幽灵属性的宝可梦。\n无视对手的闪避率的变化,\n且命中率不会被降低。", + name: '心眼', + description: '一般属性和格斗属性的招式\n可以击中幽灵属性的宝可梦。\n无视对手的闪避率的变化,\n且命中率不会被降低。', }, supersweetSyrup: { - name: "甘露之蜜", - description: "首次出场时,会散发出甜腻\n的蜜的香味来降低对手的闪\n避率。", + name: '甘露之蜜', + description: '首次出场时,会散发出甜腻\n的蜜的香味来降低对手的闪\n避率。', }, hospitality: { - name: "款待", - description: "出场时款待同伴,回复其少\n量HP。", + name: '款待', + description: '出场时款待同伴,回复其少\n量HP。', }, toxicChain: { - name: "毒锁链", - description: "凭借含有毒素的锁链的力量,\n有时能让被招式击中的对\n手陷入剧毒状态。", + name: '毒锁链', + description: '凭借含有毒素的锁链的力量,\n有时能让被招式击中的对\n手陷入剧毒状态。', }, embodyAspectTeal: { - name: "面影辉映", - description: "将回忆映于心中,让水井面\n具发出光辉,提高自己的特\n防。", + name: '面影辉映', + description: '将回忆映于心中,让水井面\n具发出光辉,提高自己的特\n防。', }, embodyAspectWellspring: { - name: "面影辉映", - description: "将回忆映于心中,让碧草面\n具发出光辉,提高自己的速\n度。", + name: '面影辉映', + description: '将回忆映于心中,让碧草面\n具发出光辉,提高自己的速\n度。', }, embodyAspectHearthflame: { - name: "面影辉映", - description: "将回忆映于心中,让火灶面\n具发出光辉,提高自己的攻\n击。", + name: '面影辉映', + description: '将回忆映于心中,让火灶面\n具发出光辉,提高自己的攻\n击。', }, embodyAspectCornerstone: { - name: "面影辉映", - description: "将回忆映于心中,让础石面\n具发出光辉,提高自己的防\n御。", + name: '面影辉映', + description: '将回忆映于心中,让础石面\n具发出光辉,提高自己的防\n御。', }, teraShift: { - name: "太晶变形", - description: "出场时,会吸收周围的能量\n,变为太晶形态。", + name: '太晶变形', + description: '出场时,会吸收周围的能量\n,变为太晶形态。', }, teraShell: { - name: "太晶甲壳", - description: "甲壳蕴藏着全部属性的力量\n,会将自己HP全满时受到\n的伤害全都变为效果不好。", + name: '太晶甲壳', + description: '甲壳蕴藏着全部属性的力量\n,会将自己HP全满时受到\n的伤害全都变为效果不好。', }, teraformZero: { - name: "归零化境", - description: "太乐巴戈斯变为星晶形态时\n,蕴藏在它身上的力量会将\n天气和场地的影响全部归零。", + name: '归零化境', + description: '太乐巴戈斯变为星晶形态时\n,蕴藏在它身上的力量会将\n天气和场地的影响全部归零。', }, poisonPuppeteer: { - name: "毒傀儡", - description: "因桃歹郎的招式而陷入中毒\n状态的对手同时也会陷入混\n乱状态。", + name: '毒傀儡', + description: '因桃歹郎的招式而陷入中毒\n状态的对手同时也会陷入混\n乱状态。', }, } as const; diff --git a/src/locales/zh_CN/battle-message-ui-handler.ts b/src/locales/zh_CN/battle-message-ui-handler.ts index 843a8886093..50b9efbba4d 100644 --- a/src/locales/zh_CN/battle-message-ui-handler.ts +++ b/src/locales/zh_CN/battle-message-ui-handler.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battleMessageUiHandler: SimpleTranslationEntries = { - "ivBest": "最棒", - "ivFantastic": "了不起", - "ivVeryGood": "非常好", - "ivPrettyGood": "相当好", - "ivDecent": "一般般", - "ivNoGood": "也许不行", -} as const; \ No newline at end of file + 'ivBest': '最棒', + 'ivFantastic': '了不起', + 'ivVeryGood': '非常好', + 'ivPrettyGood': '相当好', + 'ivDecent': '一般般', + 'ivNoGood': '也许不行', +} as const; diff --git a/src/locales/zh_CN/battle.ts b/src/locales/zh_CN/battle.ts index f698fcc32ab..6473629c303 100644 --- a/src/locales/zh_CN/battle.ts +++ b/src/locales/zh_CN/battle.ts @@ -1,56 +1,56 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const battle: SimpleTranslationEntries = { - "bossAppeared": "{{bossName}} 出现了。", - "trainerAppeared": "{{trainerName}}\n想要和你对战!", - "trainerAppearedDouble": "{{trainerName}}\n想要和你对战!", - "singleWildAppeared": "一只野生 {{pokemonName}} 出现了!", - "multiWildAppeared": "野生的 {{pokemonName1}}\n和 {{pokemonName2}} 出现了!", - "playerComeBack": "回来吧, {{pokemonName}}!", - "trainerComeBack": "{{trainerName}} 收回了 {{pokemonName}}!", - "playerGo": "去吧! {{pokemonName}}!", - "trainerGo": "{{trainerName}} 派出了 {{pokemonName}}!", - "switchQuestion": "要更换\n{{pokemonName}}吗?", - "trainerDefeated": `你击败了\n{{trainerName}}!`, - "pokemonCaught": "{{pokemonName}} 被抓住了!", - "pokemon": "宝可梦", - "sendOutPokemon": "上吧! {{pokemonName}}!", - "hitResultCriticalHit": "击中了要害!", - "hitResultSuperEffective": "效果拔群!", - "hitResultNotVeryEffective": "收效甚微…", - "hitResultNoEffect": "对 {{pokemonName}} 没有效果!!", - "hitResultOneHitKO": "一击必杀!", - "attackFailed": "但是失败了!", - "attackHitsCount": `击中 {{count}} 次!`, - "expGain": "{{pokemonName}} 获得了 {{exp}} 经验值!", - "levelUp": "{{pokemonName}} 升级到 Lv. {{level}}!", - "learnMove": "{{pokemonName}} 学会了 {{moveName}}!", - "learnMovePrompt": "{{pokemonName}} 想要学习 {{moveName}}。", - "learnMoveLimitReached": "但是,{{pokemonName}} 已经学会了\n四个技能", - "learnMoveReplaceQuestion": "要忘记一个技能并学习 {{moveName}} 吗?", - "learnMoveStopTeaching": "不再尝试学习 {{moveName}}?", - "learnMoveNotLearned": "{{pokemonName}} 没有学会 {{moveName}}。", - "learnMoveForgetQuestion": "要忘记哪个技能?", - "learnMoveForgetSuccess": "{{pokemonName}} 忘记了\n如何使用 {{moveName}}。", - "countdownPoof": "@d{32}1, @d{15}2, @d{15}和@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}噗!", - "learnMoveAnd": "然后...", - "levelCapUp": "等级上限提升到 {{levelCap}}!", - "moveNotImplemented": "{{moveName}} 尚未实装,无法选择。", - "moveNoPP": "这个技能的 PP 用完了", - "moveDisabled": "{{moveName}} 被禁用!", - "noPokeballForce": "一股无形的力量阻止了你使用精灵球。", - "noPokeballTrainer": "你不能捕捉其他训练家的宝可梦!", - "noPokeballMulti": "只能在剩下一只宝可梦时才能扔出精灵球!", - "noPokeballStrong": "目标宝可梦太强了,无法捕捉!你需要先\n削弱它!", - "noEscapeForce": "一股无形的力量阻止你逃跑。", - "noEscapeTrainer": "你不能从训练家战斗中逃跑!", - "noEscapePokemon": "{{pokemonName}} 的 {{moveName}} 阻止了你 {{escapeVerb}}!", - "runAwaySuccess": "你成功逃脱了!", - "runAwayCannotEscape": '你无法逃脱!', - "escapeVerbSwitch": "切换", - "escapeVerbFlee": "逃跑", - "notDisabled": "{{moveName}} 不再被禁用!", - "skipItemQuestion": "你确定要跳过拾取道具吗?", - "eggHatching": "咦?", - "ivScannerUseQuestion": "对 {{pokemonName}} 使用个体值扫描仪?" -} as const; \ No newline at end of file + 'bossAppeared': '{{bossName}} 出现了。', + 'trainerAppeared': '{{trainerName}}\n想要和你对战!', + 'trainerAppearedDouble': '{{trainerName}}\n想要和你对战!', + 'singleWildAppeared': '一只野生 {{pokemonName}} 出现了!', + 'multiWildAppeared': '野生的 {{pokemonName1}}\n和 {{pokemonName2}} 出现了!', + 'playerComeBack': '回来吧, {{pokemonName}}!', + 'trainerComeBack': '{{trainerName}} 收回了 {{pokemonName}}!', + 'playerGo': '去吧! {{pokemonName}}!', + 'trainerGo': '{{trainerName}} 派出了 {{pokemonName}}!', + 'switchQuestion': '要更换\n{{pokemonName}}吗?', + 'trainerDefeated': '你击败了\n{{trainerName}}!', + 'pokemonCaught': '{{pokemonName}} 被抓住了!', + 'pokemon': '宝可梦', + 'sendOutPokemon': '上吧! {{pokemonName}}!', + 'hitResultCriticalHit': '击中了要害!', + 'hitResultSuperEffective': '效果拔群!', + 'hitResultNotVeryEffective': '收效甚微…', + 'hitResultNoEffect': '对 {{pokemonName}} 没有效果!!', + 'hitResultOneHitKO': '一击必杀!', + 'attackFailed': '但是失败了!', + 'attackHitsCount': '击中 {{count}} 次!', + 'expGain': '{{pokemonName}} 获得了 {{exp}} 经验值!', + 'levelUp': '{{pokemonName}} 升级到 Lv. {{level}}!', + 'learnMove': '{{pokemonName}} 学会了 {{moveName}}!', + 'learnMovePrompt': '{{pokemonName}} 想要学习 {{moveName}}。', + 'learnMoveLimitReached': '但是,{{pokemonName}} 已经学会了\n四个技能', + 'learnMoveReplaceQuestion': '要忘记一个技能并学习 {{moveName}} 吗?', + 'learnMoveStopTeaching': '不再尝试学习 {{moveName}}?', + 'learnMoveNotLearned': '{{pokemonName}} 没有学会 {{moveName}}。', + 'learnMoveForgetQuestion': '要忘记哪个技能?', + 'learnMoveForgetSuccess': '{{pokemonName}} 忘记了\n如何使用 {{moveName}}。', + 'countdownPoof': '@d{32}1, @d{15}2, @d{15}和@d{15}… @d{15}… @d{15}… @d{15}@s{pb_bounce_1}噗!', + 'learnMoveAnd': '然后...', + 'levelCapUp': '等级上限提升到 {{levelCap}}!', + 'moveNotImplemented': '{{moveName}} 尚未实装,无法选择。', + 'moveNoPP': '这个技能的 PP 用完了', + 'moveDisabled': '{{moveName}} 被禁用!', + 'noPokeballForce': '一股无形的力量阻止了你使用精灵球。', + 'noPokeballTrainer': '你不能捕捉其他训练家的宝可梦!', + 'noPokeballMulti': '只能在剩下一只宝可梦时才能扔出精灵球!', + 'noPokeballStrong': '目标宝可梦太强了,无法捕捉!你需要先\n削弱它!', + 'noEscapeForce': '一股无形的力量阻止你逃跑。', + 'noEscapeTrainer': '你不能从训练家战斗中逃跑!', + 'noEscapePokemon': '{{pokemonName}} 的 {{moveName}} 阻止了你 {{escapeVerb}}!', + 'runAwaySuccess': '你成功逃脱了!', + 'runAwayCannotEscape': '你无法逃脱!', + 'escapeVerbSwitch': '切换', + 'escapeVerbFlee': '逃跑', + 'notDisabled': '{{moveName}} 不再被禁用!', + 'skipItemQuestion': '你确定要跳过拾取道具吗?', + 'eggHatching': '咦?', + 'ivScannerUseQuestion': '对 {{pokemonName}} 使用个体值扫描仪?' +} as const; diff --git a/src/locales/zh_CN/berry.ts b/src/locales/zh_CN/berry.ts index 08b16d58e68..b989651e1db 100644 --- a/src/locales/zh_CN/berry.ts +++ b/src/locales/zh_CN/berry.ts @@ -1,48 +1,48 @@ -import { BerryTranslationEntries } from "#app/plugins/i18n"; +import { BerryTranslationEntries } from '#app/plugins/i18n'; export const berry: BerryTranslationEntries = { - "SITRUS": { - name: "文柚果", - effect: "HP低于50%时,回复最大HP的25%", + 'SITRUS': { + name: '文柚果', + effect: 'HP低于50%时,回复最大HP的25%', }, - "LUM": { - name: "木子果", - effect: "治愈任何异常状态和混乱状态", + 'LUM': { + name: '木子果', + effect: '治愈任何异常状态和混乱状态', }, - "ENIGMA": { - name: "谜芝果", - effect: "受到效果绝佳的招式攻击时,回复25%最大HP", + 'ENIGMA': { + name: '谜芝果', + effect: '受到效果绝佳的招式攻击时,回复25%最大HP', }, - "LIECHI": { - name: "枝荔果", - effect: "HP低于25%时,攻击提升一个等级", + 'LIECHI': { + name: '枝荔果', + effect: 'HP低于25%时,攻击提升一个等级', }, - "GANLON": { - name: "龙睛果", - effect: "HP低于25%时,防御提升一个等级", + 'GANLON': { + name: '龙睛果', + effect: 'HP低于25%时,防御提升一个等级', }, - "PETAYA": { - name: "龙火果", - effect: "HP低于25%时,特攻提升一个等级", + 'PETAYA': { + name: '龙火果', + effect: 'HP低于25%时,特攻提升一个等级', }, - "APICOT": { - name: "杏仔果", - effect: "HP低于25%时,特防提升一个等级", + 'APICOT': { + name: '杏仔果', + effect: 'HP低于25%时,特防提升一个等级', }, - "SALAC": { - name: "沙鳞果", - effect: "HP低于25%时,速度提升一个等级", + 'SALAC': { + name: '沙鳞果', + effect: 'HP低于25%时,速度提升一个等级', }, - "LANSAT": { - name: "兰萨果", - effect: "HP低于25%时,击中要害率提升两个等级", + 'LANSAT': { + name: '兰萨果', + effect: 'HP低于25%时,击中要害率提升两个等级', }, - "STARF": { - name: "星桃果", - effect: "HP低于25%时,提高随机一项能力两个等级", + 'STARF': { + name: '星桃果', + effect: 'HP低于25%时,提高随机一项能力两个等级', }, - "LEPPA": { - name: "苹野果", - effect: "有招式的PP降到0时,恢复该招式10PP", + 'LEPPA': { + name: '苹野果', + effect: '有招式的PP降到0时,恢复该招式10PP', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/zh_CN/command-ui-handler.ts b/src/locales/zh_CN/command-ui-handler.ts index 3c17efffd8a..78e4d400481 100644 --- a/src/locales/zh_CN/command-ui-handler.ts +++ b/src/locales/zh_CN/command-ui-handler.ts @@ -1,9 +1,9 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const commandUiHandler: SimpleTranslationEntries = { - "fight": "战斗", - "ball": "精灵球", - "pokemon": "宝可梦", - "run": "逃跑", - "actionMessage": "要让\n{{pokemonName}} 做什么?", -} as const; \ No newline at end of file + 'fight': '战斗', + 'ball': '精灵球', + 'pokemon': '宝可梦', + 'run': '逃跑', + 'actionMessage': '要让\n{{pokemonName}} 做什么?', +} as const; diff --git a/src/locales/zh_CN/config.ts b/src/locales/zh_CN/config.ts index 2a01460b855..5126c29d35b 100644 --- a/src/locales/zh_CN/config.ts +++ b/src/locales/zh_CN/config.ts @@ -1,52 +1,52 @@ -import { ability } from "./ability"; -import { abilityTriggers } from "./ability-trigger"; -import { battle } from "./battle"; -import { commandUiHandler } from "./command-ui-handler"; -import { egg } from "./egg"; -import { fightUiHandler } from "./fight-ui-handler"; -import { growth } from "./growth"; -import { menu } from "./menu"; -import { menuUiHandler } from "./menu-ui-handler"; -import { modifierType } from "./modifier-type"; -import { move } from "./move"; -import { nature } from "./nature"; -import { pokeball } from "./pokeball"; -import { pokemon } from "./pokemon"; -import { pokemonInfo } from "./pokemon-info"; +import { ability } from './ability'; +import { abilityTriggers } from './ability-trigger'; +import { battle } from './battle'; +import { commandUiHandler } from './command-ui-handler'; +import { egg } from './egg'; +import { fightUiHandler } from './fight-ui-handler'; +import { growth } from './growth'; +import { menu } from './menu'; +import { menuUiHandler } from './menu-ui-handler'; +import { modifierType } from './modifier-type'; +import { move } from './move'; +import { nature } from './nature'; +import { pokeball } from './pokeball'; +import { pokemon } from './pokemon'; +import { pokemonInfo } from './pokemon-info'; // import { splashMessages } from "./splash-messages"; -import { starterSelectUiHandler } from "./starter-select-ui-handler"; -import { titles, trainerClasses, trainerNames } from "./trainers"; -import { tutorial } from "./tutorial"; -import { weather } from "./weather"; -import { battleMessageUiHandler } from "./battle-message-ui-handler"; -import { berry } from "./berry"; -import { voucher } from "./voucher"; +import { starterSelectUiHandler } from './starter-select-ui-handler'; +import { titles, trainerClasses, trainerNames } from './trainers'; +import { tutorial } from './tutorial'; +import { weather } from './weather'; +import { battleMessageUiHandler } from './battle-message-ui-handler'; +import { berry } from './berry'; +import { voucher } from './voucher'; export const zhCnConfig = { - ability: ability, - abilityTriggers: abilityTriggers, - battle: battle, - commandUiHandler: commandUiHandler, - egg: egg, - fightUiHandler: fightUiHandler, - growth: growth, - menu: menu, - menuUiHandler: menuUiHandler, - modifierType: modifierType, - move: move, - nature: nature, - pokeball: pokeball, - pokemon: pokemon, - pokemonInfo: pokemonInfo, - // splashMessages: splashMessages, - starterSelectUiHandler: starterSelectUiHandler, - titles: titles, - trainerClasses: trainerClasses, - trainerNames: trainerNames, - tutorial: tutorial, - weather: weather, - battleMessageUiHandler: battleMessageUiHandler, - berry: berry, - voucher: voucher, -} + ability: ability, + abilityTriggers: abilityTriggers, + battle: battle, + commandUiHandler: commandUiHandler, + egg: egg, + fightUiHandler: fightUiHandler, + growth: growth, + menu: menu, + menuUiHandler: menuUiHandler, + modifierType: modifierType, + move: move, + nature: nature, + pokeball: pokeball, + pokemon: pokemon, + pokemonInfo: pokemonInfo, + // splashMessages: splashMessages, + starterSelectUiHandler: starterSelectUiHandler, + titles: titles, + trainerClasses: trainerClasses, + trainerNames: trainerNames, + tutorial: tutorial, + weather: weather, + battleMessageUiHandler: battleMessageUiHandler, + berry: berry, + voucher: voucher, +}; diff --git a/src/locales/zh_CN/egg.ts b/src/locales/zh_CN/egg.ts index 99916ab0778..153f1430087 100644 --- a/src/locales/zh_CN/egg.ts +++ b/src/locales/zh_CN/egg.ts @@ -1,21 +1,21 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const egg: SimpleTranslationEntries = { - "egg": "蛋", - "greatTier": "稀有", - "ultraTier": "史诗", - "masterTier": "传说", - "defaultTier": "普通", - "hatchWavesMessageSoon": "里面传来声音!\n似乎快要孵化了!", - "hatchWavesMessageClose": "有时好像会动一下。\n就快孵化了吧?", - "hatchWavesMessageNotClose": "会孵化出什么呢?\n看来还需要很长时\n间才能孵化。", - "hatchWavesMessageLongTime": "这个蛋需要很长时间\n才能孵化。", - "gachaTypeLegendary": "传说概率上升", - "gachaTypeMove": "稀有概率上升", - "gachaTypeShiny": "闪光概率上升", - "selectMachine": "选择一个机器。", - "notEnoughVouchers": "你没有足够的兑换券!", - "tooManyEggs": "你的蛋太多啦!", - "pull": "次", - "pulls": "次" + 'egg': '蛋', + 'greatTier': '稀有', + 'ultraTier': '史诗', + 'masterTier': '传说', + 'defaultTier': '普通', + 'hatchWavesMessageSoon': '里面传来声音!\n似乎快要孵化了!', + 'hatchWavesMessageClose': '有时好像会动一下。\n就快孵化了吧?', + 'hatchWavesMessageNotClose': '会孵化出什么呢?\n看来还需要很长时\n间才能孵化。', + 'hatchWavesMessageLongTime': '这个蛋需要很长时间\n才能孵化。', + 'gachaTypeLegendary': '传说概率上升', + 'gachaTypeMove': '稀有概率上升', + 'gachaTypeShiny': '闪光概率上升', + 'selectMachine': '选择一个机器。', + 'notEnoughVouchers': '你没有足够的兑换券!', + 'tooManyEggs': '你的蛋太多啦!', + 'pull': '次', + 'pulls': '次' } as const; diff --git a/src/locales/zh_CN/fight-ui-handler.ts b/src/locales/zh_CN/fight-ui-handler.ts index 8287a4d80db..ef0b3b99216 100644 --- a/src/locales/zh_CN/fight-ui-handler.ts +++ b/src/locales/zh_CN/fight-ui-handler.ts @@ -1,7 +1,7 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const fightUiHandler: SimpleTranslationEntries = { - "pp": "PP", - "power": "威力", - "accuracy": "命中", -} as const; \ No newline at end of file + 'pp': 'PP', + 'power': '威力', + 'accuracy': '命中', +} as const; diff --git a/src/locales/zh_CN/growth.ts b/src/locales/zh_CN/growth.ts index 49d6b59a935..fffc11be34b 100644 --- a/src/locales/zh_CN/growth.ts +++ b/src/locales/zh_CN/growth.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const growth: SimpleTranslationEntries = { - "Erratic": "最快", - "Fast": "较快", - "Medium_Fast": "快", - "Medium_Slow": "慢", - "Slow": "较慢", - "Fluctuating": "最慢" -} as const; \ No newline at end of file + 'Erratic': '最快', + 'Fast': '较快', + 'Medium_Fast': '快', + 'Medium_Slow': '慢', + 'Slow': '较慢', + 'Fluctuating': '最慢' +} as const; diff --git a/src/locales/zh_CN/menu-ui-handler.ts b/src/locales/zh_CN/menu-ui-handler.ts index 22058daa7cb..d5abee7ec47 100644 --- a/src/locales/zh_CN/menu-ui-handler.ts +++ b/src/locales/zh_CN/menu-ui-handler.ts @@ -1,23 +1,23 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const menuUiHandler: SimpleTranslationEntries = { - "GAME_SETTINGS": '游戏设置', - "ACHIEVEMENTS": "成就", - "STATS": "数据统计", - "VOUCHERS": "兑换券", - "EGG_LIST": "蛋列表", - "EGG_GACHA": "扭蛋机", - "MANAGE_DATA": "管理数据", - "COMMUNITY": "社区", - "SAVE_AND_QUIT": "保存并退出", - "LOG_OUT": "登出", - "slot": "存档位 {{slotNumber}}", - "importSession": "导入存档", - "importSlotSelect": "选择要导入到的存档位。", - "exportSession": "导出存档", - "exportSlotSelect": "选择要导出的存档位。", - "importData": "导入数据", - "exportData": "导出数据", - "cancel": "取消", - "losingProgressionWarning": "你将失去自战斗开始以来的所有进度。是否\n继续?" -} as const; \ No newline at end of file + 'GAME_SETTINGS': '游戏设置', + 'ACHIEVEMENTS': '成就', + 'STATS': '数据统计', + 'VOUCHERS': '兑换券', + 'EGG_LIST': '蛋列表', + 'EGG_GACHA': '扭蛋机', + 'MANAGE_DATA': '管理数据', + 'COMMUNITY': '社区', + 'SAVE_AND_QUIT': '保存并退出', + 'LOG_OUT': '登出', + 'slot': '存档位 {{slotNumber}}', + 'importSession': '导入存档', + 'importSlotSelect': '选择要导入到的存档位。', + 'exportSession': '导出存档', + 'exportSlotSelect': '选择要导出的存档位。', + 'importData': '导入数据', + 'exportData': '导出数据', + 'cancel': '取消', + 'losingProgressionWarning': '你将失去自战斗开始以来的所有进度。是否\n继续?' +} as const; diff --git a/src/locales/zh_CN/menu.ts b/src/locales/zh_CN/menu.ts index c80f55eac61..464c0a0c36b 100644 --- a/src/locales/zh_CN/menu.ts +++ b/src/locales/zh_CN/menu.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,46 +6,46 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const menu: SimpleTranslationEntries = { - "cancel": "取消", - "continue": "继续", - "dailyRun": "每日挑战 (Beta)", - "loadGame": "加载游戏", - "newGame": "新游戏", - "selectGameMode": "选择一个游戏模式", - "logInOrCreateAccount": "登录或创建账户以开始游戏。无需邮箱!", - "username": "用户名", - "password": "密码", - "login": "登录", - "register": "注册", - "emptyUsername": "用户名不能为空", - "invalidLoginUsername": "提供的用户名无效", - "invalidRegisterUsername": "用户名只能包含字母、数字或下划线", - "invalidLoginPassword": "提供的密码无效", - "invalidRegisterPassword": "密码必须至少包含 6 个字符", - "usernameAlreadyUsed": "提供的用户名已被使用", - "accountNonExistent": "提供的用户不存在", - "unmatchingPassword": "提供的密码不匹配", - "passwordNotMatchingConfirmPassword": "密码必须与确认密码一致", - "confirmPassword": "确认密码", - "registrationAgeWarning": "注册即表示您确认您已年满 13 岁。", - "backToLogin": "返回登录", - "failedToLoadSaveData": "读取存档数据失败。请重新加载页面。如果\n问题仍然存在,请联系管理员。", - "sessionSuccess": "会话加载成功。", - "failedToLoadSession": "无法加载您的会话数据。它可能已损坏。", - "boyOrGirl": "你是男孩还是女孩?", - "boy": "男孩", - "girl": "女孩", - "evolving": "咦?\n{{pokemonName}} 开始进化了!", - "stoppedEvolving": "{{pokemonName}} 停止了进化。", - "pauseEvolutionsQuestion": "你确定要停止 {{pokemonName}} 的进化吗?\n你可以在队伍界面中重新进化。", - "evolutionsPaused": "{{pokemonName}} 的进化停止了。", - "evolutionDone": "恭喜!\n你的 {{pokemonName}} 进化成了 {{evolvedPokemonName}}!", - "dailyRankings": "每日排名", - "weeklyRankings": "每周排名", - "noRankings": "无排名", - "loading": "加载中...", - "playersOnline": "在线玩家", - "empty": "空", - "yes": "是", - "no": "否", -} as const; \ No newline at end of file + 'cancel': '取消', + 'continue': '继续', + 'dailyRun': '每日挑战 (Beta)', + 'loadGame': '加载游戏', + 'newGame': '新游戏', + 'selectGameMode': '选择一个游戏模式', + 'logInOrCreateAccount': '登录或创建账户以开始游戏。无需邮箱!', + 'username': '用户名', + 'password': '密码', + 'login': '登录', + 'register': '注册', + 'emptyUsername': '用户名不能为空', + 'invalidLoginUsername': '提供的用户名无效', + 'invalidRegisterUsername': '用户名只能包含字母、数字或下划线', + 'invalidLoginPassword': '提供的密码无效', + 'invalidRegisterPassword': '密码必须至少包含 6 个字符', + 'usernameAlreadyUsed': '提供的用户名已被使用', + 'accountNonExistent': '提供的用户不存在', + 'unmatchingPassword': '提供的密码不匹配', + 'passwordNotMatchingConfirmPassword': '密码必须与确认密码一致', + 'confirmPassword': '确认密码', + 'registrationAgeWarning': '注册即表示您确认您已年满 13 岁。', + 'backToLogin': '返回登录', + 'failedToLoadSaveData': '读取存档数据失败。请重新加载页面。如果\n问题仍然存在,请联系管理员。', + 'sessionSuccess': '会话加载成功。', + 'failedToLoadSession': '无法加载您的会话数据。它可能已损坏。', + 'boyOrGirl': '你是男孩还是女孩?', + 'boy': '男孩', + 'girl': '女孩', + 'evolving': '咦?\n{{pokemonName}} 开始进化了!', + 'stoppedEvolving': '{{pokemonName}} 停止了进化。', + 'pauseEvolutionsQuestion': '你确定要停止 {{pokemonName}} 的进化吗?\n你可以在队伍界面中重新进化。', + 'evolutionsPaused': '{{pokemonName}} 的进化停止了。', + 'evolutionDone': '恭喜!\n你的 {{pokemonName}} 进化成了 {{evolvedPokemonName}}!', + 'dailyRankings': '每日排名', + 'weeklyRankings': '每周排名', + 'noRankings': '无排名', + 'loading': '加载中...', + 'playersOnline': '在线玩家', + 'empty': '空', + 'yes': '是', + 'no': '否', +} as const; diff --git a/src/locales/zh_CN/modifier-type.ts b/src/locales/zh_CN/modifier-type.ts index e826c743fbc..2b29e6ce1ef 100644 --- a/src/locales/zh_CN/modifier-type.ts +++ b/src/locales/zh_CN/modifier-type.ts @@ -1,387 +1,387 @@ -import { ModifierTypeTranslationEntries } from "#app/plugins/i18n"; +import { ModifierTypeTranslationEntries } from '#app/plugins/i18n'; export const modifierType: ModifierTypeTranslationEntries = { ModifierType: { - "AddPokeballModifierType": { - name: "{{modifierCount}}x {{pokeballName}}", - description: "获得 {{pokeballName}} x{{modifierCount}} (已有:{{pokeballAmount}}) \n捕捉倍率:{{catchRate}}", + 'AddPokeballModifierType': { + name: '{{modifierCount}}x {{pokeballName}}', + description: '获得 {{pokeballName}} x{{modifierCount}} (已有:{{pokeballAmount}}) \n捕捉倍率:{{catchRate}}', }, - "AddVoucherModifierType": { - name: "{{modifierCount}}x {{voucherTypeName}}", - description: "获得 {{voucherTypeName}} x{{modifierCount}}", + 'AddVoucherModifierType': { + name: '{{modifierCount}}x {{voucherTypeName}}', + description: '获得 {{voucherTypeName}} x{{modifierCount}}', }, - "PokemonHeldItemModifierType": { + 'PokemonHeldItemModifierType': { extra: { - "inoperable": "{{pokemonName}} 无法携带\n这个物品!", - "tooMany": "{{pokemonName}} 已有太多\n这个物品!", + 'inoperable': '{{pokemonName}} 无法携带\n这个物品!', + 'tooMany': '{{pokemonName}} 已有太多\n这个物品!', } }, - "PokemonHpRestoreModifierType": { - description: "为一只宝可梦回复 {{restorePoints}} HP 或 {{restorePercent}}% HP,取最大值", + 'PokemonHpRestoreModifierType': { + description: '为一只宝可梦回复 {{restorePoints}} HP 或 {{restorePercent}}% HP,取最大值', extra: { - "fully": "为一只宝可梦回复全部HP", - "fullyWithStatus": "为一只宝可梦回复全部HP并消除所有负面\n状态", + 'fully': '为一只宝可梦回复全部HP', + 'fullyWithStatus': '为一只宝可梦回复全部HP并消除所有负面\n状态', } }, - "PokemonReviveModifierType": { - description: "复活一只宝可梦并回复 {{restorePercent}}% HP", + 'PokemonReviveModifierType': { + description: '复活一只宝可梦并回复 {{restorePercent}}% HP', }, - "PokemonStatusHealModifierType": { - description: "为一只宝可梦消除所有负面状态", + 'PokemonStatusHealModifierType': { + description: '为一只宝可梦消除所有负面状态', }, - "PokemonPpRestoreModifierType": { - description: "为一只宝可梦的一个招式回复 {{restorePoints}} PP", + 'PokemonPpRestoreModifierType': { + description: '为一只宝可梦的一个招式回复 {{restorePoints}} PP', extra: { - "fully": "完全回复一只宝可梦一个招式的PP", + 'fully': '完全回复一只宝可梦一个招式的PP', } }, - "PokemonAllMovePpRestoreModifierType": { - description: "为一只宝可梦的所有招式回复 {{restorePoints}} PP", + 'PokemonAllMovePpRestoreModifierType': { + description: '为一只宝可梦的所有招式回复 {{restorePoints}} PP', extra: { - "fully": "为一只宝可梦的所有招式回复所有PP", + 'fully': '为一只宝可梦的所有招式回复所有PP', } }, - "PokemonPpUpModifierType": { - description: "为一只宝可梦的一个招式永久增加{{upPoints}}点\nPP每5点当前最大PP (最多3点)", + 'PokemonPpUpModifierType': { + description: '为一只宝可梦的一个招式永久增加{{upPoints}}点\nPP每5点当前最大PP (最多3点)', }, - "PokemonNatureChangeModifierType": { - name: "{{natureName}}薄荷", - description: "将一只宝可梦的性格改为{{natureName}}并为该宝可\n梦永久解锁该性格.", + 'PokemonNatureChangeModifierType': { + name: '{{natureName}}薄荷', + description: '将一只宝可梦的性格改为{{natureName}}并为该宝可\n梦永久解锁该性格.', }, - "DoubleBattleChanceBoosterModifierType": { - description: "接下来的{{battleCount}}场战斗是双打的概率翻倍", + 'DoubleBattleChanceBoosterModifierType': { + description: '接下来的{{battleCount}}场战斗是双打的概率翻倍', }, - "TempBattleStatBoosterModifierType": { - description: "为所有成员宝可梦提升一级{{tempBattleStatName}},持续5场战斗", + 'TempBattleStatBoosterModifierType': { + description: '为所有成员宝可梦提升一级{{tempBattleStatName}},持续5场战斗', }, - "AttackTypeBoosterModifierType": { - description: "一只宝可梦的{{moveType}}系招式威力提升20%", + 'AttackTypeBoosterModifierType': { + description: '一只宝可梦的{{moveType}}系招式威力提升20%', }, - "PokemonLevelIncrementModifierType": { - description: "一只宝可梦等级提升1级", + 'PokemonLevelIncrementModifierType': { + description: '一只宝可梦等级提升1级', }, - "AllPokemonLevelIncrementModifierType": { - description: "所有成员宝可梦等级提升1级", + 'AllPokemonLevelIncrementModifierType': { + description: '所有成员宝可梦等级提升1级', }, - "PokemonBaseStatBoosterModifierType": { - description: "增加持有者的{{statName}}10%,个体值越高堆叠\n上限越高.", + 'PokemonBaseStatBoosterModifierType': { + description: '增加持有者的{{statName}}10%,个体值越高堆叠\n上限越高.', }, - "AllPokemonFullHpRestoreModifierType": { - description: "所有宝可梦完全回复HP", + 'AllPokemonFullHpRestoreModifierType': { + description: '所有宝可梦完全回复HP', }, - "AllPokemonFullReviveModifierType": { - description: "复活所有濒死宝可梦,完全回复HP", + 'AllPokemonFullReviveModifierType': { + description: '复活所有濒死宝可梦,完全回复HP', }, - "MoneyRewardModifierType": { - description: "获得{{moneyMultiplier}}金钱 (₽{{moneyAmount}})", + 'MoneyRewardModifierType': { + description: '获得{{moneyMultiplier}}金钱 (₽{{moneyAmount}})', extra: { - "small": "少量", - "moderate": "中等", - "large": "大量", + 'small': '少量', + 'moderate': '中等', + 'large': '大量', }, }, - "ExpBoosterModifierType": { - description: "经验值获取量增加{{boostPercent}}%", + 'ExpBoosterModifierType': { + description: '经验值获取量增加{{boostPercent}}%', }, - "PokemonExpBoosterModifierType": { - description: "持有者经验值获取量增加{{boostPercent}}%", + 'PokemonExpBoosterModifierType': { + description: '持有者经验值获取量增加{{boostPercent}}%', }, - "PokemonFriendshipBoosterModifierType": { - description: "每场战斗获得的好感度提升50%", + 'PokemonFriendshipBoosterModifierType': { + description: '每场战斗获得的好感度提升50%', }, - "PokemonMoveAccuracyBoosterModifierType": { - description: "招式命中率增加{{accuracyAmount}} (最大100)", + 'PokemonMoveAccuracyBoosterModifierType': { + description: '招式命中率增加{{accuracyAmount}} (最大100)', }, - "PokemonMultiHitModifierType": { - description: "攻击造成一次额外伤害,每次堆叠额外伤害\n分别衰减60/75/82.5%", + 'PokemonMultiHitModifierType': { + description: '攻击造成一次额外伤害,每次堆叠额外伤害\n分别衰减60/75/82.5%', }, - "TmModifierType": { - name: "招式学习器 {{moveId}} - {{moveName}}", - description: "教会一只宝可梦{{moveName}}", + 'TmModifierType': { + name: '招式学习器 {{moveId}} - {{moveName}}', + description: '教会一只宝可梦{{moveName}}', }, - "EvolutionItemModifierType": { - description: "使某些宝可梦进化", + 'EvolutionItemModifierType': { + description: '使某些宝可梦进化', }, - "FormChangeItemModifierType": { - description: "使某些宝可梦更改形态", + 'FormChangeItemModifierType': { + description: '使某些宝可梦更改形态', }, - "FusePokemonModifierType": { - description: "融合两只宝可梦 (改变特性, 平分基础点数\n和属性, 共享招式池)", + 'FusePokemonModifierType': { + description: '融合两只宝可梦 (改变特性, 平分基础点数\n和属性, 共享招式池)', }, - "TerastallizeModifierType": { - name: "{{teraType}}太晶碎块", - description: "持有者获得{{teraType}}太晶化10场战斗", + 'TerastallizeModifierType': { + name: '{{teraType}}太晶碎块', + description: '持有者获得{{teraType}}太晶化10场战斗', }, - "ContactHeldItemTransferChanceModifierType": { - description: "攻击时{{chancePercent}}%概率偷取对手物品", + 'ContactHeldItemTransferChanceModifierType': { + description: '攻击时{{chancePercent}}%概率偷取对手物品', }, - "TurnHeldItemTransferModifierType": { - description: "持有者每回合从对手那里获得一个持有的物品", + 'TurnHeldItemTransferModifierType': { + description: '持有者每回合从对手那里获得一个持有的物品', }, - "EnemyAttackStatusEffectChanceModifierType": { - description: "攻击时{{chancePercent}}%概率造成{{statusEffect}}", + 'EnemyAttackStatusEffectChanceModifierType': { + description: '攻击时{{chancePercent}}%概率造成{{statusEffect}}', }, - "EnemyEndureChanceModifierType": { - description: "增加{{chancePercent}}%遭受攻击的概率", + 'EnemyEndureChanceModifierType': { + description: '增加{{chancePercent}}%遭受攻击的概率', }, - "RARE_CANDY": { name: "神奇糖果" }, - "RARER_CANDY": { name: "超神奇糖果" }, + 'RARE_CANDY': { name: '神奇糖果' }, + 'RARER_CANDY': { name: '超神奇糖果' }, - "MEGA_BRACELET": { name: "超级手镯", description: "能让携带着超级石战斗的宝可梦进行\n超级进化" }, - "DYNAMAX_BAND": { name: "极巨腕带", description: "能让携带着极巨菇菇战斗的宝可梦进行\n极巨化" }, - "TERA_ORB": { name: "太晶珠", description: "能让携带着太晶碎块战斗的宝可梦进行\n太晶化" }, + 'MEGA_BRACELET': { name: '超级手镯', description: '能让携带着超级石战斗的宝可梦进行\n超级进化' }, + 'DYNAMAX_BAND': { name: '极巨腕带', description: '能让携带着极巨菇菇战斗的宝可梦进行\n极巨化' }, + 'TERA_ORB': { name: '太晶珠', description: '能让携带着太晶碎块战斗的宝可梦进行\n太晶化' }, - "MAP": { name: "地图", description: "允许你在切换宝可梦群落时选择目的地"}, + 'MAP': { name: '地图', description: '允许你在切换宝可梦群落时选择目的地'}, - "POTION": { name: "伤药" }, - "SUPER_POTION": { name: "好伤药" }, - "HYPER_POTION": { name: "厉害伤药" }, - "MAX_POTION": { name: "全满药" }, - "FULL_RESTORE": { name: "全复药" }, + 'POTION': { name: '伤药' }, + 'SUPER_POTION': { name: '好伤药' }, + 'HYPER_POTION': { name: '厉害伤药' }, + 'MAX_POTION': { name: '全满药' }, + 'FULL_RESTORE': { name: '全复药' }, - "REVIVE": { name: "活力碎片" }, - "MAX_REVIVE": { name: "活力块" }, + 'REVIVE': { name: '活力碎片' }, + 'MAX_REVIVE': { name: '活力块' }, - "FULL_HEAL": { name: "万灵药" }, + 'FULL_HEAL': { name: '万灵药' }, - "SACRED_ASH": { name: "圣灰" }, + 'SACRED_ASH': { name: '圣灰' }, - "REVIVER_SEED": { name: "复活种子", description: "恢复1只濒死宝可梦的HP至1/2" }, + 'REVIVER_SEED': { name: '复活种子', description: '恢复1只濒死宝可梦的HP至1/2' }, - "ETHER": { name: "PP单项小补剂" }, - "MAX_ETHER": { name: "PP单项全补剂" }, + 'ETHER': { name: 'PP单项小补剂' }, + 'MAX_ETHER': { name: 'PP单项全补剂' }, - "ELIXIR": { name: "PP多项小补剂" }, - "MAX_ELIXIR": { name: "PP多项全补剂" }, + 'ELIXIR': { name: 'PP多项小补剂' }, + 'MAX_ELIXIR': { name: 'PP多项全补剂' }, - "PP_UP": { name: "PP提升剂" }, - "PP_MAX": { name: "PP极限提升剂" }, + 'PP_UP': { name: 'PP提升剂' }, + 'PP_MAX': { name: 'PP极限提升剂' }, - "LURE": { name: "引虫香水" }, - "SUPER_LURE": { name: "白银香水" }, - "MAX_LURE": { name: "黄金香水" }, + 'LURE': { name: '引虫香水' }, + 'SUPER_LURE': { name: '白银香水' }, + 'MAX_LURE': { name: '黄金香水' }, - "MEMORY_MUSHROOM": { name: "回忆蘑菇", description: "回忆一个宝可梦已经遗忘的招式" }, + 'MEMORY_MUSHROOM': { name: '回忆蘑菇', description: '回忆一个宝可梦已经遗忘的招式' }, - "EXP_SHARE": { name: "学习装置", description: "未参加对战的宝可梦获得20%的经验值" }, - "EXP_BALANCE": { name: "均衡型学习装置", description: "队伍中的低级宝可梦获得更多经验值" }, + 'EXP_SHARE': { name: '学习装置', description: '未参加对战的宝可梦获得20%的经验值' }, + 'EXP_BALANCE': { name: '均衡型学习装置', description: '队伍中的低级宝可梦获得更多经验值' }, - "OVAL_CHARM": { name: "圆形护符", description: "当多只宝可梦参与战斗,分别获得总经验值\n10%的额外经验值" }, + 'OVAL_CHARM': { name: '圆形护符', description: '当多只宝可梦参与战斗,分别获得总经验值\n10%的额外经验值' }, - "EXP_CHARM": { name: "经验护符" }, - "SUPER_EXP_CHARM": { name: "超级经验护符" }, - "GOLDEN_EXP_CHARM": { name: "黄金经验护符" }, + 'EXP_CHARM': { name: '经验护符' }, + 'SUPER_EXP_CHARM': { name: '超级经验护符' }, + 'GOLDEN_EXP_CHARM': { name: '黄金经验护符' }, - "LUCKY_EGG": { name: "幸运蛋" }, - "GOLDEN_EGG": { name: "金蛋" }, + 'LUCKY_EGG': { name: '幸运蛋' }, + 'GOLDEN_EGG': { name: '金蛋' }, - "SOOTHE_BELL": { name: "安抚之铃" }, + 'SOOTHE_BELL': { name: '安抚之铃' }, - "SOUL_DEW": { name: "心之水滴", description: "增加宝可梦性格影响10% (加算)" }, + 'SOUL_DEW': { name: '心之水滴', description: '增加宝可梦性格影响10% (加算)' }, - "NUGGET": { name: "金珠" }, - "BIG_NUGGET": { name: "巨大金珠" }, - "RELIC_GOLD": { name: "古代金币" }, + 'NUGGET': { name: '金珠' }, + 'BIG_NUGGET': { name: '巨大金珠' }, + 'RELIC_GOLD': { name: '古代金币' }, - "AMULET_COIN": { name: "护符金币", description: "金钱奖励增加20%" }, - "GOLDEN_PUNCH": { name: "黄金拳头", description: "将50%造成的伤害转换为金钱" }, - "COIN_CASE": { name: "代币盒", description: "每十场战斗, 获得自己金钱10%的利息" }, + 'AMULET_COIN': { name: '护符金币', description: '金钱奖励增加20%' }, + 'GOLDEN_PUNCH': { name: '黄金拳头', description: '将50%造成的伤害转换为金钱' }, + 'COIN_CASE': { name: '代币盒', description: '每十场战斗, 获得自己金钱10%的利息' }, - "LOCK_CAPSULE": { name: "上锁的容器", description: "允许在刷新物品时锁定物品稀有度" }, + 'LOCK_CAPSULE': { name: '上锁的容器', description: '允许在刷新物品时锁定物品稀有度' }, - "GRIP_CLAW": { name: "紧缠钩爪" }, - "WIDE_LENS": { name: "广角镜" }, + 'GRIP_CLAW': { name: '紧缠钩爪' }, + 'WIDE_LENS': { name: '广角镜' }, - "MULTI_LENS": { name: "多重镜" }, + 'MULTI_LENS': { name: '多重镜' }, - "HEALING_CHARM": { name: "治愈护符", description: "HP回复量增加10% (含复活)" }, - "CANDY_JAR": { name: "糖果罐", description: "神奇糖果提供的升级提升1级" }, + 'HEALING_CHARM': { name: '治愈护符', description: 'HP回复量增加10% (含复活)' }, + 'CANDY_JAR': { name: '糖果罐', description: '神奇糖果提供的升级提升1级' }, - "BERRY_POUCH": { name: "树果袋", description: "使用树果时有25%的几率不会消耗树果" }, + 'BERRY_POUCH': { name: '树果袋', description: '使用树果时有25%的几率不会消耗树果' }, - "FOCUS_BAND": { name: "气势头带", description: "携带该道具的宝可梦有10%几率在受到\n攻击而将陷入濒死状态时,保留1点HP不陷入濒死状态" }, + 'FOCUS_BAND': { name: '气势头带', description: '携带该道具的宝可梦有10%几率在受到\n攻击而将陷入濒死状态时,保留1点HP不陷入濒死状态' }, - "QUICK_CLAW": { name: "先制之爪", description: "有10%的几率无视速度优先使出招式\n(先制技能优先)" }, + 'QUICK_CLAW': { name: '先制之爪', description: '有10%的几率无视速度优先使出招式\n(先制技能优先)' }, - "KINGS_ROCK": { name: "王者之证", description: "携带该道具的宝可梦使用任意原本不会造成\n畏缩状态的攻击招式并造成伤害时,有\n10%几率使目标陷入畏缩状态" }, + 'KINGS_ROCK': { name: '王者之证', description: '携带该道具的宝可梦使用任意原本不会造成\n畏缩状态的攻击招式并造成伤害时,有\n10%几率使目标陷入畏缩状态' }, - "LEFTOVERS": { name: "吃剩的东西", description: "携带该道具的宝可梦在每个回合结束时恢复\n最大HP的1/16" }, - "SHELL_BELL": { name: "贝壳之铃", description: "携带该道具的宝可梦在攻击对方成功造成伤\n害时,携带者的HP会恢复其所造成伤害\n的1/8" }, + 'LEFTOVERS': { name: '吃剩的东西', description: '携带该道具的宝可梦在每个回合结束时恢复\n最大HP的1/16' }, + 'SHELL_BELL': { name: '贝壳之铃', description: '携带该道具的宝可梦在攻击对方成功造成伤\n害时,携带者的HP会恢复其所造成伤害\n的1/8' }, - "BATON": { name: "接力棒", description: "允许在切换宝可梦时保留能力变化, 对陷阱\n同样生效" }, + 'BATON': { name: '接力棒', description: '允许在切换宝可梦时保留能力变化, 对陷阱\n同样生效' }, - "SHINY_CHARM": { name: "闪耀护符", description: "显著增加野生宝可梦的闪光概率" }, - "ABILITY_CHARM": { name: "特性护符", description: "显著增加野生宝可梦有隐藏特性的概率" }, + 'SHINY_CHARM': { name: '闪耀护符', description: '显著增加野生宝可梦的闪光概率' }, + 'ABILITY_CHARM': { name: '特性护符', description: '显著增加野生宝可梦有隐藏特性的概率' }, - "IV_SCANNER": { name: "个体值探测器", description: "允许扫描野生宝可梦的个体值。 每个次显示\n2个个体值. 最好的个体值优先显示" }, + 'IV_SCANNER': { name: '个体值探测器', description: '允许扫描野生宝可梦的个体值。 每个次显示\n2个个体值. 最好的个体值优先显示' }, - "DNA_SPLICERS": { name: "基因之楔" }, + 'DNA_SPLICERS': { name: '基因之楔' }, - "MINI_BLACK_HOLE": { name: "迷你黑洞" }, + 'MINI_BLACK_HOLE': { name: '迷你黑洞' }, - "GOLDEN_POKEBALL": { name: "黄金精灵球", description: "在每场战斗结束后增加一个额外物品选项" }, + 'GOLDEN_POKEBALL': { name: '黄金精灵球', description: '在每场战斗结束后增加一个额外物品选项' }, - "ENEMY_DAMAGE_BOOSTER": { name: "伤害硬币", description: "增加5%造成伤害" }, - "ENEMY_DAMAGE_REDUCTION": { name: "防御硬币", description: "减少2.5%承受伤害" }, - "ENEMY_HEAL": { name: "回复硬币", description: "每回合回复2%最大HP" }, - "ENEMY_ATTACK_POISON_CHANCE": { name: "剧毒硬币" }, - "ENEMY_ATTACK_PARALYZE_CHANCE": { name: "麻痹硬币" }, - "ENEMY_ATTACK_SLEEP_CHANCE": { name: "睡眠硬币" }, - "ENEMY_ATTACK_FREEZE_CHANCE": { name: "冰冻硬币" }, - "ENEMY_ATTACK_BURN_CHANCE": { name: "灼烧硬币" }, - "ENEMY_STATUS_EFFECT_HEAL_CHANCE": { name: "万灵药硬币", description: "增加10%每回合治愈异常状态的概率" }, - "ENEMY_ENDURE_CHANCE": { name: "忍受硬币" }, - "ENEMY_FUSED_CHANCE": { name: "融合硬币", description: "增加1%野生融合宝可梦出现概率" }, + 'ENEMY_DAMAGE_BOOSTER': { name: '伤害硬币', description: '增加5%造成伤害' }, + 'ENEMY_DAMAGE_REDUCTION': { name: '防御硬币', description: '减少2.5%承受伤害' }, + 'ENEMY_HEAL': { name: '回复硬币', description: '每回合回复2%最大HP' }, + 'ENEMY_ATTACK_POISON_CHANCE': { name: '剧毒硬币' }, + 'ENEMY_ATTACK_PARALYZE_CHANCE': { name: '麻痹硬币' }, + 'ENEMY_ATTACK_SLEEP_CHANCE': { name: '睡眠硬币' }, + 'ENEMY_ATTACK_FREEZE_CHANCE': { name: '冰冻硬币' }, + 'ENEMY_ATTACK_BURN_CHANCE': { name: '灼烧硬币' }, + 'ENEMY_STATUS_EFFECT_HEAL_CHANCE': { name: '万灵药硬币', description: '增加10%每回合治愈异常状态的概率' }, + 'ENEMY_ENDURE_CHANCE': { name: '忍受硬币' }, + 'ENEMY_FUSED_CHANCE': { name: '融合硬币', description: '增加1%野生融合宝可梦出现概率' }, }, TempBattleStatBoosterItem: { - "x_attack": "力量强化", - "x_defense": "防御强化", - "x_sp_atk": "特攻强化", - "x_sp_def": "特防强化", - "x_speed": "速度强化", - "x_accuracy": "命中强化", - "dire_hit": "要害攻击", + 'x_attack': '力量强化', + 'x_defense': '防御强化', + 'x_sp_atk': '特攻强化', + 'x_sp_def': '特防强化', + 'x_speed': '速度强化', + 'x_accuracy': '命中强化', + 'dire_hit': '要害攻击', }, AttackTypeBoosterItem: { - "silk_scarf": "丝绸围巾", - "black_belt": "黑带", - "sharp_beak": "锐利鸟嘴", - "poison_barb": "毒针", - "soft_sand": "柔软沙子", - "hard_stone": "硬石头", - "silver_powder": "银粉", - "spell_tag": "诅咒之符", - "metal_coat": "金属膜", - "charcoal": "木炭", - "mystic_water": "神秘水滴", - "miracle_seed": "奇迹种子", - "magnet": "磁铁", - "twisted_spoon": "弯曲的汤匙", - "never_melt_ice": "不融冰", - "dragon_fang": "龙之牙", - "black_glasses": "黑色眼镜", - "fairy_feather": "妖精之羽", + 'silk_scarf': '丝绸围巾', + 'black_belt': '黑带', + 'sharp_beak': '锐利鸟嘴', + 'poison_barb': '毒针', + 'soft_sand': '柔软沙子', + 'hard_stone': '硬石头', + 'silver_powder': '银粉', + 'spell_tag': '诅咒之符', + 'metal_coat': '金属膜', + 'charcoal': '木炭', + 'mystic_water': '神秘水滴', + 'miracle_seed': '奇迹种子', + 'magnet': '磁铁', + 'twisted_spoon': '弯曲的汤匙', + 'never_melt_ice': '不融冰', + 'dragon_fang': '龙之牙', + 'black_glasses': '黑色眼镜', + 'fairy_feather': '妖精之羽', }, BaseStatBoosterItem: { - "hp_up": "HP增强剂", - "protein": "攻击增强剂", - "iron": "防御增强剂", - "calcium": "特攻增强剂", - "zinc": "特防增强剂", - "carbos": "速度增强剂", + 'hp_up': 'HP增强剂', + 'protein': '攻击增强剂', + 'iron': '防御增强剂', + 'calcium': '特攻增强剂', + 'zinc': '特防增强剂', + 'carbos': '速度增强剂', }, EvolutionItem: { - "NONE": "None", + 'NONE': 'None', - "LINKING_CORD": "联系绳", - "SUN_STONE": "日之石", - "MOON_STONE": "月之石", - "LEAF_STONE": "叶之石", - "FIRE_STONE": "火之石", - "WATER_STONE": "水之石", - "THUNDER_STONE": "雷之石", - "ICE_STONE": "冰之石", - "DUSK_STONE": "暗之石", - "DAWN_STONE": "觉醒之石", - "SHINY_STONE": "光之石", - "CRACKED_POT": "破裂的茶壶", - "SWEET_APPLE": "甜甜苹果", - "TART_APPLE": "酸酸苹果", - "STRAWBERRY_SWEET": "草莓糖饰", - "UNREMARKABLE_TEACUP": "凡作茶碗", + 'LINKING_CORD': '联系绳', + 'SUN_STONE': '日之石', + 'MOON_STONE': '月之石', + 'LEAF_STONE': '叶之石', + 'FIRE_STONE': '火之石', + 'WATER_STONE': '水之石', + 'THUNDER_STONE': '雷之石', + 'ICE_STONE': '冰之石', + 'DUSK_STONE': '暗之石', + 'DAWN_STONE': '觉醒之石', + 'SHINY_STONE': '光之石', + 'CRACKED_POT': '破裂的茶壶', + 'SWEET_APPLE': '甜甜苹果', + 'TART_APPLE': '酸酸苹果', + 'STRAWBERRY_SWEET': '草莓糖饰', + 'UNREMARKABLE_TEACUP': '凡作茶碗', - "CHIPPED_POT": "缺损的茶壶", - "BLACK_AUGURITE": "黑奇石", - "GALARICA_CUFF": "伽勒豆蔻手环", - "GALARICA_WREATH": "伽勒豆蔻花圈", - "PEAT_BLOCK": "泥炭块", - "AUSPICIOUS_ARMOR": "庆祝之铠", - "MALICIOUS_ARMOR": "咒术之铠", - "MASTERPIECE_TEACUP": "杰作茶碗", - "METAL_ALLOY": "复合金属", - "SCROLL_OF_DARKNESS": "恶之挂轴", - "SCROLL_OF_WATERS": "水之挂轴", - "SYRUPY_APPLE": "蜜汁苹果", + 'CHIPPED_POT': '缺损的茶壶', + 'BLACK_AUGURITE': '黑奇石', + 'GALARICA_CUFF': '伽勒豆蔻手环', + 'GALARICA_WREATH': '伽勒豆蔻花圈', + 'PEAT_BLOCK': '泥炭块', + 'AUSPICIOUS_ARMOR': '庆祝之铠', + 'MALICIOUS_ARMOR': '咒术之铠', + 'MASTERPIECE_TEACUP': '杰作茶碗', + 'METAL_ALLOY': '复合金属', + 'SCROLL_OF_DARKNESS': '恶之挂轴', + 'SCROLL_OF_WATERS': '水之挂轴', + 'SYRUPY_APPLE': '蜜汁苹果', }, FormChangeItem: { - "NONE": "None", + 'NONE': 'None', - "ABOMASITE": "暴雪王进化石", - "ABSOLITE": "阿勃梭鲁进化石", - "AERODACTYLITE": "化石翼龙进化石", - "AGGRONITE": "波士可多拉进化石", - "ALAKAZITE": "胡地进化石", - "ALTARIANITE": "七夕青鸟进化石", - "AMPHAROSITE": "电龙进化石", - "AUDINITE": "差不多娃娃进化石", - "BANETTITE": "诅咒娃娃进化石", - "BEEDRILLITE": "大针蜂进化石", - "BLASTOISINITE": "水箭龟进化石", - "BLAZIKENITE": "火焰鸡进化石", - "CAMERUPTITE": "喷火驼进化石", - "CHARIZARDITE_X": "喷火龙进化石X", - "CHARIZARDITE_Y": "喷火龙进化石Y", - "DIANCITE": "蒂安希进化石", - "GALLADITE": "艾路雷朵进化石", - "GARCHOMPITE": "烈咬陆鲨进化石", - "GARDEVOIRITE": "沙奈朵进化石", - "GENGARITE": "耿鬼进化石", - "GLALITITE": "冰鬼护进化石", - "GYARADOSITE": "暴鲤龙进化石", - "HERACRONITE": "赫拉克罗斯进化石", - "HOUNDOOMINITE": "黑鲁加进化石", - "KANGASKHANITE": "袋兽进化石", - "LATIASITE": "拉帝亚斯进化石", - "LATIOSITE": "拉帝欧斯进化石", - "LOPUNNITE": "长耳兔进化石", - "LUCARIONITE": "路卡利欧进化石", - "MANECTITE": "雷电兽进化石", - "MAWILITE": "大嘴娃进化石", - "MEDICHAMITE": "恰雷姆进化石", - "METAGROSSITE": "巨金怪进化石", - "MEWTWONITE_X": "超梦进化石X", - "MEWTWONITE_Y": "超梦进化石Y", - "PIDGEOTITE": "大比鸟进化石", - "PINSIRITE": "凯罗斯进化石", - "RAYQUAZITE": "烈空坐进化石", - "SABLENITE": "勾魂眼进化石", - "SALAMENCITE": "暴飞龙进化石", - "SCEPTILITE": "蜥蜴王进化石", - "SCIZORITE": "巨钳螳螂进化石", - "SHARPEDONITE": "巨牙鲨进化石", - "SLOWBRONITE": "呆壳兽进化石", - "STEELIXITE": "大钢蛇进化石", - "SWAMPERTITE": "巨沼怪进化石", - "TYRANITARITE": "班基拉斯进化石", - "VENUSAURITE": "妙蛙花进化石", + 'ABOMASITE': '暴雪王进化石', + 'ABSOLITE': '阿勃梭鲁进化石', + 'AERODACTYLITE': '化石翼龙进化石', + 'AGGRONITE': '波士可多拉进化石', + 'ALAKAZITE': '胡地进化石', + 'ALTARIANITE': '七夕青鸟进化石', + 'AMPHAROSITE': '电龙进化石', + 'AUDINITE': '差不多娃娃进化石', + 'BANETTITE': '诅咒娃娃进化石', + 'BEEDRILLITE': '大针蜂进化石', + 'BLASTOISINITE': '水箭龟进化石', + 'BLAZIKENITE': '火焰鸡进化石', + 'CAMERUPTITE': '喷火驼进化石', + 'CHARIZARDITE_X': '喷火龙进化石X', + 'CHARIZARDITE_Y': '喷火龙进化石Y', + 'DIANCITE': '蒂安希进化石', + 'GALLADITE': '艾路雷朵进化石', + 'GARCHOMPITE': '烈咬陆鲨进化石', + 'GARDEVOIRITE': '沙奈朵进化石', + 'GENGARITE': '耿鬼进化石', + 'GLALITITE': '冰鬼护进化石', + 'GYARADOSITE': '暴鲤龙进化石', + 'HERACRONITE': '赫拉克罗斯进化石', + 'HOUNDOOMINITE': '黑鲁加进化石', + 'KANGASKHANITE': '袋兽进化石', + 'LATIASITE': '拉帝亚斯进化石', + 'LATIOSITE': '拉帝欧斯进化石', + 'LOPUNNITE': '长耳兔进化石', + 'LUCARIONITE': '路卡利欧进化石', + 'MANECTITE': '雷电兽进化石', + 'MAWILITE': '大嘴娃进化石', + 'MEDICHAMITE': '恰雷姆进化石', + 'METAGROSSITE': '巨金怪进化石', + 'MEWTWONITE_X': '超梦进化石X', + 'MEWTWONITE_Y': '超梦进化石Y', + 'PIDGEOTITE': '大比鸟进化石', + 'PINSIRITE': '凯罗斯进化石', + 'RAYQUAZITE': '烈空坐进化石', + 'SABLENITE': '勾魂眼进化石', + 'SALAMENCITE': '暴飞龙进化石', + 'SCEPTILITE': '蜥蜴王进化石', + 'SCIZORITE': '巨钳螳螂进化石', + 'SHARPEDONITE': '巨牙鲨进化石', + 'SLOWBRONITE': '呆壳兽进化石', + 'STEELIXITE': '大钢蛇进化石', + 'SWAMPERTITE': '巨沼怪进化石', + 'TYRANITARITE': '班基拉斯进化石', + 'VENUSAURITE': '妙蛙花进化石', - "BLUE_ORB": "靛蓝色宝珠", - "RED_ORB": "朱红色宝珠", - "SHARP_METEORITE": "锐利陨石", - "HARD_METEORITE": "坚硬陨石", - "SMOOTH_METEORITE": "光滑陨石", - "ADAMANT_CRYSTAL": "大金刚宝玉", - "LUSTROUS_ORB": "白玉宝珠", - "GRISEOUS_CORE": "大白金宝玉", - "REVEAL_GLASS": "现形镜", - "GRACIDEA": "葛拉西蒂亚花", - "MAX_MUSHROOMS": "极巨菇菇", - "DARK_STONE": "黑暗石", - "LIGHT_STONE": "光明石", - "PRISON_BOTTLE": "惩戒之壶", - "N_LUNARIZER": "奈克洛露奈合体器", - "N_SOLARIZER": "奈克洛索尔合体器", - "RUSTED_SWORD": "腐朽的剑", - "RUSTED_SHIELD": "腐朽的盾", - "ICY_REINS_OF_UNITY": "牵绊缰绳(冰)", - "SHADOW_REINS_OF_UNITY": "牵绊缰绳(幽灵)", - "WELLSPRING_MASK": "水井面具", - "HEARTHFLAME_MASK": "火灶面具", - "CORNERSTONE_MASK": "础石面具", - "SHOCK_DRIVE": "闪电卡带", - "BURN_DRIVE": "火焰卡带", - "CHILL_DRIVE": "冰冻卡带", - "DOUSE_DRIVE": "水流卡带", + 'BLUE_ORB': '靛蓝色宝珠', + 'RED_ORB': '朱红色宝珠', + 'SHARP_METEORITE': '锐利陨石', + 'HARD_METEORITE': '坚硬陨石', + 'SMOOTH_METEORITE': '光滑陨石', + 'ADAMANT_CRYSTAL': '大金刚宝玉', + 'LUSTROUS_ORB': '白玉宝珠', + 'GRISEOUS_CORE': '大白金宝玉', + 'REVEAL_GLASS': '现形镜', + 'GRACIDEA': '葛拉西蒂亚花', + 'MAX_MUSHROOMS': '极巨菇菇', + 'DARK_STONE': '黑暗石', + 'LIGHT_STONE': '光明石', + 'PRISON_BOTTLE': '惩戒之壶', + 'N_LUNARIZER': '奈克洛露奈合体器', + 'N_SOLARIZER': '奈克洛索尔合体器', + 'RUSTED_SWORD': '腐朽的剑', + 'RUSTED_SHIELD': '腐朽的盾', + 'ICY_REINS_OF_UNITY': '牵绊缰绳(冰)', + 'SHADOW_REINS_OF_UNITY': '牵绊缰绳(幽灵)', + 'WELLSPRING_MASK': '水井面具', + 'HEARTHFLAME_MASK': '火灶面具', + 'CORNERSTONE_MASK': '础石面具', + 'SHOCK_DRIVE': '闪电卡带', + 'BURN_DRIVE': '火焰卡带', + 'CHILL_DRIVE': '冰冻卡带', + 'DOUSE_DRIVE': '水流卡带', }, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/zh_CN/move.ts b/src/locales/zh_CN/move.ts index 1432fde5b7f..5059b2345ed 100644 --- a/src/locales/zh_CN/move.ts +++ b/src/locales/zh_CN/move.ts @@ -1,3812 +1,3812 @@ -import { MoveTranslationEntries } from "#app/plugins/i18n"; +import { MoveTranslationEntries } from '#app/plugins/i18n'; export const move: MoveTranslationEntries = { - "pound": { - name: "拍击", - effect: "使用长长的尾巴或手等拍打\n对手进行攻击", + 'pound': { + name: '拍击', + effect: '使用长长的尾巴或手等拍打\n对手进行攻击', }, - "karateChop": { - name: "空手劈", - effect: "用锋利的手刀劈向对手进行\n攻击。容易击中要害", + 'karateChop': { + name: '空手劈', + effect: '用锋利的手刀劈向对手进行\n攻击。容易击中要害', }, - "doubleSlap": { - name: "连环巴掌", - effect: "用连环巴掌拍打对手进行攻\n击。连续攻击2~5次", + 'doubleSlap': { + name: '连环巴掌', + effect: '用连环巴掌拍打对手进行攻\n击。连续攻击2~5次', }, - "cometPunch": { - name: "连续拳", - effect: "用拳头怒涛般的殴打对手进\n行攻击。连续攻击2~5次", + 'cometPunch': { + name: '连续拳', + effect: '用拳头怒涛般的殴打对手进\n行攻击。连续攻击2~5次', }, - "megaPunch": { - name: "百万吨重拳", - effect: "用充满力量的拳头攻击对手", + 'megaPunch': { + name: '百万吨重拳', + effect: '用充满力量的拳头攻击对手', }, - "payDay": { - name: "聚宝功", - effect: "向对手的身体投掷小金币进\n行攻击。战斗后可以拿到钱", + 'payDay': { + name: '聚宝功', + effect: '向对手的身体投掷小金币进\n行攻击。战斗后可以拿到钱', }, - "firePunch": { - name: "火焰拳", - effect: "用充满火焰的拳头攻击对手。\n有时会让对手陷入灼伤状\n态", + 'firePunch': { + name: '火焰拳', + effect: '用充满火焰的拳头攻击对手。\n有时会让对手陷入灼伤状\n态', }, - "icePunch": { - name: "冰冻拳", - effect: "用充满寒气的拳头攻击对手。\n有时会让对手陷入冰冻状\n态", + 'icePunch': { + name: '冰冻拳', + effect: '用充满寒气的拳头攻击对手。\n有时会让对手陷入冰冻状\n态', }, - "thunderPunch": { - name: "雷电拳", - effect: "用充满电流的拳头攻击对手。\n有时会让对手陷入麻痹状\n态", + 'thunderPunch': { + name: '雷电拳', + effect: '用充满电流的拳头攻击对手。\n有时会让对手陷入麻痹状\n态', }, - "scratch": { - name: "抓", - effect: "用坚硬且无比锋利的爪子抓\n对手进行攻击", + 'scratch': { + name: '抓', + effect: '用坚硬且无比锋利的爪子抓\n对手进行攻击', }, - "viseGrip": { - name: "夹住", - effect: "将对手从两侧夹住,给予伤\n害", + 'viseGrip': { + name: '夹住', + effect: '将对手从两侧夹住,给予伤\n害', }, - "guillotine": { - name: "极落钳", - effect: "用大钳子或剪刀等夹断对手\n进行攻击。只要命中就会一\n击昏厥", + 'guillotine': { + name: '极落钳', + effect: '用大钳子或剪刀等夹断对手\n进行攻击。只要命中就会一\n击昏厥', }, - "razorWind": { - name: "旋风刀", - effect: "制造风之刃,于第2回合攻\n击对手。容易击中要害", + 'razorWind': { + name: '旋风刀', + effect: '制造风之刃,于第2回合攻\n击对手。容易击中要害', }, - "swordsDance": { - name: "剑舞", - effect: "激烈地跳起战舞提高气势。\n大幅提高自己的攻击", + 'swordsDance': { + name: '剑舞', + effect: '激烈地跳起战舞提高气势。\n大幅提高自己的攻击', }, - "cut": { - name: "居合劈", - effect: "用镰刀或爪子等切斩对手进\n行攻击", + 'cut': { + name: '居合劈', + effect: '用镰刀或爪子等切斩对手进\n行攻击', }, - "gust": { - name: "起风", - effect: "用翅膀将刮起的狂风袭向对\n手进行攻击", + 'gust': { + name: '起风', + effect: '用翅膀将刮起的狂风袭向对\n手进行攻击', }, - "wingAttack": { - name: "翅膀攻击", - effect: "大大地展开美丽的翅膀,将\n其撞向对手进行攻击", + 'wingAttack': { + name: '翅膀攻击', + effect: '大大地展开美丽的翅膀,将\n其撞向对手进行攻击', }, - "whirlwind": { - name: "吹飞", - effect: "吹飞对手,强制拉后备宝可\n梦上场。如果对手为野生宝\n可梦,战斗将直接结束", + 'whirlwind': { + name: '吹飞', + effect: '吹飞对手,强制拉后备宝可\n梦上场。如果对手为野生宝\n可梦,战斗将直接结束', }, - "fly": { - name: "飞翔", - effect: "第1回合飞上天空,第2回\n合攻击对手", + 'fly': { + name: '飞翔', + effect: '第1回合飞上天空,第2回\n合攻击对手', }, - "bind": { - name: "绑紧", - effect: "使用长长的身体或藤蔓等,\n在4~5回合内绑紧对手进\n行攻击", + 'bind': { + name: '绑紧', + effect: '使用长长的身体或藤蔓等,\n在4~5回合内绑紧对手进\n行攻击', }, - "slam": { - name: "摔打", - effect: "使用长长的尾巴或藤蔓等摔\n打对手进行攻击", + 'slam': { + name: '摔打', + effect: '使用长长的尾巴或藤蔓等摔\n打对手进行攻击', }, - "vineWhip": { - name: "藤鞭", - effect: "用如同鞭子般弯曲而细长的\n藤蔓摔打对手进行攻击", + 'vineWhip': { + name: '藤鞭', + effect: '用如同鞭子般弯曲而细长的\n藤蔓摔打对手进行攻击', }, - "stomp": { - name: "踩踏", - effect: "用大脚踩踏对手进行攻击。\n有时会使对手畏缩", + 'stomp': { + name: '踩踏', + effect: '用大脚踩踏对手进行攻击。\n有时会使对手畏缩', }, - "doubleKick": { - name: "二连踢", - effect: "用2只脚踢飞对手进行攻击。\n连续2次给予伤害", + 'doubleKick': { + name: '二连踢', + effect: '用2只脚踢飞对手进行攻击。\n连续2次给予伤害', }, - "megaKick": { - name: "百万吨重踢", - effect: "使出力大无穷的重踢踢飞对\n手进行攻击", + 'megaKick': { + name: '百万吨重踢', + effect: '使出力大无穷的重踢踢飞对\n手进行攻击', }, - "jumpKick": { - name: "飞踢", - effect: "使出高高的腾空踢攻击对手。\n如果踢偏则自己会受到伤\n害", + 'jumpKick': { + name: '飞踢', + effect: '使出高高的腾空踢攻击对手。\n如果踢偏则自己会受到伤\n害', }, - "rollingKick": { - name: "回旋踢", - effect: "一边使身体快速旋转,一边\n踢飞对手进行攻击。有时会\n使对手畏缩", + 'rollingKick': { + name: '回旋踢', + effect: '一边使身体快速旋转,一边\n踢飞对手进行攻击。有时会\n使对手畏缩', }, - "sandAttack": { - name: "泼沙", - effect: "向对手脸上泼沙子,从而降\n低命中率", + 'sandAttack': { + name: '泼沙', + effect: '向对手脸上泼沙子,从而降\n低命中率', }, - "headbutt": { - name: "头锤", - effect: "将头伸出,笔直地扑向对手\n进行攻击。有时会使对手畏\n缩", + 'headbutt': { + name: '头锤', + effect: '将头伸出,笔直地扑向对手\n进行攻击。有时会使对手畏\n缩', }, - "hornAttack": { - name: "角撞", - effect: "用尖锐的角攻击对手", + 'hornAttack': { + name: '角撞', + effect: '用尖锐的角攻击对手', }, - "furyAttack": { - name: "乱击", - effect: "用角或喙刺向对手进行攻击。\n连续攻击2~5次", + 'furyAttack': { + name: '乱击', + effect: '用角或喙刺向对手进行攻击。\n连续攻击2~5次', }, - "hornDrill": { - name: "角钻", - effect: "用旋转的角刺入对手进行攻\n击。只要命中就会一击昏厥", + 'hornDrill': { + name: '角钻', + effect: '用旋转的角刺入对手进行攻\n击。只要命中就会一击昏厥', }, - "tackle": { - name: "撞击", - effect: "用整个身体撞向对手进行攻\n击", + 'tackle': { + name: '撞击', + effect: '用整个身体撞向对手进行攻\n击', }, - "bodySlam": { - name: "泰山压顶", - effect: "用整个身体压住对手进行攻\n击。有时会让对手陷入麻痹\n状态", + 'bodySlam': { + name: '泰山压顶', + effect: '用整个身体压住对手进行攻\n击。有时会让对手陷入麻痹\n状态', }, - "wrap": { - name: "紧束", - effect: "使用长长的身体或藤蔓等,\n在4~5回合内紧束对手进\n行攻击", + 'wrap': { + name: '紧束', + effect: '使用长长的身体或藤蔓等,\n在4~5回合内紧束对手进\n行攻击', }, - "takeDown": { - name: "猛撞", - effect: "以惊人的气势撞向对手进行\n攻击。自己也会受到少许伤\n害", + 'takeDown': { + name: '猛撞', + effect: '以惊人的气势撞向对手进行\n攻击。自己也会受到少许伤\n害', }, - "thrash": { - name: "大闹一番", - effect: "在2~3回合内,乱打一气\n地攻击对手。大闹一番后自\n己会陷入混乱", + 'thrash': { + name: '大闹一番', + effect: '在2~3回合内,乱打一气\n地攻击对手。大闹一番后自\n己会陷入混乱', }, - "doubleEdge": { - name: "舍身冲撞", - effect: "拼命地猛撞向对手进行攻击。\n自己也会受到不小的伤害", + 'doubleEdge': { + name: '舍身冲撞', + effect: '拼命地猛撞向对手进行攻击。\n自己也会受到不小的伤害', }, - "tailWhip": { - name: "摇尾巴", - effect: "可爱地左右摇晃尾巴,诱使\n对手疏忽大意。会降低对手\n的防御", + 'tailWhip': { + name: '摇尾巴', + effect: '可爱地左右摇晃尾巴,诱使\n对手疏忽大意。会降低对手\n的防御', }, - "poisonSting": { - name: "毒针", - effect: "将有毒的针刺入对手进行攻\n击。有时会让对手陷入中毒\n状态", + 'poisonSting': { + name: '毒针', + effect: '将有毒的针刺入对手进行攻\n击。有时会让对手陷入中毒\n状态', }, - "twineedle": { - name: "双针", - effect: "将2根针刺入对手,连续2\n次给予伤害。有时会让对手\n陷入中毒状态", + 'twineedle': { + name: '双针', + effect: '将2根针刺入对手,连续2\n次给予伤害。有时会让对手\n陷入中毒状态', }, - "pinMissile": { - name: "飞弹针", - effect: "向对手发射锐针进行攻击。\n连续攻击2~5次", + 'pinMissile': { + name: '飞弹针', + effect: '向对手发射锐针进行攻击。\n连续攻击2~5次', }, - "leer": { - name: "瞪眼", - effect: "用犀利的眼神使其害怕,从\n而降低对手的防御", + 'leer': { + name: '瞪眼', + effect: '用犀利的眼神使其害怕,从\n而降低对手的防御', }, - "bite": { - name: "咬住", - effect: "用尖锐的牙咬住对手进行攻\n击。有时会使对手畏缩", + 'bite': { + name: '咬住', + effect: '用尖锐的牙咬住对手进行攻\n击。有时会使对手畏缩', }, - "growl": { - name: "叫声", - effect: "让对手听可爱的叫声,引开\n注意力使其疏忽,从而降低\n对手的攻击", + 'growl': { + name: '叫声', + effect: '让对手听可爱的叫声,引开\n注意力使其疏忽,从而降低\n对手的攻击', }, - "roar": { - name: "吼叫", - effect: "放走对手,强制拉后备宝可\n梦上场。如果对手为野生宝\n可梦,战斗将直接结束", + 'roar': { + name: '吼叫', + effect: '放走对手,强制拉后备宝可\n梦上场。如果对手为野生宝\n可梦,战斗将直接结束', }, - "sing": { - name: "唱歌", - effect: "让对手听舒适、美妙的歌声,\n从而陷入睡眠状态", + 'sing': { + name: '唱歌', + effect: '让对手听舒适、美妙的歌声,\n从而陷入睡眠状态', }, - "supersonic": { - name: "超音波", - effect: "从身体发出特殊的音波,从\n而使对手混乱", + 'supersonic': { + name: '超音波', + effect: '从身体发出特殊的音波,从\n而使对手混乱', }, - "sonicBoom": { - name: "音爆", - effect: "将冲击波撞向对手进行攻击。\n必定会给予20的伤害", + 'sonicBoom': { + name: '音爆', + effect: '将冲击波撞向对手进行攻击。\n必定会给予20的伤害', }, - "disable": { - name: "定身法", - effect: "阻碍对手行动,之前使出的\n招式将在4回合内无法使用", + 'disable': { + name: '定身法', + effect: '阻碍对手行动,之前使出的\n招式将在4回合内无法使用', }, - "acid": { - name: "溶解液", - effect: "将强酸泼向对手进行攻击。\n有时会降低对手的特防", + 'acid': { + name: '溶解液', + effect: '将强酸泼向对手进行攻击。\n有时会降低对手的特防', }, - "ember": { - name: "火花", - effect: "向对手发射小型火焰进行攻\n击。有时会让对手陷入灼伤\n状态", + 'ember': { + name: '火花', + effect: '向对手发射小型火焰进行攻\n击。有时会让对手陷入灼伤\n状态', }, - "flamethrower": { - name: "喷射火焰", - effect: "向对手发射烈焰进行攻击。\n有时会让对手陷入灼伤状态", + 'flamethrower': { + name: '喷射火焰', + effect: '向对手发射烈焰进行攻击。\n有时会让对手陷入灼伤状态', }, - "mist": { - name: "白雾", - effect: "用白雾覆盖身体。在5回合\n内不会让对手降低自己的能\n力", + 'mist': { + name: '白雾', + effect: '用白雾覆盖身体。在5回合\n内不会让对手降低自己的能\n力', }, - "waterGun": { - name: "水枪", - effect: "向对手猛烈地喷射水流进行\n攻击", + 'waterGun': { + name: '水枪', + effect: '向对手猛烈地喷射水流进行\n攻击', }, - "hydroPump": { - name: "水炮", - effect: "向对手猛烈地喷射大量水流\n进行攻击", + 'hydroPump': { + name: '水炮', + effect: '向对手猛烈地喷射大量水流\n进行攻击', }, - "surf": { - name: "冲浪", - effect: "利用大浪攻击自己周围所有\n的宝可梦", + 'surf': { + name: '冲浪', + effect: '利用大浪攻击自己周围所有\n的宝可梦', }, - "iceBeam": { - name: "冰冻光束", - effect: "向对手发射冰冻光束进行攻\n击。有时会让对手陷入冰冻\n状态", + 'iceBeam': { + name: '冰冻光束', + effect: '向对手发射冰冻光束进行攻\n击。有时会让对手陷入冰冻\n状态', }, - "blizzard": { - name: "暴风雪", - effect: "将猛烈的暴风雪刮向对手进\n行攻击。有时会让对手陷入\n冰冻状态", + 'blizzard': { + name: '暴风雪', + effect: '将猛烈的暴风雪刮向对手进\n行攻击。有时会让对手陷入\n冰冻状态', }, - "psybeam": { - name: "幻象光线", - effect: "向对手发射神奇的光线进行\n攻击。有时会使对手混乱", + 'psybeam': { + name: '幻象光线', + effect: '向对手发射神奇的光线进行\n攻击。有时会使对手混乱', }, - "bubbleBeam": { - name: "泡沫光线", - effect: "向对手猛烈地喷射泡沫进行\n攻击。有时会降低对手的速\n度", + 'bubbleBeam': { + name: '泡沫光线', + effect: '向对手猛烈地喷射泡沫进行\n攻击。有时会降低对手的速\n度', }, - "auroraBeam": { - name: "极光束", - effect: "向对手发射虹色光束进行攻\n击。有时会降低对手的攻击", + 'auroraBeam': { + name: '极光束', + effect: '向对手发射虹色光束进行攻\n击。有时会降低对手的攻击', }, - "hyperBeam": { - name: "破坏光线", - effect: "向对手发射强烈的光线进行\n攻击。下一回合自己将无法\n动弹", + 'hyperBeam': { + name: '破坏光线', + effect: '向对手发射强烈的光线进行\n攻击。下一回合自己将无法\n动弹', }, - "peck": { - name: "啄", - effect: "用尖锐的喙或角刺向对手进\n行攻击", + 'peck': { + name: '啄', + effect: '用尖锐的喙或角刺向对手进\n行攻击', }, - "drillPeck": { - name: "啄钻", - effect: "一边旋转,一边将尖喙刺入\n对手进行攻击", + 'drillPeck': { + name: '啄钻', + effect: '一边旋转,一边将尖喙刺入\n对手进行攻击', }, - "submission": { - name: "深渊翻滚", - effect: "将对手连同自己一起摔向地\n面进行攻击。自己也会受到\n少许伤害", + 'submission': { + name: '深渊翻滚', + effect: '将对手连同自己一起摔向地\n面进行攻击。自己也会受到\n少许伤害', }, - "lowKick": { - name: "踢倒", - effect: "用力踢对手的脚,使其摔倒\n进行攻击。对手越重,威力\n越大", + 'lowKick': { + name: '踢倒', + effect: '用力踢对手的脚,使其摔倒\n进行攻击。对手越重,威力\n越大', }, - "counter": { - name: "双倍奉还", - effect: "从对手那里受到物理攻击的\n伤害将以2倍返还给同一个\n对手", + 'counter': { + name: '双倍奉还', + effect: '从对手那里受到物理攻击的\n伤害将以2倍返还给同一个\n对手', }, - "seismicToss": { - name: "地球上投", - effect: "利用引力将对手甩飞出去。\n给予对手和自己等级相同的\n伤害", + 'seismicToss': { + name: '地球上投', + effect: '利用引力将对手甩飞出去。\n给予对手和自己等级相同的\n伤害', }, - "strength": { - name: "怪力", - effect: "使出浑身力气殴打对手进行\n攻击", + 'strength': { + name: '怪力', + effect: '使出浑身力气殴打对手进行\n攻击', }, - "absorb": { - name: "吸取", - effect: "吸取对手的养分进行攻击。\n可以回复给予对手伤害的一\n半HP", + 'absorb': { + name: '吸取', + effect: '吸取对手的养分进行攻击。\n可以回复给予对手伤害的一\n半HP', }, - "megaDrain": { - name: "超级吸取", - effect: "吸取对手的养分进行攻击。\n可以回复给予对手伤害的一\n半HP", + 'megaDrain': { + name: '超级吸取', + effect: '吸取对手的养分进行攻击。\n可以回复给予对手伤害的一\n半HP', }, - "leechSeed": { - name: "寄生种子", - effect: "植入寄生种子后,将在每回\n合一点一点吸取对手的HP,\n从而用来回复自己的HP", + 'leechSeed': { + name: '寄生种子', + effect: '植入寄生种子后,将在每回\n合一点一点吸取对手的HP,\n从而用来回复自己的HP', }, - "growth": { - name: "生长", - effect: "让身体一下子长大,从而提\n高攻击和特攻", + 'growth': { + name: '生长', + effect: '让身体一下子长大,从而提\n高攻击和特攻', }, - "razorLeaf": { - name: "飞叶快刀", - effect: "飞出叶片,切斩对手进行攻\n击。容易击中要害", + 'razorLeaf': { + name: '飞叶快刀', + effect: '飞出叶片,切斩对手进行攻\n击。容易击中要害', }, - "solarBeam": { - name: "日光束", - effect: "第1回合收集满满的日光,\n第2回合发射光束进行攻击", + 'solarBeam': { + name: '日光束', + effect: '第1回合收集满满的日光,\n第2回合发射光束进行攻击', }, - "poisonPowder": { - name: "毒粉", - effect: "撒出毒粉,从而让对手陷入\n中毒状态", + 'poisonPowder': { + name: '毒粉', + effect: '撒出毒粉,从而让对手陷入\n中毒状态', }, - "stunSpore": { - name: "麻痹粉", - effect: "撒出麻痹粉,从而让对手陷\n入麻痹状态", + 'stunSpore': { + name: '麻痹粉', + effect: '撒出麻痹粉,从而让对手陷\n入麻痹状态', }, - "sleepPowder": { - name: "催眠粉", - effect: "撒出催眠粉,从而让对手陷\n入睡眠状态", + 'sleepPowder': { + name: '催眠粉', + effect: '撒出催眠粉,从而让对手陷\n入睡眠状态', }, - "petalDance": { - name: "花瓣舞", - effect: "在2~3回合内,散落花瓣\n攻击对手。之后自己会陷入\n混乱", + 'petalDance': { + name: '花瓣舞', + effect: '在2~3回合内,散落花瓣\n攻击对手。之后自己会陷入\n混乱', }, - "stringShot": { - name: "吐丝", - effect: "用口中吐出的丝缠绕对手,\n从而大幅降低对手的速度", + 'stringShot': { + name: '吐丝', + effect: '用口中吐出的丝缠绕对手,\n从而大幅降低对手的速度', }, - "dragonRage": { - name: "龙之怒", - effect: "将愤怒的冲击波撞向对手进\n行攻击。必定会给予40的\n伤害", + 'dragonRage': { + name: '龙之怒', + effect: '将愤怒的冲击波撞向对手进\n行攻击。必定会给予40的\n伤害', }, - "fireSpin": { - name: "火焰旋涡", - effect: "将对手困在激烈的火焰旋涡\n中,在4~5回合内进行攻\n击", + 'fireSpin': { + name: '火焰旋涡', + effect: '将对手困在激烈的火焰旋涡\n中,在4~5回合内进行攻\n击', }, - "thunderShock": { - name: "电击", - effect: "发出电流刺激对手进行攻击。\n有时会让对手陷入麻痹状\n态", + 'thunderShock': { + name: '电击', + effect: '发出电流刺激对手进行攻击。\n有时会让对手陷入麻痹状\n态', }, - "thunderbolt": { - name: "十万伏特", - effect: "向对手发出强力电击进行攻\n击。有时会让对手陷入麻痹\n状态", + 'thunderbolt': { + name: '十万伏特', + effect: '向对手发出强力电击进行攻\n击。有时会让对手陷入麻痹\n状态', }, - "thunderWave": { - name: "电磁波", - effect: "向对手发出微弱的电击,从\n而让对手陷入麻痹状态", + 'thunderWave': { + name: '电磁波', + effect: '向对手发出微弱的电击,从\n而让对手陷入麻痹状态', }, - "thunder": { - name: "打雷", - effect: "向对手劈下暴雷进行攻击。\n有时会让对手陷入麻痹状态", + 'thunder': { + name: '打雷', + effect: '向对手劈下暴雷进行攻击。\n有时会让对手陷入麻痹状态', }, - "rockThrow": { - name: "落石", - effect: "拿起小岩石,投掷对手进行\n攻击", + 'rockThrow': { + name: '落石', + effect: '拿起小岩石,投掷对手进行\n攻击', }, - "earthquake": { - name: "地震", - effect: "利用地震的冲击,攻击自己\n周围所有的宝可梦", + 'earthquake': { + name: '地震', + effect: '利用地震的冲击,攻击自己\n周围所有的宝可梦', }, - "fissure": { - name: "地裂", - effect: "让对手掉落于地裂的裂缝中\n进行攻击。只要命中就会一\n击昏厥", + 'fissure': { + name: '地裂', + effect: '让对手掉落于地裂的裂缝中\n进行攻击。只要命中就会一\n击昏厥', }, - "dig": { - name: "挖洞", - effect: "第1回合钻入地底,第2回\n合攻击对手", + 'dig': { + name: '挖洞', + effect: '第1回合钻入地底,第2回\n合攻击对手', }, - "toxic": { - name: "剧毒", - effect: "让对手陷入剧毒状态。随着\n回合的推进,中毒伤害会增\n加", + 'toxic': { + name: '剧毒', + effect: '让对手陷入剧毒状态。随着\n回合的推进,中毒伤害会增\n加', }, - "confusion": { - name: "念力", - effect: "向对手发送微弱的念力进行\n攻击。有时会使对手混乱", + 'confusion': { + name: '念力', + effect: '向对手发送微弱的念力进行\n攻击。有时会使对手混乱', }, - "psychic": { - name: "精神强念", - effect: "向对手发送强大的念力进行\n攻击。有时会降低对手的特\n防", + 'psychic': { + name: '精神强念', + effect: '向对手发送强大的念力进行\n攻击。有时会降低对手的特\n防', }, - "hypnosis": { - name: "催眠术", - effect: "施以诱导睡意的暗示,让对\n手陷入睡眠状态", + 'hypnosis': { + name: '催眠术', + effect: '施以诱导睡意的暗示,让对\n手陷入睡眠状态', }, - "meditate": { - name: "瑜伽姿势", - effect: "唤醒身体深处沉睡的力量,\n从而提高自己的攻击", + 'meditate': { + name: '瑜伽姿势', + effect: '唤醒身体深处沉睡的力量,\n从而提高自己的攻击', }, - "agility": { - name: "高速移动", - effect: "让身体放松变得轻盈,以便\n高速移动。大幅提高自己的\n速度", + 'agility': { + name: '高速移动', + effect: '让身体放松变得轻盈,以便\n高速移动。大幅提高自己的\n速度', }, - "quickAttack": { - name: "电光一闪", - effect: "以迅雷不及掩耳之势扑向对\n手。必定能够先制攻击", + 'quickAttack': { + name: '电光一闪', + effect: '以迅雷不及掩耳之势扑向对\n手。必定能够先制攻击', }, - "rage": { - name: "愤怒", - effect: "如果在使出招式后受到攻击\n的话,会因愤怒的力量而提\n高攻击", + 'rage': { + name: '愤怒', + effect: '如果在使出招式后受到攻击\n的话,会因愤怒的力量而提\n高攻击', }, - "teleport": { - name: "瞬间移动", - effect: "当有后备宝可梦时使用,就\n可以进行替换。野生的宝可\n梦使用则会逃走", + 'teleport': { + name: '瞬间移动', + effect: '当有后备宝可梦时使用,就\n可以进行替换。野生的宝可\n梦使用则会逃走', }, - "nightShade": { - name: "黑夜魔影", - effect: "显示恐怖幻影,只给予对手\n和自己等级相同的伤害", + 'nightShade': { + name: '黑夜魔影', + effect: '显示恐怖幻影,只给予对手\n和自己等级相同的伤害', }, - "mimic": { - name: "模仿", - effect: "可以将对手最后使用的招式,\n在战斗内变成自己的招式", + 'mimic': { + name: '模仿', + effect: '可以将对手最后使用的招式,\n在战斗内变成自己的招式', }, - "screech": { - name: "刺耳声", - effect: "发出不由自主想要捂起耳朵\n的刺耳声,从而大幅降低对\n手的防御", + 'screech': { + name: '刺耳声', + effect: '发出不由自主想要捂起耳朵\n的刺耳声,从而大幅降低对\n手的防御', }, - "doubleTeam": { - name: "影子分身", - effect: "通过快速移动来制造分身,\n扰乱对手,从而提高闪避率", + 'doubleTeam': { + name: '影子分身', + effect: '通过快速移动来制造分身,\n扰乱对手,从而提高闪避率', }, - "recover": { - name: "自我再生", - effect: "让细胞再生,从而回复自己\n最大HP的一半", + 'recover': { + name: '自我再生', + effect: '让细胞再生,从而回复自己\n最大HP的一半', }, - "harden": { - name: "变硬", - effect: "全身使劲,让身体变硬,从\n而提高自己的防御", + 'harden': { + name: '变硬', + effect: '全身使劲,让身体变硬,从\n而提高自己的防御', }, - "minimize": { - name: "变小", - effect: "蜷缩身体显得很小,从而大\n幅提高自己的闪避率", + 'minimize': { + name: '变小', + effect: '蜷缩身体显得很小,从而大\n幅提高自己的闪避率', }, - "smokescreen": { - name: "烟幕", - effect: "向对手喷出烟或墨汁等,从\n而降低对手的命中率", + 'smokescreen': { + name: '烟幕', + effect: '向对手喷出烟或墨汁等,从\n而降低对手的命中率', }, - "confuseRay": { - name: "奇异之光", - effect: "显示奇怪的光,扰乱对手。\n使对手混乱", + 'confuseRay': { + name: '奇异之光', + effect: '显示奇怪的光,扰乱对手。\n使对手混乱', }, - "withdraw": { - name: "缩入壳中", - effect: "缩入壳里保护身体,从而提\n高自己的防御", + 'withdraw': { + name: '缩入壳中', + effect: '缩入壳里保护身体,从而提\n高自己的防御', }, - "defenseCurl": { - name: "变圆", - effect: "将身体蜷曲变圆,从而提高\n自己的防御", + 'defenseCurl': { + name: '变圆', + effect: '将身体蜷曲变圆,从而提高\n自己的防御', }, - "barrier": { - name: "屏障", - effect: "制造坚固的壁障,从而大幅\n提高自己的防御", + 'barrier': { + name: '屏障', + effect: '制造坚固的壁障,从而大幅\n提高自己的防御', }, - "lightScreen": { - name: "光墙", - effect: "利用神奇的墙壁,在5回合\n内减弱从对手那里受到的特\n殊攻击的伤害", + 'lightScreen': { + name: '光墙', + effect: '利用神奇的墙壁,在5回合\n内减弱从对手那里受到的特\n殊攻击的伤害', }, - "haze": { - name: "黑雾", - effect: "升起黑雾,将正在场上战斗\n的全体宝可梦的能力变回原\n点", + 'haze': { + name: '黑雾', + effect: '升起黑雾,将正在场上战斗\n的全体宝可梦的能力变回原\n点', }, - "reflect": { - name: "反射壁", - effect: "利用神奇的墙壁,在5回合\n内减弱从对手那里受到的物\n理攻击的伤害", + 'reflect': { + name: '反射壁', + effect: '利用神奇的墙壁,在5回合\n内减弱从对手那里受到的物\n理攻击的伤害', }, - "focusEnergy": { - name: "聚气", - effect: "深深地吸口气,集中精神。\n自己的攻击会变得容易击中\n要害", + 'focusEnergy': { + name: '聚气', + effect: '深深地吸口气,集中精神。\n自己的攻击会变得容易击中\n要害', }, - "bide": { - name: "忍耐", - effect: "在2回合内忍受攻击,受到\n的伤害会2倍返还给对手", + 'bide': { + name: '忍耐', + effect: '在2回合内忍受攻击,受到\n的伤害会2倍返还给对手', }, - "metronome": { - name: "挥指", - effect: "挥动手指刺激自己的大脑,\n从许多的招式中随机使出1\n个", + 'metronome': { + name: '挥指', + effect: '挥动手指刺激自己的大脑,\n从许多的招式中随机使出1\n个', }, - "mirrorMove": { - name: "鹦鹉学舌", - effect: "模仿对手使用的招式,自己\n也使用相同招式", + 'mirrorMove': { + name: '鹦鹉学舌', + effect: '模仿对手使用的招式,自己\n也使用相同招式', }, - "selfDestruct": { - name: "玉石俱碎", - effect: "引发爆炸,攻击自己周围所\n有的宝可梦。使用后陷入昏\n厥", + 'selfDestruct': { + name: '玉石俱碎', + effect: '引发爆炸,攻击自己周围所\n有的宝可梦。使用后陷入昏\n厥', }, - "eggBomb": { - name: "炸蛋", - effect: "向对手用力投掷大大的蛋进\n行攻击", + 'eggBomb': { + name: '炸蛋', + effect: '向对手用力投掷大大的蛋进\n行攻击', }, - "lick": { - name: "舌舔", - effect: "用长长的舌头,舔遍对手进\n行攻击。有时会让对手陷入\n麻痹状态", + 'lick': { + name: '舌舔', + effect: '用长长的舌头,舔遍对手进\n行攻击。有时会让对手陷入\n麻痹状态', }, - "smog": { - name: "浊雾", - effect: "将肮脏的浓雾吹向对手进行\n攻击。有时会让对手陷入中\n毒状态", + 'smog': { + name: '浊雾', + effect: '将肮脏的浓雾吹向对手进行\n攻击。有时会让对手陷入中\n毒状态', }, - "sludge": { - name: "污泥攻击", - effect: "用污泥投掷对手进行攻击。\n有时会让对手陷入中毒状态", + 'sludge': { + name: '污泥攻击', + effect: '用污泥投掷对手进行攻击。\n有时会让对手陷入中毒状态', }, - "boneClub": { - name: "骨棒", - effect: "用手中的骨头殴打对手进行\n攻击。有时会使对手畏缩", + 'boneClub': { + name: '骨棒', + effect: '用手中的骨头殴打对手进行\n攻击。有时会使对手畏缩', }, - "fireBlast": { - name: "大字爆炎", - effect: "用大字形状的火焰烧尽对手。\n有时会让对手陷入灼伤状\n态", + 'fireBlast': { + name: '大字爆炎', + effect: '用大字形状的火焰烧尽对手。\n有时会让对手陷入灼伤状\n态', }, - "waterfall": { - name: "攀瀑", - effect: "以惊人的气势扑向对手。有\n时会使对手畏缩", + 'waterfall': { + name: '攀瀑', + effect: '以惊人的气势扑向对手。有\n时会使对手畏缩', }, - "clamp": { - name: "贝壳夹击", - effect: "用非常坚固且厚实的贝壳,\n在4~5回合内夹住对手进\n行攻击", + 'clamp': { + name: '贝壳夹击', + effect: '用非常坚固且厚实的贝壳,\n在4~5回合内夹住对手进\n行攻击', }, - "swift": { - name: "高速星星", - effect: "发射星形的光攻击对手。攻\n击必定会命中", + 'swift': { + name: '高速星星', + effect: '发射星形的光攻击对手。攻\n击必定会命中', }, - "skullBash": { - name: "火箭头锤", - effect: "第1回合把头缩进去,从而\n提高防御。第2回合攻击对\n手", + 'skullBash': { + name: '火箭头锤', + effect: '第1回合把头缩进去,从而\n提高防御。第2回合攻击对\n手', }, - "spikeCannon": { - name: "尖刺加农炮", - effect: "向对手发射锐针进行攻击。\n连续攻击2~5次", + 'spikeCannon': { + name: '尖刺加农炮', + effect: '向对手发射锐针进行攻击。\n连续攻击2~5次', }, - "constrict": { - name: "缠绕", - effect: "用触手或青藤等缠绕进行攻\n击。有时会降低对手的速度", + 'constrict': { + name: '缠绕', + effect: '用触手或青藤等缠绕进行攻\n击。有时会降低对手的速度', }, - "amnesia": { - name: "瞬间失忆", - effect: "将头脑清空,瞬间忘记某事,\n从而大幅提高自己的特防", + 'amnesia': { + name: '瞬间失忆', + effect: '将头脑清空,瞬间忘记某事,\n从而大幅提高自己的特防', }, - "kinesis": { - name: "折弯汤匙", - effect: "折弯汤匙引开注意,从而降\n低对手的命中率", + 'kinesis': { + name: '折弯汤匙', + effect: '折弯汤匙引开注意,从而降\n低对手的命中率', }, - "softBoiled": { - name: "生蛋", - effect: "回复自己最大HP的一半", + 'softBoiled': { + name: '生蛋', + effect: '回复自己最大HP的一半', }, - "highJumpKick": { - name: "飞膝踢", - effect: "跳起后用膝盖撞对手进行攻\n击。如果撞偏则自己会受到\n伤害", + 'highJumpKick': { + name: '飞膝踢', + effect: '跳起后用膝盖撞对手进行攻\n击。如果撞偏则自己会受到\n伤害', }, - "glare": { - name: "大蛇瞪眼", - effect: "用腹部的花纹使对手害怕,\n从而让其陷入麻痹状态", + 'glare': { + name: '大蛇瞪眼', + effect: '用腹部的花纹使对手害怕,\n从而让其陷入麻痹状态', }, - "dreamEater": { - name: "食梦", - effect: "吃掉正在睡觉的对手的梦进\n行攻击。回复对手所受到伤\n害的一半HP", + 'dreamEater': { + name: '食梦', + effect: '吃掉正在睡觉的对手的梦进\n行攻击。回复对手所受到伤\n害的一半HP', }, - "poisonGas": { - name: "毒瓦斯", - effect: "将毒瓦斯吹到对手的脸上,\n从而让对手陷入中毒状态", + 'poisonGas': { + name: '毒瓦斯', + effect: '将毒瓦斯吹到对手的脸上,\n从而让对手陷入中毒状态', }, - "barrage": { - name: "投球", - effect: "向对手投掷圆形物体进行攻\n击。连续攻击2~5次", + 'barrage': { + name: '投球', + effect: '向对手投掷圆形物体进行攻\n击。连续攻击2~5次', }, - "leechLife": { - name: "吸血", - effect: "吸取血液攻击对手。可以回\n复给予对手伤害的一半HP", + 'leechLife': { + name: '吸血', + effect: '吸取血液攻击对手。可以回\n复给予对手伤害的一半HP', }, - "lovelyKiss": { - name: "恶魔之吻", - effect: "用恐怖的脸强吻对手。让对\n手陷入睡眠状态", + 'lovelyKiss': { + name: '恶魔之吻', + effect: '用恐怖的脸强吻对手。让对\n手陷入睡眠状态', }, - "skyAttack": { - name: "神鸟猛击", - effect: "第2回合攻击对手。偶尔使\n对手畏缩。也容易击中要害", + 'skyAttack': { + name: '神鸟猛击', + effect: '第2回合攻击对手。偶尔使\n对手畏缩。也容易击中要害', }, - "transform": { - name: "变身", - effect: "变身成对手宝可梦的样子,\n能够使用和对手完全相同的\n招式", + 'transform': { + name: '变身', + effect: '变身成对手宝可梦的样子,\n能够使用和对手完全相同的\n招式', }, - "bubble": { - name: "泡沫", - effect: "向对手用力吹起无数泡泡进\n行攻击。有时会降低对手的\n速度", + 'bubble': { + name: '泡沫', + effect: '向对手用力吹起无数泡泡进\n行攻击。有时会降低对手的\n速度', }, - "dizzyPunch": { - name: "迷昏拳", - effect: "有节奏地出拳攻击对手。有\n时会使对手混乱", + 'dizzyPunch': { + name: '迷昏拳', + effect: '有节奏地出拳攻击对手。有\n时会使对手混乱', }, - "spore": { - name: "蘑菇孢子", - effect: "沙沙沙地撒满具有催眠效果\n的孢子,从而让对手陷入睡\n眠状态", + 'spore': { + name: '蘑菇孢子', + effect: '沙沙沙地撒满具有催眠效果\n的孢子,从而让对手陷入睡\n眠状态', }, - "flash": { - name: "闪光", - effect: "使出光芒,从而降低对手的\n命中率。也可在阴暗的洞窟\n里照亮四周", + 'flash': { + name: '闪光', + effect: '使出光芒,从而降低对手的\n命中率。也可在阴暗的洞窟\n里照亮四周', }, - "psywave": { - name: "精神波", - effect: "向对手发射神奇的念波进行\n攻击。每次使用,伤害都会\n改变", + 'psywave': { + name: '精神波', + effect: '向对手发射神奇的念波进行\n攻击。每次使用,伤害都会\n改变', }, - "splash": { - name: "跃起", - effect: "也不攻击只是一蹦一蹦地跳,\n什么都不会发生…", + 'splash': { + name: '跃起', + effect: '也不攻击只是一蹦一蹦地跳,\n什么都不会发生…', }, - "acidArmor": { - name: "溶化", - effect: "通过细胞的变化进行液化,\n从而大幅提高自己的防御", + 'acidArmor': { + name: '溶化', + effect: '通过细胞的变化进行液化,\n从而大幅提高自己的防御', }, - "crabhammer": { - name: "蟹钳锤", - effect: "用大钳子敲打对手进行攻击。\n容易击中要害", + 'crabhammer': { + name: '蟹钳锤', + effect: '用大钳子敲打对手进行攻击。\n容易击中要害', }, - "explosion": { - name: "大爆炸", - effect: "引发大爆炸,攻击自己周围\n所有的宝可梦。使用后自己\n会陷入昏厥", + 'explosion': { + name: '大爆炸', + effect: '引发大爆炸,攻击自己周围\n所有的宝可梦。使用后自己\n会陷入昏厥', }, - "furySwipes": { - name: "乱抓", - effect: "用爪子或镰刀等抓对手进行\n攻击。连续攻击2~5次", + 'furySwipes': { + name: '乱抓', + effect: '用爪子或镰刀等抓对手进行\n攻击。连续攻击2~5次', }, - "bonemerang": { - name: "骨头回力镖", - effect: "用手中的骨头投掷对手,来\n回连续2次给予伤害", + 'bonemerang': { + name: '骨头回力镖', + effect: '用手中的骨头投掷对手,来\n回连续2次给予伤害', }, - "rest": { - name: "睡觉", - effect: "连续睡上2回合。回复自己\n的全部HP以及治愈所有异\n常状态", + 'rest': { + name: '睡觉', + effect: '连续睡上2回合。回复自己\n的全部HP以及治愈所有异\n常状态', }, - "rockSlide": { - name: "岩崩", - effect: "将大岩石猛烈地撞向对手进\n行攻击。有时会使对手畏缩", + 'rockSlide': { + name: '岩崩', + effect: '将大岩石猛烈地撞向对手进\n行攻击。有时会使对手畏缩', }, - "hyperFang": { - name: "终结门牙", - effect: "用锋利的门牙牢牢地咬住对\n手进行攻击。有时会使对手\n畏缩", + 'hyperFang': { + name: '终结门牙', + effect: '用锋利的门牙牢牢地咬住对\n手进行攻击。有时会使对手\n畏缩', }, - "sharpen": { - name: "棱角化", - effect: "增加身体的角,变得棱棱角\n角,从而提高自己的攻击", + 'sharpen': { + name: '棱角化', + effect: '增加身体的角,变得棱棱角\n角,从而提高自己的攻击', }, - "conversion": { - name: "纹理", - effect: "将自己的属性转换成和已学\n会的招式中第一个招式相同\n的属性", + 'conversion': { + name: '纹理', + effect: '将自己的属性转换成和已学\n会的招式中第一个招式相同\n的属性', }, - "triAttack": { - name: "三重攻击", - effect: "用3种光线进行攻击。有时\n会让对手陷入麻痹、灼伤或\n冰冻的状态", + 'triAttack': { + name: '三重攻击', + effect: '用3种光线进行攻击。有时\n会让对手陷入麻痹、灼伤或\n冰冻的状态', }, - "superFang": { - name: "愤怒门牙", - effect: "用锋利的门牙猛烈地咬住对\n手进行攻击。对手的HP减\n半", + 'superFang': { + name: '愤怒门牙', + effect: '用锋利的门牙猛烈地咬住对\n手进行攻击。对手的HP减\n半', }, - "slash": { - name: "劈开", - effect: "用爪子或镰刀等劈开对手进\n行攻击。容易击中要害", + 'slash': { + name: '劈开', + effect: '用爪子或镰刀等劈开对手进\n行攻击。容易击中要害', }, - "substitute": { - name: "替身", - effect: "削减少许自己的HP,制造\n分身。分身将成为自己的替\n身", + 'substitute': { + name: '替身', + effect: '削减少许自己的HP,制造\n分身。分身将成为自己的替\n身', }, - "struggle": { - name: "挣扎", - effect: "当自己的PP耗尽时,努力\n挣扎攻击对手。自己也会受\n到少许伤害", + 'struggle': { + name: '挣扎', + effect: '当自己的PP耗尽时,努力\n挣扎攻击对手。自己也会受\n到少许伤害', }, - "sketch": { - name: "写生", - effect: "将对手使用的招式变成自己\n的招式。使用1次后写生消\n失", + 'sketch': { + name: '写生', + effect: '将对手使用的招式变成自己\n的招式。使用1次后写生消\n失', }, - "tripleKick": { - name: "三连踢", - effect: "连续3次踢对手进行攻击。\n每踢中一次,威力就会提高", + 'tripleKick': { + name: '三连踢', + effect: '连续3次踢对手进行攻击。\n每踢中一次,威力就会提高', }, - "thief": { - name: "小偷", - effect: "攻击的同时盗取道具。当自\n己携带道具时,不会去盗取", + 'thief': { + name: '小偷', + effect: '攻击的同时盗取道具。当自\n己携带道具时,不会去盗取', }, - "spiderWeb": { - name: "蛛网", - effect: "将黏糊糊的细丝一层一层缠\n住对手,使其不能从战斗中\n逃走", + 'spiderWeb': { + name: '蛛网', + effect: '将黏糊糊的细丝一层一层缠\n住对手,使其不能从战斗中\n逃走', }, - "mindReader": { - name: "心之眼", - effect: "用心感受对手的行动,下次\n攻击必定会击中对手", + 'mindReader': { + name: '心之眼', + effect: '用心感受对手的行动,下次\n攻击必定会击中对手', }, - "nightmare": { - name: "恶梦", - effect: "让在睡眠状态下的对手做恶\n梦,每回合会缓缓减少HP", + 'nightmare': { + name: '恶梦', + effect: '让在睡眠状态下的对手做恶\n梦,每回合会缓缓减少HP', }, - "flameWheel": { - name: "火焰轮", - effect: "让火焰覆盖全身,猛撞向对\n手进行攻击。有时会让对手\n陷入灼伤状态", + 'flameWheel': { + name: '火焰轮', + effect: '让火焰覆盖全身,猛撞向对\n手进行攻击。有时会让对手\n陷入灼伤状态', }, - "snore": { - name: "打鼾", - effect: "在自己睡觉时,发出噪音进\n行攻击。有时会使对手畏缩", + 'snore': { + name: '打鼾', + effect: '在自己睡觉时,发出噪音进\n行攻击。有时会使对手畏缩', }, - "curse": { - name: "诅咒", - effect: "使用该招式的宝可梦,其属\n性是幽灵属性或其他属性时,\n效果会不一样", + 'curse': { + name: '诅咒', + effect: '使用该招式的宝可梦,其属\n性是幽灵属性或其他属性时,\n效果会不一样', }, - "flail": { - name: "抓狂", - effect: "抓狂般乱打进行攻击。自己\n的HP越少,招式的威力越\n大", + 'flail': { + name: '抓狂', + effect: '抓狂般乱打进行攻击。自己\n的HP越少,招式的威力越\n大', }, - "conversion2": { - name: "纹理2", - effect: "为了可以抵抗对手最后使用\n的招式,从而使自己的属性\n发生变化", + 'conversion2': { + name: '纹理2', + effect: '为了可以抵抗对手最后使用\n的招式,从而使自己的属性\n发生变化', }, - "aeroblast": { - name: "气旋攻击", - effect: "发射空气旋涡进行攻击。容\n易击中要害", + 'aeroblast': { + name: '气旋攻击', + effect: '发射空气旋涡进行攻击。容\n易击中要害', }, - "cottonSpore": { - name: "棉孢子", - effect: "将棉花般柔软的孢子紧贴对\n手,从而大幅降低对手的速\n度", + 'cottonSpore': { + name: '棉孢子', + effect: '将棉花般柔软的孢子紧贴对\n手,从而大幅降低对手的速\n度', }, - "reversal": { - name: "绝处逢生", - effect: "竭尽全力进行攻击。自己的\nHP越少,招式的威力越大", + 'reversal': { + name: '绝处逢生', + effect: '竭尽全力进行攻击。自己的\nHP越少,招式的威力越大', }, - "spite": { - name: "怨恨", - effect: "对对手最后使用的招式怀有\n怨恨,减少4PP该招式", + 'spite': { + name: '怨恨', + effect: '对对手最后使用的招式怀有\n怨恨,减少4PP该招式', }, - "powderSnow": { - name: "细雪", - effect: "将冰冷的细雪吹向对手进行\n攻击。有时会让对手陷入冰\n冻状态", + 'powderSnow': { + name: '细雪', + effect: '将冰冷的细雪吹向对手进行\n攻击。有时会让对手陷入冰\n冻状态', }, - "protect": { - name: "守住", - effect: "完全抵挡对手的攻击。连续\n使出则容易失败", + 'protect': { + name: '守住', + effect: '完全抵挡对手的攻击。连续\n使出则容易失败', }, - "machPunch": { - name: "音速拳", - effect: "以迅雷不及掩耳之势出拳。\n必定能够先制攻击", + 'machPunch': { + name: '音速拳', + effect: '以迅雷不及掩耳之势出拳。\n必定能够先制攻击', }, - "scaryFace": { - name: "可怕面孔", - effect: "用恐怖的表情瞪着对手,使\n其害怕,从而大幅降低对手\n的速度", + 'scaryFace': { + name: '可怕面孔', + effect: '用恐怖的表情瞪着对手,使\n其害怕,从而大幅降低对手\n的速度', }, - "feintAttack": { - name: "出奇一击", - effect: "悄悄地靠近对手,趁其不备\n进行殴打。攻击必定会命中", + 'feintAttack': { + name: '出奇一击', + effect: '悄悄地靠近对手,趁其不备\n进行殴打。攻击必定会命中', }, - "sweetKiss": { - name: "天使之吻", - effect: "像天使般可爱地亲吻对手,\n从而使对手混乱", + 'sweetKiss': { + name: '天使之吻', + effect: '像天使般可爱地亲吻对手,\n从而使对手混乱', }, - "bellyDrum": { - name: "腹鼓", - effect: "将自己的HP减少到最大\nHP的一半,从而最大限度提\n高自己的攻击", + 'bellyDrum': { + name: '腹鼓', + effect: '将自己的HP减少到最大\nHP的一半,从而最大限度提\n高自己的攻击', }, - "sludgeBomb": { - name: "污泥炸弹", - effect: "用污泥投掷对手进行攻击。\n有时会让对手陷入中毒状态", + 'sludgeBomb': { + name: '污泥炸弹', + effect: '用污泥投掷对手进行攻击。\n有时会让对手陷入中毒状态', }, - "mudSlap": { - name: "掷泥", - effect: "向对手的脸等投掷泥块进行\n攻击。会降低对手的命中率", + 'mudSlap': { + name: '掷泥', + effect: '向对手的脸等投掷泥块进行\n攻击。会降低对手的命中率', }, - "octazooka": { - name: "章鱼桶炮", - effect: "向对手的脸等喷出墨汁进行\n攻击。有时会降低对手的命\n中率", + 'octazooka': { + name: '章鱼桶炮', + effect: '向对手的脸等喷出墨汁进行\n攻击。有时会降低对手的命\n中率', }, - "spikes": { - name: "撒菱", - effect: "在对手的脚下扔撒菱。对替\n换出场的对手的宝可梦给予\n伤害", + 'spikes': { + name: '撒菱', + effect: '在对手的脚下扔撒菱。对替\n换出场的对手的宝可梦给予\n伤害', }, - "zapCannon": { - name: "电磁炮", - effect: "发射大炮一样的电流进行攻\n击。让对手陷入麻痹状态", + 'zapCannon': { + name: '电磁炮', + effect: '发射大炮一样的电流进行攻\n击。让对手陷入麻痹状态', }, - "foresight": { - name: "识破", - effect: "使出后对幽灵属性宝可梦没\n有效果的招式以及闪避率高\n的对手,变得能够打中", + 'foresight': { + name: '识破', + effect: '使出后对幽灵属性宝可梦没\n有效果的招式以及闪避率高\n的对手,变得能够打中', }, - "destinyBond": { - name: "同命", - effect: "使出招式后,当受到对手攻\n击陷入昏厥时,对手也会一\n同昏厥。连续使出则会失败", + 'destinyBond': { + name: '同命', + effect: '使出招式后,当受到对手攻\n击陷入昏厥时,对手也会一\n同昏厥。连续使出则会失败', }, - "perishSong": { - name: "终焉之歌", - effect: "倾听歌声的宝可梦经过3回\n合陷入昏厥。替换后效果消\n失", + 'perishSong': { + name: '终焉之歌', + effect: '倾听歌声的宝可梦经过3回\n合陷入昏厥。替换后效果消\n失', }, - "icyWind": { - name: "冰冻之风", - effect: "将结冰的冷气吹向对手进行\n攻击。会降低对手的速度", + 'icyWind': { + name: '冰冻之风', + effect: '将结冰的冷气吹向对手进行\n攻击。会降低对手的速度', }, - "detect": { - name: "看穿", - effect: "完全抵挡对手的攻击。连续\n使出则容易失败", + 'detect': { + name: '看穿', + effect: '完全抵挡对手的攻击。连续\n使出则容易失败', }, - "boneRush": { - name: "骨棒乱打", - effect: "用坚硬的骨头殴打对手进行\n攻击。连续攻击2~5次", + 'boneRush': { + name: '骨棒乱打', + effect: '用坚硬的骨头殴打对手进行\n攻击。连续攻击2~5次', }, - "lockOn": { - name: "锁定", - effect: "紧紧瞄准对手,下次攻击必\n定会打中", + 'lockOn': { + name: '锁定', + effect: '紧紧瞄准对手,下次攻击必\n定会打中', }, - "outrage": { - name: "逆鳞", - effect: "在2~3回合内,乱打一气\n地进行攻击。大闹一番后自\n己会陷入混乱", + 'outrage': { + name: '逆鳞', + effect: '在2~3回合内,乱打一气\n地进行攻击。大闹一番后自\n己会陷入混乱', }, - "sandstorm": { - name: "沙暴", - effect: "在5回合内扬起沙暴,除岩\n石、地面和钢属性以外的宝\n可梦,都会受到伤害。岩石\n属性的特防还会提高", + 'sandstorm': { + name: '沙暴', + effect: '在5回合内扬起沙暴,除岩\n石、地面和钢属性以外的宝\n可梦,都会受到伤害。岩石\n属性的特防还会提高', }, - "gigaDrain": { - name: "终极吸取", - effect: "吸取对手的养分进行攻击。\n可以回复给予对手伤害的一\n半HP", + 'gigaDrain': { + name: '终极吸取', + effect: '吸取对手的养分进行攻击。\n可以回复给予对手伤害的一\n半HP', }, - "endure": { - name: "挺住", - effect: "即使受到攻击,也至少会留\n下1HP。连续使出则容易\n失败", + 'endure': { + name: '挺住', + effect: '即使受到攻击,也至少会留\n下1HP。连续使出则容易\n失败', }, - "charm": { - name: "撒娇", - effect: "可爱地凝视,诱使对手疏忽\n大意,从而大幅降低对手的\n攻击", + 'charm': { + name: '撒娇', + effect: '可爱地凝视,诱使对手疏忽\n大意,从而大幅降低对手的\n攻击', }, - "rollout": { - name: "滚动", - effect: "在5回合内连续滚动攻击对\n手。招式每次击中,威力就\n会提高", + 'rollout': { + name: '滚动', + effect: '在5回合内连续滚动攻击对\n手。招式每次击中,威力就\n会提高', }, - "falseSwipe": { - name: "点到为止", - effect: "对手的HP至少会留下1\nHP,如此般手下留情地攻击", + 'falseSwipe': { + name: '点到为止', + effect: '对手的HP至少会留下1\nHP,如此般手下留情地攻击', }, - "swagger": { - name: "虚张声势", - effect: "激怒对手,使其混乱。因为\n愤怒,对手的攻击会大幅提\n高", + 'swagger': { + name: '虚张声势', + effect: '激怒对手,使其混乱。因为\n愤怒,对手的攻击会大幅提\n高', }, - "milkDrink": { - name: "喝牛奶", - effect: "回复自己最大HP的一半", + 'milkDrink': { + name: '喝牛奶', + effect: '回复自己最大HP的一半', }, - "spark": { - name: "电光", - effect: "让电流覆盖全身,猛撞向对\n手进行攻击。有时会让对手\n陷入麻痹状态", + 'spark': { + name: '电光', + effect: '让电流覆盖全身,猛撞向对\n手进行攻击。有时会让对手\n陷入麻痹状态', }, - "furyCutter": { - name: "连斩", - effect: "用镰刀或爪子等切斩对手进\n行攻击。连续击中,威力就\n会提高", + 'furyCutter': { + name: '连斩', + effect: '用镰刀或爪子等切斩对手进\n行攻击。连续击中,威力就\n会提高', }, - "steelWing": { - name: "钢翼", - effect: "用坚硬的翅膀敲打对手进行\n攻击。有时会提高自己的防\n御", + 'steelWing': { + name: '钢翼', + effect: '用坚硬的翅膀敲打对手进行\n攻击。有时会提高自己的防\n御', }, - "meanLook": { - name: "黑色目光", - effect: "用好似要勾人心魂的黑色目\n光一动不动地凝视对手,使\n其不能从战斗中逃走", + 'meanLook': { + name: '黑色目光', + effect: '用好似要勾人心魂的黑色目\n光一动不动地凝视对手,使\n其不能从战斗中逃走', }, - "attract": { - name: "迷人", - effect: "♂诱惑♀或♀诱惑♂,让对\n手着迷。对手将很难使出招\n式", + 'attract': { + name: '迷人', + effect: '♂诱惑♀或♀诱惑♂,让对\n手着迷。对手将很难使出招\n式', }, - "sleepTalk": { - name: "梦话", - effect: "从自己已学会的招式中任意\n使出1个。只能在自己睡觉\n时使用", + 'sleepTalk': { + name: '梦话', + effect: '从自己已学会的招式中任意\n使出1个。只能在自己睡觉\n时使用', }, - "healBell": { - name: "治愈铃声", - effect: "让同伴听舒适的铃音,从而\n治愈我方全员的异常状态", + 'healBell': { + name: '治愈铃声', + effect: '让同伴听舒适的铃音,从而\n治愈我方全员的异常状态', }, - "return": { - name: "报恩", - effect: "为了训练家而全力攻击对手。\n亲密度越高,威力越大", + 'return': { + name: '报恩', + effect: '为了训练家而全力攻击对手。\n亲密度越高,威力越大', }, - "present": { - name: "礼物", - effect: "递给对手设有圈套的盒子进\n行攻击。也有可能回复对手\nHP", + 'present': { + name: '礼物', + effect: '递给对手设有圈套的盒子进\n行攻击。也有可能回复对手\nHP', }, - "frustration": { - name: "迁怒", - effect: "为了发泄不满而全力攻击对\n手。亲密度越低,威力越大", + 'frustration': { + name: '迁怒', + effect: '为了发泄不满而全力攻击对\n手。亲密度越低,威力越大', }, - "safeguard": { - name: "神秘守护", - effect: "在5回合内被神奇的力量守\n护,从而不会陷入异常状态", + 'safeguard': { + name: '神秘守护', + effect: '在5回合内被神奇的力量守\n护,从而不会陷入异常状态', }, - "painSplit": { - name: "分担痛楚", - effect: "将自己的HP和对手的HP\n相加,然后自己和对手友好\n地平分", + 'painSplit': { + name: '分担痛楚', + effect: '将自己的HP和对手的HP\n相加,然后自己和对手友好\n地平分', }, - "sacredFire": { - name: "神圣之火", - effect: "用神秘的火焰烧尽对手进行\n攻击。有时会让对手陷入灼\n伤状态", + 'sacredFire': { + name: '神圣之火', + effect: '用神秘的火焰烧尽对手进行\n攻击。有时会让对手陷入灼\n伤状态', }, - "magnitude": { - name: "震级", - effect: "晃动地面,攻击自己周围所\n有的宝可梦。招式的威力会\n有各种变化", + 'magnitude': { + name: '震级', + effect: '晃动地面,攻击自己周围所\n有的宝可梦。招式的威力会\n有各种变化', }, - "dynamicPunch": { - name: "爆裂拳", - effect: "使出浑身力气出拳进行攻击。\n必定会使对手混乱", + 'dynamicPunch': { + name: '爆裂拳', + effect: '使出浑身力气出拳进行攻击。\n必定会使对手混乱', }, - "megahorn": { - name: "超级角击", - effect: "用坚硬且华丽的角狠狠地刺\n入对手进行攻击", + 'megahorn': { + name: '超级角击', + effect: '用坚硬且华丽的角狠狠地刺\n入对手进行攻击', }, - "dragonBreath": { - name: "龙息", - effect: "将强烈的气息吹向对手进行\n攻击。有时会让对手陷入麻\n痹状态", + 'dragonBreath': { + name: '龙息', + effect: '将强烈的气息吹向对手进行\n攻击。有时会让对手陷入麻\n痹状态', }, - "batonPass": { - name: "接棒", - effect: "和后备宝可梦进行替换。换\n上的宝可梦能直接继承其能\n力的变化", + 'batonPass': { + name: '接棒', + effect: '和后备宝可梦进行替换。换\n上的宝可梦能直接继承其能\n力的变化', }, - "encore": { - name: "再来一次", - effect: "让对手接受再来一次,连续\n3次使出最后使用的招式", + 'encore': { + name: '再来一次', + effect: '让对手接受再来一次,连续\n3次使出最后使用的招式', }, - "pursuit": { - name: "追打", - effect: "当对手替换宝可梦上场时使\n出此招式的话,能够以2倍\n的威力进行攻击", + 'pursuit': { + name: '追打', + effect: '当对手替换宝可梦上场时使\n出此招式的话,能够以2倍\n的威力进行攻击', }, - "rapidSpin": { - name: "高速旋转", - effect: "通过旋转来攻击对手。可以\n摆脱绑紧、紧束、寄生种子\n等招式。还能提高自己的速\n度", + 'rapidSpin': { + name: '高速旋转', + effect: '通过旋转来攻击对手。可以\n摆脱绑紧、紧束、寄生种子\n等招式。还能提高自己的速\n度', }, - "sweetScent": { - name: "甜甜香气", - effect: "用香气大幅降低对手的闪避\n率", + 'sweetScent': { + name: '甜甜香气', + effect: '用香气大幅降低对手的闪避\n率', }, - "ironTail": { - name: "铁尾", - effect: "使用坚硬的尾巴摔打对手进\n行攻击。有时会降低对手的\n防御", + 'ironTail': { + name: '铁尾', + effect: '使用坚硬的尾巴摔打对手进\n行攻击。有时会降低对手的\n防御', }, - "metalClaw": { - name: "金属爪", - effect: "用钢铁之爪劈开对手进行攻\n击。有时会提高自己的攻击", + 'metalClaw': { + name: '金属爪', + effect: '用钢铁之爪劈开对手进行攻\n击。有时会提高自己的攻击', }, - "vitalThrow": { - name: "借力摔", - effect: "会在对手之后进行攻击。但\n是自己的攻击必定会命中", + 'vitalThrow': { + name: '借力摔', + effect: '会在对手之后进行攻击。但\n是自己的攻击必定会命中', }, - "morningSun": { - name: "晨光", - effect: "回复自己的HP。根据天气\n的不同,回复量也会有所变\n化", + 'morningSun': { + name: '晨光', + effect: '回复自己的HP。根据天气\n的不同,回复量也会有所变\n化', }, - "synthesis": { - name: "光合作用", - effect: "回复自己的HP。根据天气\n的不同,回复量也会有所变\n化", + 'synthesis': { + name: '光合作用', + effect: '回复自己的HP。根据天气\n的不同,回复量也会有所变\n化', }, - "moonlight": { - name: "月光", - effect: "回复自己的HP。根据天气\n的不同,回复量也会有所变\n化", + 'moonlight': { + name: '月光', + effect: '回复自己的HP。根据天气\n的不同,回复量也会有所变\n化', }, - "hiddenPower": { - name: "觉醒力量", - effect: "招式的属性会随着使用此招\n式的宝可梦而改变", + 'hiddenPower': { + name: '觉醒力量', + effect: '招式的属性会随着使用此招\n式的宝可梦而改变', }, - "crossChop": { - name: "十字劈", - effect: "用两手呈十字劈打对手进行\n攻击。容易击中要害", + 'crossChop': { + name: '十字劈', + effect: '用两手呈十字劈打对手进行\n攻击。容易击中要害', }, - "twister": { - name: "龙卷风", - effect: "兴起龙卷风,将对手卷入进\n行攻击。有时会使对手畏缩", + 'twister': { + name: '龙卷风', + effect: '兴起龙卷风,将对手卷入进\n行攻击。有时会使对手畏缩', }, - "rainDance": { - name: "求雨", - effect: "在5回合内一直降雨,从而\n提高水属性的招式威力。火\n属性的招式威力则降低", + 'rainDance': { + name: '求雨', + effect: '在5回合内一直降雨,从而\n提高水属性的招式威力。火\n属性的招式威力则降低', }, - "sunnyDay": { - name: "大晴天", - effect: "在5回合内让日照变得强烈,\n从而提高火属性的招式威\n力。水属性的招式威力则降\n低", + 'sunnyDay': { + name: '大晴天', + effect: '在5回合内让日照变得强烈,\n从而提高火属性的招式威\n力。水属性的招式威力则降\n低', }, - "crunch": { - name: "咬碎", - effect: "用利牙咬碎对手进行攻击。\n有时会降低对手的防御", + 'crunch': { + name: '咬碎', + effect: '用利牙咬碎对手进行攻击。\n有时会降低对手的防御', }, - "mirrorCoat": { - name: "镜面反射", - effect: "从对手那里受到特殊攻击的\n伤害将以2倍返还给同一个\n对手", + 'mirrorCoat': { + name: '镜面反射', + effect: '从对手那里受到特殊攻击的\n伤害将以2倍返还给同一个\n对手', }, - "psychUp": { - name: "自我暗示", - effect: "向自己施以自我暗示,将能\n力变化的状态变得和对手一\n样", + 'psychUp': { + name: '自我暗示', + effect: '向自己施以自我暗示,将能\n力变化的状态变得和对手一\n样', }, - "extremeSpeed": { - name: "神速", - effect: "以迅雷不及掩耳之势猛撞向\n对手进行攻击。必定能够先\n制攻击", + 'extremeSpeed': { + name: '神速', + effect: '以迅雷不及掩耳之势猛撞向\n对手进行攻击。必定能够先\n制攻击', }, - "ancientPower": { - name: "原始之力", - effect: "用原始之力进行攻击。有时\n会提高自己所有的能力", + 'ancientPower': { + name: '原始之力', + effect: '用原始之力进行攻击。有时\n会提高自己所有的能力', }, - "shadowBall": { - name: "暗影球", - effect: "投掷一团黑影进行攻击。有\n时会降低对手的特防", + 'shadowBall': { + name: '暗影球', + effect: '投掷一团黑影进行攻击。有\n时会降低对手的特防', }, - "futureSight": { - name: "预知未来", - effect: "在使用招式2回合后,向对\n手发送一团念力进行攻击", + 'futureSight': { + name: '预知未来', + effect: '在使用招式2回合后,向对\n手发送一团念力进行攻击', }, - "rockSmash": { - name: "碎岩", - effect: "用拳头进行攻击。有时会降\n低对手的防御", + 'rockSmash': { + name: '碎岩', + effect: '用拳头进行攻击。有时会降\n低对手的防御', }, - "whirlpool": { - name: "潮旋", - effect: "将对手困在激烈的水流旋涡\n中,在4~5回合内进行攻\n击", + 'whirlpool': { + name: '潮旋', + effect: '将对手困在激烈的水流旋涡\n中,在4~5回合内进行攻\n击', }, - "beatUp": { - name: "围攻", - effect: "我方全员进行攻击。同行的\n宝可梦越多,招式的攻击次\n数越多", + 'beatUp': { + name: '围攻', + effect: '我方全员进行攻击。同行的\n宝可梦越多,招式的攻击次\n数越多', }, - "fakeOut": { - name: "击掌奇袭", - effect: "进行先制攻击,使对手畏缩。\n要在出场后立刻使出才能\n成功", + 'fakeOut': { + name: '击掌奇袭', + effect: '进行先制攻击,使对手畏缩。\n要在出场后立刻使出才能\n成功', }, - "uproar": { - name: "吵闹", - effect: "在3回合内大吵大闹攻击对\n手。在此期间谁都不能入眠", + 'uproar': { + name: '吵闹', + effect: '在3回合内大吵大闹攻击对\n手。在此期间谁都不能入眠', }, - "stockpile": { - name: "蓄力", - effect: "积蓄力量,提高自己的防御\n和特防。最多积蓄3次", + 'stockpile': { + name: '蓄力', + effect: '积蓄力量,提高自己的防御\n和特防。最多积蓄3次', }, - "spitUp": { - name: "喷出", - effect: "将积蓄的力量撞向对手进行\n攻击。积蓄得越多,威力越\n大", + 'spitUp': { + name: '喷出', + effect: '将积蓄的力量撞向对手进行\n攻击。积蓄得越多,威力越\n大', }, - "swallow": { - name: "吞下", - effect: "将积蓄的力量吞下,从而回\n复自己的HP。积蓄得越多,\n回复越大", + 'swallow': { + name: '吞下', + effect: '将积蓄的力量吞下,从而回\n复自己的HP。积蓄得越多,\n回复越大', }, - "heatWave": { - name: "热风", - effect: "将炎热的气息吹向对手进行\n攻击。有时会让对手陷入灼\n伤状态", + 'heatWave': { + name: '热风', + effect: '将炎热的气息吹向对手进行\n攻击。有时会让对手陷入灼\n伤状态', }, - "hail": { - name: "冰雹", - effect: "在5回合内一直降冰雹,除\n冰属性的宝可梦以外,给予\n全体宝可梦伤害", + 'hail': { + name: '冰雹', + effect: '在5回合内一直降冰雹,除\n冰属性的宝可梦以外,给予\n全体宝可梦伤害', }, - "torment": { - name: "无理取闹", - effect: "向对手无理取闹,令其不能\n连续2次使出相同招式", + 'torment': { + name: '无理取闹', + effect: '向对手无理取闹,令其不能\n连续2次使出相同招式', }, - "flatter": { - name: "吹捧", - effect: "吹捧对手,使其混乱。同时\n还会提高对手的特攻", + 'flatter': { + name: '吹捧', + effect: '吹捧对手,使其混乱。同时\n还会提高对手的特攻', }, - "willOWisp": { - name: "磷火", - effect: "放出怪异的火焰,从而让对\n手陷入灼伤状态", + 'willOWisp': { + name: '磷火', + effect: '放出怪异的火焰,从而让对\n手陷入灼伤状态', }, - "memento": { - name: "临别礼物", - effect: "虽然会使自己陷入昏厥,但\n是能够大幅降低对手的攻击\n和特攻", + 'memento': { + name: '临别礼物', + effect: '虽然会使自己陷入昏厥,但\n是能够大幅降低对手的攻击\n和特攻', }, - "facade": { - name: "硬撑", - effect: "当自己处于中毒、麻痹、灼\n伤状态时,向对手使出此招\n式的话,威力会变成2倍", + 'facade': { + name: '硬撑', + effect: '当自己处于中毒、麻痹、灼\n伤状态时,向对手使出此招\n式的话,威力会变成2倍', }, - "focusPunch": { - name: "真气拳", - effect: "集中精神出拳。在招式使出\n前若受到攻击则会失败", + 'focusPunch': { + name: '真气拳', + effect: '集中精神出拳。在招式使出\n前若受到攻击则会失败', }, - "smellingSalts": { - name: "清醒", - effect: "对于麻痹状态下的对手,威\n力会变成2倍。但相反对手\n的麻痹也会被治愈", + 'smellingSalts': { + name: '清醒', + effect: '对于麻痹状态下的对手,威\n力会变成2倍。但相反对手\n的麻痹也会被治愈', }, - "followMe": { - name: "看我嘛", - effect: "引起对手的注意,将对手的\n攻击全部转移到自己身上", + 'followMe': { + name: '看我嘛', + effect: '引起对手的注意,将对手的\n攻击全部转移到自己身上', }, - "naturePower": { - name: "自然之力", - effect: "用自然之力进行攻击。根据\n所使用场所的不同,使出的\n招式也会有所变化", + 'naturePower': { + name: '自然之力', + effect: '用自然之力进行攻击。根据\n所使用场所的不同,使出的\n招式也会有所变化', }, - "charge": { - name: "充电", - effect: "变为充电状态,提高下次使\n出的电属性的招式威力。自\n己的特防也会提高", + 'charge': { + name: '充电', + effect: '变为充电状态,提高下次使\n出的电属性的招式威力。自\n己的特防也会提高', }, - "taunt": { - name: "挑衅", - effect: "使对手愤怒。在3回合内让\n对手只能使出给予伤害的招\n式", + 'taunt': { + name: '挑衅', + effect: '使对手愤怒。在3回合内让\n对手只能使出给予伤害的招\n式', }, - "helpingHand": { - name: "帮助", - effect: "帮助伙伴。被帮助的宝可梦,\n其招式威力变得比平时大", + 'helpingHand': { + name: '帮助', + effect: '帮助伙伴。被帮助的宝可梦,\n其招式威力变得比平时大', }, - "trick": { - name: "戏法", - effect: "抓住对手的空隙,交换自己\n和对手的持有物", + 'trick': { + name: '戏法', + effect: '抓住对手的空隙,交换自己\n和对手的持有物', }, - "rolePlay": { - name: "扮演", - effect: "扮演对手,让自己的特性变\n得和对手相同", + 'rolePlay': { + name: '扮演', + effect: '扮演对手,让自己的特性变\n得和对手相同', }, - "wish": { - name: "祈愿", - effect: "在下一回合回复自己或是替\n换出场的宝可梦最大HP的\n一半", + 'wish': { + name: '祈愿', + effect: '在下一回合回复自己或是替\n换出场的宝可梦最大HP的\n一半', }, - "assist": { - name: "借助", - effect: "向同伴紧急求助,从我方宝\n可梦已学会的招式中随机使\n用1个", + 'assist': { + name: '借助', + effect: '向同伴紧急求助,从我方宝\n可梦已学会的招式中随机使\n用1个', }, - "ingrain": { - name: "扎根", - effect: "在大地上扎根,每回合回复\n自己的HP。因为扎根了,\n所以不能替换宝可梦", + 'ingrain': { + name: '扎根', + effect: '在大地上扎根,每回合回复\n自己的HP。因为扎根了,\n所以不能替换宝可梦', }, - "superpower": { - name: "蛮力", - effect: "发挥惊人的力量攻击对手。\n自己的攻击和防御会降低", + 'superpower': { + name: '蛮力', + effect: '发挥惊人的力量攻击对手。\n自己的攻击和防御会降低', }, - "magicCoat": { - name: "魔法反射", - effect: "当对手使出会变成异常状态\n的招式或寄生种子等时,会\n将对手的招式反射回去", + 'magicCoat': { + name: '魔法反射', + effect: '当对手使出会变成异常状态\n的招式或寄生种子等时,会\n将对手的招式反射回去', }, - "recycle": { - name: "回收利用", - effect: "使战斗中已经消耗掉的自己\n的持有物再生,并可以再次\n使用", + 'recycle': { + name: '回收利用', + effect: '使战斗中已经消耗掉的自己\n的持有物再生,并可以再次\n使用', }, - "revenge": { - name: "报复", - effect: "如果受到对手的招式攻击,\n就能给予对手2倍的伤害", + 'revenge': { + name: '报复', + effect: '如果受到对手的招式攻击,\n就能给予对手2倍的伤害', }, - "brickBreak": { - name: "劈瓦", - effect: "将手刀猛烈地挥下攻击对手。\n还可以破坏光墙和反射壁\n等", + 'brickBreak': { + name: '劈瓦', + effect: '将手刀猛烈地挥下攻击对手。\n还可以破坏光墙和反射壁\n等', }, - "yawn": { - name: "哈欠", - effect: "打个大哈欠引起睡意。在下\n一回合让对手陷入睡眠状态", + 'yawn': { + name: '哈欠', + effect: '打个大哈欠引起睡意。在下\n一回合让对手陷入睡眠状态', }, - "knockOff": { - name: "拍落", - effect: "拍落对手的持有物,直到战\n斗结束都不能使用。对手携\n带道具时会增加伤害", + 'knockOff': { + name: '拍落', + effect: '拍落对手的持有物,直到战\n斗结束都不能使用。对手携\n带道具时会增加伤害', }, - "endeavor": { - name: "蛮干", - effect: "给予伤害,使对手的HP变\n得和自己的HP一样", + 'endeavor': { + name: '蛮干', + effect: '给予伤害,使对手的HP变\n得和自己的HP一样', }, - "eruption": { - name: "喷火", - effect: "爆发怒火攻击对手。自己的\nHP越少,招式的威力越小", + 'eruption': { + name: '喷火', + effect: '爆发怒火攻击对手。自己的\nHP越少,招式的威力越小', }, - "skillSwap": { - name: "特性互换", - effect: "利用超能力互换自己和对手\n的特性", + 'skillSwap': { + name: '特性互换', + effect: '利用超能力互换自己和对手\n的特性', }, - "imprison": { - name: "封印", - effect: "如果对手有和自己相同的招\n式,那么只有对手无法使用\n该招式", + 'imprison': { + name: '封印', + effect: '如果对手有和自己相同的招\n式,那么只有对手无法使用\n该招式', }, - "refresh": { - name: "焕然一新", - effect: "让身体休息,治愈自己身上\n所中的毒、麻痹、灼伤的异\n常状态", + 'refresh': { + name: '焕然一新', + effect: '让身体休息,治愈自己身上\n所中的毒、麻痹、灼伤的异\n常状态', }, - "grudge": { - name: "怨念", - effect: "因对手的招式而陷入昏厥时\n给对手施加怨念,让该招式\n的PP变成0", + 'grudge': { + name: '怨念', + effect: '因对手的招式而陷入昏厥时\n给对手施加怨念,让该招式\n的PP变成0', }, - "snatch": { - name: "抢夺", - effect: "将对手打算使用的回复招式\n或能力变化招式夺为己用", + 'snatch': { + name: '抢夺', + effect: '将对手打算使用的回复招式\n或能力变化招式夺为己用', }, - "secretPower": { - name: "秘密之力", - effect: "根据使用场所不同,该招式\n的追加效果也会有所变化", + 'secretPower': { + name: '秘密之力', + effect: '根据使用场所不同,该招式\n的追加效果也会有所变化', }, - "dive": { - name: "潜水", - effect: "第1回合潜入水中,第2回\n合浮上来进行攻击", + 'dive': { + name: '潜水', + effect: '第1回合潜入水中,第2回\n合浮上来进行攻击', }, - "armThrust": { - name: "猛推", - effect: "用张开着的双手猛推对手进\n行攻击。连续攻击2~5次", + 'armThrust': { + name: '猛推', + effect: '用张开着的双手猛推对手进\n行攻击。连续攻击2~5次', }, - "camouflage": { - name: "保护色", - effect: "根据所在场所不同,如水边\n、草丛和洞窟等,可以改变\n自己的属性", + 'camouflage': { + name: '保护色', + effect: '根据所在场所不同,如水边\n、草丛和洞窟等,可以改变\n自己的属性', }, - "tailGlow": { - name: "萤火", - effect: "凝视闪烁的光芒,集中自己\n的精神,从而巨幅提高特攻", + 'tailGlow': { + name: '萤火', + effect: '凝视闪烁的光芒,集中自己\n的精神,从而巨幅提高特攻', }, - "lusterPurge": { - name: "洁净光芒", - effect: "释放耀眼的光芒进行攻击。\n有时会降低对手的特防", + 'lusterPurge': { + name: '洁净光芒', + effect: '释放耀眼的光芒进行攻击。\n有时会降低对手的特防', }, - "mistBall": { - name: "薄雾球", - effect: "用围绕着雾状羽毛的球进行\n攻击。有时会降低对手的特\n攻", + 'mistBall': { + name: '薄雾球', + effect: '用围绕着雾状羽毛的球进行\n攻击。有时会降低对手的特\n攻', }, - "featherDance": { - name: "羽毛舞", - effect: "撒出羽毛,笼罩在对手的周\n围。大幅降低对手的攻击", + 'featherDance': { + name: '羽毛舞', + effect: '撒出羽毛,笼罩在对手的周\n围。大幅降低对手的攻击', }, - "teeterDance": { - name: "摇晃舞", - effect: "摇摇晃晃地跳起舞蹈,让自\n己周围的宝可梦陷入混乱状\n态", + 'teeterDance': { + name: '摇晃舞', + effect: '摇摇晃晃地跳起舞蹈,让自\n己周围的宝可梦陷入混乱状\n态', }, - "blazeKick": { - name: "火焰踢", - effect: "攻击对手后,有时会使其陷\n入灼伤状态。也容易击中要\n害", + 'blazeKick': { + name: '火焰踢', + effect: '攻击对手后,有时会使其陷\n入灼伤状态。也容易击中要\n害', }, - "mudSport": { - name: "玩泥巴", - effect: "一旦使用此招式,周围就会\n弄得到处是泥。在5回合内\n减弱电属性的招式", + 'mudSport': { + name: '玩泥巴', + effect: '一旦使用此招式,周围就会\n弄得到处是泥。在5回合内\n减弱电属性的招式', }, - "iceBall": { - name: "冰球", - effect: "在5回合内攻击对手。招式\n每次击中,威力就会提高", + 'iceBall': { + name: '冰球', + effect: '在5回合内攻击对手。招式\n每次击中,威力就会提高', }, - "needleArm": { - name: "尖刺臂", - effect: "用带刺的手臂猛烈地挥舞进\n行攻击。有时会使对手畏缩", + 'needleArm': { + name: '尖刺臂', + effect: '用带刺的手臂猛烈地挥舞进\n行攻击。有时会使对手畏缩', }, - "slackOff": { - name: "偷懒", - effect: "偷懒休息。回复自己最大\nHP的一半", + 'slackOff': { + name: '偷懒', + effect: '偷懒休息。回复自己最大\nHP的一半', }, - "hyperVoice": { - name: "巨声", - effect: "给予对手又吵又响的巨大震\n动进行攻击", + 'hyperVoice': { + name: '巨声', + effect: '给予对手又吵又响的巨大震\n动进行攻击', }, - "poisonFang": { - name: "剧毒牙", - effect: "用有毒的牙齿咬住对手进行\n攻击。有时会使对手中剧毒", + 'poisonFang': { + name: '剧毒牙', + effect: '用有毒的牙齿咬住对手进行\n攻击。有时会使对手中剧毒', }, - "crushClaw": { - name: "撕裂爪", - effect: "用坚硬的锐爪劈开对手进行\n攻击。有时会降低对手的防\n御", + 'crushClaw': { + name: '撕裂爪', + effect: '用坚硬的锐爪劈开对手进行\n攻击。有时会降低对手的防\n御', }, - "blastBurn": { - name: "爆炸烈焰", - effect: "用爆炸的火焰烧尽对手进行\n攻击。下一回合自己将无法\n动弹", + 'blastBurn': { + name: '爆炸烈焰', + effect: '用爆炸的火焰烧尽对手进行\n攻击。下一回合自己将无法\n动弹', }, - "hydroCannon": { - name: "加农水炮", - effect: "向对手喷射水炮进行攻击。\n下一回合自己将无法动弹", + 'hydroCannon': { + name: '加农水炮', + effect: '向对手喷射水炮进行攻击。\n下一回合自己将无法动弹', }, - "meteorMash": { - name: "彗星拳", - effect: "使出彗星般的拳头攻击对手。\n有时会提高自己的攻击", + 'meteorMash': { + name: '彗星拳', + effect: '使出彗星般的拳头攻击对手。\n有时会提高自己的攻击', }, - "astonish": { - name: "惊吓", - effect: "用尖叫声等突然惊吓对手进\n行攻击。有时会使对手畏缩", + 'astonish': { + name: '惊吓', + effect: '用尖叫声等突然惊吓对手进\n行攻击。有时会使对手畏缩', }, - "weatherBall": { - name: "气象球", - effect: "根据使用时的天气,招式属\n性和威力会改变", + 'weatherBall': { + name: '气象球', + effect: '根据使用时的天气,招式属\n性和威力会改变', }, - "aromatherapy": { - name: "芳香治疗", - effect: "让同伴闻沁人心脾的香气,\n从而治愈我方全员的异常状\n态", + 'aromatherapy': { + name: '芳香治疗', + effect: '让同伴闻沁人心脾的香气,\n从而治愈我方全员的异常状\n态', }, - "fakeTears": { - name: "假哭", - effect: "装哭流泪。使对手不知所措,\n从而大幅降低对手的特防", + 'fakeTears': { + name: '假哭', + effect: '装哭流泪。使对手不知所措,\n从而大幅降低对手的特防', }, - "airCutter": { - name: "空气利刃", - effect: "用锐利的风切斩对手进行攻\n击。容易击中要害", + 'airCutter': { + name: '空气利刃', + effect: '用锐利的风切斩对手进行攻\n击。容易击中要害', }, - "overheat": { - name: "过热", - effect: "使出全部力量攻击对手。使\n用之后会因为反作用力,自\n己的特攻大幅降低", + 'overheat': { + name: '过热', + effect: '使出全部力量攻击对手。使\n用之后会因为反作用力,自\n己的特攻大幅降低', }, - "odorSleuth": { - name: "气味侦测", - effect: "使出后对幽灵属性宝可梦没\n有效果的招式以及闪避率高\n的对手,变得能够打中", + 'odorSleuth': { + name: '气味侦测', + effect: '使出后对幽灵属性宝可梦没\n有效果的招式以及闪避率高\n的对手,变得能够打中', }, - "rockTomb": { - name: "岩石封锁", - effect: "投掷岩石进行攻击。封住对\n手的行动,从而降低速度", + 'rockTomb': { + name: '岩石封锁', + effect: '投掷岩石进行攻击。封住对\n手的行动,从而降低速度', }, - "silverWind": { - name: "银色旋风", - effect: "在风中掺入鳞粉攻击对手。\n有时会提高自己的全部能力", + 'silverWind': { + name: '银色旋风', + effect: '在风中掺入鳞粉攻击对手。\n有时会提高自己的全部能力', }, - "metalSound": { - name: "金属音", - effect: "让对手听摩擦金属般讨厌的\n声音。大幅降低对手的特防", + 'metalSound': { + name: '金属音', + effect: '让对手听摩擦金属般讨厌的\n声音。大幅降低对手的特防', }, - "grassWhistle": { - name: "草笛", - effect: "让对手听舒适的笛声,从而\n陷入睡眠状态", + 'grassWhistle': { + name: '草笛', + effect: '让对手听舒适的笛声,从而\n陷入睡眠状态', }, - "tickle": { - name: "挠痒", - effect: "给对手挠痒,使其发笑,从\n而降低对手的攻击和防御", + 'tickle': { + name: '挠痒', + effect: '给对手挠痒,使其发笑,从\n而降低对手的攻击和防御', }, - "cosmicPower": { - name: "宇宙力量", - effect: "汲取宇宙中神秘的力量,从\n而提高自己的防御和特防", + 'cosmicPower': { + name: '宇宙力量', + effect: '汲取宇宙中神秘的力量,从\n而提高自己的防御和特防', }, - "waterSpout": { - name: "喷水", - effect: "掀起潮水进行攻击。自己的\nHP越少,招式的威力越小", + 'waterSpout': { + name: '喷水', + effect: '掀起潮水进行攻击。自己的\nHP越少,招式的威力越小', }, - "signalBeam": { - name: "信号光束", - effect: "发射神奇的光线进行攻击。\n有时会使对手混乱", + 'signalBeam': { + name: '信号光束', + effect: '发射神奇的光线进行攻击。\n有时会使对手混乱', }, - "shadowPunch": { - name: "暗影拳", - effect: "使出混影之拳。攻击必定会\n命中", + 'shadowPunch': { + name: '暗影拳', + effect: '使出混影之拳。攻击必定会\n命中', }, - "extrasensory": { - name: "神通力", - effect: "发出看不见的神奇力量进行\n攻击。有时会使对手畏缩", + 'extrasensory': { + name: '神通力', + effect: '发出看不见的神奇力量进行\n攻击。有时会使对手畏缩', }, - "skyUppercut": { - name: "冲天拳", - effect: "用冲向天空般高高的上勾拳\n顶起对手进行攻击", + 'skyUppercut': { + name: '冲天拳', + effect: '用冲向天空般高高的上勾拳\n顶起对手进行攻击', }, - "sandTomb": { - name: "流沙深渊", - effect: "将对手困在铺天盖地的沙暴\n中,在4~5回合内进行攻\n击", + 'sandTomb': { + name: '流沙深渊', + effect: '将对手困在铺天盖地的沙暴\n中,在4~5回合内进行攻\n击', }, - "sheerCold": { - name: "绝对零度", - effect: "给对手一击昏厥。如果是冰\n属性以外的宝可梦使用,就\n会难以打中", + 'sheerCold': { + name: '绝对零度', + effect: '给对手一击昏厥。如果是冰\n属性以外的宝可梦使用,就\n会难以打中', }, - "muddyWater": { - name: "浊流", - effect: "向对手喷射浑浊的水进行攻\n击。有时会降低对手的命中\n率", + 'muddyWater': { + name: '浊流', + effect: '向对手喷射浑浊的水进行攻\n击。有时会降低对手的命中\n率', }, - "bulletSeed": { - name: "种子机关枪", - effect: "向对手猛烈地发射种子进行\n攻击。连续攻击2~5次", + 'bulletSeed': { + name: '种子机关枪', + effect: '向对手猛烈地发射种子进行\n攻击。连续攻击2~5次', }, - "aerialAce": { - name: "燕返", - effect: "以敏捷的动作戏弄对手后进\n行切斩。攻击必定会命中", + 'aerialAce': { + name: '燕返', + effect: '以敏捷的动作戏弄对手后进\n行切斩。攻击必定会命中', }, - "icicleSpear": { - name: "冰锥", - effect: "向对手发射锋利的冰柱进行\n攻击。连续攻击2~5次", + 'icicleSpear': { + name: '冰锥', + effect: '向对手发射锋利的冰柱进行\n攻击。连续攻击2~5次', }, - "ironDefense": { - name: "铁壁", - effect: "将皮肤变得坚硬如铁,从而\n大幅提高自己的防御", + 'ironDefense': { + name: '铁壁', + effect: '将皮肤变得坚硬如铁,从而\n大幅提高自己的防御', }, - "block": { - name: "挡路", - effect: "张开双手进行阻挡,封住对\n手的退路,使其不能逃走", + 'block': { + name: '挡路', + effect: '张开双手进行阻挡,封住对\n手的退路,使其不能逃走', }, - "howl": { - name: "长嚎", - effect: "大声吼叫提高气势,从而提\n高自己和同伴的攻击", + 'howl': { + name: '长嚎', + effect: '大声吼叫提高气势,从而提\n高自己和同伴的攻击', }, - "dragonClaw": { - name: "龙爪", - effect: "用尖锐的巨爪劈开对手进行\n攻击", + 'dragonClaw': { + name: '龙爪', + effect: '用尖锐的巨爪劈开对手进行\n攻击', }, - "frenzyPlant": { - name: "疯狂植物", - effect: "用大树摔打对手进行攻击。\n下一回合自己将无法动弹", + 'frenzyPlant': { + name: '疯狂植物', + effect: '用大树摔打对手进行攻击。\n下一回合自己将无法动弹', }, - "bulkUp": { - name: "健美", - effect: "使出全身力气绷紧肌肉,从\n而提高自己的攻击和防御", + 'bulkUp': { + name: '健美', + effect: '使出全身力气绷紧肌肉,从\n而提高自己的攻击和防御', }, - "bounce": { - name: "弹跳", - effect: "弹跳到高高的空中,第2回\n合攻击对手。有时会让对手\n陷入麻痹状态", + 'bounce': { + name: '弹跳', + effect: '弹跳到高高的空中,第2回\n合攻击对手。有时会让对手\n陷入麻痹状态', }, - "mudShot": { - name: "泥巴射击", - effect: "向对手投掷泥块进行攻击。\n同时降低对手的速度", + 'mudShot': { + name: '泥巴射击', + effect: '向对手投掷泥块进行攻击。\n同时降低对手的速度', }, - "poisonTail": { - name: "毒尾", - effect: "用尾巴拍打。有时会让对手\n陷入中毒状态,也容易击中\n要害", + 'poisonTail': { + name: '毒尾', + effect: '用尾巴拍打。有时会让对手\n陷入中毒状态,也容易击中\n要害', }, - "covet": { - name: "渴望", - effect: "一边可爱地撒娇,一边靠近\n对手进行攻击,还能夺取对\n手携带的道具", + 'covet': { + name: '渴望', + effect: '一边可爱地撒娇,一边靠近\n对手进行攻击,还能夺取对\n手携带的道具', }, - "voltTackle": { - name: "伏特攻击", - effect: "让电流覆盖全身猛撞向对手。\n自己也会受到不小的伤害。\n有时会让对手陷入麻痹状\n态", + 'voltTackle': { + name: '伏特攻击', + effect: '让电流覆盖全身猛撞向对手。\n自己也会受到不小的伤害。\n有时会让对手陷入麻痹状\n态', }, - "magicalLeaf": { - name: "魔法叶", - effect: "散落可以追踪对手的神奇叶\n片。攻击必定会命中", + 'magicalLeaf': { + name: '魔法叶', + effect: '散落可以追踪对手的神奇叶\n片。攻击必定会命中', }, - "waterSport": { - name: "玩水", - effect: "用水湿透周围。在5回合内\n减弱火属性的招式", + 'waterSport': { + name: '玩水', + effect: '用水湿透周围。在5回合内\n减弱火属性的招式', }, - "calmMind": { - name: "冥想", - effect: "静心凝神,从而提高自己的\n特攻和特防", + 'calmMind': { + name: '冥想', + effect: '静心凝神,从而提高自己的\n特攻和特防', }, - "leafBlade": { - name: "叶刃", - effect: "像用剑一般操纵叶片切斩对\n手进行攻击。容易击中要害", + 'leafBlade': { + name: '叶刃', + effect: '像用剑一般操纵叶片切斩对\n手进行攻击。容易击中要害', }, - "dragonDance": { - name: "龙之舞", - effect: "激烈地跳起神秘且强有力的\n舞蹈。从而提高自己的攻击\n和速度", + 'dragonDance': { + name: '龙之舞', + effect: '激烈地跳起神秘且强有力的\n舞蹈。从而提高自己的攻击\n和速度', }, - "rockBlast": { - name: "岩石爆击", - effect: "向对手发射坚硬的岩石进行\n攻击。连续攻击2~5次", + 'rockBlast': { + name: '岩石爆击', + effect: '向对手发射坚硬的岩石进行\n攻击。连续攻击2~5次', }, - "shockWave": { - name: "电击波", - effect: "向对手快速发出电击。攻击\n必定会命中", + 'shockWave': { + name: '电击波', + effect: '向对手快速发出电击。攻击\n必定会命中', }, - "waterPulse": { - name: "水之波动", - effect: "用水的震动攻击对手。有时\n会使对手混乱", + 'waterPulse': { + name: '水之波动', + effect: '用水的震动攻击对手。有时\n会使对手混乱', }, - "doomDesire": { - name: "破灭之愿", - effect: "使用招式2回合后,会用无\n数道光束攻击对手", + 'doomDesire': { + name: '破灭之愿', + effect: '使用招式2回合后,会用无\n数道光束攻击对手', }, - "psychoBoost": { - name: "精神突进", - effect: "使出全部力量攻击对手。使\n用之后会因为反作用力,自\n己的特攻大幅降低", + 'psychoBoost': { + name: '精神突进', + effect: '使出全部力量攻击对手。使\n用之后会因为反作用力,自\n己的特攻大幅降低', }, - "roost": { - name: "羽栖", - effect: "降到地面,使身体休息。回\n复自己最大HP的一半", + 'roost': { + name: '羽栖', + effect: '降到地面,使身体休息。回\n复自己最大HP的一半', }, - "gravity": { - name: "重力", - effect: "在5回合内,飘浮特性和飞\n行属性的宝可梦会被地面属\n性的招式击中。飞向空中的\n招式也将无法使用", + 'gravity': { + name: '重力', + effect: '在5回合内,飘浮特性和飞\n行属性的宝可梦会被地面属\n性的招式击中。飞向空中的\n招式也将无法使用', }, - "miracleEye": { - name: "奇迹之眼", - effect: "使出后对恶属性宝可梦没有\n效果的招式以及闪避率高的\n对手,变得能够打中", + 'miracleEye': { + name: '奇迹之眼', + effect: '使出后对恶属性宝可梦没有\n效果的招式以及闪避率高的\n对手,变得能够打中', }, - "wakeUpSlap": { - name: "唤醒巴掌", - effect: "给予睡眠状态下的对手较大\n的伤害。但相反对手会从睡\n眠中醒过来", + 'wakeUpSlap': { + name: '唤醒巴掌', + effect: '给予睡眠状态下的对手较大\n的伤害。但相反对手会从睡\n眠中醒过来', }, - "hammerArm": { - name: "臂锤", - effect: "挥舞强力而沉重的拳头,给\n予对手伤害。自己的速度会\n降低", + 'hammerArm': { + name: '臂锤', + effect: '挥舞强力而沉重的拳头,给\n予对手伤害。自己的速度会\n降低', }, - "gyroBall": { - name: "陀螺球", - effect: "让身体高速旋转并撞击对手。\n速度比对手越慢,威力越\n大", + 'gyroBall': { + name: '陀螺球', + effect: '让身体高速旋转并撞击对手。\n速度比对手越慢,威力越\n大', }, - "healingWish": { - name: "治愈之愿", - effect: "虽然自己陷入昏厥,但可以\n治愈后备上场的宝可梦的异\n常状态以及回复HP", + 'healingWish': { + name: '治愈之愿', + effect: '虽然自己陷入昏厥,但可以\n治愈后备上场的宝可梦的异\n常状态以及回复HP', }, - "brine": { - name: "盐水", - effect: "当对手的HP负伤到一半左\n右时,招式威力会变成2倍", + 'brine': { + name: '盐水', + effect: '当对手的HP负伤到一半左\n右时,招式威力会变成2倍', }, - "naturalGift": { - name: "自然之恩", - effect: "从树果上获得力量进行攻击。\n根据携带的树果,招式属\n性和威力会改变", + 'naturalGift': { + name: '自然之恩', + effect: '从树果上获得力量进行攻击。\n根据携带的树果,招式属\n性和威力会改变', }, - "feint": { - name: "佯攻", - effect: "能够攻击正在使用守住或看\n穿等招式的对手。解除其守\n护效果", + 'feint': { + name: '佯攻', + effect: '能够攻击正在使用守住或看\n穿等招式的对手。解除其守\n护效果', }, - "pluck": { - name: "啄食", - effect: "用喙进行攻击。当对手携带\n树果时,可以食用并获得其\n效果", + 'pluck': { + name: '啄食', + effect: '用喙进行攻击。当对手携带\n树果时,可以食用并获得其\n效果', }, - "tailwind": { - name: "顺风", - effect: "刮起猛烈的旋风,在4回合\n内提高我方全员的速度", + 'tailwind': { + name: '顺风', + effect: '刮起猛烈的旋风,在4回合\n内提高我方全员的速度', }, - "acupressure": { - name: "点穴", - effect: "通过点穴让身体舒筋活络。\n大幅提高某1项能力", + 'acupressure': { + name: '点穴', + effect: '通过点穴让身体舒筋活络。\n大幅提高某1项能力', }, - "metalBurst": { - name: "金属爆炸", - effect: "使出招式前,将最后受到的\n招式的伤害大力返还给对手", + 'metalBurst': { + name: '金属爆炸', + effect: '使出招式前,将最后受到的\n招式的伤害大力返还给对手', }, - "uTurn": { - name: "急速折返", - effect: "在攻击之后急速返回,和后\n备宝可梦进行替换", + 'uTurn': { + name: '急速折返', + effect: '在攻击之后急速返回,和后\n备宝可梦进行替换', }, - "closeCombat": { - name: "近身战", - effect: "放弃守护,向对手的怀里突\n击。自己的防御和特防会降\n低", + 'closeCombat': { + name: '近身战', + effect: '放弃守护,向对手的怀里突\n击。自己的防御和特防会降\n低', }, - "payback": { - name: "以牙还牙", - effect: "蓄力攻击。如果能在对手之\n后攻击,招式的威力会变成\n2倍", + 'payback': { + name: '以牙还牙', + effect: '蓄力攻击。如果能在对手之\n后攻击,招式的威力会变成\n2倍', }, - "assurance": { - name: "恶意追击", - effect: "如果此回合内对手已经受到\n伤害的话,招式威力会变成\n2倍", + 'assurance': { + name: '恶意追击', + effect: '如果此回合内对手已经受到\n伤害的话,招式威力会变成\n2倍', }, - "embargo": { - name: "查封", - effect: "让对手在5回合内不能使用\n宝可梦携带的道具。训练家\n也不能给那只宝可梦使用道\n具", + 'embargo': { + name: '查封', + effect: '让对手在5回合内不能使用\n宝可梦携带的道具。训练家\n也不能给那只宝可梦使用道\n具', }, - "fling": { - name: "投掷", - effect: "快速投掷携带的道具进行攻\n击。根据道具不同,威力和\n效果会改变", + 'fling': { + name: '投掷', + effect: '快速投掷携带的道具进行攻\n击。根据道具不同,威力和\n效果会改变', }, - "psychoShift": { - name: "精神转移", - effect: "利用超能力施以暗示,从而\n将自己受到的异常状态转移\n给对手", + 'psychoShift': { + name: '精神转移', + effect: '利用超能力施以暗示,从而\n将自己受到的异常状态转移\n给对手', }, - "trumpCard": { - name: "王牌", - effect: "王牌招式的剩余PP越少,\n招式的威力越大", + 'trumpCard': { + name: '王牌', + effect: '王牌招式的剩余PP越少,\n招式的威力越大', }, - "healBlock": { - name: "回复封锁", - effect: "在5回合内无法通过招式、\n特性或携带的道具来回复H\nP", + 'healBlock': { + name: '回复封锁', + effect: '在5回合内无法通过招式、\n特性或携带的道具来回复H\nP', }, - "wringOut": { - name: "绞紧", - effect: "用力勒紧对手进行攻击。对\n手的HP越多,威力越大", + 'wringOut': { + name: '绞紧', + effect: '用力勒紧对手进行攻击。对\n手的HP越多,威力越大', }, - "powerTrick": { - name: "力量戏法", - effect: "利用超能力交换自己的攻击\n和防御的力量", + 'powerTrick': { + name: '力量戏法', + effect: '利用超能力交换自己的攻击\n和防御的力量', }, - "gastroAcid": { - name: "胃液", - effect: "将胃液吐向对手的身体。沾\n上的胃液会消除对手的特性\n效果", + 'gastroAcid': { + name: '胃液', + effect: '将胃液吐向对手的身体。沾\n上的胃液会消除对手的特性\n效果', }, - "luckyChant": { - name: "幸运咒语", - effect: "向天许愿,从而在5回合内\n不会被对手的攻击打中要害", + 'luckyChant': { + name: '幸运咒语', + effect: '向天许愿,从而在5回合内\n不会被对手的攻击打中要害', }, - "meFirst": { - name: "抢先一步", - effect: "提高威力,抢先使出对手想\n要使出的招式。如果不先使\n出则会失败", + 'meFirst': { + name: '抢先一步', + effect: '提高威力,抢先使出对手想\n要使出的招式。如果不先使\n出则会失败', }, - "copycat": { - name: "仿效", - effect: "模仿对手刚才使出的招式,\n并使出相同招式。如果对手\n还没出招则会失败", + 'copycat': { + name: '仿效', + effect: '模仿对手刚才使出的招式,\n并使出相同招式。如果对手\n还没出招则会失败', }, - "powerSwap": { - name: "力量互换", - effect: "利用超能力互换自己和对手\n的攻击以及特攻的能力变化", + 'powerSwap': { + name: '力量互换', + effect: '利用超能力互换自己和对手\n的攻击以及特攻的能力变化', }, - "guardSwap": { - name: "防守互换", - effect: "利用超能力互换自己和对手\n的防御以及特防的能力变化", + 'guardSwap': { + name: '防守互换', + effect: '利用超能力互换自己和对手\n的防御以及特防的能力变化', }, - "punishment": { - name: "惩罚", - effect: "根据能力变化,对手提高的\n力量越大,招式的威力越大", + 'punishment': { + name: '惩罚', + effect: '根据能力变化,对手提高的\n力量越大,招式的威力越大', }, - "lastResort": { - name: "珍藏", - effect: "当战斗中已学会的招式全部\n使用过后,才能开始使出珍\n藏的招式", + 'lastResort': { + name: '珍藏', + effect: '当战斗中已学会的招式全部\n使用过后,才能开始使出珍\n藏的招式', }, - "worrySeed": { - name: "烦恼种子", - effect: "种植心神不宁的种子。使对\n手不能入眠,并将特性变成\n不眠", + 'worrySeed': { + name: '烦恼种子', + effect: '种植心神不宁的种子。使对\n手不能入眠,并将特性变成\n不眠', }, - "suckerPunch": { - name: "突袭", - effect: "可以比对手先攻击。对手使\n出的招式如果不是攻击招式\n则会失败", + 'suckerPunch': { + name: '突袭', + effect: '可以比对手先攻击。对手使\n出的招式如果不是攻击招式\n则会失败', }, - "toxicSpikes": { - name: "毒菱", - effect: "在对手的脚下撒毒菱。使对\n手替换出场的宝可梦中毒", + 'toxicSpikes': { + name: '毒菱', + effect: '在对手的脚下撒毒菱。使对\n手替换出场的宝可梦中毒', }, - "heartSwap": { - name: "心灵互换", - effect: "利用超能力互换自己和对手\n之间的能力变化", + 'heartSwap': { + name: '心灵互换', + effect: '利用超能力互换自己和对手\n之间的能力变化', }, - "aquaRing": { - name: "水流环", - effect: "在自己身体的周围覆盖用水\n制造的幕。每回合回复HP", + 'aquaRing': { + name: '水流环', + effect: '在自己身体的周围覆盖用水\n制造的幕。每回合回复HP', }, - "magnetRise": { - name: "电磁飘浮", - effect: "利用电气产生的磁力浮在空\n中。在5回合内可以飘浮", + 'magnetRise': { + name: '电磁飘浮', + effect: '利用电气产生的磁力浮在空\n中。在5回合内可以飘浮', }, - "flareBlitz": { - name: "闪焰冲锋", - effect: "让火焰覆盖全身猛撞向对手。\n自己也会受到不小的伤害。\n有时会让对手陷入灼伤状\n态", + 'flareBlitz': { + name: '闪焰冲锋', + effect: '让火焰覆盖全身猛撞向对手。\n自己也会受到不小的伤害。\n有时会让对手陷入灼伤状\n态', }, - "forcePalm": { - name: "发劲", - effect: "向对手的身体发出冲击波进\n行攻击。有时会让对手陷入\n麻痹状态", + 'forcePalm': { + name: '发劲', + effect: '向对手的身体发出冲击波进\n行攻击。有时会让对手陷入\n麻痹状态', }, - "auraSphere": { - name: "波导弹", - effect: "从体内产生出波导之力,然\n后向对手发出。攻击必定会\n命中", + 'auraSphere': { + name: '波导弹', + effect: '从体内产生出波导之力,然\n后向对手发出。攻击必定会\n命中', }, - "rockPolish": { - name: "岩石打磨", - effect: "打磨自己的身体,减少空气\n阻力。可以大幅提高自己的\n速度", + 'rockPolish': { + name: '岩石打磨', + effect: '打磨自己的身体,减少空气\n阻力。可以大幅提高自己的\n速度', }, - "poisonJab": { - name: "毒击", - effect: "用带毒的触手或手臂刺入对\n手。有时会让对手陷入中毒\n状态", + 'poisonJab': { + name: '毒击', + effect: '用带毒的触手或手臂刺入对\n手。有时会让对手陷入中毒\n状态', }, - "darkPulse": { - name: "恶之波动", - effect: "从体内发出充满恶意的恐怖\n气场。有时会使对手畏缩", + 'darkPulse': { + name: '恶之波动', + effect: '从体内发出充满恶意的恐怖\n气场。有时会使对手畏缩', }, - "nightSlash": { - name: "暗袭要害", - effect: "抓住瞬间的空隙切斩对手。\n容易击中要害", + 'nightSlash': { + name: '暗袭要害', + effect: '抓住瞬间的空隙切斩对手。\n容易击中要害', }, - "aquaTail": { - name: "水流尾", - effect: "如惊涛骇浪般挥动大尾巴攻\n击对手", + 'aquaTail': { + name: '水流尾', + effect: '如惊涛骇浪般挥动大尾巴攻\n击对手', }, - "seedBomb": { - name: "种子炸弹", - effect: "将外壳坚硬的大种子,从上\n方砸下攻击对手", + 'seedBomb': { + name: '种子炸弹', + effect: '将外壳坚硬的大种子,从上\n方砸下攻击对手', }, - "airSlash": { - name: "空气之刃", - effect: "用连天空也能劈开的空气之\n刃进行攻击。有时会使对手\n畏缩", + 'airSlash': { + name: '空气之刃', + effect: '用连天空也能劈开的空气之\n刃进行攻击。有时会使对手\n畏缩', }, - "xScissor": { - name: "十字剪", - effect: "将镰刀或爪子像剪刀般地交\n叉,顺势劈开对手", + 'xScissor': { + name: '十字剪', + effect: '将镰刀或爪子像剪刀般地交\n叉,顺势劈开对手', }, - "bugBuzz": { - name: "虫鸣", - effect: "利用振动发出音波进行攻击。\n有时会降低对手的特防", + 'bugBuzz': { + name: '虫鸣', + effect: '利用振动发出音波进行攻击。\n有时会降低对手的特防', }, - "dragonPulse": { - name: "龙之波动", - effect: "从大大的口中掀起冲击波攻\n击对手", + 'dragonPulse': { + name: '龙之波动', + effect: '从大大的口中掀起冲击波攻\n击对手', }, - "dragonRush": { - name: "龙之俯冲", - effect: "释放出骇人的杀气,一边威\n慑一边撞击对手。有时会使\n对手畏缩", + 'dragonRush': { + name: '龙之俯冲', + effect: '释放出骇人的杀气,一边威\n慑一边撞击对手。有时会使\n对手畏缩', }, - "powerGem": { - name: "力量宝石", - effect: "发射如宝石般闪耀的光芒攻\n击对手", + 'powerGem': { + name: '力量宝石', + effect: '发射如宝石般闪耀的光芒攻\n击对手', }, - "drainPunch": { - name: "吸取拳", - effect: "用拳头吸取对手的力量。可\n以回复给予对手伤害的一半\nHP", + 'drainPunch': { + name: '吸取拳', + effect: '用拳头吸取对手的力量。可\n以回复给予对手伤害的一半\nHP', }, - "vacuumWave": { - name: "真空波", - effect: "挥动拳头,掀起真空波。必\n定能够先制攻击", + 'vacuumWave': { + name: '真空波', + effect: '挥动拳头,掀起真空波。必\n定能够先制攻击', }, - "focusBlast": { - name: "真气弹", - effect: "提高气势,释放出全部力量。\n有时会降低对手的特防", + 'focusBlast': { + name: '真气弹', + effect: '提高气势,释放出全部力量。\n有时会降低对手的特防', }, - "energyBall": { - name: "能量球", - effect: "发射从自然收集的生命力量。\n有时会降低对手的特防", + 'energyBall': { + name: '能量球', + effect: '发射从自然收集的生命力量。\n有时会降低对手的特防', }, - "braveBird": { - name: "勇鸟猛攻", - effect: "收拢翅膀,通过低空飞行突\n击对手。自己也会受到不小\n的伤害", + 'braveBird': { + name: '勇鸟猛攻', + effect: '收拢翅膀,通过低空飞行突\n击对手。自己也会受到不小\n的伤害', }, - "earthPower": { - name: "大地之力", - effect: "向对手脚下释放出大地之力。\n有时会降低对手的特防", + 'earthPower': { + name: '大地之力', + effect: '向对手脚下释放出大地之力。\n有时会降低对手的特防', }, - "switcheroo": { - name: "掉包", - effect: "用一闪而过的速度交换自己\n和对手的持有物", + 'switcheroo': { + name: '掉包', + effect: '用一闪而过的速度交换自己\n和对手的持有物', }, - "gigaImpact": { - name: "终极冲击", - effect: "使出自己浑身力量突击对手。\n下一回合自己将无法动弹", + 'gigaImpact': { + name: '终极冲击', + effect: '使出自己浑身力量突击对手。\n下一回合自己将无法动弹', }, - "nastyPlot": { - name: "诡计", - effect: "谋划诡计,激活头脑。大幅\n提高自己的特攻", + 'nastyPlot': { + name: '诡计', + effect: '谋划诡计,激活头脑。大幅\n提高自己的特攻', }, - "bulletPunch": { - name: "子弹拳", - effect: "向对手使出如子弹般快速而\n坚硬的拳头。必定能够先制\n攻击", + 'bulletPunch': { + name: '子弹拳', + effect: '向对手使出如子弹般快速而\n坚硬的拳头。必定能够先制\n攻击', }, - "avalanche": { - name: "雪崩", - effect: "如果受到对手的招式攻击,\n就能给予该对手2倍威力的\n攻击", + 'avalanche': { + name: '雪崩', + effect: '如果受到对手的招式攻击,\n就能给予该对手2倍威力的\n攻击', }, - "iceShard": { - name: "冰砾", - effect: "瞬间制作冰块,快速地扔向\n对手。必定能够先制攻击", + 'iceShard': { + name: '冰砾', + effect: '瞬间制作冰块,快速地扔向\n对手。必定能够先制攻击', }, - "shadowClaw": { - name: "暗影爪", - effect: "以影子做成的锐爪,劈开对\n手。容易击中要害", + 'shadowClaw': { + name: '暗影爪', + effect: '以影子做成的锐爪,劈开对\n手。容易击中要害', }, - "thunderFang": { - name: "雷电牙", - effect: "用蓄满电流的牙齿咬住对手。\n有时会使对手畏缩或陷入\n麻痹状态", + 'thunderFang': { + name: '雷电牙', + effect: '用蓄满电流的牙齿咬住对手。\n有时会使对手畏缩或陷入\n麻痹状态', }, - "iceFang": { - name: "冰冻牙", - effect: "用藏有冷气的牙齿咬住对手。\n有时会使对手畏缩或陷入\n冰冻状态", + 'iceFang': { + name: '冰冻牙', + effect: '用藏有冷气的牙齿咬住对手。\n有时会使对手畏缩或陷入\n冰冻状态', }, - "fireFang": { - name: "火焰牙", - effect: "用覆盖着火焰的牙齿咬住对\n手。有时会使对手畏缩或陷\n入灼伤状态", + 'fireFang': { + name: '火焰牙', + effect: '用覆盖着火焰的牙齿咬住对\n手。有时会使对手畏缩或陷\n入灼伤状态', }, - "shadowSneak": { - name: "影子偷袭", - effect: "伸长影子,从对手的背后进\n行攻击。必定能够先制攻击", + 'shadowSneak': { + name: '影子偷袭', + effect: '伸长影子,从对手的背后进\n行攻击。必定能够先制攻击', }, - "mudBomb": { - name: "泥巴炸弹", - effect: "向对手发射坚硬的泥弹进行\n攻击。有时会降低对手的命\n中率", + 'mudBomb': { + name: '泥巴炸弹', + effect: '向对手发射坚硬的泥弹进行\n攻击。有时会降低对手的命\n中率', }, - "psychoCut": { - name: "精神利刃", - effect: "用实体化的心之利刃劈开对\n手。容易击中要害", + 'psychoCut': { + name: '精神利刃', + effect: '用实体化的心之利刃劈开对\n手。容易击中要害', }, - "zenHeadbutt": { - name: "意念头锤", - effect: "将思念的力量集中在前额进\n行攻击。有时会使对手畏缩", + 'zenHeadbutt': { + name: '意念头锤', + effect: '将思念的力量集中在前额进\n行攻击。有时会使对手畏缩', }, - "mirrorShot": { - name: "镜光射击", - effect: "抛光自己的身体,向对手释\n放出闪光之力。有时会降低\n对手的命中率", + 'mirrorShot': { + name: '镜光射击', + effect: '抛光自己的身体,向对手释\n放出闪光之力。有时会降低\n对手的命中率', }, - "flashCannon": { - name: "加农光炮", - effect: "将身体的光芒聚集在一点释\n放出去。有时会降低对手的\n特防", + 'flashCannon': { + name: '加农光炮', + effect: '将身体的光芒聚集在一点释\n放出去。有时会降低对手的\n特防', }, - "rockClimb": { - name: "攀岩", - effect: "发动猛撞攻击,有时会使对\n手混乱。是宝可表的秘传招\n式之一", + 'rockClimb': { + name: '攀岩', + effect: '发动猛撞攻击,有时会使对\n手混乱。是宝可表的秘传招\n式之一', }, - "defog": { - name: "清除浓雾", - effect: "用强风吹开对手的反射壁或\n光墙等。也会降低对手的闪\n避率", + 'defog': { + name: '清除浓雾', + effect: '用强风吹开对手的反射壁或\n光墙等。也会降低对手的闪\n避率', }, - "trickRoom": { - name: "戏法空间", - effect: "制造出离奇的空间。在5回\n合内速度慢的宝可梦可以先\n行动", + 'trickRoom': { + name: '戏法空间', + effect: '制造出离奇的空间。在5回\n合内速度慢的宝可梦可以先\n行动', }, - "dracoMeteor": { - name: "流星群", - effect: "从天空中向对手落下陨石。\n使用之后因为反作用力,自\n己的特攻会大幅降低", + 'dracoMeteor': { + name: '流星群', + effect: '从天空中向对手落下陨石。\n使用之后因为反作用力,自\n己的特攻会大幅降低', }, - "discharge": { - name: "放电", - effect: "用耀眼的电击攻击自己周围\n所有的宝可梦。有时会陷入\n麻痹状态", + 'discharge': { + name: '放电', + effect: '用耀眼的电击攻击自己周围\n所有的宝可梦。有时会陷入\n麻痹状态', }, - "lavaPlume": { - name: "喷烟", - effect: "用熊熊烈火攻击自己周围所\n有的宝可梦。有时会陷入灼\n伤状态", + 'lavaPlume': { + name: '喷烟', + effect: '用熊熊烈火攻击自己周围所\n有的宝可梦。有时会陷入灼\n伤状态', }, - "leafStorm": { - name: "飞叶风暴", - effect: "用尖尖的叶片向对手卷起风\n暴。使用之后因为反作用力\n自己的特攻会大幅降低", + 'leafStorm': { + name: '飞叶风暴', + effect: '用尖尖的叶片向对手卷起风\n暴。使用之后因为反作用力\n自己的特攻会大幅降低', }, - "powerWhip": { - name: "强力鞭打", - effect: "激烈地挥舞青藤或触手摔打\n对手进行攻击", + 'powerWhip': { + name: '强力鞭打', + effect: '激烈地挥舞青藤或触手摔打\n对手进行攻击', }, - "rockWrecker": { - name: "岩石炮", - effect: "向对手发射巨大的岩石进行\n攻击。下一回合自己将无法\n动弹", + 'rockWrecker': { + name: '岩石炮', + effect: '向对手发射巨大的岩石进行\n攻击。下一回合自己将无法\n动弹', }, - "crossPoison": { - name: "十字毒刃", - effect: "用毒刃劈开对手。有时会让\n对手陷入中毒状态,也容易\n击中要害", + 'crossPoison': { + name: '十字毒刃', + effect: '用毒刃劈开对手。有时会让\n对手陷入中毒状态,也容易\n击中要害', }, - "gunkShot": { - name: "垃圾射击", - effect: "用肮脏的垃圾撞向对手进行\n攻击。有时会让对手陷入中\n毒状态", + 'gunkShot': { + name: '垃圾射击', + effect: '用肮脏的垃圾撞向对手进行\n攻击。有时会让对手陷入中\n毒状态', }, - "ironHead": { - name: "铁头", - effect: "用钢铁般坚硬的头部进行攻\n击。有时会使对手畏缩", + 'ironHead': { + name: '铁头', + effect: '用钢铁般坚硬的头部进行攻\n击。有时会使对手畏缩', }, - "magnetBomb": { - name: "磁铁炸弹", - effect: "发射吸住对手的钢铁炸弹。\n攻击必定会命中", + 'magnetBomb': { + name: '磁铁炸弹', + effect: '发射吸住对手的钢铁炸弹。\n攻击必定会命中', }, - "stoneEdge": { - name: "尖石攻击", - effect: "用尖尖的岩石刺入对手进行\n攻击。容易击中要害", + 'stoneEdge': { + name: '尖石攻击', + effect: '用尖尖的岩石刺入对手进行\n攻击。容易击中要害', }, - "captivate": { - name: "诱惑", - effect: "♂诱惑♀或♀诱惑♂,从而\n大幅降低对手的特攻", + 'captivate': { + name: '诱惑', + effect: '♂诱惑♀或♀诱惑♂,从而\n大幅降低对手的特攻', }, - "stealthRock": { - name: "隐形岩", - effect: "将无数岩石悬浮在对手的周\n围,从而对替换出场的对手\n的宝可梦给予伤害", + 'stealthRock': { + name: '隐形岩', + effect: '将无数岩石悬浮在对手的周\n围,从而对替换出场的对手\n的宝可梦给予伤害', }, - "grassKnot": { - name: "打草结", - effect: "用草缠住并绊倒对手。对手\n越重,威力越大", + 'grassKnot': { + name: '打草结', + effect: '用草缠住并绊倒对手。对手\n越重,威力越大', }, - "chatter": { - name: "喋喋不休", - effect: "用非常烦人的,喋喋不休的\n音波攻击对手。使对手混乱", + 'chatter': { + name: '喋喋不休', + effect: '用非常烦人的,喋喋不休的\n音波攻击对手。使对手混乱', }, - "judgment": { - name: "制裁光砾", - effect: "向对手放出无数的光弹。属\n性会根据自己携带的石板不\n同而改变", + 'judgment': { + name: '制裁光砾', + effect: '向对手放出无数的光弹。属\n性会根据自己携带的石板不\n同而改变', }, - "bugBite": { - name: "虫咬", - effect: "咬住进行攻击。当对手携带\n树果时,可以食用并获得其\n效果", + 'bugBite': { + name: '虫咬', + effect: '咬住进行攻击。当对手携带\n树果时,可以食用并获得其\n效果', }, - "chargeBeam": { - name: "充电光束", - effect: "向对手发射电击光束。由于\n蓄满电流,有时会提高自己\n的特攻", + 'chargeBeam': { + name: '充电光束', + effect: '向对手发射电击光束。由于\n蓄满电流,有时会提高自己\n的特攻', }, - "woodHammer": { - name: "木槌", - effect: "用坚硬的躯体撞击对手进行\n攻击。自己也会受到不小的\n伤害", + 'woodHammer': { + name: '木槌', + effect: '用坚硬的躯体撞击对手进行\n攻击。自己也会受到不小的\n伤害', }, - "aquaJet": { - name: "水流喷射", - effect: "以迅雷不及掩耳之势扑向对\n手。必定能够先制攻击", + 'aquaJet': { + name: '水流喷射', + effect: '以迅雷不及掩耳之势扑向对\n手。必定能够先制攻击', }, - "attackOrder": { - name: "攻击指令", - effect: "召唤手下,让其朝对手发起\n攻击。容易击中要害", + 'attackOrder': { + name: '攻击指令', + effect: '召唤手下,让其朝对手发起\n攻击。容易击中要害', }, - "defendOrder": { - name: "防御指令", - effect: "召唤手下,让其附在自己的\n身体上。可以提高自己的防\n御和特防", + 'defendOrder': { + name: '防御指令', + effect: '召唤手下,让其附在自己的\n身体上。可以提高自己的防\n御和特防', }, - "healOrder": { - name: "回复指令", - effect: "召唤手下疗伤。回复自己最\n大HP的一半", + 'healOrder': { + name: '回复指令', + effect: '召唤手下疗伤。回复自己最\n大HP的一半', }, - "headSmash": { - name: "双刃头锤", - effect: "拼命使出浑身力气,向对手\n进行头锤攻击。自己也会受\n到非常大的伤害", + 'headSmash': { + name: '双刃头锤', + effect: '拼命使出浑身力气,向对手\n进行头锤攻击。自己也会受\n到非常大的伤害', }, - "doubleHit": { - name: "二连击", - effect: "使用尾巴等拍打对手进行攻\n击。连续2次给予伤害", + 'doubleHit': { + name: '二连击', + effect: '使用尾巴等拍打对手进行攻\n击。连续2次给予伤害', }, - "roarOfTime": { - name: "时光咆哮", - effect: "释放出扭曲时间般的强大力\n量攻击对手。下一回合自己\n将无法动弹", + 'roarOfTime': { + name: '时光咆哮', + effect: '释放出扭曲时间般的强大力\n量攻击对手。下一回合自己\n将无法动弹', }, - "spacialRend": { - name: "亚空裂斩", - effect: "将对手连同周围的空间一起\n撕裂并给予伤害。容易击中\n要害", + 'spacialRend': { + name: '亚空裂斩', + effect: '将对手连同周围的空间一起\n撕裂并给予伤害。容易击中\n要害', }, - "lunarDance": { - name: "新月舞", - effect: "虽然自己陷入昏厥,但可以\n治愈后备上场的宝可梦的全\n部状态", + 'lunarDance': { + name: '新月舞', + effect: '虽然自己陷入昏厥,但可以\n治愈后备上场的宝可梦的全\n部状态', }, - "crushGrip": { - name: "捏碎", - effect: "用骇人的力量捏碎对手。对\n手剩余的HP越多,威力越\n大", + 'crushGrip': { + name: '捏碎', + effect: '用骇人的力量捏碎对手。对\n手剩余的HP越多,威力越\n大', }, - "magmaStorm": { - name: "熔岩风暴", - effect: "将对手困在熊熊燃烧的火焰\n中,在4~5回合内进行攻\n击", + 'magmaStorm': { + name: '熔岩风暴', + effect: '将对手困在熊熊燃烧的火焰\n中,在4~5回合内进行攻\n击', }, - "darkVoid": { - name: "暗黑洞", - effect: "将对手强制拖入黑暗的世界,\n从而让对手陷入睡眠状态", + 'darkVoid': { + name: '暗黑洞', + effect: '将对手强制拖入黑暗的世界,\n从而让对手陷入睡眠状态', }, - "seedFlare": { - name: "种子闪光", - effect: "从身体里产生冲击波。有时\n会大幅降低对手的特防", + 'seedFlare': { + name: '种子闪光', + effect: '从身体里产生冲击波。有时\n会大幅降低对手的特防', }, - "ominousWind": { - name: "奇异之风", - effect: "突然刮起毛骨悚然的暴风攻\n击对手。有时会提高自己的\n全部能力", + 'ominousWind': { + name: '奇异之风', + effect: '突然刮起毛骨悚然的暴风攻\n击对手。有时会提高自己的\n全部能力', }, - "shadowForce": { - name: "暗影潜袭", - effect: "第1回合消失踪影,第2回\n合攻击对手。即使对手正受\n保护,也能击中", + 'shadowForce': { + name: '暗影潜袭', + effect: '第1回合消失踪影,第2回\n合攻击对手。即使对手正受\n保护,也能击中', }, - "honeClaws": { - name: "磨爪", - effect: "将爪子磨得更加锋利。提高\n自己的攻击和命中率", + 'honeClaws': { + name: '磨爪', + effect: '将爪子磨得更加锋利。提高\n自己的攻击和命中率', }, - "wideGuard": { - name: "广域防守", - effect: "在1回合内防住击打我方全\n员的攻击", + 'wideGuard': { + name: '广域防守', + effect: '在1回合内防住击打我方全\n员的攻击', }, - "guardSplit": { - name: "防守平分", - effect: "利用超能力将自己和对手的\n防御和特防相加,再进行平\n分", + 'guardSplit': { + name: '防守平分', + effect: '利用超能力将自己和对手的\n防御和特防相加,再进行平\n分', }, - "powerSplit": { - name: "力量平分", - effect: "利用超能力将自己和对手的\n攻击和特攻相加,再进行平\n分", + 'powerSplit': { + name: '力量平分', + effect: '利用超能力将自己和对手的\n攻击和特攻相加,再进行平\n分', }, - "wonderRoom": { - name: "奇妙空间", - effect: "制造出离奇的空间。在5回\n合内互换所有宝可梦的防御\n和特防", + 'wonderRoom': { + name: '奇妙空间', + effect: '制造出离奇的空间。在5回\n合内互换所有宝可梦的防御\n和特防', }, - "psyshock": { - name: "精神冲击", - effect: "将神奇的念波实体化攻击对\n手。给予物理伤害", + 'psyshock': { + name: '精神冲击', + effect: '将神奇的念波实体化攻击对\n手。给予物理伤害', }, - "venoshock": { - name: "毒液冲击", - effect: "将特殊的毒液泼向对手。对\n处于中毒状态的对手,威力\n会变成2倍", + 'venoshock': { + name: '毒液冲击', + effect: '将特殊的毒液泼向对手。对\n处于中毒状态的对手,威力\n会变成2倍', }, - "autotomize": { - name: "身体轻量化", - effect: "削掉身体上没用的部分。大\n幅提高自己的速度,同时体\n重也会变轻", + 'autotomize': { + name: '身体轻量化', + effect: '削掉身体上没用的部分。大\n幅提高自己的速度,同时体\n重也会变轻', }, - "ragePowder": { - name: "愤怒粉", - effect: "将令人烦躁的粉末撒在自己\n身上,用以吸引对手的注意。\n使对手的攻击全部指向自\n己", + 'ragePowder': { + name: '愤怒粉', + effect: '将令人烦躁的粉末撒在自己\n身上,用以吸引对手的注意。\n使对手的攻击全部指向自\n己', }, - "telekinesis": { - name: "意念移物", - effect: "利用超能力使对手浮起来。\n在3回合内攻击会变得容易\n打中对手", + 'telekinesis': { + name: '意念移物', + effect: '利用超能力使对手浮起来。\n在3回合内攻击会变得容易\n打中对手', }, - "magicRoom": { - name: "魔法空间", - effect: "制造出离奇的空间。在5回\n合内所有宝可梦携带道具的\n效果都会消失", + 'magicRoom': { + name: '魔法空间', + effect: '制造出离奇的空间。在5回\n合内所有宝可梦携带道具的\n效果都会消失', }, - "smackDown": { - name: "击落", - effect: "扔石头或炮弹,攻击飞行的\n对手。对手会被击落,掉到\n地面", + 'smackDown': { + name: '击落', + effect: '扔石头或炮弹,攻击飞行的\n对手。对手会被击落,掉到\n地面', }, - "stormThrow": { - name: "山岚摔", - effect: "向对手使出强烈的一击。攻\n击必定会击中要害", + 'stormThrow': { + name: '山岚摔', + effect: '向对手使出强烈的一击。攻\n击必定会击中要害', }, - "flameBurst": { - name: "烈焰溅射", - effect: "如果击中,爆裂的火焰会攻\n击到对手。爆裂出的火焰还\n会飞溅到旁边的对手", + 'flameBurst': { + name: '烈焰溅射', + effect: '如果击中,爆裂的火焰会攻\n击到对手。爆裂出的火焰还\n会飞溅到旁边的对手', }, - "sludgeWave": { - name: "污泥波", - effect: "用污泥波攻击自己周围所有\n的宝可梦。有时会陷入中毒\n状态", + 'sludgeWave': { + name: '污泥波', + effect: '用污泥波攻击自己周围所有\n的宝可梦。有时会陷入中毒\n状态', }, - "quiverDance": { - name: "蝶舞", - effect: "轻巧地跳起神秘而又美丽的\n舞蹈。提高自己的特攻、特\n防和速度", + 'quiverDance': { + name: '蝶舞', + effect: '轻巧地跳起神秘而又美丽的\n舞蹈。提高自己的特攻、特\n防和速度', }, - "heavySlam": { - name: "重磅冲撞", - effect: "用沉重的身体撞向对手进行\n攻击。自己比对手越重,威\n力越大", + 'heavySlam': { + name: '重磅冲撞', + effect: '用沉重的身体撞向对手进行\n攻击。自己比对手越重,威\n力越大', }, - "synchronoise": { - name: "同步干扰", - effect: "用神奇电波对周围所有和自\n己属性相同的宝可梦给予伤\n害", + 'synchronoise': { + name: '同步干扰', + effect: '用神奇电波对周围所有和自\n己属性相同的宝可梦给予伤\n害', }, - "electroBall": { - name: "电球", - effect: "用电气团撞向对手。自己比\n对手速度越快,威力越大", + 'electroBall': { + name: '电球', + effect: '用电气团撞向对手。自己比\n对手速度越快,威力越大', }, - "soak": { - name: "浸水", - effect: "将大量的水泼向对手,从而\n使其变成水属性", + 'soak': { + name: '浸水', + effect: '将大量的水泼向对手,从而\n使其变成水属性', }, - "flameCharge": { - name: "蓄能焰袭", - effect: "让火焰覆盖全身,攻击对手。\n积蓄力量来提高自己的速\n度", + 'flameCharge': { + name: '蓄能焰袭', + effect: '让火焰覆盖全身,攻击对手。\n积蓄力量来提高自己的速\n度', }, - "coil": { - name: "盘蜷", - effect: "盘蜷着集中精神。提高自己\n的攻击、防御和命中率", + 'coil': { + name: '盘蜷', + effect: '盘蜷着集中精神。提高自己\n的攻击、防御和命中率', }, - "lowSweep": { - name: "下盘踢", - effect: "以敏捷的动作瞄准对手的脚\n进行攻击。会降低对手的速\n度", + 'lowSweep': { + name: '下盘踢', + effect: '以敏捷的动作瞄准对手的脚\n进行攻击。会降低对手的速\n度', }, - "acidSpray": { - name: "酸液炸弹", - effect: "喷出能溶化对手的液体进行\n攻击。会大幅降低对手的特\n防", + 'acidSpray': { + name: '酸液炸弹', + effect: '喷出能溶化对手的液体进行\n攻击。会大幅降低对手的特\n防', }, - "foulPlay": { - name: "欺诈", - effect: "利用对手的力量进行攻击。\n正和自己战斗的对手,其攻\n击越高,伤害越大", + 'foulPlay': { + name: '欺诈', + effect: '利用对手的力量进行攻击。\n正和自己战斗的对手,其攻\n击越高,伤害越大', }, - "simpleBeam": { - name: "单纯光束", - effect: "向对手发送谜之念波。接收\n到念波的对手,其特性会变\n为单纯", + 'simpleBeam': { + name: '单纯光束', + effect: '向对手发送谜之念波。接收\n到念波的对手,其特性会变\n为单纯', }, - "entrainment": { - name: "找伙伴", - effect: "用神奇的节奏跳舞。使对手\n模仿自己的动作,从而将特\n性变成一样", + 'entrainment': { + name: '找伙伴', + effect: '用神奇的节奏跳舞。使对手\n模仿自己的动作,从而将特\n性变成一样', }, - "afterYou": { - name: "您先请", - effect: "支援我方或对手的行动,使\n其紧接着此招式之后行动", + 'afterYou': { + name: '您先请', + effect: '支援我方或对手的行动,使\n其紧接着此招式之后行动', }, - "round": { - name: "轮唱", - effect: "用歌声攻击对手。大家一起\n轮唱便可以接连使出,威力\n也会提高", + 'round': { + name: '轮唱', + effect: '用歌声攻击对手。大家一起\n轮唱便可以接连使出,威力\n也会提高', }, - "echoedVoice": { - name: "回声", - effect: "用回声攻击对手。如果每回\n合都有宝可梦接着使用该招\n式,威力就会提高", + 'echoedVoice': { + name: '回声', + effect: '用回声攻击对手。如果每回\n合都有宝可梦接着使用该招\n式,威力就会提高', }, - "chipAway": { - name: "逐步击破", - effect: "看准机会稳步攻击。无视对\n手的能力变化,直接给予伤\n害", + 'chipAway': { + name: '逐步击破', + effect: '看准机会稳步攻击。无视对\n手的能力变化,直接给予伤\n害', }, - "clearSmog": { - name: "清除之烟", - effect: "向对手投掷特殊的泥块进行\n攻击。使其能力变回原点", + 'clearSmog': { + name: '清除之烟', + effect: '向对手投掷特殊的泥块进行\n攻击。使其能力变回原点', }, - "storedPower": { - name: "辅助力量", - effect: "用蓄积起来的力量攻击对手。\n自己的能力提高得越多,\n威力就越大", + 'storedPower': { + name: '辅助力量', + effect: '用蓄积起来的力量攻击对手。\n自己的能力提高得越多,\n威力就越大', }, - "quickGuard": { - name: "快速防守", - effect: "守护自己和同伴,以防对手\n的先制攻击", + 'quickGuard': { + name: '快速防守', + effect: '守护自己和同伴,以防对手\n的先制攻击', }, - "allySwitch": { - name: "交换场地", - effect: "用神奇的力量瞬间移动,互\n换自己和同伴所在的位置。\n连续使出则容易失败", + 'allySwitch': { + name: '交换场地', + effect: '用神奇的力量瞬间移动,互\n换自己和同伴所在的位置。\n连续使出则容易失败', }, - "scald": { - name: "热水", - effect: "向对手喷射煮得翻滚的开水\n进行攻击。有时会让对手陷\n入灼伤状态", + 'scald': { + name: '热水', + effect: '向对手喷射煮得翻滚的开水\n进行攻击。有时会让对手陷\n入灼伤状态', }, - "shellSmash": { - name: "破壳", - effect: "打破外壳,降低自己的防御\n和特防,但大幅提高攻击、\n特攻和速度", + 'shellSmash': { + name: '破壳', + effect: '打破外壳,降低自己的防御\n和特防,但大幅提高攻击、\n特攻和速度', }, - "healPulse": { - name: "治愈波动", - effect: "放出治愈波动,从而回复对\n手最大HP的一半", + 'healPulse': { + name: '治愈波动', + effect: '放出治愈波动,从而回复对\n手最大HP的一半', }, - "hex": { - name: "祸不单行", - effect: "接二连三地进行攻击。对处\n于异常状态的对手给予较大\n的伤害", + 'hex': { + name: '祸不单行', + effect: '接二连三地进行攻击。对处\n于异常状态的对手给予较大\n的伤害', }, - "skyDrop": { - name: "自由落体", - effect: "第1回合将对手带到空中,\n第2回合将其摔下进行攻击。\n被带到空中的对手不能动\n弹", + 'skyDrop': { + name: '自由落体', + effect: '第1回合将对手带到空中,\n第2回合将其摔下进行攻击。\n被带到空中的对手不能动\n弹', }, - "shiftGear": { - name: "换档", - effect: "转动齿轮,不仅提高自己的\n攻击,还会大幅提高速度", + 'shiftGear': { + name: '换档', + effect: '转动齿轮,不仅提高自己的\n攻击,还会大幅提高速度', }, - "circleThrow": { - name: "巴投", - effect: "扔飞对手,强制拉后备宝可\n梦上场。如果对手为野生宝\n可梦,战斗将直接结束", + 'circleThrow': { + name: '巴投', + effect: '扔飞对手,强制拉后备宝可\n梦上场。如果对手为野生宝\n可梦,战斗将直接结束', }, - "incinerate": { - name: "烧净", - effect: "用火焰攻击对手。对手携带\n树果等时,会烧掉,使其不\n能使用", + 'incinerate': { + name: '烧净', + effect: '用火焰攻击对手。对手携带\n树果等时,会烧掉,使其不\n能使用', }, - "quash": { - name: "延后", - effect: "压制对手,从而将其行动顺\n序放到最后", + 'quash': { + name: '延后', + effect: '压制对手,从而将其行动顺\n序放到最后', }, - "acrobatics": { - name: "杂技", - effect: "轻巧地攻击对手。自己没有\n携带道具时,会给予较大的\n伤害", + 'acrobatics': { + name: '杂技', + effect: '轻巧地攻击对手。自己没有\n携带道具时,会给予较大的\n伤害', }, - "reflectType": { - name: "镜面属性", - effect: "反射对手的属性,让自己也\n变成一样的属性", + 'reflectType': { + name: '镜面属性', + effect: '反射对手的属性,让自己也\n变成一样的属性', }, - "retaliate": { - name: "报仇", - effect: "为倒下的同伴报仇。如果上\n一回合有同伴倒下,威力就\n会提高", + 'retaliate': { + name: '报仇', + effect: '为倒下的同伴报仇。如果上\n一回合有同伴倒下,威力就\n会提高', }, - "finalGambit": { - name: "搏命", - effect: "拼命攻击对手。虽然自己陷\n入昏厥,但会给予对手和自\n己目前HP等量的伤害", + 'finalGambit': { + name: '搏命', + effect: '拼命攻击对手。虽然自己陷\n入昏厥,但会给予对手和自\n己目前HP等量的伤害', }, - "bestow": { - name: "传递礼物", - effect: "当对手未携带道具时,能够\n将自己携带的道具交给对手", + 'bestow': { + name: '传递礼物', + effect: '当对手未携带道具时,能够\n将自己携带的道具交给对手', }, - "inferno": { - name: "烈火深渊", - effect: "用烈焰包裹住对手进行攻击。\n让对手陷入灼伤状态", + 'inferno': { + name: '烈火深渊', + effect: '用烈焰包裹住对手进行攻击。\n让对手陷入灼伤状态', }, - "waterPledge": { - name: "水之誓约", - effect: "用水柱进行攻击。如果和火\n组合,威力就会提高,天空\n中会挂上彩虹", + 'waterPledge': { + name: '水之誓约', + effect: '用水柱进行攻击。如果和火\n组合,威力就会提高,天空\n中会挂上彩虹', }, - "firePledge": { - name: "火之誓约", - effect: "用火柱进行攻击。如果和草\n组合,威力就会提高,周围\n会变成火海", + 'firePledge': { + name: '火之誓约', + effect: '用火柱进行攻击。如果和草\n组合,威力就会提高,周围\n会变成火海', }, - "grassPledge": { - name: "草之誓约", - effect: "用草柱进行攻击。如果和水\n组合,威力就会提高,周围\n会变成湿地", + 'grassPledge': { + name: '草之誓约', + effect: '用草柱进行攻击。如果和水\n组合,威力就会提高,周围\n会变成湿地', }, - "voltSwitch": { - name: "伏特替换", - effect: "在攻击之后急速返回,和后\n备宝可梦进行替换", + 'voltSwitch': { + name: '伏特替换', + effect: '在攻击之后急速返回,和后\n备宝可梦进行替换', }, - "struggleBug": { - name: "虫之抵抗", - effect: "抵抗并攻击对手。会降低对\n手的特攻", + 'struggleBug': { + name: '虫之抵抗', + effect: '抵抗并攻击对手。会降低对\n手的特攻', }, - "bulldoze": { - name: "重踏", - effect: "用力踩踏地面并攻击自己周\n围所有的宝可梦。会降低对\n方的速度", + 'bulldoze': { + name: '重踏', + effect: '用力踩踏地面并攻击自己周\n围所有的宝可梦。会降低对\n方的速度', }, - "frostBreath": { - name: "冰息", - effect: "将冰冷的气息吹向对手进行\n攻击。必定会击中要害", + 'frostBreath': { + name: '冰息', + effect: '将冰冷的气息吹向对手进行\n攻击。必定会击中要害', }, - "dragonTail": { - name: "龙尾", - effect: "弹飞对手,强制拉后备宝可\n梦上场。如果对手为野生宝\n可梦,战斗将直接结束", + 'dragonTail': { + name: '龙尾', + effect: '弹飞对手,强制拉后备宝可\n梦上场。如果对手为野生宝\n可梦,战斗将直接结束', }, - "workUp": { - name: "自我激励", - effect: "激励自己,从而提高攻击和\n特攻", + 'workUp': { + name: '自我激励', + effect: '激励自己,从而提高攻击和\n特攻', }, - "electroweb": { - name: "电网", - effect: "用电网捉住对手进行攻击。\n会降低对手的速度", + 'electroweb': { + name: '电网', + effect: '用电网捉住对手进行攻击。\n会降低对手的速度', }, - "wildCharge": { - name: "疯狂伏特", - effect: "让电流覆盖全身,撞向对手\n进行攻击。自己也会受到少\n许伤害", + 'wildCharge': { + name: '疯狂伏特', + effect: '让电流覆盖全身,撞向对手\n进行攻击。自己也会受到少\n许伤害', }, - "drillRun": { - name: "直冲钻", - effect: "像钢钻一样,一边旋转身体\n一边撞击对手。容易击中要\n害", + 'drillRun': { + name: '直冲钻', + effect: '像钢钻一样,一边旋转身体\n一边撞击对手。容易击中要\n害', }, - "dualChop": { - name: "二连劈", - effect: "用身体坚硬的部分拍打对手\n进行攻击。连续2次给予伤\n害", + 'dualChop': { + name: '二连劈', + effect: '用身体坚硬的部分拍打对手\n进行攻击。连续2次给予伤\n害', }, - "heartStamp": { - name: "爱心印章", - effect: "以可爱的动作使对手疏忽,\n乘机给出强烈的一击。有时\n会使对手畏缩", + 'heartStamp': { + name: '爱心印章', + effect: '以可爱的动作使对手疏忽,\n乘机给出强烈的一击。有时\n会使对手畏缩', }, - "hornLeech": { - name: "木角", - effect: "将角刺入,吸取对手的养分。\n可以回复给予对手伤害的\n一半HP", + 'hornLeech': { + name: '木角', + effect: '将角刺入,吸取对手的养分。\n可以回复给予对手伤害的\n一半HP', }, - "sacredSword": { - name: "圣剑", - effect: "用剑切斩对手进行攻击。无\n视对手的能力变化,直接给\n予伤害", + 'sacredSword': { + name: '圣剑', + effect: '用剑切斩对手进行攻击。无\n视对手的能力变化,直接给\n予伤害', }, - "razorShell": { - name: "贝壳刃", - effect: "用锋利的贝壳切斩对手进行\n攻击。有时会降低对手的防\n御", + 'razorShell': { + name: '贝壳刃', + effect: '用锋利的贝壳切斩对手进行\n攻击。有时会降低对手的防\n御', }, - "heatCrash": { - name: "高温重压", - effect: "用燃烧的身体撞向对手进行\n攻击。自己比对手越重,威\n力越大", + 'heatCrash': { + name: '高温重压', + effect: '用燃烧的身体撞向对手进行\n攻击。自己比对手越重,威\n力越大', }, - "leafTornado": { - name: "青草搅拌器", - effect: "用锋利的叶片包裹住对手进\n行攻击。有时会降低对手的\n命中率", + 'leafTornado': { + name: '青草搅拌器', + effect: '用锋利的叶片包裹住对手进\n行攻击。有时会降低对手的\n命中率', }, - "steamroller": { - name: "疯狂滚压", - effect: "旋转揉成团的身体压扁对手。\n有时会使对手畏缩", + 'steamroller': { + name: '疯狂滚压', + effect: '旋转揉成团的身体压扁对手。\n有时会使对手畏缩', }, - "cottonGuard": { - name: "棉花防守", - effect: "用软绵绵的绒毛包裹住自己\n的身体进行守护。巨幅提高\n自己的防御", + 'cottonGuard': { + name: '棉花防守', + effect: '用软绵绵的绒毛包裹住自己\n的身体进行守护。巨幅提高\n自己的防御', }, - "nightDaze": { - name: "暗黑爆破", - effect: "放出黑暗的冲击波攻击对手。\n有时会降低对手的命中率", + 'nightDaze': { + name: '暗黑爆破', + effect: '放出黑暗的冲击波攻击对手。\n有时会降低对手的命中率', }, - "psystrike": { - name: "精神击破", - effect: "将神奇的念波实体化攻击对\n手。给予物理伤害", + 'psystrike': { + name: '精神击破', + effect: '将神奇的念波实体化攻击对\n手。给予物理伤害', }, - "tailSlap": { - name: "扫尾拍打", - effect: "用坚硬的尾巴拍打对手进行\n攻击。连续攻击2~5次", + 'tailSlap': { + name: '扫尾拍打', + effect: '用坚硬的尾巴拍打对手进行\n攻击。连续攻击2~5次', }, - "hurricane": { - name: "暴风", - effect: "用强烈的风席卷对手进行攻\n击。有时会使对手混乱", + 'hurricane': { + name: '暴风', + effect: '用强烈的风席卷对手进行攻\n击。有时会使对手混乱', }, - "headCharge": { - name: "爆炸头突击", - effect: "用厉害的爆炸头猛撞向对手\n进行攻击。自己也会受到少\n许伤害", + 'headCharge': { + name: '爆炸头突击', + effect: '用厉害的爆炸头猛撞向对手\n进行攻击。自己也会受到少\n许伤害', }, - "gearGrind": { - name: "齿轮飞盘", - effect: "向对手投掷钢铁齿轮进行攻\n击。连续2次给予伤害", + 'gearGrind': { + name: '齿轮飞盘', + effect: '向对手投掷钢铁齿轮进行攻\n击。连续2次给予伤害', }, - "searingShot": { - name: "火焰弹", - effect: "用熊熊烈火攻击自己周围所\n有的宝可梦。有时会陷入灼\n伤状态", + 'searingShot': { + name: '火焰弹', + effect: '用熊熊烈火攻击自己周围所\n有的宝可梦。有时会陷入灼\n伤状态', }, - "technoBlast": { - name: "高科技光炮", - effect: "向对手放出光弹。属性会根\n据自己携带的卡带不同而改\n变", + 'technoBlast': { + name: '高科技光炮', + effect: '向对手放出光弹。属性会根\n据自己携带的卡带不同而改\n变', }, - "relicSong": { - name: "古老之歌", - effect: "让对手听古老之歌,打动对\n手的内心进行攻击。有时会\n让对手陷入睡眠状态", + 'relicSong': { + name: '古老之歌', + effect: '让对手听古老之歌,打动对\n手的内心进行攻击。有时会\n让对手陷入睡眠状态', }, - "secretSword": { - name: "神秘之剑", - effect: "用长角切斩对手进行攻击。\n角上拥有的神奇力量将给予\n物理伤害", + 'secretSword': { + name: '神秘之剑', + effect: '用长角切斩对手进行攻击。\n角上拥有的神奇力量将给予\n物理伤害', }, - "glaciate": { - name: "冰封世界", - effect: "将冰冻的冷气吹向对手进行\n攻击。会降低对手的速度", + 'glaciate': { + name: '冰封世界', + effect: '将冰冻的冷气吹向对手进行\n攻击。会降低对手的速度', }, - "boltStrike": { - name: "雷击", - effect: "让强大的电流覆盖全身,猛\n撞向对手进行攻击。有时会\n让对手陷入麻痹状态", + 'boltStrike': { + name: '雷击', + effect: '让强大的电流覆盖全身,猛\n撞向对手进行攻击。有时会\n让对手陷入麻痹状态', }, - "blueFlare": { - name: "青焰", - effect: "用美丽而激烈的青焰包裹住\n对手进行攻击。有时会让对\n手陷入灼伤状态", + 'blueFlare': { + name: '青焰', + effect: '用美丽而激烈的青焰包裹住\n对手进行攻击。有时会让对\n手陷入灼伤状态', }, - "fieryDance": { - name: "火之舞", - effect: "让火焰覆盖全身,振翅攻击\n对手。有时会提高自己的特\n攻", + 'fieryDance': { + name: '火之舞', + effect: '让火焰覆盖全身,振翅攻击\n对手。有时会提高自己的特\n攻', }, - "freezeShock": { - name: "冰冻伏特", - effect: "用覆盖着电流的冰块,在第\n2回合撞向对手。有时会让\n对手陷入麻痹状态", + 'freezeShock': { + name: '冰冻伏特', + effect: '用覆盖着电流的冰块,在第\n2回合撞向对手。有时会让\n对手陷入麻痹状态', }, - "iceBurn": { - name: "极寒冷焰", - effect: "用能够冻结一切的强烈冷气,\n在第2回合包裹住对手。\n有时会让对手陷入灼伤状态", + 'iceBurn': { + name: '极寒冷焰', + effect: '用能够冻结一切的强烈冷气,\n在第2回合包裹住对手。\n有时会让对手陷入灼伤状态', }, - "snarl": { - name: "大声咆哮", - effect: "没完没了地大声斥责,从而\n降低对手的特攻", + 'snarl': { + name: '大声咆哮', + effect: '没完没了地大声斥责,从而\n降低对手的特攻', }, - "icicleCrash": { - name: "冰柱坠击", - effect: "用大冰柱激烈地撞向对手进\n行攻击。有时会使对手畏缩", + 'icicleCrash': { + name: '冰柱坠击', + effect: '用大冰柱激烈地撞向对手进\n行攻击。有时会使对手畏缩', }, - "vCreate": { - name: "V热焰", - effect: "从前额产生灼热的火焰,舍\n身撞击对手。防御、特防和\n速度会降低", + 'vCreate': { + name: 'V热焰', + effect: '从前额产生灼热的火焰,舍\n身撞击对手。防御、特防和\n速度会降低', }, - "fusionFlare": { - name: "交错火焰", - effect: "释放出巨大的火焰。受到巨\n大的闪电影响时,招式威力\n会提高", + 'fusionFlare': { + name: '交错火焰', + effect: '释放出巨大的火焰。受到巨\n大的闪电影响时,招式威力\n会提高', }, - "fusionBolt": { - name: "交错闪电", - effect: "释放出巨大的闪电。受到巨\n大的火焰影响时,招式威力\n会提高", + 'fusionBolt': { + name: '交错闪电', + effect: '释放出巨大的闪电。受到巨\n大的火焰影响时,招式威力\n会提高', }, - "flyingPress": { - name: "飞身重压", - effect: "从空中俯冲向对手。此招式\n同时带有格斗属性和飞行属\n性", + 'flyingPress': { + name: '飞身重压', + effect: '从空中俯冲向对手。此招式\n同时带有格斗属性和飞行属\n性', }, - "matBlock": { - name: "掀榻榻米", - effect: "将掀起来的榻榻米当作盾牌,\n防住自己和同伴免受招式\n伤害。变化招式无法防住", + 'matBlock': { + name: '掀榻榻米', + effect: '将掀起来的榻榻米当作盾牌,\n防住自己和同伴免受招式\n伤害。变化招式无法防住', }, - "belch": { - name: "打嗝", - effect: "朝着对手打嗝,并给予伤害。\n如果不吃树果则无法使出", + 'belch': { + name: '打嗝', + effect: '朝着对手打嗝,并给予伤害。\n如果不吃树果则无法使出', }, - "rototiller": { - name: "耕地", - effect: "翻耕土地,使草木更容易成\n长。会提高草属性宝可梦的\n攻击和特攻", + 'rototiller': { + name: '耕地', + effect: '翻耕土地,使草木更容易成\n长。会提高草属性宝可梦的\n攻击和特攻', }, - "stickyWeb": { - name: "黏黏网", - effect: "在对手周围围上黏黏的网,\n降低替换出场的对手的速度", + 'stickyWeb': { + name: '黏黏网', + effect: '在对手周围围上黏黏的网,\n降低替换出场的对手的速度', }, - "fellStinger": { - name: "致命针刺", - effect: "如果使用此招式打倒对手,\n攻击会巨幅提高", + 'fellStinger': { + name: '致命针刺', + effect: '如果使用此招式打倒对手,\n攻击会巨幅提高', }, - "phantomForce": { - name: "潜灵奇袭", - effect: "第1回合消失在某处,第2\n回合攻击对手。可以无视守\n护进行攻击", + 'phantomForce': { + name: '潜灵奇袭', + effect: '第1回合消失在某处,第2\n回合攻击对手。可以无视守\n护进行攻击', }, - "trickOrTreat": { - name: "万圣夜", - effect: "邀请对手参加万圣夜。使对\n手被追加幽灵属性", + 'trickOrTreat': { + name: '万圣夜', + effect: '邀请对手参加万圣夜。使对\n手被追加幽灵属性', }, - "nobleRoar": { - name: "战吼", - effect: "发出战吼威吓对手,从而降\n低对手的攻击和特攻", + 'nobleRoar': { + name: '战吼', + effect: '发出战吼威吓对手,从而降\n低对手的攻击和特攻', }, - "ionDeluge": { - name: "等离子浴", - effect: "将带电粒子扩散开来,使一\n般属性的招式变成电属性", + 'ionDeluge': { + name: '等离子浴', + effect: '将带电粒子扩散开来,使一\n般属性的招式变成电属性', }, - "parabolicCharge": { - name: "抛物面充电", - effect: "给周围全体宝可梦造成伤害。\n可以回复给予伤害的一半\nHP", + 'parabolicCharge': { + name: '抛物面充电', + effect: '给周围全体宝可梦造成伤害。\n可以回复给予伤害的一半\nHP', }, - "forestsCurse": { - name: "森林咒术", - effect: "向对手施加森林咒术。中了\n咒术的对手会被追加草属性", + 'forestsCurse': { + name: '森林咒术', + effect: '向对手施加森林咒术。中了\n咒术的对手会被追加草属性', }, - "petalBlizzard": { - name: "落英缤纷", - effect: "猛烈地刮起飞雪般的落花,\n攻击周围所有的宝可梦,并\n给予伤害", + 'petalBlizzard': { + name: '落英缤纷', + effect: '猛烈地刮起飞雪般的落花,\n攻击周围所有的宝可梦,并\n给予伤害', }, - "freezeDry": { - name: "冷冻干燥", - effect: "急剧冷冻对手,有时会让对\n手陷入冰冻状态。对于水属\n性宝可梦也是效果绝佳", + 'freezeDry': { + name: '冷冻干燥', + effect: '急剧冷冻对手,有时会让对\n手陷入冰冻状态。对于水属\n性宝可梦也是效果绝佳', }, - "disarmingVoice": { - name: "魅惑之声", - effect: "发出魅惑的叫声,给予对手\n精神上的伤害。攻击必定会\n命中", + 'disarmingVoice': { + name: '魅惑之声', + effect: '发出魅惑的叫声,给予对手\n精神上的伤害。攻击必定会\n命中', }, - "partingShot": { - name: "抛下狠话", - effect: "抛下狠话威吓对手,降低攻\n击和特攻后,和后备宝可梦\n进行替换", + 'partingShot': { + name: '抛下狠话', + effect: '抛下狠话威吓对手,降低攻\n击和特攻后,和后备宝可梦\n进行替换', }, - "topsyTurvy": { - name: "颠倒", - effect: "颠倒对手身上的所有能力变\n化,变成和原来相反的状态", + 'topsyTurvy': { + name: '颠倒', + effect: '颠倒对手身上的所有能力变\n化,变成和原来相反的状态', }, - "drainingKiss": { - name: "吸取之吻", - effect: "用一个吻吸取对手的HP。\n回复给予对手伤害的一半以\n上的HP", + 'drainingKiss': { + name: '吸取之吻', + effect: '用一个吻吸取对手的HP。\n回复给予对手伤害的一半以\n上的HP', }, - "craftyShield": { - name: "戏法防守", - effect: "使用神奇的力量防住攻击我\n方的变化招式。但无法防住\n伤害招式的攻击", + 'craftyShield': { + name: '戏法防守', + effect: '使用神奇的力量防住攻击我\n方的变化招式。但无法防住\n伤害招式的攻击', }, - "flowerShield": { - name: "鲜花防守", - effect: "使用神奇的力量提高在场的\n所有草属性宝可梦的防御", + 'flowerShield': { + name: '鲜花防守', + effect: '使用神奇的力量提高在场的\n所有草属性宝可梦的防御', }, - "grassyTerrain": { - name: "青草场地", - effect: "在5回合内变成青草场地。\n地面上的宝可梦每回合都能\n回复。草属性的招式威力还\n会提高", + 'grassyTerrain': { + name: '青草场地', + effect: '在5回合内变成青草场地。\n地面上的宝可梦每回合都能\n回复。草属性的招式威力还\n会提高', }, - "mistyTerrain": { - name: "薄雾场地", - effect: "在5回合内,地面上的宝可\n梦不会陷入异常状态。龙属\n性招式的伤害也会减半", + 'mistyTerrain': { + name: '薄雾场地', + effect: '在5回合内,地面上的宝可\n梦不会陷入异常状态。龙属\n性招式的伤害也会减半', }, - "electrify": { - name: "输电", - effect: "对手使出招式前,如果输电,\n则该回合对手的招式变成\n电属性", + 'electrify': { + name: '输电', + effect: '对手使出招式前,如果输电,\n则该回合对手的招式变成\n电属性', }, - "playRough": { - name: "嬉闹", - effect: "与对手嬉闹并攻击。有时会\n降低对手的攻击", + 'playRough': { + name: '嬉闹', + effect: '与对手嬉闹并攻击。有时会\n降低对手的攻击', }, - "fairyWind": { - name: "妖精之风", - effect: "刮起妖精之风,吹向对手进\n行攻击", + 'fairyWind': { + name: '妖精之风', + effect: '刮起妖精之风,吹向对手进\n行攻击', }, - "moonblast": { - name: "月亮之力", - effect: "借用月亮的力量攻击对手。\n有时会降低对手的特攻", + 'moonblast': { + name: '月亮之力', + effect: '借用月亮的力量攻击对手。\n有时会降低对手的特攻', }, - "boomburst": { - name: "爆音波", - effect: "通过震耳欲聋的爆炸声产生\n的破坏力,攻击自己周围所\n有的宝可梦", + 'boomburst': { + name: '爆音波', + effect: '通过震耳欲聋的爆炸声产生\n的破坏力,攻击自己周围所\n有的宝可梦', }, - "fairyLock": { - name: "妖精之锁", - effect: "通过封锁,下一回合所有的\n宝可梦都无法逃走", + 'fairyLock': { + name: '妖精之锁', + effect: '通过封锁,下一回合所有的\n宝可梦都无法逃走', }, - "kingsShield": { - name: "王者盾牌", - effect: "防住对手攻击的同时,自己\n变为防御姿态。能够降低所\n接触到的对手的攻击", + 'kingsShield': { + name: '王者盾牌', + effect: '防住对手攻击的同时,自己\n变为防御姿态。能够降低所\n接触到的对手的攻击', }, - "playNice": { - name: "和睦相处", - effect: "和对手和睦相处,使其失去\n战斗的气力,从而降低对手\n的攻击", + 'playNice': { + name: '和睦相处', + effect: '和对手和睦相处,使其失去\n战斗的气力,从而降低对手\n的攻击', }, - "confide": { - name: "密语", - effect: "和对手进行密语,使其失去\n集中力,从而降低对手的特\n攻", + 'confide': { + name: '密语', + effect: '和对手进行密语,使其失去\n集中力,从而降低对手的特\n攻', }, - "diamondStorm": { - name: "钻石风暴", - effect: "掀起钻石风暴给予伤害。有\n时会大幅提高自己的防御", + 'diamondStorm': { + name: '钻石风暴', + effect: '掀起钻石风暴给予伤害。有\n时会大幅提高自己的防御', }, - "steamEruption": { - name: "蒸汽爆炸", - effect: "将滚烫的蒸汽喷向对手。有\n时会让对手灼伤", + 'steamEruption': { + name: '蒸汽爆炸', + effect: '将滚烫的蒸汽喷向对手。有\n时会让对手灼伤', }, - "hyperspaceHole": { - name: "异次元洞", - effect: "通过异次元洞,突然出现在\n对手的侧面进行攻击。还可\n以无视守住和看穿等招式", + 'hyperspaceHole': { + name: '异次元洞', + effect: '通过异次元洞,突然出现在\n对手的侧面进行攻击。还可\n以无视守住和看穿等招式', }, - "waterShuriken": { - name: "飞水手里剑", - effect: "用粘液制成的手里剑,连续\n攻击2~5次。必定能够先\n制攻击", + 'waterShuriken': { + name: '飞水手里剑', + effect: '用粘液制成的手里剑,连续\n攻击2~5次。必定能够先\n制攻击', }, - "mysticalFire": { - name: "魔法火焰", - effect: "从口中喷出特别灼热的火焰\n进行攻击。降低对手的特攻", + 'mysticalFire': { + name: '魔法火焰', + effect: '从口中喷出特别灼热的火焰\n进行攻击。降低对手的特攻', }, - "spikyShield": { - name: "尖刺防守", - effect: "防住对手攻击的同时,削减\n接触到自己的对手的体力", + 'spikyShield': { + name: '尖刺防守', + effect: '防住对手攻击的同时,削减\n接触到自己的对手的体力', }, - "aromaticMist": { - name: "芳香薄雾", - effect: "通过神奇的芳香,提高我方\n宝可梦的特防", + 'aromaticMist': { + name: '芳香薄雾', + effect: '通过神奇的芳香,提高我方\n宝可梦的特防', }, - "eerieImpulse": { - name: "怪异电波", - effect: "从身体放射出怪异电波,让\n对手沐浴其中,从而大幅降\n低其特攻", + 'eerieImpulse': { + name: '怪异电波', + effect: '从身体放射出怪异电波,让\n对手沐浴其中,从而大幅降\n低其特攻', }, - "venomDrench": { - name: "毒液陷阱", - effect: "将特殊的毒液泼向对手。对\n处于中毒状态的对手,其攻\n击、特攻和速度都会降低", + 'venomDrench': { + name: '毒液陷阱', + effect: '将特殊的毒液泼向对手。对\n处于中毒状态的对手,其攻\n击、特攻和速度都会降低', }, - "powder": { - name: "粉尘", - effect: "如果被撒到粉尘的对手使用\n火招式,则会爆炸并给予伤\n害", + 'powder': { + name: '粉尘', + effect: '如果被撒到粉尘的对手使用\n火招式,则会爆炸并给予伤\n害', }, - "geomancy": { - name: "大地掌控", - effect: "第1回合吸收能量,第2回\n合大幅提高特攻、特防和速\n度", + 'geomancy': { + name: '大地掌控', + effect: '第1回合吸收能量,第2回\n合大幅提高特攻、特防和速\n度', }, - "magneticFlux": { - name: "磁场操控", - effect: "通过操控磁场,会提高特性\n为正电和负电的宝可梦的防\n御和特防", + 'magneticFlux': { + name: '磁场操控', + effect: '通过操控磁场,会提高特性\n为正电和负电的宝可梦的防\n御和特防', }, - "happyHour": { - name: "欢乐时光", - effect: "如果使用欢乐时光,战斗后\n得到的钱会翻倍", + 'happyHour': { + name: '欢乐时光', + effect: '如果使用欢乐时光,战斗后\n得到的钱会翻倍', }, - "electricTerrain": { - name: "电气场地", - effect: "在5回合内变成电气场地。\n地面上的宝可梦将无法入眠。\n电属性的招式威力还会提\n高", + 'electricTerrain': { + name: '电气场地', + effect: '在5回合内变成电气场地。\n地面上的宝可梦将无法入眠。\n电属性的招式威力还会提\n高', }, - "dazzlingGleam": { - name: "魔法闪耀", - effect: "向对手发射强光,并给予伤\n害", + 'dazzlingGleam': { + name: '魔法闪耀', + effect: '向对手发射强光,并给予伤\n害', }, - "celebrate": { - name: "庆祝", - effect: "宝可梦为十分开心的你庆祝", + 'celebrate': { + name: '庆祝', + effect: '宝可梦为十分开心的你庆祝', }, - "holdHands": { - name: "牵手", - effect: "我方宝可梦之间牵手。能带\n来非常幸福的心情", + 'holdHands': { + name: '牵手', + effect: '我方宝可梦之间牵手。能带\n来非常幸福的心情', }, - "babyDollEyes": { - name: "圆瞳", - effect: "用圆瞳凝视对手,从而降低\n其攻击。必定能够先制攻击", + 'babyDollEyes': { + name: '圆瞳', + effect: '用圆瞳凝视对手,从而降低\n其攻击。必定能够先制攻击', }, - "nuzzle": { - name: "蹭蹭脸颊", - effect: "将带电的脸颊蹭蹭对手进行\n攻击。让对手陷入麻痹状态", + 'nuzzle': { + name: '蹭蹭脸颊', + effect: '将带电的脸颊蹭蹭对手进行\n攻击。让对手陷入麻痹状态', }, - "holdBack": { - name: "手下留情", - effect: "在攻击的时候手下留情,从\n而使对手的HP至少会留下\n1HP", + 'holdBack': { + name: '手下留情', + effect: '在攻击的时候手下留情,从\n而使对手的HP至少会留下\n1HP', }, - "infestation": { - name: "纠缠不休", - effect: "在4~5回合内死缠烂打地\n进行攻击。在此期间对手将\n无法逃走", + 'infestation': { + name: '纠缠不休', + effect: '在4~5回合内死缠烂打地\n进行攻击。在此期间对手将\n无法逃走', }, - "powerUpPunch": { - name: "增强拳", - effect: "通过反复击打对手,使自己\n的拳头慢慢变硬。打中对手\n攻击就会提高", + 'powerUpPunch': { + name: '增强拳', + effect: '通过反复击打对手,使自己\n的拳头慢慢变硬。打中对手\n攻击就会提高', }, - "oblivionWing": { - name: "归天之翼", - effect: "从锁定的对手身上吸取HP。\n回复给予对手伤害的一半\n以上的HP", + 'oblivionWing': { + name: '归天之翼', + effect: '从锁定的对手身上吸取HP。\n回复给予对手伤害的一半\n以上的HP', }, - "thousandArrows": { - name: "千箭齐发", - effect: "可以击中浮在空中的宝可梦。\n空中的对手被击落后,会\n掉到地面", + 'thousandArrows': { + name: '千箭齐发', + effect: '可以击中浮在空中的宝可梦。\n空中的对手被击落后,会\n掉到地面', }, - "thousandWaves": { - name: "千波激荡", - effect: "从地面掀起波浪进行攻击。\n被掀入波浪中的对手,将无\n法从战斗中逃走", + 'thousandWaves': { + name: '千波激荡', + effect: '从地面掀起波浪进行攻击。\n被掀入波浪中的对手,将无\n法从战斗中逃走', }, - "landsWrath": { - name: "大地神力", - effect: "聚集大地的力量,将此力量\n集中攻击对手,并给予伤害", + 'landsWrath': { + name: '大地神力', + effect: '聚集大地的力量,将此力量\n集中攻击对手,并给予伤害', }, - "lightOfRuin": { - name: "破灭之光", - effect: "借用永恒之花的力量,发射\n出强力光线。自己也会受到\n非常大的伤害", + 'lightOfRuin': { + name: '破灭之光', + effect: '借用永恒之花的力量,发射\n出强力光线。自己也会受到\n非常大的伤害', }, - "originPulse": { - name: "根源波动", - effect: "用无数青白色且闪耀的光线\n攻击对手", + 'originPulse': { + name: '根源波动', + effect: '用无数青白色且闪耀的光线\n攻击对手', }, - "precipiceBlades": { - name: "断崖之剑", - effect: "将大地的力量变化为利刃攻\n击对手", + 'precipiceBlades': { + name: '断崖之剑', + effect: '将大地的力量变化为利刃攻\n击对手', }, - "dragonAscent": { - name: "画龙点睛", - effect: "从天空中急速下降攻击对手。\n自己的防御和特防会降低", + 'dragonAscent': { + name: '画龙点睛', + effect: '从天空中急速下降攻击对手。\n自己的防御和特防会降低', }, - "hyperspaceFury": { - name: "异次元猛攻", - effect: "用许多手臂,无视对手的守\n住或看穿等招式进行连续攻\n击,自己的防御会降低", + 'hyperspaceFury': { + name: '异次元猛攻', + effect: '用许多手臂,无视对手的守\n住或看穿等招式进行连续攻\n击,自己的防御会降低', }, - "breakneckBlitzPhysical": { - name: "一般Z究极无敌大冲撞", - effect: "通过Z力量气势猛烈地全力\n撞上对手。威力会根据原来\n的招式而改变", + 'breakneckBlitzPhysical': { + name: '一般Z究极无敌大冲撞', + effect: '通过Z力量气势猛烈地全力\n撞上对手。威力会根据原来\n的招式而改变', }, - "breakneckBlitzSpecial": { - name: "一般Z究极无敌大冲撞", - effect: "通过Z力量气势猛烈地全力\n撞上对手。威力会根据原来\n的招式而改变", + 'breakneckBlitzSpecial': { + name: '一般Z究极无敌大冲撞', + effect: '通过Z力量气势猛烈地全力\n撞上对手。威力会根据原来\n的招式而改变', }, - "allOutPummelingPhysical": { - name: "格斗Z全力无双激烈拳", - effect: "通过Z力量制造出能量弹,\n全力撞向对手。威力会根据\n原来的招式而改变", + 'allOutPummelingPhysical': { + name: '格斗Z全力无双激烈拳', + effect: '通过Z力量制造出能量弹,\n全力撞向对手。威力会根据\n原来的招式而改变', }, - "allOutPummelingSpecial": { - name: "格斗Z全力无双激烈拳", - effect: "通过Z力量制造出能量弹,\n全力撞向对手。威力会根据\n原来的招式而改变", + 'allOutPummelingSpecial': { + name: '格斗Z全力无双激烈拳', + effect: '通过Z力量制造出能量弹,\n全力撞向对手。威力会根据\n原来的招式而改变', }, - "supersonicSkystrikePhysical": { - name: "飞行Z极速俯冲轰烈撞", - effect: "通过Z力量猛烈地飞向天空,\n朝对手全力落下。威力会\n根据原来的招式而改变", + 'supersonicSkystrikePhysical': { + name: '飞行Z极速俯冲轰烈撞', + effect: '通过Z力量猛烈地飞向天空,\n朝对手全力落下。威力会\n根据原来的招式而改变', }, - "supersonicSkystrikeSpecial": { - name: "飞行Z极速俯冲轰烈撞", - effect: "通过Z力量猛烈地飞向天空,\n朝对手全力落下。威力会\n根据原来的招式而改变", + 'supersonicSkystrikeSpecial': { + name: '飞行Z极速俯冲轰烈撞', + effect: '通过Z力量猛烈地飞向天空,\n朝对手全力落下。威力会\n根据原来的招式而改变', }, - "acidDownpourPhysical": { - name: "毒Z强酸剧毒灭绝雨", - effect: "通过Z力量使毒沼涌起,全\n力让对手沉下去。威力会根\n据原来的招式而改变", + 'acidDownpourPhysical': { + name: '毒Z强酸剧毒灭绝雨', + effect: '通过Z力量使毒沼涌起,全\n力让对手沉下去。威力会根\n据原来的招式而改变', }, - "acidDownpourSpecial": { - name: "毒Z强酸剧毒灭绝雨", - effect: "通过Z力量使毒沼涌起,全\n力让对手沉下去。威力会根\n据原来的招式而改变", + 'acidDownpourSpecial': { + name: '毒Z强酸剧毒灭绝雨', + effect: '通过Z力量使毒沼涌起,全\n力让对手沉下去。威力会根\n据原来的招式而改变', }, - "tectonicRagePhysical": { - name: "地面Z地隆啸天大终结", - effect: "通过Z力量潜入地里最深处,\n全力撞上对手。威力会根\n据原来的招式而改变", + 'tectonicRagePhysical': { + name: '地面Z地隆啸天大终结', + effect: '通过Z力量潜入地里最深处,\n全力撞上对手。威力会根\n据原来的招式而改变', }, - "tectonicRageSpecial": { - name: "地面Z地隆啸天大终结", - effect: "通过Z力量潜入地里最深处,\n全力撞上对手。威力会根\n据原来的招式而改变", + 'tectonicRageSpecial': { + name: '地面Z地隆啸天大终结', + effect: '通过Z力量潜入地里最深处,\n全力撞上对手。威力会根\n据原来的招式而改变', }, - "continentalCrushPhysical": { - name: "岩石Z毁天灭地巨岩坠", - effect: "通过Z力量召唤大大的岩山,\n全力撞向对手。威力会根\n据原来的招式而改变", + 'continentalCrushPhysical': { + name: '岩石Z毁天灭地巨岩坠', + effect: '通过Z力量召唤大大的岩山,\n全力撞向对手。威力会根\n据原来的招式而改变', }, - "continentalCrushSpecial": { - name: "岩石Z毁天灭地巨岩坠", - effect: "通过Z力量召唤大大的岩山,\n全力撞向对手。威力会根\n据原来的招式而改变", + 'continentalCrushSpecial': { + name: '岩石Z毁天灭地巨岩坠', + effect: '通过Z力量召唤大大的岩山,\n全力撞向对手。威力会根\n据原来的招式而改变', }, - "savageSpinOutPhysical": { - name: "虫Z绝对捕食回旋斩", - effect: "通过Z力量将吐出的丝线全\n力束缚对手。威力会根据原\n来的招式而改变", + 'savageSpinOutPhysical': { + name: '虫Z绝对捕食回旋斩', + effect: '通过Z力量将吐出的丝线全\n力束缚对手。威力会根据原\n来的招式而改变', }, - "savageSpinOutSpecial": { - name: "虫Z绝对捕食回旋斩", - effect: "通过Z力量将吐出的丝线全\n力束缚对手。威力会根据原\n来的招式而改变", + 'savageSpinOutSpecial': { + name: '虫Z绝对捕食回旋斩', + effect: '通过Z力量将吐出的丝线全\n力束缚对手。威力会根据原\n来的招式而改变', }, - "neverEndingNightmarePhysical": { - name: "幽灵Z无尽暗夜之诱惑", - effect: "通过Z力量召唤强烈的怨念,\n全力降临到对手身上。威\n力会根据原来的招式而改变", + 'neverEndingNightmarePhysical': { + name: '幽灵Z无尽暗夜之诱惑', + effect: '通过Z力量召唤强烈的怨念,\n全力降临到对手身上。威\n力会根据原来的招式而改变', }, - "neverEndingNightmareSpecial": { - name: "幽灵Z无尽暗夜之诱惑", - effect: "通过Z力量召唤强烈的怨念,\n全力降临到对手身上。威\n力会根据原来的招式而改变", + 'neverEndingNightmareSpecial': { + name: '幽灵Z无尽暗夜之诱惑', + effect: '通过Z力量召唤强烈的怨念,\n全力降临到对手身上。威\n力会根据原来的招式而改变', }, - "corkscrewCrashPhysical": { - name: "钢Z超绝螺旋连击", - effect: "通过Z力量进行高速旋转,\n全力撞上对手。威力会根据\n原来的招式而改变", + 'corkscrewCrashPhysical': { + name: '钢Z超绝螺旋连击', + effect: '通过Z力量进行高速旋转,\n全力撞上对手。威力会根据\n原来的招式而改变', }, - "corkscrewCrashSpecial": { - name: "钢Z超绝螺旋连击", - effect: "通过Z力量进行高速旋转,\n全力撞上对手。威力会根据\n原来的招式而改变", + 'corkscrewCrashSpecial': { + name: '钢Z超绝螺旋连击', + effect: '通过Z力量进行高速旋转,\n全力撞上对手。威力会根据\n原来的招式而改变', }, - "infernoOverdrivePhysical": { - name: "火Z超强极限爆焰弹", - effect: "通过Z力量喷出熊熊烈火,\n全力撞向对手。威力会根据\n原来的招式而改变", + 'infernoOverdrivePhysical': { + name: '火Z超强极限爆焰弹', + effect: '通过Z力量喷出熊熊烈火,\n全力撞向对手。威力会根据\n原来的招式而改变', }, - "infernoOverdriveSpecial": { - name: "火Z超强极限爆焰弹", - effect: "通过Z力量喷出熊熊烈火,\n全力撞向对手。威力会根据\n原来的招式而改变", + 'infernoOverdriveSpecial': { + name: '火Z超强极限爆焰弹', + effect: '通过Z力量喷出熊熊烈火,\n全力撞向对手。威力会根据\n原来的招式而改变', }, - "hydroVortexPhysical": { - name: "水Z超级水流大漩涡", - effect: "通过Z力量制造大大的潮旋,\n全力吞没对手。威力会根\n据原来的招式而改变", + 'hydroVortexPhysical': { + name: '水Z超级水流大漩涡', + effect: '通过Z力量制造大大的潮旋,\n全力吞没对手。威力会根\n据原来的招式而改变', }, - "hydroVortexSpecial": { - name: "水Z超级水流大漩涡", - effect: "通过Z力量制造大大的潮旋,\n全力吞没对手。威力会根\n据原来的招式而改变", + 'hydroVortexSpecial': { + name: '水Z超级水流大漩涡', + effect: '通过Z力量制造大大的潮旋,\n全力吞没对手。威力会根\n据原来的招式而改变', }, - "bloomDoomPhysical": { - name: "草Z绚烂缤纷花怒放", - effect: "通过Z力量借助花草的能量,\n全力攻击对手。威力会根\n据原来的招式而改变", + 'bloomDoomPhysical': { + name: '草Z绚烂缤纷花怒放', + effect: '通过Z力量借助花草的能量,\n全力攻击对手。威力会根\n据原来的招式而改变', }, - "bloomDoomSpecial": { - name: "草Z绚烂缤纷花怒放", - effect: "通过Z力量借助花草的能量,\n全力攻击对手。威力会根\n据原来的招式而改变", + 'bloomDoomSpecial': { + name: '草Z绚烂缤纷花怒放', + effect: '通过Z力量借助花草的能量,\n全力攻击对手。威力会根\n据原来的招式而改变', }, - "gigavoltHavocPhysical": { - name: "电Z终极伏特狂雷闪", - effect: "通过Z力量将蓄积的强大电\n流全力撞向对手。威力会根\n据原来的招式而改变", + 'gigavoltHavocPhysical': { + name: '电Z终极伏特狂雷闪', + effect: '通过Z力量将蓄积的强大电\n流全力撞向对手。威力会根\n据原来的招式而改变', }, - "gigavoltHavocSpecial": { - name: "电Z终极伏特狂雷闪", - effect: "通过Z力量将蓄积的强大电\n流全力撞向对手。威力会根\n据原来的招式而改变", + 'gigavoltHavocSpecial': { + name: '电Z终极伏特狂雷闪', + effect: '通过Z力量将蓄积的强大电\n流全力撞向对手。威力会根\n据原来的招式而改变', }, - "shatteredPsychePhysical": { - name: "超能力Z至高精神破坏波", - effect: "通过Z力量操纵对手,全力\n使其感受到痛苦。威力会根\n据原来的招式而改变", + 'shatteredPsychePhysical': { + name: '超能力Z至高精神破坏波', + effect: '通过Z力量操纵对手,全力\n使其感受到痛苦。威力会根\n据原来的招式而改变', }, - "shatteredPsycheSpecial": { - name: "超能力Z至高精神破坏波", - effect: "通过Z力量操纵对手,全力\n使其感受到痛苦。威力会根\n据原来的招式而改变", + 'shatteredPsycheSpecial': { + name: '超能力Z至高精神破坏波', + effect: '通过Z力量操纵对手,全力\n使其感受到痛苦。威力会根\n据原来的招式而改变', }, - "subzeroSlammerPhysical": { - name: "冰Z激狂大地万里冰", - effect: "通过Z力量急剧降低气温,\n全力冰冻对手。威力会根据\n原来的招式而改变", + 'subzeroSlammerPhysical': { + name: '冰Z激狂大地万里冰', + effect: '通过Z力量急剧降低气温,\n全力冰冻对手。威力会根据\n原来的招式而改变', }, - "subzeroSlammerSpecial": { - name: "冰Z激狂大地万里冰", - effect: "通过Z力量急剧降低气温,\n全力冰冻对手。威力会根据\n原来的招式而改变", + 'subzeroSlammerSpecial': { + name: '冰Z激狂大地万里冰', + effect: '通过Z力量急剧降低气温,\n全力冰冻对手。威力会根据\n原来的招式而改变', }, - "devastatingDrakePhysical": { - name: "龙Z究极巨龙震天地", - effect: "通过Z力量将气场实体化,\n向对手全力发动袭击。威力\n会根据原来的招式而改变", + 'devastatingDrakePhysical': { + name: '龙Z究极巨龙震天地', + effect: '通过Z力量将气场实体化,\n向对手全力发动袭击。威力\n会根据原来的招式而改变', }, - "devastatingDrakeSpecial": { - name: "龙Z究极巨龙震天地", - effect: "通过Z力量将气场实体化,\n向对手全力发动袭击。威力\n会根据原来的招式而改变", + 'devastatingDrakeSpecial': { + name: '龙Z究极巨龙震天地', + effect: '通过Z力量将气场实体化,\n向对手全力发动袭击。威力\n会根据原来的招式而改变', }, - "blackHoleEclipsePhysical": { - name: "恶Z黑洞吞噬万物灭", - effect: "通过Z力量收集恶能量,全\n力将对手吸入。威力会根据\n原来的招式而改变", + 'blackHoleEclipsePhysical': { + name: '恶Z黑洞吞噬万物灭', + effect: '通过Z力量收集恶能量,全\n力将对手吸入。威力会根据\n原来的招式而改变', }, - "blackHoleEclipseSpecial": { - name: "恶Z黑洞吞噬万物灭", - effect: "通过Z力量收集恶能量,全\n力将对手吸入。威力会根据\n原来的招式而改变", + 'blackHoleEclipseSpecial': { + name: '恶Z黑洞吞噬万物灭', + effect: '通过Z力量收集恶能量,全\n力将对手吸入。威力会根据\n原来的招式而改变', }, - "twinkleTacklePhysical": { - name: "妖精Z可爱星星飞天撞", - effect: "通过Z力量制造魅惑空间,\n全力捉弄对手。威力会根据\n原来的招式而改变", + 'twinkleTacklePhysical': { + name: '妖精Z可爱星星飞天撞', + effect: '通过Z力量制造魅惑空间,\n全力捉弄对手。威力会根据\n原来的招式而改变', }, - "twinkleTackleSpecial": { - name: "妖精Z可爱星星飞天撞", - effect: "通过Z力量制造魅惑空间,\n全力捉弄对手。威力会根据\n原来的招式而改变", + 'twinkleTackleSpecial': { + name: '妖精Z可爱星星飞天撞', + effect: '通过Z力量制造魅惑空间,\n全力捉弄对手。威力会根据\n原来的招式而改变', }, - "catastropika": { - name: "皮卡丘Z皮卡皮卡必杀击", - effect: "通过Z力量,皮卡丘全身覆\n盖最强电力,全力猛扑对手", + 'catastropika': { + name: '皮卡丘Z皮卡皮卡必杀击', + effect: '通过Z力量,皮卡丘全身覆\n盖最强电力,全力猛扑对手', }, - "shoreUp": { - name: "集沙", - effect: "回复自己最大HP的一半。\n在沙暴中回复得更多", + 'shoreUp': { + name: '集沙', + effect: '回复自己最大HP的一半。\n在沙暴中回复得更多', }, - "firstImpression": { - name: "迎头一击", - effect: "威力很高的招式,但只有在\n出场战斗时,立刻使出才能\n成功", + 'firstImpression': { + name: '迎头一击', + effect: '威力很高的招式,但只有在\n出场战斗时,立刻使出才能\n成功', }, - "banefulBunker": { - name: "碉堡", - effect: "防住对手攻击的同时,让接\n触到自己的对手中毒", + 'banefulBunker': { + name: '碉堡', + effect: '防住对手攻击的同时,让接\n触到自己的对手中毒', }, - "spiritShackle": { - name: "缝影", - effect: "攻击的同时,缝住对手的影\n子,使其无法逃走", + 'spiritShackle': { + name: '缝影', + effect: '攻击的同时,缝住对手的影\n子,使其无法逃走', }, - "darkestLariat": { - name: "DD金勾臂", - effect: "旋转双臂打向对手。无视对\n手的能力变化,直接给予伤\n害", + 'darkestLariat': { + name: 'DD金勾臂', + effect: '旋转双臂打向对手。无视对\n手的能力变化,直接给予伤\n害', }, - "sparklingAria": { - name: "泡影的咏叹调", - effect: "随着唱歌会放出很多气球。\n受到此招式攻击时,灼伤会\n被治愈", + 'sparklingAria': { + name: '泡影的咏叹调', + effect: '随着唱歌会放出很多气球。\n受到此招式攻击时,灼伤会\n被治愈', }, - "iceHammer": { - name: "冰锤", - effect: "挥舞强力而沉重的拳头,给\n予对手伤害。自己的速度会\n降低", + 'iceHammer': { + name: '冰锤', + effect: '挥舞强力而沉重的拳头,给\n予对手伤害。自己的速度会\n降低', }, - "floralHealing": { - name: "花疗", - effect: "回复对手最大HP的一半。\n在青草场地时,效果会提高", + 'floralHealing': { + name: '花疗', + effect: '回复对手最大HP的一半。\n在青草场地时,效果会提高', }, - "highHorsepower": { - name: "十万马力", - effect: "使出全身力量,猛攻对手", + 'highHorsepower': { + name: '十万马力', + effect: '使出全身力量,猛攻对手', }, - "strengthSap": { - name: "吸取力量", - effect: "给自己回复和对手攻击力相\n同数值的HP,然后降低对\n手的攻击", + 'strengthSap': { + name: '吸取力量', + effect: '给自己回复和对手攻击力相\n同数值的HP,然后降低对\n手的攻击', }, - "solarBlade": { - name: "日光刃", - effect: "第1回合收集满满的日光,\n第2回合将此力量集中在剑\n上进行攻击", + 'solarBlade': { + name: '日光刃', + effect: '第1回合收集满满的日光,\n第2回合将此力量集中在剑\n上进行攻击', }, - "leafage": { - name: "树叶", - effect: "将叶片打向对手,进行攻击", + 'leafage': { + name: '树叶', + effect: '将叶片打向对手,进行攻击', }, - "spotlight": { - name: "聚光灯", - effect: "给宝可梦打上聚光灯,该回\n合只能瞄准该宝可梦", + 'spotlight': { + name: '聚光灯', + effect: '给宝可梦打上聚光灯,该回\n合只能瞄准该宝可梦', }, - "toxicThread": { - name: "毒丝", - effect: "将混有毒的丝吐向对手。使\n其中毒,从而降低对手的速\n度", + 'toxicThread': { + name: '毒丝', + effect: '将混有毒的丝吐向对手。使\n其中毒,从而降低对手的速\n度', }, - "laserFocus": { - name: "磨砺", - effect: "集中精神,下次攻击必定会\n击中要害", + 'laserFocus': { + name: '磨砺', + effect: '集中精神,下次攻击必定会\n击中要害', }, - "gearUp": { - name: "辅助齿轮", - effect: "启动齿轮,提高特性为正电\n和负电的宝可梦的攻击和特\n攻", + 'gearUp': { + name: '辅助齿轮', + effect: '启动齿轮,提高特性为正电\n和负电的宝可梦的攻击和特\n攻', }, - "throatChop": { - name: "深渊突刺", - effect: "受到此招式攻击的对手,会\n因为地狱般的痛苦,在2回\n合内,变得无法使出声音类\n招式", + 'throatChop': { + name: '深渊突刺', + effect: '受到此招式攻击的对手,会\n因为地狱般的痛苦,在2回\n合内,变得无法使出声音类\n招式', }, - "pollenPuff": { - name: "花粉团", - effect: "对敌人使用是会爆炸的团子。\n对我方使用则是给予回复\n的团子", + 'pollenPuff': { + name: '花粉团', + effect: '对敌人使用是会爆炸的团子。\n对我方使用则是给予回复\n的团子', }, - "anchorShot": { - name: "掷锚", - effect: "将锚缠住对手进行攻击。使\n对手无法逃走", + 'anchorShot': { + name: '掷锚', + effect: '将锚缠住对手进行攻击。使\n对手无法逃走', }, - "psychicTerrain": { - name: "精神场地", - effect: "在5回合内,地面上的宝可\n梦不会受到先制招式的攻击。\n超能力属性的招式威力会\n提高", + 'psychicTerrain': { + name: '精神场地', + effect: '在5回合内,地面上的宝可\n梦不会受到先制招式的攻击。\n超能力属性的招式威力会\n提高', }, - "lunge": { - name: "猛扑", - effect: "全力猛扑对手进行攻击。从\n而降低对手的攻击", + 'lunge': { + name: '猛扑', + effect: '全力猛扑对手进行攻击。从\n而降低对手的攻击', }, - "fireLash": { - name: "火焰鞭", - effect: "用燃烧的鞭子抽打对手。受\n到攻击的对手防御会降低", + 'fireLash': { + name: '火焰鞭', + effect: '用燃烧的鞭子抽打对手。受\n到攻击的对手防御会降低', }, - "powerTrip": { - name: "嚣张", - effect: "耀武扬威地攻击对手,自己\n的能力提高得越多,威力就\n越大", + 'powerTrip': { + name: '嚣张', + effect: '耀武扬威地攻击对手,自己\n的能力提高得越多,威力就\n越大', }, - "burnUp": { - name: "燃尽", - effect: "将自己全身燃烧起火焰来,\n给予对手大大的伤害。自己\n的火属性将会消失", + 'burnUp': { + name: '燃尽', + effect: '将自己全身燃烧起火焰来,\n给予对手大大的伤害。自己\n的火属性将会消失', }, - "speedSwap": { - name: "速度互换", - effect: "将对手和自己的速度进行互\n换", + 'speedSwap': { + name: '速度互换', + effect: '将对手和自己的速度进行互\n换', }, - "smartStrike": { - name: "修长之角", - effect: "用尖尖的角刺入对手进行攻\n击。攻击必定会命中", + 'smartStrike': { + name: '修长之角', + effect: '用尖尖的角刺入对手进行攻\n击。攻击必定会命中', }, - "purify": { - name: "净化", - effect: "治愈对手的异常状态。治愈\n后可以回复自己的HP", + 'purify': { + name: '净化', + effect: '治愈对手的异常状态。治愈\n后可以回复自己的HP', }, - "revelationDance": { - name: "觉醒之舞", - effect: "全力跳舞进行攻击。此招式\n的属性将变得和自己的属性\n相同", + 'revelationDance': { + name: '觉醒之舞', + effect: '全力跳舞进行攻击。此招式\n的属性将变得和自己的属性\n相同', }, - "coreEnforcer": { - name: "核心惩罚者", - effect: "如果给予过伤害的对手已经\n结束行动,其特性就会被消\n除", + 'coreEnforcer': { + name: '核心惩罚者', + effect: '如果给予过伤害的对手已经\n结束行动,其特性就会被消\n除', }, - "tropKick": { - name: "热带踢", - effect: "向对手使出来自南国的火热\n脚踢。从而降低对手的攻击", + 'tropKick': { + name: '热带踢', + effect: '向对手使出来自南国的火热\n脚踢。从而降低对手的攻击', }, - "instruct": { - name: "号令", - effect: "向对手下达指示,让其再次\n使出刚才的招式", + 'instruct': { + name: '号令', + effect: '向对手下达指示,让其再次\n使出刚才的招式', }, - "beakBlast": { - name: "鸟嘴加农炮", - effect: "先加热鸟嘴后再进行攻击。\n鸟嘴在加热时对手触碰的话,\n就会使其灼伤", + 'beakBlast': { + name: '鸟嘴加农炮', + effect: '先加热鸟嘴后再进行攻击。\n鸟嘴在加热时对手触碰的话,\n就会使其灼伤', }, - "clangingScales": { - name: "鳞片噪音", - effect: "摩擦全身鳞片,发出响亮的\n声音进行攻击。攻击后自己\n的防御会降低", + 'clangingScales': { + name: '鳞片噪音', + effect: '摩擦全身鳞片,发出响亮的\n声音进行攻击。攻击后自己\n的防御会降低', }, - "dragonHammer": { - name: "龙锤", - effect: "将身体当作锤子,向对手发\n动袭击,给予伤害", + 'dragonHammer': { + name: '龙锤', + effect: '将身体当作锤子,向对手发\n动袭击,给予伤害', }, - "brutalSwing": { - name: "狂舞挥打", - effect: "用自己的身体狂舞挥打,给\n予对手伤害", + 'brutalSwing': { + name: '狂舞挥打', + effect: '用自己的身体狂舞挥打,给\n予对手伤害', }, - "auroraVeil": { - name: "极光幕", - effect: "在5回合内减弱物理和特殊\n的伤害。只有下雪时才能使\n出", + 'auroraVeil': { + name: '极光幕', + effect: '在5回合内减弱物理和特殊\n的伤害。只有下雪时才能使\n出', }, - "sinisterArrowRaid": { - name: "狙射树枭Z遮天蔽日暗影箭", - effect: "通过Z力量制造出无数箭的\n狙射树枭将全力射穿对手进\n行攻击", + 'sinisterArrowRaid': { + name: '狙射树枭Z遮天蔽日暗影箭', + effect: '通过Z力量制造出无数箭的\n狙射树枭将全力射穿对手进\n行攻击', }, - "maliciousMoonsault": { - name: "炽焰咆哮虎Z极恶飞跃粉碎击", - effect: "通过Z力量得到强壮肉体的\n炽焰咆哮虎将全力撞向对手\n进行攻击", + 'maliciousMoonsault': { + name: '炽焰咆哮虎Z极恶飞跃粉碎击', + effect: '通过Z力量得到强壮肉体的\n炽焰咆哮虎将全力撞向对手\n进行攻击', }, - "oceanicOperetta": { - name: "西狮海壬Z海神庄严交响乐", - effect: "通过Z力量召唤大量水的西\n狮海壬将全力攻击对手", + 'oceanicOperetta': { + name: '西狮海壬Z海神庄严交响乐', + effect: '通过Z力量召唤大量水的西\n狮海壬将全力攻击对手', }, - "guardianOfAlola": { - name: "卡璞Z巨人卫士・阿罗拉", - effect: "通过Z力量得到阿罗拉之力\n的土地神宝可梦将全力进行\n攻击。对手的剩余HP会减\n少很多", + 'guardianOfAlola': { + name: '卡璞Z巨人卫士・阿罗拉', + effect: '通过Z力量得到阿罗拉之力\n的土地神宝可梦将全力进行\n攻击。对手的剩余HP会减\n少很多', }, - "soulStealing7StarStrike": { - name: "玛夏多Z七星夺魂腿", - effect: "得到Z力量的玛夏多将全力\n使出拳头和脚踢的连续招式\n叩打对手", + 'soulStealing7StarStrike': { + name: '玛夏多Z七星夺魂腿', + effect: '得到Z力量的玛夏多将全力\n使出拳头和脚踢的连续招式\n叩打对手', }, - "stokedSparksurfer": { - name: "阿罗雷Z驾雷驭电戏冲浪", - effect: "得到Z力量的阿罗拉地区的\n雷丘将全力进行攻击。从而\n让对手陷入麻痹状态", + 'stokedSparksurfer': { + name: '阿罗雷Z驾雷驭电戏冲浪', + effect: '得到Z力量的阿罗拉地区的\n雷丘将全力进行攻击。从而\n让对手陷入麻痹状态', }, - "pulverizingPancake": { - name: "卡比兽Z认真起来大爆击", - effect: "通过Z力量使得认真起来的\n卡比兽跃动巨大身躯,全力\n向对手发动袭击", + 'pulverizingPancake': { + name: '卡比兽Z认真起来大爆击', + effect: '通过Z力量使得认真起来的\n卡比兽跃动巨大身躯,全力\n向对手发动袭击', }, - "extremeEvoboost": { - name: "伊布Z九彩昇华齐聚顶", - effect: "得到Z力量的伊布将借助进\n化后伙伴们的力量,大幅提\n高能力", + 'extremeEvoboost': { + name: '伊布Z九彩昇华齐聚顶', + effect: '得到Z力量的伊布将借助进\n化后伙伴们的力量,大幅提\n高能力', }, - "genesisSupernova": { - name: "梦幻Z起源超新星大爆炸", - effect: "得到Z力量的梦幻将全力攻\n击对手。脚下会变成精神场\n地", + 'genesisSupernova': { + name: '梦幻Z起源超新星大爆炸', + effect: '得到Z力量的梦幻将全力攻\n击对手。脚下会变成精神场\n地', }, - "shellTrap": { - name: "陷阱甲壳", - effect: "设下甲壳陷阱。如果对手使\n出物理招式,陷阱就会爆炸\n并给予对手伤害", + 'shellTrap': { + name: '陷阱甲壳', + effect: '设下甲壳陷阱。如果对手使\n出物理招式,陷阱就会爆炸\n并给予对手伤害', }, - "fleurCannon": { - name: "花朵加农炮", - effect: "放出强力光束后,自己的特\n攻会大幅降低", + 'fleurCannon': { + name: '花朵加农炮', + effect: '放出强力光束后,自己的特\n攻会大幅降低', }, - "psychicFangs": { - name: "精神之牙", - effect: "利用精神力量咬住对手进行\n攻击。还可以破坏光墙和反\n射壁等", + 'psychicFangs': { + name: '精神之牙', + effect: '利用精神力量咬住对手进行\n攻击。还可以破坏光墙和反\n射壁等', }, - "stompingTantrum": { - name: "跺脚", - effect: "化悔恨为力量进行攻击。如\n果上一回合招式没有打中,\n威力就会翻倍", + 'stompingTantrum': { + name: '跺脚', + effect: '化悔恨为力量进行攻击。如\n果上一回合招式没有打中,\n威力就会翻倍', }, - "shadowBone": { - name: "暗影之骨", - effect: "用附有灵魂的骨头殴打对手\n进行攻击。有时会降低对手\n的防御", + 'shadowBone': { + name: '暗影之骨', + effect: '用附有灵魂的骨头殴打对手\n进行攻击。有时会降低对手\n的防御', }, - "accelerock": { - name: "冲岩", - effect: "迅速撞向对手进行攻击。必\n定能够先制攻击", + 'accelerock': { + name: '冲岩', + effect: '迅速撞向对手进行攻击。必\n定能够先制攻击', }, - "liquidation": { - name: "水流裂破", - effect: "用水之力量撞向对手进行攻\n击。有时会降低对手的防御", + 'liquidation': { + name: '水流裂破', + effect: '用水之力量撞向对手进行攻\n击。有时会降低对手的防御', }, - "prismaticLaser": { - name: "棱镜镭射", - effect: "用棱镜的力量发射强烈光线。\n下一回合自己将无法动弹", + 'prismaticLaser': { + name: '棱镜镭射', + effect: '用棱镜的力量发射强烈光线。\n下一回合自己将无法动弹', }, - "spectralThief": { - name: "暗影偷盗", - effect: "潜入对手的影子进行攻击。\n会夺取对手的能力提升", + 'spectralThief': { + name: '暗影偷盗', + effect: '潜入对手的影子进行攻击。\n会夺取对手的能力提升', }, - "sunsteelStrike": { - name: "流星闪冲", - effect: "以流星般的气势猛撞对手。\n可以无视对手的特性进行攻\n击", + 'sunsteelStrike': { + name: '流星闪冲', + effect: '以流星般的气势猛撞对手。\n可以无视对手的特性进行攻\n击', }, - "moongeistBeam": { - name: "暗影之光", - effect: "放出奇怪的光线攻击对手。\n可以无视对手的特性进行攻\n击", + 'moongeistBeam': { + name: '暗影之光', + effect: '放出奇怪的光线攻击对手。\n可以无视对手的特性进行攻\n击', }, - "tearfulLook": { - name: "泪眼汪汪", - effect: "变得泪眼汪汪,让对手丧失\n斗志。从而降低对手的攻击\n和特攻", + 'tearfulLook': { + name: '泪眼汪汪', + effect: '变得泪眼汪汪,让对手丧失\n斗志。从而降低对手的攻击\n和特攻', }, - "zingZap": { - name: "麻麻刺刺", - effect: "撞向对手,并发出强电,使\n其感到麻麻刺刺的。有时会\n使对手畏缩", + 'zingZap': { + name: '麻麻刺刺', + effect: '撞向对手,并发出强电,使\n其感到麻麻刺刺的。有时会\n使对手畏缩', }, - "naturesMadness": { - name: "自然之怒", - effect: "向对手释放自然之怒。对手\n的HP会减半", + 'naturesMadness': { + name: '自然之怒', + effect: '向对手释放自然之怒。对手\n的HP会减半', }, - "multiAttack": { - name: "多属性攻击", - effect: "一边覆盖高能量,一边撞向\n对手进行攻击。根据存储碟\n不同,属性会改变", + 'multiAttack': { + name: '多属性攻击', + effect: '一边覆盖高能量,一边撞向\n对手进行攻击。根据存储碟\n不同,属性会改变', }, - "tenMillionVoltThunderbolt": { - name: "智皮卡Z千万伏特", - effect: "戴着帽子的皮卡丘将通过Z\n力量增强的电击全力释放给\n对手。容易击中要害", + 'tenMillionVoltThunderbolt': { + name: '智皮卡Z千万伏特', + effect: '戴着帽子的皮卡丘将通过Z\n力量增强的电击全力释放给\n对手。容易击中要害', }, - "mindBlown": { - name: "惊爆大头", - effect: "让自己的头爆炸,来攻击周\n围的一切。自己也会受到伤\n害", + 'mindBlown': { + name: '惊爆大头', + effect: '让自己的头爆炸,来攻击周\n围的一切。自己也会受到伤\n害', }, - "plasmaFists": { - name: "等离子闪电拳", - effect: "用覆盖着电流的拳头进行攻\n击。使一般属性的招式变成\n电属性", + 'plasmaFists': { + name: '等离子闪电拳', + effect: '用覆盖着电流的拳头进行攻\n击。使一般属性的招式变成\n电属性', }, - "photonGeyser": { - name: "光子喷涌", - effect: "用光柱来进行攻击。比较自\n己的攻击和特攻,用数值相\n对较高的一项给予对方伤害", + 'photonGeyser': { + name: '光子喷涌', + effect: '用光柱来进行攻击。比较自\n己的攻击和特攻,用数值相\n对较高的一项给予对方伤害', }, - "lightThatBurnsTheSky": { - name: "究极奈克洛Z焚天灭世炽光爆", - effect: "奈克洛兹玛会无视对手的特\n性效果,在攻击和特攻之间,\n用数值相对较高的一项给\n予对方伤害", + 'lightThatBurnsTheSky': { + name: '究极奈克洛Z焚天灭世炽光爆', + effect: '奈克洛兹玛会无视对手的特\n性效果,在攻击和特攻之间,\n用数值相对较高的一项给\n予对方伤害', }, - "searingSunrazeSmash": { - name: "索尔迦雷欧Z日光回旋下苍穹", - effect: "得到Z力量的索尔迦雷欧将\n全力进行攻击。可以无视对\n手的特性效果", + 'searingSunrazeSmash': { + name: '索尔迦雷欧Z日光回旋下苍穹', + effect: '得到Z力量的索尔迦雷欧将\n全力进行攻击。可以无视对\n手的特性效果', }, - "menacingMoonrazeMaelstrom": { - name: "露奈雅拉Z月华飞溅落灵霄", - effect: "得到Z力量的露奈雅拉将全\n力进行攻击。可以无视对手\n的特性效果", + 'menacingMoonrazeMaelstrom': { + name: '露奈雅拉Z月华飞溅落灵霄', + effect: '得到Z力量的露奈雅拉将全\n力进行攻击。可以无视对手\n的特性效果', }, - "letsSnuggleForever": { - name: "谜拟丘Z亲密无间大乱揍", - effect: "得到Z力量的谜拟Q将全力\n进行乱揍攻击", + 'letsSnuggleForever': { + name: '谜拟丘Z亲密无间大乱揍', + effect: '得到Z力量的谜拟Q将全力\n进行乱揍攻击', }, - "splinteredStormshards": { - name: "鬃岩狼人Z狼啸石牙飓风暴", - effect: "得到Z力量的鬃岩狼人将全\n力进行攻击。而且会消除场\n地状态", + 'splinteredStormshards': { + name: '鬃岩狼人Z狼啸石牙飓风暴', + effect: '得到Z力量的鬃岩狼人将全\n力进行攻击。而且会消除场\n地状态', }, - "clangorousSoulblaze": { - name: "杖尾鳞甲龙Z炽魂热舞烈音爆", - effect: "得到Z力量的杖尾鳞甲龙将\n全力攻击对手。并且自己的\n能力会提高", + 'clangorousSoulblaze': { + name: '杖尾鳞甲龙Z炽魂热舞烈音爆', + effect: '得到Z力量的杖尾鳞甲龙将\n全力攻击对手。并且自己的\n能力会提高', }, - "zippyZap": { - name: "电电加速", - effect: "The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user's evasiveness.", + 'zippyZap': { + name: '电电加速', + effect: 'The user attacks the target with bursts of electricity at high speed. This move always goes first and raises the user\'s evasiveness.', }, - "splishySplash": { - name: "滔滔冲浪", - effect: "往巨浪中注入电能后冲撞对\n手进行攻击。有时会让对手\n陷入麻痹状态", + 'splishySplash': { + name: '滔滔冲浪', + effect: '往巨浪中注入电能后冲撞对\n手进行攻击。有时会让对手\n陷入麻痹状态', }, - "floatyFall": { - name: "飘飘坠落", - effect: "轻飘飘地浮起来后,再猛地\n俯冲下去进行攻击。有时会\n使对手畏缩", + 'floatyFall': { + name: '飘飘坠落', + effect: '轻飘飘地浮起来后,再猛地\n俯冲下去进行攻击。有时会\n使对手畏缩', }, - "pikaPapow": { - name: "闪闪雷光", - effect: "皮卡丘越喜欢训练家,电击\n的威力就越强。攻击必定会\n命中", + 'pikaPapow': { + name: '闪闪雷光', + effect: '皮卡丘越喜欢训练家,电击\n的威力就越强。攻击必定会\n命中', }, - "bouncyBubble": { - name: "活活气泡", - effect: "投掷水球进行攻击。吸水后\n能回复等同于造成的伤害一\n半的HP", + 'bouncyBubble': { + name: '活活气泡', + effect: '投掷水球进行攻击。吸水后\n能回复等同于造成的伤害一\n半的HP', }, - "buzzyBuzz": { - name: "麻麻电击", - effect: "放出电击攻击对手。让对手\n陷入麻痹状态", + 'buzzyBuzz': { + name: '麻麻电击', + effect: '放出电击攻击对手。让对手\n陷入麻痹状态', }, - "sizzlySlide": { - name: "熊熊火爆", - effect: "用燃起大火的身体猛烈地冲\n撞对手。让对手陷入灼伤状\n态", + 'sizzlySlide': { + name: '熊熊火爆', + effect: '用燃起大火的身体猛烈地冲\n撞对手。让对手陷入灼伤状\n态', }, - "glitzyGlow": { - name: "哗哗气场", - effect: "利用念力强攻,粉碎对方信\n心。制造一道能减弱对手特\n殊攻击的神奇墙壁", + 'glitzyGlow': { + name: '哗哗气场', + effect: '利用念力强攻,粉碎对方信\n心。制造一道能减弱对手特\n殊攻击的神奇墙壁', }, - "baddyBad": { - name: "坏坏领域", - effect: "恶行恶相地进行攻击。制造\n一道能减弱对手物理攻击的\n神奇墙壁", + 'baddyBad': { + name: '坏坏领域', + effect: '恶行恶相地进行攻击。制造\n一道能减弱对手物理攻击的\n神奇墙壁', }, - "sappySeed": { - name: "茁茁炸弹", - effect: "长出巨大的藤蔓,播撒种子\n进行攻击。种子每回合都会\n吸取对手的HP", + 'sappySeed': { + name: '茁茁炸弹', + effect: '长出巨大的藤蔓,播撒种子\n进行攻击。种子每回合都会\n吸取对手的HP', }, - "freezyFrost": { - name: "冰冰霜冻", - effect: "利用冰冷的黑雾结晶进行攻\n击。使全体宝可梦的能力变\n回原点", + 'freezyFrost': { + name: '冰冰霜冻', + effect: '利用冰冷的黑雾结晶进行攻\n击。使全体宝可梦的能力变\n回原点', }, - "sparklySwirl": { - name: "亮亮风暴", - effect: "利用芬芳刺鼻的龙卷风吞噬\n对方。能治愈我方宝可梦的\n异常状态", + 'sparklySwirl': { + name: '亮亮风暴', + effect: '利用芬芳刺鼻的龙卷风吞噬\n对方。能治愈我方宝可梦的\n异常状态', }, - "veeveeVolley": { - name: "砰砰击破", - effect: "伊布越喜欢训练家,冲撞的\n威力就越强。攻击必定会命\n中", + 'veeveeVolley': { + name: '砰砰击破', + effect: '伊布越喜欢训练家,冲撞的\n威力就越强。攻击必定会命\n中', }, - "doubleIronBash": { - name: "钢拳双击", - effect: "以胸口的螺帽为中心旋转,\n并连续2次挥动手臂打击对\n手。有时会使对手畏缩", + 'doubleIronBash': { + name: '钢拳双击', + effect: '以胸口的螺帽为中心旋转,\n并连续2次挥动手臂打击对\n手。有时会使对手畏缩', }, - "maxGuard": { - name: "极巨防壁", - effect: "完全抵挡对手的攻击。连续\n使出则容易失败", + 'maxGuard': { + name: '极巨防壁', + effect: '完全抵挡对手的攻击。连续\n使出则容易失败', }, - "dynamaxCannon": { - name: "极巨炮", - effect: "将凝缩在体内的能量从核心\n放出进行攻击", + 'dynamaxCannon': { + name: '极巨炮', + effect: '将凝缩在体内的能量从核心\n放出进行攻击', }, - "snipeShot": { - name: "狙击", - effect: "能无视具有吸引对手招式效\n果的特性或招式的影响。可\n以向选定的对手进行攻击", + 'snipeShot': { + name: '狙击', + effect: '能无视具有吸引对手招式效\n果的特性或招式的影响。可\n以向选定的对手进行攻击', }, - "jawLock": { - name: "紧咬不放", - effect: "使双方直到一方昏厥为止无\n法替换宝可梦。其中一方退\n场则可以解除效果", + 'jawLock': { + name: '紧咬不放', + effect: '使双方直到一方昏厥为止无\n法替换宝可梦。其中一方退\n场则可以解除效果', }, - "stuffCheeks": { - name: "大快朵颐", - effect: "吃掉携带的树果,大幅提高\n防御", + 'stuffCheeks': { + name: '大快朵颐', + effect: '吃掉携带的树果,大幅提高\n防御', }, - "noRetreat": { - name: "背水一战", - effect: "提高自己的所有能力,但无\n法替换或逃走", + 'noRetreat': { + name: '背水一战', + effect: '提高自己的所有能力,但无\n法替换或逃走', }, - "tarShot": { - name: "沥青射击", - effect: "泼洒黏糊糊的沥青,降低对\n手的速度。火属性会变成对\n手的弱点", + 'tarShot': { + name: '沥青射击', + effect: '泼洒黏糊糊的沥青,降低对\n手的速度。火属性会变成对\n手的弱点', }, - "magicPowder": { - name: "魔法粉", - effect: "向对手喷洒魔法粉,使对手\n变为超能力属性", + 'magicPowder': { + name: '魔法粉', + effect: '向对手喷洒魔法粉,使对手\n变为超能力属性', }, - "dragonDarts": { - name: "龙箭", - effect: "让多龙梅西亚进行2次攻击。\n如果对手有2只宝可梦,\n则对它们各进行1次攻击", + 'dragonDarts': { + name: '龙箭', + effect: '让多龙梅西亚进行2次攻击。\n如果对手有2只宝可梦,\n则对它们各进行1次攻击', }, - "teatime": { - name: "茶会", - effect: "举办一场茶会,场上的所有\n宝可梦都会吃掉自己携带的\n树果", + 'teatime': { + name: '茶会', + effect: '举办一场茶会,场上的所有\n宝可梦都会吃掉自己携带的\n树果', }, - "octolock": { - name: "蛸固", - effect: "让对手无法逃走。对手被固\n定后,每回合都会降低防御\n和特防", + 'octolock': { + name: '蛸固', + effect: '让对手无法逃走。对手被固\n定后,每回合都会降低防御\n和特防', }, - "boltBeak": { - name: "电喙", - effect: "用带电的喙啄刺对手。如果\n比对手先出手攻击,招式的\n威力会变成2倍", + 'boltBeak': { + name: '电喙', + effect: '用带电的喙啄刺对手。如果\n比对手先出手攻击,招式的\n威力会变成2倍', }, - "fishiousRend": { - name: "鳃咬", - effect: "用坚硬的腮咬住对手。如果\n比对手先出手攻击,招式的\n威力会变成2倍", + 'fishiousRend': { + name: '鳃咬', + effect: '用坚硬的腮咬住对手。如果\n比对手先出手攻击,招式的\n威力会变成2倍', }, - "courtChange": { - name: "换场", - effect: "用神奇的力量交换双方的场\n地效果", + 'courtChange': { + name: '换场', + effect: '用神奇的力量交换双方的场\n地效果', }, - "maxFlare": { - name: "极巨火爆", - effect: "极巨化宝可梦使出的火属性\n攻击。可在5回合内让日照\n变得强烈", + 'maxFlare': { + name: '极巨火爆', + effect: '极巨化宝可梦使出的火属性\n攻击。可在5回合内让日照\n变得强烈', }, - "maxFlutterby": { - name: "极巨虫蛊", - effect: "极巨化宝可梦使出的虫属性\n攻击。会降低对手的特攻", + 'maxFlutterby': { + name: '极巨虫蛊', + effect: '极巨化宝可梦使出的虫属性\n攻击。会降低对手的特攻', }, - "maxLightning": { - name: "极巨闪电", - effect: "极巨化宝可梦使出的电属性\n攻击。可在5回合内将脚下\n变成电气场地", + 'maxLightning': { + name: '极巨闪电', + effect: '极巨化宝可梦使出的电属性\n攻击。可在5回合内将脚下\n变成电气场地', }, - "maxStrike": { - name: "极巨攻击", - effect: "极巨化宝可梦使出的一般属\n性攻击。会降低对手的速度", + 'maxStrike': { + name: '极巨攻击', + effect: '极巨化宝可梦使出的一般属\n性攻击。会降低对手的速度', }, - "maxKnuckle": { - name: "极巨拳斗", - effect: "极巨化宝可梦使出的格斗属\n性攻击。会提高我方的攻击", + 'maxKnuckle': { + name: '极巨拳斗', + effect: '极巨化宝可梦使出的格斗属\n性攻击。会提高我方的攻击', }, - "maxPhantasm": { - name: "极巨幽魂", - effect: "极巨化宝可梦使出的幽灵属\n性攻击。会降低对手的防御", + 'maxPhantasm': { + name: '极巨幽魂', + effect: '极巨化宝可梦使出的幽灵属\n性攻击。会降低对手的防御', }, - "maxHailstorm": { - name: "极巨寒冰", - effect: "极巨化宝可梦使出的冰属性\n攻击。在5回合内会下雪", + 'maxHailstorm': { + name: '极巨寒冰', + effect: '极巨化宝可梦使出的冰属性\n攻击。在5回合内会下雪', }, - "maxOoze": { - name: "极巨酸毒", - effect: "极巨化宝可梦使出的毒属性\n攻击。会提高我方的特攻", + 'maxOoze': { + name: '极巨酸毒', + effect: '极巨化宝可梦使出的毒属性\n攻击。会提高我方的特攻', }, - "maxGeyser": { - name: "极巨水流", - effect: "极巨化宝可梦使出的水属性\n攻击。可在5回合内降下大\n雨", + 'maxGeyser': { + name: '极巨水流', + effect: '极巨化宝可梦使出的水属性\n攻击。可在5回合内降下大\n雨', }, - "maxAirstream": { - name: "极巨飞冲", - effect: "极巨化宝可梦使出的飞行属\n性攻击。会提高我方的速度", + 'maxAirstream': { + name: '极巨飞冲', + effect: '极巨化宝可梦使出的飞行属\n性攻击。会提高我方的速度', }, - "maxStarfall": { - name: "极巨妖精", - effect: "极巨化宝可梦使出的妖精属\n性攻击。可在5回合内将脚\n下变成薄雾场地", + 'maxStarfall': { + name: '极巨妖精', + effect: '极巨化宝可梦使出的妖精属\n性攻击。可在5回合内将脚\n下变成薄雾场地', }, - "maxWyrmwind": { - name: "极巨龙骑", - effect: "极巨化宝可梦使出的龙属性\n攻击。会降低对手的攻击", + 'maxWyrmwind': { + name: '极巨龙骑', + effect: '极巨化宝可梦使出的龙属性\n攻击。会降低对手的攻击', }, - "maxMindstorm": { - name: "极巨超能", - effect: "极巨化宝可梦使出的超能力\n属性攻击。可在5回合内将\n脚下变成精神场地", + 'maxMindstorm': { + name: '极巨超能', + effect: '极巨化宝可梦使出的超能力\n属性攻击。可在5回合内将\n脚下变成精神场地', }, - "maxRockfall": { - name: "极巨岩石", - effect: "极巨化宝可梦使出的岩石属\n性攻击。可在5回合内卷起\n沙暴", + 'maxRockfall': { + name: '极巨岩石', + effect: '极巨化宝可梦使出的岩石属\n性攻击。可在5回合内卷起\n沙暴', }, - "maxQuake": { - name: "极巨大地", - effect: "极巨化宝可梦使出的地面属\n性攻击。会提高我方的特防", + 'maxQuake': { + name: '极巨大地', + effect: '极巨化宝可梦使出的地面属\n性攻击。会提高我方的特防', }, - "maxDarkness": { - name: "极巨恶霸", - effect: "极巨化宝可梦使出的恶属性\n攻击。会降低对手的特防", + 'maxDarkness': { + name: '极巨恶霸', + effect: '极巨化宝可梦使出的恶属性\n攻击。会降低对手的特防', }, - "maxOvergrowth": { - name: "极巨草原", - effect: "极巨化宝可梦使出的草属性\n攻击。可在5回合内将脚下\n变成青草场地", + 'maxOvergrowth': { + name: '极巨草原', + effect: '极巨化宝可梦使出的草属性\n攻击。可在5回合内将脚下\n变成青草场地', }, - "maxSteelspike": { - name: "极巨钢铁", - effect: "极巨化宝可梦使出的钢属性\n攻击。会提高我方的防御", + 'maxSteelspike': { + name: '极巨钢铁', + effect: '极巨化宝可梦使出的钢属性\n攻击。会提高我方的防御', }, - "clangorousSoul": { - name: "魂舞烈音爆", - effect: "削减少许自己的HP,使所\n有能力都提高", + 'clangorousSoul': { + name: '魂舞烈音爆', + effect: '削减少许自己的HP,使所\n有能力都提高', }, - "bodyPress": { - name: "扑击", - effect: "用身体撞向对手进行攻击。\n防御越高,给予的伤害就越\n高", + 'bodyPress': { + name: '扑击', + effect: '用身体撞向对手进行攻击。\n防御越高,给予的伤害就越\n高', }, - "decorate": { - name: "装饰", - effect: "通过装饰,大幅提高对方的\n攻击和特攻", + 'decorate': { + name: '装饰', + effect: '通过装饰,大幅提高对方的\n攻击和特攻', }, - "drumBeating": { - name: "鼓击", - effect: "用鼓点来控制鼓的根部进行\n攻击,从而降低对手的速度", + 'drumBeating': { + name: '鼓击', + effect: '用鼓点来控制鼓的根部进行\n攻击,从而降低对手的速度', }, - "snapTrap": { - name: "捕兽夹", - effect: "使用捕兽夹,在4~5回合\n内,夹住对手进行攻击", + 'snapTrap': { + name: '捕兽夹', + effect: '使用捕兽夹,在4~5回合\n内,夹住对手进行攻击', }, - "pyroBall": { - name: "火焰球", - effect: "点燃小石子,形成火球攻击\n对手。有时会使对手陷入灼\n伤状态", + 'pyroBall': { + name: '火焰球', + effect: '点燃小石子,形成火球攻击\n对手。有时会使对手陷入灼\n伤状态', }, - "behemothBlade": { - name: "巨兽斩", - effect: "以全身力气举起强大的剑,\n猛烈地劈向对手进行攻击", + 'behemothBlade': { + name: '巨兽斩', + effect: '以全身力气举起强大的剑,\n猛烈地劈向对手进行攻击', }, - "behemothBash": { - name: "巨兽弹", - effect: "将全身变化为坚固的盾,猛\n烈地撞向对手进行攻击", + 'behemothBash': { + name: '巨兽弹', + effect: '将全身变化为坚固的盾,猛\n烈地撞向对手进行攻击', }, - "auraWheel": { - name: "气场轮", - effect: "用储存在颊囊里的能量进行\n攻击,并提高自己的速度。\n其属性会随着莫鲁贝可的样\n子而改变", + 'auraWheel': { + name: '气场轮', + effect: '用储存在颊囊里的能量进行\n攻击,并提高自己的速度。\n其属性会随着莫鲁贝可的样\n子而改变', }, - "breakingSwipe": { - name: "广域破坏", - effect: "用坚韧的尾巴猛扫对手进行\n攻击,从而降低对手的攻击", + 'breakingSwipe': { + name: '广域破坏', + effect: '用坚韧的尾巴猛扫对手进行\n攻击,从而降低对手的攻击', }, - "branchPoke": { - name: "木枝突刺", - effect: "使用尖锐的树枝刺向对手进\n行攻击", + 'branchPoke': { + name: '木枝突刺', + effect: '使用尖锐的树枝刺向对手进\n行攻击', }, - "overdrive": { - name: "破音", - effect: "奏响吉他和贝斯,释放出发\n出巨响的剧烈震动攻击对手", + 'overdrive': { + name: '破音', + effect: '奏响吉他和贝斯,释放出发\n出巨响的剧烈震动攻击对手', }, - "appleAcid": { - name: "苹果酸", - effect: "使用从酸苹果中提取出来的\n酸性液体进行攻击。降低对\n手的特防", + 'appleAcid': { + name: '苹果酸', + effect: '使用从酸苹果中提取出来的\n酸性液体进行攻击。降低对\n手的特防', }, - "gravApple": { - name: "万有引力", - effect: "从高处落下苹果,给予对手\n伤害。可降低对手的防御", + 'gravApple': { + name: '万有引力', + effect: '从高处落下苹果,给予对手\n伤害。可降低对手的防御', }, - "spiritBreak": { - name: "灵魂冲击", - effect: "用足以让对手一蹶不振的气\n势进行攻击。会降低对手的\n特攻", + 'spiritBreak': { + name: '灵魂冲击', + effect: '用足以让对手一蹶不振的气\n势进行攻击。会降低对手的\n特攻', }, - "strangeSteam": { - name: "神奇蒸汽", - effect: "喷出烟雾攻击对手。有时会\n使对手混乱", + 'strangeSteam': { + name: '神奇蒸汽', + effect: '喷出烟雾攻击对手。有时会\n使对手混乱', }, - "lifeDew": { - name: "生命水滴", - effect: "喷洒出神奇的水,回复自己\n和场上同伴的HP", + 'lifeDew': { + name: '生命水滴', + effect: '喷洒出神奇的水,回复自己\n和场上同伴的HP', }, - "obstruct": { - name: "拦堵", - effect: "完全抵挡对手的攻击。连续\n使出则容易失败。一旦触碰,\n防御就会大幅降低", + 'obstruct': { + name: '拦堵', + effect: '完全抵挡对手的攻击。连续\n使出则容易失败。一旦触碰,\n防御就会大幅降低', }, - "falseSurrender": { - name: "假跪真撞", - effect: "装作低头认错的样子,用凌\n乱的头发进行突刺。攻击必\n定会命中", + 'falseSurrender': { + name: '假跪真撞', + effect: '装作低头认错的样子,用凌\n乱的头发进行突刺。攻击必\n定会命中', }, - "meteorAssault": { - name: "流星突击", - effect: "大力挥舞粗壮的茎进行攻击。\n但同时自己也会被晃晕,\n下一回合自己将无法动弹", + 'meteorAssault': { + name: '流星突击', + effect: '大力挥舞粗壮的茎进行攻击。\n但同时自己也会被晃晕,\n下一回合自己将无法动弹', }, - "eternabeam": { - name: "无极光束", - effect: "无极汰那变回原来的样子后,\n发动的最强攻击。下一回\n合自己将无法动弹", + 'eternabeam': { + name: '无极光束', + effect: '无极汰那变回原来的样子后,\n发动的最强攻击。下一回\n合自己将无法动弹', }, - "steelBeam": { - name: "铁蹄光线", - effect: "将从全身聚集的钢铁化为光\n束,激烈地发射出去。自己\n也会受到伤害", + 'steelBeam': { + name: '铁蹄光线', + effect: '将从全身聚集的钢铁化为光\n束,激烈地发射出去。自己\n也会受到伤害', }, - "expandingForce": { - name: "广域战力", - effect: "利用精神力量攻击对手。在\n精神场地上威力会有所提高,\n能对所有对手造成伤害", + 'expandingForce': { + name: '广域战力', + effect: '利用精神力量攻击对手。在\n精神场地上威力会有所提高,\n能对所有对手造成伤害', }, - "steelRoller": { - name: "铁滚轮", - effect: "在破坏场地的同时攻击对手。\n如果脚下没有任何场地状\n态存在,使出此招式时便会\n失败", + 'steelRoller': { + name: '铁滚轮', + effect: '在破坏场地的同时攻击对手。\n如果脚下没有任何场地状\n态存在,使出此招式时便会\n失败', }, - "scaleShot": { - name: "鳞射", - effect: "发射鳞片进行攻击。连续攻\n击2~5次。速度会提高但\n防御会降低", + 'scaleShot': { + name: '鳞射', + effect: '发射鳞片进行攻击。连续攻\n击2~5次。速度会提高但\n防御会降低', }, - "meteorBeam": { - name: "流星光束", - effect: "第1回合聚集宇宙之力提高\n特攻,第2回合攻击对手", + 'meteorBeam': { + name: '流星光束', + effect: '第1回合聚集宇宙之力提高\n特攻,第2回合攻击对手', }, - "shellSideArm": { - name: "臂贝武器", - effect: "从物理攻击和特殊攻击中选\n择可造成较多伤害的方式进\n行攻击。有时会让对手陷入\n中毒状态", + 'shellSideArm': { + name: '臂贝武器', + effect: '从物理攻击和特殊攻击中选\n择可造成较多伤害的方式进\n行攻击。有时会让对手陷入\n中毒状态', }, - "mistyExplosion": { - name: "薄雾炸裂", - effect: "对自己周围的所有宝可梦进\n行攻击,但使出后,自己会\n陷入昏厥。在薄雾场地上,\n招式威力会提高", + 'mistyExplosion': { + name: '薄雾炸裂', + effect: '对自己周围的所有宝可梦进\n行攻击,但使出后,自己会\n陷入昏厥。在薄雾场地上,\n招式威力会提高', }, - "grassyGlide": { - name: "青草滑梯", - effect: "仿佛在地面上滑行般地攻击\n对手。在青草场地上,必定\n能够先制攻击", + 'grassyGlide': { + name: '青草滑梯', + effect: '仿佛在地面上滑行般地攻击\n对手。在青草场地上,必定\n能够先制攻击', }, - "risingVoltage": { - name: "电力上升", - effect: "用从地面升腾而起的电击进\n行攻击。当对手处于电气场\n地上时,招式威力会变成2\n倍", + 'risingVoltage': { + name: '电力上升', + effect: '用从地面升腾而起的电击进\n行攻击。当对手处于电气场\n地上时,招式威力会变成2\n倍', }, - "terrainPulse": { - name: "大地波动", - effect: "借助场地的力量进行攻击。\n视使出招式时场地状态不同,\n招式的属性和威力会有所\n变化", + 'terrainPulse': { + name: '大地波动', + effect: '借助场地的力量进行攻击。\n视使出招式时场地状态不同,\n招式的属性和威力会有所\n变化', }, - "skitterSmack": { - name: "爬击", - effect: "从对手背后爬近后进行攻击。\n会降低对手的特攻", + 'skitterSmack': { + name: '爬击', + effect: '从对手背后爬近后进行攻击。\n会降低对手的特攻', }, - "burningJealousy": { - name: "妒火", - effect: "用嫉妒的能量攻击对手。会\n让在该回合内能力有所提高\n的宝可梦陷入灼伤状态", + 'burningJealousy': { + name: '妒火', + effect: '用嫉妒的能量攻击对手。会\n让在该回合内能力有所提高\n的宝可梦陷入灼伤状态', }, - "lashOut": { - name: "泄愤", - effect: "攻击对手以发泄对其感到的\n恼怒情绪。如果在该回合内\n自身能力遭到降低,招式的\n威力会变成2倍", + 'lashOut': { + name: '泄愤', + effect: '攻击对手以发泄对其感到的\n恼怒情绪。如果在该回合内\n自身能力遭到降低,招式的\n威力会变成2倍', }, - "poltergeist": { - name: "灵骚", - effect: "操纵对手的持有物进行攻击。\n当对手没有携带道具时,\n使出此招式时便会失败", + 'poltergeist': { + name: '灵骚', + effect: '操纵对手的持有物进行攻击。\n当对手没有携带道具时,\n使出此招式时便会失败', }, - "corrosiveGas": { - name: "腐蚀气体", - effect: "用具有强酸性的气体包裹住\n自己周围所有的宝可梦,并\n融化其所携带的道具", + 'corrosiveGas': { + name: '腐蚀气体', + effect: '用具有强酸性的气体包裹住\n自己周围所有的宝可梦,并\n融化其所携带的道具', }, - "coaching": { - name: "指导", - effect: "通过进行正确合理的指导,\n提高我方全员的攻击和防御", + 'coaching': { + name: '指导', + effect: '通过进行正确合理的指导,\n提高我方全员的攻击和防御', }, - "flipTurn": { - name: "快速折返", - effect: "在攻击之后急速返回,和后\n备宝可梦进行替换", + 'flipTurn': { + name: '快速折返', + effect: '在攻击之后急速返回,和后\n备宝可梦进行替换', }, - "tripleAxel": { - name: "三旋击", - effect: "连续3次踢对手进行攻击。\n每踢中一次,威力就会提高", + 'tripleAxel': { + name: '三旋击', + effect: '连续3次踢对手进行攻击。\n每踢中一次,威力就会提高', }, - "dualWingbeat": { - name: "双翼", - effect: "将翅膀撞向对手进行攻击。\n连续2次给予伤害", + 'dualWingbeat': { + name: '双翼', + effect: '将翅膀撞向对手进行攻击。\n连续2次给予伤害', }, - "scorchingSands": { - name: "热沙大地", - effect: "将滚烫的沙子砸向对手进行\n攻击。有时会让对手陷入灼\n伤状态", + 'scorchingSands': { + name: '热沙大地', + effect: '将滚烫的沙子砸向对手进行\n攻击。有时会让对手陷入灼\n伤状态', }, - "jungleHealing": { - name: "丛林治疗", - effect: "与丛林融为一体,回复自己\n和场上同伴的HP和状态", + 'jungleHealing': { + name: '丛林治疗', + effect: '与丛林融为一体,回复自己\n和场上同伴的HP和状态', }, - "wickedBlow": { - name: "暗冥强击", - effect: "将恶之流派修炼至大成的猛\n烈一击。必定会击中要害", + 'wickedBlow': { + name: '暗冥强击', + effect: '将恶之流派修炼至大成的猛\n烈一击。必定会击中要害', }, - "surgingStrikes": { - name: "水流连打", - effect: "将水之流派修炼至大成的仿\n若行云流水般的3次连击。\n必定会击中要害", + 'surgingStrikes': { + name: '水流连打', + effect: '将水之流派修炼至大成的仿\n若行云流水般的3次连击。\n必定会击中要害', }, - "thunderCage": { - name: "雷电囚笼", - effect: "将对手困在电流四溅的囚笼\n中,在4~5回合内进行攻\n击", + 'thunderCage': { + name: '雷电囚笼', + effect: '将对手困在电流四溅的囚笼\n中,在4~5回合内进行攻\n击', }, - "dragonEnergy": { - name: "巨龙威能", - effect: "把生命力转换为力量攻击对\n手。自己的HP越少,招式\n的威力越小", + 'dragonEnergy': { + name: '巨龙威能', + effect: '把生命力转换为力量攻击对\n手。自己的HP越少,招式\n的威力越小', }, - "freezingGlare": { - name: "冰冷视线", - effect: "从双眼发射精神力量进行攻\n击。有时会让对手陷入冰冻\n状态", + 'freezingGlare': { + name: '冰冷视线', + effect: '从双眼发射精神力量进行攻\n击。有时会让对手陷入冰冻\n状态', }, - "fieryWrath": { - name: "怒火中烧", - effect: "将愤怒转化为火焰般的气场\n进行攻击。有时会使对手畏\n缩", + 'fieryWrath': { + name: '怒火中烧', + effect: '将愤怒转化为火焰般的气场\n进行攻击。有时会使对手畏\n缩', }, - "thunderousKick": { - name: "雷鸣蹴击", - effect: "以雷电般的动作戏耍对手的\n同时使出脚踢。可降低对手\n的防御", + 'thunderousKick': { + name: '雷鸣蹴击', + effect: '以雷电般的动作戏耍对手的\n同时使出脚踢。可降低对手\n的防御', }, - "glacialLance": { - name: "雪矛", - effect: "向对手投掷掀起暴风雪的冰\n矛进行攻击", + 'glacialLance': { + name: '雪矛', + effect: '向对手投掷掀起暴风雪的冰\n矛进行攻击', }, - "astralBarrage": { - name: "星碎", - effect: "用大量的小灵体向对手发起\n攻击", + 'astralBarrage': { + name: '星碎', + effect: '用大量的小灵体向对手发起\n攻击', }, - "eerieSpell": { - name: "诡异咒语", - effect: "用强大的精神力量攻击。让\n对手最后使用的招式减少3\nPP", + 'eerieSpell': { + name: '诡异咒语', + effect: '用强大的精神力量攻击。让\n对手最后使用的招式减少3\nPP', }, - "direClaw": { - name: "克命爪", - effect: "以破灭之爪进行攻击。有时\n还会让对手陷入中毒、麻痹\n、睡眠之中的一种状态", + 'direClaw': { + name: '克命爪', + effect: '以破灭之爪进行攻击。有时\n还会让对手陷入中毒、麻痹\n、睡眠之中的一种状态', }, - "psyshieldBash": { - name: "屏障猛攻", - effect: "让意念的能量覆盖全身,撞\n向对手进行攻击。会提高自\n己的防御", + 'psyshieldBash': { + name: '屏障猛攻', + effect: '让意念的能量覆盖全身,撞\n向对手进行攻击。会提高自\n己的防御', }, - "powerShift": { - name: "力量转换", - effect: "将自己的攻击与防御互相交\n换", + 'powerShift': { + name: '力量转换', + effect: '将自己的攻击与防御互相交\n换', }, - "stoneAxe": { - name: "岩斧", - effect: "用岩石之斧进行攻击。散落\n的岩石碎片会飘浮在对手周\n围", + 'stoneAxe': { + name: '岩斧', + effect: '用岩石之斧进行攻击。散落\n的岩石碎片会飘浮在对手周\n围', }, - "springtideStorm": { - name: "阳春风暴", - effect: "用交织着爱与恨的烈风席卷\n对手进行攻击。有时会降低\n对手的攻击", + 'springtideStorm': { + name: '阳春风暴', + effect: '用交织着爱与恨的烈风席卷\n对手进行攻击。有时会降低\n对手的攻击', }, - "mysticalPower": { - name: "神秘之力", - effect: "放出不可思议的力量攻击。\n会提高自己的特攻", + 'mysticalPower': { + name: '神秘之力', + effect: '放出不可思议的力量攻击。\n会提高自己的特攻', }, - "ragingFury": { - name: "大愤慨", - effect: "在2~3回合内,一边放出\n火焰,一边疯狂乱打。大闹\n一番后自己会陷入混乱", + 'ragingFury': { + name: '大愤慨', + effect: '在2~3回合内,一边放出\n火焰,一边疯狂乱打。大闹\n一番后自己会陷入混乱', }, - "waveCrash": { - name: "波动冲", - effect: "让水覆盖全身后撞向对手。\n自己也会受到不少伤害", + 'waveCrash': { + name: '波动冲', + effect: '让水覆盖全身后撞向对手。\n自己也会受到不少伤害', }, - "chloroblast": { - name: "叶绿爆震", - effect: "将自己的叶绿素凝聚起来后\n放出去进行攻击。自己也会\n受到伤害", + 'chloroblast': { + name: '叶绿爆震', + effect: '将自己的叶绿素凝聚起来后\n放出去进行攻击。自己也会\n受到伤害', }, - "mountainGale": { - name: "冰山风", - effect: "将冰山般巨大的冰块砸向对\n手进行攻击。有时会使对手\n畏缩", + 'mountainGale': { + name: '冰山风', + effect: '将冰山般巨大的冰块砸向对\n手进行攻击。有时会使对手\n畏缩', }, - "victoryDance": { - name: "胜利之舞", - effect: "激烈地跳起唤来胜利的舞蹈,\n提高自己的攻击、防御和\n速度", + 'victoryDance': { + name: '胜利之舞', + effect: '激烈地跳起唤来胜利的舞蹈,\n提高自己的攻击、防御和\n速度', }, - "headlongRush": { - name: "突飞猛扑", - effect: "向对手使出灌注了全心全力\n的撞击。自己的防御和特防\n会降低", + 'headlongRush': { + name: '突飞猛扑', + effect: '向对手使出灌注了全心全力\n的撞击。自己的防御和特防\n会降低', }, - "barbBarrage": { - name: "毒千针", - effect: "用无数的毒针进行攻击。有\n时还会让对手陷入中毒状态。\n攻击处于中毒状态的对手\n时,威力会变成2倍", + 'barbBarrage': { + name: '毒千针', + effect: '用无数的毒针进行攻击。有\n时还会让对手陷入中毒状态。\n攻击处于中毒状态的对手\n时,威力会变成2倍', }, - "esperWing": { - name: "气场之翼", - effect: "用经过气场强化的翅膀撕裂\n对手。容易击中要害。会提\n高自己的速度", + 'esperWing': { + name: '气场之翼', + effect: '用经过气场强化的翅膀撕裂\n对手。容易击中要害。会提\n高自己的速度', }, - "bitterMalice": { - name: "冤冤相报", - effect: "用令人毛骨悚然的怨念进行\n攻击。会降低对手的攻击", + 'bitterMalice': { + name: '冤冤相报', + effect: '用令人毛骨悚然的怨念进行\n攻击。会降低对手的攻击', }, - "shelter": { - name: "闭关", - effect: "将皮肤变得坚硬如铁盾,从\n而大幅提高自己的防御", + 'shelter': { + name: '闭关', + effect: '将皮肤变得坚硬如铁盾,从\n而大幅提高自己的防御', }, - "tripleArrows": { - name: "三连箭", - effect: "使出一记腿技后同时发射3\n箭。有时会降低对手的防御\n或使对手畏缩。容易击中要\n害", + 'tripleArrows': { + name: '三连箭', + effect: '使出一记腿技后同时发射3\n箭。有时会降低对手的防御\n或使对手畏缩。容易击中要\n害', }, - "infernalParade": { - name: "群魔乱舞", - effect: "用无数的火球进行攻击。有\n时会让对手陷入灼伤状态。\n攻击处于异常状态的对手时,\n威力会变成2倍", + 'infernalParade': { + name: '群魔乱舞', + effect: '用无数的火球进行攻击。有\n时会让对手陷入灼伤状态。\n攻击处于异常状态的对手时,\n威力会变成2倍', }, - "ceaselessEdge": { - name: "秘剑・千重涛", - effect: "用贝壳之剑进行攻击。散落\n的贝壳碎片会散落在对手脚\n下成为撒菱", + 'ceaselessEdge': { + name: '秘剑・千重涛', + effect: '用贝壳之剑进行攻击。散落\n的贝壳碎片会散落在对手脚\n下成为撒菱', }, - "bleakwindStorm": { - name: "枯叶风暴", - effect: "用足以让身心都止不住颤抖\n的冰冷狂风进行攻击。有时\n会降低对手的速度", + 'bleakwindStorm': { + name: '枯叶风暴', + effect: '用足以让身心都止不住颤抖\n的冰冷狂风进行攻击。有时\n会降低对手的速度', }, - "wildboltStorm": { - name: "鸣雷风暴", - effect: "呼唤雷云引起风暴,用雷与\n风进行激烈的攻击。有时会\n让对手陷入麻痹状态", + 'wildboltStorm': { + name: '鸣雷风暴', + effect: '呼唤雷云引起风暴,用雷与\n风进行激烈的攻击。有时会\n让对手陷入麻痹状态', }, - "sandsearStorm": { - name: "热沙风暴", - effect: "用灼热的沙子和强烈的风席\n卷对手进行攻击。有时会让\n对手陷入灼伤状态", + 'sandsearStorm': { + name: '热沙风暴', + effect: '用灼热的沙子和强烈的风席\n卷对手进行攻击。有时会让\n对手陷入灼伤状态', }, - "lunarBlessing": { - name: "新月祈祷", - effect: "向新月献上祈祷,回复自己\n和场上同伴的HP和状态", + 'lunarBlessing': { + name: '新月祈祷', + effect: '向新月献上祈祷,回复自己\n和场上同伴的HP和状态', }, - "takeHeart": { - name: "勇气填充", - effect: "鼓起冲劲,治愈自己的异常\n状态,同时提高自己的特攻\n和特防", + 'takeHeart': { + name: '勇气填充', + effect: '鼓起冲劲,治愈自己的异常\n状态,同时提高自己的特攻\n和特防', }, - "gMaxWildfire": { - name: "超极巨深渊灭焰", - effect: "超极巨化的喷火龙使出的火\n属性攻击。可在4回合内给\n予对手伤害", + 'gMaxWildfire': { + name: '超极巨深渊灭焰', + effect: '超极巨化的喷火龙使出的火\n属性攻击。可在4回合内给\n予对手伤害', }, - "gMaxBefuddle": { - name: "超极巨蝶影蛊惑", - effect: "超极巨化的巴大蝶使出的虫\n属性攻击。会让对手陷入中\n毒、麻痹或睡眠状态", + 'gMaxBefuddle': { + name: '超极巨蝶影蛊惑', + effect: '超极巨化的巴大蝶使出的虫\n属性攻击。会让对手陷入中\n毒、麻痹或睡眠状态', }, - "gMaxVoltCrash": { - name: "超极巨万雷轰顶", - effect: "超极巨化的皮卡丘使出的电\n属性攻击。会让对手陷入麻\n痹状态", + 'gMaxVoltCrash': { + name: '超极巨万雷轰顶', + effect: '超极巨化的皮卡丘使出的电\n属性攻击。会让对手陷入麻\n痹状态', }, - "gMaxGoldRush": { - name: "超极巨特大金币", - effect: "超极巨化的喵喵使出的一般\n属性攻击。会让对手陷入混\n乱状态,并可获得金钱", + 'gMaxGoldRush': { + name: '超极巨特大金币', + effect: '超极巨化的喵喵使出的一般\n属性攻击。会让对手陷入混\n乱状态,并可获得金钱', }, - "gMaxChiStrike": { - name: "超极巨会心一击", - effect: "超极巨化的怪力使出的格斗\n属性攻击。会变得容易击中\n要害", + 'gMaxChiStrike': { + name: '超极巨会心一击', + effect: '超极巨化的怪力使出的格斗\n属性攻击。会变得容易击中\n要害', }, - "gMaxTerror": { - name: "超极巨幻影幽魂", - effect: "超极巨化的耿鬼使出的幽灵\n属性攻击。会踩住对手的影\n子,让其无法被替换", + 'gMaxTerror': { + name: '超极巨幻影幽魂', + effect: '超极巨化的耿鬼使出的幽灵\n属性攻击。会踩住对手的影\n子,让其无法被替换', }, - "gMaxResonance": { - name: "超极巨极光旋律", - effect: "超极巨化的拉普拉斯使出的\n冰属性攻击。可在5回合内\n减弱受到的伤害", + 'gMaxResonance': { + name: '超极巨极光旋律', + effect: '超极巨化的拉普拉斯使出的\n冰属性攻击。可在5回合内\n减弱受到的伤害', }, - "gMaxCuddle": { - name: "超极巨热情拥抱", - effect: "超极巨化的伊布使出的一般\n属性攻击。会让对手陷入着\n迷状态", + 'gMaxCuddle': { + name: '超极巨热情拥抱', + effect: '超极巨化的伊布使出的一般\n属性攻击。会让对手陷入着\n迷状态', }, - "gMaxReplenish": { - name: "超极巨资源再生", - effect: "超极巨化的卡比兽使出的一\n般属性攻击。会让吃掉的树\n果再生", + 'gMaxReplenish': { + name: '超极巨资源再生', + effect: '超极巨化的卡比兽使出的一\n般属性攻击。会让吃掉的树\n果再生', }, - "gMaxMalodor": { - name: "超极巨臭气冲天", - effect: "超极巨化的灰尘山使出的毒\n属性攻击。会让对手陷入中\n毒状态", + 'gMaxMalodor': { + name: '超极巨臭气冲天', + effect: '超极巨化的灰尘山使出的毒\n属性攻击。会让对手陷入中\n毒状态', }, - "gMaxStonesurge": { - name: "超极巨岩阵以待", - effect: "超极巨化的暴噬龟使出的水\n属性攻击。会发射无数锐利\n的岩石", + 'gMaxStonesurge': { + name: '超极巨岩阵以待', + effect: '超极巨化的暴噬龟使出的水\n属性攻击。会发射无数锐利\n的岩石', }, - "gMaxWindRage": { - name: "超极巨旋风袭卷", - effect: "超极巨化的钢铠鸦使出的飞\n行属性攻击。可消除反射壁\n和光墙", + 'gMaxWindRage': { + name: '超极巨旋风袭卷', + effect: '超极巨化的钢铠鸦使出的飞\n行属性攻击。可消除反射壁\n和光墙', }, - "gMaxStunShock": { - name: "超极巨异毒电场", - effect: "超极巨化的颤弦蝾螈使出的\n电属性攻击。会让对手陷入\n中毒或麻痹状态", + 'gMaxStunShock': { + name: '超极巨异毒电场', + effect: '超极巨化的颤弦蝾螈使出的\n电属性攻击。会让对手陷入\n中毒或麻痹状态', }, - "gMaxFinale": { - name: "超极巨幸福圆满", - effect: "超极巨化的霜奶仙使出的妖\n精属性攻击。可回复我方的\nHP", + 'gMaxFinale': { + name: '超极巨幸福圆满', + effect: '超极巨化的霜奶仙使出的妖\n精属性攻击。可回复我方的\nHP', }, - "gMaxDepletion": { - name: "超极巨劣化衰变", - effect: "超极巨化的铝钢龙使出的龙\n属性攻击。可减少对手最后\n使用的招式的PP", + 'gMaxDepletion': { + name: '超极巨劣化衰变', + effect: '超极巨化的铝钢龙使出的龙\n属性攻击。可减少对手最后\n使用的招式的PP', }, - "gMaxGravitas": { - name: "超极巨天道七星", - effect: "超极巨化的以欧路普使出的\n超能力属性攻击。在5回合\n内重力会产生变化", + 'gMaxGravitas': { + name: '超极巨天道七星', + effect: '超极巨化的以欧路普使出的\n超能力属性攻击。在5回合\n内重力会产生变化', }, - "gMaxVolcalith": { - name: "超极巨炎石喷发", - effect: "超极巨化的巨炭山使出的岩\n石属性攻击。可在4回合内\n给予对手伤害", + 'gMaxVolcalith': { + name: '超极巨炎石喷发', + effect: '超极巨化的巨炭山使出的岩\n石属性攻击。可在4回合内\n给予对手伤害', }, - "gMaxSandblast": { - name: "超极巨沙尘漫天", - effect: "超极巨化的沙螺蟒使出的地\n面属性攻击。在4~5回合\n内会狂刮沙暴", + 'gMaxSandblast': { + name: '超极巨沙尘漫天', + effect: '超极巨化的沙螺蟒使出的地\n面属性攻击。在4~5回合\n内会狂刮沙暴', }, - "gMaxSnooze": { - name: "超极巨睡魔降临", - effect: "超极巨化的长毛巨魔使出的\n恶属性攻击。会通过打大哈\n欠让对手产生睡意", + 'gMaxSnooze': { + name: '超极巨睡魔降临', + effect: '超极巨化的长毛巨魔使出的\n恶属性攻击。会通过打大哈\n欠让对手产生睡意', }, - "gMaxTartness": { - name: "超极巨酸不溜丢", - effect: "超极巨化的苹裹龙使出的草\n属性攻击。会降低对手的闪\n避率", + 'gMaxTartness': { + name: '超极巨酸不溜丢', + effect: '超极巨化的苹裹龙使出的草\n属性攻击。会降低对手的闪\n避率', }, - "gMaxSweetness": { - name: "超极巨琼浆玉液", - effect: "超极巨化的丰蜜龙使出的草\n属性攻击。会治愈我方的异\n常状态", + 'gMaxSweetness': { + name: '超极巨琼浆玉液', + effect: '超极巨化的丰蜜龙使出的草\n属性攻击。会治愈我方的异\n常状态', }, - "gMaxSmite": { - name: "超极巨天谴雷诛", - effect: "超极巨化的布莉姆温使出的\n妖精属性攻击。会让对手陷\n入混乱状态", + 'gMaxSmite': { + name: '超极巨天谴雷诛', + effect: '超极巨化的布莉姆温使出的\n妖精属性攻击。会让对手陷\n入混乱状态', }, - "gMaxSteelsurge": { - name: "超极巨钢铁阵法", - effect: "超极巨化的大王铜象使出的\n钢属性攻击。会发射无数锐\n利的刺", + 'gMaxSteelsurge': { + name: '超极巨钢铁阵法', + effect: '超极巨化的大王铜象使出的\n钢属性攻击。会发射无数锐\n利的刺', }, - "gMaxMeltdown": { - name: "超极巨液金熔击", - effect: "超极巨化的美录梅塔使出的\n钢属性攻击。会让对手无法\n连续使出相同的招式", + 'gMaxMeltdown': { + name: '超极巨液金熔击', + effect: '超极巨化的美录梅塔使出的\n钢属性攻击。会让对手无法\n连续使出相同的招式', }, - "gMaxFoamBurst": { - name: "超极巨激漩泡涡", - effect: "超极巨化的巨钳蟹使出的水\n属性攻击。会大幅降低对手\n的速度", + 'gMaxFoamBurst': { + name: '超极巨激漩泡涡', + effect: '超极巨化的巨钳蟹使出的水\n属性攻击。会大幅降低对手\n的速度', }, - "gMaxCentiferno": { - name: "超极巨百火焚野", - effect: "超极巨化的焚焰蚣使出的火\n属性攻击。可在4~5回合\n内将对手困在火焰中", + 'gMaxCentiferno': { + name: '超极巨百火焚野', + effect: '超极巨化的焚焰蚣使出的火\n属性攻击。可在4~5回合\n内将对手困在火焰中', }, - "gMaxVineLash": { - name: "超极巨灰飞鞭灭", - effect: "超极巨化的妙蛙花使出的草\n属性攻击。可在4回合内给\n予对手伤害", + 'gMaxVineLash': { + name: '超极巨灰飞鞭灭', + effect: '超极巨化的妙蛙花使出的草\n属性攻击。可在4回合内给\n予对手伤害', }, - "gMaxCannonade": { - name: "超极巨水炮轰灭", - effect: "超极巨化的水箭龟使出的水\n属性攻击。可在4回合内给\n予对手伤害", + 'gMaxCannonade': { + name: '超极巨水炮轰灭', + effect: '超极巨化的水箭龟使出的水\n属性攻击。可在4回合内给\n予对手伤害', }, - "gMaxDrumSolo": { - name: "超极巨狂擂乱打", - effect: "超极巨化的轰擂金刚猩使出\n的草属性攻击。不会受到对\n手特性的干扰", + 'gMaxDrumSolo': { + name: '超极巨狂擂乱打', + effect: '超极巨化的轰擂金刚猩使出\n的草属性攻击。不会受到对\n手特性的干扰', }, - "gMaxFireball": { - name: "超极巨破阵火球", - effect: "超极巨化的闪焰王牌使出的\n火属性攻击。不会受到对手\n特性的干扰", + 'gMaxFireball': { + name: '超极巨破阵火球', + effect: '超极巨化的闪焰王牌使出的\n火属性攻击。不会受到对手\n特性的干扰', }, - "gMaxHydrosnipe": { - name: "超极巨狙击神射", - effect: "超极巨化的千面避役使出的\n水属性攻击。不会受到对手\n特性的干扰", + 'gMaxHydrosnipe': { + name: '超极巨狙击神射', + effect: '超极巨化的千面避役使出的\n水属性攻击。不会受到对手\n特性的干扰', }, - "gMaxOneBlow": { - name: "超极巨夺命一击", - effect: "超极巨化的武道熊师使出的\n恶属性攻击。是可以无视极\n巨防壁的一击", + 'gMaxOneBlow': { + name: '超极巨夺命一击', + effect: '超极巨化的武道熊师使出的\n恶属性攻击。是可以无视极\n巨防壁的一击', }, - "gMaxRapidFlow": { - name: "超极巨流水连击", - effect: "超极巨化的武道熊师使出的\n水属性攻击。是可以无视极\n巨防壁的连击", + 'gMaxRapidFlow': { + name: '超极巨流水连击', + effect: '超极巨化的武道熊师使出的\n水属性攻击。是可以无视极\n巨防壁的连击', }, - "teraBlast": { - name: "太晶爆发", - effect: "太晶化时,会放出太晶属性\n的能量攻击。比较自己的攻\n击和特攻,用数值相对较高\n的一项给予对方伤害。(其\n他属性)/用攻击和特攻数\n值较高的一项给予伤害。对\n正处于太晶化的对手效果绝\n佳。自己的攻击和特攻会降\n低。(星晶", + 'teraBlast': { + name: '太晶爆发', + effect: '太晶化时,会放出太晶属性\n的能量攻击。比较自己的攻\n击和特攻,用数值相对较高\n的一项给予对方伤害。(其\n他属性)/用攻击和特攻数\n值较高的一项给予伤害。对\n正处于太晶化的对手效果绝\n佳。自己的攻击和特攻会降\n低。(星晶', }, - "silkTrap": { - name: "线阱", - effect: "用丝设置陷阱。防住对方攻\n击的同时,能够降低所接触\n到的对手的速度", + 'silkTrap': { + name: '线阱', + effect: '用丝设置陷阱。防住对方攻\n击的同时,能够降低所接触\n到的对手的速度', }, - "axeKick": { - name: "下压踢", - effect: "将踢起的脚跟往下劈向对手\n进行攻击。有时会使对手混\n乱。如果劈偏则自己会受到\n伤害", + 'axeKick': { + name: '下压踢', + effect: '将踢起的脚跟往下劈向对手\n进行攻击。有时会使对手混\n乱。如果劈偏则自己会受到\n伤害', }, - "lastRespects": { - name: "扫墓", - effect: "为了化解伙伴的悔恨而进行\n攻击。被打倒的我方宝可梦\n越多,招式的威力越高", + 'lastRespects': { + name: '扫墓', + effect: '为了化解伙伴的悔恨而进行\n攻击。被打倒的我方宝可梦\n越多,招式的威力越高', }, - "luminaCrash": { - name: "琉光冲激", - effect: "放出连精神都能影响到的奇\n妙怪光进行攻击。会大幅降\n低对方的特防", + 'luminaCrash': { + name: '琉光冲激', + effect: '放出连精神都能影响到的奇\n妙怪光进行攻击。会大幅降\n低对方的特防', }, - "orderUp": { - name: "上菜", - effect: "以潇洒的身手进行攻击。若\n口中有米立龙,会按其样子\n提高能力", + 'orderUp': { + name: '上菜', + effect: '以潇洒的身手进行攻击。若\n口中有米立龙,会按其样子\n提高能力', }, - "jetPunch": { - name: "喷射拳", - effect: "将激流覆盖于拳头,以肉眼\n无法辨识的速度打出拳击。\n必定能够先制攻击", + 'jetPunch': { + name: '喷射拳', + effect: '将激流覆盖于拳头,以肉眼\n无法辨识的速度打出拳击。\n必定能够先制攻击', }, - "spicyExtract": { - name: "辣椒精华", - effect: "放出极为辛辣的精华。对手\n的攻击会大幅提高,防御会\n大幅降低", + 'spicyExtract': { + name: '辣椒精华', + effect: '放出极为辛辣的精华。对手\n的攻击会大幅提高,防御会\n大幅降低', }, - "spinOut": { - name: "疾速转轮", - effect: "通过往腿上增加负荷,以激\n烈的旋转给予对手伤害。自\n己的速度会大幅降低", + 'spinOut': { + name: '疾速转轮', + effect: '通过往腿上增加负荷,以激\n烈的旋转给予对手伤害。自\n己的速度会大幅降低', }, - "populationBomb": { - name: "鼠数儿", - effect: "伙伴们会纷纷赶来集合,以\n群体行动给予对手攻击。连\n续命中1~10次", + 'populationBomb': { + name: '鼠数儿', + effect: '伙伴们会纷纷赶来集合,以\n群体行动给予对手攻击。连\n续命中1~10次', }, - "iceSpinner": { - name: "冰旋", - effect: "脚上覆盖薄冰,旋转着撞击\n对手。通过旋转的动作破坏\n场地", + 'iceSpinner': { + name: '冰旋', + effect: '脚上覆盖薄冰,旋转着撞击\n对手。通过旋转的动作破坏\n场地', }, - "glaiveRush": { - name: "巨剑突击", - effect: "有勇无谋的舍身突击。使出\n招式后,对手的攻击必定会\n命中,且伤害会变成2倍", + 'glaiveRush': { + name: '巨剑突击', + effect: '有勇无谋的舍身突击。使出\n招式后,对手的攻击必定会\n命中,且伤害会变成2倍', }, - "revivalBlessing": { - name: "复生祈祷", - effect: "通过以慈爱之心祈祷,让陷\n入昏厥的后备宝可梦以回复\n一半HP的状态复活", + 'revivalBlessing': { + name: '复生祈祷', + effect: '通过以慈爱之心祈祷,让陷\n入昏厥的后备宝可梦以回复\n一半HP的状态复活', }, - "saltCure": { - name: "盐腌", - effect: "使对手陷入盐腌状态,每回\n合给予对手伤害。对手为钢\n或水属性时会更痛苦", + 'saltCure': { + name: '盐腌', + effect: '使对手陷入盐腌状态,每回\n合给予对手伤害。对手为钢\n或水属性时会更痛苦', }, - "tripleDive": { - name: "三连钻", - effect: "以默契的跳跃溅起水花击向\n对手。连续3次给予伤害", + 'tripleDive': { + name: '三连钻', + effect: '以默契的跳跃溅起水花击向\n对手。连续3次给予伤害', }, - "mortalSpin": { - name: "晶光转转", - effect: "通过旋转来攻击对手。可以\n摆脱绑紧、紧束、寄生种子\n等招式。还能让对手陷入中\n毒状态", + 'mortalSpin': { + name: '晶光转转', + effect: '通过旋转来攻击对手。可以\n摆脱绑紧、紧束、寄生种子\n等招式。还能让对手陷入中\n毒状态', }, - "doodle": { - name: "描绘", - effect: "把握并映射出对手的本质,\n让自己和同伴宝可梦的特性\n变得和对手相同", + 'doodle': { + name: '描绘', + effect: '把握并映射出对手的本质,\n让自己和同伴宝可梦的特性\n变得和对手相同', }, - "filletAway": { - name: "甩肉", - effect: "削减自己的HP,大幅提高\n攻击和特攻以及速度", + 'filletAway': { + name: '甩肉', + effect: '削减自己的HP,大幅提高\n攻击和特攻以及速度', }, - "kowtowCleave": { - name: "仆刀", - effect: "下跪让对手大意后发起袭击\n劈向对手。攻击必定会命中", + 'kowtowCleave': { + name: '仆刀', + effect: '下跪让对手大意后发起袭击\n劈向对手。攻击必定会命中', }, - "flowerTrick": { - name: "千变万花", - effect: "将做了手脚的花束扔向对手\n进行攻击。必定会命中,且\n会击中要害", + 'flowerTrick': { + name: '千变万花', + effect: '将做了手脚的花束扔向对手\n进行攻击。必定会命中,且\n会击中要害', }, - "torchSong": { - name: "闪焰高歌", - effect: "如唱歌一样喷出熊熊燃烧的\n火焰烧焦对手。会提高自己\n的特攻", + 'torchSong': { + name: '闪焰高歌', + effect: '如唱歌一样喷出熊熊燃烧的\n火焰烧焦对手。会提高自己\n的特攻', }, - "aquaStep": { - name: "流水旋舞", - effect: "以盈盈欲滴的轻快步伐戏耍\n对手并给予其伤害。会提高\n自己的速度", + 'aquaStep': { + name: '流水旋舞', + effect: '以盈盈欲滴的轻快步伐戏耍\n对手并给予其伤害。会提高\n自己的速度', }, - "ragingBull": { - name: "怒牛", - effect: "狂怒暴牛的猛烈冲撞。招式\n的属性随形态改变,光墙和\n反射壁等招式也能破坏", + 'ragingBull': { + name: '怒牛', + effect: '狂怒暴牛的猛烈冲撞。招式\n的属性随形态改变,光墙和\n反射壁等招式也能破坏', }, - "makeItRain": { - name: "淘金潮", - effect: "扔出大量硬币攻击。自己的\n特攻会降低,战斗后还可以\n拿到钱", + 'makeItRain': { + name: '淘金潮', + effect: '扔出大量硬币攻击。自己的\n特攻会降低,战斗后还可以\n拿到钱', }, - "psyblade": { - name: "精神剑", - effect: "用无形的利刃劈开对手。处\n于电气场地时,招式威力会\n变成1.5倍", + 'psyblade': { + name: '精神剑', + effect: '用无形的利刃劈开对手。处\n于电气场地时,招式威力会\n变成1.5倍', }, - "hydroSteam": { - name: "水蒸气", - effect: "将煮得翻滚的开水猛烈地喷\n向对手。日照强烈时,招式\n威力不但不会降低,还会变\n成1.5倍", + 'hydroSteam': { + name: '水蒸气', + effect: '将煮得翻滚的开水猛烈地喷\n向对手。日照强烈时,招式\n威力不但不会降低,还会变\n成1.5倍', }, - "ruination": { - name: "大灾难", - effect: "引发毁灭性的灾厄,使对手\n的HP减半", + 'ruination': { + name: '大灾难', + effect: '引发毁灭性的灾厄,使对手\n的HP减半', }, - "collisionCourse": { - name: "全开猛撞", - effect: "边变形边凶暴地落下,并引\n发起古老的大爆炸。若针对\n到弱点,威力会进一步", + 'collisionCourse': { + name: '全开猛撞', + effect: '边变形边凶暴地落下,并引\n发起古老的大爆炸。若针对\n到弱点,威力会进一步', }, - "electroDrift": { - name: "闪电猛冲", - effect: "边变形边高速奔走,并以未\n知的电击贯穿对手。若针对\n到弱点,威力会进一步", + 'electroDrift': { + name: '闪电猛冲', + effect: '边变形边高速奔走,并以未\n知的电击贯穿对手。若针对\n到弱点,威力会进一步', }, - "shedTail": { - name: "断尾", - effect: "削减自己的HP,制造分身\n后会返回,并和后备宝可梦\n进行替换", + 'shedTail': { + name: '断尾', + effect: '削减自己的HP,制造分身\n后会返回,并和后备宝可梦\n进行替换', }, - "chillyReception": { - name: "冷笑话", - effect: "留下冷场的冷笑话后,和后\n备宝可梦进行替换。在5回\n合内会下雪", + 'chillyReception': { + name: '冷笑话', + effect: '留下冷场的冷笑话后,和后\n备宝可梦进行替换。在5回\n合内会下雪', }, - "tidyUp": { - name: "大扫除", - effect: "将撒菱、隐形岩、黏黏网、\n毒菱、替身全部扫除掉。自\n己的攻击和速度会提高", + 'tidyUp': { + name: '大扫除', + effect: '将撒菱、隐形岩、黏黏网、\n毒菱、替身全部扫除掉。自\n己的攻击和速度会提高', }, - "snowscape": { - name: "雪景", - effect: "在5回合内会下雪。冰属性\n的防御会提高", + 'snowscape': { + name: '雪景', + effect: '在5回合内会下雪。冰属性\n的防御会提高', }, - "pounce": { - name: "虫扑", - effect: "飞扑向对手攻击。会降低对\n手的速度", + 'pounce': { + name: '虫扑', + effect: '飞扑向对手攻击。会降低对\n手的速度', }, - "trailblaze": { - name: "起草", - effect: "跳出草丛进行攻击。通过轻\n快的步伐会提高自己的速度", + 'trailblaze': { + name: '起草', + effect: '跳出草丛进行攻击。通过轻\n快的步伐会提高自己的速度', }, - "chillingWater": { - name: "泼冷水", - effect: "泼洒冰冷得足以让对手失去\n活力的水进行攻击。会降低\n对手的攻击", + 'chillingWater': { + name: '泼冷水', + effect: '泼洒冰冷得足以让对手失去\n活力的水进行攻击。会降低\n对手的攻击', }, - "hyperDrill": { - name: "强力钻", - effect: "急速旋转尖锐的身体部位贯\n穿对手。可以无视守住和看\n穿等招式", + 'hyperDrill': { + name: '强力钻', + effect: '急速旋转尖锐的身体部位贯\n穿对手。可以无视守住和看\n穿等招式', }, - "twinBeam": { - name: "双光束", - effect: "从两眼发射出神奇的光线攻\n击。连续2次给予伤害", + 'twinBeam': { + name: '双光束', + effect: '从两眼发射出神奇的光线攻\n击。连续2次给予伤害', }, - "rageFist": { - name: "愤怒之拳", - effect: "将愤怒化为力量攻击。受到\n攻击的次数越多,招式的威\n力越高", + 'rageFist': { + name: '愤怒之拳', + effect: '将愤怒化为力量攻击。受到\n攻击的次数越多,招式的威\n力越高', }, - "armorCannon": { - name: "铠农炮", - effect: "熊熊燃烧自己的铠甲,将其\n做成炮弹射出攻击。自己的\n防御和特防会降低", + 'armorCannon': { + name: '铠农炮', + effect: '熊熊燃烧自己的铠甲,将其\n做成炮弹射出攻击。自己的\n防御和特防会降低', }, - "bitterBlade": { - name: "悔念剑", - effect: "将对世间的留恋聚集于剑尖,\n并斩击对手。可以回复给\n予对手伤害的一半HP", + 'bitterBlade': { + name: '悔念剑', + effect: '将对世间的留恋聚集于剑尖,\n并斩击对手。可以回复给\n予对手伤害的一半HP', }, - "doubleShock": { - name: "电光双击", - effect: "将全身所有的电力放出,给\n予对手大大的伤害。自己的\n电属性将会消失", + 'doubleShock': { + name: '电光双击', + effect: '将全身所有的电力放出,给\n予对手大大的伤害。自己的\n电属性将会消失', }, - "gigatonHammer": { - name: "巨力锤", - effect: "连同身体转起巨大的锤子进\n行攻击。这个招式无法连续\n使出2次", + 'gigatonHammer': { + name: '巨力锤', + effect: '连同身体转起巨大的锤子进\n行攻击。这个招式无法连续\n使出2次', }, - "comeuppance": { - name: "复仇", - effect: "使出招式前,将最后受到的\n招式的伤害大力返还给对手", + 'comeuppance': { + name: '复仇', + effect: '使出招式前,将最后受到的\n招式的伤害大力返还给对手', }, - "aquaCutter": { - name: "水波刀", - effect: "如刀刃般喷射出加压的水切\n开对手。容易击中要害", + 'aquaCutter': { + name: '水波刀', + effect: '如刀刃般喷射出加压的水切\n开对手。容易击中要害', }, - "blazingTorque": { - name: "灼热暴冲", - effect: "攻击目标造成伤害,\n有30%的几率使目标陷入\n灼伤状态。", + 'blazingTorque': { + name: '灼热暴冲', + effect: '攻击目标造成伤害,\n有30%的几率使目标陷入\n灼伤状态。', }, - "wickedTorque": { - name: "黑暗暴冲", - effect: "攻击目标造成伤害,\n有30%的几率使目标陷入\n睡眠状态。", + 'wickedTorque': { + name: '黑暗暴冲', + effect: '攻击目标造成伤害,\n有30%的几率使目标陷入\n睡眠状态。', }, - "noxiousTorque": { - name: "剧毒暴冲", - effect: "攻击目标造成伤害,\n有30%的几率使目标陷入\n中毒状态。", + 'noxiousTorque': { + name: '剧毒暴冲', + effect: '攻击目标造成伤害,\n有30%的几率使目标陷入\n中毒状态。', }, - "combatTorque": { - name: "格斗暴冲", - effect: "攻击目标造成伤害,\n有30%的几率使目标陷入\n麻痹状态。此招式可以命中\n幽灵属性的宝可梦。", + 'combatTorque': { + name: '格斗暴冲', + effect: '攻击目标造成伤害,\n有30%的几率使目标陷入\n麻痹状态。此招式可以命中\n幽灵属性的宝可梦。', }, - "magicalTorque": { - name: "魔法暴冲", - effect: "攻击目标造成伤害,\n有30%的几率使目标陷入\n混乱状态。", + 'magicalTorque': { + name: '魔法暴冲', + effect: '攻击目标造成伤害,\n有30%的几率使目标陷入\n混乱状态。', }, - "bloodMoon": { - name: "血月", - effect: "从赤红如血的满月发射出全\n部的气势。这个招式无法连\n续使出2次", + 'bloodMoon': { + name: '血月', + effect: '从赤红如血的满月发射出全\n部的气势。这个招式无法连\n续使出2次', }, - "matchaGotcha": { - name: "刷刷茶炮", - effect: "发射经搅拌的茶的大炮,可\n以回复给予对手伤害的一半\nHP,有时会让对手陷入灼\n伤状态", + 'matchaGotcha': { + name: '刷刷茶炮', + effect: '发射经搅拌的茶的大炮,可\n以回复给予对手伤害的一半\nHP,有时会让对手陷入灼\n伤状态', }, - "syrupBomb": { - name: "糖浆炸弹", - effect: "使粘稠的麦芽糖浆爆炸,让\n对手陷入满身糖状态,在3\n回合内持续降低其速度", + 'syrupBomb': { + name: '糖浆炸弹', + effect: '使粘稠的麦芽糖浆爆炸,让\n对手陷入满身糖状态,在3\n回合内持续降低其速度', }, - "ivyCudgel": { - name: "棘藤棒", - effect: "用缠有藤蔓的棍棒殴打。属\n性会随所戴的面具而改变。\n容易击中要害", + 'ivyCudgel': { + name: '棘藤棒', + effect: '用缠有藤蔓的棍棒殴打。属\n性会随所戴的面具而改变。\n容易击中要害', }, - "electroShot": { - name: "电光束", - effect: "第1回合收集电力提高特攻,\n第2回合将高压的电力发\n射出去。下雨天气时能立刻\n发射", + 'electroShot': { + name: '电光束', + effect: '第1回合收集电力提高特攻,\n第2回合将高压的电力发\n射出去。下雨天气时能立刻\n发射', }, - "teraStarstorm": { - name: "晶光星群", - effect: "照射出结晶的力量来驱逐敌\n人。太乐巴戈斯在星晶形态\n下使出时,能对所有对手造\n成伤害", + 'teraStarstorm': { + name: '晶光星群', + effect: '照射出结晶的力量来驱逐敌\n人。太乐巴戈斯在星晶形态\n下使出时,能对所有对手造\n成伤害', }, - "fickleBeam": { - name: "随机光", - effect: "发射光线进行攻击。有时其\n他的头也会合力发射镭射,\n让招式威力变成2倍", + 'fickleBeam': { + name: '随机光', + effect: '发射光线进行攻击。有时其\n他的头也会合力发射镭射,\n让招式威力变成2倍', }, - "burningBulwark": { - name: "火焰守护", - effect: "用超高温的体毛防住对手攻\n击的同时,让接触到自己的\n对手灼伤", + 'burningBulwark': { + name: '火焰守护', + effect: '用超高温的体毛防住对手攻\n击的同时,让接触到自己的\n对手灼伤', }, - "thunderclap": { - name: "迅雷", - effect: "可以比对手先使出电击进行\n攻击。对手使出的招式如果\n不是攻击招式则会失败", + 'thunderclap': { + name: '迅雷', + effect: '可以比对手先使出电击进行\n攻击。对手使出的招式如果\n不是攻击招式则会失败', }, - "mightyCleave": { - name: "强刃攻击", - effect: "用积蓄在头部的光来斩切对\n手。可以无视守护进行攻击", + 'mightyCleave': { + name: '强刃攻击', + effect: '用积蓄在头部的光来斩切对\n手。可以无视守护进行攻击', }, - "tachyonCutter": { - name: "迅子利刃", - effect: "接连发射出粒子的利刃,连\n续2次给予伤害。攻击必定\n会命中", + 'tachyonCutter': { + name: '迅子利刃', + effect: '接连发射出粒子的利刃,连\n续2次给予伤害。攻击必定\n会命中', }, - "hardPress": { - name: "硬压", - effect: "用手臂或钳子压迫对手。对\n手剩余的HP越多,威力越\n大", + 'hardPress': { + name: '硬压', + effect: '用手臂或钳子压迫对手。对\n手剩余的HP越多,威力越\n大', }, - "dragonCheer": { - name: "龙声鼓舞", - effect: "以龙之鼓舞提高士气,让我\n方的招式变得容易击中要害。\n对龙属性的鼓舞效果会更\n强", + 'dragonCheer': { + name: '龙声鼓舞', + effect: '以龙之鼓舞提高士气,让我\n方的招式变得容易击中要害。\n对龙属性的鼓舞效果会更\n强', }, - "alluringVoice": { - name: "魅诱之声", - effect: "用天使般的歌声攻击对手。\n会让此回合内能力有提高的\n宝可梦陷入混乱状态", + 'alluringVoice': { + name: '魅诱之声', + effect: '用天使般的歌声攻击对手。\n会让此回合内能力有提高的\n宝可梦陷入混乱状态', }, - "temperFlare": { - name: "豁出去", - effect: "以自暴自弃的气势进行攻击。\n如果上一回合招式没有命\n中,威力就会翻倍", + 'temperFlare': { + name: '豁出去', + effect: '以自暴自弃的气势进行攻击。\n如果上一回合招式没有命\n中,威力就会翻倍', }, - "supercellSlam": { - name: "闪电强袭", - effect: "让身体带电后压向对手。如\n果没有命中则自己会受到伤\n害", + 'supercellSlam': { + name: '闪电强袭', + effect: '让身体带电后压向对手。如\n果没有命中则自己会受到伤\n害', }, - "psychicNoise": { - name: "精神噪音", - effect: "用令对手不舒服的音波进行\n攻击。让对手在2回合内无\n法通过招式、特性或携带的\n道具回复HP", + 'psychicNoise': { + name: '精神噪音', + effect: '用令对手不舒服的音波进行\n攻击。让对手在2回合内无\n法通过招式、特性或携带的\n道具回复HP', }, - "upperHand": { - name: "快手还击", - effect: "察觉到对手的动作后用掌根\n攻击,让对手畏缩。如果对\n手使出的招式不是先制攻击,\n则会失败", + 'upperHand': { + name: '快手还击', + effect: '察觉到对手的动作后用掌根\n攻击,让对手畏缩。如果对\n手使出的招式不是先制攻击,\n则会失败', }, - "malignantChain": { - name: "邪毒锁链", - effect: "用由毒形成的锁链缠住对手\n注入毒素加以侵蚀。有时会\n让对手陷入剧毒状态", + 'malignantChain': { + name: '邪毒锁链', + effect: '用由毒形成的锁链缠住对手\n注入毒素加以侵蚀。有时会\n让对手陷入剧毒状态', } -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/zh_CN/nature.ts b/src/locales/zh_CN/nature.ts index 00beeefdfa4..a811094cae3 100644 --- a/src/locales/zh_CN/nature.ts +++ b/src/locales/zh_CN/nature.ts @@ -1,29 +1,29 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const nature: SimpleTranslationEntries = { - "Hardy": "勤奋", - "Lonely": "怕寂寞", - "Brave": "勇敢", - "Adamant": "固执", - "Naughty": "顽皮", - "Bold": "大胆", - "Docile": "坦率", - "Relaxed": "悠闲", - "Impish": "淘气", - "Lax": "乐天", - "Timid": "胆小", - "Hasty": "急躁", - "Serious": "认真", - "Jolly": "爽朗", - "Naive": "天真", - "Modest": "内敛", - "Mild": "慢吞吞", - "Quiet": "冷静", - "Bashful": "害羞", - "Rash": "马虎", - "Calm": "温和", - "Gentle": "温顺", - "Sassy": "自大", - "Careful": "慎重", - "Quirky": "浮躁" -} as const; \ No newline at end of file + 'Hardy': '勤奋', + 'Lonely': '怕寂寞', + 'Brave': '勇敢', + 'Adamant': '固执', + 'Naughty': '顽皮', + 'Bold': '大胆', + 'Docile': '坦率', + 'Relaxed': '悠闲', + 'Impish': '淘气', + 'Lax': '乐天', + 'Timid': '胆小', + 'Hasty': '急躁', + 'Serious': '认真', + 'Jolly': '爽朗', + 'Naive': '天真', + 'Modest': '内敛', + 'Mild': '慢吞吞', + 'Quiet': '冷静', + 'Bashful': '害羞', + 'Rash': '马虎', + 'Calm': '温和', + 'Gentle': '温顺', + 'Sassy': '自大', + 'Careful': '慎重', + 'Quirky': '浮躁' +} as const; diff --git a/src/locales/zh_CN/pokeball.ts b/src/locales/zh_CN/pokeball.ts index a3260946a82..a6406c8e6e0 100644 --- a/src/locales/zh_CN/pokeball.ts +++ b/src/locales/zh_CN/pokeball.ts @@ -1,10 +1,10 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokeball: SimpleTranslationEntries = { - "pokeBall": "精灵球", - "greatBall": "超级球", - "ultraBall": "高级球", - "rogueBall": "肉鸽球", - "masterBall": "大师球", - "luxuryBall": "豪华球", -} as const; \ No newline at end of file + 'pokeBall': '精灵球', + 'greatBall': '超级球', + 'ultraBall': '高级球', + 'rogueBall': '肉鸽球', + 'masterBall': '大师球', + 'luxuryBall': '豪华球', +} as const; diff --git a/src/locales/zh_CN/pokemon-info.ts b/src/locales/zh_CN/pokemon-info.ts index 09c843bb8c2..21a572bcffe 100644 --- a/src/locales/zh_CN/pokemon-info.ts +++ b/src/locales/zh_CN/pokemon-info.ts @@ -1,41 +1,41 @@ -import { PokemonInfoTranslationEntries } from "#app/plugins/i18n"; +import { PokemonInfoTranslationEntries } from '#app/plugins/i18n'; export const pokemonInfo: PokemonInfoTranslationEntries = { - Stat: { - "HP": "最大HP", - "HPshortened": "最大HP", - "ATK": "攻击", - "ATKshortened": "攻击", - "DEF": "防御", - "DEFshortened": "防御", - "SPATK": "特攻", - "SPATKshortened": "特攻", - "SPDEF": "特防", - "SPDEFshortened": "特防", - "SPD": "速度", - "SPDshortened": "速度" - }, + Stat: { + 'HP': '最大HP', + 'HPshortened': '最大HP', + 'ATK': '攻击', + 'ATKshortened': '攻击', + 'DEF': '防御', + 'DEFshortened': '防御', + 'SPATK': '特攻', + 'SPATKshortened': '特攻', + 'SPDEF': '特防', + 'SPDEFshortened': '特防', + 'SPD': '速度', + 'SPDshortened': '速度' + }, - Type: { - "UNKNOWN": "未知", - "NORMAL": "一般", - "FIGHTING": "格斗", - "FLYING": "飞行", - "POISON": "毒", - "GROUND": "地面", - "ROCK": "岩石", - "BUG": "虫", - "GHOST": "幽灵", - "STEEL": "钢", - "FIRE": "火", - "WATER": "水", - "GRASS": "草", - "ELECTRIC": "电", - "PSYCHIC": "超能力", - "ICE": "冰", - "DRAGON": "龙", - "DARK": "恶", - "FAIRY": "妖精", - "STELLAR": "星晶", - }, -} as const; \ No newline at end of file + Type: { + 'UNKNOWN': '未知', + 'NORMAL': '一般', + 'FIGHTING': '格斗', + 'FLYING': '飞行', + 'POISON': '毒', + 'GROUND': '地面', + 'ROCK': '岩石', + 'BUG': '虫', + 'GHOST': '幽灵', + 'STEEL': '钢', + 'FIRE': '火', + 'WATER': '水', + 'GRASS': '草', + 'ELECTRIC': '电', + 'PSYCHIC': '超能力', + 'ICE': '冰', + 'DRAGON': '龙', + 'DARK': '恶', + 'FAIRY': '妖精', + 'STELLAR': '星晶', + }, +} as const; diff --git a/src/locales/zh_CN/pokemon.ts b/src/locales/zh_CN/pokemon.ts index 9aa0c27bc4e..e18e931c942 100644 --- a/src/locales/zh_CN/pokemon.ts +++ b/src/locales/zh_CN/pokemon.ts @@ -1,1086 +1,1086 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const pokemon: SimpleTranslationEntries = { - "bulbasaur": "妙蛙种子", - "ivysaur": "妙蛙草", - "venusaur": "妙蛙花", - "charmander": "小火龙", - "charmeleon": "火恐龙", - "charizard": "喷火龙", - "squirtle": "杰尼龟", - "wartortle": "卡咪龟", - "blastoise": "水箭龟", - "caterpie": "绿毛虫", - "metapod": "铁甲蛹", - "butterfree": "巴大蝶", - "weedle": "独角虫", - "kakuna": "铁壳蛹", - "beedrill": "大针蜂", - "pidgey": "波波", - "pidgeotto": "比比鸟", - "pidgeot": "大比鸟", - "rattata": "小拉达", - "raticate": "拉达", - "spearow": "烈雀", - "fearow": "大嘴雀", - "ekans": "阿柏蛇", - "arbok": "阿柏怪", - "pikachu": "皮卡丘", - "raichu": "雷丘", - "sandshrew": "穿山鼠", - "sandslash": "穿山王", - "nidoran_f": "尼多兰", - "nidorina": "尼多娜", - "nidoqueen": "尼多后", - "nidoran_m": "尼多朗", - "nidorino": "尼多力诺", - "nidoking": "尼多王", - "clefairy": "皮皮", - "clefable": "皮可西", - "vulpix": "六尾", - "ninetales": "九尾", - "jigglypuff": "胖丁", - "wigglytuff": "胖可丁", - "zubat": "超音蝠", - "golbat": "大嘴蝠", - "oddish": "走路草", - "gloom": "臭臭花", - "vileplume": "霸王花", - "paras": "派拉斯", - "parasect": "派拉斯特", - "venonat": "毛球", - "venomoth": "摩鲁蛾", - "diglett": "地鼠", - "dugtrio": "三地鼠", - "meowth": "喵喵", - "persian": "猫老大", - "psyduck": "可达鸭", - "golduck": "哥达鸭", - "mankey": "猴怪", - "primeape": "火暴猴", - "growlithe": "卡蒂狗", - "arcanine": "风速狗", - "poliwag": "蚊香蝌蚪", - "poliwhirl": "蚊香君", - "poliwrath": "蚊香泳士", - "abra": "凯西", - "kadabra": "勇基拉", - "alakazam": "胡地", - "machop": "腕力", - "machoke": "豪力", - "machamp": "怪力", - "bellsprout": "喇叭芽", - "weepinbell": "口呆花", - "victreebel": "大食花", - "tentacool": "玛瑙水母", - "tentacruel": "毒刺水母", - "geodude": "小拳石", - "graveler": "隆隆石", - "golem": "隆隆岩", - "ponyta": "小火马", - "rapidash": "烈焰马", - "slowpoke": "呆呆兽", - "slowbro": "呆壳兽", - "magnemite": "小磁怪", - "magneton": "三合一磁怪", - "farfetchd": "大葱鸭", - "doduo": "嘟嘟", - "dodrio": "嘟嘟利", - "seel": "小海狮", - "dewgong": "白海狮", - "grimer": "臭泥", - "muk": "臭臭泥", - "shellder": "大舌贝", - "cloyster": "刺甲贝", - "gastly": "鬼斯", - "haunter": "鬼斯通", - "gengar": "耿鬼", - "onix": "大岩蛇", - "drowzee": "催眠貘", - "hypno": "引梦貘人", - "krabby": "大钳蟹", - "kingler": "巨钳蟹", - "voltorb": "霹雳电球", - "electrode": "顽皮雷弹", - "exeggcute": "蛋蛋", - "exeggutor": "椰蛋树", - "cubone": "卡拉卡拉", - "marowak": "嘎啦嘎啦", - "hitmonlee": "飞腿郎", - "hitmonchan": "快拳郎", - "lickitung": "大舌头", - "koffing": "瓦斯弹", - "weezing": "双弹瓦斯", - "rhyhorn": "独角犀牛", - "rhydon": "钻角犀兽", - "chansey": "吉利蛋", - "tangela": "蔓藤怪", - "kangaskhan": "袋兽", - "horsea": "墨海马", - "seadra": "海刺龙", - "goldeen": "角金鱼", - "seaking": "金鱼王", - "staryu": "海星星", - "starmie": "宝石海星", - "mr_mime": "魔墙人偶", - "scyther": "飞天螳螂", - "jynx": "迷唇姐", - "electabuzz": "电击兽", - "magmar": "鸭嘴火兽", - "pinsir": "凯罗斯", - "tauros": "肯泰罗", - "magikarp": "鲤鱼王", - "gyarados": "暴鲤龙", - "lapras": "拉普拉斯", - "ditto": "百变怪", - "eevee": "伊布", - "vaporeon": "水伊布", - "jolteon": "雷伊布", - "flareon": "火伊布", - "porygon": "多边兽", - "omanyte": "菊石兽", - "omastar": "多刺菊石兽", - "kabuto": "化石盔", - "kabutops": "镰刀盔", - "aerodactyl": "化石翼龙", - "snorlax": "卡比兽", - "articuno": "急冻鸟", - "zapdos": "闪电鸟", - "moltres": "火焰鸟", - "dratini": "迷你龙", - "dragonair": "哈克龙", - "dragonite": "快龙", - "mewtwo": "超梦", - "mew": "梦幻", - "chikorita": "菊草叶", - "bayleef": "月桂叶", - "meganium": "大竺葵", - "cyndaquil": "火球鼠", - "quilava": "火岩鼠", - "typhlosion": "火暴兽", - "totodile": "小锯鳄", - "croconaw": "蓝鳄", - "feraligatr": "大力鳄", - "sentret": "尾立", - "furret": "大尾立", - "hoothoot": "咕咕", - "noctowl": "猫头夜鹰", - "ledyba": "芭瓢虫", - "ledian": "安瓢虫", - "spinarak": "圆丝蛛", - "ariados": "阿利多斯", - "crobat": "叉字蝠", - "chinchou": "灯笼鱼", - "lanturn": "电灯怪", - "pichu": "皮丘", - "cleffa": "皮宝宝", - "igglybuff": "宝宝丁", - "togepi": "波克比", - "togetic": "波克基古", - "natu": "天然雀", - "xatu": "天然鸟", - "mareep": "咩利羊", - "flaaffy": "茸茸羊", - "ampharos": "电龙", - "bellossom": "美丽花", - "marill": "玛力露", - "azumarill": "玛力露丽", - "sudowoodo": "树才怪", - "politoed": "蚊香蛙皇", - "hoppip": "毽子草", - "skiploom": "毽子花", - "jumpluff": "毽子棉", - "aipom": "长尾怪手", - "sunkern": "向日种子", - "sunflora": "向日花怪", - "yanma": "蜻蜻蜓", - "wooper": "乌波", - "quagsire": "沼王", - "espeon": "太阳伊布", - "umbreon": "月亮伊布", - "murkrow": "黑暗鸦", - "slowking": "呆呆王", - "misdreavus": "梦妖", - "unown": "未知图腾", - "wobbuffet": "果然翁", - "girafarig": "麒麟奇", - "pineco": "榛果球", - "forretress": "佛烈托斯", - "dunsparce": "土龙弟弟", - "gligar": "天蝎", - "steelix": "大钢蛇", - "snubbull": "布鲁", - "granbull": "布鲁皇", - "qwilfish": "千针鱼", - "scizor": "巨钳螳螂", - "shuckle": "壶壶", - "heracross": "赫拉克罗斯", - "sneasel": "狃拉", - "teddiursa": "熊宝宝", - "ursaring": "圈圈熊", - "slugma": "熔岩虫", - "magcargo": "熔岩蜗牛", - "swinub": "小山猪", - "piloswine": "长毛猪", - "corsola": "太阳珊瑚", - "remoraid": "铁炮鱼", - "octillery": "章鱼桶", - "delibird": "信使鸟", - "mantine": "巨翅飞鱼", - "skarmory": "盔甲鸟", - "houndour": "戴鲁比", - "houndoom": "黑鲁加", - "kingdra": "刺龙王", - "phanpy": "小小象", - "donphan": "顿甲", - "porygon2": "多边兽2型", - "stantler": "惊角鹿", - "smeargle": "图图犬", - "tyrogue": "无畏小子", - "hitmontop": "战舞郎", - "smoochum": "迷唇娃", - "elekid": "电击怪", - "magby": "鸭嘴宝宝", - "miltank": "大奶罐", - "blissey": "幸福蛋", - "raikou": "雷公", - "entei": "炎帝", - "suicune": "水君", - "larvitar": "幼基拉斯", - "pupitar": "沙基拉斯", - "tyranitar": "班基拉斯", - "lugia": "洛奇亚", - "ho_oh": "凤王", - "celebi": "时拉比", - "treecko": "木守宫", - "grovyle": "森林蜥蜴", - "sceptile": "蜥蜴王", - "torchic": "火稚鸡", - "combusken": "力壮鸡", - "blaziken": "火焰鸡", - "mudkip": "水跃鱼", - "marshtomp": "沼跃鱼", - "swampert": "巨沼怪", - "poochyena": "土狼犬", - "mightyena": "大狼犬", - "zigzagoon": "蛇纹熊", - "linoone": "直冲熊", - "wurmple": "刺尾虫", - "silcoon": "甲壳茧", - "beautifly": "狩猎凤蝶", - "cascoon": "盾甲茧", - "dustox": "毒粉蛾", - "lotad": "莲叶童子", - "lombre": "莲帽小童", - "ludicolo": "乐天河童", - "seedot": "橡实果", - "nuzleaf": "长鼻叶", - "shiftry": "狡猾天狗", - "taillow": "傲骨燕", - "swellow": "大王燕", - "wingull": "长翅鸥", - "pelipper": "大嘴鸥", - "ralts": "拉鲁拉丝", - "kirlia": "奇鲁莉安", - "gardevoir": "沙奈朵", - "surskit": "溜溜糖球", - "masquerain": "雨翅蛾", - "shroomish": "蘑蘑菇", - "breloom": "斗笠菇", - "slakoth": "懒人獭", - "vigoroth": "过动猿", - "slaking": "请假王", - "nincada": "土居忍士", - "ninjask": "铁面忍者", - "shedinja": "脱壳忍者", - "whismur": "咕妞妞", - "loudred": "吼爆弹", - "exploud": "爆音怪", - "makuhita": "幕下力士", - "hariyama": "铁掌力士", - "azurill": "露力丽", - "nosepass": "朝北鼻", - "skitty": "向尾喵", - "delcatty": "优雅猫", - "sableye": "勾魂眼", - "mawile": "大嘴娃", - "aron": "可可多拉", - "lairon": "可多拉", - "aggron": "波士可多拉", - "meditite": "玛沙那", - "medicham": "恰雷姆", - "electrike": "落雷兽", - "manectric": "雷电兽", - "plusle": "正电拍拍", - "minun": "负电拍拍", - "volbeat": "电萤虫", - "illumise": "甜甜萤", - "roselia": "毒蔷薇", - "gulpin": "溶食兽", - "swalot": "吞食兽", - "carvanha": "利牙鱼", - "sharpedo": "巨牙鲨", - "wailmer": "吼吼鲸", - "wailord": "吼鲸王", - "numel": "呆火驼", - "camerupt": "喷火驼", - "torkoal": "煤炭龟", - "spoink": "跳跳猪", - "grumpig": "噗噗猪", - "spinda": "晃晃斑", - "trapinch": "大颚蚁", - "vibrava": "超音波幼虫", - "flygon": "沙漠蜻蜓", - "cacnea": "刺球仙人掌", - "cacturne": "梦歌仙人掌", - "swablu": "青绵鸟", - "altaria": "七夕青鸟", - "zangoose": "猫鼬斩", - "seviper": "饭匙蛇", - "lunatone": "月石", - "solrock": "太阳岩", - "barboach": "泥泥鳅", - "whiscash": "鲶鱼王", - "corphish": "龙虾小兵", - "crawdaunt": "铁螯龙虾", - "baltoy": "天秤偶", - "claydol": "念力土偶", - "lileep": "触手百合", - "cradily": "摇篮百合", - "anorith": "太古羽虫", - "armaldo": "太古盔甲", - "feebas": "丑丑鱼", - "milotic": "美纳斯", - "castform": "飘浮泡泡", - "kecleon": "变隐龙", - "shuppet": "怨影娃娃", - "banette": "诅咒娃娃", - "duskull": "夜巡灵", - "dusclops": "彷徨夜灵", - "tropius": "热带龙", - "chimecho": "风铃铃", - "absol": "阿勃梭鲁", - "wynaut": "小果然", - "snorunt": "雪童子", - "glalie": "冰鬼护", - "spheal": "海豹球", - "sealeo": "海魔狮", - "walrein": "帝牙海狮", - "clamperl": "珍珠贝", - "huntail": "猎斑鱼", - "gorebyss": "樱花鱼", - "relicanth": "古空棘鱼", - "luvdisc": "爱心鱼", - "bagon": "宝贝龙", - "shelgon": "甲壳龙", - "salamence": "暴飞龙", - "beldum": "铁哑铃", - "metang": "金属怪", - "metagross": "巨金怪", - "regirock": "雷吉洛克", - "regice": "雷吉艾斯", - "registeel": "雷吉斯奇鲁", - "latias": "拉帝亚斯", - "latios": "拉帝欧斯", - "kyogre": "盖欧卡", - "groudon": "固拉多", - "rayquaza": "烈空坐", - "jirachi": "基拉祈", - "deoxys": "代欧奇希斯", - "turtwig": "草苗龟", - "grotle": "树林龟", - "torterra": "土台龟", - "chimchar": "小火焰猴", - "monferno": "猛火猴", - "infernape": "烈焰猴", - "piplup": "波加曼", - "prinplup": "波皇子", - "empoleon": "帝王拿波", - "starly": "姆克儿", - "staravia": "姆克鸟", - "staraptor": "姆克鹰", - "bidoof": "大牙狸", - "bibarel": "大尾狸", - "kricketot": "圆法师", - "kricketune": "音箱蟀", - "shinx": "小猫怪", - "luxio": "勒克猫", - "luxray": "伦琴猫", - "budew": "含羞苞", - "roserade": "罗丝雷朵", - "cranidos": "头盖龙", - "rampardos": "战槌龙", - "shieldon": "盾甲龙", - "bastiodon": "护城龙", - "burmy": "结草儿", - "wormadam": "结草贵妇", - "mothim": "绅士蛾", - "combee": "三蜜蜂", - "vespiquen": "蜂女王", - "pachirisu": "帕奇利兹", - "buizel": "泳圈鼬", - "floatzel": "浮潜鼬", - "cherubi": "樱花宝", - "cherrim": "樱花儿", - "shellos": "无壳海兔", - "gastrodon": "海兔兽", - "ambipom": "双尾怪手", - "drifloon": "飘飘球", - "drifblim": "随风球", - "buneary": "卷卷耳", - "lopunny": "长耳兔", - "mismagius": "梦妖魔", - "honchkrow": "乌鸦头头", - "glameow": "魅力喵", - "purugly": "东施喵", - "chingling": "铃铛响", - "stunky": "臭鼬噗", - "skuntank": "坦克臭鼬", - "bronzor": "铜镜怪", - "bronzong": "青铜钟", - "bonsly": "盆才怪", - "mime_jr": "魔尼尼", - "happiny": "小福蛋", - "chatot": "聒噪鸟", - "spiritomb": "花岩怪", - "gible": "圆陆鲨", - "gabite": "尖牙陆鲨", - "garchomp": "烈咬陆鲨", - "munchlax": "小卡比兽", - "riolu": "利欧路", - "lucario": "路卡利欧", - "hippopotas": "沙河马", - "hippowdon": "河马兽", - "skorupi": "钳尾蝎", - "drapion": "龙王蝎", - "croagunk": "不良蛙", - "toxicroak": "毒骷蛙", - "carnivine": "尖牙笼", - "finneon": "荧光鱼", - "lumineon": "霓虹鱼", - "mantyke": "小球飞鱼", - "snover": "雪笠怪", - "abomasnow": "暴雪王", - "weavile": "玛狃拉", - "magnezone": "自爆磁怪", - "lickilicky": "大舌舔", - "rhyperior": "超甲狂犀", - "tangrowth": "巨蔓藤", - "electivire": "电击魔兽", - "magmortar": "鸭嘴炎兽", - "togekiss": "波克基斯", - "yanmega": "远古巨蜓", - "leafeon": "叶伊布", - "glaceon": "冰伊布", - "gliscor": "天蝎王", - "mamoswine": "象牙猪", - "porygon_z": "多边兽乙型", - "gallade": "艾路雷朵", - "probopass": "大朝北鼻", - "dusknoir": "黑夜魔灵", - "froslass": "雪妖女", - "rotom": "洛托姆", - "uxie": "由克希", - "mesprit": "艾姆利多", - "azelf": "亚克诺姆", - "dialga": "帝牙卢卡", - "palkia": "帕路奇亚", - "heatran": "席多蓝恩", - "regigigas": "雷吉奇卡斯", - "giratina": "骑拉帝纳", - "cresselia": "克雷色利亚", - "phione": "霏欧纳", - "manaphy": "玛纳霏", - "darkrai": "达克莱伊", - "shaymin": "谢米", - "arceus": "阿尔宙斯", - "victini": "比克提尼", - "snivy": "藤藤蛇", - "servine": "青藤蛇", - "serperior": "君主蛇", - "tepig": "暖暖猪", - "pignite": "炒炒猪", - "emboar": "炎武王", - "oshawott": "水水獭", - "dewott": "双刃丸", - "samurott": "大剑鬼", - "patrat": "探探鼠", - "watchog": "步哨鼠", - "lillipup": "小约克", - "herdier": "哈约克", - "stoutland": "长毛狗", - "purrloin": "扒手猫", - "liepard": "酷豹", - "pansage": "花椰猴", - "simisage": "花椰猿", - "pansear": "爆香猴", - "simisear": "爆香猿", - "panpour": "冷水猴", - "simipour": "冷水猿", - "munna": "食梦梦", - "musharna": "梦梦蚀", - "pidove": "豆豆鸽", - "tranquill": "咕咕鸽", - "unfezant": "高傲雉鸡", - "blitzle": "斑斑马", - "zebstrika": "雷电斑马", - "roggenrola": "石丸子", - "boldore": "地幔岩", - "gigalith": "庞岩怪", - "woobat": "滚滚蝙蝠", - "swoobat": "心蝙蝠", - "drilbur": "螺钉地鼠", - "excadrill": "龙头地鼠", - "audino": "差不多娃娃", - "timburr": "搬运小匠", - "gurdurr": "铁骨土人", - "conkeldurr": "修建老匠", - "tympole": "圆蝌蚪", - "palpitoad": "蓝蟾蜍", - "seismitoad": "蟾蜍王", - "throh": "投摔鬼", - "sawk": "打击鬼", - "sewaddle": "虫宝包", - "swadloon": "宝包茧", - "leavanny": "保姆虫", - "venipede": "百足蜈蚣", - "whirlipede": "车轮球", - "scolipede": "蜈蚣王", - "cottonee": "木棉球", - "whimsicott": "风妖精", - "petilil": "百合根娃娃", - "lilligant": "裙儿小姐", - "basculin": "野蛮鲈鱼", - "sandile": "黑眼鳄", - "krokorok": "混混鳄", - "krookodile": "流氓鳄", - "darumaka": "火红不倒翁", - "darmanitan": "达摩狒狒", - "maractus": "沙铃仙人掌", - "dwebble": "石居蟹", - "crustle": "岩殿居蟹", - "scraggy": "滑滑小子", - "scrafty": "头巾混混", - "sigilyph": "象征鸟", - "yamask": "哭哭面具", - "cofagrigus": "迭失棺", - "tirtouga": "原盖海龟", - "carracosta": "肋骨海龟", - "archen": "始祖小鸟", - "archeops": "始祖大鸟", - "trubbish": "破破袋", - "garbodor": "灰尘山", - "zorua": "索罗亚", - "zoroark": "索罗亚克", - "minccino": "泡沫栗鼠", - "cinccino": "奇诺栗鼠", - "gothita": "哥德宝宝", - "gothorita": "哥德小童", - "gothitelle": "哥德小姐", - "solosis": "单卵细胞球", - "duosion": "双卵细胞球", - "reuniclus": "人造细胞卵", - "ducklett": "鸭宝宝", - "swanna": "舞天鹅", - "vanillite": "迷你冰", - "vanillish": "多多冰", - "vanilluxe": "双倍多多冰", - "deerling": "四季鹿", - "sawsbuck": "萌芽鹿", - "emolga": "电飞鼠", - "karrablast": "盖盖虫", - "escavalier": "骑士蜗牛", - "foongus": "哎呀球菇", - "amoonguss": "败露球菇", - "frillish": "轻飘飘", - "jellicent": "胖嘟嘟", - "alomomola": "保姆曼波", - "joltik": "电电虫", - "galvantula": "电蜘蛛", - "ferroseed": "种子铁球", - "ferrothorn": "坚果哑铃", - "klink": "齿轮儿", - "klang": "齿轮组", - "klinklang": "齿轮怪", - "tynamo": "麻麻小鱼", - "eelektrik": "麻麻鳗", - "eelektross": "麻麻鳗鱼王", - "elgyem": "小灰怪", - "beheeyem": "大宇怪", - "litwick": "烛光灵", - "lampent": "灯火幽灵", - "chandelure": "水晶灯火灵", - "axew": "牙牙", - "fraxure": "斧牙龙", - "haxorus": "双斧战龙", - "cubchoo": "喷嚏熊", - "beartic": "冻原熊", - "cryogonal": "几何雪花", - "shelmet": "小嘴蜗", - "accelgor": "敏捷虫", - "stunfisk": "泥巴鱼", - "mienfoo": "功夫鼬", - "mienshao": "师父鼬", - "druddigon": "赤面龙", - "golett": "泥偶小人", - "golurk": "泥偶巨人", - "pawniard": "驹刀小兵", - "bisharp": "劈斩司令", - "bouffalant": "爆炸头水牛", - "rufflet": "毛头小鹰", - "braviary": "勇士雄鹰", - "vullaby": "秃鹰丫头", - "mandibuzz": "秃鹰娜", - "heatmor": "熔蚁兽", - "durant": "铁蚁", - "deino": "单首龙", - "zweilous": "双首暴龙", - "hydreigon": "三首恶龙", - "larvesta": "燃烧虫", - "volcarona": "火神蛾", - "cobalion": "勾帕路翁", - "terrakion": "代拉基翁", - "virizion": "毕力吉翁", - "tornadus": "龙卷云", - "thundurus": "雷电云", - "reshiram": "莱希拉姆", - "zekrom": "捷克罗姆", - "landorus": "土地云", - "kyurem": "酋雷姆", - "keldeo": "凯路迪欧", - "meloetta": "美洛耶塔", - "genesect": "盖诺赛克特", - "chespin": "哈力栗", - "quilladin": "胖胖哈力", - "chesnaught": "布里卡隆", - "fennekin": "火狐狸", - "braixen": "长尾火狐", - "delphox": "妖火红狐", - "froakie": "呱呱泡蛙", - "frogadier": "呱头蛙", - "greninja": "甲贺忍蛙", - "bunnelby": "掘掘兔", - "diggersby": "掘地兔", - "fletchling": "小箭雀", - "fletchinder": "火箭雀", - "talonflame": "烈箭鹰", - "scatterbug": "粉蝶虫", - "spewpa": "粉蝶蛹", - "vivillon": "彩粉蝶", - "litleo": "小狮狮", - "pyroar": "火炎狮", - "flabebe": "花蓓蓓", - "floette": "花叶蒂", - "florges": "花洁夫人", - "skiddo": "坐骑小羊", - "gogoat": "坐骑山羊", - "pancham": "顽皮熊猫", - "pangoro": "霸道熊猫", - "furfrou": "多丽米亚", - "espurr": "妙喵", - "meowstic": "超能妙喵", - "honedge": "独剑鞘", - "doublade": "双剑鞘", - "aegislash": "坚盾剑怪", - "spritzee": "粉香香", - "aromatisse": "芳香精", - "swirlix": "绵绵泡芙", - "slurpuff": "胖甜妮", - "inkay": "好啦鱿", - "malamar": "乌贼王", - "binacle": "龟脚脚", - "barbaracle": "龟足巨铠", - "skrelp": "垃垃藻", - "dragalge": "毒藻龙", - "clauncher": "铁臂枪虾", - "clawitzer": "钢炮臂虾", - "helioptile": "伞电蜥", - "heliolisk": "光电伞蜥", - "tyrunt": "宝宝暴龙", - "tyrantrum": "怪颚龙", - "amaura": "冰雪龙", - "aurorus": "冰雪巨龙", - "sylveon": "仙子伊布", - "hawlucha": "摔角鹰人", - "dedenne": "咚咚鼠", - "carbink": "小碎钻", - "goomy": "黏黏宝", - "sliggoo": "黏美儿", - "goodra": "黏美龙", - "klefki": "钥圈儿", - "phantump": "小木灵", - "trevenant": "朽木妖", - "pumpkaboo": "南瓜精", - "gourgeist": "南瓜怪人", - "bergmite": "冰宝", - "avalugg": "冰岩怪", - "noibat": "嗡蝠", - "noivern": "音波龙", - "xerneas": "哲尔尼亚斯", - "yveltal": "伊裴尔塔尔", - "zygarde": "基格尔德", - "diancie": "蒂安希", - "hoopa": "胡帕", - "volcanion": "波尔凯尼恩", - "rowlet": "木木枭", - "dartrix": "投羽枭", - "decidueye": "狙射树枭", - "litten": "火斑喵", - "torracat": "炎热喵", - "incineroar": "炽焰咆哮虎", - "popplio": "球球海狮", - "brionne": "花漾海狮", - "primarina": "西狮海壬", - "pikipek": "小笃儿", - "trumbeak": "喇叭啄鸟", - "toucannon": "铳嘴大鸟", - "yungoos": "猫鼬少", - "gumshoos": "猫鼬探长", - "grubbin": "强颚鸡母虫", - "charjabug": "虫电宝", - "vikavolt": "锹农炮虫", - "crabrawler": "好胜蟹", - "crabominable": "好胜毛蟹", - "oricorio": "花舞鸟", - "cutiefly": "萌虻", - "ribombee": "蝶结萌虻", - "rockruff": "岩狗狗", - "lycanroc": "鬃岩狼人", - "wishiwashi": "弱丁鱼", - "mareanie": "好坏星", - "toxapex": "超坏星", - "mudbray": "泥驴仔", - "mudsdale": "重泥挽马", - "dewpider": "滴蛛", - "araquanid": "滴蛛霸", - "fomantis": "伪螳草", - "lurantis": "兰螳花", - "morelull": "睡睡菇", - "shiinotic": "灯罩夜菇", - "salandit": "夜盗火蜥", - "salazzle": "焰后蜥", - "stufful": "童偶熊", - "bewear": "穿着熊", - "bounsweet": "甜竹竹", - "steenee": "甜舞妮", - "tsareena": "甜冷美后", - "comfey": "花疗环环", - "oranguru": "智挥猩", - "passimian": "投掷猴", - "wimpod": "胆小虫", - "golisopod": "具甲武者", - "sandygast": "沙丘娃", - "palossand": "噬沙堡爷", - "pyukumuku": "拳海参", - "type_null": "属性:空", - "silvally": "银伴战兽", - "minior": "小陨星", - "komala": "树枕尾熊", - "turtonator": "爆焰龟兽", - "togedemaru": "托戈德玛尔", - "mimikyu": "谜拟丘", - "bruxish": "磨牙彩皮鱼", - "drampa": "老翁龙", - "dhelmise": "破破舵轮", - "jangmo_o": "心鳞宝", - "hakamo_o": "鳞甲龙", - "kommo_o": "杖尾鳞甲龙", - "tapu_koko": "卡璞・鸣鸣", - "tapu_lele": "卡璞・蝶蝶", - "tapu_bulu": "卡璞・哞哞", - "tapu_fini": "卡璞・鳍鳍", - "cosmog": "科斯莫古", - "cosmoem": "科斯莫姆", - "solgaleo": "索尔迦雷欧", - "lunala": "露奈雅拉", - "nihilego": "虚吾伊德", - "buzzwole": "爆肌蚊", - "pheromosa": "费洛美螂", - "xurkitree": "电束木", - "celesteela": "铁火辉夜", - "kartana": "纸御剑", - "guzzlord": "恶食大王", - "necrozma": "奈克洛兹玛", - "magearna": "玛机雅娜", - "marshadow": "玛夏多", - "poipole": "毒贝比", - "naganadel": "四颚针龙", - "stakataka": "垒磊石", - "blacephalon": "砰头小丑", - "zeraora": "捷拉奥拉", - "meltan": "美录坦", - "melmetal": "美录梅塔", - "grookey": "敲音猴", - "thwackey": "啪咚猴", - "rillaboom": "轰擂金刚猩", - "scorbunny": "炎兔儿", - "raboot": "腾蹴小将", - "cinderace": "闪焰王牌", - "sobble": "泪眼蜥", - "drizzile": "变涩蜥", - "inteleon": "千面避役", - "skwovet": "贪心栗鼠", - "greedent": "藏饱栗鼠", - "rookidee": "稚山雀", - "corvisquire": "蓝鸦", - "corviknight": "钢铠鸦", - "blipbug": "索侦虫", - "dottler": "天罩虫", - "orbeetle": "以欧路普", - "nickit": "狡小狐", - "thievul": "猾大狐", - "gossifleur": "幼棉棉", - "eldegoss": "白蓬蓬", - "wooloo": "毛辫羊", - "dubwool": "毛毛角羊", - "chewtle": "咬咬龟", - "drednaw": "暴噬龟", - "yamper": "来电汪", - "boltund": "逐电犬", - "rolycoly": "小炭仔", - "carkol": "大炭车", - "coalossal": "巨炭山", - "applin": "啃果虫", - "flapple": "苹裹龙", - "appletun": "丰蜜龙", - "silicobra": "沙包蛇", - "sandaconda": "沙螺蟒", - "cramorant": "古月鸟", - "arrokuda": "刺梭鱼", - "barraskewda": "戽斗尖梭", - "toxel": "电音婴", - "toxtricity": "颤弦蝾螈", - "sizzlipede": "烧火蚣", - "centiskorch": "焚焰蚣", - "clobbopus": "拳拳蛸", - "grapploct": "八爪武师", - "sinistea": "来悲茶", - "polteageist": "怖思壶", - "hatenna": "迷布莉姆", - "hattrem": "提布莉姆", - "hatterene": "布莉姆温", - "impidimp": "捣蛋小妖", - "morgrem": "诈唬魔", - "grimmsnarl": "长毛巨魔", - "obstagoon": "堵拦熊", - "perrserker": "喵头目", - "cursola": "魔灵珊瑚", - "sirfetchd": "葱游兵", - "mr_rime": "踏冰人偶", - "runerigus": "迭失板", - "milcery": "小仙奶", - "alcremie": "霜奶仙", - "falinks": "列阵兵", - "pincurchin": "啪嚓海胆", - "snom": "雪吞虫", - "frosmoth": "雪绒蛾", - "stonjourner": "巨石丁", - "eiscue": "冰砌鹅", - "indeedee": "爱管侍", - "morpeko": "莫鲁贝可", - "cufant": "铜象", - "copperajah": "大王铜象", - "dracozolt": "雷鸟龙", - "arctozolt": "雷鸟海兽", - "dracovish": "鳃鱼龙", - "arctovish": "鳃鱼海兽", - "duraludon": "铝钢龙", - "dreepy": "多龙梅西亚", - "drakloak": "多龙奇", - "dragapult": "多龙巴鲁托", - "zacian": "苍响", - "zamazenta": "藏玛然特", - "eternatus": "无极汰那", - "kubfu": "熊徒弟", - "urshifu": "武道熊师", - "zarude": "萨戮德", - "regieleki": "雷吉艾勒奇", - "regidrago": "雷吉铎拉戈", - "glastrier": "雪暴马", - "spectrier": "灵幽马", - "calyrex": "蕾冠王", - "wyrdeer": "诡角鹿", - "kleavor": "劈斧螳螂", - "ursaluna": "月月熊", - "basculegion": "幽尾玄鱼", - "sneasler": "大狃拉", - "overqwil": "万针鱼", - "enamorus": "眷恋云", - "sprigatito": "新叶喵", - "floragato": "蒂蕾喵", - "meowscarada": "魔幻假面喵", - "fuecoco": "呆火鳄", - "crocalor": "炙烫鳄", - "skeledirge": "骨纹巨声鳄", - "quaxly": "润水鸭", - "quaxwell": "涌跃鸭", - "quaquaval": "狂欢浪舞鸭", - "lechonk": "爱吃豚", - "oinkologne": "飘香豚", - "tarountula": "团珠蛛", - "spidops": "操陷蛛", - "nymble": "豆蟋蟀", - "lokix": "烈腿蝗", - "pawmi": "布拨", - "pawmo": "布土拨", - "pawmot": "巴布土拨", - "tandemaus": "一对鼠", - "maushold": "一家鼠", - "fidough": "狗仔包", - "dachsbun": "麻花犬", - "smoliv": "迷你芙", - "dolliv": "奥利纽", - "arboliva": "奥利瓦", - "squawkabilly": "怒鹦哥", - "nacli": "盐石宝", - "naclstack": "盐石垒", - "garganacl": "盐石巨灵", - "charcadet": "炭小侍", - "armarouge": "红莲铠骑", - "ceruledge": "苍炎刃鬼", - "tadbulb": "光蚪仔", - "bellibolt": "电肚蛙", - "wattrel": "电海燕", - "kilowattrel": "大电海燕", - "maschiff": "偶叫獒", - "mabosstiff": "獒教父", - "shroodle": "滋汁鼹", - "grafaiai": "涂标客", - "bramblin": "纳噬草", - "brambleghast": "怖纳噬草", - "toedscool": "原野水母", - "toedscruel": "陆地水母", - "klawf": "毛崖蟹", - "capsakid": "热辣娃", - "scovillain": "狠辣椒", - "rellor": "虫滚泥", - "rabsca": "虫甲圣", - "flittle": "飘飘雏", - "espathra": "超能艳鸵", - "tinkatink": "小锻匠", - "tinkatuff": "巧锻匠", - "tinkaton": "巨锻匠", - "wiglett": "海地鼠", - "wugtrio": "三海地鼠", - "bombirdier": "下石鸟", - "finizen": "波普海豚", - "palafin": "海豚侠", - "varoom": "噗隆隆", - "revavroom": "普隆隆姆", - "cyclizar": "摩托蜥", - "orthworm": "拖拖蚓", - "glimmet": "晶光芽", - "glimmora": "晶光花", - "greavard": "墓仔狗", - "houndstone": "墓扬犬", - "flamigo": "缠红鹤", - "cetoddle": "走鲸", - "cetitan": "浩大鲸", - "veluza": "轻身鳕", - "dondozo": "吃吼霸", - "tatsugiri": "米立龙", - "annihilape": "弃世猴", - "clodsire": "土王", - "farigiraf": "奇麒麟", - "dudunsparce": "土龙节节", - "kingambit": "仆刀将军", - "great_tusk": "雄伟牙", - "scream_tail": "吼叫尾", - "brute_bonnet": "猛恶菇", - "flutter_mane": "振翼发", - "slither_wing": "爬地翅", - "sandy_shocks": "沙铁皮", - "iron_treads": "铁辙迹", - "iron_bundle": "铁包袱", - "iron_hands": "铁臂膀", - "iron_jugulis": "铁脖颈", - "iron_moth": "铁毒蛾", - "iron_thorns": "铁荆棘", - "frigibax": "凉脊龙", - "arctibax": "冻脊龙", - "baxcalibur": "戟脊龙", - "gimmighoul": "索财灵", - "gholdengo": "赛富豪", - "wo_chien": "古简蜗", - "chien_pao": "古剑豹", - "ting_lu": "古鼎鹿", - "chi_yu": "古玉鱼", - "roaring_moon": "轰鸣月", - "iron_valiant": "铁武者", - "koraidon": "故勒顿", - "miraidon": "密勒顿", - "walking_wake": "波荡水", - "iron_leaves": "铁斑叶", - "dipplin": "裹蜜虫", - "poltchageist": "斯魔茶", - "sinistcha": "来悲粗茶", - "okidogi": "够赞狗", - "munkidori": "愿增猿", - "fezandipiti": "吉雉鸡", - "ogerpon": "厄诡椪", - "archaludon": "铝钢桥龙", - "hydrapple": "蜜集大蛇", - "gouging_fire": "破空焰", - "raging_bolt": "猛雷鼓", - "iron_boulder": "铁磐岩", - "iron_crown": "铁头壳", - "terapagos": "太乐巴戈斯", - "pecharunt": "桃歹郎", - "alola_rattata": "小拉达", - "alola_raticate": "拉达", - "alola_raichu": "雷丘", - "alola_sandshrew": "穿山鼠", - "alola_sandslash": "穿山王", - "alola_vulpix": "六尾", - "alola_ninetales": "九尾", - "alola_diglett": "地鼠", - "alola_dugtrio": "三地鼠", - "alola_meowth": "喵喵", - "alola_persian": "猫老大", - "alola_geodude": "小拳石", - "alola_graveler": "隆隆石", - "alola_golem": "隆隆岩", - "alola_grimer": "臭泥", - "alola_muk": "臭臭泥", - "alola_exeggutor": "椰蛋树", - "alola_marowak": "嘎啦嘎啦", - "eternal_floette": "花叶蒂", - "galar_meowth": "喵喵", - "galar_ponyta": "小火马", - "galar_rapidash": "烈焰马", - "galar_slowpoke": "呆呆兽", - "galar_slowbro": "呆壳兽", - "galar_farfetchd": "大葱鸭", - "galar_weezing": "双弹瓦斯", - "galar_mr_mime": "魔墙人偶", - "galar_articuno": "急冻鸟", - "galar_zapdos": "闪电鸟", - "galar_moltres": "火焰鸟", - "galar_slowking": "呆呆王", - "galar_corsola": "太阳珊瑚", - "galar_zigzagoon": "蛇纹熊", - "galar_linoone": "直冲熊", - "galar_darumaka": "火红不倒翁", - "galar_darmanitan": "达摩狒狒", - "galar_yamask": "哭哭面具", - "galar_stunfisk": "泥巴鱼", - "hisui_growlithe": "卡蒂狗", - "hisui_arcanine": "风速狗", - "hisui_voltorb": "霹雳电球", - "hisui_electrode": "顽皮雷弹", - "hisui_typhlosion": "火暴兽", - "hisui_qwilfish": "千针鱼", - "hisui_sneasel": "狃拉", - "hisui_samurott": "大剑鬼", - "hisui_lilligant": "裙儿小姐", - "hisui_zorua": "索罗亚", - "hisui_zoroark": "索罗亚克", - "hisui_braviary": "勇士雄鹰", - "hisui_sliggoo": "黏美儿", - "hisui_goodra": "黏美龙", - "hisui_avalugg": "冰岩怪", - "hisui_decidueye": "狙射树枭", - "paldea_tauros": "肯泰罗", - "paldea_wooper": "乌波", - "bloodmoon_ursaluna": "月月熊", -} as const; \ No newline at end of file + 'bulbasaur': '妙蛙种子', + 'ivysaur': '妙蛙草', + 'venusaur': '妙蛙花', + 'charmander': '小火龙', + 'charmeleon': '火恐龙', + 'charizard': '喷火龙', + 'squirtle': '杰尼龟', + 'wartortle': '卡咪龟', + 'blastoise': '水箭龟', + 'caterpie': '绿毛虫', + 'metapod': '铁甲蛹', + 'butterfree': '巴大蝶', + 'weedle': '独角虫', + 'kakuna': '铁壳蛹', + 'beedrill': '大针蜂', + 'pidgey': '波波', + 'pidgeotto': '比比鸟', + 'pidgeot': '大比鸟', + 'rattata': '小拉达', + 'raticate': '拉达', + 'spearow': '烈雀', + 'fearow': '大嘴雀', + 'ekans': '阿柏蛇', + 'arbok': '阿柏怪', + 'pikachu': '皮卡丘', + 'raichu': '雷丘', + 'sandshrew': '穿山鼠', + 'sandslash': '穿山王', + 'nidoran_f': '尼多兰', + 'nidorina': '尼多娜', + 'nidoqueen': '尼多后', + 'nidoran_m': '尼多朗', + 'nidorino': '尼多力诺', + 'nidoking': '尼多王', + 'clefairy': '皮皮', + 'clefable': '皮可西', + 'vulpix': '六尾', + 'ninetales': '九尾', + 'jigglypuff': '胖丁', + 'wigglytuff': '胖可丁', + 'zubat': '超音蝠', + 'golbat': '大嘴蝠', + 'oddish': '走路草', + 'gloom': '臭臭花', + 'vileplume': '霸王花', + 'paras': '派拉斯', + 'parasect': '派拉斯特', + 'venonat': '毛球', + 'venomoth': '摩鲁蛾', + 'diglett': '地鼠', + 'dugtrio': '三地鼠', + 'meowth': '喵喵', + 'persian': '猫老大', + 'psyduck': '可达鸭', + 'golduck': '哥达鸭', + 'mankey': '猴怪', + 'primeape': '火暴猴', + 'growlithe': '卡蒂狗', + 'arcanine': '风速狗', + 'poliwag': '蚊香蝌蚪', + 'poliwhirl': '蚊香君', + 'poliwrath': '蚊香泳士', + 'abra': '凯西', + 'kadabra': '勇基拉', + 'alakazam': '胡地', + 'machop': '腕力', + 'machoke': '豪力', + 'machamp': '怪力', + 'bellsprout': '喇叭芽', + 'weepinbell': '口呆花', + 'victreebel': '大食花', + 'tentacool': '玛瑙水母', + 'tentacruel': '毒刺水母', + 'geodude': '小拳石', + 'graveler': '隆隆石', + 'golem': '隆隆岩', + 'ponyta': '小火马', + 'rapidash': '烈焰马', + 'slowpoke': '呆呆兽', + 'slowbro': '呆壳兽', + 'magnemite': '小磁怪', + 'magneton': '三合一磁怪', + 'farfetchd': '大葱鸭', + 'doduo': '嘟嘟', + 'dodrio': '嘟嘟利', + 'seel': '小海狮', + 'dewgong': '白海狮', + 'grimer': '臭泥', + 'muk': '臭臭泥', + 'shellder': '大舌贝', + 'cloyster': '刺甲贝', + 'gastly': '鬼斯', + 'haunter': '鬼斯通', + 'gengar': '耿鬼', + 'onix': '大岩蛇', + 'drowzee': '催眠貘', + 'hypno': '引梦貘人', + 'krabby': '大钳蟹', + 'kingler': '巨钳蟹', + 'voltorb': '霹雳电球', + 'electrode': '顽皮雷弹', + 'exeggcute': '蛋蛋', + 'exeggutor': '椰蛋树', + 'cubone': '卡拉卡拉', + 'marowak': '嘎啦嘎啦', + 'hitmonlee': '飞腿郎', + 'hitmonchan': '快拳郎', + 'lickitung': '大舌头', + 'koffing': '瓦斯弹', + 'weezing': '双弹瓦斯', + 'rhyhorn': '独角犀牛', + 'rhydon': '钻角犀兽', + 'chansey': '吉利蛋', + 'tangela': '蔓藤怪', + 'kangaskhan': '袋兽', + 'horsea': '墨海马', + 'seadra': '海刺龙', + 'goldeen': '角金鱼', + 'seaking': '金鱼王', + 'staryu': '海星星', + 'starmie': '宝石海星', + 'mr_mime': '魔墙人偶', + 'scyther': '飞天螳螂', + 'jynx': '迷唇姐', + 'electabuzz': '电击兽', + 'magmar': '鸭嘴火兽', + 'pinsir': '凯罗斯', + 'tauros': '肯泰罗', + 'magikarp': '鲤鱼王', + 'gyarados': '暴鲤龙', + 'lapras': '拉普拉斯', + 'ditto': '百变怪', + 'eevee': '伊布', + 'vaporeon': '水伊布', + 'jolteon': '雷伊布', + 'flareon': '火伊布', + 'porygon': '多边兽', + 'omanyte': '菊石兽', + 'omastar': '多刺菊石兽', + 'kabuto': '化石盔', + 'kabutops': '镰刀盔', + 'aerodactyl': '化石翼龙', + 'snorlax': '卡比兽', + 'articuno': '急冻鸟', + 'zapdos': '闪电鸟', + 'moltres': '火焰鸟', + 'dratini': '迷你龙', + 'dragonair': '哈克龙', + 'dragonite': '快龙', + 'mewtwo': '超梦', + 'mew': '梦幻', + 'chikorita': '菊草叶', + 'bayleef': '月桂叶', + 'meganium': '大竺葵', + 'cyndaquil': '火球鼠', + 'quilava': '火岩鼠', + 'typhlosion': '火暴兽', + 'totodile': '小锯鳄', + 'croconaw': '蓝鳄', + 'feraligatr': '大力鳄', + 'sentret': '尾立', + 'furret': '大尾立', + 'hoothoot': '咕咕', + 'noctowl': '猫头夜鹰', + 'ledyba': '芭瓢虫', + 'ledian': '安瓢虫', + 'spinarak': '圆丝蛛', + 'ariados': '阿利多斯', + 'crobat': '叉字蝠', + 'chinchou': '灯笼鱼', + 'lanturn': '电灯怪', + 'pichu': '皮丘', + 'cleffa': '皮宝宝', + 'igglybuff': '宝宝丁', + 'togepi': '波克比', + 'togetic': '波克基古', + 'natu': '天然雀', + 'xatu': '天然鸟', + 'mareep': '咩利羊', + 'flaaffy': '茸茸羊', + 'ampharos': '电龙', + 'bellossom': '美丽花', + 'marill': '玛力露', + 'azumarill': '玛力露丽', + 'sudowoodo': '树才怪', + 'politoed': '蚊香蛙皇', + 'hoppip': '毽子草', + 'skiploom': '毽子花', + 'jumpluff': '毽子棉', + 'aipom': '长尾怪手', + 'sunkern': '向日种子', + 'sunflora': '向日花怪', + 'yanma': '蜻蜻蜓', + 'wooper': '乌波', + 'quagsire': '沼王', + 'espeon': '太阳伊布', + 'umbreon': '月亮伊布', + 'murkrow': '黑暗鸦', + 'slowking': '呆呆王', + 'misdreavus': '梦妖', + 'unown': '未知图腾', + 'wobbuffet': '果然翁', + 'girafarig': '麒麟奇', + 'pineco': '榛果球', + 'forretress': '佛烈托斯', + 'dunsparce': '土龙弟弟', + 'gligar': '天蝎', + 'steelix': '大钢蛇', + 'snubbull': '布鲁', + 'granbull': '布鲁皇', + 'qwilfish': '千针鱼', + 'scizor': '巨钳螳螂', + 'shuckle': '壶壶', + 'heracross': '赫拉克罗斯', + 'sneasel': '狃拉', + 'teddiursa': '熊宝宝', + 'ursaring': '圈圈熊', + 'slugma': '熔岩虫', + 'magcargo': '熔岩蜗牛', + 'swinub': '小山猪', + 'piloswine': '长毛猪', + 'corsola': '太阳珊瑚', + 'remoraid': '铁炮鱼', + 'octillery': '章鱼桶', + 'delibird': '信使鸟', + 'mantine': '巨翅飞鱼', + 'skarmory': '盔甲鸟', + 'houndour': '戴鲁比', + 'houndoom': '黑鲁加', + 'kingdra': '刺龙王', + 'phanpy': '小小象', + 'donphan': '顿甲', + 'porygon2': '多边兽2型', + 'stantler': '惊角鹿', + 'smeargle': '图图犬', + 'tyrogue': '无畏小子', + 'hitmontop': '战舞郎', + 'smoochum': '迷唇娃', + 'elekid': '电击怪', + 'magby': '鸭嘴宝宝', + 'miltank': '大奶罐', + 'blissey': '幸福蛋', + 'raikou': '雷公', + 'entei': '炎帝', + 'suicune': '水君', + 'larvitar': '幼基拉斯', + 'pupitar': '沙基拉斯', + 'tyranitar': '班基拉斯', + 'lugia': '洛奇亚', + 'ho_oh': '凤王', + 'celebi': '时拉比', + 'treecko': '木守宫', + 'grovyle': '森林蜥蜴', + 'sceptile': '蜥蜴王', + 'torchic': '火稚鸡', + 'combusken': '力壮鸡', + 'blaziken': '火焰鸡', + 'mudkip': '水跃鱼', + 'marshtomp': '沼跃鱼', + 'swampert': '巨沼怪', + 'poochyena': '土狼犬', + 'mightyena': '大狼犬', + 'zigzagoon': '蛇纹熊', + 'linoone': '直冲熊', + 'wurmple': '刺尾虫', + 'silcoon': '甲壳茧', + 'beautifly': '狩猎凤蝶', + 'cascoon': '盾甲茧', + 'dustox': '毒粉蛾', + 'lotad': '莲叶童子', + 'lombre': '莲帽小童', + 'ludicolo': '乐天河童', + 'seedot': '橡实果', + 'nuzleaf': '长鼻叶', + 'shiftry': '狡猾天狗', + 'taillow': '傲骨燕', + 'swellow': '大王燕', + 'wingull': '长翅鸥', + 'pelipper': '大嘴鸥', + 'ralts': '拉鲁拉丝', + 'kirlia': '奇鲁莉安', + 'gardevoir': '沙奈朵', + 'surskit': '溜溜糖球', + 'masquerain': '雨翅蛾', + 'shroomish': '蘑蘑菇', + 'breloom': '斗笠菇', + 'slakoth': '懒人獭', + 'vigoroth': '过动猿', + 'slaking': '请假王', + 'nincada': '土居忍士', + 'ninjask': '铁面忍者', + 'shedinja': '脱壳忍者', + 'whismur': '咕妞妞', + 'loudred': '吼爆弹', + 'exploud': '爆音怪', + 'makuhita': '幕下力士', + 'hariyama': '铁掌力士', + 'azurill': '露力丽', + 'nosepass': '朝北鼻', + 'skitty': '向尾喵', + 'delcatty': '优雅猫', + 'sableye': '勾魂眼', + 'mawile': '大嘴娃', + 'aron': '可可多拉', + 'lairon': '可多拉', + 'aggron': '波士可多拉', + 'meditite': '玛沙那', + 'medicham': '恰雷姆', + 'electrike': '落雷兽', + 'manectric': '雷电兽', + 'plusle': '正电拍拍', + 'minun': '负电拍拍', + 'volbeat': '电萤虫', + 'illumise': '甜甜萤', + 'roselia': '毒蔷薇', + 'gulpin': '溶食兽', + 'swalot': '吞食兽', + 'carvanha': '利牙鱼', + 'sharpedo': '巨牙鲨', + 'wailmer': '吼吼鲸', + 'wailord': '吼鲸王', + 'numel': '呆火驼', + 'camerupt': '喷火驼', + 'torkoal': '煤炭龟', + 'spoink': '跳跳猪', + 'grumpig': '噗噗猪', + 'spinda': '晃晃斑', + 'trapinch': '大颚蚁', + 'vibrava': '超音波幼虫', + 'flygon': '沙漠蜻蜓', + 'cacnea': '刺球仙人掌', + 'cacturne': '梦歌仙人掌', + 'swablu': '青绵鸟', + 'altaria': '七夕青鸟', + 'zangoose': '猫鼬斩', + 'seviper': '饭匙蛇', + 'lunatone': '月石', + 'solrock': '太阳岩', + 'barboach': '泥泥鳅', + 'whiscash': '鲶鱼王', + 'corphish': '龙虾小兵', + 'crawdaunt': '铁螯龙虾', + 'baltoy': '天秤偶', + 'claydol': '念力土偶', + 'lileep': '触手百合', + 'cradily': '摇篮百合', + 'anorith': '太古羽虫', + 'armaldo': '太古盔甲', + 'feebas': '丑丑鱼', + 'milotic': '美纳斯', + 'castform': '飘浮泡泡', + 'kecleon': '变隐龙', + 'shuppet': '怨影娃娃', + 'banette': '诅咒娃娃', + 'duskull': '夜巡灵', + 'dusclops': '彷徨夜灵', + 'tropius': '热带龙', + 'chimecho': '风铃铃', + 'absol': '阿勃梭鲁', + 'wynaut': '小果然', + 'snorunt': '雪童子', + 'glalie': '冰鬼护', + 'spheal': '海豹球', + 'sealeo': '海魔狮', + 'walrein': '帝牙海狮', + 'clamperl': '珍珠贝', + 'huntail': '猎斑鱼', + 'gorebyss': '樱花鱼', + 'relicanth': '古空棘鱼', + 'luvdisc': '爱心鱼', + 'bagon': '宝贝龙', + 'shelgon': '甲壳龙', + 'salamence': '暴飞龙', + 'beldum': '铁哑铃', + 'metang': '金属怪', + 'metagross': '巨金怪', + 'regirock': '雷吉洛克', + 'regice': '雷吉艾斯', + 'registeel': '雷吉斯奇鲁', + 'latias': '拉帝亚斯', + 'latios': '拉帝欧斯', + 'kyogre': '盖欧卡', + 'groudon': '固拉多', + 'rayquaza': '烈空坐', + 'jirachi': '基拉祈', + 'deoxys': '代欧奇希斯', + 'turtwig': '草苗龟', + 'grotle': '树林龟', + 'torterra': '土台龟', + 'chimchar': '小火焰猴', + 'monferno': '猛火猴', + 'infernape': '烈焰猴', + 'piplup': '波加曼', + 'prinplup': '波皇子', + 'empoleon': '帝王拿波', + 'starly': '姆克儿', + 'staravia': '姆克鸟', + 'staraptor': '姆克鹰', + 'bidoof': '大牙狸', + 'bibarel': '大尾狸', + 'kricketot': '圆法师', + 'kricketune': '音箱蟀', + 'shinx': '小猫怪', + 'luxio': '勒克猫', + 'luxray': '伦琴猫', + 'budew': '含羞苞', + 'roserade': '罗丝雷朵', + 'cranidos': '头盖龙', + 'rampardos': '战槌龙', + 'shieldon': '盾甲龙', + 'bastiodon': '护城龙', + 'burmy': '结草儿', + 'wormadam': '结草贵妇', + 'mothim': '绅士蛾', + 'combee': '三蜜蜂', + 'vespiquen': '蜂女王', + 'pachirisu': '帕奇利兹', + 'buizel': '泳圈鼬', + 'floatzel': '浮潜鼬', + 'cherubi': '樱花宝', + 'cherrim': '樱花儿', + 'shellos': '无壳海兔', + 'gastrodon': '海兔兽', + 'ambipom': '双尾怪手', + 'drifloon': '飘飘球', + 'drifblim': '随风球', + 'buneary': '卷卷耳', + 'lopunny': '长耳兔', + 'mismagius': '梦妖魔', + 'honchkrow': '乌鸦头头', + 'glameow': '魅力喵', + 'purugly': '东施喵', + 'chingling': '铃铛响', + 'stunky': '臭鼬噗', + 'skuntank': '坦克臭鼬', + 'bronzor': '铜镜怪', + 'bronzong': '青铜钟', + 'bonsly': '盆才怪', + 'mime_jr': '魔尼尼', + 'happiny': '小福蛋', + 'chatot': '聒噪鸟', + 'spiritomb': '花岩怪', + 'gible': '圆陆鲨', + 'gabite': '尖牙陆鲨', + 'garchomp': '烈咬陆鲨', + 'munchlax': '小卡比兽', + 'riolu': '利欧路', + 'lucario': '路卡利欧', + 'hippopotas': '沙河马', + 'hippowdon': '河马兽', + 'skorupi': '钳尾蝎', + 'drapion': '龙王蝎', + 'croagunk': '不良蛙', + 'toxicroak': '毒骷蛙', + 'carnivine': '尖牙笼', + 'finneon': '荧光鱼', + 'lumineon': '霓虹鱼', + 'mantyke': '小球飞鱼', + 'snover': '雪笠怪', + 'abomasnow': '暴雪王', + 'weavile': '玛狃拉', + 'magnezone': '自爆磁怪', + 'lickilicky': '大舌舔', + 'rhyperior': '超甲狂犀', + 'tangrowth': '巨蔓藤', + 'electivire': '电击魔兽', + 'magmortar': '鸭嘴炎兽', + 'togekiss': '波克基斯', + 'yanmega': '远古巨蜓', + 'leafeon': '叶伊布', + 'glaceon': '冰伊布', + 'gliscor': '天蝎王', + 'mamoswine': '象牙猪', + 'porygon_z': '多边兽乙型', + 'gallade': '艾路雷朵', + 'probopass': '大朝北鼻', + 'dusknoir': '黑夜魔灵', + 'froslass': '雪妖女', + 'rotom': '洛托姆', + 'uxie': '由克希', + 'mesprit': '艾姆利多', + 'azelf': '亚克诺姆', + 'dialga': '帝牙卢卡', + 'palkia': '帕路奇亚', + 'heatran': '席多蓝恩', + 'regigigas': '雷吉奇卡斯', + 'giratina': '骑拉帝纳', + 'cresselia': '克雷色利亚', + 'phione': '霏欧纳', + 'manaphy': '玛纳霏', + 'darkrai': '达克莱伊', + 'shaymin': '谢米', + 'arceus': '阿尔宙斯', + 'victini': '比克提尼', + 'snivy': '藤藤蛇', + 'servine': '青藤蛇', + 'serperior': '君主蛇', + 'tepig': '暖暖猪', + 'pignite': '炒炒猪', + 'emboar': '炎武王', + 'oshawott': '水水獭', + 'dewott': '双刃丸', + 'samurott': '大剑鬼', + 'patrat': '探探鼠', + 'watchog': '步哨鼠', + 'lillipup': '小约克', + 'herdier': '哈约克', + 'stoutland': '长毛狗', + 'purrloin': '扒手猫', + 'liepard': '酷豹', + 'pansage': '花椰猴', + 'simisage': '花椰猿', + 'pansear': '爆香猴', + 'simisear': '爆香猿', + 'panpour': '冷水猴', + 'simipour': '冷水猿', + 'munna': '食梦梦', + 'musharna': '梦梦蚀', + 'pidove': '豆豆鸽', + 'tranquill': '咕咕鸽', + 'unfezant': '高傲雉鸡', + 'blitzle': '斑斑马', + 'zebstrika': '雷电斑马', + 'roggenrola': '石丸子', + 'boldore': '地幔岩', + 'gigalith': '庞岩怪', + 'woobat': '滚滚蝙蝠', + 'swoobat': '心蝙蝠', + 'drilbur': '螺钉地鼠', + 'excadrill': '龙头地鼠', + 'audino': '差不多娃娃', + 'timburr': '搬运小匠', + 'gurdurr': '铁骨土人', + 'conkeldurr': '修建老匠', + 'tympole': '圆蝌蚪', + 'palpitoad': '蓝蟾蜍', + 'seismitoad': '蟾蜍王', + 'throh': '投摔鬼', + 'sawk': '打击鬼', + 'sewaddle': '虫宝包', + 'swadloon': '宝包茧', + 'leavanny': '保姆虫', + 'venipede': '百足蜈蚣', + 'whirlipede': '车轮球', + 'scolipede': '蜈蚣王', + 'cottonee': '木棉球', + 'whimsicott': '风妖精', + 'petilil': '百合根娃娃', + 'lilligant': '裙儿小姐', + 'basculin': '野蛮鲈鱼', + 'sandile': '黑眼鳄', + 'krokorok': '混混鳄', + 'krookodile': '流氓鳄', + 'darumaka': '火红不倒翁', + 'darmanitan': '达摩狒狒', + 'maractus': '沙铃仙人掌', + 'dwebble': '石居蟹', + 'crustle': '岩殿居蟹', + 'scraggy': '滑滑小子', + 'scrafty': '头巾混混', + 'sigilyph': '象征鸟', + 'yamask': '哭哭面具', + 'cofagrigus': '迭失棺', + 'tirtouga': '原盖海龟', + 'carracosta': '肋骨海龟', + 'archen': '始祖小鸟', + 'archeops': '始祖大鸟', + 'trubbish': '破破袋', + 'garbodor': '灰尘山', + 'zorua': '索罗亚', + 'zoroark': '索罗亚克', + 'minccino': '泡沫栗鼠', + 'cinccino': '奇诺栗鼠', + 'gothita': '哥德宝宝', + 'gothorita': '哥德小童', + 'gothitelle': '哥德小姐', + 'solosis': '单卵细胞球', + 'duosion': '双卵细胞球', + 'reuniclus': '人造细胞卵', + 'ducklett': '鸭宝宝', + 'swanna': '舞天鹅', + 'vanillite': '迷你冰', + 'vanillish': '多多冰', + 'vanilluxe': '双倍多多冰', + 'deerling': '四季鹿', + 'sawsbuck': '萌芽鹿', + 'emolga': '电飞鼠', + 'karrablast': '盖盖虫', + 'escavalier': '骑士蜗牛', + 'foongus': '哎呀球菇', + 'amoonguss': '败露球菇', + 'frillish': '轻飘飘', + 'jellicent': '胖嘟嘟', + 'alomomola': '保姆曼波', + 'joltik': '电电虫', + 'galvantula': '电蜘蛛', + 'ferroseed': '种子铁球', + 'ferrothorn': '坚果哑铃', + 'klink': '齿轮儿', + 'klang': '齿轮组', + 'klinklang': '齿轮怪', + 'tynamo': '麻麻小鱼', + 'eelektrik': '麻麻鳗', + 'eelektross': '麻麻鳗鱼王', + 'elgyem': '小灰怪', + 'beheeyem': '大宇怪', + 'litwick': '烛光灵', + 'lampent': '灯火幽灵', + 'chandelure': '水晶灯火灵', + 'axew': '牙牙', + 'fraxure': '斧牙龙', + 'haxorus': '双斧战龙', + 'cubchoo': '喷嚏熊', + 'beartic': '冻原熊', + 'cryogonal': '几何雪花', + 'shelmet': '小嘴蜗', + 'accelgor': '敏捷虫', + 'stunfisk': '泥巴鱼', + 'mienfoo': '功夫鼬', + 'mienshao': '师父鼬', + 'druddigon': '赤面龙', + 'golett': '泥偶小人', + 'golurk': '泥偶巨人', + 'pawniard': '驹刀小兵', + 'bisharp': '劈斩司令', + 'bouffalant': '爆炸头水牛', + 'rufflet': '毛头小鹰', + 'braviary': '勇士雄鹰', + 'vullaby': '秃鹰丫头', + 'mandibuzz': '秃鹰娜', + 'heatmor': '熔蚁兽', + 'durant': '铁蚁', + 'deino': '单首龙', + 'zweilous': '双首暴龙', + 'hydreigon': '三首恶龙', + 'larvesta': '燃烧虫', + 'volcarona': '火神蛾', + 'cobalion': '勾帕路翁', + 'terrakion': '代拉基翁', + 'virizion': '毕力吉翁', + 'tornadus': '龙卷云', + 'thundurus': '雷电云', + 'reshiram': '莱希拉姆', + 'zekrom': '捷克罗姆', + 'landorus': '土地云', + 'kyurem': '酋雷姆', + 'keldeo': '凯路迪欧', + 'meloetta': '美洛耶塔', + 'genesect': '盖诺赛克特', + 'chespin': '哈力栗', + 'quilladin': '胖胖哈力', + 'chesnaught': '布里卡隆', + 'fennekin': '火狐狸', + 'braixen': '长尾火狐', + 'delphox': '妖火红狐', + 'froakie': '呱呱泡蛙', + 'frogadier': '呱头蛙', + 'greninja': '甲贺忍蛙', + 'bunnelby': '掘掘兔', + 'diggersby': '掘地兔', + 'fletchling': '小箭雀', + 'fletchinder': '火箭雀', + 'talonflame': '烈箭鹰', + 'scatterbug': '粉蝶虫', + 'spewpa': '粉蝶蛹', + 'vivillon': '彩粉蝶', + 'litleo': '小狮狮', + 'pyroar': '火炎狮', + 'flabebe': '花蓓蓓', + 'floette': '花叶蒂', + 'florges': '花洁夫人', + 'skiddo': '坐骑小羊', + 'gogoat': '坐骑山羊', + 'pancham': '顽皮熊猫', + 'pangoro': '霸道熊猫', + 'furfrou': '多丽米亚', + 'espurr': '妙喵', + 'meowstic': '超能妙喵', + 'honedge': '独剑鞘', + 'doublade': '双剑鞘', + 'aegislash': '坚盾剑怪', + 'spritzee': '粉香香', + 'aromatisse': '芳香精', + 'swirlix': '绵绵泡芙', + 'slurpuff': '胖甜妮', + 'inkay': '好啦鱿', + 'malamar': '乌贼王', + 'binacle': '龟脚脚', + 'barbaracle': '龟足巨铠', + 'skrelp': '垃垃藻', + 'dragalge': '毒藻龙', + 'clauncher': '铁臂枪虾', + 'clawitzer': '钢炮臂虾', + 'helioptile': '伞电蜥', + 'heliolisk': '光电伞蜥', + 'tyrunt': '宝宝暴龙', + 'tyrantrum': '怪颚龙', + 'amaura': '冰雪龙', + 'aurorus': '冰雪巨龙', + 'sylveon': '仙子伊布', + 'hawlucha': '摔角鹰人', + 'dedenne': '咚咚鼠', + 'carbink': '小碎钻', + 'goomy': '黏黏宝', + 'sliggoo': '黏美儿', + 'goodra': '黏美龙', + 'klefki': '钥圈儿', + 'phantump': '小木灵', + 'trevenant': '朽木妖', + 'pumpkaboo': '南瓜精', + 'gourgeist': '南瓜怪人', + 'bergmite': '冰宝', + 'avalugg': '冰岩怪', + 'noibat': '嗡蝠', + 'noivern': '音波龙', + 'xerneas': '哲尔尼亚斯', + 'yveltal': '伊裴尔塔尔', + 'zygarde': '基格尔德', + 'diancie': '蒂安希', + 'hoopa': '胡帕', + 'volcanion': '波尔凯尼恩', + 'rowlet': '木木枭', + 'dartrix': '投羽枭', + 'decidueye': '狙射树枭', + 'litten': '火斑喵', + 'torracat': '炎热喵', + 'incineroar': '炽焰咆哮虎', + 'popplio': '球球海狮', + 'brionne': '花漾海狮', + 'primarina': '西狮海壬', + 'pikipek': '小笃儿', + 'trumbeak': '喇叭啄鸟', + 'toucannon': '铳嘴大鸟', + 'yungoos': '猫鼬少', + 'gumshoos': '猫鼬探长', + 'grubbin': '强颚鸡母虫', + 'charjabug': '虫电宝', + 'vikavolt': '锹农炮虫', + 'crabrawler': '好胜蟹', + 'crabominable': '好胜毛蟹', + 'oricorio': '花舞鸟', + 'cutiefly': '萌虻', + 'ribombee': '蝶结萌虻', + 'rockruff': '岩狗狗', + 'lycanroc': '鬃岩狼人', + 'wishiwashi': '弱丁鱼', + 'mareanie': '好坏星', + 'toxapex': '超坏星', + 'mudbray': '泥驴仔', + 'mudsdale': '重泥挽马', + 'dewpider': '滴蛛', + 'araquanid': '滴蛛霸', + 'fomantis': '伪螳草', + 'lurantis': '兰螳花', + 'morelull': '睡睡菇', + 'shiinotic': '灯罩夜菇', + 'salandit': '夜盗火蜥', + 'salazzle': '焰后蜥', + 'stufful': '童偶熊', + 'bewear': '穿着熊', + 'bounsweet': '甜竹竹', + 'steenee': '甜舞妮', + 'tsareena': '甜冷美后', + 'comfey': '花疗环环', + 'oranguru': '智挥猩', + 'passimian': '投掷猴', + 'wimpod': '胆小虫', + 'golisopod': '具甲武者', + 'sandygast': '沙丘娃', + 'palossand': '噬沙堡爷', + 'pyukumuku': '拳海参', + 'type_null': '属性:空', + 'silvally': '银伴战兽', + 'minior': '小陨星', + 'komala': '树枕尾熊', + 'turtonator': '爆焰龟兽', + 'togedemaru': '托戈德玛尔', + 'mimikyu': '谜拟丘', + 'bruxish': '磨牙彩皮鱼', + 'drampa': '老翁龙', + 'dhelmise': '破破舵轮', + 'jangmo_o': '心鳞宝', + 'hakamo_o': '鳞甲龙', + 'kommo_o': '杖尾鳞甲龙', + 'tapu_koko': '卡璞・鸣鸣', + 'tapu_lele': '卡璞・蝶蝶', + 'tapu_bulu': '卡璞・哞哞', + 'tapu_fini': '卡璞・鳍鳍', + 'cosmog': '科斯莫古', + 'cosmoem': '科斯莫姆', + 'solgaleo': '索尔迦雷欧', + 'lunala': '露奈雅拉', + 'nihilego': '虚吾伊德', + 'buzzwole': '爆肌蚊', + 'pheromosa': '费洛美螂', + 'xurkitree': '电束木', + 'celesteela': '铁火辉夜', + 'kartana': '纸御剑', + 'guzzlord': '恶食大王', + 'necrozma': '奈克洛兹玛', + 'magearna': '玛机雅娜', + 'marshadow': '玛夏多', + 'poipole': '毒贝比', + 'naganadel': '四颚针龙', + 'stakataka': '垒磊石', + 'blacephalon': '砰头小丑', + 'zeraora': '捷拉奥拉', + 'meltan': '美录坦', + 'melmetal': '美录梅塔', + 'grookey': '敲音猴', + 'thwackey': '啪咚猴', + 'rillaboom': '轰擂金刚猩', + 'scorbunny': '炎兔儿', + 'raboot': '腾蹴小将', + 'cinderace': '闪焰王牌', + 'sobble': '泪眼蜥', + 'drizzile': '变涩蜥', + 'inteleon': '千面避役', + 'skwovet': '贪心栗鼠', + 'greedent': '藏饱栗鼠', + 'rookidee': '稚山雀', + 'corvisquire': '蓝鸦', + 'corviknight': '钢铠鸦', + 'blipbug': '索侦虫', + 'dottler': '天罩虫', + 'orbeetle': '以欧路普', + 'nickit': '狡小狐', + 'thievul': '猾大狐', + 'gossifleur': '幼棉棉', + 'eldegoss': '白蓬蓬', + 'wooloo': '毛辫羊', + 'dubwool': '毛毛角羊', + 'chewtle': '咬咬龟', + 'drednaw': '暴噬龟', + 'yamper': '来电汪', + 'boltund': '逐电犬', + 'rolycoly': '小炭仔', + 'carkol': '大炭车', + 'coalossal': '巨炭山', + 'applin': '啃果虫', + 'flapple': '苹裹龙', + 'appletun': '丰蜜龙', + 'silicobra': '沙包蛇', + 'sandaconda': '沙螺蟒', + 'cramorant': '古月鸟', + 'arrokuda': '刺梭鱼', + 'barraskewda': '戽斗尖梭', + 'toxel': '电音婴', + 'toxtricity': '颤弦蝾螈', + 'sizzlipede': '烧火蚣', + 'centiskorch': '焚焰蚣', + 'clobbopus': '拳拳蛸', + 'grapploct': '八爪武师', + 'sinistea': '来悲茶', + 'polteageist': '怖思壶', + 'hatenna': '迷布莉姆', + 'hattrem': '提布莉姆', + 'hatterene': '布莉姆温', + 'impidimp': '捣蛋小妖', + 'morgrem': '诈唬魔', + 'grimmsnarl': '长毛巨魔', + 'obstagoon': '堵拦熊', + 'perrserker': '喵头目', + 'cursola': '魔灵珊瑚', + 'sirfetchd': '葱游兵', + 'mr_rime': '踏冰人偶', + 'runerigus': '迭失板', + 'milcery': '小仙奶', + 'alcremie': '霜奶仙', + 'falinks': '列阵兵', + 'pincurchin': '啪嚓海胆', + 'snom': '雪吞虫', + 'frosmoth': '雪绒蛾', + 'stonjourner': '巨石丁', + 'eiscue': '冰砌鹅', + 'indeedee': '爱管侍', + 'morpeko': '莫鲁贝可', + 'cufant': '铜象', + 'copperajah': '大王铜象', + 'dracozolt': '雷鸟龙', + 'arctozolt': '雷鸟海兽', + 'dracovish': '鳃鱼龙', + 'arctovish': '鳃鱼海兽', + 'duraludon': '铝钢龙', + 'dreepy': '多龙梅西亚', + 'drakloak': '多龙奇', + 'dragapult': '多龙巴鲁托', + 'zacian': '苍响', + 'zamazenta': '藏玛然特', + 'eternatus': '无极汰那', + 'kubfu': '熊徒弟', + 'urshifu': '武道熊师', + 'zarude': '萨戮德', + 'regieleki': '雷吉艾勒奇', + 'regidrago': '雷吉铎拉戈', + 'glastrier': '雪暴马', + 'spectrier': '灵幽马', + 'calyrex': '蕾冠王', + 'wyrdeer': '诡角鹿', + 'kleavor': '劈斧螳螂', + 'ursaluna': '月月熊', + 'basculegion': '幽尾玄鱼', + 'sneasler': '大狃拉', + 'overqwil': '万针鱼', + 'enamorus': '眷恋云', + 'sprigatito': '新叶喵', + 'floragato': '蒂蕾喵', + 'meowscarada': '魔幻假面喵', + 'fuecoco': '呆火鳄', + 'crocalor': '炙烫鳄', + 'skeledirge': '骨纹巨声鳄', + 'quaxly': '润水鸭', + 'quaxwell': '涌跃鸭', + 'quaquaval': '狂欢浪舞鸭', + 'lechonk': '爱吃豚', + 'oinkologne': '飘香豚', + 'tarountula': '团珠蛛', + 'spidops': '操陷蛛', + 'nymble': '豆蟋蟀', + 'lokix': '烈腿蝗', + 'pawmi': '布拨', + 'pawmo': '布土拨', + 'pawmot': '巴布土拨', + 'tandemaus': '一对鼠', + 'maushold': '一家鼠', + 'fidough': '狗仔包', + 'dachsbun': '麻花犬', + 'smoliv': '迷你芙', + 'dolliv': '奥利纽', + 'arboliva': '奥利瓦', + 'squawkabilly': '怒鹦哥', + 'nacli': '盐石宝', + 'naclstack': '盐石垒', + 'garganacl': '盐石巨灵', + 'charcadet': '炭小侍', + 'armarouge': '红莲铠骑', + 'ceruledge': '苍炎刃鬼', + 'tadbulb': '光蚪仔', + 'bellibolt': '电肚蛙', + 'wattrel': '电海燕', + 'kilowattrel': '大电海燕', + 'maschiff': '偶叫獒', + 'mabosstiff': '獒教父', + 'shroodle': '滋汁鼹', + 'grafaiai': '涂标客', + 'bramblin': '纳噬草', + 'brambleghast': '怖纳噬草', + 'toedscool': '原野水母', + 'toedscruel': '陆地水母', + 'klawf': '毛崖蟹', + 'capsakid': '热辣娃', + 'scovillain': '狠辣椒', + 'rellor': '虫滚泥', + 'rabsca': '虫甲圣', + 'flittle': '飘飘雏', + 'espathra': '超能艳鸵', + 'tinkatink': '小锻匠', + 'tinkatuff': '巧锻匠', + 'tinkaton': '巨锻匠', + 'wiglett': '海地鼠', + 'wugtrio': '三海地鼠', + 'bombirdier': '下石鸟', + 'finizen': '波普海豚', + 'palafin': '海豚侠', + 'varoom': '噗隆隆', + 'revavroom': '普隆隆姆', + 'cyclizar': '摩托蜥', + 'orthworm': '拖拖蚓', + 'glimmet': '晶光芽', + 'glimmora': '晶光花', + 'greavard': '墓仔狗', + 'houndstone': '墓扬犬', + 'flamigo': '缠红鹤', + 'cetoddle': '走鲸', + 'cetitan': '浩大鲸', + 'veluza': '轻身鳕', + 'dondozo': '吃吼霸', + 'tatsugiri': '米立龙', + 'annihilape': '弃世猴', + 'clodsire': '土王', + 'farigiraf': '奇麒麟', + 'dudunsparce': '土龙节节', + 'kingambit': '仆刀将军', + 'great_tusk': '雄伟牙', + 'scream_tail': '吼叫尾', + 'brute_bonnet': '猛恶菇', + 'flutter_mane': '振翼发', + 'slither_wing': '爬地翅', + 'sandy_shocks': '沙铁皮', + 'iron_treads': '铁辙迹', + 'iron_bundle': '铁包袱', + 'iron_hands': '铁臂膀', + 'iron_jugulis': '铁脖颈', + 'iron_moth': '铁毒蛾', + 'iron_thorns': '铁荆棘', + 'frigibax': '凉脊龙', + 'arctibax': '冻脊龙', + 'baxcalibur': '戟脊龙', + 'gimmighoul': '索财灵', + 'gholdengo': '赛富豪', + 'wo_chien': '古简蜗', + 'chien_pao': '古剑豹', + 'ting_lu': '古鼎鹿', + 'chi_yu': '古玉鱼', + 'roaring_moon': '轰鸣月', + 'iron_valiant': '铁武者', + 'koraidon': '故勒顿', + 'miraidon': '密勒顿', + 'walking_wake': '波荡水', + 'iron_leaves': '铁斑叶', + 'dipplin': '裹蜜虫', + 'poltchageist': '斯魔茶', + 'sinistcha': '来悲粗茶', + 'okidogi': '够赞狗', + 'munkidori': '愿增猿', + 'fezandipiti': '吉雉鸡', + 'ogerpon': '厄诡椪', + 'archaludon': '铝钢桥龙', + 'hydrapple': '蜜集大蛇', + 'gouging_fire': '破空焰', + 'raging_bolt': '猛雷鼓', + 'iron_boulder': '铁磐岩', + 'iron_crown': '铁头壳', + 'terapagos': '太乐巴戈斯', + 'pecharunt': '桃歹郎', + 'alola_rattata': '小拉达', + 'alola_raticate': '拉达', + 'alola_raichu': '雷丘', + 'alola_sandshrew': '穿山鼠', + 'alola_sandslash': '穿山王', + 'alola_vulpix': '六尾', + 'alola_ninetales': '九尾', + 'alola_diglett': '地鼠', + 'alola_dugtrio': '三地鼠', + 'alola_meowth': '喵喵', + 'alola_persian': '猫老大', + 'alola_geodude': '小拳石', + 'alola_graveler': '隆隆石', + 'alola_golem': '隆隆岩', + 'alola_grimer': '臭泥', + 'alola_muk': '臭臭泥', + 'alola_exeggutor': '椰蛋树', + 'alola_marowak': '嘎啦嘎啦', + 'eternal_floette': '花叶蒂', + 'galar_meowth': '喵喵', + 'galar_ponyta': '小火马', + 'galar_rapidash': '烈焰马', + 'galar_slowpoke': '呆呆兽', + 'galar_slowbro': '呆壳兽', + 'galar_farfetchd': '大葱鸭', + 'galar_weezing': '双弹瓦斯', + 'galar_mr_mime': '魔墙人偶', + 'galar_articuno': '急冻鸟', + 'galar_zapdos': '闪电鸟', + 'galar_moltres': '火焰鸟', + 'galar_slowking': '呆呆王', + 'galar_corsola': '太阳珊瑚', + 'galar_zigzagoon': '蛇纹熊', + 'galar_linoone': '直冲熊', + 'galar_darumaka': '火红不倒翁', + 'galar_darmanitan': '达摩狒狒', + 'galar_yamask': '哭哭面具', + 'galar_stunfisk': '泥巴鱼', + 'hisui_growlithe': '卡蒂狗', + 'hisui_arcanine': '风速狗', + 'hisui_voltorb': '霹雳电球', + 'hisui_electrode': '顽皮雷弹', + 'hisui_typhlosion': '火暴兽', + 'hisui_qwilfish': '千针鱼', + 'hisui_sneasel': '狃拉', + 'hisui_samurott': '大剑鬼', + 'hisui_lilligant': '裙儿小姐', + 'hisui_zorua': '索罗亚', + 'hisui_zoroark': '索罗亚克', + 'hisui_braviary': '勇士雄鹰', + 'hisui_sliggoo': '黏美儿', + 'hisui_goodra': '黏美龙', + 'hisui_avalugg': '冰岩怪', + 'hisui_decidueye': '狙射树枭', + 'paldea_tauros': '肯泰罗', + 'paldea_wooper': '乌波', + 'bloodmoon_ursaluna': '月月熊', +} as const; diff --git a/src/locales/zh_CN/starter-select-ui-handler.ts b/src/locales/zh_CN/starter-select-ui-handler.ts index 0713b454376..737b2a141d7 100644 --- a/src/locales/zh_CN/starter-select-ui-handler.ts +++ b/src/locales/zh_CN/starter-select-ui-handler.ts @@ -1,4 +1,4 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The menu namespace holds most miscellaneous text that isn't directly part of the game's @@ -6,39 +6,39 @@ import { SimpleTranslationEntries } from "#app/plugins/i18n"; * account interactions, descriptive text, etc. */ export const starterSelectUiHandler: SimpleTranslationEntries = { - "confirmStartTeam":'使用这些宝可梦开始游戏吗?', - "gen1": "I", - "gen2": "II", - "gen3": "III", - "gen4": "IV", - "gen5": "V", - "gen6": "VI", - "gen7": "VII", - "gen8": "VIII", - "gen9": "IX", - "growthRate": "成长速度:", - "ability": "特性:", - "passive": "被动:", - "nature": "性格:", - "eggMoves": '蛋招式', - "start": "开始", - "addToParty": "加入队伍", - "toggleIVs": '切换个体值', - "manageMoves": '管理招式', - "useCandies": '使用糖果', - "selectMoveSwapOut": "选择要替换的招式。", - "selectMoveSwapWith": "选择要替换成的招式", - "unlockPassive": "解锁被动", - "reduceCost": "降低花费", - "cycleShiny": "R: 切换闪光", - "cycleForm": 'F: 切换形态', - "cycleGender": 'G: 切换性别', - "cycleAbility": 'E: 切换特性', - "cycleNature": 'N: 切换性格', - "cycleVariant": 'V: 切换变种', - "enablePassive": "启用被动", - "disablePassive": "禁用被动", - "locked": "未解锁", - "disabled": "已禁用", - "uncaught": "未捕获" -} + 'confirmStartTeam':'使用这些宝可梦开始游戏吗?', + 'gen1': 'I', + 'gen2': 'II', + 'gen3': 'III', + 'gen4': 'IV', + 'gen5': 'V', + 'gen6': 'VI', + 'gen7': 'VII', + 'gen8': 'VIII', + 'gen9': 'IX', + 'growthRate': '成长速度:', + 'ability': '特性:', + 'passive': '被动:', + 'nature': '性格:', + 'eggMoves': '蛋招式', + 'start': '开始', + 'addToParty': '加入队伍', + 'toggleIVs': '切换个体值', + 'manageMoves': '管理招式', + 'useCandies': '使用糖果', + 'selectMoveSwapOut': '选择要替换的招式。', + 'selectMoveSwapWith': '选择要替换成的招式', + 'unlockPassive': '解锁被动', + 'reduceCost': '降低花费', + 'cycleShiny': 'R: 切换闪光', + 'cycleForm': 'F: 切换形态', + 'cycleGender': 'G: 切换性别', + 'cycleAbility': 'E: 切换特性', + 'cycleNature': 'N: 切换性格', + 'cycleVariant': 'V: 切换变种', + 'enablePassive': '启用被动', + 'disablePassive': '禁用被动', + 'locked': '未解锁', + 'disabled': '已禁用', + 'uncaught': '未捕获' +}; diff --git a/src/locales/zh_CN/trainers.ts b/src/locales/zh_CN/trainers.ts index 7fa16d87fad..32df9022dae 100644 --- a/src/locales/zh_CN/trainers.ts +++ b/src/locales/zh_CN/trainers.ts @@ -1,300 +1,300 @@ -import {SimpleTranslationEntries} from "#app/plugins/i18n"; +import {SimpleTranslationEntries} from '#app/plugins/i18n'; // Titles of special trainers like gym leaders, elite four, and the champion export const titles: SimpleTranslationEntries = { - "elite_four": "四天王", - "gym_leader": "道馆馆主", - "gym_leader_female": "道馆馆主", - "champion": "冠军", - "rival": "劲敌", - "professor": "博士", - "frontier_brain": "开拓头脑", - // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. + 'elite_four': '四天王', + 'gym_leader': '道馆馆主', + 'gym_leader_female': '道馆馆主', + 'champion': '冠军', + 'rival': '劲敌', + 'professor': '博士', + 'frontier_brain': '开拓头脑', + // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. } as const; // Titles of trainers like "Youngster" or "Lass" export const trainerClasses: SimpleTranslationEntries = { - "ace_trainer": "精英训练家", - "ace_trainer_female": "精英训练家", - "ace_duo": "精英组合", - "artist": "艺术家", - "artist_female": "艺术家", - "backers": "啦啦队", - "backpacker": "背包客", - "backpacker_female": "背包客", - "backpackers": "背包客组合", - "baker": "面包师", - "battle_girl": "对战少女", - "beauty": "大姐姐", - "beginners": "新人训练家组合", - "biker": "飙车族", - "black_belt": "空手道王", - "breeder": "宝可梦培育家", - "breeder_female": "宝可梦培育家", - "breeders": "宝可梦培育家组合", - "clerk": "商务人士", - "clerk_female": "职场OL", - "colleagues": "商务伙伴", - "crush_kin": "格斗姐弟", - "cyclist": "自行车手", - "cyclist_female": "自行车手", - "cyclists": "自行车手组合", - "dancer": "舞者", - "dancer_female": "舞者", - "depot_agent": "铁路员工", - "doctor": "医生", - "doctor_female": "医生", - "fisherman": "垂钓者", - "fisherman_female": "垂钓者", - "gentleman": "绅士", - "guitarist": "吉他手", - "guitarist_female": "吉他手", - "harlequin": "滑稽演员", - "hiker": "登山男", - "hooligans": "坏组合", - "hoopster": "篮球选手", - "infielder": "棒球选手", - "janitor": "清洁员", - "lady": "千金小姐", - "lass": "迷你裙", - "linebacker": "美式橄榄球选手", - "maid": "女仆", - "madame": "女士", - "medical_team": "医疗团队", - "musician": "音乐家", - "hex_maniac": "灵异迷", - "nurse": "护士", - "nursery_aide": "幼儿园老师", - "officer": "警察", - "parasol_lady": "阳伞姐姐", - "pilot": "飞行员", - "pokéfan": "发烧友俱乐部", - "pokéfan_female": "发烧友俱乐部", - "pokéfan_family": "同好夫妇", - "preschooler": "幼儿园小朋友", - "preschooler_female": "幼儿园小朋友", - "preschoolers": "幼儿园小朋友组合", - "psychic": "超能力者", - "psychic_female": "超能力者", - "psychics": "超能力者组合", - "pokémon_ranger": "宝可梦巡护员", - "pokémon_ranger_female": "宝可梦巡护员", - "pokémon_rangers": "宝可梦巡护员组合", - "ranger": "巡护员", - "restaurant_staff": "服务生组合", - "rich": "Rich", - "rich_female": "Rich", - "rich_boy": "富家少爷", - "rich_couple": "富豪夫妇", - "rich_kid": "Rich Kid", - "rich_kid_female": "Rich Kid", - "rich_kids": "富二代组合", - "roughneck": "光头男", - "scientist": "研究员", - "scientist_female": "研究员", - "scientists": "研究员组合", - "smasher": "网球选手", - "snow_worker": "雪地工人", - "snow_worker_female": "雪地工人", - "striker": "足球选手", - "school_kid": "补习班学生", - "school_kid_female": "补习班学生", - "school_kids": "补习班学生组合", - "swimmer": "泳裤小伙子", - "swimmer_female": "比基尼大姐姐", - "swimmers": "泳装情侣", - "twins": "双胞胎", - "veteran": "资深训练家", - "veteran_female": "资深训练家", - "veteran_duo": "资深组合", - "waiter": "服务生", - "waitress": "女服务生", - "worker": "工人", - "worker_female": "工人", - "workers": "工人组合", - "youngster": "短裤小子" + 'ace_trainer': '精英训练家', + 'ace_trainer_female': '精英训练家', + 'ace_duo': '精英组合', + 'artist': '艺术家', + 'artist_female': '艺术家', + 'backers': '啦啦队', + 'backpacker': '背包客', + 'backpacker_female': '背包客', + 'backpackers': '背包客组合', + 'baker': '面包师', + 'battle_girl': '对战少女', + 'beauty': '大姐姐', + 'beginners': '新人训练家组合', + 'biker': '飙车族', + 'black_belt': '空手道王', + 'breeder': '宝可梦培育家', + 'breeder_female': '宝可梦培育家', + 'breeders': '宝可梦培育家组合', + 'clerk': '商务人士', + 'clerk_female': '职场OL', + 'colleagues': '商务伙伴', + 'crush_kin': '格斗姐弟', + 'cyclist': '自行车手', + 'cyclist_female': '自行车手', + 'cyclists': '自行车手组合', + 'dancer': '舞者', + 'dancer_female': '舞者', + 'depot_agent': '铁路员工', + 'doctor': '医生', + 'doctor_female': '医生', + 'fisherman': '垂钓者', + 'fisherman_female': '垂钓者', + 'gentleman': '绅士', + 'guitarist': '吉他手', + 'guitarist_female': '吉他手', + 'harlequin': '滑稽演员', + 'hiker': '登山男', + 'hooligans': '坏组合', + 'hoopster': '篮球选手', + 'infielder': '棒球选手', + 'janitor': '清洁员', + 'lady': '千金小姐', + 'lass': '迷你裙', + 'linebacker': '美式橄榄球选手', + 'maid': '女仆', + 'madame': '女士', + 'medical_team': '医疗团队', + 'musician': '音乐家', + 'hex_maniac': '灵异迷', + 'nurse': '护士', + 'nursery_aide': '幼儿园老师', + 'officer': '警察', + 'parasol_lady': '阳伞姐姐', + 'pilot': '飞行员', + 'pokéfan': '发烧友俱乐部', + 'pokéfan_female': '发烧友俱乐部', + 'pokéfan_family': '同好夫妇', + 'preschooler': '幼儿园小朋友', + 'preschooler_female': '幼儿园小朋友', + 'preschoolers': '幼儿园小朋友组合', + 'psychic': '超能力者', + 'psychic_female': '超能力者', + 'psychics': '超能力者组合', + 'pokémon_ranger': '宝可梦巡护员', + 'pokémon_ranger_female': '宝可梦巡护员', + 'pokémon_rangers': '宝可梦巡护员组合', + 'ranger': '巡护员', + 'restaurant_staff': '服务生组合', + 'rich': 'Rich', + 'rich_female': 'Rich', + 'rich_boy': '富家少爷', + 'rich_couple': '富豪夫妇', + 'rich_kid': 'Rich Kid', + 'rich_kid_female': 'Rich Kid', + 'rich_kids': '富二代组合', + 'roughneck': '光头男', + 'scientist': '研究员', + 'scientist_female': '研究员', + 'scientists': '研究员组合', + 'smasher': '网球选手', + 'snow_worker': '雪地工人', + 'snow_worker_female': '雪地工人', + 'striker': '足球选手', + 'school_kid': '补习班学生', + 'school_kid_female': '补习班学生', + 'school_kids': '补习班学生组合', + 'swimmer': '泳裤小伙子', + 'swimmer_female': '比基尼大姐姐', + 'swimmers': '泳装情侣', + 'twins': '双胞胎', + 'veteran': '资深训练家', + 'veteran_female': '资深训练家', + 'veteran_duo': '资深组合', + 'waiter': '服务生', + 'waitress': '女服务生', + 'worker': '工人', + 'worker_female': '工人', + 'workers': '工人组合', + 'youngster': '短裤小子' } as const; // Names of special trainers like gym leaders, elite four, and the champion export const trainerNames: SimpleTranslationEntries = { - // ---- 馆主 Gym leader ---- - // 关都地区 Kanto Region - "brock": "小刚", - "misty": "小霞", - "lt_surge": "马志士", - "erika": "莉佳", - "janine": "阿杏", - "sabrina": "娜姿", - "blaine": "夏伯", - "giovanni": "坂木", + // ---- 馆主 Gym leader ---- + // 关都地区 Kanto Region + 'brock': '小刚', + 'misty': '小霞', + 'lt_surge': '马志士', + 'erika': '莉佳', + 'janine': '阿杏', + 'sabrina': '娜姿', + 'blaine': '夏伯', + 'giovanni': '坂木', - // 城都地区 Johto Region - "falkner": "阿速", - "bugsy": "阿笔", - "whitney": "小茜", - "morty": "松叶", - "chuck": "阿四", - "jasmine": "阿蜜", - "pryce": "柳伯", - "clair": "小椿", + // 城都地区 Johto Region + 'falkner': '阿速', + 'bugsy': '阿笔', + 'whitney': '小茜', + 'morty': '松叶', + 'chuck': '阿四', + 'jasmine': '阿蜜', + 'pryce': '柳伯', + 'clair': '小椿', - // 丰缘地区 Hoenn Region - "roxanne": "杜娟", - "brawly": "藤树", - "wattson": "铁旋", - "flannery": "亚莎", - "norman": "千里", - "winona": "娜琪", - "tate": "小枫", - "liza": "小南", - "juan": "亚当", + // 丰缘地区 Hoenn Region + 'roxanne': '杜娟', + 'brawly': '藤树', + 'wattson': '铁旋', + 'flannery': '亚莎', + 'norman': '千里', + 'winona': '娜琪', + 'tate': '小枫', + 'liza': '小南', + 'juan': '亚当', - // 神奥地区 Sinnoh Region - "roark": "瓢太", - "gardenia": "菜种", - "maylene": "阿李", - "crasher_wake": "吉宪", - "fantina": "梅丽莎", - "byron": "东瓜", - "candice": "小菘", - "volkner": "电次", + // 神奥地区 Sinnoh Region + 'roark': '瓢太', + 'gardenia': '菜种', + 'maylene': '阿李', + 'crasher_wake': '吉宪', + 'fantina': '梅丽莎', + 'byron': '东瓜', + 'candice': '小菘', + 'volkner': '电次', - // 合众地区 Unova Region - "cilan": "天桐", - "chili": "伯特", - "cress": "寇恩", - "cheren": "黑连", - "lenora": "芦荟", - "roxie": "霍米加", - "burgh": "亚堤", - "elesa": "小菊儿", - "clay": "菊老大", - "skyla": "风露", - "brycen": "哈奇库", - "drayden": "夏卡", - "marlon": "西子伊", + // 合众地区 Unova Region + 'cilan': '天桐', + 'chili': '伯特', + 'cress': '寇恩', + 'cheren': '黑连', + 'lenora': '芦荟', + 'roxie': '霍米加', + 'burgh': '亚堤', + 'elesa': '小菊儿', + 'clay': '菊老大', + 'skyla': '风露', + 'brycen': '哈奇库', + 'drayden': '夏卡', + 'marlon': '西子伊', - // 卡洛斯地区 Kalos Region - "viola": "紫罗兰", - "grant": "查克洛", - "korrina": "可尔妮", - "ramos": "福爷", - "clemont": "希特隆", - "valerie": "玛绣", - "olympia": "葛吉花", - "wulfric": "得抚", + // 卡洛斯地区 Kalos Region + 'viola': '紫罗兰', + 'grant': '查克洛', + 'korrina': '可尔妮', + 'ramos': '福爷', + 'clemont': '希特隆', + 'valerie': '玛绣', + 'olympia': '葛吉花', + 'wulfric': '得抚', - // 伽勒尔地区 Galar Region - "milo": "亚洛", - "nessa": "露璃娜", - "kabu": "卡芜", - "bea": "彩豆", - "allister": "欧尼奥", - "opal": "波普菈", - "bede": "彼特", - "gordie": "玛瓜", - "melony": "美蓉", - "piers": "聂梓", - "marnie": "玛俐", - "raihan": "奇巴纳", + // 伽勒尔地区 Galar Region + 'milo': '亚洛', + 'nessa': '露璃娜', + 'kabu': '卡芜', + 'bea': '彩豆', + 'allister': '欧尼奥', + 'opal': '波普菈', + 'bede': '彼特', + 'gordie': '玛瓜', + 'melony': '美蓉', + 'piers': '聂梓', + 'marnie': '玛俐', + 'raihan': '奇巴纳', - // 帕底亚地区 Paldea Region - "katy": "阿枫", - "brassius": "寇沙", - "iono": "奇树", - "kofu": "海岱", - "larry": "青木", - "ryme": "莱姆", - "tulip": "莉普", - "grusha": "古鲁夏", + // 帕底亚地区 Paldea Region + 'katy': '阿枫', + 'brassius': '寇沙', + 'iono': '奇树', + 'kofu': '海岱', + 'larry': '青木', + 'ryme': '莱姆', + 'tulip': '莉普', + 'grusha': '古鲁夏', - // ---- 四天王 Elite Four ---- - // 关都地区 Kanto Region - "lorelei": "科拿", - "bruno": "希巴", - "agatha": "菊子", - "lance": "阿渡", + // ---- 四天王 Elite Four ---- + // 关都地区 Kanto Region + 'lorelei': '科拿', + 'bruno': '希巴', + 'agatha': '菊子', + 'lance': '阿渡', - // 城都地区 Johto Region - "will": "一树", - "koga": "阿桔", - "karen": "梨花", + // 城都地区 Johto Region + 'will': '一树', + 'koga': '阿桔', + 'karen': '梨花', - // 丰都地区 Hoenn Region - "sidney": "花月", - "phoebe": "芙蓉", - "glacia": "波妮", - "drake": "源治", + // 丰都地区 Hoenn Region + 'sidney': '花月', + 'phoebe': '芙蓉', + 'glacia': '波妮', + 'drake': '源治', - // 神奥地区 Sinnoh Region - "aaron": "阿柳", - "bertha": "菊野", - "flint": "大叶", - "lucian": "悟松", + // 神奥地区 Sinnoh Region + 'aaron': '阿柳', + 'bertha': '菊野', + 'flint': '大叶', + 'lucian': '悟松', - // 合众地区 Unova Region - "shauntal": "婉龙", - "marshal": "连武", - "grimsley": "越橘", - "caitlin": "嘉德丽雅", + // 合众地区 Unova Region + 'shauntal': '婉龙', + 'marshal': '连武', + 'grimsley': '越橘', + 'caitlin': '嘉德丽雅', - // 卡洛斯地区 Kalos Region - "malva": "帕琦拉", - "siebold": "志米", - "wikstrom": "雁铠", - "drasna": "朵拉塞娜", + // 卡洛斯地区 Kalos Region + 'malva': '帕琦拉', + 'siebold': '志米', + 'wikstrom': '雁铠', + 'drasna': '朵拉塞娜', - // 阿罗拉地区 Alola Region - "hala": "哈拉", - "molayne": "马睿因", - "olivia": "丽姿", - "acerola": "阿塞萝拉", - "kahili": "卡希丽", + // 阿罗拉地区 Alola Region + 'hala': '哈拉', + 'molayne': '马睿因', + 'olivia': '丽姿', + 'acerola': '阿塞萝拉', + 'kahili': '卡希丽', - // 帕底亚地区 Paldea Region - "rika": "辛俐", - "poppy": "波琵", - "hassel": "八朔", + // 帕底亚地区 Paldea Region + 'rika': '辛俐', + 'poppy': '波琵', + 'hassel': '八朔', - // 蓝莓学院 Blueberry Academy - "crispin": "赤松", - "amarys": "纳莉", - "lacey": "紫竽", - "drayton": "杜若", + // 蓝莓学院 Blueberry Academy + 'crispin': '赤松', + 'amarys': '纳莉', + 'lacey': '紫竽', + 'drayton': '杜若', - // ---- 冠军 Champion ---- - // 关都地区 Kanto Region - "blue": "青绿", - "red": "赤红", + // ---- 冠军 Champion ---- + // 关都地区 Kanto Region + 'blue': '青绿', + 'red': '赤红', - // 丰缘地区 Hoenn Region - "steven": "大吾", - "wallace": "米可利", + // 丰缘地区 Hoenn Region + 'steven': '大吾', + 'wallace': '米可利', - // 神奥地区 Sinnoh Region - "cynthia": "竹兰", + // 神奥地区 Sinnoh Region + 'cynthia': '竹兰', - // 合众地区 Unova Region - "alder": "阿戴克", - "iris": "艾莉丝", + // 合众地区 Unova Region + 'alder': '阿戴克', + 'iris': '艾莉丝', - // 卡洛斯地区 Kalos Region - "diantha": "卡露妮", + // 卡洛斯地区 Kalos Region + 'diantha': '卡露妮', - // 阿罗拉地区 Alola Region - "hau": "哈乌", + // 阿罗拉地区 Alola Region + 'hau': '哈乌', - // 伽勒尔地区 Galar Region - "leon": "丹帝", + // 伽勒尔地区 Galar Region + 'leon': '丹帝', - // 帕底亚地区 paldea Region - "geeta": "也慈", - "nemona": "妮莫", + // 帕底亚地区 paldea Region + 'geeta': '也慈', + 'nemona': '妮莫', - // 蓝莓学院 Blueberry academy - "kieran": "乌栗", + // 蓝莓学院 Blueberry academy + 'kieran': '乌栗', - // 劲敌 rival - "rival": "芬恩", - "rival_female": "艾薇", + // 劲敌 rival + 'rival': '芬恩', + 'rival_female': '艾薇', } as const; diff --git a/src/locales/zh_CN/tutorial.ts b/src/locales/zh_CN/tutorial.ts index f5e95fc9c68..090200026e7 100644 --- a/src/locales/zh_CN/tutorial.ts +++ b/src/locales/zh_CN/tutorial.ts @@ -1,32 +1,32 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const tutorial: SimpleTranslationEntries = { - "intro": `欢迎来到PokéRogue!这是一款以战斗为核心的融合了roguelite元素的宝可梦同人游戏。 + 'intro': `欢迎来到PokéRogue!这是一款以战斗为核心的融合了roguelite元素的宝可梦同人游戏。 $本游戏未进行商业化,我们没有\nPokémon或Pokémon使用的版 $权资产的所有权。 $游戏仍在开发中,但已可完整游玩。如需报\n告错误,请使用 Discord 社区。 $如果游戏运行缓慢,请确保在浏览器设置中\n打开了“硬件加速”。`, - "accessMenu": `在等待输入时,按 M 或 Escape 键可访\n问菜单。菜单包含设置和各种功能。`, + 'accessMenu': '在等待输入时,按 M 或 Escape 键可访\n问菜单。菜单包含设置和各种功能。', - "menu": `在此菜单中,您可以访问设置。 + 'menu': `在此菜单中,您可以访问设置。 $在设置中,您可以更改游戏速度、窗口样式\n和其他选项。 $这里还有各种其他功能,请务必全部查看!`, - "starterSelect": `在此页面中,您可以选择您的初始宝可梦。\n这些是您最初的队伍成员。 + 'starterSelect': `在此页面中,您可以选择您的初始宝可梦。\n这些是您最初的队伍成员。 $每个初始宝可梦都有一个费用值。您的队伍\n最多可以拥有6名成员,只要总费用不超过10。 $您还可以根据您捕获或孵化的变种选择性别\n、特性和形态。 $一个物种个体值是您捕获或孵化的所有宝可\n梦中最好的,所以尽量获得更多同种宝可梦!`, - "pokerus": `每天随机3个可选的初始宝可梦会有紫色边\n框。 + 'pokerus': `每天随机3个可选的初始宝可梦会有紫色边\n框。 $如果您看到您拥有的初始宝可梦带有紫色边\n框,请尝试将其添加到您的队伍中。请务必 $查看其概况!`, - "statChange": `只要您的宝可梦没有被召回,属性变化就会\n在战斗中持续存在。 + 'statChange': `只要您的宝可梦没有被召回,属性变化就会\n在战斗中持续存在。 $在训练家战斗之前和进入新的宝可梦群落之\n前,您的宝可梦会被召回。 $您还可以通过按住C或Shift键来查看\n场上宝可梦的能力变化。`, - "selectItem": `每次战斗后,您都可以选择 3 个随机物品。\n您只能选择其中一个。 + 'selectItem': `每次战斗后,您都可以选择 3 个随机物品。\n您只能选择其中一个。 $这些物品包括消耗品、宝可梦携带物品和永\n久被动道具。 $大多数非消耗品的效果会以各种方式叠加。 $某些物品只有在可以使用时才会出现,例如\n进化物品。 @@ -35,10 +35,10 @@ export const tutorial: SimpleTranslationEntries = { $您可以用金钱购买消耗品,并且随着您游戏\n的深入,将会有更多种类的消耗品可供选择。 $请务必在选择随机物品之前购买这些消耗品\n因为一旦您选择,游戏就会进入下一场战斗。`, - "eggGacha": `在此页面中,您可以使用您的兑换券兑换宝\n可梦蛋。 + 'eggGacha': `在此页面中,您可以使用您的兑换券兑换宝\n可梦蛋。 $蛋需要孵化,并且在每场战斗后都会减少孵\n化周期。稀有蛋需要更长时间才能孵化。 $孵化的宝可梦不会被添加到您的队伍中,它\n们将被添加到您的初始宝可梦中。 $从蛋中孵化的宝可梦通常比野生宝可梦具有\n更好的个体值。 $有些宝可梦只能从蛋中获得。 $有 3 种不同的扭蛋机可供选择,每种扭蛋机\n都有不同的奖励,请选择最适合您的!`, -} as const; \ No newline at end of file +} as const; diff --git a/src/locales/zh_CN/voucher.ts b/src/locales/zh_CN/voucher.ts index 7d0f8d2b2dd..2ce8abb24db 100644 --- a/src/locales/zh_CN/voucher.ts +++ b/src/locales/zh_CN/voucher.ts @@ -1,11 +1,11 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; export const voucher: SimpleTranslationEntries = { - "vouchers": "兑换券", - "eggVoucher": "初级扭蛋券", - "eggVoucherPlus": "中级扭蛋券", - "eggVoucherPremium": "高级扭蛋券", - "eggVoucherGold": "黄金扭蛋券", - "locked": "锁定", - "defeatTrainer": "你打败了{{trainerName}}" -} as const; \ No newline at end of file + 'vouchers': '兑换券', + 'eggVoucher': '初级扭蛋券', + 'eggVoucherPlus': '中级扭蛋券', + 'eggVoucherPremium': '高级扭蛋券', + 'eggVoucherGold': '黄金扭蛋券', + 'locked': '锁定', + 'defeatTrainer': '你打败了{{trainerName}}' +} as const; diff --git a/src/locales/zh_CN/weather.ts b/src/locales/zh_CN/weather.ts index f78de2339c0..ae1d016b593 100644 --- a/src/locales/zh_CN/weather.ts +++ b/src/locales/zh_CN/weather.ts @@ -1,44 +1,44 @@ -import { SimpleTranslationEntries } from "#app/plugins/i18n"; +import { SimpleTranslationEntries } from '#app/plugins/i18n'; /** * The weather namespace holds text displayed when weather is active during a battle */ export const weather: SimpleTranslationEntries = { - "sunnyStartMessage": "日照变强了!", - "sunnyLapseMessage": "日照很强。", - "sunnyClearMessage": "日照复原了。", + 'sunnyStartMessage': '日照变强了!', + 'sunnyLapseMessage': '日照很强。', + 'sunnyClearMessage': '日照复原了。', - "rainStartMessage": "开始下雨了!", - "rainLapseMessage": "雨继续下。", - "rainClearMessage": "雨停了。", + 'rainStartMessage': '开始下雨了!', + 'rainLapseMessage': '雨继续下。', + 'rainClearMessage': '雨停了。', - "sandstormStartMessage": "开始刮沙暴了!", - "sandstormLapseMessage": "沙暴肆虐。", - "sandstormClearMessage": "沙暴停止了!", - "sandstormDamageMessage": "沙暴袭击了{{pokemonPrefix}}{{pokemonName}}!", + 'sandstormStartMessage': '开始刮沙暴了!', + 'sandstormLapseMessage': '沙暴肆虐。', + 'sandstormClearMessage': '沙暴停止了!', + 'sandstormDamageMessage': '沙暴袭击了{{pokemonPrefix}}{{pokemonName}}!', - "hailStartMessage": "开始下冰雹了!", - "hailLapseMessage": "冰雹继续肆虐。", - "hailClearMessage": "冰雹不再下了。", - "hailDamageMessage": "冰雹袭击了{{pokemonPrefix}}{{pokemonName}}!", + 'hailStartMessage': '开始下冰雹了!', + 'hailLapseMessage': '冰雹继续肆虐。', + 'hailClearMessage': '冰雹不再下了。', + 'hailDamageMessage': '冰雹袭击了{{pokemonPrefix}}{{pokemonName}}!', - "snowStartMessage": "开始下雪了!", - "snowLapseMessage": "雪继续下。", - "snowClearMessage": "雪停了。", + 'snowStartMessage': '开始下雪了!', + 'snowLapseMessage': '雪继续下。', + 'snowClearMessage': '雪停了。', - "fogStartMessage": "起雾了!", - "fogLapseMessage": "雾很浓。", - "fogClearMessage": "雾散了。", + 'fogStartMessage': '起雾了!', + 'fogLapseMessage': '雾很浓。', + 'fogClearMessage': '雾散了。', - "heavyRainStartMessage": "开始下起了暴雨!", - "heavyRainLapseMessage": "暴雨势头不减。", - "heavyRainClearMessage": "暴雨停了。", + 'heavyRainStartMessage': '开始下起了暴雨!', + 'heavyRainLapseMessage': '暴雨势头不减。', + 'heavyRainClearMessage': '暴雨停了。', - "harshSunStartMessage": "日照变得非常强了!", - "harshSunLapseMessage": "强日照势头不减。", - "harshSunClearMessage": "日照复原了。", + 'harshSunStartMessage': '日照变得非常强了!', + 'harshSunLapseMessage': '强日照势头不减。', + 'harshSunClearMessage': '日照复原了。', - "strongWindsStartMessage": "吹起了神秘的乱流!", - "strongWindsLapseMessage": "神秘的乱流势头不减。", - "strongWindsClearMessage": "神秘的乱流停止了。" -} \ No newline at end of file + 'strongWindsStartMessage': '吹起了神秘的乱流!', + 'strongWindsLapseMessage': '神秘的乱流势头不减。', + 'strongWindsClearMessage': '神秘的乱流停止了。' +}; diff --git a/src/main.ts b/src/main.ts index b3b4d5f3cc6..9d9b6189c5f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,75 +12,75 @@ import { LoadingScene } from './loading-scene'; // Catch global errors and display them in an alert so users can report the issue. window.onerror = function (message, source, lineno, colno, error) { - console.error(error); - let errorString = `Received unhandled error. Open browser console and click OK to see details.\nError: ${message}\nSource: ${source}\nLine: ${lineno}\nColumn: ${colno}\nStack: ${error.stack}`; - //alert(errorString); - // Avoids logging the error a second time. - return true; + console.error(error); + const errorString = `Received unhandled error. Open browser console and click OK to see details.\nError: ${message}\nSource: ${source}\nLine: ${lineno}\nColumn: ${colno}\nStack: ${error.stack}`; + //alert(errorString); + // Avoids logging the error a second time. + return true; }; // Catch global promise rejections and display them in an alert so users can report the issue. window.addEventListener('unhandledrejection', (event) => { - let errorString = `Received unhandled promise rejection. Open browser console and click OK to see details.\nReason: ${event.reason}`; - console.error(event.reason); - //alert(errorString); + const errorString = `Received unhandled promise rejection. Open browser console and click OK to see details.\nReason: ${event.reason}`; + console.error(event.reason); + //alert(errorString); }); const config: Phaser.Types.Core.GameConfig = { - type: Phaser.WEBGL, - parent: 'app', - scale: { - width: 1920, - height: 1080, - mode: Phaser.Scale.FIT - }, - plugins: { - global: [{ - key: 'rexInputTextPlugin', - plugin: InputTextPlugin, - start: true - }, { - key: 'rexBBCodeTextPlugin', - plugin: BBCodeTextPlugin, - start: true - }, { - key: 'rexTransitionImagePackPlugin', - plugin: TransitionImagePackPlugin, - start: true - }], - scene: [{ - key: 'rexUI', - plugin: UIPlugin, - mapping: 'rexUI' - }] - }, - input: { - mouse: { - target: 'app' - }, - touch: { - target: 'app' - }, - gamepad: true - }, - dom: { - createContainer: true - }, - pixelArt: true, - pipeline: [ InvertPostFX ] as unknown as Phaser.Types.Core.PipelineConfig, - scene: [ LoadingScene, BattleScene ], - version: version + type: Phaser.WEBGL, + parent: 'app', + scale: { + width: 1920, + height: 1080, + mode: Phaser.Scale.FIT + }, + plugins: { + global: [{ + key: 'rexInputTextPlugin', + plugin: InputTextPlugin, + start: true + }, { + key: 'rexBBCodeTextPlugin', + plugin: BBCodeTextPlugin, + start: true + }, { + key: 'rexTransitionImagePackPlugin', + plugin: TransitionImagePackPlugin, + start: true + }], + scene: [{ + key: 'rexUI', + plugin: UIPlugin, + mapping: 'rexUI' + }] + }, + input: { + mouse: { + target: 'app' + }, + touch: { + target: 'app' + }, + gamepad: true + }, + dom: { + createContainer: true + }, + pixelArt: true, + pipeline: [ InvertPostFX ] as unknown as Phaser.Types.Core.PipelineConfig, + scene: [ LoadingScene, BattleScene ], + version: version }; const setPositionRelative = function (guideObject: any, x: number, y: number) { - if (guideObject && guideObject instanceof Phaser.GameObjects.GameObject) { - const offsetX = guideObject.width * (-0.5 + (0.5 - guideObject.originX)); - const offsetY = guideObject.height * (-0.5 + (0.5 - guideObject.originY)); - this.setPosition(guideObject.x + offsetX + x, guideObject.y + offsetY + y); - return; - } + if (guideObject && guideObject instanceof Phaser.GameObjects.GameObject) { + const offsetX = guideObject.width * (-0.5 + (0.5 - guideObject.originX)); + const offsetY = guideObject.height * (-0.5 + (0.5 - guideObject.originY)); + this.setPosition(guideObject.x + offsetX + x, guideObject.y + offsetY + y); + return; + } - this.setPosition(x, y); + this.setPosition(x, y); }; Phaser.GameObjects.Container.prototype.setPositionRelative = setPositionRelative; @@ -96,18 +96,18 @@ document.fonts.load('16px emerald').then(() => document.fonts.load('10px pkmnems let game; const startGame = () => { - game = new Phaser.Game(config); - game.sound.pauseOnBlur = false; + game = new Phaser.Game(config); + game.sound.pauseOnBlur = false; }; fetch('/manifest.json') - .then(res => res.json()) - .then(jsonResponse => { - startGame(); - game['manifest'] = jsonResponse.manifest; - }).catch(() => { - // Manifest not found (likely local build) - startGame(); - }); + .then(res => res.json()) + .then(jsonResponse => { + startGame(); + game['manifest'] = jsonResponse.manifest; + }).catch(() => { + // Manifest not found (likely local build) + startGame(); + }); export default game; diff --git a/src/messages.ts b/src/messages.ts index ffd9aa6efea..3d5f0febae3 100644 --- a/src/messages.ts +++ b/src/messages.ts @@ -1,5 +1,5 @@ -import { BattleSpec } from "./enums/battle-spec"; -import Pokemon from "./field/pokemon"; +import { BattleSpec } from './enums/battle-spec'; +import Pokemon from './field/pokemon'; export function getPokemonMessage(pokemon: Pokemon, content: string): string { return `${getPokemonPrefix(pokemon)}${pokemon.name}${content}`; @@ -8,12 +8,12 @@ export function getPokemonMessage(pokemon: Pokemon, content: string): string { export function getPokemonPrefix(pokemon: Pokemon): string { let prefix: string; switch (pokemon.scene.currentBattle.battleSpec) { - case BattleSpec.DEFAULT: - prefix = !pokemon.isPlayer() ? pokemon.hasTrainer() ? 'Foe ' : 'Wild ' : ''; - break; - case BattleSpec.FINAL_BOSS: - prefix = !pokemon.isPlayer() ? 'Foe ' : ''; - break; + case BattleSpec.DEFAULT: + prefix = !pokemon.isPlayer() ? pokemon.hasTrainer() ? 'Foe ' : 'Wild ' : ''; + break; + case BattleSpec.FINAL_BOSS: + prefix = !pokemon.isPlayer() ? 'Foe ' : ''; + break; } return prefix; -} \ No newline at end of file +} diff --git a/src/modifier/modifier-tier.ts b/src/modifier/modifier-tier.ts index ab9ae99898e..81bb1ad8ae5 100644 --- a/src/modifier/modifier-tier.ts +++ b/src/modifier/modifier-tier.ts @@ -5,4 +5,4 @@ export enum ModifierTier { ROGUE, MASTER, LUXURY -} \ No newline at end of file +} diff --git a/src/modifier/modifier-type.ts b/src/modifier/modifier-type.ts index 278de2f18e8..292edbf5d84 100644 --- a/src/modifier/modifier-type.ts +++ b/src/modifier/modifier-type.ts @@ -1,6 +1,6 @@ import * as Modifiers from './modifier'; import { AttackMove, allMoves } from '../data/move'; -import { Moves } from "../data/enums/moves"; +import { Moves } from '../data/enums/moves'; import { PokeballType, getPokeballCatchMultiplier, getPokeballName } from '../data/pokeball'; import Pokemon, { EnemyPokemon, PlayerPokemon, PokemonMove } from '../field/pokemon'; import { EvolutionItem, pokemonEvolutions } from '../data/pokemon-evolutions'; @@ -74,23 +74,23 @@ export class ModifierType { return null; let poolTypes: ModifierPoolType[]; switch (poolType) { - case ModifierPoolType.PLAYER: - poolTypes = [ poolType, ModifierPoolType.TRAINER, ModifierPoolType.WILD ]; - break; - case ModifierPoolType.WILD: - poolTypes = [ poolType, ModifierPoolType.PLAYER, ModifierPoolType.TRAINER ]; - break; - case ModifierPoolType.TRAINER: - poolTypes = [ poolType, ModifierPoolType.PLAYER, ModifierPoolType.WILD ]; - break; - default: - poolTypes = [ poolType ]; - break; + case ModifierPoolType.PLAYER: + poolTypes = [ poolType, ModifierPoolType.TRAINER, ModifierPoolType.WILD ]; + break; + case ModifierPoolType.WILD: + poolTypes = [ poolType, ModifierPoolType.PLAYER, ModifierPoolType.TRAINER ]; + break; + case ModifierPoolType.TRAINER: + poolTypes = [ poolType, ModifierPoolType.PLAYER, ModifierPoolType.WILD ]; + break; + default: + poolTypes = [ poolType ]; + break; } // Try multiple pool types in case of stolen items - for (let type of poolTypes) { + for (const type of poolTypes) { const pool = getModifierPoolForType(type); - for (let tier of Utils.getEnumValues(ModifierTier)) { + for (const tier of Utils.getEnumValues(ModifierTier)) { if (!pool.hasOwnProperty(tier)) continue; if (pool[tier].find(m => (m as WeightedModifierType).modifierType.id === (this.generatorId || this.id))) @@ -146,14 +146,14 @@ class AddPokeballModifierType extends ModifierType { } get name(): string { - return i18next.t(`modifierType:ModifierType.AddPokeballModifierType.name`, { + return i18next.t('modifierType:ModifierType.AddPokeballModifierType.name', { 'modifierCount': this.count, 'pokeballName': getPokeballName(this.pokeballType), }); } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.AddPokeballModifierType.description`, { + return i18next.t('modifierType:ModifierType.AddPokeballModifierType.description', { 'modifierCount': this.count, 'pokeballName': getPokeballName(this.pokeballType), 'catchRate': getPokeballCatchMultiplier(this.pokeballType) > -1 ? `${getPokeballCatchMultiplier(this.pokeballType)}x` : '100%', @@ -173,14 +173,14 @@ class AddVoucherModifierType extends ModifierType { } get name(): string { - return i18next.t(`modifierType:ModifierType.AddVoucherModifierType.name`, { + return i18next.t('modifierType:ModifierType.AddVoucherModifierType.name', { 'modifierCount': this.count, 'voucherTypeName': getVoucherTypeName(this.voucherType), }); } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.AddVoucherModifierType.description`, { + return i18next.t('modifierType:ModifierType.AddVoucherModifierType.description', { 'modifierCount': this.count, 'voucherTypeName': getVoucherTypeName(this.voucherType), }); @@ -204,9 +204,9 @@ export class PokemonHeldItemModifierType extends PokemonModifierType { const matchingModifier = pokemon.scene.findModifier(m => m instanceof Modifiers.PokemonHeldItemModifier && m.pokemonId === pokemon.id && m.matchType(dummyModifier)) as Modifiers.PokemonHeldItemModifier; const maxStackCount = dummyModifier.getMaxStackCount(pokemon.scene); if (!maxStackCount) - return i18next.t(`modifierType:ModifierType.PokemonHeldItemModifierType.extra.inoperable`, { 'pokemonName': pokemon.name }); + return i18next.t('modifierType:ModifierType.PokemonHeldItemModifierType.extra.inoperable', { 'pokemonName': pokemon.name }); if (matchingModifier && matchingModifier.stackCount === maxStackCount) - return i18next.t(`modifierType:ModifierType.PokemonHeldItemModifierType.extra.tooMany`, { 'pokemonName': pokemon.name }); + return i18next.t('modifierType:ModifierType.PokemonHeldItemModifierType.extra.tooMany', { 'pokemonName': pokemon.name }); return null; }, group, soundName); } @@ -223,11 +223,11 @@ export class PokemonHpRestoreModifierType extends PokemonModifierType { constructor(localeKey: string, iconImage: string, restorePoints: integer, restorePercent: integer, healStatus: boolean = false, newModifierFunc?: NewModifierFunc, selectFilter?: PokemonSelectFilter, group?: string) { super(localeKey, iconImage, newModifierFunc || ((_type, args) => new Modifiers.PokemonHpRestoreModifier(this, (args[0] as PlayerPokemon).id, this.restorePoints, this.restorePercent, this.healStatus, false)), - selectFilter || ((pokemon: PlayerPokemon) => { - if (!pokemon.hp || (pokemon.hp >= pokemon.getMaxHp() && (!this.healStatus || !pokemon.status))) - return PartyUiHandler.NoEffectMessage; - return null; - }), group || 'potion'); + selectFilter || ((pokemon: PlayerPokemon) => { + if (!pokemon.hp || (pokemon.hp >= pokemon.getMaxHp() && (!this.healStatus || !pokemon.status))) + return PartyUiHandler.NoEffectMessage; + return null; + }), group || 'potion'); this.restorePoints = restorePoints; this.restorePercent = restorePercent; @@ -236,13 +236,13 @@ export class PokemonHpRestoreModifierType extends PokemonModifierType { getDescription(scene: BattleScene): string { return this.restorePoints - ? i18next.t(`modifierType:ModifierType.PokemonHpRestoreModifierType.description`, { + ? i18next.t('modifierType:ModifierType.PokemonHpRestoreModifierType.description', { restorePoints: this.restorePoints, restorePercent: this.restorePercent, }) : this.healStatus - ? i18next.t(`modifierType:ModifierType.PokemonHpRestoreModifierType.extra.fullyWithStatus`) - : i18next.t(`modifierType:ModifierType.PokemonHpRestoreModifierType.extra.fully`); + ? i18next.t('modifierType:ModifierType.PokemonHpRestoreModifierType.extra.fullyWithStatus') + : i18next.t('modifierType:ModifierType.PokemonHpRestoreModifierType.extra.fully'); } } @@ -263,7 +263,7 @@ export class PokemonReviveModifierType extends PokemonHpRestoreModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.PokemonReviveModifierType.description`, { restorePercent: this.restorePercent }); + return i18next.t('modifierType:ModifierType.PokemonReviveModifierType.description', { restorePercent: this.restorePercent }); } } @@ -278,7 +278,7 @@ export class PokemonStatusHealModifierType extends PokemonModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.PokemonStatusHealModifierType.description`); + return i18next.t('modifierType:ModifierType.PokemonStatusHealModifierType.description'); } } @@ -298,21 +298,21 @@ export class PokemonPpRestoreModifierType extends PokemonMoveModifierType { constructor(localeKey: string, iconImage: string, restorePoints: integer) { super(localeKey, iconImage, (_type, args) => new Modifiers.PokemonPpRestoreModifier(this, (args[0] as PlayerPokemon).id, (args[1] as integer), this.restorePoints), (_pokemon: PlayerPokemon) => { - return null; - }, (pokemonMove: PokemonMove) => { - if (!pokemonMove.ppUsed) - return PartyUiHandler.NoEffectMessage; - return null; - }, 'ether'); + return null; + }, (pokemonMove: PokemonMove) => { + if (!pokemonMove.ppUsed) + return PartyUiHandler.NoEffectMessage; + return null; + }, 'ether'); this.restorePoints = restorePoints; } getDescription(scene: BattleScene): string { return this.restorePoints > -1 - ? i18next.t(`modifierType:ModifierType.PokemonPpRestoreModifierType.description`, { restorePoints: this.restorePoints }) - : i18next.t(`modifierType:ModifierType.PokemonPpRestoreModifierType.extra.fully`) - ; + ? i18next.t('modifierType:ModifierType.PokemonPpRestoreModifierType.description', { restorePoints: this.restorePoints }) + : i18next.t('modifierType:ModifierType.PokemonPpRestoreModifierType.extra.fully') + ; } } @@ -332,9 +332,9 @@ export class PokemonAllMovePpRestoreModifierType extends PokemonModifierType { getDescription(scene: BattleScene): string { return this.restorePoints > -1 - ? i18next.t(`modifierType:ModifierType.PokemonAllMovePpRestoreModifierType.description`, { restorePoints: this.restorePoints }) - : i18next.t(`modifierType:ModifierType.PokemonAllMovePpRestoreModifierType.extra.fully`) - ; + ? i18next.t('modifierType:ModifierType.PokemonAllMovePpRestoreModifierType.description', { restorePoints: this.restorePoints }) + : i18next.t('modifierType:ModifierType.PokemonAllMovePpRestoreModifierType.extra.fully') + ; } } @@ -344,18 +344,18 @@ export class PokemonPpUpModifierType extends PokemonMoveModifierType { constructor(localeKey: string, iconImage: string, upPoints: integer) { super(localeKey, iconImage, (_type, args) => new Modifiers.PokemonPpUpModifier(this, (args[0] as PlayerPokemon).id, (args[1] as integer), this.upPoints), (_pokemon: PlayerPokemon) => { - return null; - }, (pokemonMove: PokemonMove) => { - if (pokemonMove.getMove().pp < 5 || pokemonMove.ppUp >= 3) - return PartyUiHandler.NoEffectMessage; - return null; - }, 'ppUp'); + return null; + }, (pokemonMove: PokemonMove) => { + if (pokemonMove.getMove().pp < 5 || pokemonMove.ppUp >= 3) + return PartyUiHandler.NoEffectMessage; + return null; + }, 'ppUp'); this.upPoints = upPoints; } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.PokemonPpUpModifierType.description`, { upPoints: this.upPoints }); + return i18next.t('modifierType:ModifierType.PokemonPpUpModifierType.description', { upPoints: this.upPoints }); } } @@ -374,11 +374,11 @@ export class PokemonNatureChangeModifierType extends PokemonModifierType { } get name(): string { - return i18next.t(`modifierType:ModifierType.PokemonNatureChangeModifierType.name`, { natureName: getNatureName(this.nature) }); + return i18next.t('modifierType:ModifierType.PokemonNatureChangeModifierType.name', { natureName: getNatureName(this.nature) }); } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.PokemonNatureChangeModifierType.description`, { natureName: getNatureName(this.nature, true, true, true) }); + return i18next.t('modifierType:ModifierType.PokemonNatureChangeModifierType.description', { natureName: getNatureName(this.nature, true, true, true) }); } } @@ -403,7 +403,7 @@ export class DoubleBattleChanceBoosterModifierType extends ModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.DoubleBattleChanceBoosterModifierType.description`, { battleCount: this.battleCount }); + return i18next.t('modifierType:ModifierType.DoubleBattleChanceBoosterModifierType.description', { battleCount: this.battleCount }); } } @@ -422,7 +422,7 @@ export class TempBattleStatBoosterModifierType extends ModifierType implements G } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.TempBattleStatBoosterModifierType.description`, { tempBattleStatName: getTempBattleStatName(this.tempBattleStat) }); + return i18next.t('modifierType:ModifierType.TempBattleStatBoosterModifierType.description', { tempBattleStatName: getTempBattleStatName(this.tempBattleStat) }); } getPregenArgs(): any[] { @@ -454,42 +454,42 @@ export class BerryModifierType extends PokemonHeldItemModifierType implements Ge function getAttackTypeBoosterItemName(type: Type) { switch (type) { - case Type.NORMAL: - return 'Silk Scarf'; - case Type.FIGHTING: - return 'Black Belt'; - case Type.FLYING: - return 'Sharp Beak'; - case Type.POISON: - return 'Poison Barb'; - case Type.GROUND: - return 'Soft Sand'; - case Type.ROCK: - return 'Hard Stone'; - case Type.BUG: - return 'Silver Powder'; - case Type.GHOST: - return 'Spell Tag'; - case Type.STEEL: - return 'Metal Coat'; - case Type.FIRE: - return 'Charcoal'; - case Type.WATER: - return 'Mystic Water'; - case Type.GRASS: - return 'Miracle Seed'; - case Type.ELECTRIC: - return 'Magnet'; - case Type.PSYCHIC: - return 'Twisted Spoon'; - case Type.ICE: - return 'Never-Melt Ice' - case Type.DRAGON: - return 'Dragon Fang'; - case Type.DARK: - return 'Black Glasses'; - case Type.FAIRY: - return 'Fairy Feather'; + case Type.NORMAL: + return 'Silk Scarf'; + case Type.FIGHTING: + return 'Black Belt'; + case Type.FLYING: + return 'Sharp Beak'; + case Type.POISON: + return 'Poison Barb'; + case Type.GROUND: + return 'Soft Sand'; + case Type.ROCK: + return 'Hard Stone'; + case Type.BUG: + return 'Silver Powder'; + case Type.GHOST: + return 'Spell Tag'; + case Type.STEEL: + return 'Metal Coat'; + case Type.FIRE: + return 'Charcoal'; + case Type.WATER: + return 'Mystic Water'; + case Type.GRASS: + return 'Miracle Seed'; + case Type.ELECTRIC: + return 'Magnet'; + case Type.PSYCHIC: + return 'Twisted Spoon'; + case Type.ICE: + return 'Never-Melt Ice'; + case Type.DRAGON: + return 'Dragon Fang'; + case Type.DARK: + return 'Black Glasses'; + case Type.FAIRY: + return 'Fairy Feather'; } } @@ -511,7 +511,7 @@ export class AttackTypeBoosterModifierType extends PokemonHeldItemModifierType i getDescription(scene: BattleScene): 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.${Type[this.moveType]}`) }); } getPregenArgs(): any[] { @@ -525,7 +525,7 @@ export class PokemonLevelIncrementModifierType extends PokemonModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.PokemonLevelIncrementModifierType.description`); + return i18next.t('modifierType:ModifierType.PokemonLevelIncrementModifierType.description'); } } @@ -535,24 +535,24 @@ export class AllPokemonLevelIncrementModifierType extends ModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.AllPokemonLevelIncrementModifierType.description`); + return i18next.t('modifierType:ModifierType.AllPokemonLevelIncrementModifierType.description'); } } function getBaseStatBoosterItemName(stat: Stat) { switch (stat) { - case Stat.HP: - return 'HP Up'; - case Stat.ATK: - return 'Protein'; - case Stat.DEF: - return 'Iron'; - case Stat.SPATK: - return 'Calcium'; - case Stat.SPDEF: - return 'Zinc'; - case Stat.SPD: - return 'Carbos'; + case Stat.HP: + return 'HP Up'; + case Stat.ATK: + return 'Protein'; + case Stat.DEF: + return 'Iron'; + case Stat.SPATK: + return 'Calcium'; + case Stat.SPDEF: + return 'Zinc'; + case Stat.SPD: + return 'Carbos'; } } @@ -572,7 +572,7 @@ export class PokemonBaseStatBoosterModifierType extends PokemonHeldItemModifierT } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.PokemonBaseStatBoosterModifierType.description`, { statName: getStatName(this.stat) }); + return i18next.t('modifierType:ModifierType.PokemonBaseStatBoosterModifierType.description', { statName: getStatName(this.stat) }); } getPregenArgs(): any[] { @@ -590,13 +590,13 @@ class AllPokemonFullHpRestoreModifierType extends ModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`${this.descriptionKey || `modifierType:ModifierType.AllPokemonFullHpRestoreModifierType`}.description` as any); + return i18next.t(`${this.descriptionKey || 'modifierType:ModifierType.AllPokemonFullHpRestoreModifierType'}.description` as any); } } class AllPokemonFullReviveModifierType extends AllPokemonFullHpRestoreModifierType { constructor(localeKey: string, iconImage: string) { - super(localeKey, iconImage, `modifierType:ModifierType.AllPokemonFullReviveModifierType`, (_type, _args) => new Modifiers.PokemonHpRestoreModifier(this, -1, 0, 100, false, true)); + super(localeKey, iconImage, 'modifierType:ModifierType.AllPokemonFullReviveModifierType', (_type, _args) => new Modifiers.PokemonHpRestoreModifier(this, -1, 0, 100, false, true)); } } @@ -612,7 +612,7 @@ export class MoneyRewardModifierType extends ModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.MoneyRewardModifierType.description`, { + return i18next.t('modifierType:ModifierType.MoneyRewardModifierType.description', { moneyMultiplier: i18next.t(this.moneyMultiplierDescriptorKey as any), moneyAmount: scene.getWaveMoneyAmount(this.moneyMultiplier).toLocaleString('en-US'), }); @@ -629,7 +629,7 @@ export class ExpBoosterModifierType extends ModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.ExpBoosterModifierType.description`, { boostPercent: this.boostPercent }); + return i18next.t('modifierType:ModifierType.ExpBoosterModifierType.description', { boostPercent: this.boostPercent }); } } @@ -643,7 +643,7 @@ export class PokemonExpBoosterModifierType extends PokemonHeldItemModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.PokemonExpBoosterModifierType.description`, { boostPercent: this.boostPercent }); + return i18next.t('modifierType:ModifierType.PokemonExpBoosterModifierType.description', { boostPercent: this.boostPercent }); } } @@ -653,7 +653,7 @@ export class PokemonFriendshipBoosterModifierType extends PokemonHeldItemModifie } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.PokemonFriendshipBoosterModifierType.description`); + return i18next.t('modifierType:ModifierType.PokemonFriendshipBoosterModifierType.description'); } } @@ -667,7 +667,7 @@ export class PokemonMoveAccuracyBoosterModifierType extends PokemonHeldItemModif } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.PokemonMoveAccuracyBoosterModifierType.description`, { accuracyAmount: this.amount }); + return i18next.t('modifierType:ModifierType.PokemonMoveAccuracyBoosterModifierType.description', { accuracyAmount: this.amount }); } } @@ -677,7 +677,7 @@ export class PokemonMultiHitModifierType extends PokemonHeldItemModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.PokemonMultiHitModifierType.description`); + return i18next.t('modifierType:ModifierType.PokemonMultiHitModifierType.description'); } } @@ -696,14 +696,14 @@ export class TmModifierType extends PokemonModifierType { } get name(): string { - return i18next.t(`modifierType:ModifierType.TmModifierType.name`, { + return i18next.t('modifierType:ModifierType.TmModifierType.name', { moveId: Utils.padInt(Object.keys(tmSpecies).indexOf(this.moveId.toString()) + 1, 3), moveName: allMoves[this.moveId].name, }); } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.TmModifierType.description`, { moveName: allMoves[this.moveId].name }); + return i18next.t('modifierType:ModifierType.TmModifierType.description', { moveName: allMoves[this.moveId].name }); } } @@ -712,16 +712,16 @@ export class EvolutionItemModifierType extends PokemonModifierType implements Ge constructor(evolutionItem: EvolutionItem) { super('', EvolutionItem[evolutionItem].toLowerCase(), (_type, args) => new Modifiers.EvolutionItemModifier(this, (args[0] as PlayerPokemon).id), - (pokemon: PlayerPokemon) => { - if (pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId) && pokemonEvolutions[pokemon.species.speciesId].filter(e => e.item === this.evolutionItem + (pokemon: PlayerPokemon) => { + if (pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId) && pokemonEvolutions[pokemon.species.speciesId].filter(e => e.item === this.evolutionItem && (!e.condition || e.condition.predicate(pokemon))).length && (pokemon.getFormKey() !== SpeciesFormKey.GIGANTAMAX)) - return null; - else if (pokemon.isFusion() && pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId) && pokemonEvolutions[pokemon.fusionSpecies.speciesId].filter(e => e.item === this.evolutionItem + return null; + else if (pokemon.isFusion() && pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId) && pokemonEvolutions[pokemon.fusionSpecies.speciesId].filter(e => e.item === this.evolutionItem && (!e.condition || e.condition.predicate(pokemon))).length && (pokemon.getFusionFormKey() !== SpeciesFormKey.GIGANTAMAX)) - return null; + return null; - return PartyUiHandler.NoEffectMessage; - }); + return PartyUiHandler.NoEffectMessage; + }); this.evolutionItem = evolutionItem; } @@ -731,7 +731,7 @@ export class EvolutionItemModifierType extends PokemonModifierType implements Ge } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.EvolutionItemModifierType.description`); + return i18next.t('modifierType:ModifierType.EvolutionItemModifierType.description'); } getPregenArgs(): any[] { @@ -744,13 +744,13 @@ export class FormChangeItemModifierType extends PokemonModifierType implements G constructor(formChangeItem: FormChangeItem) { super('', FormChangeItem[formChangeItem].toLowerCase(), (_type, args) => new Modifiers.PokemonFormChangeItemModifier(this, (args[0] as PlayerPokemon).id, formChangeItem, true), - (pokemon: PlayerPokemon) => { - if (pokemonFormChanges.hasOwnProperty(pokemon.species.speciesId) && !!pokemonFormChanges[pokemon.species.speciesId].find(fc => fc.trigger.hasTriggerType(SpeciesFormChangeItemTrigger) + (pokemon: PlayerPokemon) => { + if (pokemonFormChanges.hasOwnProperty(pokemon.species.speciesId) && !!pokemonFormChanges[pokemon.species.speciesId].find(fc => fc.trigger.hasTriggerType(SpeciesFormChangeItemTrigger) && (fc.trigger as SpeciesFormChangeItemTrigger).item === this.formChangeItem)) - return null; + return null; - return PartyUiHandler.NoEffectMessage; - }); + return PartyUiHandler.NoEffectMessage; + }); this.formChangeItem = formChangeItem; } @@ -760,7 +760,7 @@ export class FormChangeItemModifierType extends PokemonModifierType implements G } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.FormChangeItemModifierType.description`); + return i18next.t('modifierType:ModifierType.FormChangeItemModifierType.description'); } getPregenArgs(): any[] { @@ -779,7 +779,7 @@ export class FusePokemonModifierType extends PokemonModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.FusePokemonModifierType.description`); + return i18next.t('modifierType:ModifierType.FusePokemonModifierType.description'); } } @@ -795,7 +795,7 @@ class AttackTypeBoosterModifierTypeGenerator extends ModifierTypeGenerator { const attackMoveTypeWeights = new Map(); let totalWeight = 0; - for (let t of attackMoveTypes) { + for (const t of attackMoveTypes) { if (attackMoveTypeWeights.has(t)) { if (attackMoveTypeWeights.get(t) < 3) attackMoveTypeWeights.set(t, attackMoveTypeWeights.get(t) + 1); @@ -814,7 +814,7 @@ class AttackTypeBoosterModifierTypeGenerator extends ModifierTypeGenerator { const randInt = Utils.randSeedInt(totalWeight); let weight = 0; - for (let t of attackMoveTypeWeights.keys()) { + for (const t of attackMoveTypeWeights.keys()) { const typeWeight = attackMoveTypeWeights.get(t); if (randInt <= weight + typeWeight) { type = t; @@ -898,11 +898,11 @@ export class TerastallizeModifierType extends PokemonHeldItemModifierType implem } 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.${Type[this.teraType]}`) }); } getDescription(scene: BattleScene): 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.${Type[this.teraType]}`) }); } getPregenArgs(): any[] { @@ -920,7 +920,7 @@ export class ContactHeldItemTransferChanceModifierType extends PokemonHeldItemMo } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.ContactHeldItemTransferChanceModifierType.description`, { chancePercent: this.chancePercent }); + return i18next.t('modifierType:ModifierType.ContactHeldItemTransferChanceModifierType.description', { chancePercent: this.chancePercent }); } } @@ -930,7 +930,7 @@ export class TurnHeldItemTransferModifierType extends PokemonHeldItemModifierTyp } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.TurnHeldItemTransferModifierType.description`); + return i18next.t('modifierType:ModifierType.TurnHeldItemTransferModifierType.description'); } } @@ -939,14 +939,14 @@ export class EnemyAttackStatusEffectChanceModifierType extends ModifierType { private effect: StatusEffect; constructor(localeKey: string, iconImage: string, chancePercent: integer, effect: StatusEffect) { - super(localeKey, iconImage, (type, args) => new Modifiers.EnemyAttackStatusEffectChanceModifier(type, effect, chancePercent), 'enemy_status_chance') + super(localeKey, iconImage, (type, args) => new Modifiers.EnemyAttackStatusEffectChanceModifier(type, effect, chancePercent), 'enemy_status_chance'); this.chancePercent = chancePercent; this.effect = effect; } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.EnemyAttackStatusEffectChanceModifierType.description`, { + return i18next.t('modifierType:ModifierType.EnemyAttackStatusEffectChanceModifierType.description', { chancePercent: this.chancePercent, statusEffect: getStatusEffectDescriptor(this.effect), }); @@ -963,7 +963,7 @@ export class EnemyEndureChanceModifierType extends ModifierType { } getDescription(scene: BattleScene): string { - return i18next.t(`modifierType:ModifierType.EnemyEndureChanceModifierType.description`, { chancePercent: this.chancePercent }); + return i18next.t('modifierType:ModifierType.EnemyEndureChanceModifierType.description', { chancePercent: this.chancePercent }); } } @@ -994,50 +994,50 @@ export const modifierTypes = { ROGUE_BALL: () => new AddPokeballModifierType('rb', PokeballType.ROGUE_BALL, 5), MASTER_BALL: () => new AddPokeballModifierType('mb', PokeballType.MASTER_BALL, 1), - RARE_CANDY: () => new PokemonLevelIncrementModifierType(`modifierType:ModifierType.RARE_CANDY`, 'rare_candy'), - RARER_CANDY: () => new AllPokemonLevelIncrementModifierType(`modifierType:ModifierType.RARER_CANDY`, 'rarer_candy'), + RARE_CANDY: () => new PokemonLevelIncrementModifierType('modifierType:ModifierType.RARE_CANDY', 'rare_candy'), + RARER_CANDY: () => new AllPokemonLevelIncrementModifierType('modifierType:ModifierType.RARER_CANDY', 'rarer_candy'), EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(false), RARE_EVOLUTION_ITEM: () => new EvolutionItemModifierTypeGenerator(true), FORM_CHANGE_ITEM: () => new FormChangeItemModifierTypeGenerator(), - MEGA_BRACELET: () => new ModifierType(`modifierType:ModifierType.MEGA_BRACELET`, 'mega_bracelet', (type, _args) => new Modifiers.MegaEvolutionAccessModifier(type)), - DYNAMAX_BAND: () => new ModifierType(`modifierType:ModifierType.DYNAMAX_BAND`, 'dynamax_band', (type, _args) => new Modifiers.GigantamaxAccessModifier(type)), - TERA_ORB: () => new ModifierType(`modifierType:ModifierType.TERA_ORB`, 'tera_orb', (type, _args) => new Modifiers.TerastallizeAccessModifier(type)), + MEGA_BRACELET: () => new ModifierType('modifierType:ModifierType.MEGA_BRACELET', 'mega_bracelet', (type, _args) => new Modifiers.MegaEvolutionAccessModifier(type)), + DYNAMAX_BAND: () => new ModifierType('modifierType:ModifierType.DYNAMAX_BAND', 'dynamax_band', (type, _args) => new Modifiers.GigantamaxAccessModifier(type)), + TERA_ORB: () => new ModifierType('modifierType:ModifierType.TERA_ORB', 'tera_orb', (type, _args) => new Modifiers.TerastallizeAccessModifier(type)), - MAP: () => new ModifierType(`modifierType:ModifierType.MAP`, 'map', (type, _args) => new Modifiers.MapModifier(type)), + MAP: () => new ModifierType('modifierType:ModifierType.MAP', 'map', (type, _args) => new Modifiers.MapModifier(type)), - POTION: () => new PokemonHpRestoreModifierType(`modifierType:ModifierType.POTION`, 'potion', 20, 10), - SUPER_POTION: () => new PokemonHpRestoreModifierType(`modifierType:ModifierType.SUPER_POTION`, 'super_potion', 50, 25), - HYPER_POTION: () => new PokemonHpRestoreModifierType(`modifierType:ModifierType.HYPER_POTION`, 'hyper_potion', 200, 50), - MAX_POTION: () => new PokemonHpRestoreModifierType(`modifierType:ModifierType.MAX_POTION`, 'max_potion', 0, 100), - FULL_RESTORE: () => new PokemonHpRestoreModifierType(`modifierType:ModifierType.FULL_RESTORE`, 'full_restore', 0, 100, true), + POTION: () => new PokemonHpRestoreModifierType('modifierType:ModifierType.POTION', 'potion', 20, 10), + SUPER_POTION: () => new PokemonHpRestoreModifierType('modifierType:ModifierType.SUPER_POTION', 'super_potion', 50, 25), + HYPER_POTION: () => new PokemonHpRestoreModifierType('modifierType:ModifierType.HYPER_POTION', 'hyper_potion', 200, 50), + MAX_POTION: () => new PokemonHpRestoreModifierType('modifierType:ModifierType.MAX_POTION', 'max_potion', 0, 100), + FULL_RESTORE: () => new PokemonHpRestoreModifierType('modifierType:ModifierType.FULL_RESTORE', 'full_restore', 0, 100, true), - REVIVE: () => new PokemonReviveModifierType(`modifierType:ModifierType.REVIVE`, 'revive', 50), - MAX_REVIVE: () => new PokemonReviveModifierType(`modifierType:ModifierType.MAX_REVIVE`, 'max_revive', 100), + REVIVE: () => new PokemonReviveModifierType('modifierType:ModifierType.REVIVE', 'revive', 50), + MAX_REVIVE: () => new PokemonReviveModifierType('modifierType:ModifierType.MAX_REVIVE', 'max_revive', 100), - FULL_HEAL: () => new PokemonStatusHealModifierType(`modifierType:ModifierType.FULL_HEAL`, 'full_heal'), + FULL_HEAL: () => new PokemonStatusHealModifierType('modifierType:ModifierType.FULL_HEAL', 'full_heal'), - SACRED_ASH: () => new AllPokemonFullReviveModifierType(`modifierType:ModifierType.SACRED_ASH`, 'sacred_ash'), + SACRED_ASH: () => new AllPokemonFullReviveModifierType('modifierType:ModifierType.SACRED_ASH', 'sacred_ash'), - REVIVER_SEED: () => new PokemonHeldItemModifierType(`modifierType:ModifierType.REVIVER_SEED`, 'reviver_seed', (type, args) => new Modifiers.PokemonInstantReviveModifier(type, (args[0] as Pokemon).id)), + REVIVER_SEED: () => new PokemonHeldItemModifierType('modifierType:ModifierType.REVIVER_SEED', 'reviver_seed', (type, args) => new Modifiers.PokemonInstantReviveModifier(type, (args[0] as Pokemon).id)), - ETHER: () => new PokemonPpRestoreModifierType(`modifierType:ModifierType.ETHER`, 'ether', 10), - MAX_ETHER: () => new PokemonPpRestoreModifierType(`modifierType:ModifierType.MAX_ETHER`, 'max_ether', -1), + ETHER: () => new PokemonPpRestoreModifierType('modifierType:ModifierType.ETHER', 'ether', 10), + MAX_ETHER: () => new PokemonPpRestoreModifierType('modifierType:ModifierType.MAX_ETHER', 'max_ether', -1), - ELIXIR: () => new PokemonAllMovePpRestoreModifierType(`modifierType:ModifierType.ELIXIR`, 'elixir', 10), - MAX_ELIXIR: () => new PokemonAllMovePpRestoreModifierType(`modifierType:ModifierType.MAX_ELIXIR`, 'max_elixir', -1), + ELIXIR: () => new PokemonAllMovePpRestoreModifierType('modifierType:ModifierType.ELIXIR', 'elixir', 10), + MAX_ELIXIR: () => new PokemonAllMovePpRestoreModifierType('modifierType:ModifierType.MAX_ELIXIR', 'max_elixir', -1), - PP_UP: () => new PokemonPpUpModifierType(`modifierType:ModifierType.PP_UP`, 'pp_up', 1), - PP_MAX: () => new PokemonPpUpModifierType(`modifierType:ModifierType.PP_MAX`, 'pp_max', 3), + PP_UP: () => new PokemonPpUpModifierType('modifierType:ModifierType.PP_UP', 'pp_up', 1), + PP_MAX: () => new PokemonPpUpModifierType('modifierType:ModifierType.PP_MAX', 'pp_max', 3), /*REPEL: () => new DoubleBattleChanceBoosterModifierType('Repel', 5), SUPER_REPEL: () => new DoubleBattleChanceBoosterModifierType('Super Repel', 10), MAX_REPEL: () => new DoubleBattleChanceBoosterModifierType('Max Repel', 25),*/ - LURE: () => new DoubleBattleChanceBoosterModifierType(`modifierType:ModifierType.LURE`, 'lure', 5), - SUPER_LURE: () => new DoubleBattleChanceBoosterModifierType(`modifierType:ModifierType.SUPER_LURE`, 'super_lure', 10), - MAX_LURE: () => new DoubleBattleChanceBoosterModifierType(`modifierType:ModifierType.MAX_LURE`, 'max_lure', 25), + LURE: () => new DoubleBattleChanceBoosterModifierType('modifierType:ModifierType.LURE', 'lure', 5), + SUPER_LURE: () => new DoubleBattleChanceBoosterModifierType('modifierType:ModifierType.SUPER_LURE', 'super_lure', 10), + MAX_LURE: () => new DoubleBattleChanceBoosterModifierType('modifierType:ModifierType.MAX_LURE', 'max_lure', 25), TEMP_STAT_BOOSTER: () => new ModifierTypeGenerator((party: Pokemon[], pregenArgs?: any[]) => { if (pregenArgs) @@ -1083,7 +1083,7 @@ export const modifierTypes = { return new BerryModifierType(pregenArgs[0] as BerryType); const berryTypes = Utils.getEnumValues(BerryType); let randBerryType: BerryType; - let rand = Utils.randSeedInt(12); + const rand = Utils.randSeedInt(12); if (rand < 2) randBerryType = BerryType.SITRUS; else if (rand < 4) @@ -1099,82 +1099,82 @@ export const modifierTypes = { TM_GREAT: () => new TmModifierTypeGenerator(ModifierTier.GREAT), TM_ULTRA: () => new TmModifierTypeGenerator(ModifierTier.ULTRA), - MEMORY_MUSHROOM: () => new RememberMoveModifierType(`modifierType:ModifierType.MEMORY_MUSHROOM`, 'big_mushroom'), + MEMORY_MUSHROOM: () => new RememberMoveModifierType('modifierType:ModifierType.MEMORY_MUSHROOM', 'big_mushroom'), - EXP_SHARE: () => new ModifierType(`modifierType:ModifierType.EXP_SHARE`, 'exp_share', (type, _args) => new Modifiers.ExpShareModifier(type)), - EXP_BALANCE: () => new ModifierType(`modifierType:ModifierType.EXP_BALANCE`, 'exp_balance', (type, _args) => new Modifiers.ExpBalanceModifier(type)), + EXP_SHARE: () => new ModifierType('modifierType:ModifierType.EXP_SHARE', 'exp_share', (type, _args) => new Modifiers.ExpShareModifier(type)), + EXP_BALANCE: () => new ModifierType('modifierType:ModifierType.EXP_BALANCE', 'exp_balance', (type, _args) => new Modifiers.ExpBalanceModifier(type)), - OVAL_CHARM: () => new ModifierType(`modifierType:ModifierType.OVAL_CHARM`, 'oval_charm', (type, _args) => new Modifiers.MultipleParticipantExpBonusModifier(type)), + OVAL_CHARM: () => new ModifierType('modifierType:ModifierType.OVAL_CHARM', 'oval_charm', (type, _args) => new Modifiers.MultipleParticipantExpBonusModifier(type)), - EXP_CHARM: () => new ExpBoosterModifierType(`modifierType:ModifierType.EXP_CHARM`, 'exp_charm', 25), - SUPER_EXP_CHARM: () => new ExpBoosterModifierType(`modifierType:ModifierType.SUPER_EXP_CHARM`, 'super_exp_charm', 60), - GOLDEN_EXP_CHARM: () => new ExpBoosterModifierType(`modifierType:ModifierType.GOLDEN_EXP_CHARM`, 'golden_exp_charm', 100), + EXP_CHARM: () => new ExpBoosterModifierType('modifierType:ModifierType.EXP_CHARM', 'exp_charm', 25), + SUPER_EXP_CHARM: () => new ExpBoosterModifierType('modifierType:ModifierType.SUPER_EXP_CHARM', 'super_exp_charm', 60), + GOLDEN_EXP_CHARM: () => new ExpBoosterModifierType('modifierType:ModifierType.GOLDEN_EXP_CHARM', 'golden_exp_charm', 100), - LUCKY_EGG: () => new PokemonExpBoosterModifierType(`modifierType:ModifierType.LUCKY_EGG`, 'lucky_egg', 40), - GOLDEN_EGG: () => new PokemonExpBoosterModifierType(`modifierType:ModifierType.GOLDEN_EGG`, 'golden_egg', 100), + LUCKY_EGG: () => new PokemonExpBoosterModifierType('modifierType:ModifierType.LUCKY_EGG', 'lucky_egg', 40), + GOLDEN_EGG: () => new PokemonExpBoosterModifierType('modifierType:ModifierType.GOLDEN_EGG', 'golden_egg', 100), - SOOTHE_BELL: () => new PokemonFriendshipBoosterModifierType(`modifierType:ModifierType.SOOTHE_BELL`, 'soothe_bell'), + SOOTHE_BELL: () => new PokemonFriendshipBoosterModifierType('modifierType:ModifierType.SOOTHE_BELL', 'soothe_bell'), - SOUL_DEW: () => new PokemonHeldItemModifierType(`modifierType:ModifierType.SOUL_DEW`, 'soul_dew', (type, args) => new Modifiers.PokemonNatureWeightModifier(type, (args[0] as Pokemon).id)), + SOUL_DEW: () => new PokemonHeldItemModifierType('modifierType:ModifierType.SOUL_DEW', 'soul_dew', (type, args) => new Modifiers.PokemonNatureWeightModifier(type, (args[0] as Pokemon).id)), - NUGGET: () => new MoneyRewardModifierType(`modifierType:ModifierType.NUGGET`, 'nugget', 1, `modifierType:ModifierType.MoneyRewardModifierType.extra.small`), - BIG_NUGGET: () => new MoneyRewardModifierType(`modifierType:ModifierType.BIG_NUGGET`, 'big_nugget', 2.5, `modifierType:ModifierType.MoneyRewardModifierType.extra.moderate`), - RELIC_GOLD: () => new MoneyRewardModifierType(`modifierType:ModifierType.RELIC_GOLD`, 'relic_gold', 10, `modifierType:ModifierType.MoneyRewardModifierType.extra.large`), + NUGGET: () => new MoneyRewardModifierType('modifierType:ModifierType.NUGGET', 'nugget', 1, 'modifierType:ModifierType.MoneyRewardModifierType.extra.small'), + BIG_NUGGET: () => new MoneyRewardModifierType('modifierType:ModifierType.BIG_NUGGET', 'big_nugget', 2.5, 'modifierType:ModifierType.MoneyRewardModifierType.extra.moderate'), + RELIC_GOLD: () => new MoneyRewardModifierType('modifierType:ModifierType.RELIC_GOLD', 'relic_gold', 10, 'modifierType:ModifierType.MoneyRewardModifierType.extra.large'), - AMULET_COIN: () => new ModifierType(`modifierType:ModifierType.AMULET_COIN`, 'amulet_coin', (type, _args) => new Modifiers.MoneyMultiplierModifier(type)), - GOLDEN_PUNCH: () => new PokemonHeldItemModifierType(`modifierType:ModifierType.GOLDEN_PUNCH`, 'golden_punch', (type, args) => new Modifiers.DamageMoneyRewardModifier(type, (args[0] as Pokemon).id)), - COIN_CASE: () => new ModifierType(`modifierType:ModifierType.COIN_CASE`, 'coin_case', (type, _args) => new Modifiers.MoneyInterestModifier(type)), + AMULET_COIN: () => new ModifierType('modifierType:ModifierType.AMULET_COIN', 'amulet_coin', (type, _args) => new Modifiers.MoneyMultiplierModifier(type)), + GOLDEN_PUNCH: () => new PokemonHeldItemModifierType('modifierType:ModifierType.GOLDEN_PUNCH', 'golden_punch', (type, args) => new Modifiers.DamageMoneyRewardModifier(type, (args[0] as Pokemon).id)), + COIN_CASE: () => new ModifierType('modifierType:ModifierType.COIN_CASE', 'coin_case', (type, _args) => new Modifiers.MoneyInterestModifier(type)), - LOCK_CAPSULE: () => new ModifierType(`modifierType:ModifierType.LOCK_CAPSULE`, 'lock_capsule', (type, _args) => new Modifiers.LockModifierTiersModifier(type)), + LOCK_CAPSULE: () => new ModifierType('modifierType:ModifierType.LOCK_CAPSULE', 'lock_capsule', (type, _args) => new Modifiers.LockModifierTiersModifier(type)), - GRIP_CLAW: () => new ContactHeldItemTransferChanceModifierType(`modifierType:ModifierType.GRIP_CLAW`, 'grip_claw', 10), - WIDE_LENS: () => new PokemonMoveAccuracyBoosterModifierType(`modifierType:ModifierType.WIDE_LENS`, 'wide_lens', 5), + GRIP_CLAW: () => new ContactHeldItemTransferChanceModifierType('modifierType:ModifierType.GRIP_CLAW', 'grip_claw', 10), + WIDE_LENS: () => new PokemonMoveAccuracyBoosterModifierType('modifierType:ModifierType.WIDE_LENS', 'wide_lens', 5), - MULTI_LENS: () => new PokemonMultiHitModifierType(`modifierType:ModifierType.MULTI_LENS`, 'zoom_lens'), + MULTI_LENS: () => new PokemonMultiHitModifierType('modifierType:ModifierType.MULTI_LENS', 'zoom_lens'), - HEALING_CHARM: () => new ModifierType(`modifierType:ModifierType.HEALING_CHARM`, 'healing_charm', (type, _args) => new Modifiers.HealingBoosterModifier(type, 1.1)), - CANDY_JAR: () => new ModifierType(`modifierType:ModifierType.CANDY_JAR`, 'candy_jar', (type, _args) => new Modifiers.LevelIncrementBoosterModifier(type)), + HEALING_CHARM: () => new ModifierType('modifierType:ModifierType.HEALING_CHARM', 'healing_charm', (type, _args) => new Modifiers.HealingBoosterModifier(type, 1.1)), + CANDY_JAR: () => new ModifierType('modifierType:ModifierType.CANDY_JAR', 'candy_jar', (type, _args) => new Modifiers.LevelIncrementBoosterModifier(type)), - BERRY_POUCH: () => new ModifierType(`modifierType:ModifierType.BERRY_POUCH`, 'berry_pouch', (type, _args) => new Modifiers.PreserveBerryModifier(type)), + BERRY_POUCH: () => new ModifierType('modifierType:ModifierType.BERRY_POUCH', 'berry_pouch', (type, _args) => new Modifiers.PreserveBerryModifier(type)), - FOCUS_BAND: () => new PokemonHeldItemModifierType(`modifierType:ModifierType.FOCUS_BAND`, 'focus_band', (type, args) => new Modifiers.SurviveDamageModifier(type, (args[0] as Pokemon).id)), + FOCUS_BAND: () => new PokemonHeldItemModifierType('modifierType:ModifierType.FOCUS_BAND', 'focus_band', (type, args) => new Modifiers.SurviveDamageModifier(type, (args[0] as Pokemon).id)), - QUICK_CLAW: () => new PokemonHeldItemModifierType(`modifierType:ModifierType.QUICK_CLAW`, 'quick_claw', (type, args) => new Modifiers.BypassSpeedChanceModifier(type, (args[0] as Pokemon).id)), + QUICK_CLAW: () => new PokemonHeldItemModifierType('modifierType:ModifierType.QUICK_CLAW', 'quick_claw', (type, args) => new Modifiers.BypassSpeedChanceModifier(type, (args[0] as Pokemon).id)), - KINGS_ROCK: () => new PokemonHeldItemModifierType(`modifierType:ModifierType.KINGS_ROCK`, 'kings_rock', (type, args) => new Modifiers.FlinchChanceModifier(type, (args[0] as Pokemon).id)), + KINGS_ROCK: () => new PokemonHeldItemModifierType('modifierType:ModifierType.KINGS_ROCK', 'kings_rock', (type, args) => new Modifiers.FlinchChanceModifier(type, (args[0] as Pokemon).id)), - LEFTOVERS: () => new PokemonHeldItemModifierType(`modifierType:ModifierType.LEFTOVERS`, 'leftovers', (type, args) => new Modifiers.TurnHealModifier(type, (args[0] as Pokemon).id)), - SHELL_BELL: () => new PokemonHeldItemModifierType(`modifierType:ModifierType.SHELL_BELL`, 'shell_bell', (type, args) => new Modifiers.HitHealModifier(type, (args[0] as Pokemon).id)), + LEFTOVERS: () => new PokemonHeldItemModifierType('modifierType:ModifierType.LEFTOVERS', 'leftovers', (type, args) => new Modifiers.TurnHealModifier(type, (args[0] as Pokemon).id)), + SHELL_BELL: () => new PokemonHeldItemModifierType('modifierType:ModifierType.SHELL_BELL', 'shell_bell', (type, args) => new Modifiers.HitHealModifier(type, (args[0] as Pokemon).id)), - BATON: () => new PokemonHeldItemModifierType(`modifierType:ModifierType.BATON`, 'stick', (type, args) => new Modifiers.SwitchEffectTransferModifier(type, (args[0] as Pokemon).id)), + BATON: () => new PokemonHeldItemModifierType('modifierType:ModifierType.BATON', 'stick', (type, args) => new Modifiers.SwitchEffectTransferModifier(type, (args[0] as Pokemon).id)), - SHINY_CHARM: () => new ModifierType(`modifierType:ModifierType.SHINY_CHARM`, 'shiny_charm', (type, _args) => new Modifiers.ShinyRateBoosterModifier(type)), - ABILITY_CHARM: () => new ModifierType(`modifierType:ModifierType.ABILITY_CHARM`, 'ability_charm', (type, _args) => new Modifiers.HiddenAbilityRateBoosterModifier(type)), + SHINY_CHARM: () => new ModifierType('modifierType:ModifierType.SHINY_CHARM', 'shiny_charm', (type, _args) => new Modifiers.ShinyRateBoosterModifier(type)), + ABILITY_CHARM: () => new ModifierType('modifierType:ModifierType.ABILITY_CHARM', 'ability_charm', (type, _args) => new Modifiers.HiddenAbilityRateBoosterModifier(type)), - IV_SCANNER: () => new ModifierType(`modifierType:ModifierType.IV_SCANNER`, 'scanner', (type, _args) => new Modifiers.IvScannerModifier(type)), + IV_SCANNER: () => new ModifierType('modifierType:ModifierType.IV_SCANNER', 'scanner', (type, _args) => new Modifiers.IvScannerModifier(type)), - DNA_SPLICERS: () => new FusePokemonModifierType(`modifierType:ModifierType.DNA_SPLICERS`, 'dna_splicers'), + DNA_SPLICERS: () => new FusePokemonModifierType('modifierType:ModifierType.DNA_SPLICERS', 'dna_splicers'), - MINI_BLACK_HOLE: () => new TurnHeldItemTransferModifierType(`modifierType:ModifierType.MINI_BLACK_HOLE`, 'mini_black_hole'), + MINI_BLACK_HOLE: () => new TurnHeldItemTransferModifierType('modifierType:ModifierType.MINI_BLACK_HOLE', 'mini_black_hole'), VOUCHER: () => new AddVoucherModifierType(VoucherType.REGULAR, 1), VOUCHER_PLUS: () => new AddVoucherModifierType(VoucherType.PLUS, 1), VOUCHER_PREMIUM: () => new AddVoucherModifierType(VoucherType.PREMIUM, 1), - GOLDEN_POKEBALL: () => new ModifierType(`modifierType:ModifierType.GOLDEN_POKEBALL`, 'pb_gold', (type, _args) => new Modifiers.ExtraModifierModifier(type), null, 'pb_bounce_1'), + GOLDEN_POKEBALL: () => new ModifierType('modifierType:ModifierType.GOLDEN_POKEBALL', 'pb_gold', (type, _args) => new Modifiers.ExtraModifierModifier(type), null, 'pb_bounce_1'), - ENEMY_DAMAGE_BOOSTER: () => new ModifierType(`modifierType:ModifierType.ENEMY_DAMAGE_BOOSTER`, 'wl_item_drop', (type, _args) => new Modifiers.EnemyDamageBoosterModifier(type, 5)), - ENEMY_DAMAGE_REDUCTION: () => new ModifierType(`modifierType:ModifierType.ENEMY_DAMAGE_REDUCTION`, 'wl_guard_spec', (type, _args) => new Modifiers.EnemyDamageReducerModifier(type, 2.5)), + ENEMY_DAMAGE_BOOSTER: () => new ModifierType('modifierType:ModifierType.ENEMY_DAMAGE_BOOSTER', 'wl_item_drop', (type, _args) => new Modifiers.EnemyDamageBoosterModifier(type, 5)), + ENEMY_DAMAGE_REDUCTION: () => new ModifierType('modifierType:ModifierType.ENEMY_DAMAGE_REDUCTION', 'wl_guard_spec', (type, _args) => new Modifiers.EnemyDamageReducerModifier(type, 2.5)), //ENEMY_SUPER_EFFECT_BOOSTER: () => new ModifierType('Type Advantage Token', 'Increases damage of super effective attacks by 30%', (type, _args) => new Modifiers.EnemySuperEffectiveDamageBoosterModifier(type, 30), 'wl_custom_super_effective'), - ENEMY_HEAL: () => new ModifierType(`modifierType:ModifierType.ENEMY_HEAL`, 'wl_potion', (type, _args) => new Modifiers.EnemyTurnHealModifier(type, 2)), - ENEMY_ATTACK_POISON_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType(`modifierType:ModifierType.ENEMY_ATTACK_POISON_CHANCE`, 'wl_antidote', 10, StatusEffect.POISON), - ENEMY_ATTACK_PARALYZE_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType(`modifierType:ModifierType.ENEMY_ATTACK_PARALYZE_CHANCE`, 'wl_paralyze_heal', 10, StatusEffect.PARALYSIS), - ENEMY_ATTACK_SLEEP_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType(`modifierType:ModifierType.ENEMY_ATTACK_SLEEP_CHANCE`, 'wl_awakening', 10, StatusEffect.SLEEP), - ENEMY_ATTACK_FREEZE_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType(`modifierType:ModifierType.ENEMY_ATTACK_FREEZE_CHANCE`, 'wl_ice_heal', 10, StatusEffect.FREEZE), - ENEMY_ATTACK_BURN_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType(`modifierType:ModifierType.ENEMY_ATTACK_BURN_CHANCE`, 'wl_burn_heal', 10, StatusEffect.BURN), - ENEMY_STATUS_EFFECT_HEAL_CHANCE: () => new ModifierType(`modifierType:ModifierType.ENEMY_STATUS_EFFECT_HEAL_CHANCE`, 'wl_full_heal', (type, _args) => new Modifiers.EnemyStatusEffectHealChanceModifier(type, 10)), - ENEMY_ENDURE_CHANCE: () => new EnemyEndureChanceModifierType(`modifierType:ModifierType.ENEMY_ENDURE_CHANCE`, 'wl_reset_urge', 2.5), - ENEMY_FUSED_CHANCE: () => new ModifierType(`modifierType:ModifierType.ENEMY_FUSED_CHANCE`, 'wl_custom_spliced', (type, _args) => new Modifiers.EnemyFusionChanceModifier(type, 1)), + ENEMY_HEAL: () => new ModifierType('modifierType:ModifierType.ENEMY_HEAL', 'wl_potion', (type, _args) => new Modifiers.EnemyTurnHealModifier(type, 2)), + ENEMY_ATTACK_POISON_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType('modifierType:ModifierType.ENEMY_ATTACK_POISON_CHANCE', 'wl_antidote', 10, StatusEffect.POISON), + ENEMY_ATTACK_PARALYZE_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType('modifierType:ModifierType.ENEMY_ATTACK_PARALYZE_CHANCE', 'wl_paralyze_heal', 10, StatusEffect.PARALYSIS), + ENEMY_ATTACK_SLEEP_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType('modifierType:ModifierType.ENEMY_ATTACK_SLEEP_CHANCE', 'wl_awakening', 10, StatusEffect.SLEEP), + ENEMY_ATTACK_FREEZE_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType('modifierType:ModifierType.ENEMY_ATTACK_FREEZE_CHANCE', 'wl_ice_heal', 10, StatusEffect.FREEZE), + ENEMY_ATTACK_BURN_CHANCE: () => new EnemyAttackStatusEffectChanceModifierType('modifierType:ModifierType.ENEMY_ATTACK_BURN_CHANCE', 'wl_burn_heal', 10, StatusEffect.BURN), + ENEMY_STATUS_EFFECT_HEAL_CHANCE: () => new ModifierType('modifierType:ModifierType.ENEMY_STATUS_EFFECT_HEAL_CHANCE', 'wl_full_heal', (type, _args) => new Modifiers.EnemyStatusEffectHealChanceModifier(type, 10)), + ENEMY_ENDURE_CHANCE: () => new EnemyEndureChanceModifierType('modifierType:ModifierType.ENEMY_ENDURE_CHANCE', 'wl_reset_urge', 2.5), + ENEMY_FUSED_CHANCE: () => new ModifierType('modifierType:ModifierType.ENEMY_FUSED_CHANCE', 'wl_custom_spliced', (type, _args) => new Modifiers.EnemyFusionChanceModifier(type, 1)), }; interface ModifierPool { @@ -1442,21 +1442,21 @@ let enemyBuffIgnoredPoolIndexes = {}; export function getModifierPoolForType(poolType: ModifierPoolType): ModifierPool { let pool: ModifierPool; switch (poolType) { - case ModifierPoolType.PLAYER: - pool = modifierPool; - break; - case ModifierPoolType.WILD: - pool = wildModifierPool; - break; - case ModifierPoolType.TRAINER: - pool = trainerModifierPool; - break; - case ModifierPoolType.ENEMY_BUFF: - pool = enemyBuffModifierPool; - break; - case ModifierPoolType.DAILY_STARTER: - pool = dailyStarterModifierPool; - break; + case ModifierPoolType.PLAYER: + pool = modifierPool; + break; + case ModifierPoolType.WILD: + pool = wildModifierPool; + break; + case ModifierPoolType.TRAINER: + pool = trainerModifierPool; + break; + case ModifierPoolType.ENEMY_BUFF: + pool = enemyBuffModifierPool; + break; + case ModifierPoolType.DAILY_STARTER: + pool = dailyStarterModifierPool; + break; } return pool; } @@ -1504,34 +1504,34 @@ export function regenerateModifierPoolThresholds(party: Pokemon[], poolType: Mod thresholds.set(total, i++); return total; }, 0); - for (let id of tierModifierIds) + for (const id of tierModifierIds) modifierTableData[id].tierPercent = Math.floor((modifierTableData[id].weight / tierMaxWeight) * 10000) / 100; return [ t, Object.fromEntries(thresholds) ]; }))); - for (let id of Object.keys(modifierTableData)) { + for (const id of Object.keys(modifierTableData)) { modifierTableData[id].totalPercent = Math.floor(modifierTableData[id].tierPercent * tierWeights[modifierTableData[id].tier] * 100) / 100; modifierTableData[id].tier = ModifierTier[modifierTableData[id].tier]; } if (outputModifierData) console.table(modifierTableData); switch (poolType) { - case ModifierPoolType.PLAYER: - modifierPoolThresholds = thresholds; - ignoredPoolIndexes = ignoredIndexes; - break; - case ModifierPoolType.WILD: - case ModifierPoolType.TRAINER: - enemyModifierPoolThresholds = thresholds; - enemyIgnoredPoolIndexes = ignoredIndexes; - break; - case ModifierPoolType.ENEMY_BUFF: - enemyBuffModifierPoolThresholds = thresholds; - enemyBuffIgnoredPoolIndexes = ignoredIndexes; - break; - case ModifierPoolType.DAILY_STARTER: - dailyStarterModifierPoolThresholds = thresholds; - ignoredDailyStarterPoolIndexes = ignoredIndexes; - break; + case ModifierPoolType.PLAYER: + modifierPoolThresholds = thresholds; + ignoredPoolIndexes = ignoredIndexes; + break; + case ModifierPoolType.WILD: + case ModifierPoolType.TRAINER: + enemyModifierPoolThresholds = thresholds; + enemyIgnoredPoolIndexes = ignoredIndexes; + break; + case ModifierPoolType.ENEMY_BUFF: + enemyBuffModifierPoolThresholds = thresholds; + enemyBuffIgnoredPoolIndexes = ignoredIndexes; + break; + case ModifierPoolType.DAILY_STARTER: + dailyStarterModifierPoolThresholds = thresholds; + ignoredDailyStarterPoolIndexes = ignoredIndexes; + break; } } @@ -1612,7 +1612,7 @@ export function getEnemyModifierTypesForWave(waveIndex: integer, count: integer, export function getDailyRunStarterModifiers(party: PlayerPokemon[]): Modifiers.PokemonHeldItemModifier[] { const ret: Modifiers.PokemonHeldItemModifier[] = []; - for (let p of party) { + for (const p of party) { for (let m = 0; m < 3; m++) { const tierValue = Utils.randSeedInt(64); const tier = tierValue > 25 ? ModifierTier.COMMON : tierValue > 12 ? ModifierTier.GREAT : tierValue > 4 ? ModifierTier.ULTRA : tierValue ? ModifierTier.ROGUE : ModifierTier.MASTER; @@ -1629,21 +1629,21 @@ function getNewModifierTypeOption(party: Pokemon[], poolType: ModifierPoolType, const pool = getModifierPoolForType(poolType); let thresholds: object; switch (poolType) { - case ModifierPoolType.PLAYER: - thresholds = modifierPoolThresholds; - break; - case ModifierPoolType.WILD: - thresholds = enemyModifierPoolThresholds; - break; - case ModifierPoolType.TRAINER: - thresholds = enemyModifierPoolThresholds; - break; - case ModifierPoolType.ENEMY_BUFF: - thresholds = enemyBuffModifierPoolThresholds; - break; - case ModifierPoolType.DAILY_STARTER: - thresholds = dailyStarterModifierPoolThresholds; - break; + case ModifierPoolType.PLAYER: + thresholds = modifierPoolThresholds; + break; + case ModifierPoolType.WILD: + thresholds = enemyModifierPoolThresholds; + break; + case ModifierPoolType.TRAINER: + thresholds = enemyModifierPoolThresholds; + break; + case ModifierPoolType.ENEMY_BUFF: + thresholds = enemyBuffModifierPoolThresholds; + break; + case ModifierPoolType.DAILY_STARTER: + thresholds = dailyStarterModifierPoolThresholds; + break; } if (tier === undefined) { const tierValue = Utils.randSeedInt(1024); @@ -1691,8 +1691,8 @@ function getNewModifierTypeOption(party: Pokemon[], poolType: ModifierPoolType, const totalWeight = parseInt(tierThresholds[tierThresholds.length - 1]); const value = Utils.randSeedInt(totalWeight); let index: integer; - for (let t of tierThresholds) { - let threshold = parseInt(t); + for (const t of tierThresholds) { + const threshold = parseInt(t); if (value < threshold) { index = thresholds[tier][threshold]; break; @@ -1703,7 +1703,7 @@ function getNewModifierTypeOption(party: Pokemon[], poolType: ModifierPoolType, return null; if (player) - console.log(index, ignoredPoolIndexes[tier].filter(i => i <= index).length, ignoredPoolIndexes[tier]) + console.log(index, ignoredPoolIndexes[tier].filter(i => i <= index).length, ignoredPoolIndexes[tier]); let modifierType: ModifierType = (pool[tier][index]).modifierType; if (modifierType instanceof ModifierTypeGenerator) { modifierType = (modifierType as ModifierTypeGenerator).generateType(party); @@ -1750,4 +1750,4 @@ export function getLuckString(luckValue: integer): string { export function getLuckTextTint(luckValue: integer): integer { const modifierTier = luckValue ? luckValue > 2 ? luckValue > 5 ? luckValue > 9 ? luckValue > 11 ? ModifierTier.LUXURY : ModifierTier.MASTER : ModifierTier.ROGUE : ModifierTier.ULTRA : ModifierTier.GREAT : ModifierTier.COMMON; return getModifierTierTextTint(modifierTier); -} \ No newline at end of file +} diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 75f54296a20..ed01873c434 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -1,16 +1,16 @@ import * as ModifierTypes from './modifier-type'; -import { LearnMovePhase, LevelUpPhase, PokemonHealPhase } from "../phases"; -import BattleScene from "../battle-scene"; -import { getLevelTotalExp } from "../data/exp"; -import { PokeballType } from "../data/pokeball"; -import Pokemon, { PlayerPokemon } from "../field/pokemon"; -import { Stat } from "../data/pokemon-stat"; -import { addTextObject, TextStyle } from "../ui/text"; +import { LearnMovePhase, LevelUpPhase, PokemonHealPhase } from '../phases'; +import BattleScene from '../battle-scene'; +import { getLevelTotalExp } from '../data/exp'; +import { PokeballType } from '../data/pokeball'; +import Pokemon, { PlayerPokemon } from '../field/pokemon'; +import { Stat } from '../data/pokemon-stat'; +import { addTextObject, TextStyle } from '../ui/text'; import { Type } from '../data/type'; import { EvolutionPhase } from '../evolution-phase'; import { FusionSpeciesFormEvolution, pokemonEvolutions, pokemonPrevolutions } from '../data/pokemon-evolutions'; import { getPokemonMessage } from '../messages'; -import * as Utils from "../utils"; +import * as Utils from '../utils'; import { TempBattleStat } from '../data/temp-battle-stat'; import { BerryType, getBerryEffectFunc, getBerryPredicate } from '../data/berry'; import { StatusEffect, getStatusEffectHealText } from '../data/status-effect'; @@ -72,7 +72,7 @@ export class ModifierBar extends Phaser.GameObjects.Container { }); }); - for (let icon of this.getAll()) + for (const icon of this.getAll()) this.sendToBack(icon); this.modifierCache = modifiers; @@ -80,12 +80,12 @@ export class ModifierBar extends Phaser.GameObjects.Container { updateModifierOverflowVisibility(ignoreLimit: boolean) { const modifierIcons = this.getAll().reverse(); - for (let modifier of modifierIcons.map(m => m as Phaser.GameObjects.Container).slice(iconOverflowIndex)) + for (const modifier of modifierIcons.map(m => m as Phaser.GameObjects.Container).slice(iconOverflowIndex)) modifier.setVisible(ignoreLimit); } setModifierIconPosition(icon: Phaser.GameObjects.Container, modifierCount: integer) { - let rowIcons: integer = 12 + 6 * Math.max((Math.ceil(Math.min(modifierCount, 24) / 12) - 2), 0); + const rowIcons: integer = 12 + 6 * Math.max((Math.ceil(Math.min(modifierCount, 24) / 12) - 2), 0); const x = (this.getIndex(icon) % rowIcons) * 26 / (rowIcons / 12); const y = Math.floor(this.getIndex(icon) / rowIcons) * 20; @@ -123,7 +123,7 @@ export abstract class PersistentModifier extends Modifier { } add(modifiers: PersistentModifier[], virtual: boolean, scene: BattleScene): boolean { - for (let modifier of modifiers) { + for (const modifier of modifiers) { if (this.match(modifier)) return modifier.incrementStack(scene, this.stackCount, virtual); } @@ -158,7 +158,7 @@ export abstract class PersistentModifier extends Modifier { return this.stackCount + this.virtualStackCount; } - abstract getMaxStackCount(scene: BattleScene, forThreshold?: boolean): integer + abstract getMaxStackCount(scene: BattleScene, forThreshold?: boolean): integer; isIconVisible(scene: BattleScene): boolean { return true; @@ -190,7 +190,7 @@ export abstract class PersistentModifier extends Modifier { const text = scene.add.bitmapText(10, 15, 'item-count', this.stackCount.toString(), 11); text.letterSpacing = -0.5; if (this.getStackCount() >= this.getMaxStackCount(scene)) - text.setTint(0xf89890) + text.setTint(0xf89890); text.setOrigin(0, 0); return text; @@ -267,7 +267,7 @@ export abstract class LapsingPersistentModifier extends PersistentModifier { const battleCountText = addTextObject(scene, 27, 0, this.battlesLeft.toString(), TextStyle.PARTY, { fontSize: '66px', color: '#f89890' }); battleCountText.setShadow(0, 0, null); - battleCountText.setStroke('#984038', 16) + battleCountText.setStroke('#984038', 16); battleCountText.setOrigin(1, 0); container.add(battleCountText); @@ -495,7 +495,7 @@ export abstract class PokemonHeldItemModifier extends PersistentModifier { return this.getMaxHeldItemCount(pokemon); } - abstract getMaxHeldItemCount(pokemon: Pokemon): integer + abstract getMaxHeldItemCount(pokemon: Pokemon): integer; } export abstract class LapsingPokemonHeldItemModifier extends PokemonHeldItemModifier { @@ -517,7 +517,7 @@ export abstract class LapsingPokemonHeldItemModifier extends PokemonHeldItemModi if (this.getPokemon(scene).isPlayer()) { const battleCountText = addTextObject(scene, 27, 0, this.battlesLeft.toString(), TextStyle.PARTY, { fontSize: '66px', color: '#f89890' }); battleCountText.setShadow(0, 0, null); - battleCountText.setStroke('#984038', 16) + battleCountText.setStroke('#984038', 16); battleCountText.setOrigin(1, 0); container.add(battleCountText); } @@ -635,7 +635,7 @@ export class PokemonBaseStatModifier extends PokemonHeldItemModifier { } } - /** +/** * Applies Specific Type item boosts (e.g., Magnet) */ export class AttackTypeBoosterModifier extends PokemonHeldItemModifier { @@ -1097,7 +1097,7 @@ export class PokemonAllMovePpRestoreModifier extends ConsumablePokemonModifier { apply(args: any[]): boolean { const pokemon = args[0] as Pokemon; - for (let move of pokemon.getMoveset()) + for (const move of pokemon.getMoveset()) move.ppUsed = this.restorePoints > -1 ? Math.max(move.ppUsed - this.restorePoints, 0) : 0; return true; @@ -1538,15 +1538,15 @@ export class PokemonMultiHitModifier extends PokemonHeldItemModifier { const power = args[2] as Utils.NumberHolder; switch (this.getStackCount()) { - case 1: - power.value *= 0.4; - break; - case 2: - power.value *= 0.25; - break; - case 3: - power.value *= 0.175; - break; + case 1: + power.value *= 0.4; + break; + case 2: + power.value *= 0.25; + break; + case 3: + power.value *= 0.175; + break; } return true; @@ -1583,7 +1583,7 @@ export class PokemonFormChangeItemModifier extends PokemonHeldItemModifier { const pokemon = args[0] as Pokemon; const active = args[1] as boolean; - let switchActive = this.active && !active; + const switchActive = this.active && !active; if (switchActive) this.active = false; @@ -1824,7 +1824,7 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier { let highestItemTier = itemModifiers.map(m => m.type.getOrInferTier(poolType)).reduce((highestTier, tier) => Math.max(tier, highestTier), 0); let tierItemModifiers = itemModifiers.filter(m => m.type.getOrInferTier(poolType) === highestItemTier); - let heldItemTransferPromises: Promise[] = []; + const heldItemTransferPromises: Promise[] = []; for (let i = 0; i < transferredItemCount; i++) { if (!tierItemModifiers.length) { @@ -1844,16 +1844,16 @@ export abstract class HeldItemTransferModifier extends PokemonHeldItemModifier { } Promise.all(heldItemTransferPromises).then(() => { - for (let mt of transferredModifierTypes) + for (const mt of transferredModifierTypes) pokemon.scene.queueMessage(this.getTransferMessage(pokemon, targetPokemon, mt)); }); return !!transferredModifierTypes.length; } - abstract getTransferredItemCount(): integer + abstract getTransferredItemCount(): integer; - abstract getTransferMessage(pokemon: Pokemon, targetPokemon: Pokemon, item: ModifierTypes.ModifierType): string + abstract getTransferMessage(pokemon: Pokemon, targetPokemon: Pokemon, item: ModifierTypes.ModifierType): string; } export class TurnHeldItemTransferModifier extends HeldItemTransferModifier { @@ -2070,7 +2070,7 @@ export class EnemyTurnHealModifier extends EnemyPersistentModifier { if (pokemon.getHpRatio() < 1) { const scene = pokemon.scene; scene.unshiftPhase(new PokemonHealPhase(scene, pokemon.getBattlerIndex(), - Math.max(Math.floor(pokemon.getMaxHp() / (100 / this.healPercent)) * this.stackCount, 1), getPokemonMessage(pokemon, `\nrestored some HP!`), true, false, false, false, true)); + Math.max(Math.floor(pokemon.getMaxHp() / (100 / this.healPercent)) * this.stackCount, 1), getPokemonMessage(pokemon, '\nrestored some HP!'), true, false, false, false, true)); return true; } @@ -2243,9 +2243,9 @@ export function overrideModifiers(scene: BattleScene, player: boolean = true): v const modifier: PersistentModifier = modifierType.withIdFromFunc(modifierTypes[modifierName]).newModifier() as PersistentModifier; modifier.stackCount = qty; if (player) { - scene.addModifier(modifier, true, false, false, true); + scene.addModifier(modifier, true, false, false, true); } else { - scene.addEnemyModifier(modifier, true, true); + scene.addEnemyModifier(modifier, true, true); } }); } @@ -2260,23 +2260,23 @@ export function overrideHeldItems(scene: BattleScene, pokemon: Pokemon, player: if (!heldItemsOverride || heldItemsOverride.length === 0 || !scene) return; // if no override, do nothing // we loop through all the itemName given in the override file heldItemsOverride.forEach(item => { - const itemName = item.name; - const qty = item.count || 1; - if (!modifierTypes.hasOwnProperty(itemName)) return; // if the item does not exist, we skip it - const modifierType: ModifierType = modifierTypes[itemName](); // we retrieve the item in the list - var itemModifier: PokemonHeldItemModifier; - if (modifierType instanceof ModifierTypes.ModifierTypeGenerator) { - itemModifier = modifierType.generateType(null, [item.type]).withIdFromFunc(modifierTypes[itemName]).newModifier(pokemon) as PokemonHeldItemModifier; - } else { - itemModifier = modifierType.withIdFromFunc(modifierTypes[itemName]).newModifier(pokemon) as PokemonHeldItemModifier; - } - // we create the item - itemModifier.pokemonId = pokemon.id; // we assign the created item to the pokemon - itemModifier.stackCount = qty; // we say how many items we want - if (player) { - scene.addModifier(itemModifier, true, false, false, true); - } else { - scene.addEnemyModifier(itemModifier, true, true); - } + const itemName = item.name; + const qty = item.count || 1; + if (!modifierTypes.hasOwnProperty(itemName)) return; // if the item does not exist, we skip it + const modifierType: ModifierType = modifierTypes[itemName](); // we retrieve the item in the list + let itemModifier: PokemonHeldItemModifier; + if (modifierType instanceof ModifierTypes.ModifierTypeGenerator) { + itemModifier = modifierType.generateType(null, [item.type]).withIdFromFunc(modifierTypes[itemName]).newModifier(pokemon) as PokemonHeldItemModifier; + } else { + itemModifier = modifierType.withIdFromFunc(modifierTypes[itemName]).newModifier(pokemon) as PokemonHeldItemModifier; + } + // we create the item + itemModifier.pokemonId = pokemon.id; // we assign the created item to the pokemon + itemModifier.stackCount = qty; // we say how many items we want + if (player) { + scene.addModifier(itemModifier, true, false, false, true); + } else { + scene.addEnemyModifier(itemModifier, true, true); + } }); -} \ No newline at end of file +} diff --git a/src/overrides.ts b/src/overrides.ts index b7307ab2f7f..1f8c19fd7c5 100644 --- a/src/overrides.ts +++ b/src/overrides.ts @@ -1,8 +1,8 @@ import { Species } from './data/enums/species'; -import { Abilities } from "./data/enums/abilities"; -import { Biome } from "./data/enums/biome"; -import { Moves } from "./data/enums/moves"; -import { WeatherType } from "./data/weather"; +import { Abilities } from './data/enums/abilities'; +import { Biome } from './data/enums/biome'; +import { Moves } from './data/enums/moves'; +import { WeatherType } from './data/weather'; import { Variant } from './data/variant'; import { BerryType } from './data/berry'; import { TempBattleStat } from './data/temp-battle-stat'; @@ -30,15 +30,15 @@ export const STARTING_BIOME_OVERRIDE: Biome = Biome.TOWN; // default 1000 export const STARTING_MONEY_OVERRIDE: integer = 0; export const POKEBALL_OVERRIDE: { active: boolean, pokeballs: PokeballCounts } = { - active: false, - pokeballs: { - [PokeballType.POKEBALL]: 5, - [PokeballType.GREAT_BALL]: 0, - [PokeballType.ULTRA_BALL]: 0, - [PokeballType.ROGUE_BALL]: 0, - [PokeballType.MASTER_BALL]: 0, - } -} + active: false, + pokeballs: { + [PokeballType.POKEBALL]: 5, + [PokeballType.GREAT_BALL]: 0, + [PokeballType.ULTRA_BALL]: 0, + [PokeballType.ROGUE_BALL]: 0, + [PokeballType.MASTER_BALL]: 0, + } +}; /** * PLAYER OVERRIDES diff --git a/src/phase.ts b/src/phase.ts index a8fb7c68a12..18d0249368c 100644 --- a/src/phase.ts +++ b/src/phase.ts @@ -1,4 +1,4 @@ -import BattleScene from "./battle-scene"; +import BattleScene from './battle-scene'; export class Phase { protected scene: BattleScene; @@ -16,4 +16,4 @@ export class Phase { end() { this.scene.shiftPhase(); } -} \ No newline at end of file +} diff --git a/src/phases.ts b/src/phases.ts index b861c82f0e8..8bcc8e658ad 100644 --- a/src/phases.ts +++ b/src/phases.ts @@ -1,66 +1,66 @@ -import BattleScene, { AnySound, bypassLogin, startingWave } from "./battle-scene"; -import { default as Pokemon, PlayerPokemon, EnemyPokemon, PokemonMove, MoveResult, DamageResult, FieldPosition, HitResult, TurnMove } from "./field/pokemon"; +import BattleScene, { AnySound, bypassLogin, startingWave } from './battle-scene'; +import { default as Pokemon, PlayerPokemon, EnemyPokemon, PokemonMove, MoveResult, DamageResult, FieldPosition, HitResult, TurnMove } from './field/pokemon'; import * as Utils from './utils'; -import { Moves } from "./data/enums/moves"; -import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMoveAttrs, HitsTagAttr, MissEffectAttr, MoveAttr, MoveEffectAttr, MoveFlags, MultiHitAttr, OverrideMoveEffectAttr, VariableAccuracyAttr, MoveTarget, OneHitKOAttr, getMoveTargets, MoveTargetSet, MoveEffectTrigger, CopyMoveAttr, AttackMove, SelfStatusMove, DelayedAttackAttr, RechargeAttr, PreMoveMessageAttr, HealStatusEffectAttr, IgnoreOpponentStatChangesAttr, NoEffectAttr, BypassRedirectAttr, FixedDamageAttr, PostVictoryStatChangeAttr, OneHitKOAccuracyAttr, ForceSwitchOutAttr, VariableTargetAttr, SacrificialAttr, IncrementMovePriorityAttr } from "./data/move"; +import { Moves } from './data/enums/moves'; +import { allMoves, applyMoveAttrs, BypassSleepAttr, ChargeAttr, applyFilteredMoveAttrs, HitsTagAttr, MissEffectAttr, MoveAttr, MoveEffectAttr, MoveFlags, MultiHitAttr, OverrideMoveEffectAttr, VariableAccuracyAttr, MoveTarget, OneHitKOAttr, getMoveTargets, MoveTargetSet, MoveEffectTrigger, CopyMoveAttr, AttackMove, SelfStatusMove, DelayedAttackAttr, RechargeAttr, PreMoveMessageAttr, HealStatusEffectAttr, IgnoreOpponentStatChangesAttr, NoEffectAttr, BypassRedirectAttr, FixedDamageAttr, PostVictoryStatChangeAttr, OneHitKOAccuracyAttr, ForceSwitchOutAttr, VariableTargetAttr, SacrificialAttr, IncrementMovePriorityAttr } from './data/move'; import { Mode } from './ui/ui'; -import { Command } from "./ui/command-ui-handler"; -import { Stat } from "./data/pokemon-stat"; -import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, PokemonMoveAccuracyBoosterModifier, overrideModifiers, overrideHeldItems, BypassSpeedChanceModifier } from "./modifier/modifier"; -import PartyUiHandler, { PartyOption, PartyUiMode } from "./ui/party-ui-handler"; -import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor, PokeballType } from "./data/pokeball"; -import { CommonAnim, CommonBattleAnim, MoveAnim, initMoveAnim, loadMoveAnimAssets } from "./data/battle-anims"; -import { StatusEffect, getStatusEffectActivationText, getStatusEffectCatchRateMultiplier, getStatusEffectHealText, getStatusEffectObtainText, getStatusEffectOverlapText } from "./data/status-effect"; -import { SummaryUiMode } from "./ui/summary-ui-handler"; -import EvolutionSceneHandler from "./ui/evolution-scene-handler"; -import { EvolutionPhase } from "./evolution-phase"; -import { Phase } from "./phase"; -import { BattleStat, getBattleStatLevelChangeDescription, getBattleStatName } from "./data/battle-stat"; -import { biomeLinks, getBiomeName } from "./data/biomes"; -import { Biome } from "./data/enums/biome"; -import { ModifierTier } from "./modifier/modifier-tier"; -import { FusePokemonModifierType, ModifierPoolType, ModifierType, ModifierTypeFunc, ModifierTypeOption, PokemonModifierType, PokemonMoveModifierType, PokemonPpRestoreModifierType, PokemonPpUpModifierType, RememberMoveModifierType, TmModifierType, getDailyRunStarterModifiers, getEnemyBuffModifierForWave, getModifierType, getPlayerModifierTypeOptions, getPlayerShopModifierTypeOptionsForWave, modifierTypes, regenerateModifierPoolThresholds } from "./modifier/modifier-type"; -import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; -import { BattlerTagLapseType, EncoreTag, HideSpriteTag as HiddenTag, ProtectedTag, TrappedTag } from "./data/battler-tags"; -import { BattlerTagType } from "./data/enums/battler-tag-type"; -import { getPokemonMessage, getPokemonPrefix } from "./messages"; -import { Starter } from "./ui/starter-select-ui-handler"; -import { Gender } from "./data/gender"; -import { Weather, WeatherType, getRandomWeatherType, getTerrainBlockMessage, getWeatherDamageMessage, getWeatherLapseMessage } from "./data/weather"; -import { TempBattleStat } from "./data/temp-battle-stat"; -import { ArenaTagSide, ArenaTrapTag, MistTag, TrickRoomTag } from "./data/arena-tag"; -import { ArenaTagType } from "./data/enums/arena-tag-type"; -import { CheckTrappedAbAttr, IgnoreOpponentStatChangesAbAttr, PostAttackAbAttr, PostBattleAbAttr, PostDefendAbAttr, PostSummonAbAttr, PostTurnAbAttr, PostWeatherLapseAbAttr, PreSwitchOutAbAttr, PreWeatherDamageAbAttr, ProtectStatAbAttr, RedirectMoveAbAttr, BlockRedirectAbAttr, RunSuccessAbAttr, StatChangeMultiplierAbAttr, SuppressWeatherEffectAbAttr, SyncEncounterNatureAbAttr, applyAbAttrs, applyCheckTrappedAbAttrs, applyPostAttackAbAttrs, applyPostBattleAbAttrs, applyPostDefendAbAttrs, applyPostSummonAbAttrs, applyPostTurnAbAttrs, applyPostWeatherLapseAbAttrs, applyPreStatChangeAbAttrs, applyPreSwitchOutAbAttrs, applyPreWeatherEffectAbAttrs, BattleStatMultiplierAbAttr, applyBattleStatMultiplierAbAttrs, IncrementMovePriorityAbAttr, applyPostVictoryAbAttrs, PostVictoryAbAttr, applyPostBattleInitAbAttrs, PostBattleInitAbAttr, BlockNonDirectDamageAbAttr as BlockNonDirectDamageAbAttr, applyPostKnockOutAbAttrs, PostKnockOutAbAttr, PostBiomeChangeAbAttr, applyPostFaintAbAttrs, PostFaintAbAttr, IncreasePpAbAttr, PostStatChangeAbAttr, applyPostStatChangeAbAttrs, AlwaysHitAbAttr, PreventBerryUseAbAttr, StatChangeCopyAbAttr } from "./data/ability"; -import { Unlockables, getUnlockableName } from "./system/unlockables"; -import { getBiomeKey } from "./field/arena"; -import { BattleType, BattlerIndex, TurnCommand } from "./battle"; -import { BattleSpec } from "./enums/battle-spec"; -import { Species } from "./data/enums/species"; -import { HealAchv, LevelAchv, achvs } from "./system/achv"; -import { TrainerConfig, TrainerSlot, trainerConfigs } from "./data/trainer-config"; -import { TrainerType } from "./data/enums/trainer-type"; -import { EggHatchPhase } from "./egg-hatch-phase"; -import { Egg } from "./data/egg"; -import { vouchers } from "./system/voucher"; -import { loggedInUser, updateUserInfo } from "./account"; -import { PlayerGender, SessionSaveData } from "./system/game-data"; -import { addPokeballCaptureStars, addPokeballOpenParticles } from "./field/anims"; -import { SpeciesFormChangeActiveTrigger, SpeciesFormChangeManualTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangePreMoveTrigger } from "./data/pokemon-forms"; -import { battleSpecDialogue, getCharVariantFromDialogue, miscDialogue } from "./data/dialogue"; -import ModifierSelectUiHandler, { SHOP_OPTIONS_ROW_LIMIT } from "./ui/modifier-select-ui-handler"; -import { Setting } from "./system/settings"; -import { Tutorial, handleTutorial } from "./tutorial"; -import { TerrainType } from "./data/terrain"; -import { OptionSelectConfig, OptionSelectItem } from "./ui/abstact-option-select-ui-handler"; -import { SaveSlotUiMode } from "./ui/save-slot-select-ui-handler"; -import { fetchDailyRunSeed, getDailyRunStarters } from "./data/daily-run"; -import { GameModes, gameModes } from "./game-mode"; -import PokemonSpecies, { getPokemonSpecies, getPokemonSpeciesForm, speciesStarters } from "./data/pokemon-species"; +import { Command } from './ui/command-ui-handler'; +import { Stat } from './data/pokemon-stat'; +import { BerryModifier, ContactHeldItemTransferChanceModifier, EnemyAttackStatusEffectChanceModifier, EnemyPersistentModifier, EnemyStatusEffectHealChanceModifier, EnemyTurnHealModifier, ExpBalanceModifier, ExpBoosterModifier, ExpShareModifier, ExtraModifierModifier, FlinchChanceModifier, FusePokemonModifier, HealingBoosterModifier, HitHealModifier, LapsingPersistentModifier, MapModifier, Modifier, MultipleParticipantExpBonusModifier, PersistentModifier, PokemonExpBoosterModifier, PokemonHeldItemModifier, PokemonInstantReviveModifier, SwitchEffectTransferModifier, TempBattleStatBoosterModifier, TurnHealModifier, TurnHeldItemTransferModifier, MoneyMultiplierModifier, MoneyInterestModifier, IvScannerModifier, LapsingPokemonHeldItemModifier, PokemonMultiHitModifier, PokemonMoveAccuracyBoosterModifier, overrideModifiers, overrideHeldItems, BypassSpeedChanceModifier } from './modifier/modifier'; +import PartyUiHandler, { PartyOption, PartyUiMode } from './ui/party-ui-handler'; +import { doPokeballBounceAnim, getPokeballAtlasKey, getPokeballCatchMultiplier, getPokeballTintColor, PokeballType } from './data/pokeball'; +import { CommonAnim, CommonBattleAnim, MoveAnim, initMoveAnim, loadMoveAnimAssets } from './data/battle-anims'; +import { StatusEffect, getStatusEffectActivationText, getStatusEffectCatchRateMultiplier, getStatusEffectHealText, getStatusEffectObtainText, getStatusEffectOverlapText } from './data/status-effect'; +import { SummaryUiMode } from './ui/summary-ui-handler'; +import EvolutionSceneHandler from './ui/evolution-scene-handler'; +import { EvolutionPhase } from './evolution-phase'; +import { Phase } from './phase'; +import { BattleStat, getBattleStatLevelChangeDescription, getBattleStatName } from './data/battle-stat'; +import { biomeLinks, getBiomeName } from './data/biomes'; +import { Biome } from './data/enums/biome'; +import { ModifierTier } from './modifier/modifier-tier'; +import { FusePokemonModifierType, ModifierPoolType, ModifierType, ModifierTypeFunc, ModifierTypeOption, PokemonModifierType, PokemonMoveModifierType, PokemonPpRestoreModifierType, PokemonPpUpModifierType, RememberMoveModifierType, TmModifierType, getDailyRunStarterModifiers, getEnemyBuffModifierForWave, getModifierType, getPlayerModifierTypeOptions, getPlayerShopModifierTypeOptionsForWave, modifierTypes, regenerateModifierPoolThresholds } from './modifier/modifier-type'; +import SoundFade from 'phaser3-rex-plugins/plugins/soundfade'; +import { BattlerTagLapseType, EncoreTag, HideSpriteTag as HiddenTag, ProtectedTag, TrappedTag } from './data/battler-tags'; +import { BattlerTagType } from './data/enums/battler-tag-type'; +import { getPokemonMessage, getPokemonPrefix } from './messages'; +import { Starter } from './ui/starter-select-ui-handler'; +import { Gender } from './data/gender'; +import { Weather, WeatherType, getRandomWeatherType, getTerrainBlockMessage, getWeatherDamageMessage, getWeatherLapseMessage } from './data/weather'; +import { TempBattleStat } from './data/temp-battle-stat'; +import { ArenaTagSide, ArenaTrapTag, MistTag, TrickRoomTag } from './data/arena-tag'; +import { ArenaTagType } from './data/enums/arena-tag-type'; +import { CheckTrappedAbAttr, IgnoreOpponentStatChangesAbAttr, PostAttackAbAttr, PostBattleAbAttr, PostDefendAbAttr, PostSummonAbAttr, PostTurnAbAttr, PostWeatherLapseAbAttr, PreSwitchOutAbAttr, PreWeatherDamageAbAttr, ProtectStatAbAttr, RedirectMoveAbAttr, BlockRedirectAbAttr, RunSuccessAbAttr, StatChangeMultiplierAbAttr, SuppressWeatherEffectAbAttr, SyncEncounterNatureAbAttr, applyAbAttrs, applyCheckTrappedAbAttrs, applyPostAttackAbAttrs, applyPostBattleAbAttrs, applyPostDefendAbAttrs, applyPostSummonAbAttrs, applyPostTurnAbAttrs, applyPostWeatherLapseAbAttrs, applyPreStatChangeAbAttrs, applyPreSwitchOutAbAttrs, applyPreWeatherEffectAbAttrs, BattleStatMultiplierAbAttr, applyBattleStatMultiplierAbAttrs, IncrementMovePriorityAbAttr, applyPostVictoryAbAttrs, PostVictoryAbAttr, applyPostBattleInitAbAttrs, PostBattleInitAbAttr, BlockNonDirectDamageAbAttr as BlockNonDirectDamageAbAttr, applyPostKnockOutAbAttrs, PostKnockOutAbAttr, PostBiomeChangeAbAttr, applyPostFaintAbAttrs, PostFaintAbAttr, IncreasePpAbAttr, PostStatChangeAbAttr, applyPostStatChangeAbAttrs, AlwaysHitAbAttr, PreventBerryUseAbAttr, StatChangeCopyAbAttr } from './data/ability'; +import { Unlockables, getUnlockableName } from './system/unlockables'; +import { getBiomeKey } from './field/arena'; +import { BattleType, BattlerIndex, TurnCommand } from './battle'; +import { BattleSpec } from './enums/battle-spec'; +import { Species } from './data/enums/species'; +import { HealAchv, LevelAchv, achvs } from './system/achv'; +import { TrainerConfig, TrainerSlot, trainerConfigs } from './data/trainer-config'; +import { TrainerType } from './data/enums/trainer-type'; +import { EggHatchPhase } from './egg-hatch-phase'; +import { Egg } from './data/egg'; +import { vouchers } from './system/voucher'; +import { loggedInUser, updateUserInfo } from './account'; +import { PlayerGender, SessionSaveData } from './system/game-data'; +import { addPokeballCaptureStars, addPokeballOpenParticles } from './field/anims'; +import { SpeciesFormChangeActiveTrigger, SpeciesFormChangeManualTrigger, SpeciesFormChangeMoveLearnedTrigger, SpeciesFormChangePostMoveTrigger, SpeciesFormChangePreMoveTrigger } from './data/pokemon-forms'; +import { battleSpecDialogue, getCharVariantFromDialogue, miscDialogue } from './data/dialogue'; +import ModifierSelectUiHandler, { SHOP_OPTIONS_ROW_LIMIT } from './ui/modifier-select-ui-handler'; +import { Setting } from './system/settings'; +import { Tutorial, handleTutorial } from './tutorial'; +import { TerrainType } from './data/terrain'; +import { OptionSelectConfig, OptionSelectItem } from './ui/abstact-option-select-ui-handler'; +import { SaveSlotUiMode } from './ui/save-slot-select-ui-handler'; +import { fetchDailyRunSeed, getDailyRunStarters } from './data/daily-run'; +import { GameModes, gameModes } from './game-mode'; +import PokemonSpecies, { getPokemonSpecies, getPokemonSpeciesForm, speciesStarters } from './data/pokemon-species'; import i18next from './plugins/i18n'; -import { Abilities } from "./data/enums/abilities"; +import { Abilities } from './data/enums/abilities'; import * as Overrides from './overrides'; -import { TextStyle, addTextObject } from "./ui/text"; -import { Type } from "./data/type"; +import { TextStyle, addTextObject } from './ui/text'; +import { Type } from './data/type'; export class LoginPhase extends Phase { @@ -229,7 +229,7 @@ export class TitlePhase extends Phase { return true; } }); - this.scene.ui.showText(i18next.t("menu:selectGameMode"), null, () => this.scene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: options })); + this.scene.ui.showText(i18next.t('menu:selectGameMode'), null, () => this.scene.ui.setOverlayMode(Mode.OPTION_SELECT, { options: options })); } else { this.gameMode = GameModes.CLASSIC; this.scene.ui.setMode(Mode.MESSAGE); @@ -304,7 +304,7 @@ export class TitlePhase extends Phase { const party = this.scene.getParty(); const loadPokemonAssets: Promise[] = []; - for (let starter of starters) { + for (const starter of starters) { const starterProps = this.scene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr); const starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0)); const starterGender = starter.species.malePercent !== null @@ -321,7 +321,7 @@ export class TitlePhase extends Phase { .concat(Array(3).fill(null).map(() => modifierTypes.GOLDEN_EXP_CHARM().withIdFromFunc(modifierTypes.GOLDEN_EXP_CHARM).newModifier())) .concat(getDailyRunStarterModifiers(party)); - for (let m of modifiers) + for (const m of modifiers) this.scene.addModifier(m, true, false, false, true); this.scene.updateModifiers(true, true); @@ -342,7 +342,7 @@ export class TitlePhase extends Phase { fetchDailyRunSeed().then(seed => { generateDaily(seed); }).catch(err => { - console.error("Failed to load daily run:\n", err); + console.error('Failed to load daily run:\n', err); }); } else { generateDaily(btoa(new Date().toISOString().substring(0, 10))); @@ -377,7 +377,7 @@ export class TitlePhase extends Phase { } } - for (let achv of Object.keys(this.scene.gameData.achvUnlocks)) { + for (const achv of Object.keys(this.scene.gameData.achvUnlocks)) { if (vouchers.hasOwnProperty(achv)) this.scene.validateVoucher(vouchers[achv]); } @@ -567,7 +567,7 @@ export class BattlePhase extends Phase { sprite.x = trainerSlot || sprites.length < 2 ? 0 : i ? 16 : -16; sprite.setVisible(visible); sprite.clearTint(); - }) + }); sprites[i].setVisible(visible); tintSprites[i].setVisible(visible); sprites[i].clearTint(); @@ -763,7 +763,7 @@ export class EncounterPhase extends BattlePhase { loadEnemyAssets.push(battle.trainer.loadAssets().then(() => battle.trainer.initSprite())); else { if (battle.enemyParty.filter(p => p.isBoss()).length > 1) { - for (let enemyPokemon of battle.enemyParty) { + for (const enemyPokemon of battle.enemyParty) { if (enemyPokemon.isBoss()) { enemyPokemon.setBoss(true, Math.ceil(enemyPokemon.bossSegments * (enemyPokemon.getSpeciesForm().baseTotal / totalBst))); enemyPokemon.initBattleInfo(); @@ -821,7 +821,7 @@ export class EncounterPhase extends BattlePhase { this.scene.updateModifiers(true); }*/ - for (let pokemon of this.scene.getParty()) { + for (const pokemon of this.scene.getParty()) { if (pokemon) pokemon.resetBattleData(); } @@ -859,7 +859,7 @@ export class EncounterPhase extends BattlePhase { return enemyField.length === 1 ? i18next.t('battle:singleWildAppeared', {pokemonName: enemyField[0].name}) - : i18next.t('battle:multiWildAppeared', {pokemonName1: enemyField[0].name, pokemonName2: enemyField[1].name}) + : i18next.t('battle:multiWildAppeared', {pokemonName1: enemyField[0].name, pokemonName2: enemyField[1].name}); } doEncounterCommon(showEncounterMessage: boolean = true) { @@ -959,7 +959,7 @@ export class EncounterPhase extends BattlePhase { this.scene.pushPhase(new ToggleDoublePositionPhase(this.scene, false)); } - if (this.scene.currentBattle.battleType !== BattleType.TRAINER && (this.scene.currentBattle.waveIndex > 1 || !this.scene.gameMode.isDaily)) { + if (this.scene.currentBattle.battleType !== BattleType.TRAINER && (this.scene.currentBattle.waveIndex > 1 || !this.scene.gameMode.isDaily)) { const minPartySize = this.scene.currentBattle.double ? 2 : 1; if (availablePartyMembers.length > minPartySize) { this.scene.pushPhase(new CheckSwitchPhase(this.scene, 0, this.scene.currentBattle.double)); @@ -974,14 +974,14 @@ export class EncounterPhase extends BattlePhase { tryOverrideForBattleSpec(): boolean { switch (this.scene.currentBattle.battleSpec) { - case BattleSpec.FINAL_BOSS: - const enemy = this.scene.getEnemyPokemon(); - this.scene.ui.showText(this.getEncounterMessage(), null, () => { - this.scene.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].encounter, enemy.species.name, null, () => { - this.doEncounterCommon(false); - }); - }, 1500, true); - return true; + case BattleSpec.FINAL_BOSS: + const enemy = this.scene.getEnemyPokemon(); + this.scene.ui.showText(this.getEncounterMessage(), null, () => { + this.scene.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].encounter, enemy.species.name, null, () => { + this.doEncounterCommon(false); + }); + }, 1500, true); + return true; } return false; @@ -996,7 +996,7 @@ export class NextEncounterPhase extends EncounterPhase { doEncounter(): void { this.scene.playBgm(undefined, true); - for (let pokemon of this.scene.getParty()) { + for (const pokemon of this.scene.getParty()) { if (pokemon) pokemon.resetBattleData(); } @@ -1033,14 +1033,14 @@ export class NewBiomeEncounterPhase extends NextEncounterPhase { doEncounter(): void { this.scene.playBgm(undefined, true); - for (let pokemon of this.scene.getParty()) { + for (const pokemon of this.scene.getParty()) { if (pokemon) pokemon.resetBattleData(); } this.scene.arena.trySetWeather(getRandomWeatherType(this.scene.arena), false); - for (let pokemon of this.scene.getParty().filter(p => p.isOnField())) + for (const pokemon of this.scene.getParty().filter(p => p.isOnField())) applyAbAttrs(PostBiomeChangeAbAttr, pokemon, null); const enemyField = this.scene.getEnemyField(); @@ -1168,7 +1168,7 @@ export class SwitchBiomePhase extends BattlePhase { const biomeKey = getBiomeKey(this.nextBiome); const bgTexture = `${biomeKey}_bg`; - this.scene.arenaBgTransition.setTexture(bgTexture) + this.scene.arenaBgTransition.setTexture(bgTexture); this.scene.arenaBgTransition.setAlpha(0); this.scene.arenaBgTransition.setVisible(true); this.scene.arenaPlayerTransition.setBiome(this.nextBiome); @@ -1223,25 +1223,25 @@ export class SummonPhase extends PartyMemberPokemonPhase { const partyMember = this.getPokemon(); // If the Pokemon about to be sent out is fainted, switch to the first non-fainted Pokemon if (partyMember.isFainted()) { - console.warn("The Pokemon about to be sent out is fainted. Attempting to resolve..."); + console.warn('The Pokemon about to be sent out is fainted. Attempting to resolve...'); const party = this.getParty(); // Find the first non-fainted Pokemon index above the current one const nonFaintedIndex = party.findIndex((p, i) => i > this.partyMemberIndex && !p.isFainted()); if (nonFaintedIndex === -1) { - console.error("Party Details:\n", party); - throw new Error("All available Pokemon were fainted!"); + console.error('Party Details:\n', party); + throw new Error('All available Pokemon were fainted!'); } // Swaps the fainted Pokemon and the first non-fainted Pokemon in the party [party[this.partyMemberIndex], party[nonFaintedIndex]] = [party[nonFaintedIndex], party[this.partyMemberIndex]]; - console.warn("Swapped %s %O with %s %O", partyMember?.name, partyMember, party[0]?.name, party[0]); + console.warn('Swapped %s %O with %s %O', partyMember?.name, partyMember, party[0]?.name, party[0]); } if (this.player) { this.scene.ui.showText(i18next.t('battle:playerGo', { pokemonName: this.getPokemon().name })); if (this.player) - this.scene.pbTray.hide(); + this.scene.pbTray.hide(); this.scene.trainer.setTexture(`trainer_${this.scene.gameData.gender === PlayerGender.FEMALE ? 'f' : 'm'}_back_pb`); this.scene.time.delayedCall(562, () => { this.scene.trainer.setFrame('2'); @@ -1524,7 +1524,7 @@ export class ShowTrainerPhase extends BattlePhase { start() { super.start(); - this.scene.trainer.setVisible(true) + this.scene.trainer.setVisible(true); this.scene.trainer.setTexture(`trainer_${this.scene.gameData.gender === PlayerGender.FEMALE ? 'f' : 'm'}_back`); @@ -1692,7 +1692,7 @@ export class CommandPhase extends FieldPhase { while (moveQueue.length && moveQueue[0] && moveQueue[0].move && (!playerPokemon.getMoveset().find(m => m.moveId === moveQueue[0].move) || !playerPokemon.getMoveset()[playerPokemon.getMoveset().findIndex(m => m.moveId === moveQueue[0].move)].isUsable(playerPokemon, moveQueue[0].ignorePP))) - moveQueue.shift(); + moveQueue.shift(); if (moveQueue.length) { const queuedMove = moveQueue[0]; @@ -1715,142 +1715,142 @@ export class CommandPhase extends FieldPhase { let success: boolean; switch (command) { - case Command.FIGHT: - let useStruggle = false; - if (cursor === -1 || + case Command.FIGHT: + let useStruggle = false; + if (cursor === -1 || playerPokemon.trySelectMove(cursor, args[0] as boolean) || (useStruggle = cursor > -1 && !playerPokemon.getMoveset().filter(m => m.isUsable(playerPokemon)).length)) { - const moveId = !useStruggle ? cursor > -1 ? playerPokemon.getMoveset()[cursor].moveId : Moves.NONE : Moves.STRUGGLE; - const turnCommand: TurnCommand = { command: Command.FIGHT, cursor: cursor, move: { move: moveId, targets: [], ignorePP: args[0] }, args: args }; - const moveTargets: MoveTargetSet = args.length < 3 ? getMoveTargets(playerPokemon, moveId) : args[2]; - if (!moveId) - turnCommand.targets = [ this.fieldIndex ]; - console.log(moveTargets, playerPokemon.name); - if (moveTargets.targets.length <= 1 || moveTargets.multiple) - turnCommand.move.targets = moveTargets.targets; - else if(playerPokemon.getTag(BattlerTagType.CHARGING) && playerPokemon.getMoveQueue().length >= 1) - turnCommand.move.targets = playerPokemon.getMoveQueue()[0].targets; - else - this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex)); - this.scene.currentBattle.turnCommands[this.fieldIndex] = turnCommand; - success = true; - } - else if (cursor < playerPokemon.getMoveset().length) { - const move = playerPokemon.getMoveset()[cursor]; - this.scene.ui.setMode(Mode.MESSAGE); + const moveId = !useStruggle ? cursor > -1 ? playerPokemon.getMoveset()[cursor].moveId : Moves.NONE : Moves.STRUGGLE; + const turnCommand: TurnCommand = { command: Command.FIGHT, cursor: cursor, move: { move: moveId, targets: [], ignorePP: args[0] }, args: args }; + const moveTargets: MoveTargetSet = args.length < 3 ? getMoveTargets(playerPokemon, moveId) : args[2]; + if (!moveId) + turnCommand.targets = [ this.fieldIndex ]; + console.log(moveTargets, playerPokemon.name); + if (moveTargets.targets.length <= 1 || moveTargets.multiple) + turnCommand.move.targets = moveTargets.targets; + else if(playerPokemon.getTag(BattlerTagType.CHARGING) && playerPokemon.getMoveQueue().length >= 1) + turnCommand.move.targets = playerPokemon.getMoveQueue()[0].targets; + else + this.scene.unshiftPhase(new SelectTargetPhase(this.scene, this.fieldIndex)); + this.scene.currentBattle.turnCommands[this.fieldIndex] = turnCommand; + success = true; + } + else if (cursor < playerPokemon.getMoveset().length) { + const move = playerPokemon.getMoveset()[cursor]; + this.scene.ui.setMode(Mode.MESSAGE); - // Decides between a Disabled, Not Implemented, or No PP translation message - const errorMessage = + // Decides between a Disabled, Not Implemented, or No PP translation message + const errorMessage = playerPokemon.summonData.disabledMove === move.moveId ? 'battle:moveDisabled' : - move.getName().endsWith(' (N)') ? 'battle:moveNotImplemented' : 'battle:moveNoPP'; - const moveName = move.getName().replace(' (N)', ''); // Trims off the indicator + move.getName().endsWith(' (N)') ? 'battle:moveNotImplemented' : 'battle:moveNoPP'; + const moveName = move.getName().replace(' (N)', ''); // Trims off the indicator - this.scene.ui.showText(i18next.t(errorMessage, { moveName: moveName }), null, () => { - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex); - }, null, true); - } - break; - case Command.BALL: - if (this.scene.arena.biomeType === Biome.END && (!this.scene.gameMode.isClassic || (this.scene.getEnemyField().filter(p => p.isActive(true)).some(p => !p.scene.gameData.dexData[p.species.speciesId].caughtAttr) && this.scene.gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarters).length - 1))) { + this.scene.ui.showText(i18next.t(errorMessage, { moveName: moveName }), null, () => { + this.scene.ui.clearText(); + this.scene.ui.setMode(Mode.FIGHT, this.fieldIndex); + }, null, true); + } + break; + case Command.BALL: + if (this.scene.arena.biomeType === Biome.END && (!this.scene.gameMode.isClassic || (this.scene.getEnemyField().filter(p => p.isActive(true)).some(p => !p.scene.gameData.dexData[p.species.speciesId].caughtAttr) && this.scene.gameData.getStarterCount(d => !!d.caughtAttr) < Object.keys(speciesStarters).length - 1))) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(i18next.t('battle:noPokeballForce'), null, () => { + this.scene.ui.showText(null, 0); + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + }, null, true); + } else if (this.scene.currentBattle.battleType === BattleType.TRAINER) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(i18next.t('battle:noPokeballTrainer'), null, () => { + this.scene.ui.showText(null, 0); + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + }, null, true); + } else { + const targets = this.scene.getEnemyField().filter(p => p.isActive(true)).map(p => p.getBattlerIndex()); + if (targets.length > 1) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('battle:noPokeballForce'), null, () => { + this.scene.ui.showText(i18next.t('battle:noPokeballMulti'), null, () => { this.scene.ui.showText(null, 0); this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); - } else if (this.scene.currentBattle.battleType === BattleType.TRAINER) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('battle:noPokeballTrainer'), null, () => { - this.scene.ui.showText(null, 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - }, null, true); - } else { - const targets = this.scene.getEnemyField().filter(p => p.isActive(true)).map(p => p.getBattlerIndex()); - if (targets.length > 1) { + } else if (cursor < 5) { + const targetPokemon = this.scene.getEnemyField().find(p => p.isActive(true)); + if (targetPokemon.isBoss() && targetPokemon.bossSegmentIndex >= 1 && !targetPokemon.hasAbility(Abilities.WONDER_GUARD, false, true) && cursor < PokeballType.MASTER_BALL) { this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('battle:noPokeballMulti'), null, () => { + this.scene.ui.showText(i18next.t('battle:noPokeballStrong'), null, () => { this.scene.ui.showText(null, 0); this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); }, null, true); - } else if (cursor < 5) { - const targetPokemon = this.scene.getEnemyField().find(p => p.isActive(true)); - if (targetPokemon.isBoss() && targetPokemon.bossSegmentIndex >= 1 && !targetPokemon.hasAbility(Abilities.WONDER_GUARD, false, true) && cursor < PokeballType.MASTER_BALL) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('battle:noPokeballStrong'), null, () => { - this.scene.ui.showText(null, 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - }, null, true); - } else { - this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.BALL, cursor: cursor }; - this.scene.currentBattle.turnCommands[this.fieldIndex].targets = targets; - if (this.fieldIndex) - this.scene.currentBattle.turnCommands[this.fieldIndex - 1].skip = true; - success = true; - } - } - } - break; - case Command.POKEMON: - case Command.RUN: - const isSwitch = command === Command.POKEMON; - if (!isSwitch && this.scene.arena.biomeType === Biome.END) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('battle:noEscapeForce'), null, () => { - this.scene.ui.showText(null, 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - }, null, true); - } else if (!isSwitch && this.scene.currentBattle.battleType === BattleType.TRAINER) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - this.scene.ui.showText(i18next.t('battle:noEscapeTrainer'), null, () => { - this.scene.ui.showText(null, 0); - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - }, null, true); - } else { - const trapTag = playerPokemon.findTag(t => t instanceof TrappedTag) as TrappedTag; - const trapped = new Utils.BooleanHolder(false); - const batonPass = isSwitch && args[0] as boolean; - if (!batonPass) - enemyField.forEach(enemyPokemon => applyCheckTrappedAbAttrs(CheckTrappedAbAttr, enemyPokemon, trapped, playerPokemon)); - if (batonPass || (!trapTag && !trapped.value)) { - this.scene.currentBattle.turnCommands[this.fieldIndex] = isSwitch - ? { command: Command.POKEMON, cursor: cursor, args: args } - : { command: Command.RUN }; - success = true; - if (!isSwitch && this.fieldIndex) + } else { + this.scene.currentBattle.turnCommands[this.fieldIndex] = { command: Command.BALL, cursor: cursor }; + this.scene.currentBattle.turnCommands[this.fieldIndex].targets = targets; + if (this.fieldIndex) this.scene.currentBattle.turnCommands[this.fieldIndex - 1].skip = true; - } else if (trapTag) { - if(trapTag.sourceMove === Moves.INGRAIN && this.scene.getPokemonById(trapTag.sourceId).isOfType(Type.GHOST)) { - success = true; - this.scene.currentBattle.turnCommands[this.fieldIndex] = isSwitch - ? { command: Command.POKEMON, cursor: cursor, args: args } - : { command: Command.RUN }; - break; - } - if (!isSwitch) { - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - this.scene.ui.setMode(Mode.MESSAGE); - } - this.scene.ui.showText( - i18next.t('battle:noEscapePokemon', { - pokemonName: this.scene.getPokemonById(trapTag.sourceId).name, - moveName: trapTag.getMoveName(), - escapeVerb: isSwitch ? i18next.t('battle:escapeVerbSwitch') : i18next.t('battle:escapeVerbFlee') - }), - null, - () => { - this.scene.ui.showText(null, 0); - if (!isSwitch) - this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); - }, null, true); + success = true; } } - break; + } + break; + case Command.POKEMON: + case Command.RUN: + const isSwitch = command === Command.POKEMON; + if (!isSwitch && this.scene.arena.biomeType === Biome.END) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(i18next.t('battle:noEscapeForce'), null, () => { + this.scene.ui.showText(null, 0); + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + }, null, true); + } else if (!isSwitch && this.scene.currentBattle.battleType === BattleType.TRAINER) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + this.scene.ui.setMode(Mode.MESSAGE); + this.scene.ui.showText(i18next.t('battle:noEscapeTrainer'), null, () => { + this.scene.ui.showText(null, 0); + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + }, null, true); + } else { + const trapTag = playerPokemon.findTag(t => t instanceof TrappedTag) as TrappedTag; + const trapped = new Utils.BooleanHolder(false); + const batonPass = isSwitch && args[0] as boolean; + if (!batonPass) + enemyField.forEach(enemyPokemon => applyCheckTrappedAbAttrs(CheckTrappedAbAttr, enemyPokemon, trapped, playerPokemon)); + if (batonPass || (!trapTag && !trapped.value)) { + this.scene.currentBattle.turnCommands[this.fieldIndex] = isSwitch + ? { command: Command.POKEMON, cursor: cursor, args: args } + : { command: Command.RUN }; + success = true; + if (!isSwitch && this.fieldIndex) + this.scene.currentBattle.turnCommands[this.fieldIndex - 1].skip = true; + } else if (trapTag) { + if(trapTag.sourceMove === Moves.INGRAIN && this.scene.getPokemonById(trapTag.sourceId).isOfType(Type.GHOST)) { + success = true; + this.scene.currentBattle.turnCommands[this.fieldIndex] = isSwitch + ? { command: Command.POKEMON, cursor: cursor, args: args } + : { command: Command.RUN }; + break; + } + if (!isSwitch) { + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + this.scene.ui.setMode(Mode.MESSAGE); + } + this.scene.ui.showText( + i18next.t('battle:noEscapePokemon', { + pokemonName: this.scene.getPokemonById(trapTag.sourceId).name, + moveName: trapTag.getMoveName(), + escapeVerb: isSwitch ? i18next.t('battle:escapeVerbSwitch') : i18next.t('battle:escapeVerbFlee') + }), + null, + () => { + this.scene.ui.showText(null, 0); + if (!isSwitch) + this.scene.ui.setMode(Mode.COMMAND, this.fieldIndex); + }, null, true); + } + } + break; } if (success) @@ -2038,7 +2038,7 @@ export class TurnStartPhase extends FieldPhase { return aIndex < bIndex ? -1 : aIndex > bIndex ? 1 : 0; }); - for (let o of moveOrder) { + for (const o of moveOrder) { const pokemon = field[o]; const turnCommand = this.scene.currentBattle.turnCommands[o]; @@ -2047,39 +2047,39 @@ export class TurnStartPhase extends FieldPhase { continue; switch (turnCommand.command) { - case Command.FIGHT: - const queuedMove = turnCommand.move; - if (!queuedMove) - continue; - const move = pokemon.getMoveset().find(m => m.moveId === queuedMove.move) || new PokemonMove(queuedMove.move); - if (pokemon.isPlayer()) { - if (turnCommand.cursor === -1) - this.scene.pushPhase(new MovePhase(this.scene, pokemon, turnCommand.targets || turnCommand.move.targets, move)); - else { - const playerPhase = new MovePhase(this.scene, pokemon, turnCommand.targets || turnCommand.move.targets, move, false, queuedMove.ignorePP); - this.scene.pushPhase(playerPhase); - } - } else - this.scene.pushPhase(new MovePhase(this.scene, pokemon, turnCommand.targets || turnCommand.move.targets, move, false, queuedMove.ignorePP)); - break; - case Command.BALL: - this.scene.unshiftPhase(new AttemptCapturePhase(this.scene, turnCommand.targets[0] % 2, turnCommand.cursor)); - break; - case Command.POKEMON: - case Command.RUN: - const isSwitch = turnCommand.command === Command.POKEMON; - if (isSwitch) - this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, pokemon.getFieldIndex(), turnCommand.cursor, true, turnCommand.args[0] as boolean, pokemon.isPlayer())); - else - this.scene.unshiftPhase(new AttemptRunPhase(this.scene, pokemon.getFieldIndex())); - break; + case Command.FIGHT: + const queuedMove = turnCommand.move; + if (!queuedMove) + continue; + const move = pokemon.getMoveset().find(m => m.moveId === queuedMove.move) || new PokemonMove(queuedMove.move); + if (pokemon.isPlayer()) { + if (turnCommand.cursor === -1) + this.scene.pushPhase(new MovePhase(this.scene, pokemon, turnCommand.targets || turnCommand.move.targets, move)); + else { + const playerPhase = new MovePhase(this.scene, pokemon, turnCommand.targets || turnCommand.move.targets, move, false, queuedMove.ignorePP); + this.scene.pushPhase(playerPhase); + } + } else + this.scene.pushPhase(new MovePhase(this.scene, pokemon, turnCommand.targets || turnCommand.move.targets, move, false, queuedMove.ignorePP)); + break; + case Command.BALL: + this.scene.unshiftPhase(new AttemptCapturePhase(this.scene, turnCommand.targets[0] % 2, turnCommand.cursor)); + break; + case Command.POKEMON: + case Command.RUN: + const isSwitch = turnCommand.command === Command.POKEMON; + if (isSwitch) + this.scene.unshiftPhase(new SwitchSummonPhase(this.scene, pokemon.getFieldIndex(), turnCommand.cursor, true, turnCommand.args[0] as boolean, pokemon.isPlayer())); + else + this.scene.unshiftPhase(new AttemptRunPhase(this.scene, pokemon.getFieldIndex())); + break; } } if (this.scene.arena.weather) this.scene.pushPhase(new WeatherEffectPhase(this.scene, this.scene.arena.weather)); - for (let o of order) { + for (const o of order) { if (field[o].status && field[o].status.isPostTurn()) this.scene.pushPhase(new PostTurnStatusEffectPhase(this.scene, o)); } @@ -2157,20 +2157,20 @@ export class BattleEndPhase extends BattlePhase { if (this.scene.currentBattle.trainer) this.scene.gameData.gameStats.trainersDefeated++; if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex + 1 > this.scene.gameData.gameStats.highestEndlessWave) - this.scene.gameData.gameStats.highestEndlessWave = this.scene.currentBattle.waveIndex + 1; + this.scene.gameData.gameStats.highestEndlessWave = this.scene.currentBattle.waveIndex + 1; - for (let pokemon of this.scene.getField()) { + for (const pokemon of this.scene.getField()) { if (pokemon) pokemon.resetBattleSummonData(); } - for (let pokemon of this.scene.getParty().filter(p => !p.isFainted())) + for (const pokemon of this.scene.getParty().filter(p => !p.isFainted())) applyPostBattleAbAttrs(PostBattleAbAttr, pokemon); this.scene.clearEnemyHeldItemModifiers(); const lapsingModifiers = this.scene.findModifiers(m => m instanceof LapsingPersistentModifier || m instanceof LapsingPokemonHeldItemModifier) as (LapsingPersistentModifier | LapsingPokemonHeldItemModifier)[]; - for (let m of lapsingModifiers) { + for (const m of lapsingModifiers) { const args: any[] = []; if (m instanceof LapsingPokemonHeldItemModifier) args.push(this.scene.getPokemonById(m.pokemonId)); @@ -2269,7 +2269,7 @@ export class MovePhase extends BattlePhase { ? new Utils.IntegerHolder(this.targets[0]) : null; if (moveTarget) { - var oldTarget = moveTarget.value; + const oldTarget = moveTarget.value; this.scene.getField(true).filter(p => p !== this.pokemon).forEach(p => applyAbAttrs(RedirectMoveAbAttr, p, null, this.move.moveId, moveTarget)); //Check if this move is immune to being redirected, and restore its target to the intended target if it is. if ((this.pokemon.hasAbilityWithAttr(BlockRedirectAbAttr) || this.move.getMove().getAttrs(BypassRedirectAttr).length)) { @@ -2309,7 +2309,7 @@ export class MovePhase extends BattlePhase { let ppUsed = 1; // Filter all opponents to include only those this move is targeting const targetedOpponents = this.pokemon.getOpponents().filter(o => this.targets.includes(o.getBattlerIndex())); - for (let opponent of targetedOpponents) { + for (const opponent of targetedOpponents) { if (this.move.ppUsed + ppUsed >= this.move.getMovePp()) // If we're already at max PP usage, stop checking break; if (opponent.hasAbilityWithAttr(IncreasePpAbAttr)) // Accounting for abilities like Pressure @@ -2360,7 +2360,7 @@ export class MovePhase extends BattlePhase { // Assume conditions affecting targets only apply to moves with a single target let success = this.move.getMove().applyConditions(this.pokemon, targets[0], this.move.getMove()); - let cancelled = new Utils.BooleanHolder(false); + const cancelled = new Utils.BooleanHolder(false); let failedText = this.move.getMove().getFailedText(this.pokemon, targets[0], this.move.getMove(), cancelled); if (success && this.scene.arena.isMoveWeatherCancelled(this.move.getMove())) success = false; @@ -2386,23 +2386,23 @@ export class MovePhase extends BattlePhase { let healed = false; switch (this.pokemon.status.effect) { - case StatusEffect.PARALYSIS: - if (!this.pokemon.randSeedInt(4)) { - activated = true; - this.cancelled = true; - } - break; - case StatusEffect.SLEEP: - applyMoveAttrs(BypassSleepAttr, this.pokemon, null, this.move.getMove()); - healed = this.pokemon.status.turnCount === this.pokemon.status.cureTurn; - activated = !healed && !this.pokemon.getTag(BattlerTagType.BYPASS_SLEEP); - this.cancelled = activated; - break; - case StatusEffect.FREEZE: - healed = !!this.move.getMove().findAttr(attr => attr instanceof HealStatusEffectAttr && attr.selfTarget && attr.isOfEffect(StatusEffect.FREEZE)) || !this.pokemon.randSeedInt(5); - activated = !healed; - this.cancelled = activated; - break; + case StatusEffect.PARALYSIS: + if (!this.pokemon.randSeedInt(4)) { + activated = true; + this.cancelled = true; + } + break; + case StatusEffect.SLEEP: + applyMoveAttrs(BypassSleepAttr, this.pokemon, null, this.move.getMove()); + healed = this.pokemon.status.turnCount === this.pokemon.status.cureTurn; + activated = !healed && !this.pokemon.getTag(BattlerTagType.BYPASS_SLEEP); + this.cancelled = activated; + break; + case StatusEffect.FREEZE: + healed = !!this.move.getMove().findAttr(attr => attr instanceof HealStatusEffectAttr && attr.selfTarget && attr.isOfEffect(StatusEffect.FREEZE)) || !this.pokemon.randSeedInt(5); + activated = !healed; + this.cancelled = activated; + break; } if (activated) { @@ -2515,7 +2515,7 @@ export class MoveEffectPhase extends PokemonPhase { // Move animation only needs one target new MoveAnim(this.move.getMove().id as Moves, user, this.getTarget()?.getBattlerIndex()).play(this.scene, () => { - for (let target of targets) { + for (const target of targets) { if (!targetHitChecks[target.getBattlerIndex()]) { user.turnData.hitCount = 1; user.turnData.hitsLeft = 1; @@ -2555,17 +2555,17 @@ export class MoveEffectPhase extends PokemonPhase { } Utils.executeIf(!isProtected && !chargeEffect, () => applyFilteredMoveAttrs((attr: MoveAttr) => attr instanceof MoveEffectAttr && (attr as MoveEffectAttr).trigger === MoveEffectTrigger.HIT && (!attr.firstHitOnly || firstHit), user, target, this.move.getMove()).then(() => { - return Utils.executeIf(!target.isFainted() || target.canApplyAbility(), () => applyPostDefendAbAttrs(PostDefendAbAttr, target, user, this.move, hitResult).then(() => { - if (!user.isPlayer() && this.move.getMove() instanceof AttackMove) - user.scene.applyShuffledModifiers(this.scene, EnemyAttackStatusEffectChanceModifier, false, target); - })).then(() => { - applyPostAttackAbAttrs(PostAttackAbAttr, user, target, this.move, hitResult).then(() => { - if (this.move.getMove() instanceof AttackMove) - this.scene.applyModifiers(ContactHeldItemTransferChanceModifier, this.player, user, target.getFieldIndex()); - resolve(); - }); + return Utils.executeIf(!target.isFainted() || target.canApplyAbility(), () => applyPostDefendAbAttrs(PostDefendAbAttr, target, user, this.move, hitResult).then(() => { + if (!user.isPlayer() && this.move.getMove() instanceof AttackMove) + user.scene.applyShuffledModifiers(this.scene, EnemyAttackStatusEffectChanceModifier, false, target); + })).then(() => { + applyPostAttackAbAttrs(PostAttackAbAttr, user, target, this.move, hitResult).then(() => { + if (this.move.getMove() instanceof AttackMove) + this.scene.applyModifiers(ContactHeldItemTransferChanceModifier, this.player, user, target.getFieldIndex()); + resolve(); }); - }) + }); + }) ).then(() => resolve()); }); } else @@ -2740,7 +2740,7 @@ export class MoveAnimTestPhase extends BattlePhase { else this.playMoveAnim(moveQueue, true); }); - }); + }); }); } } @@ -2820,15 +2820,15 @@ export class StatChangePhase extends PokemonPhase { const end = () => { if (this.showMessage) { const messages = this.getStatChangeMessages(filteredStats, levels.value, relLevels); - for (let message of messages) + for (const message of messages) this.scene.queueMessage(message); } - for (let stat of filteredStats) + for (const stat of filteredStats) pokemon.summonData.battleStats[stat] = Math.max(Math.min(pokemon.summonData.battleStats[stat] + levels.value, 6), -6); if (levels.value > 0 && this.canBeCopied) - for (let opponent of pokemon.getOpponents()) + for (const opponent of pokemon.getOpponents()) applyAbAttrs(StatChangeCopyAbAttr, opponent, null, this.stats, levels.value); applyPostStatChangeAbAttrs(PostStatChangeAbAttr, pokemon, filteredStats, this.levels, this.selfTarget); @@ -3044,15 +3044,15 @@ export class PostTurnStatusEffectPhase extends PokemonPhase { this.scene.queueMessage(getPokemonMessage(pokemon, getStatusEffectActivationText(pokemon.status.effect))); let damage: integer = 0; switch (pokemon.status.effect) { - case StatusEffect.POISON: - damage = Math.max(pokemon.getMaxHp() >> 3, 1); - break; - case StatusEffect.TOXIC: - damage = Math.max(Math.floor((pokemon.getMaxHp() / 16) * pokemon.status.turnCount), 1); - break; - case StatusEffect.BURN: - damage = Math.max(pokemon.getMaxHp() >> 4, 1); - break; + case StatusEffect.POISON: + damage = Math.max(pokemon.getMaxHp() >> 3, 1); + break; + case StatusEffect.TOXIC: + damage = Math.max(Math.floor((pokemon.getMaxHp() / 16) * pokemon.status.turnCount), 1); + break; + case StatusEffect.BURN: + damage = Math.max(pokemon.getMaxHp() >> 4, 1); + break; } if (damage) { // Set preventEndure flag to avoid pokemon surviving thanks to focus band, sturdy, endure ... @@ -3136,16 +3136,16 @@ export class DamagePhase extends PokemonPhase { applyDamage() { switch (this.damageResult) { - case HitResult.EFFECTIVE: - this.scene.playSound('hit'); - break; - case HitResult.SUPER_EFFECTIVE: - case HitResult.ONE_HIT_KO: - this.scene.playSound('hit_strong'); - break; - case HitResult.NOT_VERY_EFFECTIVE: - this.scene.playSound('hit_weak'); - break; + case HitResult.EFFECTIVE: + this.scene.playSound('hit'); + break; + case HitResult.SUPER_EFFECTIVE: + case HitResult.ONE_HIT_KO: + this.scene.playSound('hit_strong'); + break; + case HitResult.NOT_VERY_EFFECTIVE: + this.scene.playSound('hit_weak'); + break; } if (this.amount) @@ -3168,28 +3168,28 @@ export class DamagePhase extends PokemonPhase { end() { switch (this.scene.currentBattle.battleSpec) { - case BattleSpec.FINAL_BOSS: - const pokemon = this.getPokemon(); - if (pokemon instanceof EnemyPokemon && pokemon.isBoss() && !pokemon.formIndex && pokemon.bossSegmentIndex < 1) { - this.scene.fadeOutBgm(Utils.fixedInt(2000), false); - this.scene.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].firstStageWin, pokemon.species.name, null, () => { - this.scene.addEnemyModifier(getModifierType(modifierTypes.MINI_BLACK_HOLE).newModifier(pokemon) as PersistentModifier, false, true); - pokemon.generateAndPopulateMoveset(1); - this.scene.setFieldScale(0.75); - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); - this.scene.currentBattle.double = true; - const availablePartyMembers = this.scene.getParty().filter(p => !p.isFainted()); - if (availablePartyMembers.length > 1) { - this.scene.pushPhase(new ToggleDoublePositionPhase(this.scene, true)); - if (!availablePartyMembers[1].isOnField()) - this.scene.pushPhase(new SummonPhase(this.scene, 1)); - } + case BattleSpec.FINAL_BOSS: + const pokemon = this.getPokemon(); + if (pokemon instanceof EnemyPokemon && pokemon.isBoss() && !pokemon.formIndex && pokemon.bossSegmentIndex < 1) { + this.scene.fadeOutBgm(Utils.fixedInt(2000), false); + this.scene.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].firstStageWin, pokemon.species.name, null, () => { + this.scene.addEnemyModifier(getModifierType(modifierTypes.MINI_BLACK_HOLE).newModifier(pokemon) as PersistentModifier, false, true); + pokemon.generateAndPopulateMoveset(1); + this.scene.setFieldScale(0.75); + this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeManualTrigger, false); + this.scene.currentBattle.double = true; + const availablePartyMembers = this.scene.getParty().filter(p => !p.isFainted()); + if (availablePartyMembers.length > 1) { + this.scene.pushPhase(new ToggleDoublePositionPhase(this.scene, true)); + if (!availablePartyMembers[1].isOnField()) + this.scene.pushPhase(new SummonPhase(this.scene, 1)); + } - super.end(); - }); - return; - } - break; + super.end(); + }); + return; + } + break; } super.end(); @@ -3242,7 +3242,7 @@ export class FaintPhase extends PokemonPhase { const pvmove = allMoves[pokemon.turnData.attacksReceived[0].move]; const pvattrs = pvmove.getAttrs(PostVictoryStatChangeAttr) as PostVictoryStatChangeAttr[]; if (pvattrs.length) { - for (let pvattr of pvattrs) + for (const pvattr of pvattrs) pvattr.applyPostVictory(defeatSource, defeatSource, pvmove); } } @@ -3310,19 +3310,19 @@ export class FaintPhase extends PokemonPhase { tryOverrideForBattleSpec(): boolean { switch (this.scene.currentBattle.battleSpec) { - case BattleSpec.FINAL_BOSS: - if (!this.player) { - const enemy = this.getPokemon(); - if (enemy.formIndex) - this.scene.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].secondStageWin, enemy.species.name, null, () => this.doFaint()); - else { - // Final boss' HP threshold has been bypassed; cancel faint and force check for 2nd phase - enemy.hp++; - this.scene.unshiftPhase(new DamagePhase(this.scene, enemy.getBattlerIndex(), 0, HitResult.OTHER)); - this.end(); - } - return true; + case BattleSpec.FINAL_BOSS: + if (!this.player) { + const enemy = this.getPokemon(); + if (enemy.formIndex) + this.scene.ui.showDialogue(battleSpecDialogue[BattleSpec.FINAL_BOSS].secondStageWin, enemy.species.name, null, () => this.doFaint()); + else { + // Final boss' HP threshold has been bypassed; cancel faint and force check for 2nd phase + enemy.hp++; + this.scene.unshiftPhase(new DamagePhase(this.scene, enemy.getBattlerIndex(), 0, HitResult.OTHER)); + this.end(); } + return true; + } } return false; @@ -3352,7 +3352,7 @@ export class VictoryPhase extends PokemonPhase { let expValue = this.getPokemon().getExpValue(); if (this.scene.currentBattle.battleType === BattleType.TRAINER) expValue = Math.floor(expValue * 1.5); - for (let partyMember of nonFaintedPartyMembers) { + for (const partyMember of nonFaintedPartyMembers) { const pId = partyMember.id; const participated = participantIds.has(pId); if (participated) @@ -3461,7 +3461,7 @@ export class TrainerVictoryPhase extends BattlePhase { this.scene.unshiftPhase(new MoneyRewardPhase(this.scene, this.scene.currentBattle.trainer.config.moneyMultiplier)); const modifierRewardFuncs = this.scene.currentBattle.trainer.config.modifierRewardFuncs; - for (let modifierRewardFunc of modifierRewardFuncs) + for (const modifierRewardFunc of modifierRewardFuncs) this.scene.unshiftPhase(new ModifierRewardPhase(this.scene, modifierRewardFunc)); const trainerType = this.scene.currentBattle.trainer.config.trainerType; @@ -3542,7 +3542,7 @@ export class ModifierRewardPhase extends BattlePhase { this.scene.playSound('item_fanfare'); this.scene.ui.showText(`You received\n${newModifier.type.name}!`, null, () => resolve(), null, true); }); - }) + }); } } @@ -3558,13 +3558,13 @@ export class GameOverModifierRewardPhase extends ModifierRewardPhase { this.scene.playSound('level_up_fanfare'); this.scene.ui.setMode(Mode.MESSAGE); this.scene.ui.fadeIn(250).then(() => { - this.scene.ui.showText(`You received\n${newModifier.type.name}!`, null, () => { - this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); - resolve(); - }, null, true, 1500); + this.scene.ui.showText(`You received\n${newModifier.type.name}!`, null, () => { + this.scene.time.delayedCall(1500, () => this.scene.arenaBg.setVisible(true)); + resolve(); + }, null, true, 1500); }); }); - }) + }); } } @@ -3587,7 +3587,7 @@ export class RibbonModifierRewardPhase extends ModifierRewardPhase { resolve(); }, null, true, 1500); }); - }) + }); } } @@ -3607,10 +3607,10 @@ export class GameOverPhase extends BattlePhase { if (this.victory || !this.scene.enableRetries) this.handleGameOver(); else { - this.scene.ui.showText(`Would you like to retry from the start of the battle?`, null, () => { + this.scene.ui.showText('Would you like to retry from the start of the battle?', null, () => { this.scene.ui.setMode(Mode.CONFIRM, () => { this.scene.ui.fadeOut(1250).then(() => { - this.scene.reset(); + this.scene.reset(); this.scene.clearPhaseQueue(); this.scene.gameData.loadSession(this.scene, this.scene.sessionSlotId).then(() => { this.scene.pushPhase(new EncounterPhase(this.scene, true)); @@ -3644,7 +3644,7 @@ export class GameOverPhase extends BattlePhase { if (this.scene.gameMode.isClassic) { firstClear = this.scene.validateAchv(achvs.CLASSIC_VICTORY); this.scene.gameData.gameStats.sessionsWon++; - for (let pokemon of this.scene.getParty()) { + for (const pokemon of this.scene.getParty()) { this.awardRibbon(pokemon); if (pokemon.species.getRootSpeciesId() != pokemon.species.getRootSpeciesId(true)) { @@ -3668,14 +3668,14 @@ export class GameOverPhase extends BattlePhase { if (newClear) this.handleUnlocks(); if (this.victory && newClear) { - for (let species of this.firstRibbons) + for (const species of this.firstRibbons) this.scene.unshiftPhase(new RibbonModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PLUS, species)); if (!firstClear) this.scene.unshiftPhase(new GameOverModifierRewardPhase(this.scene, modifierTypes.VOUCHER_PREMIUM)); } this.scene.pushPhase(new PostGameOverPhase(this.scene, endCardPhase)); this.end(); - } + }; if (this.victory && this.scene.gameMode.isClassic) { this.scene.ui.fadeIn(500).then(() => { @@ -3703,8 +3703,8 @@ export class GameOverPhase extends BattlePhase { if (this.victory) { if (!Utils.isLocal) { Utils.apiFetch(`savedata/newclear?slot=${this.scene.sessionSlotId}`, true) - .then(response => response.json()) - .then(newClear => doGameOver(newClear)); + .then(response => response.json()) + .then(newClear => doGameOver(newClear)); } else { this.scene.gameData.offlineNewClear(this.scene).then(result => { doGameOver(result); @@ -3726,7 +3726,7 @@ export class GameOverPhase extends BattlePhase { } awardRibbon(pokemon: Pokemon, forStarter: boolean = false): void { - const speciesId = getPokemonSpecies(pokemon.species.speciesId) + const speciesId = getPokemonSpecies(pokemon.species.speciesId); const speciesRibbonCount = this.scene.gameData.incrementRibbonCount(speciesId, forStarter); // first time classic win, award voucher if (speciesRibbonCount === 1) { @@ -3879,7 +3879,7 @@ export class ExpPhase extends PlayerPartyMemberPokemonPhase { super.start(); const pokemon = this.getPokemon(); - let exp = new Utils.NumberHolder(this.expValue); + const exp = new Utils.NumberHolder(this.expValue); this.scene.applyModifiers(ExpBoosterModifier, true, exp); exp.value = Math.floor(exp.value); this.scene.ui.showText(i18next.t('battle:expGain', { pokemonName: pokemon.name, exp: exp.value }), null, () => { @@ -3907,7 +3907,7 @@ export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { super.start(); const pokemon = this.getPokemon(); - let exp = new Utils.NumberHolder(this.expValue); + const exp = new Utils.NumberHolder(this.expValue); this.scene.applyModifiers(ExpBoosterModifier, true, exp); exp.value = Math.floor(exp.value); @@ -3921,20 +3921,20 @@ export class ShowPartyExpBarPhase extends PlayerPartyMemberPokemonPhase { pokemon.updateInfo(); if (this.scene.expParty === 2) { // 2 - Skip - no level up frame nor message - this.end(); + this.end(); } else if (this.scene.expParty === 1) { // 1 - Only level up - we display the level up in the small frame instead of a message if (newLevel > lastLevel) { // this means if we level up // instead of displaying the exp gain in the small frame, we display the new level // we use the same method for mode 0 & 1, by giving a parameter saying to display the exp or the level this.scene.partyExpBar.showPokemonExp(pokemon, exp.value, this.scene.expParty === 1, newLevel).then(() => { - setTimeout(() => this.end(), 800 / Math.pow(2, this.scene.expGainsSpeed)); + setTimeout(() => this.end(), 800 / Math.pow(2, this.scene.expGainsSpeed)); }); } else { this.end(); } } else if (this.scene.expGainsSpeed < 3) { this.scene.partyExpBar.showPokemonExp(pokemon, exp.value, this.scene.expParty === 1, newLevel).then(() => { - setTimeout(() => this.end(), 500 / Math.pow(2, this.scene.expGainsSpeed)); + setTimeout(() => this.end(), 500 / Math.pow(2, this.scene.expGainsSpeed)); }); } else { this.end(); @@ -3990,7 +3990,7 @@ export class LevelUpPhase extends PlayerPartyMemberPokemonPhase { } if (this.level <= 100) { const levelMoves = this.getPokemon().getLevelMoves(this.lastLevel + 1); - for (let lm of levelMoves) + for (const lm of levelMoves) this.scene.unshiftPhase(new LearnMovePhase(this.scene, this.partyMemberIndex, lm[1])); } if (!pokemon.pauseEvolutions) { @@ -4042,7 +4042,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { }, messageMode === Mode.EVOLUTION_SCENE ? 1000 : null, true); }); }); - }); + }); } else { this.scene.ui.setMode(messageMode).then(() => { this.scene.ui.showText(i18next.t('battle:learnMovePrompt', { pokemonName: pokemon.name, moveName: move.name }), null, () => { @@ -4108,7 +4108,7 @@ export class BerryPhase extends CommonAnimPhase { if (cancelled.value) pokemon.scene.queueMessage(getPokemonMessage(pokemon, ' is too\nnervous to eat berries!')); else if ((berryModifiers = this.scene.applyModifiers(BerryModifier, this.player, pokemon) as BerryModifier[])) { - for (let berryModifier of berryModifiers) { + for (const berryModifier of berryModifiers) { if (berryModifier.consumed) { if (!--berryModifier.stackCount) this.scene.removeModifier(berryModifier); @@ -4191,11 +4191,11 @@ export class PokemonHealPhase extends CommonAnimPhase { } pokemon.updateInfo().then(() => super.end()); } else if (this.healStatus && !this.revive && pokemon.status) { - lastStatusEffect = pokemon.status.effect; - pokemon.resetStatus(); - pokemon.updateInfo().then(() => super.end()); + lastStatusEffect = pokemon.status.effect; + pokemon.resetStatus(); + pokemon.updateInfo().then(() => super.end()); } else if (this.showFullHpMessage) - this.message = getPokemonMessage(pokemon, `'s\nHP is full!`); + this.message = getPokemonMessage(pokemon, '\'s\nHP is full!'); if (this.message) this.scene.queueMessage(this.message); @@ -4543,50 +4543,50 @@ export class SelectModifierPhase extends BattlePhase { let modifierType: ModifierType; let cost: integer; switch (rowCursor) { - case 0: - if (!cursor) { - const rerollCost = this.getRerollCost(typeOptions, this.scene.lockModifierTiers); - if (this.scene.money < rerollCost) { - this.scene.ui.playError(); - return false; - } else { - this.scene.unshiftPhase(new SelectModifierPhase(this.scene, this.rerollCount + 1, typeOptions.map(o => o.type.tier))); - this.scene.ui.clearText(); - this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); - this.scene.money -= rerollCost; - this.scene.updateMoneyText(); - this.scene.playSound('buy'); - } - } else if (cursor === 1) { - this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.MODIFIER_TRANSFER, -1, (fromSlotIndex: integer, itemIndex: integer, toSlotIndex: integer) => { - if (toSlotIndex !== undefined && fromSlotIndex < 6 && toSlotIndex < 6 && fromSlotIndex !== toSlotIndex && itemIndex > -1) { - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)).then(() => { - const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier - && (m as PokemonHeldItemModifier).getTransferrable(true) && (m as PokemonHeldItemModifier).pokemonId === party[fromSlotIndex].id) as PokemonHeldItemModifier[]; - const itemModifier = itemModifiers[itemIndex]; - this.scene.tryTransferHeldItemModifier(itemModifier, party[toSlotIndex], true, true); - }); - } else - this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); - }, PartyUiHandler.FilterItemMaxStacks); - } else { - this.scene.lockModifierTiers = !this.scene.lockModifierTiers; - const uiHandler = this.scene.ui.getHandler() as ModifierSelectUiHandler; - uiHandler.setRerollCost(this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); - uiHandler.updateLockRaritiesText(); - uiHandler.updateRerollCostText(); + case 0: + if (!cursor) { + const rerollCost = this.getRerollCost(typeOptions, this.scene.lockModifierTiers); + if (this.scene.money < rerollCost) { + this.scene.ui.playError(); return false; + } else { + this.scene.unshiftPhase(new SelectModifierPhase(this.scene, this.rerollCount + 1, typeOptions.map(o => o.type.tier))); + this.scene.ui.clearText(); + this.scene.ui.setMode(Mode.MESSAGE).then(() => super.end()); + this.scene.money -= rerollCost; + this.scene.updateMoneyText(); + this.scene.playSound('buy'); } - return true; - case 1: - modifierType = typeOptions[cursor].type; - break; - default: - const shopOptions = getPlayerShopModifierTypeOptionsForWave(this.scene.currentBattle.waveIndex, this.scene.getWaveMoneyAmount(1)); - const shopOption = shopOptions[rowCursor > 2 || shopOptions.length <= SHOP_OPTIONS_ROW_LIMIT ? cursor : cursor + SHOP_OPTIONS_ROW_LIMIT]; - modifierType = shopOption.type; - cost = shopOption.cost; - break; + } else if (cursor === 1) { + this.scene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.MODIFIER_TRANSFER, -1, (fromSlotIndex: integer, itemIndex: integer, toSlotIndex: integer) => { + if (toSlotIndex !== undefined && fromSlotIndex < 6 && toSlotIndex < 6 && fromSlotIndex !== toSlotIndex && itemIndex > -1) { + this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)).then(() => { + const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + && (m as PokemonHeldItemModifier).getTransferrable(true) && (m as PokemonHeldItemModifier).pokemonId === party[fromSlotIndex].id) as PokemonHeldItemModifier[]; + const itemModifier = itemModifiers[itemIndex]; + this.scene.tryTransferHeldItemModifier(itemModifier, party[toSlotIndex], true, true); + }); + } else + this.scene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer(), typeOptions, modifierSelectCallback, this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); + }, PartyUiHandler.FilterItemMaxStacks); + } else { + this.scene.lockModifierTiers = !this.scene.lockModifierTiers; + const uiHandler = this.scene.ui.getHandler() as ModifierSelectUiHandler; + uiHandler.setRerollCost(this.getRerollCost(typeOptions, this.scene.lockModifierTiers)); + uiHandler.updateLockRaritiesText(); + uiHandler.updateRerollCostText(); + return false; + } + return true; + case 1: + modifierType = typeOptions[cursor].type; + break; + default: + const shopOptions = getPlayerShopModifierTypeOptionsForWave(this.scene.currentBattle.waveIndex, this.scene.getWaveMoneyAmount(1)); + const shopOption = shopOptions[rowCursor > 2 || shopOptions.length <= SHOP_OPTIONS_ROW_LIMIT ? cursor : cursor + SHOP_OPTIONS_ROW_LIMIT]; + modifierType = shopOption.type; + cost = shopOption.cost; + break; } if (cost && this.scene.money < cost) { @@ -4638,8 +4638,8 @@ export class SelectModifierPhase extends BattlePhase { const isPpRestoreModifier = (modifierType instanceof PokemonPpRestoreModifierType || modifierType instanceof PokemonPpUpModifierType); const partyUiMode = isMoveModifier ? PartyUiMode.MOVE_MODIFIER : isTmModifier ? PartyUiMode.TM_MODIFIER - : isRememberMoveModifier ? PartyUiMode.REMEMBER_MOVE_MODIFIER - : PartyUiMode.MODIFIER; + : isRememberMoveModifier ? PartyUiMode.REMEMBER_MOVE_MODIFIER + : PartyUiMode.MODIFIER; const tmMoveId = isTmModifier ? (modifierType as TmModifierType).moveId : undefined; @@ -4649,7 +4649,7 @@ export class SelectModifierPhase extends BattlePhase { const modifier = !isMoveModifier ? !isRememberMoveModifier ? modifierType.newModifier(party[slotIndex]) - : modifierType.newModifier(party[slotIndex], option as integer) + : modifierType.newModifier(party[slotIndex], option as integer) : modifierType.newModifier(party[slotIndex], option - PartyOption.MOVE_1); applyModifier(modifier, true); }); @@ -4677,7 +4677,7 @@ export class SelectModifierPhase extends BattlePhase { let baseValue = 0; if (lockRarities) { const tierValues = [ 50, 125, 300, 750, 2000 ]; - for (let opt of typeOptions) + for (const opt of typeOptions) baseValue += tierValues[opt.type.tier]; } else baseValue = 250; @@ -4706,13 +4706,13 @@ export class EggLapsePhase extends Phase { super.start(); const eggsToHatch: Egg[] = this.scene.gameData.eggs.filter((egg: Egg) => { - return --egg.hatchWaves < 1 + return --egg.hatchWaves < 1; }); if (eggsToHatch.length) { this.scene.queueMessage(i18next.t('battle:eggHatching')); - for (let egg of eggsToHatch) + for (const egg of eggsToHatch) this.scene.unshiftPhase(new EggHatchPhase(this.scene, egg)); } @@ -4762,7 +4762,7 @@ export class PartyStatusCurePhase extends BattlePhase { start() { super.start(); - for (let pokemon of this.scene.getParty()) { + for (const pokemon of this.scene.getParty()) { if (!pokemon.isOnField() || pokemon === this.user) { pokemon.resetStatus(false); pokemon.updateInfo(true); @@ -4798,10 +4798,10 @@ export class PartyHealPhase extends BattlePhase { if (bgmPlaying) this.scene.fadeOutBgm(1000, false); this.scene.ui.fadeOut(1000).then(() => { - for (let pokemon of this.scene.getParty()) { + for (const pokemon of this.scene.getParty()) { pokemon.hp = pokemon.getMaxHp(); pokemon.resetStatus(); - for (let move of pokemon.moveset) + for (const move of pokemon.moveset) move.ppUsed = 0; pokemon.updateInfo(true); } @@ -4874,9 +4874,9 @@ export class TrainerMessageTestPhase extends BattlePhase { start() { super.start(); - let testMessages: string[] = []; + const testMessages: string[] = []; - for (let t of Object.keys(trainerConfigs)) { + for (const t of Object.keys(trainerConfigs)) { const type = parseInt(t); if (this.trainerTypes.length && !this.trainerTypes.find(tt => tt === type as TrainerType)) continue; @@ -4888,7 +4888,7 @@ export class TrainerMessageTestPhase extends BattlePhase { }); } - for (let message of testMessages) + for (const message of testMessages) this.scene.pushPhase(new TestMessagePhase(this.scene, message)); this.end(); diff --git a/src/pipelines/field-sprite.ts b/src/pipelines/field-sprite.ts index a5b66081028..7a01f8bfdcd 100644 --- a/src/pipelines/field-sprite.ts +++ b/src/pipelines/field-sprite.ts @@ -1,6 +1,6 @@ -import BattleScene from "../battle-scene"; -import { TerrainType, getTerrainColor } from "../data/terrain"; -import * as Utils from "../utils"; +import BattleScene from '../battle-scene'; +import { TerrainType, getTerrainColor } from '../data/terrain'; +import * as Utils from '../utils'; const spriteFragShader = ` #ifdef GL_FRAGMENT_PRECISION_HIGH @@ -207,47 +207,47 @@ void main() { `; export default class FieldSpritePipeline extends Phaser.Renderer.WebGL.Pipelines.MultiPipeline { - constructor(game: Phaser.Game, config?: Phaser.Types.Renderer.WebGL.WebGLPipelineConfig) { - super(config || { - game: game, - name: 'field-sprite', - fragShader: spriteFragShader, - vertShader: spriteVertShader - }); - } + constructor(game: Phaser.Game, config?: Phaser.Types.Renderer.WebGL.WebGLPipelineConfig) { + super(config || { + game: game, + name: 'field-sprite', + fragShader: spriteFragShader, + vertShader: spriteVertShader + }); + } - onPreRender(): void { - this.set1f('time', 0); - this.set1i('ignoreTimeTint', 0); - this.set1f('terrainColorRatio', 0); - this.set3fv('terrainColor', [ 0, 0, 0 ]); - } + onPreRender(): void { + this.set1f('time', 0); + this.set1i('ignoreTimeTint', 0); + this.set1f('terrainColorRatio', 0); + this.set3fv('terrainColor', [ 0, 0, 0 ]); + } - onBind(gameObject: Phaser.GameObjects.GameObject): void { - super.onBind(); + onBind(gameObject: Phaser.GameObjects.GameObject): void { + super.onBind(); - const sprite = gameObject as Phaser.GameObjects.Sprite | Phaser.GameObjects.NineSlice; - const scene = sprite.scene as BattleScene; + const sprite = gameObject as Phaser.GameObjects.Sprite | Phaser.GameObjects.NineSlice; + const scene = sprite.scene as BattleScene; - const data = sprite.pipelineData; - const ignoreTimeTint = data['ignoreTimeTint'] as boolean; - const terrainColorRatio = data['terrainColorRatio'] as number || 0; + const data = sprite.pipelineData; + const ignoreTimeTint = data['ignoreTimeTint'] as boolean; + const terrainColorRatio = data['terrainColorRatio'] as number || 0; - let time = scene.currentBattle?.waveIndex - ? ((scene.currentBattle.waveIndex + scene.waveCycleOffset) % 40) / 40 // ((new Date().getSeconds() * 1000 + new Date().getMilliseconds()) % 10000) / 10000 - : Utils.getCurrentTime(); - this.set1f('time', time); - this.set1i('ignoreTimeTint', ignoreTimeTint ? 1 : 0); - this.set1i('isOutside', scene.arena.isOutside() ? 1 : 0); - this.set3fv('dayTint', scene.arena.getDayTint().map(c => c / 255)); - this.set3fv('duskTint', scene.arena.getDuskTint().map(c => c / 255)); - this.set3fv('nightTint', scene.arena.getNightTint().map(c => c / 255)); - this.set3fv('terrainColor', getTerrainColor(scene.arena.terrain?.terrainType || TerrainType.NONE).map(c => c / 255)); - this.set1f('terrainColorRatio', terrainColorRatio); - } + const time = scene.currentBattle?.waveIndex + ? ((scene.currentBattle.waveIndex + scene.waveCycleOffset) % 40) / 40 // ((new Date().getSeconds() * 1000 + new Date().getMilliseconds()) % 10000) / 10000 + : Utils.getCurrentTime(); + this.set1f('time', time); + this.set1i('ignoreTimeTint', ignoreTimeTint ? 1 : 0); + this.set1i('isOutside', scene.arena.isOutside() ? 1 : 0); + this.set3fv('dayTint', scene.arena.getDayTint().map(c => c / 255)); + this.set3fv('duskTint', scene.arena.getDuskTint().map(c => c / 255)); + this.set3fv('nightTint', scene.arena.getNightTint().map(c => c / 255)); + this.set3fv('terrainColor', getTerrainColor(scene.arena.terrain?.terrainType || TerrainType.NONE).map(c => c / 255)); + this.set1f('terrainColorRatio', terrainColorRatio); + } - onBatch(gameObject: Phaser.GameObjects.GameObject): void { - if (gameObject) - this.flush(); - } -} \ No newline at end of file + onBatch(gameObject: Phaser.GameObjects.GameObject): void { + if (gameObject) + this.flush(); + } +} diff --git a/src/pipelines/invert.ts b/src/pipelines/invert.ts index 21a2a943932..1faace7ad80 100644 --- a/src/pipelines/invert.ts +++ b/src/pipelines/invert.ts @@ -1,4 +1,4 @@ -import { Game } from "phaser"; +import { Game } from 'phaser'; const fragShader = ` precision mediump float; @@ -14,14 +14,14 @@ void main() `; export default class InvertPostFX extends Phaser.Renderer.WebGL.Pipelines.PostFXPipeline { - constructor (game: Game) { - super({ - game, - name: 'InvertPostFX', - fragShader, - uniforms: [ - 'uMainSampler' - ] - } as Phaser.Types.Renderer.WebGL.WebGLPipelineConfig); - } -} \ No newline at end of file + constructor (game: Game) { + super({ + game, + name: 'InvertPostFX', + fragShader, + uniforms: [ + 'uMainSampler' + ] + } as Phaser.Types.Renderer.WebGL.WebGLPipelineConfig); + } +} diff --git a/src/pipelines/sprite.ts b/src/pipelines/sprite.ts index 534c8d42d54..a2de8cb9e39 100644 --- a/src/pipelines/sprite.ts +++ b/src/pipelines/sprite.ts @@ -1,9 +1,9 @@ -import BattleScene from "../battle-scene"; +import BattleScene from '../battle-scene'; import { variantColorCache, variantData } from '#app/data/variant'; -import Pokemon from "../field/pokemon"; -import Trainer from "../field/trainer"; -import FieldSpritePipeline from "./field-sprite"; -import * as Utils from "../utils"; +import Pokemon from '../field/pokemon'; +import Trainer from '../field/trainer'; +import FieldSpritePipeline from './field-sprite'; +import * as Utils from '../utils'; const spriteFragShader = ` #ifdef GL_FRAGMENT_PRECISION_HIGH @@ -313,161 +313,161 @@ void main() `; export default class SpritePipeline extends FieldSpritePipeline { - private _tone: number[]; + private _tone: number[]; - constructor(game: Phaser.Game) { - super(game, { - game: game, - name: 'sprite', - fragShader: spriteFragShader, - vertShader: spriteVertShader - }); + constructor(game: Phaser.Game) { + super(game, { + game: game, + name: 'sprite', + fragShader: spriteFragShader, + vertShader: spriteVertShader + }); - this._tone = [ 0, 0, 0, 0 ]; + this._tone = [ 0, 0, 0, 0 ]; + } + + onPreRender(): void { + super.onPreRender(); + + this.set1f('teraTime', 0); + this.set3fv('teraColor', [ 0, 0, 0 ]); + this.set1i('hasShadow', 0); + this.set1i('yCenter', 0); + this.set2f('relPosition', 0, 0); + this.set2f('texFrameUv', 0, 0); + this.set2f('size', 0, 0); + this.set2f('texSize', 0, 0); + this.set1f('yOffset', 0); + this.set4fv('tone', this._tone); + } + + onBind(gameObject: Phaser.GameObjects.GameObject): void { + super.onBind(gameObject); + + const sprite = (gameObject as Phaser.GameObjects.Sprite); + + const data = sprite.pipelineData; + const tone = data['tone'] as number[]; + const teraColor = data['teraColor'] as integer[] ?? [ 0, 0, 0 ]; + const hasShadow = data['hasShadow'] as boolean; + const ignoreFieldPos = data['ignoreFieldPos'] as boolean; + const ignoreOverride = data['ignoreOverride'] as boolean; + + const isEntityObj = sprite.parentContainer instanceof Pokemon || sprite.parentContainer instanceof Trainer; + const field = isEntityObj ? sprite.parentContainer.parentContainer : sprite.parentContainer; + const position = isEntityObj + ? [ sprite.parentContainer.x, sprite.parentContainer.y ] + : [ sprite.x, sprite.y ]; + if (field) { + position[0] += field.x / field.scale; + position[1] += field.y / field.scale; } - - onPreRender(): void { - super.onPreRender(); - - this.set1f('teraTime', 0); - this.set3fv('teraColor', [ 0, 0, 0 ]); - this.set1i('hasShadow', 0); - this.set1i('yCenter', 0); - this.set2f('relPosition', 0, 0); - this.set2f('texFrameUv', 0, 0); - this.set2f('size', 0, 0); - this.set2f('texSize', 0, 0); - this.set1f('yOffset', 0); - this.set4fv('tone', this._tone); - } - - onBind(gameObject: Phaser.GameObjects.GameObject): void { - super.onBind(gameObject); - - const sprite = (gameObject as Phaser.GameObjects.Sprite); - - const data = sprite.pipelineData; - const tone = data['tone'] as number[]; - const teraColor = data['teraColor'] as integer[] ?? [ 0, 0, 0 ]; - const hasShadow = data['hasShadow'] as boolean; - const ignoreFieldPos = data['ignoreFieldPos'] as boolean; - const ignoreOverride = data['ignoreOverride'] as boolean; - - const isEntityObj = sprite.parentContainer instanceof Pokemon || sprite.parentContainer instanceof Trainer; - const field = isEntityObj ? sprite.parentContainer.parentContainer : sprite.parentContainer; - const position = isEntityObj - ? [ sprite.parentContainer.x, sprite.parentContainer.y ] - : [ sprite.x, sprite.y ]; - if (field) { - position[0] += field.x / field.scale; - position[1] += field.y / field.scale; - } - position[0] += -(sprite.width - (sprite.frame.width)) / 2 + sprite.frame.x + (!ignoreFieldPos ? (sprite.x - field.x) : 0); - if (sprite.originY === 0.5) - position[1] += (sprite.height / 2) * ((isEntityObj ? sprite.parentContainer : sprite).scale - 1) + (!ignoreFieldPos ? (sprite.y - field.y) : 0); - this.set1f('teraTime', (this.game.getTime() % 500000) / 500000); - this.set3fv('teraColor', teraColor.map(c => c / 255)); - this.set1i('hasShadow', hasShadow ? 1 : 0); - this.set1i('yCenter', sprite.originY === 0.5 ? 1 : 0); - this.set1f('fieldScale', field?.scale || 1); - this.set2f('relPosition', position[0], position[1]); - this.set2f('texFrameUv', sprite.frame.u0, sprite.frame.v0); - this.set2f('size', sprite.frame.width, sprite.height); - this.set2f('texSize', sprite.texture.source[0].width, sprite.texture.source[0].height); - this.set1f('yOffset', sprite.height - sprite.frame.height * (isEntityObj ? sprite.parentContainer.scale : sprite.scale)); - this.set4fv('tone', tone); - this.bindTexture(this.game.textures.get('tera').source[0].glTexture, 1); + position[0] += -(sprite.width - (sprite.frame.width)) / 2 + sprite.frame.x + (!ignoreFieldPos ? (sprite.x - field.x) : 0); + if (sprite.originY === 0.5) + position[1] += (sprite.height / 2) * ((isEntityObj ? sprite.parentContainer : sprite).scale - 1) + (!ignoreFieldPos ? (sprite.y - field.y) : 0); + this.set1f('teraTime', (this.game.getTime() % 500000) / 500000); + this.set3fv('teraColor', teraColor.map(c => c / 255)); + this.set1i('hasShadow', hasShadow ? 1 : 0); + this.set1i('yCenter', sprite.originY === 0.5 ? 1 : 0); + this.set1f('fieldScale', field?.scale || 1); + this.set2f('relPosition', position[0], position[1]); + this.set2f('texFrameUv', sprite.frame.u0, sprite.frame.v0); + this.set2f('size', sprite.frame.width, sprite.height); + this.set2f('texSize', sprite.texture.source[0].width, sprite.texture.source[0].height); + this.set1f('yOffset', sprite.height - sprite.frame.height * (isEntityObj ? sprite.parentContainer.scale : sprite.scale)); + this.set4fv('tone', tone); + this.bindTexture(this.game.textures.get('tera').source[0].glTexture, 1); - if ((gameObject.scene as BattleScene).fusionPaletteSwaps) { - const spriteColors = ((ignoreOverride && data['spriteColorsBase']) || data['spriteColors'] || []) as number[][]; - const fusionSpriteColors = ((ignoreOverride && data['fusionSpriteColorsBase']) || data['fusionSpriteColors'] || []) as number[][]; + if ((gameObject.scene as BattleScene).fusionPaletteSwaps) { + const spriteColors = ((ignoreOverride && data['spriteColorsBase']) || data['spriteColors'] || []) as number[][]; + const fusionSpriteColors = ((ignoreOverride && data['fusionSpriteColorsBase']) || data['fusionSpriteColors'] || []) as number[][]; - const emptyColors = [ 0, 0, 0, 0 ]; - const flatSpriteColors: integer[] = []; - const flatFusionSpriteColors: integer[] = []; - for (let c = 0; c < 32; c++) { - flatSpriteColors.splice(flatSpriteColors.length, 0, ...(c < spriteColors.length ? spriteColors[c] : emptyColors)); - flatFusionSpriteColors.splice(flatFusionSpriteColors.length, 0, ...(c < fusionSpriteColors.length ? fusionSpriteColors[c] : emptyColors)); - } + const emptyColors = [ 0, 0, 0, 0 ]; + const flatSpriteColors: integer[] = []; + const flatFusionSpriteColors: integer[] = []; + for (let c = 0; c < 32; c++) { + flatSpriteColors.splice(flatSpriteColors.length, 0, ...(c < spriteColors.length ? spriteColors[c] : emptyColors)); + flatFusionSpriteColors.splice(flatFusionSpriteColors.length, 0, ...(c < fusionSpriteColors.length ? fusionSpriteColors[c] : emptyColors)); + } - this.set4iv(`spriteColors`, flatSpriteColors.flat()); - this.set4iv(`fusionSpriteColors`, flatFusionSpriteColors.flat()); - } + this.set4iv('spriteColors', flatSpriteColors.flat()); + this.set4iv('fusionSpriteColors', flatFusionSpriteColors.flat()); } + } - onBatch(gameObject: Phaser.GameObjects.GameObject): void { - if (gameObject) { - const sprite = (gameObject as Phaser.GameObjects.Sprite); - const data = sprite.pipelineData; + onBatch(gameObject: Phaser.GameObjects.GameObject): void { + if (gameObject) { + const sprite = (gameObject as Phaser.GameObjects.Sprite); + const data = sprite.pipelineData; - const variant: integer = data.hasOwnProperty('variant') - ? data['variant'] - : sprite.parentContainer instanceof Pokemon ? sprite.parentContainer.variant - : 0; - let variantColors; + const variant: integer = data.hasOwnProperty('variant') + ? data['variant'] + : sprite.parentContainer instanceof Pokemon ? sprite.parentContainer.variant + : 0; + let variantColors; - const emptyColors = [ 0, 0, 0, 0 ]; - const flatBaseColors: integer[] = []; - const flatVariantColors: number[] = []; + const emptyColors = [ 0, 0, 0, 0 ]; + const flatBaseColors: integer[] = []; + const flatVariantColors: number[] = []; - if ((sprite.parentContainer instanceof Pokemon ? sprite.parentContainer.shiny : !!data['shiny']) + if ((sprite.parentContainer instanceof Pokemon ? sprite.parentContainer.shiny : !!data['shiny']) && (variantColors = variantColorCache[sprite.parentContainer instanceof Pokemon ? sprite.parentContainer.getSprite().texture.key : data['spriteKey']]) && variantColors.hasOwnProperty(variant)) { - const baseColors = Object.keys(variantColors[variant]); - for (let c = 0; c < 32; c++) { - if (c < baseColors.length) { - const baseColor = Array.from(Object.values(Utils.rgbHexToRgba(baseColors[c]))); - const variantColor = Array.from(Object.values(Utils.rgbHexToRgba(variantColors[variant][baseColors[c]]))); - flatBaseColors.splice(flatBaseColors.length, 0, ...baseColor); - flatVariantColors.splice(flatVariantColors.length, 0, ...variantColor.map(c => c / 255.0)); - } else { - flatBaseColors.splice(flatBaseColors.length, 0, ...emptyColors); - flatVariantColors.splice(flatVariantColors.length, 0, ...emptyColors); - } - } - } else { - for (let c = 0; c < 32; c++) { - flatBaseColors.splice(flatBaseColors.length, 0, ...emptyColors); - flatVariantColors.splice(flatVariantColors.length, 0, ...emptyColors); - } - } - - this.set4iv('baseVariantColors', flatBaseColors.flat()); - this.set4fv('variantColors', flatVariantColors.flat()); + const baseColors = Object.keys(variantColors[variant]); + for (let c = 0; c < 32; c++) { + if (c < baseColors.length) { + const baseColor = Array.from(Object.values(Utils.rgbHexToRgba(baseColors[c]))); + const variantColor = Array.from(Object.values(Utils.rgbHexToRgba(variantColors[variant][baseColors[c]]))); + flatBaseColors.splice(flatBaseColors.length, 0, ...baseColor); + flatVariantColors.splice(flatVariantColors.length, 0, ...variantColor.map(c => c / 255.0)); + } else { + flatBaseColors.splice(flatBaseColors.length, 0, ...emptyColors); + flatVariantColors.splice(flatVariantColors.length, 0, ...emptyColors); + } } + } else { + for (let c = 0; c < 32; c++) { + flatBaseColors.splice(flatBaseColors.length, 0, ...emptyColors); + flatVariantColors.splice(flatVariantColors.length, 0, ...emptyColors); + } + } - super.onBatch(gameObject); + this.set4iv('baseVariantColors', flatBaseColors.flat()); + this.set4fv('variantColors', flatVariantColors.flat()); } - batchQuad(gameObject: Phaser.GameObjects.GameObject, x0: number, y0: number, x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, - u0: number, v0: number, u1: number, v1: number, tintTL: number, tintTR: number, tintBL: number, tintBR: number, tintEffect: number | boolean, - texture?: Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper, unit?: number): boolean { - const sprite = gameObject as Phaser.GameObjects.Sprite; + super.onBatch(gameObject); + } - this.set1f('vCutoff', v1); + batchQuad(gameObject: Phaser.GameObjects.GameObject, x0: number, y0: number, x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, + u0: number, v0: number, u1: number, v1: number, tintTL: number, tintTR: number, tintBL: number, tintBR: number, tintEffect: number | boolean, + texture?: Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper, unit?: number): boolean { + const sprite = gameObject as Phaser.GameObjects.Sprite; - const hasShadow = sprite.pipelineData['hasShadow'] as boolean; - if (hasShadow) { - const isEntityObj = sprite.parentContainer instanceof Pokemon || sprite.parentContainer instanceof Trainer; - const field = isEntityObj ? sprite.parentContainer.parentContainer : sprite.parentContainer; - const fieldScaleRatio = field.scale / 6; - const baseY = (isEntityObj - ? sprite.parentContainer.y - : sprite.y + sprite.height) * 6 / fieldScaleRatio; - const bottomPadding = Math.ceil(sprite.height * 0.05) * 6 / fieldScaleRatio; - const yDelta = (baseY - y1) / field.scale; - y2 = y1 = baseY + bottomPadding; - const pixelHeight = (v1 - v0) / (sprite.frame.height * (isEntityObj ? sprite.parentContainer.scale : sprite.scale)); - v1 += (yDelta + bottomPadding / field.scale) * pixelHeight; - } + this.set1f('vCutoff', v1); + + const hasShadow = sprite.pipelineData['hasShadow'] as boolean; + if (hasShadow) { + const isEntityObj = sprite.parentContainer instanceof Pokemon || sprite.parentContainer instanceof Trainer; + const field = isEntityObj ? sprite.parentContainer.parentContainer : sprite.parentContainer; + const fieldScaleRatio = field.scale / 6; + const baseY = (isEntityObj + ? sprite.parentContainer.y + : sprite.y + sprite.height) * 6 / fieldScaleRatio; + const bottomPadding = Math.ceil(sprite.height * 0.05) * 6 / fieldScaleRatio; + const yDelta = (baseY - y1) / field.scale; + y2 = y1 = baseY + bottomPadding; + const pixelHeight = (v1 - v0) / (sprite.frame.height * (isEntityObj ? sprite.parentContainer.scale : sprite.scale)); + v1 += (yDelta + bottomPadding / field.scale) * pixelHeight; + } - return super.batchQuad(gameObject, x0, y0, x1, y1, x2, y2, x3, y3, u0, v0, u1, v1, tintTL, tintTR, tintBL, tintBR, tintEffect, texture, unit); - } + return super.batchQuad(gameObject, x0, y0, x1, y1, x2, y2, x3, y3, u0, v0, u1, v1, tintTL, tintTR, tintBL, tintBR, tintEffect, texture, unit); + } - get tone(): number[] { - return this._tone; - } + get tone(): number[] { + return this._tone; + } - set tone(value: number[]) { - this._tone = value; - } -} \ No newline at end of file + set tone(value: number[]) { + this._tone = value; + } +} diff --git a/src/plugins/cache-busted-loader-plugin.ts b/src/plugins/cache-busted-loader-plugin.ts index 449c99454c2..32224f5269f 100644 --- a/src/plugins/cache-busted-loader-plugin.ts +++ b/src/plugins/cache-busted-loader-plugin.ts @@ -1,30 +1,30 @@ let manifest: object; export default class CacheBustedLoaderPlugin extends Phaser.Loader.LoaderPlugin { - constructor(scene: Phaser.Scene) { - super(scene) - } + constructor(scene: Phaser.Scene) { + super(scene); + } - get manifest() { - return manifest; - } + get manifest() { + return manifest; + } - set manifest(manifestObj: object) { - manifest = manifestObj; - } + set manifest(manifestObj: object) { + manifest = manifestObj; + } - addFile(file): void { - if (!Array.isArray(file)) - file = [ file ]; + addFile(file): void { + if (!Array.isArray(file)) + file = [ file ]; - file.forEach(item => { - if (manifest) { - const timestamp = manifest[`/${item.url.replace(/\/\//g, '/')}` ]; - if (timestamp) - item.url += `?t=${timestamp}`; - } - }); + file.forEach(item => { + if (manifest) { + const timestamp = manifest[`/${item.url.replace(/\/\//g, '/')}` ]; + if (timestamp) + item.url += `?t=${timestamp}`; + } + }); - super.addFile(file); - } -} \ No newline at end of file + super.addFile(file); + } +} diff --git a/src/scene-base.ts b/src/scene-base.ts index a990492f57b..d378b2723f5 100644 --- a/src/scene-base.ts +++ b/src/scene-base.ts @@ -5,67 +5,67 @@ export class SceneBase extends Phaser.Scene { super(config); } - getCachedUrl(url: string): string { - const manifest = this.game['manifest']; - if (manifest) { - const timestamp = manifest[`/${url}`]; - if (timestamp) - url += `?t=${timestamp}`; - } - return url; - } + getCachedUrl(url: string): string { + const manifest = this.game['manifest']; + if (manifest) { + const timestamp = manifest[`/${url}`]; + if (timestamp) + url += `?t=${timestamp}`; + } + return url; + } loadImage(key: string, folder: string, filename?: string) { - if (!filename) - filename = `${key}.png`; - this.load.image(key, this.getCachedUrl(`images/${folder}/${filename}`)); - if (folder.startsWith('ui')) { - legacyCompatibleImages.push(key); - folder = folder.replace('ui', 'ui/legacy'); - this.load.image(`${key}_legacy`, this.getCachedUrl(`images/${folder}/${filename}`)); - } - } + if (!filename) + filename = `${key}.png`; + this.load.image(key, this.getCachedUrl(`images/${folder}/${filename}`)); + if (folder.startsWith('ui')) { + legacyCompatibleImages.push(key); + folder = folder.replace('ui', 'ui/legacy'); + this.load.image(`${key}_legacy`, this.getCachedUrl(`images/${folder}/${filename}`)); + } + } loadSpritesheet(key: string, folder: string, size: integer, filename?: string) { - if (!filename) - filename = `${key}.png`; - this.load.spritesheet(key, this.getCachedUrl(`images/${folder}/${filename}`), { frameWidth: size, frameHeight: size }); - if (folder.startsWith('ui')) { - legacyCompatibleImages.push(key); - folder = folder.replace('ui', 'ui/legacy'); - this.load.spritesheet(`${key}_legacy`, this.getCachedUrl(`images/${folder}/${filename}`), { frameWidth: size, frameHeight: size }); - } - } + if (!filename) + filename = `${key}.png`; + this.load.spritesheet(key, this.getCachedUrl(`images/${folder}/${filename}`), { frameWidth: size, frameHeight: size }); + if (folder.startsWith('ui')) { + legacyCompatibleImages.push(key); + folder = folder.replace('ui', 'ui/legacy'); + this.load.spritesheet(`${key}_legacy`, this.getCachedUrl(`images/${folder}/${filename}`), { frameWidth: size, frameHeight: size }); + } + } - loadAtlas(key: string, folder: string, filenameRoot?: string) { - if (!filenameRoot) - filenameRoot = key; - if (folder) - folder += '/'; - this.load.atlas(key, this.getCachedUrl(`images/${folder}${filenameRoot}.png`), this.getCachedUrl(`images/${folder}/${filenameRoot}.json`)); - if (folder.startsWith('ui')) { - legacyCompatibleImages.push(key); - folder = folder.replace('ui', 'ui/legacy'); - this.load.atlas(`${key}_legacy`, this.getCachedUrl(`images/${folder}${filenameRoot}.png`), this.getCachedUrl(`images/${folder}/${filenameRoot}.json`)); - } - } + loadAtlas(key: string, folder: string, filenameRoot?: string) { + if (!filenameRoot) + filenameRoot = key; + if (folder) + folder += '/'; + this.load.atlas(key, this.getCachedUrl(`images/${folder}${filenameRoot}.png`), this.getCachedUrl(`images/${folder}/${filenameRoot}.json`)); + if (folder.startsWith('ui')) { + legacyCompatibleImages.push(key); + folder = folder.replace('ui', 'ui/legacy'); + this.load.atlas(`${key}_legacy`, this.getCachedUrl(`images/${folder}${filenameRoot}.png`), this.getCachedUrl(`images/${folder}/${filenameRoot}.json`)); + } + } - loadSe(key: string, folder?: string, filenames?: string | string[]) { - if (!filenames) - filenames = `${key}.wav`; - if (!folder) - folder = ''; - else - folder += '/'; - if (!Array.isArray(filenames)) - filenames = [ filenames ]; - for (let f of filenames as string[]) - this.load.audio(key, this.getCachedUrl(`audio/se/${folder}${f}`)); - } + loadSe(key: string, folder?: string, filenames?: string | string[]) { + if (!filenames) + filenames = `${key}.wav`; + if (!folder) + folder = ''; + else + folder += '/'; + if (!Array.isArray(filenames)) + filenames = [ filenames ]; + for (const f of filenames as string[]) + this.load.audio(key, this.getCachedUrl(`audio/se/${folder}${f}`)); + } - loadBgm(key: string, filename?: string) { - if (!filename) - filename = `${key}.mp3`; - this.load.audio(key, this.getCachedUrl(`audio/bgm/${filename}`)); - } -} \ No newline at end of file + loadBgm(key: string, filename?: string) { + if (!filename) + filename = `${key}.mp3`; + this.load.audio(key, this.getCachedUrl(`audio/bgm/${filename}`)); + } +} diff --git a/src/system/achv.ts b/src/system/achv.ts index 9a6e43965d6..6e6d0bff1cf 100644 --- a/src/system/achv.ts +++ b/src/system/achv.ts @@ -1,7 +1,7 @@ -import { Modifier } from "typescript"; -import BattleScene from "../battle-scene"; -import * as Utils from "../utils"; -import { TurnHeldItemTransferModifier } from "../modifier/modifier"; +import { Modifier } from 'typescript'; +import BattleScene from '../battle-scene'; +import * as Utils from '../utils'; +import { TurnHeldItemTransferModifier } from '../modifier/modifier'; export enum AchvTier { COMMON, @@ -171,4 +171,4 @@ export const achvs = { achvs[a].parentId = achvKeys[i - 1]; }); })(); -} \ No newline at end of file +} diff --git a/src/system/arena-data.ts b/src/system/arena-data.ts index 4d5fb10e8f0..e4158f1c639 100644 --- a/src/system/arena-data.ts +++ b/src/system/arena-data.ts @@ -1,7 +1,7 @@ -import { Arena } from "../field/arena"; -import { ArenaTag } from "../data/arena-tag"; -import { Biome } from "../data/enums/biome"; -import { Weather } from "../data/weather"; +import { Arena } from '../field/arena'; +import { ArenaTag } from '../data/arena-tag'; +import { Biome } from '../data/enums/biome'; +import { Weather } from '../data/weather'; export default class ArenaData { public biome: Biome; @@ -14,4 +14,4 @@ export default class ArenaData { this.weather = sourceArena ? sourceArena.weather : source.weather ? new Weather(source.weather.weatherType, source.weather.turnsLeft) : undefined; this.tags = sourceArena ? sourceArena.tags : []; } -} \ No newline at end of file +} diff --git a/src/system/egg-data.ts b/src/system/egg-data.ts index c1642d1060b..36e064c9248 100644 --- a/src/system/egg-data.ts +++ b/src/system/egg-data.ts @@ -1,4 +1,4 @@ -import { Egg, GachaType } from "../data/egg"; +import { Egg, GachaType } from '../data/egg'; export default class EggData { public id: integer; @@ -17,4 +17,4 @@ export default class EggData { toEgg(): Egg { return new Egg(this.id, this.gachaType, this.hatchWaves, this.timestamp); } -} \ No newline at end of file +} diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 8b09fe8b910..ace5f9683cd 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -1,35 +1,35 @@ -import BattleScene, { PokeballCounts, bypassLogin } from "../battle-scene"; -import Pokemon, { EnemyPokemon, PlayerPokemon } from "../field/pokemon"; -import { pokemonEvolutions, pokemonPrevolutions } from "../data/pokemon-evolutions"; -import PokemonSpecies, { allSpecies, getPokemonSpecies, noStarterFormKeys, speciesStarters } from "../data/pokemon-species"; -import { Species, defaultStarterSpecies } from "../data/enums/species"; -import * as Utils from "../utils"; +import BattleScene, { PokeballCounts, bypassLogin } from '../battle-scene'; +import Pokemon, { EnemyPokemon, PlayerPokemon } from '../field/pokemon'; +import { pokemonEvolutions, pokemonPrevolutions } from '../data/pokemon-evolutions'; +import PokemonSpecies, { allSpecies, getPokemonSpecies, noStarterFormKeys, speciesStarters } from '../data/pokemon-species'; +import { Species, defaultStarterSpecies } from '../data/enums/species'; +import * as Utils from '../utils'; import * as Overrides from '../overrides'; -import PokemonData from "./pokemon-data"; -import PersistentModifierData from "./modifier-data"; -import ArenaData from "./arena-data"; -import { Unlockables } from "./unlockables"; -import { GameModes, gameModes } from "../game-mode"; -import { BattleType } from "../battle"; -import TrainerData from "./trainer-data"; -import { trainerConfigs } from "../data/trainer-config"; -import { Setting, setSetting, settingDefaults } from "./settings"; -import { achvs } from "./achv"; -import EggData from "./egg-data"; -import { Egg } from "../data/egg"; -import { VoucherType, vouchers } from "./voucher"; -import { AES, enc } from "crypto-js"; -import { Mode } from "../ui/ui"; -import { clientSessionId, loggedInUser, updateUserInfo } from "../account"; -import { Nature } from "../data/nature"; -import { GameStats } from "./game-stats"; -import { Tutorial } from "../tutorial"; -import { Moves } from "../data/enums/moves"; -import { speciesEggMoves } from "../data/egg-moves"; -import { allMoves } from "../data/move"; -import { TrainerVariant } from "../field/trainer"; -import { OutdatedPhase, ReloadSessionPhase } from "#app/phases"; -import { Variant, variantData } from "#app/data/variant"; +import PokemonData from './pokemon-data'; +import PersistentModifierData from './modifier-data'; +import ArenaData from './arena-data'; +import { Unlockables } from './unlockables'; +import { GameModes, gameModes } from '../game-mode'; +import { BattleType } from '../battle'; +import TrainerData from './trainer-data'; +import { trainerConfigs } from '../data/trainer-config'; +import { Setting, setSetting, settingDefaults } from './settings'; +import { achvs } from './achv'; +import EggData from './egg-data'; +import { Egg } from '../data/egg'; +import { VoucherType, vouchers } from './voucher'; +import { AES, enc } from 'crypto-js'; +import { Mode } from '../ui/ui'; +import { clientSessionId, loggedInUser, updateUserInfo } from '../account'; +import { Nature } from '../data/nature'; +import { GameStats } from './game-stats'; +import { Tutorial } from '../tutorial'; +import { Moves } from '../data/enums/moves'; +import { speciesEggMoves } from '../data/egg-moves'; +import { allMoves } from '../data/move'; +import { TrainerVariant } from '../field/trainer'; +import { OutdatedPhase, ReloadSessionPhase } from '#app/phases'; +import { Variant, variantData } from '#app/data/variant'; const saveKey = 'x0i2O7WRiANTqPmZ'; // Temporary; secure encryption is not yet necessary @@ -53,17 +53,17 @@ export enum Passive { export function getDataTypeKey(dataType: GameDataType, slotId: integer = 0): string { switch (dataType) { - case GameDataType.SYSTEM: - return 'data'; - case GameDataType.SESSION: - let ret = 'sessionData'; - if (slotId) - ret += slotId; - return ret; - case GameDataType.SETTINGS: - return 'settings'; - case GameDataType.TUTORIALS: - return 'tutorials'; + case GameDataType.SYSTEM: + return 'data'; + case GameDataType.SESSION: + let ret = 'sessionData'; + if (slotId) + ret += slotId; + return ret; + case GameDataType.SETTINGS: + return 'settings'; + case GameDataType.TUTORIALS: + return 'tutorials'; } } @@ -153,7 +153,7 @@ export const DexAttr = { VARIANT_2: 32n, VARIANT_3: 64n, DEFAULT_FORM: 128n -} +}; export interface DexAttrProps { shiny: boolean; @@ -166,7 +166,7 @@ export const AbilityAttr = { ABILITY_1: 1, ABILITY_2: 2, ABILITY_HIDDEN: 4 -} +}; export type StarterMoveset = [ Moves ] | [ Moves, Moves ] | [ Moves, Moves, Moves ] | [ Moves, Moves, Moves, Moves ]; @@ -354,7 +354,7 @@ export class GameData { let systemData = this.parseSystemData(systemDataStr); if (cachedSystemDataStr) { - let cachedSystemData = this.parseSystemData(cachedSystemDataStr); + const cachedSystemData = this.parseSystemData(cachedSystemDataStr); if (cachedSystemData.timestamp > systemData.timestamp) { console.debug('Use cached system'); systemData = cachedSystemData; @@ -387,13 +387,13 @@ export class GameData { if (systemData['starterMoveData']) { const starterMoveData = systemData['starterMoveData']; - for (let s of Object.keys(starterMoveData)) + for (const s of Object.keys(starterMoveData)) this.starterData[s].moveset = starterMoveData[s]; } if (systemData['starterEggMoveData']) { const starterEggMoveData = systemData['starterEggMoveData']; - for (let s of Object.keys(starterEggMoveData)) + for (const s of Object.keys(starterEggMoveData)) this.starterData[s].eggMoves = starterEggMoveData[s]; } @@ -418,21 +418,21 @@ export class GameData { } if (systemData.unlocks) { - for (let key of Object.keys(systemData.unlocks)) { + for (const key of Object.keys(systemData.unlocks)) { if (this.unlocks.hasOwnProperty(key)) this.unlocks[key] = systemData.unlocks[key]; } } if (systemData.achvUnlocks) { - for (let a of Object.keys(systemData.achvUnlocks)) { + for (const a of Object.keys(systemData.achvUnlocks)) { if (achvs.hasOwnProperty(a)) this.achvUnlocks[a] = systemData.achvUnlocks[a]; } } if (systemData.voucherUnlocks) { - for (let v of Object.keys(systemData.voucherUnlocks)) { + for (const v of Object.keys(systemData.voucherUnlocks)) { if (vouchers.hasOwnProperty(v)) this.voucherUnlocks[v] = systemData.voucherUnlocks[v]; } @@ -455,7 +455,7 @@ export class GameData { if (initStarterData) { const starterIds = Object.keys(this.starterData).map(s => parseInt(s) as Species); - for (let s of starterIds) { + for (const s of starterIds) { this.starterData[s].candyCount += this.dexData[s].caughtCount; this.starterData[s].candyCount += this.dexData[s].hatchedCount * 2; if (this.dexData[s].caughtAttr & DexAttr.SHINY) @@ -479,7 +479,7 @@ export class GameData { const ret: EggData[] = []; if (v === null) v = []; - for (let e of v) + for (const e of v) ret.push(new EggData(e)); return ret; } @@ -495,7 +495,7 @@ export class GameData { } const fromKeys = shorten ? Object.keys(systemShortKeys) : Object.values(systemShortKeys); const toKeys = shorten ? Object.values(systemShortKeys) : Object.keys(systemShortKeys); - for (let k in fromKeys) + for (const k in fromKeys) dataStr = dataStr.replace(new RegExp(`${fromKeys[k].replace('$', '\\$')}`, 'g'), toKeys[k]); return dataStr; @@ -503,9 +503,9 @@ export class GameData { public async verify(): Promise { if (bypassLogin) - return true; + return true; - const response = await Utils.apiPost(`savedata/system/verify`, JSON.stringify({ clientSessionId: clientSessionId }), undefined, true) + const response = await Utils.apiPost('savedata/system/verify', JSON.stringify({ clientSessionId: clientSessionId }), undefined, true) .then(response => response.json()); if (!response.valid) { @@ -551,7 +551,7 @@ export class GameData { const settings = JSON.parse(localStorage.getItem('settings')); - for (let setting of Object.keys(settings)) + for (const setting of Object.keys(settings)) setSetting(this.scene, setting as Setting, settings[setting]); } @@ -582,7 +582,7 @@ export class GameData { const tutorials = JSON.parse(localStorage.getItem('tutorials')); - for (let tutorial of Object.keys(tutorials)) + for (const tutorial of Object.keys(tutorials)) ret[tutorial] = tutorials[tutorial]; return ret; @@ -667,7 +667,7 @@ export class GameData { const party = scene.getParty(); party.splice(0, party.length); - for (let p of sessionData.party) { + for (const p of sessionData.party) { const pokemon = p.toPokemon(scene) as PlayerPokemon; pokemon.setVisible(false); loadPokemonAssets.push(pokemon.loadAssets()); @@ -714,7 +714,7 @@ export class GameData { const modifiersModule = await import('../modifier/modifier'); - for (let modifierData of sessionData.modifiers) { + for (const modifierData of sessionData.modifiers) { const modifier = modifierData.toModifier(scene, modifiersModule[modifierData.className]); if (modifier) scene.addModifier(modifier, true); @@ -722,7 +722,7 @@ export class GameData { scene.updateModifiers(true); - for (let enemyModifierData of sessionData.enemyModifiers) { + for (const enemyModifierData of sessionData.enemyModifiers) { const modifier = enemyModifierData.toModifier(scene, modifiersModule[enemyModifierData.className]); if (modifier) scene.addEnemyModifier(modifier, true); @@ -854,7 +854,7 @@ export class GameData { const ret: PokemonData[] = []; if (v === null) v = []; - for (let pd of v) + for (const pd of v) ret.push(new PokemonData(pd)); return ret; } @@ -867,7 +867,7 @@ export class GameData { const ret: PersistentModifierData[] = []; if (v === null) v = []; - for (let md of v) { + for (const md of v) { if(md?.className === 'ExpBalanceModifier') // Temporarily limit EXP Balance until it gets reworked md.stackCount = Math.min(md.stackCount, 4); ret.push(new PersistentModifierData(md, player)); @@ -943,9 +943,9 @@ export class GameData { const dataKey: string = `${getDataTypeKey(dataType, slotId)}_${loggedInUser.username}`; const handleData = (dataStr: string) => { switch (dataType) { - case GameDataType.SYSTEM: - dataStr = this.convertSystemDataStr(dataStr, true); - break; + case GameDataType.SYSTEM: + dataStr = this.convertSystemDataStr(dataStr, true); + break; } const encryptedData = AES.encrypt(dataStr, saveKey); const blob = new Blob([ encryptedData.toString() ], {type: 'text/json'}); @@ -991,79 +991,79 @@ export class GameData { saveFile.style.display = 'none'; saveFile.addEventListener('change', e => { - let reader = new FileReader(); + const reader = new FileReader(); reader.onload = (_ => { - return e => { - let dataStr = AES.decrypt(e.target.result.toString(), saveKey).toString(enc.Utf8); - let valid = false; - try { - switch (dataType) { - case GameDataType.SYSTEM: - dataStr = this.convertSystemDataStr(dataStr); - const systemData = this.parseSystemData(dataStr); - valid = !!systemData.dexData && !!systemData.timestamp; - break; - case GameDataType.SESSION: - const sessionData = this.parseSessionData(dataStr); - valid = !!sessionData.party && !!sessionData.enemyParty && !!sessionData.timestamp; - break; - case GameDataType.SETTINGS: - case GameDataType.TUTORIALS: - valid = true; - break; - } - } catch (ex) { - console.error(ex); - } - - let dataName: string; + return e => { + let dataStr = AES.decrypt(e.target.result.toString(), saveKey).toString(enc.Utf8); + let valid = false; + try { switch (dataType) { - case GameDataType.SYSTEM: - dataName = 'save'; - break; - case GameDataType.SESSION: - dataName = 'session'; - break; - case GameDataType.SETTINGS: - dataName = 'settings'; - break; - case GameDataType.TUTORIALS: - dataName = 'tutorials'; - break; + case GameDataType.SYSTEM: + dataStr = this.convertSystemDataStr(dataStr); + const systemData = this.parseSystemData(dataStr); + valid = !!systemData.dexData && !!systemData.timestamp; + break; + case GameDataType.SESSION: + const sessionData = this.parseSessionData(dataStr); + valid = !!sessionData.party && !!sessionData.enemyParty && !!sessionData.timestamp; + break; + case GameDataType.SETTINGS: + case GameDataType.TUTORIALS: + valid = true; + break; } + } catch (ex) { + console.error(ex); + } - const displayError = (error: string) => this.scene.ui.showText(error, null, () => this.scene.ui.showText(null, 0), Utils.fixedInt(1500)); + let dataName: string; + switch (dataType) { + case GameDataType.SYSTEM: + dataName = 'save'; + break; + case GameDataType.SESSION: + dataName = 'session'; + break; + case GameDataType.SETTINGS: + dataName = 'settings'; + break; + case GameDataType.TUTORIALS: + dataName = 'tutorials'; + break; + } - if (!valid) - return this.scene.ui.showText(`Your ${dataName} data could not be loaded. It may be corrupted.`, null, () => this.scene.ui.showText(null, 0), Utils.fixedInt(1500)); - this.scene.ui.showText(`Your ${dataName} data will be overridden and the page will reload. Proceed?`, null, () => { - this.scene.ui.setOverlayMode(Mode.CONFIRM, () => { - localStorage.setItem(dataKey, encrypt(dataStr, bypassLogin)); + const displayError = (error: string) => this.scene.ui.showText(error, null, () => this.scene.ui.showText(null, 0), Utils.fixedInt(1500)); - if (!bypassLogin && dataType < GameDataType.SETTINGS) { - updateUserInfo().then(success => { - if (!success) - return displayError(`Could not contact the server. Your ${dataName} data could not be imported.`); - Utils.apiPost(`savedata/update?datatype=${dataType}${dataType === GameDataType.SESSION ? `&slot=${slotId}` : ''}&trainerId=${this.trainerId}&secretId=${this.secretId}&clientSessionId=${clientSessionId}`, dataStr, undefined, true) - .then(response => response.text()) - .then(error => { - if (error) { - console.error(error); - return displayError(`An error occurred while updating ${dataName} data. Please contact the administrator.`); - } - window.location = window.location; - }); - }); - } else - window.location = window.location; - }, () => { - this.scene.ui.revertMode(); - this.scene.ui.showText(null, 0); - }, false, -98); - }); - }; - })((e.target as any).files[0]); + if (!valid) + return this.scene.ui.showText(`Your ${dataName} data could not be loaded. It may be corrupted.`, null, () => this.scene.ui.showText(null, 0), Utils.fixedInt(1500)); + this.scene.ui.showText(`Your ${dataName} data will be overridden and the page will reload. Proceed?`, null, () => { + this.scene.ui.setOverlayMode(Mode.CONFIRM, () => { + localStorage.setItem(dataKey, encrypt(dataStr, bypassLogin)); + + if (!bypassLogin && dataType < GameDataType.SETTINGS) { + updateUserInfo().then(success => { + if (!success) + return displayError(`Could not contact the server. Your ${dataName} data could not be imported.`); + Utils.apiPost(`savedata/update?datatype=${dataType}${dataType === GameDataType.SESSION ? `&slot=${slotId}` : ''}&trainerId=${this.trainerId}&secretId=${this.secretId}&clientSessionId=${clientSessionId}`, dataStr, undefined, true) + .then(response => response.text()) + .then(error => { + if (error) { + console.error(error); + return displayError(`An error occurred while updating ${dataName} data. Please contact the administrator.`); + } + window.location = window.location; + }); + }); + } else + window.location = window.location; + }, () => { + this.scene.ui.revertMode(); + this.scene.ui.showText(null, 0); + }, false, -98); + }); + }; + })((e.target as any).files[0]); reader.readAsText((e.target as any).files[0]); } @@ -1077,7 +1077,7 @@ export class GameData { private initDexData(): void { const data: DexData = {}; - for (let species of allSpecies) { + for (const species of allSpecies) { data[species.speciesId] = { seenAttr: 0n, caughtAttr: 0n, natureAttr: 0, seenCount: 0, caughtCount: 0, hatchedCount: 0, ivs: [ 0, 0, 0, 0, 0, 0 ] }; @@ -1094,11 +1094,11 @@ export class GameData { }, 0, 'default'); for (let ds = 0; ds < defaultStarterSpecies.length; ds++) { - let entry = data[defaultStarterSpecies[ds]] as DexEntry; + const entry = data[defaultStarterSpecies[ds]] as DexEntry; entry.seenAttr = defaultStarterAttr; entry.caughtAttr = defaultStarterAttr; entry.natureAttr = Math.pow(2, defaultStarterNatures[ds] + 1); - for (let i in entry.ivs) + for (const i in entry.ivs) entry.ivs[i] = 10; } @@ -1111,7 +1111,7 @@ export class GameData { const starterSpeciesIds = Object.keys(speciesStarters).map(k => parseInt(k) as Species); - for (let speciesId of starterSpeciesIds) { + for (const speciesId of starterSpeciesIds) { starterData[speciesId] = { moveset: null, eggMoves: 0, @@ -1287,7 +1287,7 @@ export class GameData { getSpeciesCount(dexEntryPredicate: (entry: DexEntry) => boolean): integer { const dexKeys = Object.keys(this.dexData); let speciesCount = 0; - for (let s of dexKeys) { + for (const s of dexKeys) { if (dexEntryPredicate(this.dexData[s])) speciesCount++; } @@ -1297,7 +1297,7 @@ export class GameData { getStarterCount(dexEntryPredicate: (entry: DexEntry) => boolean): integer { const starterKeys = Object.keys(speciesStarters); let starterCount = 0; - for (let s of starterKeys) { + for (const s of starterKeys) { const starterDexEntry = this.dexData[s]; if (dexEntryPredicate(starterDexEntry)) starterCount++; @@ -1357,7 +1357,7 @@ export class GameData { } getNaturesForAttr(natureAttr: integer): Nature[] { - let ret: Nature[] = []; + const ret: Nature[] = []; for (let n = 0; n < 25; n++) { if (natureAttr & Math.pow(2, n + 1)) ret.push(n); @@ -1375,7 +1375,7 @@ export class GameData { else value /= 2; return value; - } + }; for (let v = 0; v < this.starterData[speciesId].valueReduction; v++) value = decrementValue(value); @@ -1397,7 +1397,7 @@ export class GameData { } consolidateDexData(dexData: DexData): void { - for (let k of Object.keys(dexData)) { + for (const k of Object.keys(dexData)) { const entry = dexData[k] as DexEntry; if (!entry.hasOwnProperty('hatchedCount')) entry.hatchedCount = 0; @@ -1410,7 +1410,7 @@ export class GameData { const starterIds = Object.keys(this.starterData).map(s => parseInt(s) as Species); const starterData = initialStarterData || systemData.starterData; const dexData = systemData.dexData; - for (let s of starterIds) { + for (const s of starterIds) { const dexAttr = dexData[s].caughtAttr; starterData[s].abilityAttr = (dexAttr & DexAttr.DEFAULT_VARIANT ? AbilityAttr.ABILITY_1 : 0) | (dexAttr & DexAttr.VARIANT_2 ? AbilityAttr.ABILITY_2 : 0) @@ -1431,17 +1431,17 @@ export class GameData { const starterData = systemData.starterData; const dexData = systemData.dexData; if (starterIds.find(id => (dexData[id].caughtAttr & DexAttr.VARIANT_2 || dexData[id].caughtAttr & DexAttr.VARIANT_3) && !variantData[id])) { - for (let s of starterIds) { + for (const s of starterIds) { const species = getPokemonSpecies(s); if (variantData[s]) { const tempCaughtAttr = dexData[s].caughtAttr; let seenVariant2 = false; let seenVariant3 = false; - let checkEvoSpecies = (es: Species) => { + const checkEvoSpecies = (es: Species) => { seenVariant2 ||= !!(dexData[es].seenAttr & DexAttr.VARIANT_2); seenVariant3 ||= !!(dexData[es].seenAttr & DexAttr.VARIANT_3); if (pokemonEvolutions.hasOwnProperty(es)) { - for (let pe of pokemonEvolutions[es]) + for (const pe of pokemonEvolutions[es]) checkEvoSpecies(pe.speciesId); } }; @@ -1468,7 +1468,7 @@ export class GameData { } fixStarterData(systemData: SystemSaveData): void { - for (let starterId of defaultStarterSpecies) + for (const starterId of defaultStarterSpecies) systemData.starterData[starterId].abilityAttr |= AbilityAttr.ABILITY_1; } @@ -1489,4 +1489,4 @@ export class GameData { systemData.gameStats.legendaryPokemonSeen = Math.max(systemData.gameStats.legendaryPokemonSeen, systemData.gameStats.legendaryPokemonCaught); systemData.gameStats.mythicalPokemonSeen = Math.max(systemData.gameStats.mythicalPokemonSeen, systemData.gameStats.mythicalPokemonCaught); } -} \ No newline at end of file +} diff --git a/src/system/game-speed.ts b/src/system/game-speed.ts index 9d0d4c131bd..110f03e54f6 100644 --- a/src/system/game-speed.ts +++ b/src/system/game-speed.ts @@ -1,8 +1,8 @@ -import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; +import SoundFade from 'phaser3-rex-plugins/plugins/soundfade'; import FadeIn from 'phaser3-rex-plugins/plugins/audio/fade/FadeIn'; import FadeOut from 'phaser3-rex-plugins/plugins/audio/fade/FadeOut'; -import BattleScene from "../battle-scene"; -import * as Utils from "../utils"; +import BattleScene from '../battle-scene'; +import * as Utils from '../utils'; type FadeIn = typeof FadeIn; type FadeOut = typeof FadeOut; @@ -85,4 +85,4 @@ export function initGameSpeed() { endVolume?: number, startVolume?: number ) => originalFadeIn(scene, sound, transformValue(duration), endVolume, startVolume)) as FadeIn; -} \ No newline at end of file +} diff --git a/src/system/modifier-data.ts b/src/system/modifier-data.ts index 0f83c79be45..5c76409441d 100644 --- a/src/system/modifier-data.ts +++ b/src/system/modifier-data.ts @@ -1,6 +1,6 @@ -import BattleScene from "../battle-scene"; -import { PersistentModifier } from "../modifier/modifier"; -import { GeneratedPersistentModifierType, ModifierTypeGenerator, getModifierTypeFuncById } from "../modifier/modifier-type"; +import BattleScene from '../battle-scene'; +import { PersistentModifier } from '../modifier/modifier'; +import { GeneratedPersistentModifierType, ModifierTypeGenerator, getModifierTypeFuncById } from '../modifier/modifier-type'; export default class ModifierData { private player: boolean; @@ -51,4 +51,4 @@ export default class ModifierData { return null; } } -} \ No newline at end of file +} diff --git a/src/system/pokemon-data.ts b/src/system/pokemon-data.ts index dfbb9be570b..50ddea6b55e 100644 --- a/src/system/pokemon-data.ts +++ b/src/system/pokemon-data.ts @@ -1,16 +1,16 @@ -import { BattleType } from "../battle"; -import BattleScene from "../battle-scene"; -import { Biome } from "../data/enums/biome"; -import { Gender } from "../data/gender"; -import { Nature } from "../data/nature"; -import { PokeballType } from "../data/pokeball"; -import { getPokemonSpecies } from "../data/pokemon-species"; -import { Species } from "../data/enums/species"; -import { Status } from "../data/status-effect"; -import Pokemon, { EnemyPokemon, PokemonMove, PokemonSummonData } from "../field/pokemon"; -import { TrainerSlot } from "../data/trainer-config"; -import { Moves } from "../data/enums/moves"; -import { Variant } from "#app/data/variant"; +import { BattleType } from '../battle'; +import BattleScene from '../battle-scene'; +import { Biome } from '../data/enums/biome'; +import { Gender } from '../data/gender'; +import { Nature } from '../data/nature'; +import { PokeballType } from '../data/pokeball'; +import { getPokemonSpecies } from '../data/pokemon-species'; +import { Species } from '../data/enums/species'; +import { Status } from '../data/status-effect'; +import Pokemon, { EnemyPokemon, PokemonMove, PokemonSummonData } from '../field/pokemon'; +import { TrainerSlot } from '../data/trainer-config'; +import { Moves } from '../data/enums/moves'; +import { Variant } from '#app/data/variant'; import { loadBattlerTag } from '../data/battler-tags'; export default class PokemonData { @@ -138,4 +138,4 @@ export default class PokemonData { ret.primeSummonData(this.summonData); return ret; } -} \ No newline at end of file +} diff --git a/src/system/session-history.ts b/src/system/session-history.ts index ed991190369..008a9e2c763 100644 --- a/src/system/session-history.ts +++ b/src/system/session-history.ts @@ -1,6 +1,6 @@ -import { GameModes } from "../game-mode"; -import PokemonData from "./pokemon-data"; -import PersistentModifierData from "./modifier-data"; +import { GameModes } from '../game-mode'; +import PokemonData from './pokemon-data'; +import PersistentModifierData from './modifier-data'; export enum SessionHistoryResult { ACTIVE, @@ -19,4 +19,4 @@ export interface SessionHistory { waveIndex: integer; gameVersion: string; timestamp: integer; -} \ No newline at end of file +} diff --git a/src/system/settings.ts b/src/system/settings.ts index aa2f4f5c682..23818e75b61 100644 --- a/src/system/settings.ts +++ b/src/system/settings.ts @@ -1,34 +1,34 @@ -import SettingsUiHandler from "#app/ui/settings-ui-handler"; -import { Mode } from "#app/ui/ui"; -import i18next from "i18next"; -import BattleScene from "../battle-scene"; -import { hasTouchscreen } from "../touch-controls"; -import { updateWindowType } from "../ui/ui-theme"; -import { PlayerGender } from "./game-data"; +import SettingsUiHandler from '#app/ui/settings-ui-handler'; +import { Mode } from '#app/ui/ui'; +import i18next from 'i18next'; +import BattleScene from '../battle-scene'; +import { hasTouchscreen } from '../touch-controls'; +import { updateWindowType } from '../ui/ui-theme'; +import { PlayerGender } from './game-data'; export enum Setting { - Game_Speed = "GAME_SPEED", - Master_Volume = "MASTER_VOLUME", - BGM_Volume = "BGM_VOLUME", - SE_Volume = "SE_VOLUME", - Language = "LANGUAGE", - Damage_Numbers = "DAMAGE_NUMBERS", - UI_Theme = "UI_THEME", - Window_Type = "WINDOW_TYPE", - Tutorials = "TUTORIALS", - Enable_Retries = "ENABLE_RETRIES", - Sprite_Set = "SPRITE_SET", - Move_Animations = "MOVE_ANIMATIONS", - Show_Stats_on_Level_Up = "SHOW_LEVEL_UP_STATS", - EXP_Gains_Speed = "EXP_GAINS_SPEED", - EXP_Party_Display = "EXP_PARTY_DISPLAY", - HP_Bar_Speed = "HP_BAR_SPEED", - Fusion_Palette_Swaps = "FUSION_PALETTE_SWAPS", - Player_Gender = "PLAYER_GENDER", - Gamepad_Support = "GAMEPAD_SUPPORT", - Swap_A_and_B = "SWAP_A_B", // Swaps which gamepad button handles ACTION and CANCEL - Touch_Controls = "TOUCH_CONTROLS", - Vibration = "VIBRATION" + Game_Speed = 'GAME_SPEED', + Master_Volume = 'MASTER_VOLUME', + BGM_Volume = 'BGM_VOLUME', + SE_Volume = 'SE_VOLUME', + Language = 'LANGUAGE', + Damage_Numbers = 'DAMAGE_NUMBERS', + UI_Theme = 'UI_THEME', + Window_Type = 'WINDOW_TYPE', + Tutorials = 'TUTORIALS', + Enable_Retries = 'ENABLE_RETRIES', + Sprite_Set = 'SPRITE_SET', + Move_Animations = 'MOVE_ANIMATIONS', + Show_Stats_on_Level_Up = 'SHOW_LEVEL_UP_STATS', + EXP_Gains_Speed = 'EXP_GAINS_SPEED', + EXP_Party_Display = 'EXP_PARTY_DISPLAY', + HP_Bar_Speed = 'HP_BAR_SPEED', + Fusion_Palette_Swaps = 'FUSION_PALETTE_SWAPS', + Player_Gender = 'PLAYER_GENDER', + Gamepad_Support = 'GAMEPAD_SUPPORT', + Swap_A_and_B = 'SWAP_A_B', // Swaps which gamepad button handles ACTION and CANCEL + Touch_Controls = 'TOUCH_CONTROLS', + Vibration = 'VIBRATION' } export interface SettingOptions { @@ -93,144 +93,144 @@ export const reloadSettings: Setting[] = [Setting.UI_Theme, Setting.Language, Se export function setSetting(scene: BattleScene, setting: Setting, value: integer): boolean { switch (setting) { - case Setting.Game_Speed: - scene.gameSpeed = parseFloat(settingOptions[setting][value].replace('x', '')); - break; - case Setting.Master_Volume: - scene.masterVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0; - scene.updateSoundVolume(); - break; - case Setting.BGM_Volume: - scene.bgmVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0; - scene.updateSoundVolume(); - break; - case Setting.SE_Volume: - scene.seVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0; - scene.updateSoundVolume(); - break; - case Setting.Damage_Numbers: - scene.damageNumbersMode = value; - break; - case Setting.UI_Theme: - scene.uiTheme = value; - break; - case Setting.Window_Type: - updateWindowType(scene, parseInt(settingOptions[setting][value])); - break; - case Setting.Tutorials: - scene.enableTutorials = settingOptions[setting][value] === 'On'; - break; - case Setting.Enable_Retries: - scene.enableRetries = settingOptions[setting][value] === 'On'; - break; - case Setting.Sprite_Set: - scene.experimentalSprites = !!value; - if (value) - scene.initExpSprites(); - break; - case Setting.Move_Animations: - scene.moveAnimations = settingOptions[setting][value] === 'On'; - break; - case Setting.Show_Stats_on_Level_Up: - scene.showLevelUpStats = settingOptions[setting][value] === 'On'; - break; - case Setting.EXP_Gains_Speed: - scene.expGainsSpeed = value; - break; - case Setting.EXP_Party_Display: - scene.expParty = value; - break; - case Setting.HP_Bar_Speed: - scene.hpBarSpeed = value; - break; - case Setting.Fusion_Palette_Swaps: - scene.fusionPaletteSwaps = !!value; - break; - case Setting.Player_Gender: - if (scene.gameData) { - const female = settingOptions[setting][value] === 'Girl'; - scene.gameData.gender = female ? PlayerGender.FEMALE : PlayerGender.MALE; - scene.trainer.setTexture(scene.trainer.texture.key.replace(female ? 'm' : 'f', female ? 'f' : 'm')); - } else - return false; - break; - case Setting.Gamepad_Support: - // if we change the value of the gamepad support, we call a method in the inputController to - // activate or deactivate the controller listener - scene.inputController.setGamepadSupport(settingOptions[setting][value] !== 'Disabled'); - break; - case Setting.Swap_A_and_B: - scene.abSwapped = settingOptions[setting][value] !== 'Disabled'; - break; - case Setting.Touch_Controls: - scene.enableTouchControls = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen(); - const touchControls = document.getElementById('touchControls'); - if (touchControls) - touchControls.classList.toggle('visible', scene.enableTouchControls); - break; - case Setting.Vibration: - scene.enableVibration = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen(); - break; - case Setting.Language: - if (value) { - if (scene.ui) { - const cancelHandler = () => { - scene.ui.revertMode(); - (scene.ui.getHandler() as SettingsUiHandler).setOptionCursor(Object.values(Setting).indexOf(Setting.Language), 0, true); - }; - const changeLocaleHandler = (locale: string): boolean => { - try { - i18next.changeLanguage(locale); - localStorage.setItem('prLang', locale); - cancelHandler(); - scene.reset(true, false, true); - return true; - } catch (error) { - console.error('Error changing locale:', error); - return false; + case Setting.Game_Speed: + scene.gameSpeed = parseFloat(settingOptions[setting][value].replace('x', '')); + break; + case Setting.Master_Volume: + scene.masterVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0; + scene.updateSoundVolume(); + break; + case Setting.BGM_Volume: + scene.bgmVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0; + scene.updateSoundVolume(); + break; + case Setting.SE_Volume: + scene.seVolume = value ? parseInt(settingOptions[setting][value]) * 0.01 : 0; + scene.updateSoundVolume(); + break; + case Setting.Damage_Numbers: + scene.damageNumbersMode = value; + break; + case Setting.UI_Theme: + scene.uiTheme = value; + break; + case Setting.Window_Type: + updateWindowType(scene, parseInt(settingOptions[setting][value])); + break; + case Setting.Tutorials: + scene.enableTutorials = settingOptions[setting][value] === 'On'; + break; + case Setting.Enable_Retries: + scene.enableRetries = settingOptions[setting][value] === 'On'; + break; + case Setting.Sprite_Set: + scene.experimentalSprites = !!value; + if (value) + scene.initExpSprites(); + break; + case Setting.Move_Animations: + scene.moveAnimations = settingOptions[setting][value] === 'On'; + break; + case Setting.Show_Stats_on_Level_Up: + scene.showLevelUpStats = settingOptions[setting][value] === 'On'; + break; + case Setting.EXP_Gains_Speed: + scene.expGainsSpeed = value; + break; + case Setting.EXP_Party_Display: + scene.expParty = value; + break; + case Setting.HP_Bar_Speed: + scene.hpBarSpeed = value; + break; + case Setting.Fusion_Palette_Swaps: + scene.fusionPaletteSwaps = !!value; + break; + case Setting.Player_Gender: + if (scene.gameData) { + const female = settingOptions[setting][value] === 'Girl'; + scene.gameData.gender = female ? PlayerGender.FEMALE : PlayerGender.MALE; + scene.trainer.setTexture(scene.trainer.texture.key.replace(female ? 'm' : 'f', female ? 'f' : 'm')); + } else + return false; + break; + case Setting.Gamepad_Support: + // if we change the value of the gamepad support, we call a method in the inputController to + // activate or deactivate the controller listener + scene.inputController.setGamepadSupport(settingOptions[setting][value] !== 'Disabled'); + break; + case Setting.Swap_A_and_B: + scene.abSwapped = settingOptions[setting][value] !== 'Disabled'; + break; + case Setting.Touch_Controls: + scene.enableTouchControls = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen(); + const touchControls = document.getElementById('touchControls'); + if (touchControls) + touchControls.classList.toggle('visible', scene.enableTouchControls); + break; + case Setting.Vibration: + scene.enableVibration = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen(); + break; + case Setting.Language: + if (value) { + if (scene.ui) { + const cancelHandler = () => { + scene.ui.revertMode(); + (scene.ui.getHandler() as SettingsUiHandler).setOptionCursor(Object.values(Setting).indexOf(Setting.Language), 0, true); + }; + const changeLocaleHandler = (locale: string): boolean => { + try { + i18next.changeLanguage(locale); + localStorage.setItem('prLang', locale); + cancelHandler(); + scene.reset(true, false, true); + return true; + } catch (error) { + console.error('Error changing locale:', error); + return false; + } + }; + scene.ui.setOverlayMode(Mode.OPTION_SELECT, { + options: [ + { + label: 'English', + handler: () => changeLocaleHandler('en') + }, + { + label: 'Español', + handler: () => changeLocaleHandler('es') + }, + { + label: 'Italiano', + handler: () => changeLocaleHandler('it') + }, + { + label: 'Français', + handler: () => changeLocaleHandler('fr') + }, + { + label: 'Deutsch', + handler: () => changeLocaleHandler('de') + }, + { + label: 'Português (BR)', + handler: () => changeLocaleHandler('pt_BR') + }, + { + label: '简体中文', + handler: () => changeLocaleHandler('zh_CN') + }, + { + label: 'Cancel', + handler: () => cancelHandler() } - }; - scene.ui.setOverlayMode(Mode.OPTION_SELECT, { - options: [ - { - label: 'English', - handler: () => changeLocaleHandler('en') - }, - { - label: 'Español', - handler: () => changeLocaleHandler('es') - }, - { - label: 'Italiano', - handler: () => changeLocaleHandler('it') - }, - { - label: 'Français', - handler: () => changeLocaleHandler('fr') - }, - { - label: 'Deutsch', - handler: () => changeLocaleHandler('de') - }, - { - label: 'Português (BR)', - handler: () => changeLocaleHandler('pt_BR') - }, - { - label: '简体中文', - handler: () => changeLocaleHandler('zh_CN') - }, - { - label: 'Cancel', - handler: () => cancelHandler() - } - ], - maxOptions: 7 - }); - return false; - } + ], + maxOptions: 7 + }); + return false; } - break; + } + break; } return true; diff --git a/src/system/trainer-data.ts b/src/system/trainer-data.ts index bf1cc9c9a4c..6a6389e2e77 100644 --- a/src/system/trainer-data.ts +++ b/src/system/trainer-data.ts @@ -1,6 +1,6 @@ -import BattleScene from "../battle-scene"; -import { TrainerType } from "../data/enums/trainer-type"; -import Trainer, { TrainerVariant } from "../field/trainer"; +import BattleScene from '../battle-scene'; +import { TrainerType } from '../data/enums/trainer-type'; +import Trainer, { TrainerVariant } from '../field/trainer'; export default class TrainerData { public trainerType: TrainerType; @@ -21,4 +21,4 @@ export default class TrainerData { toTrainer(scene: BattleScene): Trainer { return new Trainer(scene, this.trainerType, this.variant, this.partyTemplateIndex, this.name, this.partnerName); } -} \ No newline at end of file +} diff --git a/src/system/unlockables.ts b/src/system/unlockables.ts index a186b2bec02..f589d03dc80 100644 --- a/src/system/unlockables.ts +++ b/src/system/unlockables.ts @@ -1,4 +1,4 @@ -import { GameModes, gameModes } from "../game-mode"; +import { GameModes, gameModes } from '../game-mode'; export enum Unlockables { ENDLESS_MODE, @@ -8,11 +8,11 @@ export enum Unlockables { export function getUnlockableName(unlockable: Unlockables) { switch (unlockable) { - case Unlockables.ENDLESS_MODE: - return `${gameModes[GameModes.ENDLESS].getName()} Mode`; - case Unlockables.MINI_BLACK_HOLE: - return 'Mini Black Hole'; - case Unlockables.SPLICED_ENDLESS_MODE: - return `${gameModes[GameModes.SPLICED_ENDLESS].getName()} Mode`; + case Unlockables.ENDLESS_MODE: + return `${gameModes[GameModes.ENDLESS].getName()} Mode`; + case Unlockables.MINI_BLACK_HOLE: + return 'Mini Black Hole'; + case Unlockables.SPLICED_ENDLESS_MODE: + return `${gameModes[GameModes.SPLICED_ENDLESS].getName()} Mode`; } -} \ No newline at end of file +} diff --git a/src/system/voucher.ts b/src/system/voucher.ts index 507c14b5bfe..89989033170 100644 --- a/src/system/voucher.ts +++ b/src/system/voucher.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; -import { TrainerType } from "../data/enums/trainer-type"; -import { ModifierTier } from "../modifier/modifier-tier"; -import { Achv, AchvTier, achvs } from "./achv"; +import BattleScene from '../battle-scene'; +import { TrainerType } from '../data/enums/trainer-type'; +import { ModifierTier } from '../modifier/modifier-tier'; +import { Achv, AchvTier, achvs } from './achv'; import i18next from '../plugins/i18n'; export enum VoucherType { @@ -38,41 +38,41 @@ export class Voucher { getTier(): AchvTier { switch (this.voucherType) { - case VoucherType.REGULAR: - return AchvTier.COMMON; - case VoucherType.PLUS: - return AchvTier.GREAT; - case VoucherType.PREMIUM: - return AchvTier.ULTRA; - case VoucherType.GOLDEN: - return AchvTier.ROGUE; + case VoucherType.REGULAR: + return AchvTier.COMMON; + case VoucherType.PLUS: + return AchvTier.GREAT; + case VoucherType.PREMIUM: + return AchvTier.ULTRA; + case VoucherType.GOLDEN: + return AchvTier.ROGUE; } } } export function getVoucherTypeName(voucherType: VoucherType): string { switch (voucherType) { - case VoucherType.REGULAR: - return i18next.t("voucher:eggVoucher"); - case VoucherType.PLUS: - return i18next.t("voucher:eggVoucherPlus"); - case VoucherType.PREMIUM: - return i18next.t("voucher:eggVoucherPremium"); - case VoucherType.GOLDEN: - return i18next.t("voucher:eggVoucherGold"); + case VoucherType.REGULAR: + return i18next.t('voucher:eggVoucher'); + case VoucherType.PLUS: + return i18next.t('voucher:eggVoucherPlus'); + case VoucherType.PREMIUM: + return i18next.t('voucher:eggVoucherPremium'); + case VoucherType.GOLDEN: + return i18next.t('voucher:eggVoucherGold'); } } export function getVoucherTypeIcon(voucherType: VoucherType): string { switch (voucherType) { - case VoucherType.REGULAR: - return 'coupon'; - case VoucherType.PLUS: - return 'pair_of_tickets'; - case VoucherType.PREMIUM: - return 'mystic_ticket'; - case VoucherType.GOLDEN: - return 'golden_mystic_ticket'; + case VoucherType.REGULAR: + return 'coupon'; + case VoucherType.PLUS: + return 'pair_of_tickets'; + case VoucherType.PREMIUM: + return 'mystic_ticket'; + case VoucherType.GOLDEN: + return 'golden_mystic_ticket'; } } @@ -89,7 +89,7 @@ const voucherAchvs: Achv[] = [ achvs.CLASSIC_VICTORY ]; import('../data/trainer-config').then(tc => { const trainerConfigs = tc.trainerConfigs; - for (let achv of voucherAchvs) { + for (const achv of voucherAchvs) { const voucherType = achv.score >= 150 ? VoucherType.GOLDEN : achv.score >= 100 @@ -103,7 +103,7 @@ const voucherAchvs: Achv[] = [ achvs.CLASSIC_VICTORY ]; const bossTrainerTypes = Object.keys(trainerConfigs) .filter(tt => trainerConfigs[tt].isBoss && trainerConfigs[tt].getDerivedType() !== TrainerType.RIVAL); - for (let trainerType of bossTrainerTypes) { + for (const trainerType of bossTrainerTypes) { const voucherType = trainerConfigs[trainerType].moneyMultiplier < 10 ? VoucherType.PLUS : VoucherType.PREMIUM; @@ -111,12 +111,12 @@ const voucherAchvs: Achv[] = [ achvs.CLASSIC_VICTORY ]; const trainerName = trainerConfigs[trainerType].name; vouchers[key] = new Voucher( voucherType, - i18next.t("voucher:defeatTrainer", { trainerName }) + i18next.t('voucher:defeatTrainer', { trainerName }) ); } const voucherKeys = Object.keys(vouchers); - for (let k of voucherKeys) { + for (const k of voucherKeys) { vouchers[k].id = k; } }); diff --git a/src/test/phaser.setup.ts b/src/test/phaser.setup.ts index 1776e8134e2..33d7f3358d0 100644 --- a/src/test/phaser.setup.ts +++ b/src/test/phaser.setup.ts @@ -1,4 +1,4 @@ -import Phaser from "phaser"; +import Phaser from 'phaser'; export default new Phaser.Game({ type: Phaser.HEADLESS, diff --git a/src/test/pokemonSprite.test.ts b/src/test/pokemonSprite.test.ts index 2ea66878f36..4522dda61b5 100644 --- a/src/test/pokemonSprite.test.ts +++ b/src/test/pokemonSprite.test.ts @@ -1,225 +1,225 @@ -import {beforeAll, describe, expect, it} from "vitest"; +import {beforeAll, describe, expect, it} from 'vitest'; import _masterlist from '../../public/images/pokemon/variant/_masterlist.json'; import fs from 'fs'; import path from 'path'; -import {getAppRootDir} from "#app/test/testUtils"; +import {getAppRootDir} from '#app/test/testUtils'; const deepCopy = (data) => { - return JSON.parse(JSON.stringify(data)); -} + return JSON.parse(JSON.stringify(data)); +}; -describe("check if every variant's sprite are correctly set", () => { - let masterlist; - let expVariant; - let femaleVariant; - let backVariant; - let rootDir; +describe('check if every variant\'s sprite are correctly set', () => { + let masterlist; + let expVariant; + let femaleVariant; + let backVariant; + let rootDir; - beforeAll(() => { - rootDir = `${getAppRootDir()}${path.sep}public${path.sep}images${path.sep}pokemon${path.sep}variant${path.sep}` - masterlist = deepCopy(_masterlist); - expVariant = masterlist.exp; - femaleVariant = masterlist.female; - backVariant = masterlist.back; - delete masterlist.exp - delete masterlist.female - delete masterlist.back - }); + beforeAll(() => { + rootDir = `${getAppRootDir()}${path.sep}public${path.sep}images${path.sep}pokemon${path.sep}variant${path.sep}`; + masterlist = deepCopy(_masterlist); + expVariant = masterlist.exp; + femaleVariant = masterlist.female; + backVariant = masterlist.back; + delete masterlist.exp; + delete masterlist.female; + delete masterlist.back; + }); - it('data should not be undefined', () => { - expect(masterlist).not.toBeUndefined(); - expect(expVariant).not.toBeUndefined(); - expect(femaleVariant).not.toBeUndefined(); - expect(backVariant).not.toBeUndefined(); - }); + it('data should not be undefined', () => { + expect(masterlist).not.toBeUndefined(); + expect(expVariant).not.toBeUndefined(); + expect(femaleVariant).not.toBeUndefined(); + expect(backVariant).not.toBeUndefined(); + }); - function getMissingMasterlist(mlist, dirpath, excludes = []) { - const errors = []; - const trimmedDirpath = `variant${path.sep}${dirpath.split(rootDir)[1]}`; - if (fs.existsSync(dirpath)) { - const files = fs.readdirSync(dirpath); - for (const filename of files) { - const filePath = `${dirpath}${filename}` - const trimmedFilePath = `${trimmedDirpath}${filename}` - const ext = filename.split('.')[1]; - const name = filename.split('.')[0]; - if (excludes.includes(name)) continue; - if (name.includes('_')) { - const id = name.split('_')[0]; - const variant = name.split('_')[1]; - if (ext !== 'json') { - if (mlist.hasOwnProperty(id)) { - const urlJsonFile = `${dirpath}${id}.json`; - const trimmedUrlJsonFilepath = `${trimmedDirpath}${id}.json`; - const jsonFileExists = fs.existsSync(urlJsonFile); - if (mlist[id].includes(1)) { - const msg = `[${name}] MISSING JSON ${trimmedUrlJsonFilepath}`; - if (!jsonFileExists && !errors.includes(msg)) errors.push(msg); - } - } - if (!mlist.hasOwnProperty(id)) errors.push(`[${id}] missing key ${id} in masterlist for ${trimmedFilePath}`); - else if (mlist[id][parseInt(variant, 10) - 1] !== 2) { - const urlJsonFile = `${dirpath}${name}.json`; - const trimmedUrlJsonFilepath = `${trimmedDirpath}${name}.json`; - const jsonFileExists = fs.existsSync(urlJsonFile); - if (mlist[id].includes(1)) { - const msg = `[${id}] MISSING JSON ${trimmedUrlJsonFilepath}`; - if (!jsonFileExists && !errors.includes(msg)) errors.push(msg); - } - errors.push(`[${id}] [${mlist[id]}] - the value should be 2 for the index ${parseInt(variant, 10) - 1} - ${trimmedFilePath}`); - } - } - } else if (!mlist.hasOwnProperty(name)) errors.push(`named - missing key ${name} in masterlist for ${trimmedFilePath}`);else { - const raw = fs.readFileSync(filePath, {encoding: 'utf8', flag: 'r'}); - const data = JSON.parse(raw); - for (const key of Object.keys(data)) { - if (mlist[name][key] !== 1) errors.push(`[${name}] [${mlist[name]}] - the value should be 1 for the index ${key} - ${trimmedFilePath}`); - } - } + function getMissingMasterlist(mlist, dirpath, excludes = []) { + const errors = []; + const trimmedDirpath = `variant${path.sep}${dirpath.split(rootDir)[1]}`; + if (fs.existsSync(dirpath)) { + const files = fs.readdirSync(dirpath); + for (const filename of files) { + const filePath = `${dirpath}${filename}`; + const trimmedFilePath = `${trimmedDirpath}${filename}`; + const ext = filename.split('.')[1]; + const name = filename.split('.')[0]; + if (excludes.includes(name)) continue; + if (name.includes('_')) { + const id = name.split('_')[0]; + const variant = name.split('_')[1]; + if (ext !== 'json') { + if (mlist.hasOwnProperty(id)) { + const urlJsonFile = `${dirpath}${id}.json`; + const trimmedUrlJsonFilepath = `${trimmedDirpath}${id}.json`; + const jsonFileExists = fs.existsSync(urlJsonFile); + if (mlist[id].includes(1)) { + const msg = `[${name}] MISSING JSON ${trimmedUrlJsonFilepath}`; + if (!jsonFileExists && !errors.includes(msg)) errors.push(msg); + } } - } - return errors; - } - - function getMissingFiles(keys, dirPath) { - const errors = []; - for (const key of Object.keys(keys)) { - const row = keys[key]; - for (const [index, elm] of row.entries()) { - let url; - if (elm === 0) continue - else if (elm === 1) { - url = `${key}.json` - let filePath = `${dirPath}${url}`; - const raw = fs.readFileSync(filePath, {encoding: 'utf8', flag: 'r'}); - const data = JSON.parse(raw); - if (!data.hasOwnProperty(index)) { - errors.push(`index: ${index} - ${filePath}`); - } - } else if (elm === 2) { - url = `${key}_${parseInt(index, 10) + 1}.png`; - let filePath = `${dirPath}${url}`; - if (!fs.existsSync(filePath)) { - errors.push(filePath) - } - - url = `${key}_${parseInt(index, 10) + 1}.json`; - filePath = `${dirPath}${url}`; - if (!fs.existsSync(filePath)) { - errors.push(filePath) - } - } + if (!mlist.hasOwnProperty(id)) errors.push(`[${id}] missing key ${id} in masterlist for ${trimmedFilePath}`); + else if (mlist[id][parseInt(variant, 10) - 1] !== 2) { + const urlJsonFile = `${dirpath}${name}.json`; + const trimmedUrlJsonFilepath = `${trimmedDirpath}${name}.json`; + const jsonFileExists = fs.existsSync(urlJsonFile); + if (mlist[id].includes(1)) { + const msg = `[${id}] MISSING JSON ${trimmedUrlJsonFilepath}`; + if (!jsonFileExists && !errors.includes(msg)) errors.push(msg); + } + errors.push(`[${id}] [${mlist[id]}] - the value should be 2 for the index ${parseInt(variant, 10) - 1} - ${trimmedFilePath}`); } + } + } else if (!mlist.hasOwnProperty(name)) errors.push(`named - missing key ${name} in masterlist for ${trimmedFilePath}`);else { + const raw = fs.readFileSync(filePath, {encoding: 'utf8', flag: 'r'}); + const data = JSON.parse(raw); + for (const key of Object.keys(data)) { + if (mlist[name][key] !== 1) errors.push(`[${name}] [${mlist[name]}] - the value should be 1 for the index ${key} - ${trimmedFilePath}`); + } } - return errors; + } } + return errors; + } - // chech presence of every files listed in masterlist + function getMissingFiles(keys, dirPath) { + const errors = []; + for (const key of Object.keys(keys)) { + const row = keys[key]; + for (const [index, elm] of row.entries()) { + let url; + if (elm === 0) continue; + else if (elm === 1) { + url = `${key}.json`; + const filePath = `${dirPath}${url}`; + const raw = fs.readFileSync(filePath, {encoding: 'utf8', flag: 'r'}); + const data = JSON.parse(raw); + if (!data.hasOwnProperty(index)) { + errors.push(`index: ${index} - ${filePath}`); + } + } else if (elm === 2) { + url = `${key}_${parseInt(index, 10) + 1}.png`; + let filePath = `${dirPath}${url}`; + if (!fs.existsSync(filePath)) { + errors.push(filePath); + } - it('check root variant files', () => { - const dirPath = rootDir; - const errors = getMissingFiles(masterlist, dirPath); - if (errors.length) console.log('errors', errors); - expect(errors.length).toBe(0); - }); + url = `${key}_${parseInt(index, 10) + 1}.json`; + filePath = `${dirPath}${url}`; + if (!fs.existsSync(filePath)) { + errors.push(filePath); + } + } + } + } + return errors; + } - it('check female variant files', () => { - const dirPath = `${rootDir}female${path.sep}`; - const errors = getMissingFiles(femaleVariant, dirPath); - if (errors.length) console.log('errors', errors); - expect(errors.length).toBe(0); - }); + // chech presence of every files listed in masterlist - it('check back female variant files', () => { - const dirPath = `${rootDir}back${path.sep}female${path.sep}`; - const errors = getMissingFiles(backVariant.female, dirPath); - if (errors.length) console.log('errors', errors); - expect(errors.length).toBe(0); - }); + it('check root variant files', () => { + const dirPath = rootDir; + const errors = getMissingFiles(masterlist, dirPath); + if (errors.length) console.log('errors', errors); + expect(errors.length).toBe(0); + }); - it('check back male back variant files', () => { - const dirPath = `${rootDir}back${path.sep}`; - let backMaleVariant = deepCopy(backVariant); - delete backMaleVariant.female; - const errors = getMissingFiles(backMaleVariant, dirPath); - if (errors.length) console.log('errors', errors); - expect(errors.length).toBe(0); - }); + it('check female variant files', () => { + const dirPath = `${rootDir}female${path.sep}`; + const errors = getMissingFiles(femaleVariant, dirPath); + if (errors.length) console.log('errors', errors); + expect(errors.length).toBe(0); + }); - it('check exp back variant files', () => { - const dirPath = `${rootDir}exp${path.sep}back${path.sep}`; - const errors = getMissingFiles(expVariant.back, dirPath); - if (errors.length) console.log('errors', errors); - expect(errors.length).toBe(0); - }); + it('check back female variant files', () => { + const dirPath = `${rootDir}back${path.sep}female${path.sep}`; + const errors = getMissingFiles(backVariant.female, dirPath); + if (errors.length) console.log('errors', errors); + expect(errors.length).toBe(0); + }); - it('check exp female variant files', () => { - const dirPath = `${rootDir}exp${path.sep}female${path.sep}`; - const errors = getMissingFiles(expVariant.female, dirPath); - if (errors.length) console.log('errors', errors); - expect(errors.length).toBe(0); - }); + it('check back male back variant files', () => { + const dirPath = `${rootDir}back${path.sep}`; + const backMaleVariant = deepCopy(backVariant); + delete backMaleVariant.female; + const errors = getMissingFiles(backMaleVariant, dirPath); + if (errors.length) console.log('errors', errors); + expect(errors.length).toBe(0); + }); - it('check exp male variant files', () => { - const dirPath = `${rootDir}exp${path.sep}`; - let expMaleVariant = deepCopy(expVariant); - delete expMaleVariant.female; - delete expMaleVariant.back; - const errors = getMissingFiles(expMaleVariant, dirPath); - if (errors.length) console.log('errors', errors); - expect(errors.length).toBe(0); - }); + it('check exp back variant files', () => { + const dirPath = `${rootDir}exp${path.sep}back${path.sep}`; + const errors = getMissingFiles(expVariant.back, dirPath); + if (errors.length) console.log('errors', errors); + expect(errors.length).toBe(0); + }); - // check over every file if it's correctly set in the masterlist + it('check exp female variant files', () => { + const dirPath = `${rootDir}exp${path.sep}female${path.sep}`; + const errors = getMissingFiles(expVariant.female, dirPath); + if (errors.length) console.log('errors', errors); + expect(errors.length).toBe(0); + }); - it('look over every file in variant female and check if present in masterlist', () => { - const dirPath = `${rootDir}female${path.sep}`; - const errors = getMissingMasterlist(femaleVariant, dirPath); - if (errors.length) console.log('errors for ', dirPath, errors); - expect(errors.length).toBe(0); - }); + it('check exp male variant files', () => { + const dirPath = `${rootDir}exp${path.sep}`; + const expMaleVariant = deepCopy(expVariant); + delete expMaleVariant.female; + delete expMaleVariant.back; + const errors = getMissingFiles(expMaleVariant, dirPath); + if (errors.length) console.log('errors', errors); + expect(errors.length).toBe(0); + }); - it('look over every file in variant back female and check if present in masterlist', () => { - const dirPath = `${rootDir}back${path.sep}female${path.sep}`; - const errors = getMissingMasterlist(backVariant.female, dirPath); - if (errors.length) console.log('errors for ', dirPath, errors); - expect(errors.length).toBe(0); - }); + // check over every file if it's correctly set in the masterlist - it('look over every file in variant back male and check if present in masterlist', () => { - const dirPath = `${rootDir}back${path.sep}`; - let backMaleVariant = deepCopy(backVariant); - const errors = getMissingMasterlist(backMaleVariant, dirPath, ['female']); - if (errors.length) console.log('errors for ', dirPath, errors); - expect(errors.length).toBe(0); - }); + it('look over every file in variant female and check if present in masterlist', () => { + const dirPath = `${rootDir}female${path.sep}`; + const errors = getMissingMasterlist(femaleVariant, dirPath); + if (errors.length) console.log('errors for ', dirPath, errors); + expect(errors.length).toBe(0); + }); - it('look over every file in variant exp back and check if present in masterlist', () => { - const dirPath = `${rootDir}exp${path.sep}back${path.sep}`; - const errors = getMissingMasterlist(expVariant.back, dirPath); - if (errors.length) console.log('errors for ', dirPath, errors); - expect(errors.length).toBe(0); - }); + it('look over every file in variant back female and check if present in masterlist', () => { + const dirPath = `${rootDir}back${path.sep}female${path.sep}`; + const errors = getMissingMasterlist(backVariant.female, dirPath); + if (errors.length) console.log('errors for ', dirPath, errors); + expect(errors.length).toBe(0); + }); - it('look over every file in variant exp female and check if present in masterlist', () => { - const dirPath = `${rootDir}exp${path.sep}female${path.sep}`; - const errors = getMissingMasterlist(expVariant.female, dirPath); - if (errors.length) console.log('errors for ', dirPath, errors); - expect(errors.length).toBe(0); - }); + it('look over every file in variant back male and check if present in masterlist', () => { + const dirPath = `${rootDir}back${path.sep}`; + const backMaleVariant = deepCopy(backVariant); + const errors = getMissingMasterlist(backMaleVariant, dirPath, ['female']); + if (errors.length) console.log('errors for ', dirPath, errors); + expect(errors.length).toBe(0); + }); - it('look over every file in variant exp male and check if present in masterlist', () => { - const dirPath = `${rootDir}exp${path.sep}`; - const errors = getMissingMasterlist(expVariant, dirPath, ['back', 'female']); - if (errors.length) console.log('errors for ', dirPath, errors); - expect(errors.length).toBe(0); - }); + it('look over every file in variant exp back and check if present in masterlist', () => { + const dirPath = `${rootDir}exp${path.sep}back${path.sep}`; + const errors = getMissingMasterlist(expVariant.back, dirPath); + if (errors.length) console.log('errors for ', dirPath, errors); + expect(errors.length).toBe(0); + }); - it('look over every file in variant root and check if present in masterlist', () => { - const dirPath = `${rootDir}`; - const errors = getMissingMasterlist(masterlist, dirPath, ['back', 'female', 'exp', 'icons']); - if (errors.length) console.log('errors for ', dirPath, errors); - expect(errors.length).toBe(0); - }); -}); \ No newline at end of file + it('look over every file in variant exp female and check if present in masterlist', () => { + const dirPath = `${rootDir}exp${path.sep}female${path.sep}`; + const errors = getMissingMasterlist(expVariant.female, dirPath); + if (errors.length) console.log('errors for ', dirPath, errors); + expect(errors.length).toBe(0); + }); + + it('look over every file in variant exp male and check if present in masterlist', () => { + const dirPath = `${rootDir}exp${path.sep}`; + const errors = getMissingMasterlist(expVariant, dirPath, ['back', 'female']); + if (errors.length) console.log('errors for ', dirPath, errors); + expect(errors.length).toBe(0); + }); + + it('look over every file in variant root and check if present in masterlist', () => { + const dirPath = `${rootDir}`; + const errors = getMissingMasterlist(masterlist, dirPath, ['back', 'female', 'exp', 'icons']); + if (errors.length) console.log('errors for ', dirPath, errors); + expect(errors.length).toBe(0); + }); +}); diff --git a/src/test/testUtils.ts b/src/test/testUtils.ts index 6d01afdb1bc..98c2376182c 100644 --- a/src/test/testUtils.ts +++ b/src/test/testUtils.ts @@ -1,10 +1,10 @@ -const fs = require('fs') -const path = require('path') +const fs = require('fs'); +const path = require('path'); export function getAppRootDir () { - let currentDir = __dirname + let currentDir = __dirname; while(!fs.existsSync(path.join(currentDir, 'package.json'))) { - currentDir = path.join(currentDir, '..') + currentDir = path.join(currentDir, '..'); } - return currentDir -} \ No newline at end of file + return currentDir; +} diff --git a/src/test/vitest.setup.ts b/src/test/vitest.setup.ts index d0141ca9fc3..a28aeeb9deb 100644 --- a/src/test/vitest.setup.ts +++ b/src/test/vitest.setup.ts @@ -1,2 +1,2 @@ -import "vitest-canvas-mock"; -import "#app/test/phaser.setup"; +import 'vitest-canvas-mock'; +import '#app/test/phaser.setup'; diff --git a/src/touch-controls.js b/src/touch-controls.js index d3e8e37abdf..a0bc505f49a 100644 --- a/src/touch-controls.js +++ b/src/touch-controls.js @@ -33,12 +33,12 @@ function simulateKeyboardEvent(eventType, button, buttonMap) { const key = buttonMap[button]; switch (eventType) { - case 'keydown': - key.onDown({}); - break; - case 'keyup': - key.onUp({}); - break; + case 'keydown': + key.onDown({}); + break; + case 'keyup': + key.onUp({}); + break; } } @@ -112,4 +112,4 @@ function bindKey(node, key, buttonMap) { document.getElementById(nextTargetId).classList.add('active'); } }); -} \ No newline at end of file +} diff --git a/src/tutorial.ts b/src/tutorial.ts index 88e88fa809c..6f5043a874c 100644 --- a/src/tutorial.ts +++ b/src/tutorial.ts @@ -1,63 +1,63 @@ -import BattleScene from "./battle-scene"; -import AwaitableUiHandler from "./ui/awaitable-ui-handler"; -import { Mode } from "./ui/ui"; +import BattleScene from './battle-scene'; +import AwaitableUiHandler from './ui/awaitable-ui-handler'; +import { Mode } from './ui/ui'; import i18next from './plugins/i18n'; export enum Tutorial { - Intro = "INTRO", - Access_Menu = "ACCESS_MENU", - Menu = "MENU", - Starter_Select = "STARTER_SELECT", - Pokerus = "POKERUS", - Stat_Change = "STAT_CHANGE", - Select_Item = "SELECT_ITEM", - Egg_Gacha = "EGG_GACHA" + Intro = 'INTRO', + Access_Menu = 'ACCESS_MENU', + Menu = 'MENU', + Starter_Select = 'STARTER_SELECT', + Pokerus = 'POKERUS', + Stat_Change = 'STAT_CHANGE', + Select_Item = 'SELECT_ITEM', + Egg_Gacha = 'EGG_GACHA' } const tutorialHandlers = { [Tutorial.Intro]: (scene: BattleScene) => { return new Promise(resolve => { - scene.ui.showText(i18next.t("tutorial:intro"), null, () => resolve(), null, true); + scene.ui.showText(i18next.t('tutorial:intro'), null, () => resolve(), null, true); }); }, [Tutorial.Access_Menu]: (scene: BattleScene) => { return new Promise(resolve => { if (scene.enableTouchControls) return resolve(); - scene.showFieldOverlay(1000).then(() => scene.ui.showText(i18next.t("tutorial:accessMenu"), null, () => scene.hideFieldOverlay(1000).then(() => resolve()), null, true)); + scene.showFieldOverlay(1000).then(() => scene.ui.showText(i18next.t('tutorial:accessMenu'), null, () => scene.hideFieldOverlay(1000).then(() => resolve()), null, true)); }); }, [Tutorial.Menu]: (scene: BattleScene) => { return new Promise(resolve => { scene.gameData.saveTutorialFlag(Tutorial.Access_Menu, true); - scene.ui.showText(i18next.t("tutorial:menu"), null, () => scene.ui.showText('', null, () => resolve()), null, true); + scene.ui.showText(i18next.t('tutorial:menu'), null, () => scene.ui.showText('', null, () => resolve()), null, true); }); }, [Tutorial.Starter_Select]: (scene: BattleScene) => { return new Promise(resolve => { - scene.ui.showText(i18next.t("tutorial:starterSelect"), null, () => scene.ui.showText('', null, () => resolve()), null, true); + scene.ui.showText(i18next.t('tutorial:starterSelect'), null, () => scene.ui.showText('', null, () => resolve()), null, true); }); }, [Tutorial.Pokerus]: (scene: BattleScene) => { return new Promise(resolve => { - scene.ui.showText(i18next.t("tutorial:pokerus"), null, () => scene.ui.showText('', null, () => resolve()), null, true); + scene.ui.showText(i18next.t('tutorial:pokerus'), null, () => scene.ui.showText('', null, () => resolve()), null, true); }); }, [Tutorial.Stat_Change]: (scene: BattleScene) => { return new Promise(resolve => { - scene.showFieldOverlay(1000).then(() => scene.ui.showText(i18next.t("tutorial:statChange"), null, () => scene.ui.showText('', null, () => scene.hideFieldOverlay(1000).then(() => resolve())), null, true)); + scene.showFieldOverlay(1000).then(() => scene.ui.showText(i18next.t('tutorial:statChange'), null, () => scene.ui.showText('', null, () => scene.hideFieldOverlay(1000).then(() => resolve())), null, true)); }); }, [Tutorial.Select_Item]: (scene: BattleScene) => { return new Promise(resolve => { scene.ui.setModeWithoutClear(Mode.MESSAGE).then(() => { - scene.ui.showText(i18next.t("tutorial:selectItem"), null, () => scene.ui.showText('', null, () => scene.ui.setModeWithoutClear(Mode.MODIFIER_SELECT).then(() => resolve())), null, true); + scene.ui.showText(i18next.t('tutorial:selectItem'), null, () => scene.ui.showText('', null, () => scene.ui.setModeWithoutClear(Mode.MODIFIER_SELECT).then(() => resolve())), null, true); }); }); }, [Tutorial.Egg_Gacha]: (scene: BattleScene) => { return new Promise(resolve => { - scene.ui.showText(i18next.t("tutorial:eggGacha"), null, () => scene.ui.showText('', null, () => resolve()), null, true); + scene.ui.showText(i18next.t('tutorial:eggGacha'), null, () => scene.ui.showText('', null, () => resolve()), null, true); }); }, }; diff --git a/src/ui-inputs.ts b/src/ui-inputs.ts index 38d8e7830c4..5ca3a963261 100644 --- a/src/ui-inputs.ts +++ b/src/ui-inputs.ts @@ -1,154 +1,154 @@ -import Phaser from "phaser"; -import {Mode} from "./ui/ui"; -import {InputsController} from "./inputs-controller"; -import MessageUiHandler from "./ui/message-ui-handler"; -import StarterSelectUiHandler from "./ui/starter-select-ui-handler"; -import {Setting, settingOptions} from "./system/settings"; -import SettingsUiHandler from "./ui/settings-ui-handler"; -import {Button} from "./enums/buttons"; +import Phaser from 'phaser'; +import {Mode} from './ui/ui'; +import {InputsController} from './inputs-controller'; +import MessageUiHandler from './ui/message-ui-handler'; +import StarterSelectUiHandler from './ui/starter-select-ui-handler'; +import {Setting, settingOptions} from './system/settings'; +import SettingsUiHandler from './ui/settings-ui-handler'; +import {Button} from './enums/buttons'; export interface ActionKeys { [key in Button]: () => void; } export class UiInputs { - private scene: Phaser.Scene; - private events: Phaser.Events; - private inputsController: InputsController; + private scene: Phaser.Scene; + private events: Phaser.Events; + private inputsController: InputsController; - constructor(scene: Phaser.Scene, inputsController: InputsController) { - this.scene = scene; - this.inputsController = inputsController; - this.init(); + constructor(scene: Phaser.Scene, inputsController: InputsController) { + this.scene = scene; + this.inputsController = inputsController; + this.init(); + } + + init(): void { + this.events = this.inputsController.events; + this.listenInputs(); + } + + listenInputs(): void { + this.events.on('input_down', (event) => { + const actions = this.getActionsKeyDown(); + if (!actions.hasOwnProperty(event.button)) return; + actions[event.button](); + }, this); + + this.events.on('input_up', (event) => { + const actions = this.getActionsKeyUp(); + if (!actions.hasOwnProperty(event.button)) return; + actions[event.button](); + }, this); + } + + doVibration(inputSuccess: boolean, vibrationLength: number): void { + if (inputSuccess && this.scene.enableVibration && typeof navigator.vibrate !== 'undefined') + navigator.vibrate(vibrationLength); + } + + getActionsKeyDown(): ActionKeys { + const actions = {}; + actions[Button.UP] = () => this.buttonDirection(Button.UP); + actions[Button.DOWN] = () => this.buttonDirection(Button.DOWN); + actions[Button.LEFT] = () => this.buttonDirection(Button.LEFT); + actions[Button.RIGHT] = () => this.buttonDirection(Button.RIGHT); + actions[Button.SUBMIT] = () => this.buttonTouch(); + actions[Button.ACTION] = () => this.buttonAb(Button.ACTION); + actions[Button.CANCEL] = () => this.buttonAb(Button.CANCEL); + actions[Button.MENU] = () => this.buttonMenu(); + actions[Button.STATS] = () => this.buttonStats(true); + actions[Button.CYCLE_SHINY] = () => this.buttonCycleOption(Button.CYCLE_SHINY); + actions[Button.CYCLE_FORM] = () => this.buttonCycleOption(Button.CYCLE_FORM); + actions[Button.CYCLE_GENDER] = () => this.buttonCycleOption(Button.CYCLE_GENDER); + actions[Button.CYCLE_ABILITY] = () => this.buttonCycleOption(Button.CYCLE_ABILITY); + actions[Button.CYCLE_NATURE] = () => this.buttonCycleOption(Button.CYCLE_NATURE); + actions[Button.CYCLE_VARIANT] = () => this.buttonCycleOption(Button.CYCLE_VARIANT); + actions[Button.SPEED_UP] = () => this.buttonSpeedChange(); + actions[Button.SLOW_DOWN] = () => this.buttonSpeedChange(false); + return actions; + } + + getActionsKeyUp(): ActionKeys { + const actions = {}; + actions[Button.STATS] = () => this.buttonStats(false); + return actions; + } + + buttonDirection(direction: Button): void { + const inputSuccess = this.scene.ui.processInput(direction); + const vibrationLength = 5; + this.doVibration(inputSuccess, vibrationLength); + } + + buttonAb(button: Button): void { + this.scene.ui.processInput(button); + } + + buttonTouch(): void { + this.scene.ui.processInput(Button.SUBMIT) || this.scene.ui.processInput(Button.ACTION); + } + + buttonStats(pressed: boolean = true): void { + if (pressed) { + for (const p of this.scene.getField().filter(p => p?.isActive(true))) + p.toggleStats(true); + } else { + for (const p of this.scene.getField().filter(p => p?.isActive(true))) + p.toggleStats(false); } + } - init(): void { - this.events = this.inputsController.events; - this.listenInputs(); + buttonMenu(): void { + if (this.scene.disableMenu) + return; + switch (this.scene.ui?.getMode()) { + case Mode.MESSAGE: + if (!(this.scene.ui.getHandler() as MessageUiHandler).pendingPrompt) + return; + case Mode.TITLE: + case Mode.COMMAND: + case Mode.FIGHT: + case Mode.BALL: + case Mode.TARGET_SELECT: + case Mode.SAVE_SLOT: + case Mode.PARTY: + case Mode.SUMMARY: + case Mode.STARTER_SELECT: + case Mode.CONFIRM: + case Mode.OPTION_SELECT: + this.scene.ui.setOverlayMode(Mode.MENU); + break; + case Mode.MENU: + case Mode.SETTINGS: + case Mode.ACHIEVEMENTS: + this.scene.ui.revertMode(); + this.scene.playSound('select'); + break; + default: + return; } + } - listenInputs(): void { - this.events.on('input_down', (event) => { - const actions = this.getActionsKeyDown(); - if (!actions.hasOwnProperty(event.button)) return; - actions[event.button](); - }, this); - - this.events.on('input_up', (event) => { - const actions = this.getActionsKeyUp(); - if (!actions.hasOwnProperty(event.button)) return; - actions[event.button](); - }, this); + buttonCycleOption(button: Button): void { + if (this.scene.ui?.getHandler() instanceof StarterSelectUiHandler) { + this.scene.ui.processInput(button); } + } - doVibration(inputSuccess: boolean, vibrationLength: number): void { - if (inputSuccess && this.scene.enableVibration && typeof navigator.vibrate !== 'undefined') - navigator.vibrate(vibrationLength); + buttonSpeedChange(up = true): void { + if (up) { + if (this.scene.gameSpeed < 5) { + this.scene.gameData.saveSetting(Setting.Game_Speed, settingOptions[Setting.Game_Speed].indexOf(`${this.scene.gameSpeed}x`) + 1); + if (this.scene.ui?.getMode() === Mode.SETTINGS) + (this.scene.ui.getHandler() as SettingsUiHandler).show([]); + } + return; } - - getActionsKeyDown(): ActionKeys { - const actions = {}; - actions[Button.UP] = () => this.buttonDirection(Button.UP); - actions[Button.DOWN] = () => this.buttonDirection(Button.DOWN); - actions[Button.LEFT] = () => this.buttonDirection(Button.LEFT); - actions[Button.RIGHT] = () => this.buttonDirection(Button.RIGHT); - actions[Button.SUBMIT] = () => this.buttonTouch(); - actions[Button.ACTION] = () => this.buttonAb(Button.ACTION); - actions[Button.CANCEL] = () => this.buttonAb(Button.CANCEL); - actions[Button.MENU] = () => this.buttonMenu(); - actions[Button.STATS] = () => this.buttonStats(true); - actions[Button.CYCLE_SHINY] = () => this.buttonCycleOption(Button.CYCLE_SHINY); - actions[Button.CYCLE_FORM] = () => this.buttonCycleOption(Button.CYCLE_FORM); - actions[Button.CYCLE_GENDER] = () => this.buttonCycleOption(Button.CYCLE_GENDER); - actions[Button.CYCLE_ABILITY] = () => this.buttonCycleOption(Button.CYCLE_ABILITY); - actions[Button.CYCLE_NATURE] = () => this.buttonCycleOption(Button.CYCLE_NATURE); - actions[Button.CYCLE_VARIANT] = () => this.buttonCycleOption(Button.CYCLE_VARIANT); - actions[Button.SPEED_UP] = () => this.buttonSpeedChange(); - actions[Button.SLOW_DOWN] = () => this.buttonSpeedChange(false); - return actions; + if (this.scene.gameSpeed > 1) { + this.scene.gameData.saveSetting(Setting.Game_Speed, Math.max(settingOptions[Setting.Game_Speed].indexOf(`${this.scene.gameSpeed}x`) - 1, 0)); + if (this.scene.ui?.getMode() === Mode.SETTINGS) + (this.scene.ui.getHandler() as SettingsUiHandler).show([]); } + } - getActionsKeyUp(): ActionKeys { - const actions = {}; - actions[Button.STATS] = () => this.buttonStats(false); - return actions; - } - - buttonDirection(direction: Button): void { - const inputSuccess = this.scene.ui.processInput(direction); - const vibrationLength = 5; - this.doVibration(inputSuccess, vibrationLength); - } - - buttonAb(button: Button): void { - this.scene.ui.processInput(button); - } - - buttonTouch(): void { - this.scene.ui.processInput(Button.SUBMIT) || this.scene.ui.processInput(Button.ACTION); - } - - buttonStats(pressed: boolean = true): void { - if (pressed) { - for (let p of this.scene.getField().filter(p => p?.isActive(true))) - p.toggleStats(true); - } else { - for (let p of this.scene.getField().filter(p => p?.isActive(true))) - p.toggleStats(false); - } - } - - buttonMenu(): void { - if (this.scene.disableMenu) - return; - switch (this.scene.ui?.getMode()) { - case Mode.MESSAGE: - if (!(this.scene.ui.getHandler() as MessageUiHandler).pendingPrompt) - return; - case Mode.TITLE: - case Mode.COMMAND: - case Mode.FIGHT: - case Mode.BALL: - case Mode.TARGET_SELECT: - case Mode.SAVE_SLOT: - case Mode.PARTY: - case Mode.SUMMARY: - case Mode.STARTER_SELECT: - case Mode.CONFIRM: - case Mode.OPTION_SELECT: - this.scene.ui.setOverlayMode(Mode.MENU); - break; - case Mode.MENU: - case Mode.SETTINGS: - case Mode.ACHIEVEMENTS: - this.scene.ui.revertMode(); - this.scene.playSound('select'); - break; - default: - return - } - } - - buttonCycleOption(button: Button): void { - if (this.scene.ui?.getHandler() instanceof StarterSelectUiHandler) { - this.scene.ui.processInput(button); - } - } - - buttonSpeedChange(up = true): void { - if (up) { - if (this.scene.gameSpeed < 5) { - this.scene.gameData.saveSetting(Setting.Game_Speed, settingOptions[Setting.Game_Speed].indexOf(`${this.scene.gameSpeed}x`) + 1); - if (this.scene.ui?.getMode() === Mode.SETTINGS) - (this.scene.ui.getHandler() as SettingsUiHandler).show([]); - } - return; - } - if (this.scene.gameSpeed > 1) { - this.scene.gameData.saveSetting(Setting.Game_Speed, Math.max(settingOptions[Setting.Game_Speed].indexOf(`${this.scene.gameSpeed}x`) - 1, 0)); - if (this.scene.ui?.getMode() === Mode.SETTINGS) - (this.scene.ui.getHandler() as SettingsUiHandler).show([]); - } - } - -} \ No newline at end of file +} diff --git a/src/ui/ability-bar.ts b/src/ui/ability-bar.ts index 155123b8553..c90e0b13672 100644 --- a/src/ui/ability-bar.ts +++ b/src/ui/ability-bar.ts @@ -1,6 +1,6 @@ -import BattleScene from "../battle-scene"; -import Pokemon from "../field/pokemon"; -import { TextStyle, addTextObject } from "./text"; +import BattleScene from '../battle-scene'; +import Pokemon from '../field/pokemon'; +import { TextStyle, addTextObject } from './text'; const hiddenX = -118; const shownX = 0; @@ -98,4 +98,4 @@ export default class AbilityBar extends Phaser.GameObjects.Container { this.autoHideTimer = null; }, 2500); } -} \ No newline at end of file +} diff --git a/src/ui/abstact-option-select-ui-handler.ts b/src/ui/abstact-option-select-ui-handler.ts index ffc0cabc89c..d5fb3e8d09e 100644 --- a/src/ui/abstact-option-select-ui-handler.ts +++ b/src/ui/abstact-option-select-ui-handler.ts @@ -1,11 +1,11 @@ -import BattleScene from "../battle-scene"; -import { TextStyle, addTextObject } from "./text"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; -import { addWindow } from "./ui-theme"; -import * as Utils from "../utils"; -import { argbFromRgba } from "@material/material-color-utilities"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { TextStyle, addTextObject } from './text'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; +import { addWindow } from './ui-theme'; +import * as Utils from '../utils'; +import { argbFromRgba } from '@material/material-color-utilities'; +import {Button} from '../enums/buttons'; export interface OptionSelectConfig { xOffset?: number; @@ -176,14 +176,14 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { ui.playError(); } else { switch (button) { - case Button.UP: - if (this.cursor) - success = this.setCursor(this.cursor - 1); - break; - case Button.DOWN: - if (this.cursor < options.length - 1) - success = this.setCursor(this.cursor + 1); - break; + case Button.UP: + if (this.cursor) + success = this.setCursor(this.cursor - 1); + break; + case Button.DOWN: + if (this.cursor < options.length - 1) + success = this.setCursor(this.cursor + 1); + break; } } @@ -211,8 +211,8 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { return options; const optionsScrollTotal = options.length; - let optionStartIndex = this.scrollCursor; - let optionEndIndex = Math.min(optionsScrollTotal, optionStartIndex + (!optionStartIndex || this.scrollCursor + (this.config.maxOptions - 1) >= optionsScrollTotal ? this.config.maxOptions - 1 : this.config.maxOptions - 2)); + const optionStartIndex = this.scrollCursor; + const optionEndIndex = Math.min(optionsScrollTotal, optionStartIndex + (!optionStartIndex || this.scrollCursor + (this.config.maxOptions - 1) >= optionsScrollTotal ? this.config.maxOptions - 1 : this.config.maxOptions - 2)); if (this.config?.maxOptions && options.length > this.config.maxOptions) { options.splice(optionEndIndex, optionsScrollTotal); @@ -286,4 +286,4 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler { this.cursorObj.destroy(); this.cursorObj = null; } -} \ No newline at end of file +} diff --git a/src/ui/achv-bar.ts b/src/ui/achv-bar.ts index 475982117a2..7dc0c3b99d8 100644 --- a/src/ui/achv-bar.ts +++ b/src/ui/achv-bar.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; -import { Achv } from "../system/achv"; -import { Voucher } from "../system/voucher"; -import { TextStyle, addTextObject } from "./text"; +import BattleScene from '../battle-scene'; +import { Achv } from '../system/achv'; +import { Voucher } from '../system/voucher'; +import { TextStyle, addTextObject } from './text'; export default class AchvBar extends Phaser.GameObjects.Container { private bg: Phaser.GameObjects.NineSlice; @@ -97,4 +97,4 @@ export default class AchvBar extends Phaser.GameObjects.Container { } }); } -} \ No newline at end of file +} diff --git a/src/ui/achvs-ui-handler.ts b/src/ui/achvs-ui-handler.ts index 561b0917177..300454f1b8b 100644 --- a/src/ui/achvs-ui-handler.ts +++ b/src/ui/achvs-ui-handler.ts @@ -1,10 +1,10 @@ -import BattleScene from "../battle-scene"; -import { Achv, achvs } from "../system/achv"; -import MessageUiHandler from "./message-ui-handler"; -import { TextStyle, addTextObject } from "./text"; -import { Mode } from "./ui"; -import { addWindow } from "./ui-theme"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { Achv, achvs } from '../system/achv'; +import MessageUiHandler from './message-ui-handler'; +import { TextStyle, addTextObject } from './text'; +import { Mode } from './ui'; +import { addWindow } from './ui-theme'; +import {Button} from '../enums/buttons'; export default class AchvsUiHandler extends MessageUiHandler { private achvsContainer: Phaser.GameObjects.Container; @@ -155,22 +155,22 @@ export default class AchvsUiHandler extends MessageUiHandler { this.scene.ui.revertMode(); } else { switch (button) { - case Button.UP: - if (this.cursor >= 17) - success = this.setCursor(this.cursor - 17); - break; - case Button.DOWN: - if (this.cursor + 17 < Object.keys(achvs).length) - success = this.setCursor(this.cursor + 17); - break; - case Button.LEFT: - if (this.cursor) - success = this.setCursor(this.cursor - 1); - break; - case Button.RIGHT: - if (this.cursor < Object.keys(achvs).length - 1) - success = this.setCursor(this.cursor + 1); - break; + case Button.UP: + if (this.cursor >= 17) + success = this.setCursor(this.cursor - 17); + break; + case Button.DOWN: + if (this.cursor + 17 < Object.keys(achvs).length) + success = this.setCursor(this.cursor + 17); + break; + case Button.LEFT: + if (this.cursor) + success = this.setCursor(this.cursor - 1); + break; + case Button.RIGHT: + if (this.cursor < Object.keys(achvs).length - 1) + success = this.setCursor(this.cursor + 1); + break; } } @@ -181,7 +181,7 @@ export default class AchvsUiHandler extends MessageUiHandler { } setCursor(cursor: integer): boolean { - let ret = super.setCursor(cursor); + const ret = super.setCursor(cursor); let updateAchv = ret; @@ -211,4 +211,4 @@ export default class AchvsUiHandler extends MessageUiHandler { this.cursorObj.destroy(); this.cursorObj = null; } -} \ No newline at end of file +} diff --git a/src/ui/awaitable-ui-handler.ts b/src/ui/awaitable-ui-handler.ts index 532ca1115d2..bbd0189a8f1 100644 --- a/src/ui/awaitable-ui-handler.ts +++ b/src/ui/awaitable-ui-handler.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; +import {Button} from '../enums/buttons'; export default abstract class AwaitableUiHandler extends UiHandler { protected awaitingActionInput: boolean; @@ -24,4 +24,4 @@ export default abstract class AwaitableUiHandler extends UiHandler { return false; } -} \ No newline at end of file +} diff --git a/src/ui/ball-ui-handler.ts b/src/ui/ball-ui-handler.ts index 06729151d44..3366dbb32e7 100644 --- a/src/ui/ball-ui-handler.ts +++ b/src/ui/ball-ui-handler.ts @@ -1,12 +1,12 @@ -import { CommandPhase } from "../phases"; -import BattleScene from "../battle-scene"; -import { getPokeballName } from "../data/pokeball"; -import { addTextObject, TextStyle } from "./text"; -import { Command } from "./command-ui-handler"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; -import { addWindow } from "./ui-theme"; -import {Button} from "../enums/buttons"; +import { CommandPhase } from '../phases'; +import BattleScene from '../battle-scene'; +import { getPokeballName } from '../data/pokeball'; +import { addTextObject, TextStyle } from './text'; +import { Command } from './command-ui-handler'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; +import { addWindow } from './ui-theme'; +import {Button} from '../enums/buttons'; export default class BallUiHandler extends UiHandler { private pokeballSelectContainer: Phaser.GameObjects.Container; @@ -84,12 +84,12 @@ export default class BallUiHandler extends UiHandler { } } else { switch (button) { - case Button.UP: - success = this.setCursor(this.cursor ? this.cursor - 1 : pokeballTypeCount); - break; - case Button.DOWN: - success = this.setCursor(this.cursor < pokeballTypeCount ? this.cursor + 1 : 0); - break; + case Button.UP: + success = this.setCursor(this.cursor ? this.cursor - 1 : pokeballTypeCount); + break; + case Button.DOWN: + success = this.setCursor(this.cursor < pokeballTypeCount ? this.cursor + 1 : 0); + break; } } @@ -127,4 +127,4 @@ export default class BallUiHandler extends UiHandler { this.cursorObj.destroy(); this.cursorObj = null; } -} \ No newline at end of file +} diff --git a/src/ui/battle-info.ts b/src/ui/battle-info.ts index 88bc3230ce3..402adbf0cc9 100644 --- a/src/ui/battle-info.ts +++ b/src/ui/battle-info.ts @@ -106,7 +106,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.shinyIcon = this.scene.add.sprite(0, 0, 'shiny_star'); this.shinyIcon.setVisible(false); this.shinyIcon.setOrigin(0, 0); - this.shinyIcon.setScale(0.5) + this.shinyIcon.setScale(0.5); this.shinyIcon.setPositionRelative(this.nameText, 0, 2); this.shinyIcon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 12, 15), Phaser.Geom.Rectangle.Contains); this.add(this.shinyIcon); @@ -114,7 +114,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.fusionShinyIcon = this.scene.add.sprite(0, 0, 'shiny_star_2'); this.fusionShinyIcon.setVisible(false); this.fusionShinyIcon.setOrigin(0, 0); - this.fusionShinyIcon.setScale(0.5) + this.fusionShinyIcon.setScale(0.5); this.fusionShinyIcon.setPosition(this.shinyIcon.x, this.shinyIcon.y); this.add(this.fusionShinyIcon); @@ -311,7 +311,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { this.lastExp = pokemon.exp; this.lastLevelExp = pokemon.levelExp; - this.statValuesContainer.setPosition(8, 7) + this.statValuesContainer.setPosition(8, 7); } const battleStats = battleStatOrder.map(() => 0); @@ -387,7 +387,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { const maxHp = pokemon.getMaxHp(); for (let s = 1; s < this.bossSegments; s++) { const dividerX = (Math.round((maxHp / this.bossSegments) * s) / maxHp) * this.hpBar.width; - const divider = this.scene.add.rectangle(0, 0, 1, this.hpBar.height - (uiTheme ? 0 : 1), pokemon.bossSegmentIndex >= s ? 0xFFFFFF : 0x404040) + const divider = this.scene.add.rectangle(0, 0, 1, this.hpBar.height - (uiTheme ? 0 : 1), pokemon.bossSegmentIndex >= s ? 0xFFFFFF : 0x404040); divider.setOrigin(0.5, 0); this.add(divider); this.moveBelow(divider as Phaser.GameObjects.GameObject, this.statsContainer); @@ -464,7 +464,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { if (hpFrame !== this.lastHpFrame) { this.hpBar.setFrame(hpFrame); this.lastHpFrame = hpFrame; - }; + } }; const updatePokemonHp = () => { @@ -480,7 +480,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { onUpdate: () => { if (this.player && this.lastHp !== pokemon.hp) { const tweenHp = Math.ceil(this.hpBar.scaleX * pokemon.getMaxHp()); - this.setHpNumbers(tweenHp, pokemon.getMaxHp()) + this.setHpNumbers(tweenHp, pokemon.getMaxHp()); this.lastHp = tweenHp; } @@ -501,7 +501,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { if ((this.lastExp !== pokemon.exp || this.lastLevel !== pokemon.level)) { const originalResolve = resolve; - let durationMultipler = Math.max(Phaser.Tweens.Builders.GetEaseFunction('Cubic.easeIn')(1 - (Math.min(pokemon.level - this.lastLevel, 10) / 10)), 0.1); + const durationMultipler = Math.max(Phaser.Tweens.Builders.GetEaseFunction('Cubic.easeIn')(1 - (Math.min(pokemon.level - this.lastLevel, 10) / 10)), 0.1); resolve = () => this.updatePokemonExp(pokemon, false, durationMultipler).then(() => originalResolve()); } else if (isLevelCapped !== this.lastLevelCapped) this.setLevel(pokemon.level); @@ -536,7 +536,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { let displayName = pokemon.name.replace(/[♂♀]/g, ''); let nameTextWidth: number; - let nameSizeTest = addTextObject(this.scene, 0, 0, displayName, TextStyle.BATTLE_INFO); + const nameSizeTest = addTextObject(this.scene, 0, 0, displayName, TextStyle.BATTLE_INFO); nameTextWidth = nameSizeTest.displayWidth; while (nameTextWidth > (this.player || !this.boss ? 60 : 98) - ((pokemon.gender !== Gender.GENDERLESS ? 6 : 0) + (pokemon.fusionSpecies ? 8 : 0) + (pokemon.isShiny() ? 8 : 0) + (Math.min(pokemon.level.toString().length, 3) - 3) * 8)) { @@ -565,7 +565,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container { instant = true; } const durationMultiplier = Phaser.Tweens.Builders.GetEaseFunction('Sine.easeIn')(1 - (Math.max(this.lastLevel - 100, 0) / 150)); - let duration = this.visible && !instant ? (((levelExp - this.lastLevelExp) / relLevelExp) * 1650) * durationMultiplier * levelDurationMultiplier : 0; + const duration = this.visible && !instant ? (((levelExp - this.lastLevelExp) / relLevelExp) * 1650) * durationMultiplier * levelDurationMultiplier : 0; if (ratio === 1) { this.lastLevelExp = 0; this.lastLevel++; @@ -642,4 +642,4 @@ export class EnemyBattleInfo extends BattleInfo { } setMini(mini: boolean): void { } // Always mini -} \ No newline at end of file +} diff --git a/src/ui/battle-message-ui-handler.ts b/src/ui/battle-message-ui-handler.ts index b7dccef52b5..f791bb71beb 100644 --- a/src/ui/battle-message-ui-handler.ts +++ b/src/ui/battle-message-ui-handler.ts @@ -1,12 +1,12 @@ -import BattleScene from "../battle-scene"; -import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text"; -import { Mode } from "./ui"; -import * as Utils from "../utils"; -import MessageUiHandler from "./message-ui-handler"; -import { getStatName, Stat } from "../data/pokemon-stat"; -import { addWindow } from "./ui-theme"; -import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from './text'; +import { Mode } from './ui'; +import * as Utils from '../utils'; +import MessageUiHandler from './message-ui-handler'; +import { getStatName, Stat } from '../data/pokemon-stat'; +import { addWindow } from './ui-theme'; +import BBCodeText from 'phaser3-rex-plugins/plugins/bbcodetext'; +import {Button} from '../enums/buttons'; import i18next from '../plugins/i18n'; export default class BattleMessageUiHandler extends MessageUiHandler { @@ -102,7 +102,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler { let levelUpStatsLabelText = ''; const stats = Utils.getEnumValues(Stat); - for (let s of stats) + for (const s of stats) levelUpStatsLabelText += `${getStatName(s)}\n`; levelUpStatsLabelsContent.text = levelUpStatsLabelText; levelUpStatsLabelsContent.x -= levelUpStatsLabelsContent.displayWidth; @@ -172,7 +172,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler { const newStats = (this.scene as BattleScene).getParty()[partyMemberIndex].stats; let levelUpStatsValuesText = ''; const stats = Utils.getEnumValues(Stat); - for (let s of stats) + for (const s of stats) levelUpStatsValuesText += `${showTotals ? newStats[s] : newStats[s] - prevStats[s]}\n`; this.levelUpStatsValuesContent.text = levelUpStatsValuesText; this.levelUpStatsIncrContent.setVisible(!showTotals); @@ -196,7 +196,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler { const stats = Utils.getEnumValues(Stat); let shownStats: Stat[] = []; if (shownIvsCount < 6) { - let statsPool = stats.slice(0); + const statsPool = stats.slice(0); for (let i = 0; i < shownIvsCount; i++) { let shownStat: Stat; let highestIv = -1; @@ -211,7 +211,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler { } } else shownStats = stats; - for (let s of stats) + for (const s of stats) levelUpStatsValuesText += `${shownStats.indexOf(s) > -1 ? this.getIvDescriptor(ivs[s], s, pokemonId) : '???'}\n`; this.levelUpStatsValuesContent.text = levelUpStatsValuesText; this.levelUpStatsIncrContent.setVisible(false); @@ -235,20 +235,20 @@ export default class BattleMessageUiHandler extends MessageUiHandler { const textStyle: TextStyle = isBetter ? TextStyle.SUMMARY_GREEN : TextStyle.SUMMARY; const color = getTextColor(textStyle, false, uiTheme); return `[color=${color}][shadow=${getTextColor(textStyle, true, uiTheme)}]${text}[/shadow][/color]`; -}; + }; - if (value > 30) - return coloredText(i18next.t('battleMessageUiHandler:ivBest'), value > starterIvs[typeIv]); - if (value === 30) - return coloredText(i18next.t('battleMessageUiHandler:ivFantastic'), value > starterIvs[typeIv]); - if (value > 20) - return coloredText(i18next.t('battleMessageUiHandler:ivVeryGood'), value > starterIvs[typeIv]); - if (value > 10) - return coloredText(i18next.t('battleMessageUiHandler:ivPrettyGood'), value > starterIvs[typeIv]); - if (value > 0) - return coloredText(i18next.t('battleMessageUiHandler:ivDecent'), value > starterIvs[typeIv]); + if (value > 30) + return coloredText(i18next.t('battleMessageUiHandler:ivBest'), value > starterIvs[typeIv]); + if (value === 30) + return coloredText(i18next.t('battleMessageUiHandler:ivFantastic'), value > starterIvs[typeIv]); + if (value > 20) + return coloredText(i18next.t('battleMessageUiHandler:ivVeryGood'), value > starterIvs[typeIv]); + if (value > 10) + return coloredText(i18next.t('battleMessageUiHandler:ivPrettyGood'), value > starterIvs[typeIv]); + if (value > 0) + return coloredText(i18next.t('battleMessageUiHandler:ivDecent'), value > starterIvs[typeIv]); - return coloredText(i18next.t('battleMessageUiHandler:ivNoGood'), value > starterIvs[typeIv]); + return coloredText(i18next.t('battleMessageUiHandler:ivNoGood'), value > starterIvs[typeIv]); } showNameText(name: string): void { diff --git a/src/ui/candy-bar.ts b/src/ui/candy-bar.ts index a4cc1295028..f3a1538ffaf 100644 --- a/src/ui/candy-bar.ts +++ b/src/ui/candy-bar.ts @@ -1,8 +1,8 @@ -import BattleScene, { starterColors } from "../battle-scene"; -import { TextStyle, addTextObject } from "./text"; -import { argbFromRgba } from "@material/material-color-utilities"; -import * as Utils from "../utils"; -import { Species } from "#app/data/enums/species"; +import BattleScene, { starterColors } from '../battle-scene'; +import { TextStyle, addTextObject } from './text'; +import { argbFromRgba } from '@material/material-color-utilities'; +import * as Utils from '../utils'; +import { Species } from '#app/data/enums/species'; export default class CandyBar extends Phaser.GameObjects.Container { private bg: Phaser.GameObjects.NineSlice; @@ -122,4 +122,4 @@ export default class CandyBar extends Phaser.GameObjects.Container { this.autoHideTimer = null; }, 2500); } -} \ No newline at end of file +} diff --git a/src/ui/char-sprite.ts b/src/ui/char-sprite.ts index 994c10eb9d7..80bb548548f 100644 --- a/src/ui/char-sprite.ts +++ b/src/ui/char-sprite.ts @@ -1,5 +1,5 @@ -import BattleScene from "../battle-scene"; -import * as Utils from "../utils"; +import BattleScene from '../battle-scene'; +import * as Utils from '../utils'; export default class CharSprite extends Phaser.GameObjects.Container { private sprite: Phaser.GameObjects.Sprite; @@ -103,5 +103,5 @@ export default class CharSprite extends Phaser.GameObjects.Container { this.shown = false; }); - }; -} \ No newline at end of file + } +} diff --git a/src/ui/command-ui-handler.ts b/src/ui/command-ui-handler.ts index a2705301563..8ef1795fc25 100644 --- a/src/ui/command-ui-handler.ts +++ b/src/ui/command-ui-handler.ts @@ -1,18 +1,18 @@ -import { CommandPhase } from "../phases"; -import BattleScene from "../battle-scene"; -import { addTextObject, TextStyle } from "./text"; -import PartyUiHandler, { PartyUiMode } from "./party-ui-handler"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; +import { CommandPhase } from '../phases'; +import BattleScene from '../battle-scene'; +import { addTextObject, TextStyle } from './text'; +import PartyUiHandler, { PartyUiMode } from './party-ui-handler'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; import i18next from '../plugins/i18n'; -import {Button} from "../enums/buttons"; +import {Button} from '../enums/buttons'; export enum Command { FIGHT = 0, BALL, POKEMON, RUN -}; +} export default class CommandUiHandler extends UiHandler { private commandsContainer: Phaser.GameObjects.Container; @@ -52,7 +52,7 @@ export default class CommandUiHandler extends UiHandler { this.commandsContainer.setVisible(true); let commandPhase: CommandPhase; - let currentPhase = this.scene.getCurrentPhase(); + const currentPhase = this.scene.getCurrentPhase(); if (currentPhase instanceof CommandPhase) commandPhase = currentPhase; else @@ -79,49 +79,49 @@ export default class CommandUiHandler extends UiHandler { if (button === Button.ACTION) { switch (cursor) { - // Fight - case 0: - if ((this.scene.getCurrentPhase() as CommandPhase).checkFightOverride()) - return true; - ui.setMode(Mode.FIGHT, (this.scene.getCurrentPhase() as CommandPhase).getFieldIndex()); - success = true; - break; + // Fight + case 0: + if ((this.scene.getCurrentPhase() as CommandPhase).checkFightOverride()) + return true; + ui.setMode(Mode.FIGHT, (this.scene.getCurrentPhase() as CommandPhase).getFieldIndex()); + success = true; + break; // Ball - case 1: - ui.setModeWithoutClear(Mode.BALL); - success = true; - break; + case 1: + ui.setModeWithoutClear(Mode.BALL); + success = true; + break; // Pokemon - case 2: - ui.setMode(Mode.PARTY, PartyUiMode.SWITCH, (this.scene.getCurrentPhase() as CommandPhase).getPokemon().getFieldIndex(), null, PartyUiHandler.FilterNonFainted); - success = true; - break; + case 2: + ui.setMode(Mode.PARTY, PartyUiMode.SWITCH, (this.scene.getCurrentPhase() as CommandPhase).getPokemon().getFieldIndex(), null, PartyUiHandler.FilterNonFainted); + success = true; + break; // Run - case 3: - (this.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.RUN, 0); - success = true; - break; + case 3: + (this.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.RUN, 0); + success = true; + break; } } else (this.scene.getCurrentPhase() as CommandPhase).cancel(); } else { switch (button) { - case Button.UP: - if (cursor >= 2) - success = this.setCursor(cursor - 2); - break; - case Button.DOWN: - if (cursor < 2) - success = this.setCursor(cursor + 2); - break; - case Button.LEFT: - if (cursor % 2 === 1) - success = this.setCursor(cursor - 1); - break; - case Button.RIGHT: - if (cursor % 2 === 0) - success = this.setCursor(cursor + 1); - break; + case Button.UP: + if (cursor >= 2) + success = this.setCursor(cursor - 2); + break; + case Button.DOWN: + if (cursor < 2) + success = this.setCursor(cursor + 2); + break; + case Button.LEFT: + if (cursor % 2 === 1) + success = this.setCursor(cursor - 1); + break; + case Button.RIGHT: + if (cursor % 2 === 0) + success = this.setCursor(cursor + 1); + break; } } @@ -167,4 +167,4 @@ export default class CommandUiHandler extends UiHandler { this.cursorObj.destroy(); this.cursorObj = null; } -} \ No newline at end of file +} diff --git a/src/ui/confirm-ui-handler.ts b/src/ui/confirm-ui-handler.ts index a9b959a9950..d52009dce75 100644 --- a/src/ui/confirm-ui-handler.ts +++ b/src/ui/confirm-ui-handler.ts @@ -1,8 +1,8 @@ -import BattleScene from "../battle-scene"; -import AbstractOptionSelectUiHandler, { OptionSelectConfig } from "./abstact-option-select-ui-handler"; -import { Mode } from "./ui"; -import i18next from "i18next"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import AbstractOptionSelectUiHandler, { OptionSelectConfig } from './abstact-option-select-ui-handler'; +import { Mode } from './ui'; +import i18next from 'i18next'; +import {Button} from '../enums/buttons'; export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { @@ -24,14 +24,14 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { const config: OptionSelectConfig = { options: [ { - label: i18next.t("menu:yes"), + label: i18next.t('menu:yes'), handler: () => { args[0](); return true; } }, { - label: i18next.t("menu:no"), + label: i18next.t('menu:no'), handler: () => { args[1](); return true; @@ -73,4 +73,4 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { return ret; } -} \ No newline at end of file +} diff --git a/src/ui/daily-run-scoreboard.ts b/src/ui/daily-run-scoreboard.ts index 139a6d60cd7..9145b5aef32 100644 --- a/src/ui/daily-run-scoreboard.ts +++ b/src/ui/daily-run-scoreboard.ts @@ -1,8 +1,8 @@ -import BattleScene from "../battle-scene"; -import { TextStyle, addTextObject } from "./text"; -import { WindowVariant, addWindow } from "./ui-theme"; -import * as Utils from "../utils"; -import i18next from "i18next"; +import BattleScene from '../battle-scene'; +import { TextStyle, addTextObject } from './text'; +import { WindowVariant, addWindow } from './ui-theme'; +import * as Utils from '../utils'; +import i18next from 'i18next'; interface RankingEntry { rank: integer, @@ -140,13 +140,13 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { entryContainer.add(scoreLabel); switch (this.category) { - case ScoreboardCategory.DAILY: - const waveLabel = addTextObject(this.scene, 68, 0, wave, TextStyle.WINDOW, { fontSize: '54px' }); - entryContainer.add(waveLabel); - break; - case ScoreboardCategory.WEEKLY: - scoreLabel.x -= 16; - break; + case ScoreboardCategory.DAILY: + const waveLabel = addTextObject(this.scene, 68, 0, wave, TextStyle.WINDOW, { fontSize: '54px' }); + entryContainer.add(waveLabel); + break; + case ScoreboardCategory.WEEKLY: + scoreLabel.x -= 16; + break; } return entryContainer; @@ -206,8 +206,8 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { this.isUpdating = false; }); }).catch(err => { - console.error("Failed to load daily rankings:\n", err) - }) + console.error('Failed to load daily rankings:\n', err); + }); } /** @@ -235,4 +235,4 @@ export class DailyRunScoreboard extends Phaser.GameObjects.Container { export interface DailyRunScoreboard { scene: BattleScene -}; \ No newline at end of file +} diff --git a/src/ui/egg-gacha-ui-handler.ts b/src/ui/egg-gacha-ui-handler.ts index 7fd49157da7..7e7a7019b13 100644 --- a/src/ui/egg-gacha-ui-handler.ts +++ b/src/ui/egg-gacha-ui-handler.ts @@ -1,15 +1,15 @@ -import BattleScene from "../battle-scene"; -import { Mode } from "./ui"; -import { TextStyle, addTextObject, getEggTierTextTint } from "./text"; -import MessageUiHandler from "./message-ui-handler"; -import * as Utils from "../utils"; -import { EGG_SEED, Egg, GachaType, getEggTierDefaultHatchWaves, getEggDescriptor, getLegendaryGachaSpeciesForTimestamp } from "../data/egg"; -import { VoucherType, getVoucherTypeIcon } from "../system/voucher"; -import { getPokemonSpecies } from "../data/pokemon-species"; -import { addWindow } from "./ui-theme"; -import { Tutorial, handleTutorial } from "../tutorial"; -import { EggTier } from "../data/enums/egg-type"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { Mode } from './ui'; +import { TextStyle, addTextObject, getEggTierTextTint } from './text'; +import MessageUiHandler from './message-ui-handler'; +import * as Utils from '../utils'; +import { EGG_SEED, Egg, GachaType, getEggTierDefaultHatchWaves, getEggDescriptor, getLegendaryGachaSpeciesForTimestamp } from '../data/egg'; +import { VoucherType, getVoucherTypeIcon } from '../system/voucher'; +import { getPokemonSpecies } from '../data/pokemon-species'; +import { addWindow } from './ui-theme'; +import { Tutorial, handleTutorial } from '../tutorial'; +import { EggTier } from '../data/enums/egg-type'; +import {Button} from '../enums/buttons'; import i18next from '../plugins/i18n'; export default class EggGachaUiHandler extends MessageUiHandler { @@ -60,7 +60,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.eggGachaContainer.add(bg); - const hatchFrameNames = this.scene.anims.generateFrameNames('gacha_hatch', { suffix: ".png", start: 1, end: 4 }); + const hatchFrameNames = this.scene.anims.generateFrameNames('gacha_hatch', { suffix: '.png', start: 1, end: 4 }); this.scene.anims.create({ key: 'open', frames: hatchFrameNames, @@ -95,23 +95,23 @@ export default class EggGachaUiHandler extends MessageUiHandler { gachaInfoContainer.add(gachaUpLabel); switch (gachaType as GachaType) { - case GachaType.LEGENDARY: - const pokemonIcon = this.scene.add.sprite(-20, 6, 'pokemon_icons_0'); - pokemonIcon.setScale(0.5); - pokemonIcon.setOrigin(0, 0.5); + case GachaType.LEGENDARY: + const pokemonIcon = this.scene.add.sprite(-20, 6, 'pokemon_icons_0'); + pokemonIcon.setScale(0.5); + pokemonIcon.setOrigin(0, 0.5); - gachaInfoContainer.add(pokemonIcon); - break; - case GachaType.MOVE: - gachaUpLabel.setText('Move UP!'); - gachaUpLabel.setX(0); - gachaUpLabel.setOrigin(0.5, 0); - break; - case GachaType.SHINY: - gachaUpLabel.setText('Shiny UP!'); - gachaUpLabel.setX(0); - gachaUpLabel.setOrigin(0.5, 0); - break; + gachaInfoContainer.add(pokemonIcon); + break; + case GachaType.MOVE: + gachaUpLabel.setText('Move UP!'); + gachaUpLabel.setX(0); + gachaUpLabel.setOrigin(0.5, 0); + break; + case GachaType.SHINY: + gachaUpLabel.setText('Shiny UP!'); + gachaUpLabel.setX(0); + gachaUpLabel.setOrigin(0.5, 0); + break; } const gachaKnob = this.scene.add.sprite(191, 89, 'gacha_knob'); @@ -142,7 +142,7 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.updateGachaInfo(g); }); - this.eggGachaOptionsContainer = this.scene.add.container() + this.eggGachaOptionsContainer = this.scene.add.container(); this.eggGachaOptionsContainer = this.scene.add.container((this.scene.game.canvas.width / 6), 148); this.eggGachaContainer.add(this.eggGachaOptionsContainer); @@ -283,51 +283,51 @@ export default class EggGachaUiHandler extends MessageUiHandler { const doPullAnim = () => { this.scene.playSound('gacha_running', { loop: true }); - this.scene.time.delayedCall(this.getDelayValue(count ? 500 : 1250), () => { - this.scene.playSound('gacha_dispense'); - this.scene.time.delayedCall(this.getDelayValue(750), () => { - this.scene.sound.stopByKey('gacha_running'); - this.scene.tweens.add({ - targets: egg, - duration: this.getDelayValue(350), - y: 95, - ease: 'Bounce.easeOut', - onComplete: () => { - this.scene.time.delayedCall(this.getDelayValue(125), () => { - this.scene.playSound('pb_catch'); - this.gachaHatches[this.gachaCursor].play('open'); - this.scene.tweens.add({ - targets: egg, - duration: this.getDelayValue(350), - scale: 0.75, - ease: 'Sine.easeIn' - }); - this.scene.tweens.add({ - targets: egg, - y: 110, - duration: this.getDelayValue(350), - ease: 'Back.easeOut', - onComplete: () => { - this.gachaHatches[this.gachaCursor].play('close'); - this.scene.tweens.add({ - targets: egg, - y: 200, - duration: this.getDelayValue(350), - ease: 'Cubic.easeIn', - onComplete: () => { - if (++count < pullCount) - this.pull(pullCount, count, eggs); - else - this.showSummary(eggs); - } - }); - } - }); + this.scene.time.delayedCall(this.getDelayValue(count ? 500 : 1250), () => { + this.scene.playSound('gacha_dispense'); + this.scene.time.delayedCall(this.getDelayValue(750), () => { + this.scene.sound.stopByKey('gacha_running'); + this.scene.tweens.add({ + targets: egg, + duration: this.getDelayValue(350), + y: 95, + ease: 'Bounce.easeOut', + onComplete: () => { + this.scene.time.delayedCall(this.getDelayValue(125), () => { + this.scene.playSound('pb_catch'); + this.gachaHatches[this.gachaCursor].play('open'); + this.scene.tweens.add({ + targets: egg, + duration: this.getDelayValue(350), + scale: 0.75, + ease: 'Sine.easeIn' }); - } - }); + this.scene.tweens.add({ + targets: egg, + y: 110, + duration: this.getDelayValue(350), + ease: 'Back.easeOut', + onComplete: () => { + this.gachaHatches[this.gachaCursor].play('close'); + this.scene.tweens.add({ + targets: egg, + y: 200, + duration: this.getDelayValue(350), + ease: 'Cubic.easeIn', + onComplete: () => { + if (++count < pullCount) + this.pull(pullCount, count, eggs); + else + this.showSummary(eggs); + } + }); + } + }); + }); + } }); }); + }); }; if (!count) { @@ -369,22 +369,22 @@ export default class EggGachaUiHandler extends MessageUiHandler { const timestamp = new Date().getTime(); - for (let tier of tiers) { + for (const tier of tiers) { const egg = new Egg(Utils.randInt(EGG_SEED, EGG_SEED * tier), this.gachaCursor, getEggTierDefaultHatchWaves(tier), timestamp); if (egg.isManaphyEgg()) { this.scene.gameData.gameStats.manaphyEggsPulled++; egg.hatchWaves = getEggTierDefaultHatchWaves(EggTier.ULTRA); } else { switch (tier) { - case EggTier.GREAT: - this.scene.gameData.gameStats.rareEggsPulled++; - break; - case EggTier.ULTRA: - this.scene.gameData.gameStats.epicEggsPulled++; - break; - case EggTier.MASTER: - this.scene.gameData.gameStats.legendaryEggsPulled++; - break; + case EggTier.GREAT: + this.scene.gameData.gameStats.rareEggsPulled++; + break; + case EggTier.ULTRA: + this.scene.gameData.gameStats.epicEggsPulled++; + break; + case EggTier.MASTER: + this.scene.gameData.gameStats.legendaryEggsPulled++; + break; } } eggs.push(egg); @@ -473,11 +473,11 @@ export default class EggGachaUiHandler extends MessageUiHandler { updateGachaInfo(gachaType: GachaType): void { const infoContainer = this.gachaInfoContainers[gachaType]; switch (gachaType as GachaType) { - case GachaType.LEGENDARY: - const species = getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(this.scene, new Date().getTime())); - const pokemonIcon = infoContainer.getAt(1) as Phaser.GameObjects.Sprite; - pokemonIcon.setTexture(species.getIconAtlasKey(), species.getIconId(false)); - break; + case GachaType.LEGENDARY: + const species = getPokemonSpecies(getLegendaryGachaSpeciesForTimestamp(this.scene, new Date().getTime())); + const pokemonIcon = infoContainer.getAt(1) as Phaser.GameObjects.Sprite; + pokemonIcon.setTexture(species.getIconAtlasKey(), species.getIconId(false)); + break; } } @@ -541,91 +541,91 @@ export default class EggGachaUiHandler extends MessageUiHandler { } } else { switch (button) { - case Button.ACTION: - switch (this.cursor) { - case 0: - if (!this.scene.gameData.voucherCounts[VoucherType.REGULAR]) { - error = true; - this.showError(i18next.t('egg:notEnoughVouchers')); - } else if (this.scene.gameData.eggs.length < 99) { - this.consumeVouchers(VoucherType.REGULAR, 1); - this.pull(); - success = true; - } else { - error = true; - this.showError(i18next.t('egg:tooManyEggs')); - } - break; - case 2: - if (!this.scene.gameData.voucherCounts[VoucherType.PLUS]) { - error = true; - this.showError(i18next.t('egg:notEnoughVouchers')); - } else if (this.scene.gameData.eggs.length < 95) { - this.consumeVouchers(VoucherType.PLUS, 1); - this.pull(5); - success = true; - } else { - error = true; - this.showError(i18next.t('egg:tooManyEggs')); - } - break; - case 1: - case 3: - if ((this.cursor === 1 && this.scene.gameData.voucherCounts[VoucherType.REGULAR] < 10) - || (this.cursor === 3 && !this.scene.gameData.voucherCounts[VoucherType.PREMIUM])) { - error = true; - this.showError(i18next.t('egg:notEnoughVouchers')); - } else if (this.scene.gameData.eggs.length < 90) { - if (this.cursor === 3) - this.consumeVouchers(VoucherType.PREMIUM, 1); - else - this.consumeVouchers(VoucherType.REGULAR, 10); - this.pull(10); - success = true; - } else { - error = true; - this.showError(i18next.t('egg:tooManyEggs')); - } - break; - case 4: - if (!this.scene.gameData.voucherCounts[VoucherType.GOLDEN]) { - error = true; - this.showError(i18next.t('egg:notEnoughVouchers')); - } else if (this.scene.gameData.eggs.length < 75) { - this.consumeVouchers(VoucherType.GOLDEN, 1); - this.pull(25); - success = true; - } else { - error = true; - this.showError(i18next.t('egg:tooManyEggs')); - } - break; - case 5: - ui.revertMode(); - success = true; - break; + case Button.ACTION: + switch (this.cursor) { + case 0: + if (!this.scene.gameData.voucherCounts[VoucherType.REGULAR]) { + error = true; + this.showError(i18next.t('egg:notEnoughVouchers')); + } else if (this.scene.gameData.eggs.length < 99) { + this.consumeVouchers(VoucherType.REGULAR, 1); + this.pull(); + success = true; + } else { + error = true; + this.showError(i18next.t('egg:tooManyEggs')); } break; - case Button.CANCEL: - this.getUi().revertMode(); + case 2: + if (!this.scene.gameData.voucherCounts[VoucherType.PLUS]) { + error = true; + this.showError(i18next.t('egg:notEnoughVouchers')); + } else if (this.scene.gameData.eggs.length < 95) { + this.consumeVouchers(VoucherType.PLUS, 1); + this.pull(5); + success = true; + } else { + error = true; + this.showError(i18next.t('egg:tooManyEggs')); + } + break; + case 1: + case 3: + if ((this.cursor === 1 && this.scene.gameData.voucherCounts[VoucherType.REGULAR] < 10) + || (this.cursor === 3 && !this.scene.gameData.voucherCounts[VoucherType.PREMIUM])) { + error = true; + this.showError(i18next.t('egg:notEnoughVouchers')); + } else if (this.scene.gameData.eggs.length < 90) { + if (this.cursor === 3) + this.consumeVouchers(VoucherType.PREMIUM, 1); + else + this.consumeVouchers(VoucherType.REGULAR, 10); + this.pull(10); + success = true; + } else { + error = true; + this.showError(i18next.t('egg:tooManyEggs')); + } + break; + case 4: + if (!this.scene.gameData.voucherCounts[VoucherType.GOLDEN]) { + error = true; + this.showError(i18next.t('egg:notEnoughVouchers')); + } else if (this.scene.gameData.eggs.length < 75) { + this.consumeVouchers(VoucherType.GOLDEN, 1); + this.pull(25); + success = true; + } else { + error = true; + this.showError(i18next.t('egg:tooManyEggs')); + } + break; + case 5: + ui.revertMode(); success = true; break; - case Button.UP: - if (this.cursor) - success = this.setCursor(this.cursor - 1); - break; - case Button.DOWN: - if (this.cursor < 5) - success = this.setCursor(this.cursor + 1); - break; - case Button.LEFT: - if (this.gachaCursor) - success = this.setGachaCursor(this.gachaCursor - 1); - break; - case Button.RIGHT: - if (this.gachaCursor < Utils.getEnumKeys(GachaType).length - 1) - success = this.setGachaCursor(this.gachaCursor + 1); - break; + } + break; + case Button.CANCEL: + this.getUi().revertMode(); + success = true; + break; + case Button.UP: + if (this.cursor) + success = this.setCursor(this.cursor - 1); + break; + case Button.DOWN: + if (this.cursor < 5) + success = this.setCursor(this.cursor + 1); + break; + case Button.LEFT: + if (this.gachaCursor) + success = this.setGachaCursor(this.gachaCursor - 1); + break; + case Button.RIGHT: + if (this.gachaCursor < Utils.getEnumKeys(GachaType).length - 1) + success = this.setGachaCursor(this.gachaCursor + 1); + break; } } } @@ -652,9 +652,9 @@ export default class EggGachaUiHandler extends MessageUiHandler { } setGachaCursor(cursor: integer): boolean { - let oldCursor = this.gachaCursor; + const oldCursor = this.gachaCursor; - let changed = oldCursor !== cursor; + const changed = oldCursor !== cursor; if (changed) { this.gachaCursor = cursor; @@ -678,4 +678,4 @@ export default class EggGachaUiHandler extends MessageUiHandler { this.setGachaCursor(-1); this.eggGachaContainer.setVisible(false); } -} \ No newline at end of file +} diff --git a/src/ui/egg-hatch-scene-handler.ts b/src/ui/egg-hatch-scene-handler.ts index ea8df429c58..64e6e78d629 100644 --- a/src/ui/egg-hatch-scene-handler.ts +++ b/src/ui/egg-hatch-scene-handler.ts @@ -1,8 +1,8 @@ -import BattleScene from "../battle-scene"; -import { EggHatchPhase } from "../egg-hatch-phase"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { EggHatchPhase } from '../egg-hatch-phase'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; +import {Button} from '../enums/buttons'; export default class EggHatchSceneHandler extends UiHandler { public eggHatchContainer: Phaser.GameObjects.Container; @@ -52,4 +52,4 @@ export default class EggHatchSceneHandler extends UiHandler { this.eggHatchContainer.removeAll(true); this.getUi().hideTooltip(); } -} \ No newline at end of file +} diff --git a/src/ui/egg-list-ui-handler.ts b/src/ui/egg-list-ui-handler.ts index a62eb743697..fc24a754bcc 100644 --- a/src/ui/egg-list-ui-handler.ts +++ b/src/ui/egg-list-ui-handler.ts @@ -1,12 +1,12 @@ -import BattleScene from "../battle-scene"; -import { Mode } from "./ui"; -import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim-handler"; -import { TextStyle, addTextObject } from "./text"; -import MessageUiHandler from "./message-ui-handler"; -import { EGG_SEED, Egg, GachaType, getEggGachaTypeDescriptor, getEggHatchWavesMessage, getEggDescriptor } from "../data/egg"; -import * as Utils from "../utils"; -import { addWindow } from "./ui-theme"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { Mode } from './ui'; +import PokemonIconAnimHandler, { PokemonIconAnimMode } from './pokemon-icon-anim-handler'; +import { TextStyle, addTextObject } from './text'; +import MessageUiHandler from './message-ui-handler'; +import { EGG_SEED, Egg, GachaType, getEggGachaTypeDescriptor, getEggHatchWavesMessage, getEggDescriptor } from '../data/egg'; +import * as Utils from '../utils'; +import { addWindow } from './ui-theme'; +import {Button} from '../enums/buttons'; import i18next from '../plugins/i18n'; export default class EggListUiHandler extends MessageUiHandler { @@ -72,7 +72,7 @@ export default class EggListUiHandler extends MessageUiHandler { this.cursorObj.setOrigin(0, 0); this.eggListContainer.add(this.cursorObj); - this.eggSprite = this.scene.add.sprite(54, 37, `egg`); + this.eggSprite = this.scene.add.sprite(54, 37, 'egg'); this.eggListContainer.add(this.eggSprite); this.eggListMessageBoxContainer = this.scene.add.container(0, this.scene.game.canvas.height / 6); @@ -106,7 +106,7 @@ export default class EggListUiHandler extends MessageUiHandler { new Egg(1 + EGG_SEED * 3, GachaType.LEGENDARY, 100, new Date().getTime()) ];*/ - for (let egg of this.scene.gameData.eggs) { + for (const egg of this.scene.gameData.eggs) { const x = (e % 11) * 18; const y = Math.floor(e / 11) * 18; const icon = this.scene.add.sprite(x - 2, y + 2, 'egg_icons'); @@ -127,7 +127,7 @@ export default class EggListUiHandler extends MessageUiHandler { const ui = this.getUi(); let success = false; - let error = false; + const error = false; if (button === Button.CANCEL) { ui.revertMode(); @@ -137,22 +137,22 @@ export default class EggListUiHandler extends MessageUiHandler { const rows = Math.ceil(eggCount / 11); const row = Math.floor(this.cursor / 11); switch (button) { - case Button.UP: - if (row) - success = this.setCursor(this.cursor - 11); - break; - case Button.DOWN: - if (row < rows - 2 || (row < rows - 1 && this.cursor % 11 <= (eggCount - 1) % 11)) - success = this.setCursor(this.cursor + 11); - break; - case Button.LEFT: - if (this.cursor % 11) - success = this.setCursor(this.cursor - 1); - break; - case Button.RIGHT: - if (this.cursor % 11 < (row < rows - 1 ? 10 : (eggCount - 1) % 11)) - success = this.setCursor(this.cursor + 1); - break; + case Button.UP: + if (row) + success = this.setCursor(this.cursor - 11); + break; + case Button.DOWN: + if (row < rows - 2 || (row < rows - 1 && this.cursor % 11 <= (eggCount - 1) % 11)) + success = this.setCursor(this.cursor + 11); + break; + case Button.LEFT: + if (this.cursor % 11) + success = this.setCursor(this.cursor - 1); + break; + case Button.RIGHT: + if (this.cursor % 11 < (row < rows - 1 ? 10 : (eggCount - 1) % 11)) + success = this.setCursor(this.cursor + 1); + break; } } @@ -182,7 +182,7 @@ export default class EggListUiHandler extends MessageUiHandler { setCursor(cursor: integer): boolean { let changed = false; - let lastCursor = this.cursor; + const lastCursor = this.cursor; changed = super.setCursor(cursor); @@ -206,4 +206,4 @@ export default class EggListUiHandler extends MessageUiHandler { this.iconAnimHandler.removeAll(); this.eggListIconContainer.removeAll(true); } -} \ No newline at end of file +} diff --git a/src/ui/evolution-scene-handler.ts b/src/ui/evolution-scene-handler.ts index 3361e9038d8..677da334e1e 100644 --- a/src/ui/evolution-scene-handler.ts +++ b/src/ui/evolution-scene-handler.ts @@ -1,8 +1,8 @@ -import BattleScene from "../battle-scene"; -import MessageUiHandler from "./message-ui-handler"; -import { TextStyle, addTextObject } from "./text"; -import { Mode } from "./ui"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import MessageUiHandler from './message-ui-handler'; +import { TextStyle, addTextObject } from './text'; +import { Mode } from './ui'; +import {Button} from '../enums/buttons'; export default class EvolutionSceneHandler extends MessageUiHandler { public evolutionContainer: Phaser.GameObjects.Container; @@ -25,7 +25,7 @@ export default class EvolutionSceneHandler extends MessageUiHandler { ui.add(this.evolutionContainer); const messageBg = this.scene.add.sprite(0, 0, 'bg', this.scene.windowType); - messageBg.setOrigin(0, 1); + messageBg.setOrigin(0, 1); messageBg.setVisible(false); ui.add(messageBg); @@ -97,4 +97,4 @@ export default class EvolutionSceneHandler extends MessageUiHandler { this.messageContainer.setVisible(false); this.messageBg.setVisible(false); } -} \ No newline at end of file +} diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 084337b4086..f84dec0b910 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -1,14 +1,14 @@ -import BattleScene from "../battle-scene"; -import { addTextObject, TextStyle } from "./text"; -import { Type } from "../data/type"; -import { Command } from "./command-ui-handler"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; -import * as Utils from "../utils"; -import { CommandPhase } from "../phases"; -import { MoveCategory } from "#app/data/move.js"; +import BattleScene from '../battle-scene'; +import { addTextObject, TextStyle } from './text'; +import { Type } from '../data/type'; +import { Command } from './command-ui-handler'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; +import * as Utils from '../utils'; +import { CommandPhase } from '../phases'; +import { MoveCategory } from '#app/data/move.js'; import i18next from '../plugins/i18n'; -import {Button} from "../enums/buttons"; +import {Button} from '../enums/buttons'; export default class FightUiHandler extends UiHandler { private movesContainer: Phaser.GameObjects.Container; @@ -68,7 +68,7 @@ export default class FightUiHandler extends UiHandler { this.accuracyLabel = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 70, -10, 'ACC', TextStyle.MOVE_INFO_CONTENT); this.accuracyLabel.setOrigin(0.0, 0.5); this.accuracyLabel.setVisible(false); - this.accuracyLabel.setText(i18next.t('fightUiHandler:accuracy')) + this.accuracyLabel.setText(i18next.t('fightUiHandler:accuracy')); ui.add(this.accuracyLabel); this.accuracyText = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 12, -10, '---', TextStyle.MOVE_INFO_CONTENT); @@ -110,22 +110,22 @@ export default class FightUiHandler extends UiHandler { } } else { switch (button) { - case Button.UP: - if (cursor >= 2) - success = this.setCursor(cursor - 2); - break; - case Button.DOWN: - if (cursor < 2) - success = this.setCursor(cursor + 2); - break; - case Button.LEFT: - if (cursor % 2 === 1) - success = this.setCursor(cursor - 1); - break; - case Button.RIGHT: - if (cursor % 2 === 0) - success = this.setCursor(cursor + 1); - break; + case Button.UP: + if (cursor >= 2) + success = this.setCursor(cursor - 2); + break; + case Button.DOWN: + if (cursor < 2) + success = this.setCursor(cursor + 2); + break; + case Button.LEFT: + if (cursor % 2 === 1) + success = this.setCursor(cursor - 1); + break; + case Button.RIGHT: + if (cursor % 2 === 0) + success = this.setCursor(cursor + 1); + break; } } @@ -221,4 +221,4 @@ export default class FightUiHandler extends UiHandler { this.cursorObj.destroy(); this.cursorObj = null; } -} \ No newline at end of file +} diff --git a/src/ui/form-modal-ui-handler.ts b/src/ui/form-modal-ui-handler.ts index b2c2c118100..48258adb6db 100644 --- a/src/ui/form-modal-ui-handler.ts +++ b/src/ui/form-modal-ui-handler.ts @@ -1,12 +1,12 @@ -import BattleScene from "../battle-scene"; -import { ModalConfig, ModalUiHandler } from "./modal-ui-handler"; -import { Mode } from "./ui"; -import { TextStyle, addTextInputObject, addTextObject } from "./text"; -import { WindowVariant, addWindow } from "./ui-theme"; -import InputText from "phaser3-rex-plugins/plugins/inputtext"; -import * as Utils from "../utils"; +import BattleScene from '../battle-scene'; +import { ModalConfig, ModalUiHandler } from './modal-ui-handler'; +import { Mode } from './ui'; +import { TextStyle, addTextInputObject, addTextObject } from './text'; +import { WindowVariant, addWindow } from './ui-theme'; +import InputText from 'phaser3-rex-plugins/plugins/inputtext'; +import * as Utils from '../utils'; import i18next from '../plugins/i18n'; -import {Button} from "../enums/buttons"; +import {Button} from '../enums/buttons'; export interface FormModalConfig extends ModalConfig { errorMessage?: string; @@ -57,7 +57,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler { const inputBg = addWindow(this.scene, 0, 0, 80, 16, false, false, 0, 0, WindowVariant.XTHIN); - const isPassword = field.includes(i18next.t("menu:password")) || field.includes(i18next.t("menu:confirmPassword")); + const isPassword = field.includes(i18next.t('menu:password')) || field.includes(i18next.t('menu:confirmPassword')); const input = addTextInputObject(this.scene, 4, -2, 440, 116, TextStyle.TOOLTIP_CONTENT, { type: isPassword ? 'password' : 'text', maxLength: isPassword ? 64 : 16 }); input.setOrigin(0, 0); @@ -121,7 +121,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler { } sanitizeInputs(): void { - for (let input of this.inputs) + for (const input of this.inputs) input.text = input.text.trim(); } @@ -140,4 +140,4 @@ export abstract class FormModalUiHandler extends ModalUiHandler { this.submitAction = null; } -} \ No newline at end of file +} diff --git a/src/ui/game-stats-ui-handler.ts b/src/ui/game-stats-ui-handler.ts index c053d5700ac..2ea7bc381cb 100644 --- a/src/ui/game-stats-ui-handler.ts +++ b/src/ui/game-stats-ui-handler.ts @@ -1,12 +1,12 @@ -import BattleScene from "../battle-scene"; -import { TextStyle, addTextObject, getTextColor } from "./text"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; -import { addWindow } from "./ui-theme"; -import * as Utils from "../utils"; -import { DexAttr, GameData } from "../system/game-data"; -import { speciesStarters } from "../data/pokemon-species"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { TextStyle, addTextObject, getTextColor } from './text'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; +import { addWindow } from './ui-theme'; +import * as Utils from '../utils'; +import { DexAttr, GameData } from '../system/game-data'; +import { speciesStarters } from '../data/pokemon-species'; +import {Button} from '../enums/buttons'; interface DisplayStat { label?: string; @@ -193,14 +193,14 @@ export default class GameStatsUiHandler extends UiHandler { this.scene.ui.revertMode(); } else { switch (button) { - case Button.UP: - if (this.cursor) - success = this.setCursor(this.cursor - 1); - break; - case Button.DOWN: - if (this.cursor < Math.ceil((Object.keys(displayStats).length - 18) / 2)) - success = this.setCursor(this.cursor + 1); - break; + case Button.UP: + if (this.cursor) + success = this.setCursor(this.cursor - 1); + break; + case Button.DOWN: + if (this.cursor < Math.ceil((Object.keys(displayStats).length - 18) / 2)) + success = this.setCursor(this.cursor + 1); + break; } } @@ -228,7 +228,7 @@ export default class GameStatsUiHandler extends UiHandler { (function () { const statKeys = Object.keys(displayStats); - for (let key of statKeys) { + for (const key of statKeys) { if (typeof displayStats[key] === 'string') { let label = displayStats[key] as string; let hidden = false; @@ -251,4 +251,4 @@ export default class GameStatsUiHandler extends UiHandler { (displayStats[key] as DisplayStat).label = Utils.toReadableString(`${splittableKey[0].toUpperCase()}${splittableKey.slice(1)}`); } } -})(); \ No newline at end of file +})(); diff --git a/src/ui/loading-modal-ui-handler.ts b/src/ui/loading-modal-ui-handler.ts index 731348905bf..089ca53cb15 100644 --- a/src/ui/loading-modal-ui-handler.ts +++ b/src/ui/loading-modal-ui-handler.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; -import { ModalUiHandler } from "./modal-ui-handler"; -import { addTextObject, TextStyle } from "./text"; -import { Mode } from "./ui"; +import BattleScene from '../battle-scene'; +import { ModalUiHandler } from './modal-ui-handler'; +import { addTextObject, TextStyle } from './text'; +import { Mode } from './ui'; export default class LoadingModalUiHandler extends ModalUiHandler { constructor(scene: BattleScene, mode?: Mode) { @@ -36,4 +36,4 @@ export default class LoadingModalUiHandler extends ModalUiHandler { this.modalContainer.add(label); } -} \ No newline at end of file +} diff --git a/src/ui/login-form-ui-handler.ts b/src/ui/login-form-ui-handler.ts index f77efcad260..eb07ce9be2b 100644 --- a/src/ui/login-form-ui-handler.ts +++ b/src/ui/login-form-ui-handler.ts @@ -1,7 +1,7 @@ -import { FormModalUiHandler } from "./form-modal-ui-handler"; -import { ModalConfig } from "./modal-ui-handler"; -import * as Utils from "../utils"; -import { Mode } from "./ui"; +import { FormModalUiHandler } from './form-modal-ui-handler'; +import { ModalConfig } from './modal-ui-handler'; +import * as Utils from '../utils'; +import { Mode } from './ui'; import i18next from '../plugins/i18n'; export default class LoginFormUiHandler extends FormModalUiHandler { @@ -26,18 +26,18 @@ export default class LoginFormUiHandler extends FormModalUiHandler { } getReadableErrorMessage(error: string): string { - let colonIndex = error?.indexOf(':'); + const colonIndex = error?.indexOf(':'); if (colonIndex > 0) error = error.slice(0, colonIndex); switch (error) { - case 'invalid username': - return i18next.t('menu:invalidLoginUsername'); - case 'invalid password': - return i18next.t('menu:invalidLoginPassword'); - case 'account doesn\'t exist': - return i18next.t('menu:accountNonExistent'); - case 'password doesn\'t match': - return i18next.t('menu:unmatchingPassword'); + case 'invalid username': + return i18next.t('menu:invalidLoginUsername'); + case 'invalid password': + return i18next.t('menu:invalidLoginPassword'); + case 'account doesn\'t exist': + return i18next.t('menu:accountNonExistent'); + case 'password doesn\'t match': + return i18next.t('menu:unmatchingPassword'); } return super.getReadableErrorMessage(error); @@ -59,7 +59,7 @@ export default class LoginFormUiHandler extends FormModalUiHandler { }; if (!this.inputs[0].text) return onFail(i18next.t('menu:emptyUsername')); - Utils.apiPost(`account/login`, `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}`, 'application/x-www-form-urlencoded') + Utils.apiPost('account/login', `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}`, 'application/x-www-form-urlencoded') .then(response => { if (!response.ok) return response.text(); @@ -79,4 +79,4 @@ export default class LoginFormUiHandler extends FormModalUiHandler { return false; } -} \ No newline at end of file +} diff --git a/src/ui/menu-ui-handler.ts b/src/ui/menu-ui-handler.ts index fb253d94f9b..ab28fa57dbe 100644 --- a/src/ui/menu-ui-handler.ts +++ b/src/ui/menu-ui-handler.ts @@ -1,15 +1,15 @@ -import BattleScene, { bypassLogin } from "../battle-scene"; -import { TextStyle, addTextObject } from "./text"; -import { Mode } from "./ui"; -import * as Utils from "../utils"; -import { addWindow } from "./ui-theme"; -import MessageUiHandler from "./message-ui-handler"; -import { GameDataType } from "../system/game-data"; -import { OptionSelectConfig, OptionSelectItem } from "./abstact-option-select-ui-handler"; -import { Tutorial, handleTutorial } from "../tutorial"; -import { updateUserInfo } from "../account"; +import BattleScene, { bypassLogin } from '../battle-scene'; +import { TextStyle, addTextObject } from './text'; +import { Mode } from './ui'; +import * as Utils from '../utils'; +import { addWindow } from './ui-theme'; +import MessageUiHandler from './message-ui-handler'; +import { GameDataType } from '../system/game-data'; +import { OptionSelectConfig, OptionSelectItem } from './abstact-option-select-ui-handler'; +import { Tutorial, handleTutorial } from '../tutorial'; +import { updateUserInfo } from '../account'; import i18next from '../plugins/i18n'; -import {Button} from "../enums/buttons"; +import {Button} from '../enums/buttons'; export enum MenuOptions { GAME_SETTINGS, @@ -123,16 +123,16 @@ export default class MenuUiHandler extends MessageUiHandler { if (Utils.isLocal) { manageDataOptions.push({ - label: i18next.t("menuUiHandler:importSession"), + label: i18next.t('menuUiHandler:importSession'), handler: () => { - confirmSlot(i18next.t("menuUiHandler:importSlotSelect"), () => true, slotId => this.scene.gameData.importData(GameDataType.SESSION, slotId)); + confirmSlot(i18next.t('menuUiHandler:importSlotSelect'), () => true, slotId => this.scene.gameData.importData(GameDataType.SESSION, slotId)); return true; }, keepOpen: true }); } manageDataOptions.push({ - label: i18next.t("menuUiHandler:exportSession"), + label: i18next.t('menuUiHandler:exportSession'), handler: () => { const dataSlots: integer[] = []; Promise.all( @@ -141,19 +141,19 @@ export default class MenuUiHandler extends MessageUiHandler { return this.scene.gameData.getSession(slotId).then(data => { if (data) dataSlots.push(slotId); - }) + }); })).then(() => { - confirmSlot(i18next.t("menuUiHandler:exportSlotSelect"), - i => dataSlots.indexOf(i) > -1, - slotId => this.scene.gameData.tryExportData(GameDataType.SESSION, slotId)); - }); + confirmSlot(i18next.t('menuUiHandler:exportSlotSelect'), + i => dataSlots.indexOf(i) > -1, + slotId => this.scene.gameData.tryExportData(GameDataType.SESSION, slotId)); + }); return true; }, keepOpen: true }); if (Utils.isLocal) { manageDataOptions.push({ - label: i18next.t("menuUiHandler:importData"), + label: i18next.t('menuUiHandler:importData'), handler: () => { this.scene.gameData.importData(GameDataType.SYSTEM); return true; @@ -163,7 +163,7 @@ export default class MenuUiHandler extends MessageUiHandler { } manageDataOptions.push( { - label: i18next.t("menuUiHandler:exportData"), + label: i18next.t('menuUiHandler:exportData'), handler: () => { this.scene.gameData.tryExportData(GameDataType.SYSTEM); return true; @@ -253,106 +253,106 @@ export default class MenuUiHandler extends MessageUiHandler { if (button === Button.ACTION) { let adjustedCursor = this.cursor; - for (let imo of this.ignoredMenuOptions) { + for (const imo of this.ignoredMenuOptions) { if (adjustedCursor >= imo) adjustedCursor++; else break; } switch (adjustedCursor) { - case MenuOptions.GAME_SETTINGS: - ui.setOverlayMode(Mode.SETTINGS); - success = true; - break; - case MenuOptions.ACHIEVEMENTS: - ui.setOverlayMode(Mode.ACHIEVEMENTS); - success = true; - break; - case MenuOptions.STATS: - ui.setOverlayMode(Mode.GAME_STATS); - success = true; - break; - case MenuOptions.VOUCHERS: - ui.setOverlayMode(Mode.VOUCHERS); - success = true; - break; - case MenuOptions.EGG_LIST: - if (this.scene.gameData.eggs.length) { - ui.revertMode(); - ui.setOverlayMode(Mode.EGG_LIST); - success = true; - } else - error = true; - break; - case MenuOptions.EGG_GACHA: + case MenuOptions.GAME_SETTINGS: + ui.setOverlayMode(Mode.SETTINGS); + success = true; + break; + case MenuOptions.ACHIEVEMENTS: + ui.setOverlayMode(Mode.ACHIEVEMENTS); + success = true; + break; + case MenuOptions.STATS: + ui.setOverlayMode(Mode.GAME_STATS); + success = true; + break; + case MenuOptions.VOUCHERS: + ui.setOverlayMode(Mode.VOUCHERS); + success = true; + break; + case MenuOptions.EGG_LIST: + if (this.scene.gameData.eggs.length) { ui.revertMode(); - ui.setOverlayMode(Mode.EGG_GACHA); + ui.setOverlayMode(Mode.EGG_LIST); success = true; - break; - case MenuOptions.MANAGE_DATA: - ui.setOverlayMode(Mode.MENU_OPTION_SELECT, this.manageDataConfig); + } else + error = true; + break; + case MenuOptions.EGG_GACHA: + ui.revertMode(); + ui.setOverlayMode(Mode.EGG_GACHA); + success = true; + break; + case MenuOptions.MANAGE_DATA: + ui.setOverlayMode(Mode.MENU_OPTION_SELECT, this.manageDataConfig); + success = true; + break; + case MenuOptions.COMMUNITY: + ui.setOverlayMode(Mode.MENU_OPTION_SELECT, this.communityConfig); + success = true; + break; + case MenuOptions.SAVE_AND_QUIT: + if (this.scene.currentBattle) { success = true; - break; - case MenuOptions.COMMUNITY: - ui.setOverlayMode(Mode.MENU_OPTION_SELECT, this.communityConfig); - success = true; - break; - case MenuOptions.SAVE_AND_QUIT: - if (this.scene.currentBattle) { - success = true; - if (this.scene.currentBattle.turn > 1) { - ui.showText(i18next.t("menuUiHandler:losingProgressionWarning"), null, () => { - ui.setOverlayMode(Mode.CONFIRM, () => this.scene.gameData.saveAll(this.scene, true, true, true, true).then(() => this.scene.reset(true)), () => { - ui.revertMode(); - ui.showText(null, 0); - }, false, -98); - }); - } else - this.scene.gameData.saveAll(this.scene, true, true, true, true).then(() => this.scene.reset(true)); - } else - error = true; - break; - case MenuOptions.LOG_OUT: - success = true; - const doLogout = () => { - Utils.apiFetch('account/logout', true).then(res => { - if (!res.ok) - console.error(`Log out failed (${res.status}: ${res.statusText})`); - Utils.setCookie(Utils.sessionIdKey, ''); - updateUserInfo().then(() => this.scene.reset(true, true)); - }); - }; - if (this.scene.currentBattle) { - ui.showText(i18next.t("menuUiHandler:losingProgressionWarning"), null, () => { - ui.setOverlayMode(Mode.CONFIRM, doLogout, () => { + if (this.scene.currentBattle.turn > 1) { + ui.showText(i18next.t('menuUiHandler:losingProgressionWarning'), null, () => { + ui.setOverlayMode(Mode.CONFIRM, () => this.scene.gameData.saveAll(this.scene, true, true, true, true).then(() => this.scene.reset(true)), () => { ui.revertMode(); ui.showText(null, 0); }, false, -98); }); } else - doLogout(); - break; + this.scene.gameData.saveAll(this.scene, true, true, true, true).then(() => this.scene.reset(true)); + } else + error = true; + break; + case MenuOptions.LOG_OUT: + success = true; + const doLogout = () => { + Utils.apiFetch('account/logout', true).then(res => { + if (!res.ok) + console.error(`Log out failed (${res.status}: ${res.statusText})`); + Utils.setCookie(Utils.sessionIdKey, ''); + updateUserInfo().then(() => this.scene.reset(true, true)); + }); + }; + if (this.scene.currentBattle) { + ui.showText(i18next.t('menuUiHandler:losingProgressionWarning'), null, () => { + ui.setOverlayMode(Mode.CONFIRM, doLogout, () => { + ui.revertMode(); + ui.showText(null, 0); + }, false, -98); + }); + } else + doLogout(); + break; } } else if (button === Button.CANCEL) { success = true; ui.revertMode().then(result => { if (!result) - ui.setMode(Mode.MESSAGE); + ui.setMode(Mode.MESSAGE); }); } else { switch (button) { - case Button.UP: - if (this.cursor) - success = this.setCursor(this.cursor - 1); - else - success = this.setCursor(this.menuOptions.length - 1); - break; - case Button.DOWN: - if (this.cursor + 1 < this.menuOptions.length) - success = this.setCursor(this.cursor + 1); - else - success = this.setCursor(0); - break; + case Button.UP: + if (this.cursor) + success = this.setCursor(this.cursor - 1); + else + success = this.setCursor(this.menuOptions.length - 1); + break; + case Button.DOWN: + if (this.cursor + 1 < this.menuOptions.length) + success = this.setCursor(this.cursor + 1); + else + success = this.setCursor(0); + break; } } @@ -395,4 +395,4 @@ export default class MenuUiHandler extends MessageUiHandler { this.cursorObj.destroy(); this.cursorObj = null; } -} \ No newline at end of file +} diff --git a/src/ui/message-ui-handler.ts b/src/ui/message-ui-handler.ts index 44b3cc1a1d0..2edf3ce8c41 100644 --- a/src/ui/message-ui-handler.ts +++ b/src/ui/message-ui-handler.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; -import AwaitableUiHandler from "./awaitable-ui-handler"; -import { Mode } from "./ui"; -import * as Utils from "../utils"; +import BattleScene from '../battle-scene'; +import AwaitableUiHandler from './awaitable-ui-handler'; +import { Mode } from './ui'; +import * as Utils from '../utils'; export default abstract class MessageUiHandler extends AwaitableUiHandler { protected textTimer: Phaser.Time.TimerEvent; @@ -28,22 +28,22 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { private showTextInternal(text: string, delay: integer, callback: Function, callbackDelay: integer, prompt: boolean, promptDelay: integer) { if (delay === null || delay === undefined) delay = 20; - let charVarMap = new Map(); - let delayMap = new Map(); - let soundMap = new Map(); + const charVarMap = new Map(); + const delayMap = new Map(); + const soundMap = new Map(); const actionPattern = /@(c|d|s)\{(.*?)\}/; let actionMatch: RegExpExecArray; while ((actionMatch = actionPattern.exec(text))) { switch (actionMatch[1]) { - case 'c': - charVarMap.set(actionMatch.index, actionMatch[2]); - break; - case 'd': - delayMap.set(actionMatch.index, parseInt(actionMatch[2])); - break; - case 's': - soundMap.set(actionMatch.index, actionMatch[2]); - break; + case 'c': + charVarMap.set(actionMatch.index, actionMatch[2]); + break; + case 'd': + delayMap.set(actionMatch.index, parseInt(actionMatch[2])); + break; + case 's': + soundMap.set(actionMatch.index, actionMatch[2]); + break; } text = text.slice(0, actionMatch.index) + text.slice(actionMatch.index + actionMatch[2].length + 4); } @@ -76,7 +76,7 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { this.textTimer.remove(); if (this.textCallbackTimer) this.textCallbackTimer.callback(); - }; + } if (prompt) { const originalCallback = callback; callback = () => { @@ -182,4 +182,4 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler { clear() { super.clear(); } -} \ No newline at end of file +} diff --git a/src/ui/modal-ui-handler.ts b/src/ui/modal-ui-handler.ts index 77a3c14bd7b..39a65c66095 100644 --- a/src/ui/modal-ui-handler.ts +++ b/src/ui/modal-ui-handler.ts @@ -1,9 +1,9 @@ -import BattleScene from "../battle-scene"; -import { TextStyle, addTextObject } from "./text"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; -import { WindowVariant, addWindow } from "./ui-theme"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { TextStyle, addTextObject } from './text'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; +import { WindowVariant, addWindow } from './ui-theme'; +import {Button} from '../enums/buttons'; export interface ModalConfig { buttonActions: Function[]; @@ -59,7 +59,7 @@ export abstract class ModalUiHandler extends UiHandler { const buttonTopMargin = this.getButtonTopMargin(); - for (let label of buttonLabels) { + for (const label of buttonLabels) { const buttonLabel = addTextObject(this.scene, 0, 8, label, TextStyle.TOOLTIP_CONTENT); buttonLabel.setOrigin(0.5, 0.5); @@ -134,4 +134,4 @@ export abstract class ModalUiHandler extends UiHandler { this.buttonBgs.map(bg => bg.off('pointerdown')); } -} \ No newline at end of file +} diff --git a/src/ui/modifier-select-ui-handler.ts b/src/ui/modifier-select-ui-handler.ts index 8af13d8f648..2e6b23073c3 100644 --- a/src/ui/modifier-select-ui-handler.ts +++ b/src/ui/modifier-select-ui-handler.ts @@ -1,12 +1,12 @@ -import BattleScene from "../battle-scene"; -import { getPlayerShopModifierTypeOptionsForWave, ModifierTypeOption } from "../modifier/modifier-type"; -import { getPokeballAtlasKey, PokeballType } from "../data/pokeball"; -import { addTextObject, getModifierTierTextTint, getTextColor, TextStyle } from "./text"; -import AwaitableUiHandler from "./awaitable-ui-handler"; -import { Mode } from "./ui"; -import { LockModifierTiersModifier, PokemonHeldItemModifier } from "../modifier/modifier"; -import { handleTutorial, Tutorial } from "../tutorial"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { getPlayerShopModifierTypeOptionsForWave, ModifierTypeOption } from '../modifier/modifier-type'; +import { getPokeballAtlasKey, PokeballType } from '../data/pokeball'; +import { addTextObject, getModifierTierTextTint, getTextColor, TextStyle } from './text'; +import AwaitableUiHandler from './awaitable-ui-handler'; +import { Mode } from './ui'; +import { LockModifierTiersModifier, PokemonHeldItemModifier } from '../modifier/modifier'; +import { handleTutorial, Tutorial } from '../tutorial'; +import {Button} from '../enums/buttons'; export const SHOP_OPTIONS_ROW_LIMIT = 6; @@ -158,7 +158,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { }); this.scene.time.delayedCall(1000 + maxUpgradeCount * 2000, () => { - for (let shopOption of this.shopOptionsRows.flat()) + for (const shopOption of this.shopOptionsRows.flat()) shopOption.show(0, 0); }); @@ -228,34 +228,34 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { } } else { switch (button) { - case Button.UP: - if (!this.rowCursor && this.cursor === 2) - success = this.setCursor(0); - else if (this.rowCursor < this.shopOptionsRows.length + 1) - success = this.setRowCursor(this.rowCursor + 1); - break; - case Button.DOWN: - if (this.rowCursor) - success = this.setRowCursor(this.rowCursor - 1); - else if (this.lockRarityButtonContainer.visible && !this.cursor) - success = this.setCursor(2); - break; - case Button.LEFT: - if (!this.rowCursor) { - success = this.cursor === 1 && this.rerollButtonContainer.visible && this.setCursor(0); - } else if (this.cursor) - success = this.setCursor(this.cursor - 1); - else if (this.rowCursor === 1 && this.rerollButtonContainer.visible) - success = this.setRowCursor(0); - break; - case Button.RIGHT: - if (!this.rowCursor) - success = this.cursor !== 1 && this.transferButtonContainer.visible && this.setCursor(1); - else if (this.cursor < this.getRowItems(this.rowCursor) - 1) - success = this.setCursor(this.cursor + 1); - else if (this.rowCursor === 1 && this.transferButtonContainer.visible) - success = this.setRowCursor(0); - break; + case Button.UP: + if (!this.rowCursor && this.cursor === 2) + success = this.setCursor(0); + else if (this.rowCursor < this.shopOptionsRows.length + 1) + success = this.setRowCursor(this.rowCursor + 1); + break; + case Button.DOWN: + if (this.rowCursor) + success = this.setRowCursor(this.rowCursor - 1); + else if (this.lockRarityButtonContainer.visible && !this.cursor) + success = this.setCursor(2); + break; + case Button.LEFT: + if (!this.rowCursor) { + success = this.cursor === 1 && this.rerollButtonContainer.visible && this.setCursor(0); + } else if (this.cursor) + success = this.setCursor(this.cursor - 1); + else if (this.rowCursor === 1 && this.rerollButtonContainer.visible) + success = this.setRowCursor(0); + break; + case Button.RIGHT: + if (!this.rowCursor) + success = this.cursor !== 1 && this.transferButtonContainer.visible && this.setCursor(1); + else if (this.cursor < this.getRowItems(this.rowCursor) - 1) + success = this.setCursor(this.cursor + 1); + else if (this.rowCursor === 1 && this.transferButtonContainer.visible) + success = this.setRowCursor(0); + break; } } @@ -279,7 +279,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { this.cursorObj.setScale(this.rowCursor === 1 ? 2 : this.rowCursor >= 2 ? 1.5 : 1); if (this.rowCursor) { - let sliceWidth = (this.scene.game.canvas.width / 6) / (options.length + 2); + const sliceWidth = (this.scene.game.canvas.width / 6) / (options.length + 2); if (this.rowCursor < 2) this.cursorObj.setPosition(sliceWidth * (cursor + 1) + (sliceWidth * 0.5) - 20, (-this.scene.game.canvas.height / 12) - (this.shopOptionsRows.length > 1 ? 6 : 22)); else @@ -321,12 +321,12 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { private getRowItems(rowCursor: integer): integer { switch (rowCursor) { - case 0: - return 2; - case 1: - return this.options.length; - default: - return this.shopOptionsRows[this.shopOptionsRows.length - (rowCursor - 1)].length; + case 0: + return 2; + case 1: + return this.options.length; + default: + return this.shopOptionsRows[this.shopOptionsRows.length - (rowCursor - 1)].length; } } @@ -336,7 +336,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler { updateCostText(): void { const shopOptions = this.shopOptionsRows.flat(); - for (let shopOption of shopOptions) + for (const shopOption of shopOptions) shopOption.updateCostText(); this.updateRerollCostText(); @@ -600,4 +600,4 @@ class ModifierOption extends Phaser.GameObjects.Container { this.itemCostText.setColor(getTextColor(textStyle, false, scene.uiTheme)); this.itemCostText.setShadowColor(getTextColor(textStyle, true, scene.uiTheme)); } -} \ No newline at end of file +} diff --git a/src/ui/option-select-ui-handler.ts b/src/ui/option-select-ui-handler.ts index 824fa153570..9a9f9ca1618 100644 --- a/src/ui/option-select-ui-handler.ts +++ b/src/ui/option-select-ui-handler.ts @@ -1,6 +1,6 @@ -import BattleScene from "../battle-scene"; -import AbstractOptionSelectUiHandler from "./abstact-option-select-ui-handler"; -import { Mode } from "./ui"; +import BattleScene from '../battle-scene'; +import AbstractOptionSelectUiHandler from './abstact-option-select-ui-handler'; +import { Mode } from './ui'; export default class OptionSelectUiHandler extends AbstractOptionSelectUiHandler { constructor(scene: BattleScene, mode: Mode = Mode.OPTION_SELECT) { @@ -10,4 +10,4 @@ export default class OptionSelectUiHandler extends AbstractOptionSelectUiHandler getWindowWidth(): integer { return 64; } -} \ No newline at end of file +} diff --git a/src/ui/outdated-modal-ui-handler.ts b/src/ui/outdated-modal-ui-handler.ts index 53243c42bbe..7db87dd97b3 100644 --- a/src/ui/outdated-modal-ui-handler.ts +++ b/src/ui/outdated-modal-ui-handler.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; -import { ModalConfig, ModalUiHandler } from "./modal-ui-handler"; -import { addTextObject, TextStyle } from "./text"; -import { Mode } from "./ui"; +import BattleScene from '../battle-scene'; +import { ModalConfig, ModalUiHandler } from './modal-ui-handler'; +import { addTextObject, TextStyle } from './text'; +import { Mode } from './ui'; export default class OutdatedModalUiHandler extends ModalUiHandler { constructor(scene: BattleScene, mode?: Mode) { @@ -44,4 +44,4 @@ export default class OutdatedModalUiHandler extends ModalUiHandler { return super.show([ config ]); } -} \ No newline at end of file +} diff --git a/src/ui/party-exp-bar.ts b/src/ui/party-exp-bar.ts index 93c69ce2c1b..32eb03e2bb8 100644 --- a/src/ui/party-exp-bar.ts +++ b/src/ui/party-exp-bar.ts @@ -1,6 +1,6 @@ -import BattleScene from "../battle-scene"; -import Pokemon from "../field/pokemon"; -import { TextStyle, addTextObject } from "./text"; +import BattleScene from '../battle-scene'; +import Pokemon from '../field/pokemon'; +import { TextStyle, addTextObject } from './text'; export default class PartyExpBar extends Phaser.GameObjects.Container { private bg: Phaser.GameObjects.NineSlice; @@ -97,4 +97,4 @@ export default class PartyExpBar extends Phaser.GameObjects.Container { }); }); } -} \ No newline at end of file +} diff --git a/src/ui/party-ui-handler.ts b/src/ui/party-ui-handler.ts index 253ed8b4b72..e8bb42f09b6 100644 --- a/src/ui/party-ui-handler.ts +++ b/src/ui/party-ui-handler.ts @@ -1,22 +1,22 @@ -import { CommandPhase } from "../phases"; -import BattleScene from "../battle-scene"; -import { PlayerPokemon, PokemonMove } from "../field/pokemon"; -import { addTextObject, TextStyle } from "./text"; -import { Command } from "./command-ui-handler"; -import MessageUiHandler from "./message-ui-handler"; -import { Mode } from "./ui"; -import * as Utils from "../utils"; -import { PokemonFormChangeItemModifier, PokemonHeldItemModifier, SwitchEffectTransferModifier } from "../modifier/modifier"; -import { allMoves } from "../data/move"; -import { Moves } from "../data/enums/moves"; -import { getGenderColor, getGenderSymbol } from "../data/gender"; -import { StatusEffect } from "../data/status-effect"; -import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim-handler"; -import { pokemonEvolutions } from "../data/pokemon-evolutions"; -import { addWindow } from "./ui-theme"; -import { SpeciesFormChangeItemTrigger } from "../data/pokemon-forms"; -import { getVariantTint } from "#app/data/variant"; -import {Button} from "../enums/buttons"; +import { CommandPhase } from '../phases'; +import BattleScene from '../battle-scene'; +import { PlayerPokemon, PokemonMove } from '../field/pokemon'; +import { addTextObject, TextStyle } from './text'; +import { Command } from './command-ui-handler'; +import MessageUiHandler from './message-ui-handler'; +import { Mode } from './ui'; +import * as Utils from '../utils'; +import { PokemonFormChangeItemModifier, PokemonHeldItemModifier, SwitchEffectTransferModifier } from '../modifier/modifier'; +import { allMoves } from '../data/move'; +import { Moves } from '../data/enums/moves'; +import { getGenderColor, getGenderSymbol } from '../data/gender'; +import { StatusEffect } from '../data/status-effect'; +import PokemonIconAnimHandler, { PokemonIconAnimMode } from './pokemon-icon-anim-handler'; +import { pokemonEvolutions } from '../data/pokemon-evolutions'; +import { addWindow } from './ui-theme'; +import { SpeciesFormChangeItemTrigger } from '../data/pokemon-forms'; +import { getVariantTint } from '#app/data/variant'; +import {Button} from '../enums/buttons'; const defaultMessage = 'Choose a Pokémon.'; @@ -109,7 +109,7 @@ export default class PartyUiHandler extends MessageUiHandler { if(!pokemon.isFainted()) return `${pokemon.name} still has energy\nto battle!`; return null; - } + }; private static FilterAllMoves = (_pokemonMove: PokemonMove) => null; @@ -235,7 +235,7 @@ export default class PartyUiHandler extends MessageUiHandler { ui.playSelect(); return true; } else if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER && option !== PartyOption.CANCEL) { - let filterResult = (this.selectFilter as PokemonSelectFilter)(pokemon); + const filterResult = (this.selectFilter as PokemonSelectFilter)(pokemon); if (filterResult === null) { this.selectCallback(this.cursor, option); this.clearOptions(); @@ -282,16 +282,16 @@ export default class PartyUiHandler extends MessageUiHandler { } else { if (option >= PartyOption.FORM_CHANGE_ITEM && this.scene.getCurrentPhase() instanceof CommandPhase) { switch (this.partyUiMode) { - case PartyUiMode.SWITCH: - case PartyUiMode.FAINT_SWITCH: - case PartyUiMode.POST_BATTLE_SWITCH: - let formChangeItemModifiers = this.scene.findModifiers(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === pokemon.id) as PokemonFormChangeItemModifier[]; - if (formChangeItemModifiers.find(m => m.active)) - formChangeItemModifiers = formChangeItemModifiers.filter(m => m.active); - const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM]; - modifier.active = !modifier.active; - this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger, false, true); - break; + case PartyUiMode.SWITCH: + case PartyUiMode.FAINT_SWITCH: + case PartyUiMode.POST_BATTLE_SWITCH: + let formChangeItemModifiers = this.scene.findModifiers(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === pokemon.id) as PokemonFormChangeItemModifier[]; + if (formChangeItemModifiers.find(m => m.active)) + formChangeItemModifiers = formChangeItemModifiers.filter(m => m.active); + const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM]; + modifier.active = !modifier.active; + this.scene.triggerPokemonFormChange(pokemon, SpeciesFormChangeItemTrigger, false, true); + break; } } else if (this.cursor) (this.scene.getCurrentPhase() as CommandPhase).handleCommand(Command.POKEMON, this.cursor, option === PartyOption.PASS_BATON); @@ -356,12 +356,12 @@ export default class PartyUiHandler extends MessageUiHandler { return true; } else { switch (button) { - case Button.UP: - success = this.setCursor(this.optionsCursor ? this.optionsCursor - 1 : this.options.length - 1); - break; - case Button.DOWN: - success = this.setCursor(this.optionsCursor < this.options.length - 1 ? this.optionsCursor + 1 : 0); - break; + case Button.UP: + success = this.setCursor(this.optionsCursor ? this.optionsCursor - 1 : this.options.length - 1); + break; + case Button.DOWN: + success = this.setCursor(this.optionsCursor < this.options.length - 1 ? this.optionsCursor + 1 : 0); + break; } } } else { @@ -397,27 +397,27 @@ export default class PartyUiHandler extends MessageUiHandler { const battlerCount = this.scene.currentBattle.getBattlerCount(); switch (button) { - case Button.UP: - success = this.setCursor(this.cursor ? this.cursor < 6 ? this.cursor - 1 : slotCount - 1 : 6); + case Button.UP: + success = this.setCursor(this.cursor ? this.cursor < 6 ? this.cursor - 1 : slotCount - 1 : 6); + break; + case Button.DOWN: + success = this.setCursor(this.cursor < 6 ? this.cursor < slotCount - 1 ? this.cursor + 1 : 6 : 0); + break; + case Button.LEFT: + if (this.cursor >= battlerCount && this.cursor <= 6) + success = this.setCursor(0); + break; + case Button.RIGHT: + if (slotCount === battlerCount){ + success = this.setCursor(6); break; - case Button.DOWN: - success = this.setCursor(this.cursor < 6 ? this.cursor < slotCount - 1 ? this.cursor + 1 : 6 : 0); + } else if (battlerCount >= 2 && slotCount > battlerCount && this.getCursor() === 0 && this.lastCursor === 1){ + success = this.setCursor(2); break; - case Button.LEFT: - if (this.cursor >= battlerCount && this.cursor <= 6) - success = this.setCursor(0); + } else if (slotCount > battlerCount && this.cursor < battlerCount){ + success = this.setCursor(this.lastCursor < 6 ? this.lastCursor || battlerCount : battlerCount); break; - case Button.RIGHT: - if (slotCount === battlerCount){ - success = this.setCursor(6); - break; - } else if (battlerCount >= 2 && slotCount > battlerCount && this.getCursor() === 0 && this.lastCursor === 1){ - success = this.setCursor(2); - break; - } else if (slotCount > battlerCount && this.cursor < battlerCount){ - success = this.setCursor(this.lastCursor < 6 ? this.lastCursor || battlerCount : battlerCount); - break; - } + } } } @@ -435,7 +435,7 @@ export default class PartyUiHandler extends MessageUiHandler { else if (this.cursor === 6) this.partyCancelButton.select(); - for (let p in party) { + for (const p in party) { const slotIndex = parseInt(p); const partySlot = new PartySlot(this.scene, slotIndex, party[p], this.iconAnimHandler, this.partyUiMode, this.tmMoveId); this.scene.add.existing(partySlot); @@ -526,17 +526,17 @@ export default class PartyUiHandler extends MessageUiHandler { let optionsMessage = 'Do what with this Pokémon?'; switch (this.partyUiMode) { - case PartyUiMode.MOVE_MODIFIER: - optionsMessage = 'Select a move.'; - break; - case PartyUiMode.MODIFIER_TRANSFER: - if (!this.transferMode) - optionsMessage = 'Select a held item to transfer.'; - break; - case PartyUiMode.SPLICE: - if (!this.transferMode) - optionsMessage = 'Select another Pokémon to splice.'; - break; + case PartyUiMode.MOVE_MODIFIER: + optionsMessage = 'Select a move.'; + break; + case PartyUiMode.MODIFIER_TRANSFER: + if (!this.transferMode) + optionsMessage = 'Select a held item to transfer.'; + break; + case PartyUiMode.SPLICE: + if (!this.transferMode) + optionsMessage = 'Select another Pokémon to splice.'; + break; } this.showText(optionsMessage, 0); @@ -552,8 +552,8 @@ export default class PartyUiHandler extends MessageUiHandler { const pokemon = this.scene.getParty()[this.cursor]; const learnableLevelMoves = this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER - ? pokemon.getLearnableLevelMoves() - : null; + ? pokemon.getLearnableLevelMoves() + : null; const itemModifiers = this.partyUiMode === PartyUiMode.MODIFIER_TRANSFER ? this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier @@ -570,46 +570,46 @@ export default class PartyUiHandler extends MessageUiHandler { if (this.partyUiMode !== PartyUiMode.MOVE_MODIFIER && this.partyUiMode !== PartyUiMode.REMEMBER_MOVE_MODIFIER && (this.transferMode || this.partyUiMode !== PartyUiMode.MODIFIER_TRANSFER)) { switch (this.partyUiMode) { - case PartyUiMode.SWITCH: - case PartyUiMode.FAINT_SWITCH: - case PartyUiMode.POST_BATTLE_SWITCH: - if (this.cursor >= this.scene.currentBattle.getBattlerCount()) { - this.options.push(PartyOption.SEND_OUT); - if (this.partyUiMode !== PartyUiMode.FAINT_SWITCH + case PartyUiMode.SWITCH: + case PartyUiMode.FAINT_SWITCH: + case PartyUiMode.POST_BATTLE_SWITCH: + if (this.cursor >= this.scene.currentBattle.getBattlerCount()) { + this.options.push(PartyOption.SEND_OUT); + if (this.partyUiMode !== PartyUiMode.FAINT_SWITCH && this.scene.findModifier(m => m instanceof SwitchEffectTransferModifier && (m as SwitchEffectTransferModifier).pokemonId === this.scene.getPlayerField()[this.fieldIndex].id)) - this.options.push(PartyOption.PASS_BATON); - } - if (this.scene.getCurrentPhase() instanceof CommandPhase) { - formChangeItemModifiers = this.scene.findModifiers(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === pokemon.id) as PokemonFormChangeItemModifier[]; - if (formChangeItemModifiers.find(m => m.active)) - formChangeItemModifiers = formChangeItemModifiers.filter(m => m.active); - for (let i = 0; i < formChangeItemModifiers.length; i++) - this.options.push(PartyOption.FORM_CHANGE_ITEM + i); - } - break; - case PartyUiMode.REVIVAL_BLESSING: - this.options.push(PartyOption.REVIVE); - break; - case PartyUiMode.MODIFIER: + this.options.push(PartyOption.PASS_BATON); + } + if (this.scene.getCurrentPhase() instanceof CommandPhase) { + formChangeItemModifiers = this.scene.findModifiers(m => m instanceof PokemonFormChangeItemModifier && m.pokemonId === pokemon.id) as PokemonFormChangeItemModifier[]; + if (formChangeItemModifiers.find(m => m.active)) + formChangeItemModifiers = formChangeItemModifiers.filter(m => m.active); + for (let i = 0; i < formChangeItemModifiers.length; i++) + this.options.push(PartyOption.FORM_CHANGE_ITEM + i); + } + break; + case PartyUiMode.REVIVAL_BLESSING: + this.options.push(PartyOption.REVIVE); + break; + case PartyUiMode.MODIFIER: + this.options.push(PartyOption.APPLY); + break; + case PartyUiMode.TM_MODIFIER: + this.options.push(PartyOption.TEACH); + break; + case PartyUiMode.MODIFIER_TRANSFER: + this.options.push(PartyOption.TRANSFER); + break; + case PartyUiMode.SPLICE: + if (this.transferMode) { + if (this.cursor !== this.transferCursor) + this.options.push(PartyOption.SPLICE); + } else this.options.push(PartyOption.APPLY); - break; - case PartyUiMode.TM_MODIFIER: - this.options.push(PartyOption.TEACH); - break; - case PartyUiMode.MODIFIER_TRANSFER: - this.options.push(PartyOption.TRANSFER); - break; - case PartyUiMode.SPLICE: - if (this.transferMode) { - if (this.cursor !== this.transferCursor) - this.options.push(PartyOption.SPLICE); - } else - this.options.push(PartyOption.APPLY); - break; - case PartyUiMode.RELEASE: - this.options.push(PartyOption.RELEASE); - break; + break; + case PartyUiMode.RELEASE: + this.options.push(PartyOption.RELEASE); + break; } this.options.push(PartyOption.SUMMARY); @@ -661,7 +661,7 @@ export default class PartyUiHandler extends MessageUiHandler { optionEndIndex = this.options.length; let widestOptionWidth = 0; - let optionTexts: Phaser.GameObjects.Text[] = []; + const optionTexts: Phaser.GameObjects.Text[] = []; for (let o = optionStartIndex; o < optionEndIndex; o++) { const option = this.options[this.options.length - (o + 1)]; @@ -673,26 +673,26 @@ export default class PartyUiHandler extends MessageUiHandler { optionName = '↓'; else if ((this.partyUiMode !== PartyUiMode.REMEMBER_MOVE_MODIFIER && (this.partyUiMode !== PartyUiMode.MODIFIER_TRANSFER || this.transferMode)) || option === PartyOption.CANCEL) { switch (option) { - case PartyOption.MOVE_1: - case PartyOption.MOVE_2: - case PartyOption.MOVE_3: - case PartyOption.MOVE_4: - const move = pokemon.moveset[option - PartyOption.MOVE_1]; - if(this.showMovePp) { - const maxPP = move.getMovePp(); - const currPP = maxPP - move.ppUsed; - optionName = `${move.getName()} ${currPP}/${maxPP}`; - } else { - optionName = move.getName(); - } - break; - default: - if (formChangeItemModifiers && option >= PartyOption.FORM_CHANGE_ITEM) { - const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM]; - optionName = `${modifier.active ? 'Deactivate' : 'Activate'} ${modifier.type.name}`; - } else - optionName = Utils.toReadableString(PartyOption[option]); - break; + case PartyOption.MOVE_1: + case PartyOption.MOVE_2: + case PartyOption.MOVE_3: + case PartyOption.MOVE_4: + const move = pokemon.moveset[option - PartyOption.MOVE_1]; + if(this.showMovePp) { + const maxPP = move.getMovePp(); + const currPP = maxPP - move.ppUsed; + optionName = `${move.getName()} ${currPP}/${maxPP}`; + } else { + optionName = move.getName(); + } + break; + default: + if (formChangeItemModifiers && option >= PartyOption.FORM_CHANGE_ITEM) { + const modifier = formChangeItemModifiers[option - PartyOption.FORM_CHANGE_ITEM]; + optionName = `${modifier.active ? 'Deactivate' : 'Activate'} ${modifier.type.name}`; + } else + optionName = Utils.toReadableString(PartyOption[option]); + break; } } else if (this.partyUiMode === PartyUiMode.REMEMBER_MOVE_MODIFIER) { const move = learnableLevelMoves[option]; @@ -709,7 +709,7 @@ export default class PartyUiHandler extends MessageUiHandler { const optionText = addTextObject(this.scene, 0, yCoord - 16, optionName, TextStyle.WINDOW); if (altText) { optionText.setColor('#40c8f8'); - optionText.setShadowColor('#006090') + optionText.setShadowColor('#006090'); } optionText.setOrigin(0, 0); @@ -721,7 +721,7 @@ export default class PartyUiHandler extends MessageUiHandler { } this.optionsBg.width = Math.max(widestOptionWidth + 24, 94); - for (let optionText of optionTexts) + for (const optionText of optionTexts) optionText.x = 15 - this.optionsBg.width; } @@ -775,7 +775,7 @@ export default class PartyUiHandler extends MessageUiHandler { else if (rand < 124) return `Until we meet again, ${pokemonName}!`; else if (rand < 127) - return `Sayonara, ${pokemonName}!` + return `Sayonara, ${pokemonName}!`; else return `Smell ya later, ${pokemonName}!`; } @@ -866,7 +866,7 @@ class PartySlot extends Phaser.GameObjects.Container { let displayName = this.pokemon.name; let nameTextWidth: number; - let nameSizeTest = addTextObject(this.scene, 0, 0, displayName, TextStyle.PARTY); + const nameSizeTest = addTextObject(this.scene, 0, 0, displayName, TextStyle.PARTY); nameTextWidth = nameSizeTest.displayWidth; while (nameTextWidth > (this.slotIndex >= battlerCount ? 52 : (76 - (this.pokemon.fusionSpecies ? 8 : 0)))) { @@ -938,7 +938,7 @@ class PartySlot extends Phaser.GameObjects.Container { slotInfoContainer.add(shinyStar); if (doubleShiny) { - const fusionShinyStar = this.scene.add.image(0, 0, `shiny_star_small_2`); + const fusionShinyStar = this.scene.add.image(0, 0, 'shiny_star_small_2'); fusionShinyStar.setOrigin(0, 0); fusionShinyStar.setPosition(shinyStar.x, shinyStar.y); fusionShinyStar.setTint(getVariantTint(this.pokemon.fusionVariant)); @@ -967,15 +967,15 @@ class PartySlot extends Phaser.GameObjects.Container { } else { let slotTmText: string; switch (true) { - case (this.pokemon.compatibleTms.indexOf(tmMoveId) === -1): - slotTmText = 'Not Able'; - break; - case (this.pokemon.getMoveset().filter(m => m?.moveId === tmMoveId).length > 0): - slotTmText = 'Learned'; - break; - default: - slotTmText = 'Able'; - break; + case (this.pokemon.compatibleTms.indexOf(tmMoveId) === -1): + slotTmText = 'Not Able'; + break; + case (this.pokemon.getMoveset().filter(m => m?.moveId === tmMoveId).length > 0): + slotTmText = 'Learned'; + break; + default: + slotTmText = 'Able'; + break; } const slotTmLabel = addTextObject(this.scene, 0, 0, slotTmText, TextStyle.MESSAGE); @@ -1056,7 +1056,7 @@ class PartyCancelButton extends Phaser.GameObjects.Container { this.selected = true; - this.partyCancelBg.setFrame(`party_cancel_sel`); + this.partyCancelBg.setFrame('party_cancel_sel'); this.partyCancelPb.setFrame('party_pb_sel'); } @@ -1069,4 +1069,4 @@ class PartyCancelButton extends Phaser.GameObjects.Container { this.partyCancelBg.setFrame('party_cancel'); this.partyCancelPb.setFrame('party_pb'); } -} \ No newline at end of file +} diff --git a/src/ui/pokeball-tray.ts b/src/ui/pokeball-tray.ts index cc2bd21cb0b..c530fc8cbbc 100644 --- a/src/ui/pokeball-tray.ts +++ b/src/ui/pokeball-tray.ts @@ -1,5 +1,5 @@ -import BattleScene from "../battle-scene"; -import Pokemon from "../field/pokemon"; +import BattleScene from '../battle-scene'; +import Pokemon from '../field/pokemon'; export default class PokeballTray extends Phaser.GameObjects.Container { private player: boolean; @@ -22,7 +22,7 @@ export default class PokeballTray extends Phaser.GameObjects.Container { this.balls = new Array(6).fill(null).map((_, i) => this.scene.add.sprite((this.player ? -83 : 76) + (this.scene.game.canvas.width / 6) * (this.player ? -1 : 1) + 10 * i * (this.player ? 1 : -1), -8, 'pb_tray_ball', 'empty')); - for (let ball of this.balls) { + for (const ball of this.balls) { ball.setOrigin(0, 0); this.add(ball); } @@ -112,5 +112,5 @@ export default class PokeballTray extends Phaser.GameObjects.Container { this.shown = false; }); - }; -} \ No newline at end of file + } +} diff --git a/src/ui/pokemon-icon-anim-handler.ts b/src/ui/pokemon-icon-anim-handler.ts index a6202d2bff8..6e36f53b944 100644 --- a/src/ui/pokemon-icon-anim-handler.ts +++ b/src/ui/pokemon-icon-anim-handler.ts @@ -1,5 +1,5 @@ -import BattleScene from "../battle-scene"; -import * as Utils from "../utils"; +import BattleScene from '../battle-scene'; +import * as Utils from '../utils'; export enum PokemonIconAnimMode { NONE, @@ -20,8 +20,8 @@ export default class PokemonIconAnimHandler { const onAlternate = (tween: Phaser.Tweens.Tween) => { const value = tween.getValue(); this.toggled = !!value; - for (let i of this.icons.keys()) - i.y += this.getModeYDelta(this.icons.get(i)) * (this.toggled ? 1 : -1); + for (const i of this.icons.keys()) + i.y += this.getModeYDelta(this.icons.get(i)) * (this.toggled ? 1 : -1); }; scene.tweens.addCounter({ duration: Utils.fixedInt(200), @@ -36,19 +36,19 @@ export default class PokemonIconAnimHandler { getModeYDelta(mode: PokemonIconAnimMode): number { switch (mode) { - case PokemonIconAnimMode.NONE: - return 0; - case PokemonIconAnimMode.PASSIVE: - return -1; - case PokemonIconAnimMode.ACTIVE: - return -2; + case PokemonIconAnimMode.NONE: + return 0; + case PokemonIconAnimMode.PASSIVE: + return -1; + case PokemonIconAnimMode.ACTIVE: + return -2; } } addOrUpdate(icons: PokemonIcon | PokemonIcon[], mode: PokemonIconAnimMode): void { if (!Array.isArray(icons)) icons = [ icons ]; - for (let i of icons) { + for (const i of icons) { if (this.icons.has(i) && this.icons.get(i) === mode) continue; if (this.toggled) { @@ -65,7 +65,7 @@ export default class PokemonIconAnimHandler { remove(icons: PokemonIcon | PokemonIcon[]): void { if (!Array.isArray(icons)) icons = [ icons ]; - for (let i of icons) { + for (const i of icons) { if (this.toggled) i.y -= this.getModeYDelta(this.icons.get(i)); this.icons.delete(i); @@ -73,10 +73,10 @@ export default class PokemonIconAnimHandler { } removeAll(): void { - for (let i of this.icons.keys()) { + for (const i of this.icons.keys()) { if (this.toggled) i.y -= this.getModeYDelta(this.icons.get(i)); this.icons.delete(i); } } -} \ No newline at end of file +} diff --git a/src/ui/pokemon-info-container.ts b/src/ui/pokemon-info-container.ts index 14d7ec35d1b..060dbc2f2d8 100644 --- a/src/ui/pokemon-info-container.ts +++ b/src/ui/pokemon-info-container.ts @@ -1,15 +1,15 @@ -import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import BattleScene from "../battle-scene"; -import { Gender, getGenderColor, getGenderSymbol } from "../data/gender"; -import Pokemon from "../field/pokemon"; -import { StatsContainer } from "./stats-container"; -import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from "./text"; -import { addWindow } from "./ui-theme"; -import { getNatureName } from "../data/nature"; -import * as Utils from "../utils"; -import { Type } from "../data/type"; -import { getVariantTint } from "#app/data/variant"; -import ConfirmUiHandler from "./confirm-ui-handler"; +import BBCodeText from 'phaser3-rex-plugins/plugins/bbcodetext'; +import BattleScene from '../battle-scene'; +import { Gender, getGenderColor, getGenderSymbol } from '../data/gender'; +import Pokemon from '../field/pokemon'; +import { StatsContainer } from './stats-container'; +import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from './text'; +import { addWindow } from './ui-theme'; +import { getNatureName } from '../data/nature'; +import * as Utils from '../utils'; +import { Type } from '../data/type'; +import { getVariantTint } from '#app/data/variant'; +import ConfirmUiHandler from './confirm-ui-handler'; export default class PokemonInfoContainer extends Phaser.GameObjects.Container { private readonly infoWindowWidth = 104; @@ -153,8 +153,8 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { this.pokemonShinyIcon.setTint(getVariantTint(baseVariant)); if (this.pokemonShinyIcon.visible) { const shinyDescriptor = doubleShiny || baseVariant ? - `${baseVariant === 2 ? 'Epic' : baseVariant === 1 ? 'Rare' : 'Common'}${doubleShiny ? `/${pokemon.fusionVariant === 2 ? 'Epic' : pokemon.fusionVariant === 1 ? 'Rare' : 'Common'}` : ''}` - : ''; + `${baseVariant === 2 ? 'Epic' : baseVariant === 1 ? 'Rare' : 'Common'}${doubleShiny ? `/${pokemon.fusionVariant === 2 ? 'Epic' : pokemon.fusionVariant === 1 ? 'Rare' : 'Common'}` : ''}` + : ''; this.pokemonShinyIcon.on('pointerover', () => (this.scene as BattleScene).ui.showTooltip(null, `Shiny${shinyDescriptor ? ` (${shinyDescriptor})` : ''}`, true)); this.pokemonShinyIcon.on('pointerout', () => (this.scene as BattleScene).ui.hideTooltip()); } @@ -166,8 +166,8 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { const starterSpeciesId = pokemon.species.getRootSpeciesId(true); const originalIvs: integer[] = this.scene.gameData.dexData[starterSpeciesId].caughtAttr - ? this.scene.gameData.dexData[starterSpeciesId].ivs - : null; + ? this.scene.gameData.dexData[starterSpeciesId].ivs + : null; this.statsContainer.updateIvs(pokemon.ivs, originalIvs); @@ -246,9 +246,9 @@ export default class PokemonInfoContainer extends Phaser.GameObjects.Container { this.shown = false; }); - }; + } } export default interface PokemonInfoContainer { scene: BattleScene -} \ No newline at end of file +} diff --git a/src/ui/registration-form-ui-handler.ts b/src/ui/registration-form-ui-handler.ts index f5ff8c218b4..f59f6e11a8d 100644 --- a/src/ui/registration-form-ui-handler.ts +++ b/src/ui/registration-form-ui-handler.ts @@ -1,8 +1,8 @@ -import { FormModalUiHandler } from "./form-modal-ui-handler"; -import { ModalConfig } from "./modal-ui-handler"; -import * as Utils from "../utils"; -import { Mode } from "./ui"; -import { TextStyle, addTextObject } from "./text"; +import { FormModalUiHandler } from './form-modal-ui-handler'; +import { ModalConfig } from './modal-ui-handler'; +import * as Utils from '../utils'; +import { Mode } from './ui'; +import { TextStyle, addTextObject } from './text'; import i18next from '../plugins/i18n'; export default class RegistrationFormUiHandler extends FormModalUiHandler { @@ -31,16 +31,16 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler { } getReadableErrorMessage(error: string): string { - let colonIndex = error?.indexOf(':'); + const colonIndex = error?.indexOf(':'); if (colonIndex > 0) error = error.slice(0, colonIndex); switch (error) { - case 'invalid username': - return i18next.t('menu:invalidRegisterUsername'); - case 'invalid password': - return i18next.t('menu:invalidRegisterPassword'); - case 'failed to add account record': - return i18next.t('menu:usernameAlreadyUsed'); + case 'invalid username': + return i18next.t('menu:invalidRegisterUsername'); + case 'invalid password': + return i18next.t('menu:invalidRegisterPassword'); + case 'failed to add account record': + return i18next.t('menu:usernameAlreadyUsed'); } return super.getReadableErrorMessage(error); @@ -74,11 +74,11 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler { return onFail(this.getReadableErrorMessage('invalid password')); if (this.inputs[1].text !== this.inputs[2].text) return onFail(i18next.t('menu:passwordNotMatchingConfirmPassword')); - Utils.apiPost(`account/register`, `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}`, 'application/x-www-form-urlencoded') + Utils.apiPost('account/register', `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}`, 'application/x-www-form-urlencoded') .then(response => response.text()) .then(response => { if (!response) { - Utils.apiPost(`account/login`, `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}`, 'application/x-www-form-urlencoded') + Utils.apiPost('account/login', `username=${encodeURIComponent(this.inputs[0].text)}&password=${encodeURIComponent(this.inputs[1].text)}`, 'application/x-www-form-urlencoded') .then(response => { if (!response.ok) return response.text(); @@ -101,4 +101,4 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler { return false; } -} \ No newline at end of file +} diff --git a/src/ui/save-slot-select-ui-handler.ts b/src/ui/save-slot-select-ui-handler.ts index a30e21c8f57..6257400fb4f 100644 --- a/src/ui/save-slot-select-ui-handler.ts +++ b/src/ui/save-slot-select-ui-handler.ts @@ -1,15 +1,15 @@ -import BattleScene from "../battle-scene"; -import { gameModes } from "../game-mode"; -import { SessionSaveData } from "../system/game-data"; -import { TextStyle, addTextObject } from "./text"; -import { Mode } from "./ui"; -import { addWindow } from "./ui-theme"; -import * as Utils from "../utils"; -import PokemonData from "../system/pokemon-data"; -import { PokemonHeldItemModifier } from "../modifier/modifier"; -import MessageUiHandler from "./message-ui-handler"; -import i18next from "i18next"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { gameModes } from '../game-mode'; +import { SessionSaveData } from '../system/game-data'; +import { TextStyle, addTextObject } from './text'; +import { Mode } from './ui'; +import { addWindow } from './ui-theme'; +import * as Utils from '../utils'; +import PokemonData from '../system/pokemon-data'; +import { PokemonHeldItemModifier } from '../modifier/modifier'; +import MessageUiHandler from './message-ui-handler'; +import i18next from 'i18next'; +import {Button} from '../enums/buttons'; const sessionSlotCount = 5; @@ -78,7 +78,7 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { super.show(args); - this.uiMode = args[0] as SaveSlotUiMode;; + this.uiMode = args[0] as SaveSlotUiMode; this.saveSlotSelectCallback = args[1] as SaveSlotSelectCallback; this.saveSlotSelectContainer.setVisible(true); @@ -103,31 +103,31 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { error = true; else { switch (this.uiMode) { - case SaveSlotUiMode.LOAD: + case SaveSlotUiMode.LOAD: + this.saveSlotSelectCallback = null; + originalCallback(cursor); + break; + case SaveSlotUiMode.SAVE: + const saveAndCallback = () => { + const originalCallback = this.saveSlotSelectCallback; this.saveSlotSelectCallback = null; + ui.revertMode(); + ui.showText(null, 0); + ui.setMode(Mode.MESSAGE); originalCallback(cursor); - break; - case SaveSlotUiMode.SAVE: - const saveAndCallback = () => { - const originalCallback = this.saveSlotSelectCallback; - this.saveSlotSelectCallback = null; - ui.revertMode(); - ui.showText(null, 0); - ui.setMode(Mode.MESSAGE); - originalCallback(cursor); - }; - if (this.sessionSlots[cursor].hasData) { - ui.showText('Overwrite the data in the selected slot?', null, () => { - ui.setOverlayMode(Mode.CONFIRM, () => saveAndCallback(), () => { - ui.revertMode(); - ui.showText(null, 0); - }, false, 0, 19, 2000); - }); - } else if (this.sessionSlots[cursor].hasData === false) - saveAndCallback(); - else - return false; - break; + }; + if (this.sessionSlots[cursor].hasData) { + ui.showText('Overwrite the data in the selected slot?', null, () => { + ui.setOverlayMode(Mode.CONFIRM, () => saveAndCallback(), () => { + ui.revertMode(); + ui.showText(null, 0); + }, false, 0, 19, 2000); + }); + } else if (this.sessionSlots[cursor].hasData === false) + saveAndCallback(); + else + return false; + break; } success = true; } @@ -138,18 +138,18 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { } } else { switch (button) { - case Button.UP: - if (this.cursor) - success = this.setCursor(this.cursor - 1); - else if (this.scrollCursor) - success = this.setScrollCursor(this.scrollCursor - 1); - break; - case Button.DOWN: - if (this.cursor < 2) - success = this.setCursor(this.cursor + 1); - else if (this.scrollCursor < sessionSlotCount - 3) - success = this.setScrollCursor(this.scrollCursor + 1); - break; + case Button.UP: + if (this.cursor) + success = this.setCursor(this.cursor - 1); + else if (this.scrollCursor) + success = this.setScrollCursor(this.scrollCursor - 1); + break; + case Button.DOWN: + if (this.cursor < 2) + success = this.setCursor(this.cursor + 1); + else if (this.scrollCursor < sessionSlotCount - 3) + success = this.setScrollCursor(this.scrollCursor + 1); + break; } } @@ -186,7 +186,7 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { } setCursor(cursor: integer): boolean { - let changed = super.setCursor(cursor); + const changed = super.setCursor(cursor); if (!this.cursorObj) { this.cursorObj = this.scene.add.nineslice(0, 0, 'select_cursor_highlight_thick', null, 296, 44, 6, 6, 6, 6); @@ -199,7 +199,7 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler { } setScrollCursor(scrollCursor: integer): boolean { - let changed = scrollCursor !== this.scrollCursor; + const changed = scrollCursor !== this.scrollCursor; if (changed) { this.scrollCursor = scrollCursor; @@ -297,7 +297,7 @@ class SessionSlot extends Phaser.GameObjects.Container { const modifierIconsContainer = this.scene.add.container(148, 30); modifierIconsContainer.setScale(0.5); let visibleModifierIndex = 0; - for (let m of data.modifiers) { + for (const m of data.modifiers) { const modifier = m.toModifier(this.scene, modifiersModule[m.className]); if (modifier instanceof PokemonHeldItemModifier) continue; @@ -316,7 +316,7 @@ class SessionSlot extends Phaser.GameObjects.Container { this.scene.gameData.getSession(this.slotId).then(async sessionData => { if (!sessionData) { this.hasData = false; - this.loadingLabel.setText(i18next.t("menu:empty")); + this.loadingLabel.setText(i18next.t('menu:empty')); resolve(false); return; } @@ -330,4 +330,4 @@ class SessionSlot extends Phaser.GameObjects.Container { interface SessionSlot { scene: BattleScene; -} \ No newline at end of file +} diff --git a/src/ui/saving-icon-handler.ts b/src/ui/saving-icon-handler.ts index 71d9a11fb47..cb9d400f143 100644 --- a/src/ui/saving-icon-handler.ts +++ b/src/ui/saving-icon-handler.ts @@ -1,5 +1,5 @@ -import BattleScene from "#app/battle-scene"; -import * as Utils from "../utils"; +import BattleScene from '#app/battle-scene'; +import * as Utils from '../utils'; export default class SavingIconHandler extends Phaser.GameObjects.Container { private icon: Phaser.GameObjects.Sprite; @@ -73,4 +73,4 @@ export default class SavingIconHandler extends Phaser.GameObjects.Container { this.shown = false; } -} \ No newline at end of file +} diff --git a/src/ui/session-reload-modal-ui-handler.ts b/src/ui/session-reload-modal-ui-handler.ts index fdcd9b2c206..9993915ec03 100644 --- a/src/ui/session-reload-modal-ui-handler.ts +++ b/src/ui/session-reload-modal-ui-handler.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; -import { ModalConfig, ModalUiHandler } from "./modal-ui-handler"; -import { addTextObject, TextStyle } from "./text"; -import { Mode } from "./ui"; +import BattleScene from '../battle-scene'; +import { ModalConfig, ModalUiHandler } from './modal-ui-handler'; +import { addTextObject, TextStyle } from './text'; +import { Mode } from './ui'; export default class SessionReloadModalUiHandler extends ModalUiHandler { constructor(scene: BattleScene, mode?: Mode) { @@ -44,4 +44,4 @@ export default class SessionReloadModalUiHandler extends ModalUiHandler { return super.show([ config ]); } -} \ No newline at end of file +} diff --git a/src/ui/settings-ui-handler.ts b/src/ui/settings-ui-handler.ts index 6e40103b870..ab0099faf47 100644 --- a/src/ui/settings-ui-handler.ts +++ b/src/ui/settings-ui-handler.ts @@ -1,11 +1,11 @@ -import BattleScene from "../battle-scene"; -import { Setting, reloadSettings, settingDefaults, settingOptions } from "../system/settings"; -import { hasTouchscreen, isMobile } from "../touch-controls"; -import { TextStyle, addTextObject } from "./text"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; -import { addWindow } from "./ui-theme"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { Setting, reloadSettings, settingDefaults, settingOptions } from '../system/settings'; +import { hasTouchscreen, isMobile } from '../touch-controls'; +import { TextStyle, addTextObject } from './text'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; +import { addWindow } from './ui-theme'; +import {Button} from '../enums/buttons'; export default class SettingsUiHandler extends UiHandler { private settingsContainer: Phaser.GameObjects.Container; @@ -82,7 +82,7 @@ export default class SettingsUiHandler extends UiHandler { let xOffset = 0; - for (let value of this.optionValueLabels[s]) { + for (const value of this.optionValueLabels[s]) { value.setPositionRelative(this.settingLabels[s], labelWidth + xOffset, 0); xOffset += value.width / 6 + optionSpacing; } @@ -143,45 +143,45 @@ export default class SettingsUiHandler extends UiHandler { } else { const cursor = this.cursor + this.scrollCursor; switch (button) { - case Button.UP: - if (cursor) { - if (this.cursor) - success = this.setCursor(this.cursor - 1); - else - success = this.setScrollCursor(this.scrollCursor - 1); - } else { - // When at the top of the menu and pressing UP, move to the bottommost item. - // First, set the cursor to the last visible element, preparing for the scroll to the end. - const successA = this.setCursor(rowsToDisplay - 1); - // Then, adjust the scroll to display the bottommost elements of the menu. - const successB = this.setScrollCursor(this.optionValueLabels.length - rowsToDisplay); - success = successA && successB; // success is just there to play the little validation sound effect - } - break; - case Button.DOWN: - if (cursor < this.optionValueLabels.length - 1) { - if (this.cursor < rowsToDisplay - 1) // if the visual cursor is in the frame of 0 to 8 - success = this.setCursor(this.cursor + 1); - else if (this.scrollCursor < this.optionValueLabels.length - rowsToDisplay) - success = this.setScrollCursor(this.scrollCursor + 1); - } else { - // When at the bottom of the menu and pressing DOWN, move to the topmost item. - // First, set the cursor to the first visible element, resetting the scroll to the top. - const successA = this.setCursor(0); - // Then, reset the scroll to start from the first element of the menu. - const successB = this.setScrollCursor(0); - success = successA && successB; // Indicates a successful cursor and scroll adjustment. - } - break; - case Button.LEFT: - if (this.optionCursors[cursor]) // Moves the option cursor left, if possible. - success = this.setOptionCursor(cursor, this.optionCursors[cursor] - 1, true); - break; - case Button.RIGHT: - // Moves the option cursor right, if possible. - if (this.optionCursors[cursor] < this.optionValueLabels[cursor].length - 1) - success = this.setOptionCursor(cursor, this.optionCursors[cursor] + 1, true); - break; + case Button.UP: + if (cursor) { + if (this.cursor) + success = this.setCursor(this.cursor - 1); + else + success = this.setScrollCursor(this.scrollCursor - 1); + } else { + // When at the top of the menu and pressing UP, move to the bottommost item. + // First, set the cursor to the last visible element, preparing for the scroll to the end. + const successA = this.setCursor(rowsToDisplay - 1); + // Then, adjust the scroll to display the bottommost elements of the menu. + const successB = this.setScrollCursor(this.optionValueLabels.length - rowsToDisplay); + success = successA && successB; // success is just there to play the little validation sound effect + } + break; + case Button.DOWN: + if (cursor < this.optionValueLabels.length - 1) { + if (this.cursor < rowsToDisplay - 1) // if the visual cursor is in the frame of 0 to 8 + success = this.setCursor(this.cursor + 1); + else if (this.scrollCursor < this.optionValueLabels.length - rowsToDisplay) + success = this.setScrollCursor(this.scrollCursor + 1); + } else { + // When at the bottom of the menu and pressing DOWN, move to the topmost item. + // First, set the cursor to the first visible element, resetting the scroll to the top. + const successA = this.setCursor(0); + // Then, reset the scroll to start from the first element of the menu. + const successB = this.setScrollCursor(0); + success = successA && successB; // Indicates a successful cursor and scroll adjustment. + } + break; + case Button.LEFT: + if (this.optionCursors[cursor]) // Moves the option cursor left, if possible. + success = this.setOptionCursor(cursor, this.optionCursors[cursor] - 1, true); + break; + case Button.RIGHT: + // Moves the option cursor right, if possible. + if (this.optionCursors[cursor] < this.optionValueLabels[cursor].length - 1) + success = this.setOptionCursor(cursor, this.optionCursors[cursor] + 1, true); + break; } } @@ -227,7 +227,7 @@ export default class SettingsUiHandler extends UiHandler { newValueLabel.setShadowColor(this.getTextColor(TextStyle.SETTINGS_SELECTED, true)); if (save) { - this.scene.gameData.saveSetting(setting, cursor) + this.scene.gameData.saveSetting(setting, cursor); if (reloadSettings.includes(setting)) { this.reloadRequired = true; if (setting === Setting.Language) @@ -257,7 +257,7 @@ export default class SettingsUiHandler extends UiHandler { for (let s = 0; s < this.settingLabels.length; s++) { const visible = s >= this.scrollCursor && s < this.scrollCursor + 9; this.settingLabels[s].setVisible(visible); - for (let option of this.optionValueLabels[s]) + for (const option of this.optionValueLabels[s]) option.setVisible(visible); } } @@ -277,4 +277,4 @@ export default class SettingsUiHandler extends UiHandler { this.cursorObj.destroy(); this.cursorObj = null; } -} \ No newline at end of file +} diff --git a/src/ui/starter-select-ui-handler.ts b/src/ui/starter-select-ui-handler.ts index 4a040792643..d4b4aeed6f2 100644 --- a/src/ui/starter-select-ui-handler.ts +++ b/src/ui/starter-select-ui-handler.ts @@ -1,34 +1,34 @@ -import { pokemonPrevolutions } from "#app/data/pokemon-evolutions"; -import { Variant, getVariantTint } from "#app/data/variant"; -import { argbFromRgba } from "@material/material-color-utilities"; -import i18next from "i18next"; -import BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; -import BattleScene, { starterColors } from "../battle-scene"; -import { allAbilities } from "../data/ability"; -import { speciesEggMoves } from "../data/egg-moves"; -import { Moves } from "../data/enums/moves"; -import { Species } from "../data/enums/species"; -import { GrowthRate, getGrowthRateColor } from "../data/exp"; -import { Gender, getGenderColor, getGenderSymbol } from "../data/gender"; -import { allMoves } from "../data/move"; -import { Nature, getNatureName } from "../data/nature"; -import { pokemonFormChanges } from "../data/pokemon-forms"; -import { LevelMoves, pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "../data/pokemon-level-moves"; -import PokemonSpecies, { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from "../data/pokemon-species"; -import { Type } from "../data/type"; -import { Button } from "../enums/buttons"; -import { GameModes, gameModes } from "../game-mode"; -import { TitlePhase } from "../phases"; -import { AbilityAttr, DexAttr, DexAttrProps, DexEntry, Passive as PassiveAttr, StarterFormMoveData, StarterMoveset } from "../system/game-data"; -import { Tutorial, handleTutorial } from "../tutorial"; -import * as Utils from "../utils"; -import { OptionSelectItem } from "./abstact-option-select-ui-handler"; -import MessageUiHandler from "./message-ui-handler"; -import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim-handler"; -import { StatsContainer } from "./stats-container"; -import { TextStyle, addBBCodeTextObject, addTextObject } from "./text"; -import { Mode } from "./ui"; -import { addWindow } from "./ui-theme"; +import { pokemonPrevolutions } from '#app/data/pokemon-evolutions'; +import { Variant, getVariantTint } from '#app/data/variant'; +import { argbFromRgba } from '@material/material-color-utilities'; +import i18next from 'i18next'; +import BBCodeText from 'phaser3-rex-plugins/plugins/bbcodetext'; +import BattleScene, { starterColors } from '../battle-scene'; +import { allAbilities } from '../data/ability'; +import { speciesEggMoves } from '../data/egg-moves'; +import { Moves } from '../data/enums/moves'; +import { Species } from '../data/enums/species'; +import { GrowthRate, getGrowthRateColor } from '../data/exp'; +import { Gender, getGenderColor, getGenderSymbol } from '../data/gender'; +import { allMoves } from '../data/move'; +import { Nature, getNatureName } from '../data/nature'; +import { pokemonFormChanges } from '../data/pokemon-forms'; +import { LevelMoves, pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from '../data/pokemon-level-moves'; +import PokemonSpecies, { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from '../data/pokemon-species'; +import { Type } from '../data/type'; +import { Button } from '../enums/buttons'; +import { GameModes, gameModes } from '../game-mode'; +import { TitlePhase } from '../phases'; +import { AbilityAttr, DexAttr, DexAttrProps, DexEntry, Passive as PassiveAttr, StarterFormMoveData, StarterMoveset } from '../system/game-data'; +import { Tutorial, handleTutorial } from '../tutorial'; +import * as Utils from '../utils'; +import { OptionSelectItem } from './abstact-option-select-ui-handler'; +import MessageUiHandler from './message-ui-handler'; +import PokemonIconAnimHandler, { PokemonIconAnimMode } from './pokemon-icon-anim-handler'; +import { StatsContainer } from './stats-container'; +import { TextStyle, addBBCodeTextObject, addTextObject } from './text'; +import { Mode } from './ui'; +import { addWindow } from './ui-theme'; export type StarterSelectCallback = (starters: Starter[]) => void; @@ -50,37 +50,37 @@ interface LanguageSetting { } const languageSettings: { [key: string]: LanguageSetting } = { - "en":{ + 'en':{ starterInfoTextSize: '56px', instructionTextSize: '42px', }, - "de":{ + 'de':{ starterInfoTextSize: '56px', instructionTextSize: '35px', }, - "es":{ + 'es':{ starterInfoTextSize: '56px', instructionTextSize: '35px', }, - "it":{ + 'it':{ starterInfoTextSize: '56px', instructionTextSize: '38px', }, - "fr":{ + 'fr':{ starterInfoTextSize: '54px', instructionTextSize: '42px', }, - "zh":{ + 'zh':{ starterInfoTextSize: '40px', instructionTextSize: '42px', starterInfoYOffset: 2 }, - "pt":{ + 'pt':{ starterInfoTextSize: '47px', instructionTextSize: '38px', starterInfoXPos: 32, }, -} +}; const starterCandyCosts: { passive: integer, costReduction: [integer, integer] }[] = [ { passive: 50, costReduction: [30, 75] }, // 1 @@ -93,7 +93,7 @@ const starterCandyCosts: { passive: integer, costReduction: [integer, integer] } { passive: 10, costReduction: [5, 15] }, // 8 { passive: 10, costReduction: [3, 10] }, // 9 { passive: 10, costReduction: [3, 10] }, // 10 -] +]; function getPassiveCandyCount(baseValue: integer): integer { return starterCandyCosts[baseValue - 1].passive; @@ -104,15 +104,15 @@ function getValueReductionCandyCounts(baseValue: integer): [integer, integer] { } const gens = [ - i18next.t("starterSelectUiHandler:gen1"), - i18next.t("starterSelectUiHandler:gen2"), - i18next.t("starterSelectUiHandler:gen3"), - i18next.t("starterSelectUiHandler:gen4"), - i18next.t("starterSelectUiHandler:gen5"), - i18next.t("starterSelectUiHandler:gen6"), - i18next.t("starterSelectUiHandler:gen7"), - i18next.t("starterSelectUiHandler:gen8"), - i18next.t("starterSelectUiHandler:gen9") + i18next.t('starterSelectUiHandler:gen1'), + i18next.t('starterSelectUiHandler:gen2'), + i18next.t('starterSelectUiHandler:gen3'), + i18next.t('starterSelectUiHandler:gen4'), + i18next.t('starterSelectUiHandler:gen5'), + i18next.t('starterSelectUiHandler:gen6'), + i18next.t('starterSelectUiHandler:gen7'), + i18next.t('starterSelectUiHandler:gen8'), + i18next.t('starterSelectUiHandler:gen9') ]; export default class StarterSelectUiHandler extends MessageUiHandler { @@ -258,7 +258,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonNameText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonNameText); - this.pokemonGrowthRateLabelText = addTextObject(this.scene, 8, 106, i18next.t("starterSelectUiHandler:growthRate"), TextStyle.SUMMARY_ALT, { fontSize: '36px' }); + this.pokemonGrowthRateLabelText = addTextObject(this.scene, 8, 106, i18next.t('starterSelectUiHandler:growthRate'), TextStyle.SUMMARY_ALT, { fontSize: '36px' }); this.pokemonGrowthRateLabelText.setOrigin(0, 0); this.pokemonGrowthRateLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonGrowthRateLabelText); @@ -271,19 +271,19 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonGenderText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonGenderText); - this.pokemonUncaughtText = addTextObject(this.scene, 6, 127, i18next.t("starterSelectUiHandler:uncaught"), TextStyle.SUMMARY_ALT, { fontSize: '56px' }); + this.pokemonUncaughtText = addTextObject(this.scene, 6, 127, i18next.t('starterSelectUiHandler:uncaught'), TextStyle.SUMMARY_ALT, { fontSize: '56px' }); this.pokemonUncaughtText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonUncaughtText); // The position should be set per language - let starterInfoXPos = textSettings?.starterInfoXPos || 31; - let starterInfoYOffset = textSettings?.starterInfoYOffset || 0; + const starterInfoXPos = textSettings?.starterInfoXPos || 31; + const starterInfoYOffset = textSettings?.starterInfoYOffset || 0; // The font size should be set per language - let starterInfoTextSize = textSettings?.starterInfoTextSize || 56; + const starterInfoTextSize = textSettings?.starterInfoTextSize || 56; - this.pokemonAbilityLabelText = addTextObject(this.scene, 6, 127 + starterInfoYOffset, i18next.t("starterSelectUiHandler:ability"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); + this.pokemonAbilityLabelText = addTextObject(this.scene, 6, 127 + starterInfoYOffset, i18next.t('starterSelectUiHandler:ability'), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonAbilityLabelText.setOrigin(0, 0); this.pokemonAbilityLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonAbilityLabelText); @@ -292,7 +292,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonAbilityText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonAbilityText); - this.pokemonPassiveLabelText = addTextObject(this.scene, 6, 136 + starterInfoYOffset, i18next.t("starterSelectUiHandler:passive"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); + this.pokemonPassiveLabelText = addTextObject(this.scene, 6, 136 + starterInfoYOffset, i18next.t('starterSelectUiHandler:passive'), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonPassiveLabelText.setOrigin(0, 0); this.pokemonPassiveLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonPassiveLabelText); @@ -301,7 +301,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonPassiveText.setOrigin(0, 0); this.starterSelectContainer.add(this.pokemonPassiveText); - this.pokemonNatureLabelText = addTextObject(this.scene, 6, 145 + starterInfoYOffset, i18next.t("starterSelectUiHandler:nature"), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); + this.pokemonNatureLabelText = addTextObject(this.scene, 6, 145 + starterInfoYOffset, i18next.t('starterSelectUiHandler:nature'), TextStyle.SUMMARY_ALT, { fontSize: starterInfoTextSize }); this.pokemonNatureLabelText.setOrigin(0, 0); this.pokemonNatureLabelText.setVisible(false); this.starterSelectContainer.add(this.pokemonNatureLabelText); @@ -366,7 +366,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.valueLimitLabel.setOrigin(0.5, 0); this.starterSelectContainer.add(this.valueLimitLabel); - const startLabel = addTextObject(this.scene, 124, 162, i18next.t("starterSelectUiHandler:start"), TextStyle.TOOLTIP_CONTENT); + const startLabel = addTextObject(this.scene, 124, 162, i18next.t('starterSelectUiHandler:start'), TextStyle.TOOLTIP_CONTENT); startLabel.setOrigin(0.5, 0); this.starterSelectContainer.add(startLabel); @@ -381,7 +381,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { let s = 0; this.genSpecies.push([]); - for (let species of allSpecies) { + for (const species of allSpecies) { if (!speciesStarters.hasOwnProperty(species.speciesId) || species.generation !== g + 1 || !species.isObtainable()) continue; starterSpecies.push(species.speciesId); @@ -433,7 +433,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { ret.setVisible(false); this.starterSelectContainer.add(ret); return ret; - } + }; this.shinyIcons = new Array(81).fill(null).map((_, i) => { return new Array(3).fill(null).map((_, v) => getShinyStar(i, v)); @@ -461,7 +461,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { return ret; }); - this.pokemonSprite = this.scene.add.sprite(53, 63, `pkmn__sub`); + this.pokemonSprite = this.scene.add.sprite(53, 63, 'pkmn__sub'); this.pokemonSprite.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], ignoreTimeTint: true }); this.starterSelectContainer.add(this.pokemonSprite); @@ -563,7 +563,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonEggMovesContainer = this.scene.add.container(102, 85); this.pokemonEggMovesContainer.setScale(0.375); - const eggMovesLabel = addTextObject(this.scene, -46, 0, i18next.t("starterSelectUiHandler:eggMoves"), TextStyle.WINDOW_ALT); + const eggMovesLabel = addTextObject(this.scene, -46, 0, i18next.t('starterSelectUiHandler:eggMoves'), TextStyle.WINDOW_ALT); eggMovesLabel.setOrigin(0.5, 0); this.pokemonEggMovesContainer.add(eggMovesLabel); @@ -591,7 +591,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterSelectContainer.add(this.pokemonEggMovesContainer); // The font size should be set per language - let instructionTextSize = textSettings.instructionTextSize; + const instructionTextSize = textSettings.instructionTextSize; this.instructionsText = addTextObject(this.scene, 4, 156, '', TextStyle.PARTY, { fontSize: instructionTextSize }); this.starterSelectContainer.add(this.instructionsText); @@ -735,51 +735,51 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } } else if (this.startCursorObj.visible) { switch (button) { - case Button.ACTION: - if (this.tryStart(true)) - success = true; - else - error = true; - break; - case Button.UP: - this.startCursorObj.setVisible(false); - this.setGenMode(true); + case Button.ACTION: + if (this.tryStart(true)) success = true; - break; - case Button.LEFT: - this.startCursorObj.setVisible(false); - this.setGenMode(false); - this.setCursor(this.cursor + 8); - success = true; - break; - case Button.RIGHT: - this.startCursorObj.setVisible(false); - this.setGenMode(false); - success = true; - break; + else + error = true; + break; + case Button.UP: + this.startCursorObj.setVisible(false); + this.setGenMode(true); + success = true; + break; + case Button.LEFT: + this.startCursorObj.setVisible(false); + this.setGenMode(false); + this.setCursor(this.cursor + 8); + success = true; + break; + case Button.RIGHT: + this.startCursorObj.setVisible(false); + this.setGenMode(false); + success = true; + break; } } else if (this.genMode) { switch (button) { - case Button.UP: - if (this.genCursor) - success = this.setCursor(this.genCursor - 1); - break; - case Button.DOWN: - if (this.genCursor < 2) - success = this.setCursor(this.genCursor + 1); - else { - this.startCursorObj.setVisible(true); - this.setGenMode(true); - success = true; - } - break; - case Button.LEFT: - success = this.setGenMode(false); - this.setCursor(this.cursor + 8); - break; - case Button.RIGHT: - success = this.setGenMode(false); - break; + case Button.UP: + if (this.genCursor) + success = this.setCursor(this.genCursor - 1); + break; + case Button.DOWN: + if (this.genCursor < 2) + success = this.setCursor(this.genCursor + 1); + else { + this.startCursorObj.setVisible(true); + this.setGenMode(true); + success = true; + } + break; + case Button.LEFT: + success = this.setGenMode(false); + this.setCursor(this.cursor + 8); + break; + case Button.RIGHT: + success = this.setGenMode(false); + break; } } else { if (button === Button.ACTION) { @@ -788,7 +788,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { else if (this.starterCursors.length < 6) { const options = [ { - label: i18next.t("starterSelectUiHandler:addToParty"), + label: i18next.t('starterSelectUiHandler:addToParty'), handler: () => { ui.setMode(Mode.STARTER_SELECT); let isDupe = false; @@ -826,7 +826,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { overrideSound: true }, { - label: i18next.t("starterSelectUiHandler:toggleIVs"), + label: i18next.t('starterSelectUiHandler:toggleIVs'), handler: () => { this.toggleStatsMode(); ui.setMode(Mode.STARTER_SELECT); @@ -837,28 +837,28 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (this.speciesStarterMoves.length > 1) { const showSwapOptions = (moveset: StarterMoveset) => { ui.setMode(Mode.STARTER_SELECT).then(() => { - ui.showText(i18next.t("starterSelectUiHandler:selectMoveSwapOut"), null, () => { + ui.showText(i18next.t('starterSelectUiHandler:selectMoveSwapOut'), null, () => { ui.setModeWithoutClear(Mode.OPTION_SELECT, { options: moveset.map((m: Moves, i: number) => { const option: OptionSelectItem = { label: allMoves[m].name, handler: () => { ui.setMode(Mode.STARTER_SELECT).then(() => { - ui.showText(`${i18next.t("starterSelectUiHandler:selectMoveSwapWith")} ${allMoves[m].name}.`, null, () => { + ui.showText(`${i18next.t('starterSelectUiHandler:selectMoveSwapWith')} ${allMoves[m].name}.`, null, () => { ui.setModeWithoutClear(Mode.OPTION_SELECT, { options: this.speciesStarterMoves.filter((sm: Moves) => sm !== m).map(sm => { // make an option for each available starter move const option = { label: allMoves[sm].name, handler: () => { - this.switchMoveHandler(i, sm, m) + this.switchMoveHandler(i, sm, m); showSwapOptions(this.starterMoveset); return true; } }; return option; }).concat({ - label: i18next.t("menu:cancel"), + label: i18next.t('menu:cancel'), handler: () => { showSwapOptions(this.starterMoveset); return true; @@ -874,7 +874,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }; return option; }).concat({ - label: i18next.t("menu:cancel"), + label: i18next.t('menu:cancel'), handler: () => { this.clearText(); ui.setMode(Mode.STARTER_SELECT); @@ -888,7 +888,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); }; options.push({ - label: i18next.t("starterSelectUiHandler:manageMoves"), + label: i18next.t('starterSelectUiHandler:manageMoves'), handler: () => { showSwapOptions(this.starterMoveset); return true; @@ -901,7 +901,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (passiveAttr & PassiveAttr.UNLOCKED) { if (!(passiveAttr & PassiveAttr.ENABLED)) { options.push({ - label: i18next.t("starterSelectUiHandler:enablePassive"), + label: i18next.t('starterSelectUiHandler:enablePassive'), handler: () => { starterData.passiveAttr |= PassiveAttr.ENABLED; ui.setMode(Mode.STARTER_SELECT); @@ -911,7 +911,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); } else { options.push({ - label: i18next.t("starterSelectUiHandler:disablePassive"), + label: i18next.t('starterSelectUiHandler:disablePassive'), handler: () => { starterData.passiveAttr ^= PassiveAttr.ENABLED; ui.setMode(Mode.STARTER_SELECT); @@ -926,7 +926,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (!(passiveAttr & PassiveAttr.UNLOCKED)) { const passiveCost = getPassiveCandyCount(speciesStarters[this.lastSpecies.speciesId]); options.push({ - label: `x${passiveCost} ${i18next.t("starterSelectUiHandler:unlockPassive")} (${allAbilities[starterPassiveAbilities[this.lastSpecies.speciesId]].name})`, + label: `x${passiveCost} ${i18next.t('starterSelectUiHandler:unlockPassive')} (${allAbilities[starterPassiveAbilities[this.lastSpecies.speciesId]].name})`, handler: () => { if (candyCount >= passiveCost) { starterData.passiveAttr |= PassiveAttr.UNLOCKED | PassiveAttr.ENABLED; @@ -950,7 +950,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { if (valueReduction < 2) { const reductionCost = getValueReductionCandyCounts(speciesStarters[this.lastSpecies.speciesId])[valueReduction]; options.push({ - label: `x${reductionCost} ${i18next.t("starterSelectUiHandler:reduceCost")}`, + label: `x${reductionCost} ${i18next.t('starterSelectUiHandler:reduceCost')}`, handler: () => { if (candyCount >= reductionCost) { starterData.valueReduction++; @@ -973,7 +973,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); } options.push({ - label: i18next.t("menu:cancel"), + label: i18next.t('menu:cancel'), handler: () => { ui.setMode(Mode.STARTER_SELECT); return true; @@ -986,7 +986,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }; if (!pokemonPrevolutions.hasOwnProperty(this.lastSpecies.speciesId)) { options.push({ - label: i18next.t("starterSelectUiHandler:useCandies"), + label: i18next.t('starterSelectUiHandler:useCandies'), handler: () => { ui.setMode(Mode.STARTER_SELECT).then(() => showUseCandies()); return true; @@ -994,7 +994,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { }); } options.push({ - label: i18next.t("menu:cancel"), + label: i18next.t('menu:cancel'), handler: () => { ui.setMode(Mode.STARTER_SELECT); return true; @@ -1012,111 +1012,111 @@ export default class StarterSelectUiHandler extends MessageUiHandler { const row = Math.floor(this.cursor / 9); const props = this.scene.gameData.getSpeciesDexAttrProps(this.lastSpecies, this.dexAttrCursor); switch (button) { - case Button.CYCLE_SHINY: - if (this.canCycleShiny) { - this.setSpeciesDetails(this.lastSpecies, !props.shiny, undefined, undefined, props.shiny ? 0 : undefined, undefined, undefined); - if (this.dexAttrCursor & DexAttr.SHINY) - this.scene.playSound('sparkle'); - else - success = true; - } - break; - case Button.CYCLE_FORM: - if (this.canCycleForm) { - const formCount = this.lastSpecies.forms.length; - let newFormIndex = props.formIndex; - do { - newFormIndex = (newFormIndex + 1) % formCount; - if (this.speciesStarterDexEntry.caughtAttr & this.scene.gameData.getFormAttr(newFormIndex)) + case Button.CYCLE_SHINY: + if (this.canCycleShiny) { + this.setSpeciesDetails(this.lastSpecies, !props.shiny, undefined, undefined, props.shiny ? 0 : undefined, undefined, undefined); + if (this.dexAttrCursor & DexAttr.SHINY) + this.scene.playSound('sparkle'); + else + success = true; + } + break; + case Button.CYCLE_FORM: + if (this.canCycleForm) { + const formCount = this.lastSpecies.forms.length; + let newFormIndex = props.formIndex; + do { + newFormIndex = (newFormIndex + 1) % formCount; + if (this.speciesStarterDexEntry.caughtAttr & this.scene.gameData.getFormAttr(newFormIndex)) + break; + } while (newFormIndex !== props.formIndex); + this.setSpeciesDetails(this.lastSpecies, undefined, newFormIndex, undefined, undefined, undefined, undefined); + success = true; + } + break; + case Button.CYCLE_GENDER: + if (this.canCycleGender) { + this.setSpeciesDetails(this.lastSpecies, undefined, undefined, !props.female, undefined, undefined, undefined); + success = true; + } + break; + case Button.CYCLE_ABILITY: + if (this.canCycleAbility) { + const abilityCount = this.lastSpecies.getAbilityCount(); + const abilityAttr = this.scene.gameData.starterData[this.lastSpecies.speciesId].abilityAttr; + let newAbilityIndex = this.abilityCursor; + do { + newAbilityIndex = (newAbilityIndex + 1) % abilityCount; + if (!newAbilityIndex) { + if (abilityAttr & AbilityAttr.ABILITY_1) break; - } while (newFormIndex !== props.formIndex); - this.setSpeciesDetails(this.lastSpecies, undefined, newFormIndex, undefined, undefined, undefined, undefined); - success = true; - } - break; - case Button.CYCLE_GENDER: - if (this.canCycleGender) { - this.setSpeciesDetails(this.lastSpecies, undefined, undefined, !props.female, undefined, undefined, undefined); - success = true; - } - break; - case Button.CYCLE_ABILITY: - if (this.canCycleAbility) { - const abilityCount = this.lastSpecies.getAbilityCount(); - const abilityAttr = this.scene.gameData.starterData[this.lastSpecies.speciesId].abilityAttr; - let newAbilityIndex = this.abilityCursor; - do { - newAbilityIndex = (newAbilityIndex + 1) % abilityCount; - if (!newAbilityIndex) { - if (abilityAttr & AbilityAttr.ABILITY_1) - break; - } else if (newAbilityIndex === 1) { - if (abilityAttr & (this.lastSpecies.ability2 ? AbilityAttr.ABILITY_2 : AbilityAttr.ABILITY_HIDDEN)) - break; - } else { - if (abilityAttr & AbilityAttr.ABILITY_HIDDEN) - break; - } - } while (newAbilityIndex !== this.abilityCursor); - this.setSpeciesDetails(this.lastSpecies, undefined, undefined, undefined, undefined, newAbilityIndex, undefined); - success = true; - } - break; - case Button.CYCLE_NATURE: - if (this.canCycleNature) { - const natures = this.scene.gameData.getNaturesForAttr(this.speciesStarterDexEntry.natureAttr); - const natureIndex = natures.indexOf(this.natureCursor); - const newNature = natures[natureIndex < natures.length - 1 ? natureIndex + 1 : 0]; - this.setSpeciesDetails(this.lastSpecies, undefined, undefined, undefined, undefined, undefined, newNature, undefined); - success = true; - } - break; - case Button.CYCLE_VARIANT: - if (this.canCycleVariant) { - let newVariant = props.variant; - do { - newVariant = (newVariant + 1) % 3; - if (!newVariant) { - if (this.speciesStarterDexEntry.caughtAttr & DexAttr.DEFAULT_VARIANT) - break; - } else if (newVariant === 1) { - if (this.speciesStarterDexEntry.caughtAttr & DexAttr.VARIANT_2) - break; - } else { - if (this.speciesStarterDexEntry.caughtAttr & DexAttr.VARIANT_3) - break; - } - } while (newVariant !== props.variant); - this.setSpeciesDetails(this.lastSpecies, undefined, undefined, undefined, newVariant, undefined, undefined); - success = true; - } - break; - case Button.UP: - if (row) - success = this.setCursor(this.cursor - 9); - break; - case Button.DOWN: - if (row < rows - 2 || (row < rows - 1 && this.cursor % 9 <= (genStarters - 1) % 9)) - success = this.setCursor(this.cursor + 9); - break; - case Button.LEFT: - if (this.cursor % 9) - success = this.setCursor(this.cursor - 1); - else { - if (row >= Math.min(5, rows - 1)) - this.startCursorObj.setVisible(true); - success = this.setGenMode(true); - } - break; - case Button.RIGHT: - if (this.cursor % 9 < (row < rows - 1 ? 8 : (genStarters - 1) % 9)) - success = this.setCursor(this.cursor + 1); - else { - if (row >= Math.min(5, rows - 1)) - this.startCursorObj.setVisible(true); - success = this.setGenMode(true); - } - break; + } else if (newAbilityIndex === 1) { + if (abilityAttr & (this.lastSpecies.ability2 ? AbilityAttr.ABILITY_2 : AbilityAttr.ABILITY_HIDDEN)) + break; + } else { + if (abilityAttr & AbilityAttr.ABILITY_HIDDEN) + break; + } + } while (newAbilityIndex !== this.abilityCursor); + this.setSpeciesDetails(this.lastSpecies, undefined, undefined, undefined, undefined, newAbilityIndex, undefined); + success = true; + } + break; + case Button.CYCLE_NATURE: + if (this.canCycleNature) { + const natures = this.scene.gameData.getNaturesForAttr(this.speciesStarterDexEntry.natureAttr); + const natureIndex = natures.indexOf(this.natureCursor); + const newNature = natures[natureIndex < natures.length - 1 ? natureIndex + 1 : 0]; + this.setSpeciesDetails(this.lastSpecies, undefined, undefined, undefined, undefined, undefined, newNature, undefined); + success = true; + } + break; + case Button.CYCLE_VARIANT: + if (this.canCycleVariant) { + let newVariant = props.variant; + do { + newVariant = (newVariant + 1) % 3; + if (!newVariant) { + if (this.speciesStarterDexEntry.caughtAttr & DexAttr.DEFAULT_VARIANT) + break; + } else if (newVariant === 1) { + if (this.speciesStarterDexEntry.caughtAttr & DexAttr.VARIANT_2) + break; + } else { + if (this.speciesStarterDexEntry.caughtAttr & DexAttr.VARIANT_3) + break; + } + } while (newVariant !== props.variant); + this.setSpeciesDetails(this.lastSpecies, undefined, undefined, undefined, newVariant, undefined, undefined); + success = true; + } + break; + case Button.UP: + if (row) + success = this.setCursor(this.cursor - 9); + break; + case Button.DOWN: + if (row < rows - 2 || (row < rows - 1 && this.cursor % 9 <= (genStarters - 1) % 9)) + success = this.setCursor(this.cursor + 9); + break; + case Button.LEFT: + if (this.cursor % 9) + success = this.setCursor(this.cursor - 1); + else { + if (row >= Math.min(5, rows - 1)) + this.startCursorObj.setVisible(true); + success = this.setGenMode(true); + } + break; + case Button.RIGHT: + if (this.cursor % 9 < (row < rows - 1 ? 8 : (genStarters - 1) % 9)) + success = this.setCursor(this.cursor + 1); + else { + if (row >= Math.min(5, rows - 1)) + this.startCursorObj.setVisible(true); + success = this.setGenMode(true); + } + break; } } } @@ -1159,21 +1159,21 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } updateInstructions(): void { - let instructionLines = [ ]; - let cycleInstructionLines = []; + const instructionLines = [ ]; + const cycleInstructionLines = []; if (this.speciesStarterDexEntry?.caughtAttr) { if (this.canCycleShiny) - cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleShiny")); + cycleInstructionLines.push(i18next.t('starterSelectUiHandler:cycleShiny')); if (this.canCycleForm) - cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleForm")); + cycleInstructionLines.push(i18next.t('starterSelectUiHandler:cycleForm')); if (this.canCycleGender) - cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleGender")); + cycleInstructionLines.push(i18next.t('starterSelectUiHandler:cycleGender')); if (this.canCycleAbility) - cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleAbility")); + cycleInstructionLines.push(i18next.t('starterSelectUiHandler:cycleAbility')); if (this.canCycleNature) - cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleNature")); + cycleInstructionLines.push(i18next.t('starterSelectUiHandler:cycleNature')); if (this.canCycleVariant) - cycleInstructionLines.push(i18next.t("starterSelectUiHandler:cycleVariant")); + cycleInstructionLines.push(i18next.t('starterSelectUiHandler:cycleVariant')); } if (cycleInstructionLines.length > 2) { @@ -1184,7 +1184,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { cycleInstructionLines[2] += ' | ' + cycleInstructionLines.splice(3, 1); } - for (let cil of cycleInstructionLines) + for (const cil of cycleInstructionLines) instructionLines.push(cil); this.instructionsText.setText(instructionLines.join('\n')); @@ -1192,11 +1192,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler { getValueLimit(): integer { switch (this.gameMode) { - case GameModes.ENDLESS: - case GameModes.SPLICED_ENDLESS: - return 15; - default: - return 10; + case GameModes.ENDLESS: + case GameModes.SPLICED_ENDLESS: + return 15; + default: + return 10; } } @@ -1273,17 +1273,17 @@ export default class StarterSelectUiHandler extends MessageUiHandler { updateGenOptions(): void { let text = ''; for (let g = this.genScrollCursor; g <= this.genScrollCursor + 2; g++) { - let optionText = ''; - if (g === this.genScrollCursor && this.genScrollCursor) - optionText = '↑'; - else if (g === this.genScrollCursor + 2 && this.genScrollCursor < gens.length - 3) - optionText = '↓' - else - optionText = i18next.t(`starterSelectUiHandler:gen${g + 1}`); - text += `${text ? '\n' : ''}${optionText}`; + let optionText = ''; + if (g === this.genScrollCursor && this.genScrollCursor) + optionText = '↑'; + else if (g === this.genScrollCursor + 2 && this.genScrollCursor < gens.length - 3) + optionText = '↓'; + else + optionText = i18next.t(`starterSelectUiHandler:gen${g + 1}`); + text += `${text ? '\n' : ''}${optionText}`; } this.genOptionsText.setText(text); -} + } setGenMode(genMode: boolean): boolean { this.genCursorObj.setVisible(genMode && !this.startCursorObj.visible); @@ -1344,9 +1344,9 @@ export default class StarterSelectUiHandler extends MessageUiHandler { //Growth translate let growthReadable = Utils.toReadableString(GrowthRate[species.growthRate]); - let growthAux = growthReadable.replace(" ", "_") - if(i18next.exists("growth:" + growthAux)){ - growthReadable = i18next.t("growth:"+ growthAux as any) + const growthAux = growthReadable.replace(' ', '_'); + if(i18next.exists('growth:' + growthAux)){ + growthReadable = i18next.t('growth:'+ growthAux as any); } this.pokemonGrowthRateText.setText(growthReadable); @@ -1374,7 +1374,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonCandyCountText.setVisible(true); this.pokemonFormText.setVisible(true); - var currentFriendship = this.scene.gameData.starterData[this.lastSpecies.speciesId].friendship; + let currentFriendship = this.scene.gameData.starterData[this.lastSpecies.speciesId].friendship; if (!currentFriendship || currentFriendship === undefined) currentFriendship = 0; @@ -1593,7 +1593,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.pokemonAbilityText.setShadowColor(this.getTextColor(!isHidden ? TextStyle.SUMMARY_ALT : TextStyle.SUMMARY_GOLD, true)); const passiveAttr = this.scene.gameData.starterData[species.speciesId].passiveAttr; - this.pokemonPassiveText.setText(passiveAttr & PassiveAttr.UNLOCKED ? passiveAttr & PassiveAttr.ENABLED ? allAbilities[starterPassiveAbilities[this.lastSpecies.speciesId]].name : i18next.t("starterSelectUiHandler:disabled") : i18next.t("starterSelectUiHandler:locked")); + this.pokemonPassiveText.setText(passiveAttr & PassiveAttr.UNLOCKED ? passiveAttr & PassiveAttr.ENABLED ? allAbilities[starterPassiveAbilities[this.lastSpecies.speciesId]].name : i18next.t('starterSelectUiHandler:disabled') : i18next.t('starterSelectUiHandler:locked')); this.pokemonPassiveText.setColor(this.getTextColor(passiveAttr === (PassiveAttr.UNLOCKED | PassiveAttr.ENABLED) ? TextStyle.SUMMARY_ALT : TextStyle.SUMMARY_GRAY)); this.pokemonPassiveText.setShadowColor(this.getTextColor(passiveAttr === (PassiveAttr.UNLOCKED | PassiveAttr.ENABLED) ? TextStyle.SUMMARY_ALT : TextStyle.SUMMARY_GRAY, true)); @@ -1613,7 +1613,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { } const speciesMoveData = this.scene.gameData.starterData[species.speciesId].moveset; - let moveData: StarterMoveset = speciesMoveData + const moveData: StarterMoveset = speciesMoveData ? Array.isArray(speciesMoveData) ? speciesMoveData as StarterMoveset : (speciesMoveData as StarterFormMoveData)[formIndex] @@ -1719,16 +1719,16 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.starterValueLabels[cursor].setText(valueStr); let textStyle: TextStyle; switch (baseStarterValue - starterValue) { - case 0: - textStyle = TextStyle.WINDOW; - break; - case 1: - case 0.5: - textStyle = TextStyle.SUMMARY_BLUE; - break; - default: - textStyle = TextStyle.SUMMARY_GOLD; - break; + case 0: + textStyle = TextStyle.WINDOW; + break; + case 1: + case 0.5: + textStyle = TextStyle.SUMMARY_BLUE; + break; + default: + textStyle = TextStyle.SUMMARY_GOLD; + break; } this.starterValueLabels[cursor].setColor(this.getTextColor(textStyle)); this.starterValueLabels[cursor].setShadowColor(this.getTextColor(textStyle, true)); @@ -1770,7 +1770,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler { this.clearText(); }; - ui.showText(i18next.t("starterSelectUiHandler:confirmStartTeam"), null, () => { + ui.showText(i18next.t('starterSelectUiHandler:confirmStartTeam'), null, () => { ui.setModeWithoutClear(Mode.CONFIRM, () => { const startRun = (gameMode: GameModes) => { this.scene.gameMode = gameModes[gameMode]; diff --git a/src/ui/stats-container.ts b/src/ui/stats-container.ts index b8d9c59a4d7..319a3ea0e28 100644 --- a/src/ui/stats-container.ts +++ b/src/ui/stats-container.ts @@ -1,11 +1,11 @@ -import BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; -import BattleScene from "../battle-scene"; -import { Stat, getStatName } from "../data/pokemon-stat"; -import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from "./text"; +import BBCodeText from 'phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText'; +import BattleScene from '../battle-scene'; +import { Stat, getStatName } from '../data/pokemon-stat'; +import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor } from './text'; const ivChartSize = 24; const ivChartStatCoordMultipliers = [ [ 0, -1 ], [ 0.825, -0.5 ], [ 0.825, 0.5 ], [ -0.825, -0.5 ], [ -0.825, 0.5 ], [ 0, 1 ] ]; -const ivChartStatIndexes = [0,1,2,5,4,3] // swap special attack and speed +const ivChartStatIndexes = [0,1,2,5,4,3]; // swap special attack and speed const defaultIvChartData = new Array(12).fill(null).map(() => 0); export class StatsContainer extends Phaser.GameObjects.Container { @@ -54,7 +54,7 @@ export class StatsContainer extends Phaser.GameObjects.Container { statLabel.setOrigin(0.5); this.ivStatValueTexts[i] = addBBCodeTextObject(this.scene, statLabel.x, statLabel.y + 8, '0', TextStyle.TOOLTIP_CONTENT); - this.ivStatValueTexts[i].setOrigin(0.5) + this.ivStatValueTexts[i].setOrigin(0.5); this.add(statLabel); this.add(this.ivStatValueTexts[i]); @@ -94,4 +94,4 @@ export class StatsContainer extends Phaser.GameObjects.Container { this.ivChart.setTo(defaultIvChartData); } } -} \ No newline at end of file +} diff --git a/src/ui/summary-ui-handler.ts b/src/ui/summary-ui-handler.ts index 0655880d271..fd8a86f429c 100644 --- a/src/ui/summary-ui-handler.ts +++ b/src/ui/summary-ui-handler.ts @@ -1,26 +1,26 @@ -import BattleScene, { starterColors } from "../battle-scene"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; -import * as Utils from "../utils"; -import { PlayerPokemon } from "../field/pokemon"; +import BattleScene, { starterColors } from '../battle-scene'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; +import * as Utils from '../utils'; +import { PlayerPokemon } from '../field/pokemon'; import { default as PokemonSpecies, PokemonSpeciesForm, SpeciesFormKey, getFusedSpeciesName, getPokemonSpecies, getPokemonSpeciesForm, getStarterValueFriendshipCap, speciesStarters, starterPassiveAbilities } from '../data/pokemon-species'; -import { argbFromRgba } from "@material/material-color-utilities"; -import { Type, getTypeRgb } from "../data/type"; -import { TextStyle, addBBCodeTextObject, addTextObject, getBBCodeFrag, getTextColor } from "./text"; -import Move, { MoveCategory } from "../data/move"; -import { getPokeballAtlasKey } from "../data/pokeball"; -import { getGenderColor, getGenderSymbol } from "../data/gender"; -import { getLevelRelExp, getLevelTotalExp } from "../data/exp"; -import { Stat, getStatName } from "../data/pokemon-stat"; -import { PokemonHeldItemModifier } from "../modifier/modifier"; -import { StatusEffect } from "../data/status-effect"; -import { getBiomeName } from "../data/biomes"; -import { Nature, getNatureStatMultiplier } from "../data/nature"; -import { loggedInUser } from "../account"; -import { PlayerGender } from "../system/game-data"; -import { Variant, getVariantTint } from "#app/data/variant"; -import {Button} from "../enums/buttons"; -import { Ability } from "../data/ability.js"; +import { argbFromRgba } from '@material/material-color-utilities'; +import { Type, getTypeRgb } from '../data/type'; +import { TextStyle, addBBCodeTextObject, addTextObject, getBBCodeFrag, getTextColor } from './text'; +import Move, { MoveCategory } from '../data/move'; +import { getPokeballAtlasKey } from '../data/pokeball'; +import { getGenderColor, getGenderSymbol } from '../data/gender'; +import { getLevelRelExp, getLevelTotalExp } from '../data/exp'; +import { Stat, getStatName } from '../data/pokemon-stat'; +import { PokemonHeldItemModifier } from '../modifier/modifier'; +import { StatusEffect } from '../data/status-effect'; +import { getBiomeName } from '../data/biomes'; +import { Nature, getNatureStatMultiplier } from '../data/nature'; +import { loggedInUser } from '../account'; +import { PlayerGender } from '../system/game-data'; +import { Variant, getVariantTint } from '#app/data/variant'; +import {Button} from '../enums/buttons'; +import { Ability } from '../data/ability.js'; enum Page { PROFILE, @@ -132,7 +132,7 @@ export default class SummaryUiHandler extends UiHandler { this.numberText.setOrigin(0, 1); this.summaryContainer.add(this.numberText); - this.pokemonSprite = this.scene.initPokemonSprite(this.scene.add.sprite(56, -106, `pkmn__sub`), null, false, true); + this.pokemonSprite = this.scene.initPokemonSprite(this.scene.add.sprite(56, -106, 'pkmn__sub'), null, false, true); this.summaryContainer.add(this.pokemonSprite); this.nameText = addTextObject(this.scene, 6, -54, '', TextStyle.SUMMARY); @@ -156,7 +156,7 @@ export default class SummaryUiHandler extends UiHandler { this.fusionShinyIcon = this.scene.add.image(0, 0, 'shiny_star_2'); this.fusionShinyIcon.setVisible(false); this.fusionShinyIcon.setOrigin(0, 0); - this.fusionShinyIcon.setScale(0.75) + this.fusionShinyIcon.setScale(0.75); this.summaryContainer.add(this.fusionShinyIcon); this.pokeball = this.scene.add.sprite(6, -19, 'pb'); @@ -313,7 +313,7 @@ export default class SummaryUiHandler extends UiHandler { else this.championRibbon.setVisible(false); - var currentFriendship = this.scene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].friendship; + let currentFriendship = this.scene.gameData.starterData[this.pokemon.species.getRootSpeciesId()].friendship; if (!currentFriendship || currentFriendship === undefined) currentFriendship = 0; @@ -356,19 +356,19 @@ export default class SummaryUiHandler extends UiHandler { this.genderText.setShadowColor(getGenderColor(this.pokemon.getGender(true), true)); switch (this.summaryUiMode) { - case SummaryUiMode.DEFAULT: - const page = args.length < 2 ? Page.PROFILE : args[2] as Page; - this.hideMoveEffect(true); - this.setCursor(page); - break; - case SummaryUiMode.LEARN_MOVE: - this.newMove = args[2] as Move; - this.moveSelectFunction = args[3] as Function; + case SummaryUiMode.DEFAULT: + const page = args.length < 2 ? Page.PROFILE : args[2] as Page; + this.hideMoveEffect(true); + this.setCursor(page); + break; + case SummaryUiMode.LEARN_MOVE: + this.newMove = args[2] as Move; + this.moveSelectFunction = args[3] as Function; - this.showMoveEffect(true); - this.setCursor(Page.MOVES); - this.showMoveSelect(); - break; + this.showMoveEffect(true); + this.setCursor(Page.MOVES); + this.showMoveSelect(); + break; } const fromSummary = args.length >= 2; @@ -433,25 +433,25 @@ export default class SummaryUiHandler extends UiHandler { success = true; } else { switch (button) { - case Button.UP: - success = this.setCursor(this.moveCursor ? this.moveCursor - 1 : 4); + case Button.UP: + success = this.setCursor(this.moveCursor ? this.moveCursor - 1 : 4); + break; + case Button.DOWN: + success = this.setCursor(this.moveCursor < 4 ? this.moveCursor + 1 : 0); + break; + case Button.LEFT: + this.moveSelect = false; + this.setCursor(Page.STATS); + if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE){ + this.hideMoveEffect(); + this.destroyBlinkCursor(); + success = true; break; - case Button.DOWN: - success = this.setCursor(this.moveCursor < 4 ? this.moveCursor + 1 : 0); + } else { + this.hideMoveSelect(); + success = true; break; - case Button.LEFT: - this.moveSelect = false; - this.setCursor(Page.STATS); - if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE){ - this.hideMoveEffect(); - this.destroyBlinkCursor(); - success = true; - break; - } else { - this.hideMoveSelect(); - success = true; - break; - } + } } } } else { @@ -480,31 +480,31 @@ export default class SummaryUiHandler extends UiHandler { } else { const pages = Utils.getEnumValues(Page); switch (button) { - case Button.UP: - case Button.DOWN: - if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE) - break; - const isDown = button === Button.DOWN; - const party = this.scene.getParty(); - const partyMemberIndex = party.indexOf(this.pokemon); - if ((isDown && partyMemberIndex < party.length - 1) || (!isDown && partyMemberIndex)) { - const page = this.cursor; - this.clear(); - this.show([ party[partyMemberIndex + (isDown ? 1 : -1)], this.summaryUiMode, page ]); + case Button.UP: + case Button.DOWN: + if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE) + break; + const isDown = button === Button.DOWN; + const party = this.scene.getParty(); + const partyMemberIndex = party.indexOf(this.pokemon); + if ((isDown && partyMemberIndex < party.length - 1) || (!isDown && partyMemberIndex)) { + const page = this.cursor; + this.clear(); + this.show([ party[partyMemberIndex + (isDown ? 1 : -1)], this.summaryUiMode, page ]); + } + break; + case Button.LEFT: + if (this.cursor) + success = this.setCursor(this.cursor - 1); + break; + case Button.RIGHT: + if (this.cursor < pages.length - 1) { + success = this.setCursor(this.cursor + 1); + if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE && this.cursor === Page.MOVES) { + this.moveSelect = true; } - break; - case Button.LEFT: - if (this.cursor) - success = this.setCursor(this.cursor - 1); - break; - case Button.RIGHT: - if (this.cursor < pages.length - 1) { - success = this.setCursor(this.cursor + 1); - if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE && this.cursor === Page.MOVES) { - this.moveSelect = true; - } - } - break; + } + break; } } } @@ -521,37 +521,37 @@ export default class SummaryUiHandler extends UiHandler { let changed: boolean = overrideChanged || this.moveCursor !== cursor; if (this.moveSelect) { - this.moveCursor = cursor; + this.moveCursor = cursor; - const selectedMove = this.getSelectedMove(); + const selectedMove = this.getSelectedMove(); - if (selectedMove) { - this.moveDescriptionText.setY(84); - this.movePowerText.setText(selectedMove.power >= 0 ? selectedMove.power.toString() : '---'); - this.moveAccuracyText.setText(selectedMove.accuracy >= 0 ? selectedMove.accuracy.toString() : '---'); - this.moveCategoryIcon.setFrame(MoveCategory[selectedMove.category].toLowerCase()); - this.showMoveEffect(); - } else - this.hideMoveEffect(); + if (selectedMove) { + this.moveDescriptionText.setY(84); + this.movePowerText.setText(selectedMove.power >= 0 ? selectedMove.power.toString() : '---'); + this.moveAccuracyText.setText(selectedMove.accuracy >= 0 ? selectedMove.accuracy.toString() : '---'); + this.moveCategoryIcon.setFrame(MoveCategory[selectedMove.category].toLowerCase()); + this.showMoveEffect(); + } else + this.hideMoveEffect(); - this.moveDescriptionText.setText(selectedMove?.effect || ''); - const moveDescriptionLineCount = Math.floor(this.moveDescriptionText.displayHeight / 14.83); + this.moveDescriptionText.setText(selectedMove?.effect || ''); + const moveDescriptionLineCount = Math.floor(this.moveDescriptionText.displayHeight / 14.83); - if (this.descriptionScrollTween) { - this.descriptionScrollTween.remove(); - this.descriptionScrollTween = null; - } + if (this.descriptionScrollTween) { + this.descriptionScrollTween.remove(); + this.descriptionScrollTween = null; + } - if (moveDescriptionLineCount > 3) { - this.descriptionScrollTween = this.scene.tweens.add({ - targets: this.moveDescriptionText, - delay: Utils.fixedInt(2000), - loop: -1, - hold: Utils.fixedInt(2000), - duration: Utils.fixedInt((moveDescriptionLineCount - 3) * 2000), - y: `-=${14.83 * (moveDescriptionLineCount - 3)}` - }); - } + if (moveDescriptionLineCount > 3) { + this.descriptionScrollTween = this.scene.tweens.add({ + targets: this.moveDescriptionText, + delay: Utils.fixedInt(2000), + loop: -1, + hold: Utils.fixedInt(2000), + duration: Utils.fixedInt((moveDescriptionLineCount - 3) * 2000), + y: `-=${14.83 * (moveDescriptionLineCount - 3)}` + }); + } if (!this.moveCursorObj) { this.moveCursorObj = this.scene.add.sprite(-2, 0, 'summary_moves_cursor', 'highlight'); @@ -653,292 +653,292 @@ export default class SummaryUiHandler extends UiHandler { } switch (page) { - case Page.PROFILE: - const profileContainer = this.scene.add.container(0, -pageBg.height); - pageContainer.add(profileContainer); + case Page.PROFILE: + const profileContainer = this.scene.add.container(0, -pageBg.height); + pageContainer.add(profileContainer); - const trainerLabel = addTextObject(this.scene, 7, 12, 'OT/', TextStyle.SUMMARY_ALT); - trainerLabel.setOrigin(0, 0); - profileContainer.add(trainerLabel); + const trainerLabel = addTextObject(this.scene, 7, 12, 'OT/', TextStyle.SUMMARY_ALT); + trainerLabel.setOrigin(0, 0); + profileContainer.add(trainerLabel); - const trainerText = addTextObject(this.scene, 25, 12, loggedInUser?.username || 'Unknown', - this.scene.gameData.gender === PlayerGender.FEMALE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE); - trainerText.setOrigin(0, 0); - profileContainer.add(trainerText); + const trainerText = addTextObject(this.scene, 25, 12, loggedInUser?.username || 'Unknown', + this.scene.gameData.gender === PlayerGender.FEMALE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE); + trainerText.setOrigin(0, 0); + profileContainer.add(trainerText); - const trainerIdText = addTextObject(this.scene, 174, 12, this.scene.gameData.trainerId.toString(), TextStyle.SUMMARY_ALT); - trainerIdText.setOrigin(0, 0); - profileContainer.add(trainerIdText); + const trainerIdText = addTextObject(this.scene, 174, 12, this.scene.gameData.trainerId.toString(), TextStyle.SUMMARY_ALT); + trainerIdText.setOrigin(0, 0); + profileContainer.add(trainerIdText); - const typeLabel = addTextObject(this.scene, 7, 28, 'Type/', TextStyle.WINDOW_ALT); - typeLabel.setOrigin(0, 0); - profileContainer.add(typeLabel); + const typeLabel = addTextObject(this.scene, 7, 28, 'Type/', TextStyle.WINDOW_ALT); + typeLabel.setOrigin(0, 0); + profileContainer.add(typeLabel); - const getTypeIcon = (index: integer, type: Type, tera: boolean = false) => { - const xCoord = 39 + 34 * index; - const typeIcon = !tera - ? this.scene.add.sprite(xCoord, 42, 'types', Type[type].toLowerCase()) - : this.scene.add.sprite(xCoord, 42, 'type_tera'); - if (tera) { - typeIcon.setScale(0.5); - const typeRgb = getTypeRgb(type); - typeIcon.setTint(Phaser.Display.Color.GetColor(typeRgb[0], typeRgb[1], typeRgb[2])); - } - typeIcon.setOrigin(0, 1); - return typeIcon; - }; + const getTypeIcon = (index: integer, type: Type, tera: boolean = false) => { + const xCoord = 39 + 34 * index; + const typeIcon = !tera + ? this.scene.add.sprite(xCoord, 42, 'types', Type[type].toLowerCase()) + : this.scene.add.sprite(xCoord, 42, 'type_tera'); + if (tera) { + typeIcon.setScale(0.5); + const typeRgb = getTypeRgb(type); + typeIcon.setTint(Phaser.Display.Color.GetColor(typeRgb[0], typeRgb[1], typeRgb[2])); + } + typeIcon.setOrigin(0, 1); + return typeIcon; + }; - const types = this.pokemon.getTypes(false, false, true); - profileContainer.add(getTypeIcon(0, types[0])); - if (types.length > 1) - profileContainer.add(getTypeIcon(1, types[1])); - if (this.pokemon.isTerastallized()) - profileContainer.add(getTypeIcon(types.length, this.pokemon.getTeraType(), true)); + const types = this.pokemon.getTypes(false, false, true); + profileContainer.add(getTypeIcon(0, types[0])); + if (types.length > 1) + profileContainer.add(getTypeIcon(1, types[1])); + if (this.pokemon.isTerastallized()) + profileContainer.add(getTypeIcon(types.length, this.pokemon.getTeraType(), true)); - if (this.pokemon.getLuck()) { - const luckLabelText = addTextObject(this.scene, 141, 28, 'Luck:', TextStyle.SUMMARY_ALT); - luckLabelText.setOrigin(0, 0); - profileContainer.add(luckLabelText); + if (this.pokemon.getLuck()) { + const luckLabelText = addTextObject(this.scene, 141, 28, 'Luck:', TextStyle.SUMMARY_ALT); + luckLabelText.setOrigin(0, 0); + profileContainer.add(luckLabelText); - const luckText = addTextObject(this.scene, 141 + luckLabelText.displayWidth + 2, 28, this.pokemon.getLuck().toString(), TextStyle.SUMMARY); - luckText.setOrigin(0, 0); - luckText.setTint(getVariantTint((Math.min(this.pokemon.getLuck() - 1, 2)) as Variant)); - profileContainer.add(luckText); - } + const luckText = addTextObject(this.scene, 141 + luckLabelText.displayWidth + 2, 28, this.pokemon.getLuck().toString(), TextStyle.SUMMARY); + luckText.setOrigin(0, 0); + luckText.setTint(getVariantTint((Math.min(this.pokemon.getLuck() - 1, 2)) as Variant)); + profileContainer.add(luckText); + } - this.abilityContainer = { - labelImage: this.scene.add.image(0, 0, 'summary_profile_ability'), - ability: this.pokemon.getAbility(true), - nameText: null, - descriptionText: null}; + this.abilityContainer = { + labelImage: this.scene.add.image(0, 0, 'summary_profile_ability'), + ability: this.pokemon.getAbility(true), + nameText: null, + descriptionText: null}; - const allAbilityInfo = [this.abilityContainer]; // Creates an array to iterate through - // Only add to the array and set up displaying a passive if it's unlocked - if (this.pokemon.hasPassive()) { - this.passiveContainer = { - labelImage: this.scene.add.image(0, 0, 'summary_profile_passive'), - ability: this.pokemon.getPassiveAbility(), - nameText: null, - descriptionText: null}; - allAbilityInfo.push(this.passiveContainer); + const allAbilityInfo = [this.abilityContainer]; // Creates an array to iterate through + // Only add to the array and set up displaying a passive if it's unlocked + if (this.pokemon.hasPassive()) { + this.passiveContainer = { + labelImage: this.scene.add.image(0, 0, 'summary_profile_passive'), + ability: this.pokemon.getPassiveAbility(), + nameText: null, + descriptionText: null}; + allAbilityInfo.push(this.passiveContainer); - // Sets up the pixel button prompt image - this.abilityPrompt = this.scene.add.image(0, 0, !this.scene.gamepadSupport ? 'summary_profile_prompt_z' : 'summary_profile_prompt_a'); - this.abilityPrompt.setPosition(8, 43); - this.abilityPrompt.setVisible(true); - this.abilityPrompt.setOrigin(0, 0); - profileContainer.add(this.abilityPrompt); + // Sets up the pixel button prompt image + this.abilityPrompt = this.scene.add.image(0, 0, !this.scene.gamepadSupport ? 'summary_profile_prompt_z' : 'summary_profile_prompt_a'); + this.abilityPrompt.setPosition(8, 43); + this.abilityPrompt.setVisible(true); + this.abilityPrompt.setOrigin(0, 0); + profileContainer.add(this.abilityPrompt); + } + + allAbilityInfo.forEach(abilityInfo => { + abilityInfo.labelImage.setPosition(17, 43); + abilityInfo.labelImage.setVisible(true); + abilityInfo.labelImage.setOrigin(0, 0); + profileContainer.add(abilityInfo.labelImage); + + abilityInfo.nameText = addTextObject(this.scene, 7, 66, abilityInfo.ability.name, TextStyle.SUMMARY_ALT); + abilityInfo.nameText.setOrigin(0, 1); + profileContainer.add(abilityInfo.nameText); + + abilityInfo.descriptionText = addTextObject(this.scene, 7, 69, abilityInfo.ability.description, TextStyle.WINDOW_ALT, { wordWrap: { width: 1224 } }); + abilityInfo.descriptionText.setOrigin(0, 0); + profileContainer.add(abilityInfo.descriptionText); + + // Sets up the mask that hides the description text to give an illusion of scrolling + const descriptionTextMaskRect = this.scene.make.graphics({}); + descriptionTextMaskRect.setScale(6); + descriptionTextMaskRect.fillStyle(0xFFFFFF); + descriptionTextMaskRect.beginPath(); + descriptionTextMaskRect.fillRect(110, 90.5, 206, 31); + + const abilityDescriptionTextMask = descriptionTextMaskRect.createGeometryMask(); + + abilityInfo.descriptionText.setMask(abilityDescriptionTextMask); + + const abilityDescriptionLineCount = Math.floor(abilityInfo.descriptionText.displayHeight / 14.83); + + // Animates the description text moving upwards + if (abilityDescriptionLineCount > 2) { + abilityInfo.descriptionText.setY(69); + this.descriptionScrollTween = this.scene.tweens.add({ + targets: abilityInfo.descriptionText, + delay: Utils.fixedInt(2000), + loop: -1, + hold: Utils.fixedInt(2000), + duration: Utils.fixedInt((abilityDescriptionLineCount - 2) * 2000), + y: `-=${14.83 * (abilityDescriptionLineCount - 2)}` + }); } + }); + // Turn off visibility of passive info by default + this.passiveContainer?.labelImage.setVisible(false); + this.passiveContainer?.nameText.setVisible(false); + this.passiveContainer?.descriptionText.setVisible(false); - allAbilityInfo.forEach(abilityInfo => { - abilityInfo.labelImage.setPosition(17, 43); - abilityInfo.labelImage.setVisible(true); - abilityInfo.labelImage.setOrigin(0, 0); - profileContainer.add(abilityInfo.labelImage); - - abilityInfo.nameText = addTextObject(this.scene, 7, 66, abilityInfo.ability.name, TextStyle.SUMMARY_ALT); - abilityInfo.nameText.setOrigin(0, 1); - profileContainer.add(abilityInfo.nameText); - - abilityInfo.descriptionText = addTextObject(this.scene, 7, 69, abilityInfo.ability.description, TextStyle.WINDOW_ALT, { wordWrap: { width: 1224 } }); - abilityInfo.descriptionText.setOrigin(0, 0); - profileContainer.add(abilityInfo.descriptionText); - - // Sets up the mask that hides the description text to give an illusion of scrolling - const descriptionTextMaskRect = this.scene.make.graphics({}); - descriptionTextMaskRect.setScale(6); - descriptionTextMaskRect.fillStyle(0xFFFFFF); - descriptionTextMaskRect.beginPath(); - descriptionTextMaskRect.fillRect(110, 90.5, 206, 31); - - const abilityDescriptionTextMask = descriptionTextMaskRect.createGeometryMask(); - - abilityInfo.descriptionText.setMask(abilityDescriptionTextMask); - - const abilityDescriptionLineCount = Math.floor(abilityInfo.descriptionText.displayHeight / 14.83); - - // Animates the description text moving upwards - if (abilityDescriptionLineCount > 2) { - abilityInfo.descriptionText.setY(69); - this.descriptionScrollTween = this.scene.tweens.add({ - targets: abilityInfo.descriptionText, - delay: Utils.fixedInt(2000), - loop: -1, - hold: Utils.fixedInt(2000), - duration: Utils.fixedInt((abilityDescriptionLineCount - 2) * 2000), - y: `-=${14.83 * (abilityDescriptionLineCount - 2)}` - }); - } - }); - // Turn off visibility of passive info by default - this.passiveContainer?.labelImage.setVisible(false); - this.passiveContainer?.nameText.setVisible(false); - this.passiveContainer?.descriptionText.setVisible(false); - - let memoString = `${getBBCodeFrag(Utils.toReadableString(Nature[this.pokemon.getNature()]), TextStyle.SUMMARY_RED)}${getBBCodeFrag(' nature,', TextStyle.WINDOW_ALT)}\n${getBBCodeFrag(`${this.pokemon.metBiome === -1 ? 'apparently ' : ''}met at Lv`, TextStyle.WINDOW_ALT)}${getBBCodeFrag(this.pokemon.metLevel.toString(), TextStyle.SUMMARY_RED)}${getBBCodeFrag(',', TextStyle.WINDOW_ALT)}\n${getBBCodeFrag(getBiomeName(this.pokemon.metBiome), TextStyle.SUMMARY_RED)}${getBBCodeFrag('.', TextStyle.WINDOW_ALT)}`; + const memoString = `${getBBCodeFrag(Utils.toReadableString(Nature[this.pokemon.getNature()]), TextStyle.SUMMARY_RED)}${getBBCodeFrag(' nature,', TextStyle.WINDOW_ALT)}\n${getBBCodeFrag(`${this.pokemon.metBiome === -1 ? 'apparently ' : ''}met at Lv`, TextStyle.WINDOW_ALT)}${getBBCodeFrag(this.pokemon.metLevel.toString(), TextStyle.SUMMARY_RED)}${getBBCodeFrag(',', TextStyle.WINDOW_ALT)}\n${getBBCodeFrag(getBiomeName(this.pokemon.metBiome), TextStyle.SUMMARY_RED)}${getBBCodeFrag('.', TextStyle.WINDOW_ALT)}`; - const memoText = addBBCodeTextObject(this.scene, 7, 113, memoString, TextStyle.WINDOW_ALT); - memoText.setOrigin(0, 0); - profileContainer.add(memoText); - break; - case Page.STATS: - const statsContainer = this.scene.add.container(0, -pageBg.height); - pageContainer.add(statsContainer); + const memoText = addBBCodeTextObject(this.scene, 7, 113, memoString, TextStyle.WINDOW_ALT); + memoText.setOrigin(0, 0); + profileContainer.add(memoText); + break; + case Page.STATS: + const statsContainer = this.scene.add.container(0, -pageBg.height); + pageContainer.add(statsContainer); - const stats = Utils.getEnumValues(Stat) as Stat[]; + const stats = Utils.getEnumValues(Stat) as Stat[]; - stats.forEach((stat, s) => { - const statName = stat !== Stat.HP - ? getStatName(stat) - : 'HP'; - const rowIndex = s % 3; - const colIndex = Math.floor(s / 3); + stats.forEach((stat, s) => { + const statName = stat !== Stat.HP + ? getStatName(stat) + : 'HP'; + const rowIndex = s % 3; + const colIndex = Math.floor(s / 3); - const natureStatMultiplier = getNatureStatMultiplier(this.pokemon.getNature(), s); + const natureStatMultiplier = getNatureStatMultiplier(this.pokemon.getNature(), s); - const statLabel = addTextObject(this.scene, 27 + 115 * colIndex + (colIndex == 1 ? 5 : 0), 56 + 16 * rowIndex, statName, natureStatMultiplier === 1 ? TextStyle.SUMMARY : natureStatMultiplier > 1 ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE); - statLabel.setOrigin(0.5, 0); - statsContainer.add(statLabel); + const statLabel = addTextObject(this.scene, 27 + 115 * colIndex + (colIndex == 1 ? 5 : 0), 56 + 16 * rowIndex, statName, natureStatMultiplier === 1 ? TextStyle.SUMMARY : natureStatMultiplier > 1 ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY_BLUE); + statLabel.setOrigin(0.5, 0); + statsContainer.add(statLabel); - const statValueText = stat !== Stat.HP - ? Utils.formatStat(this.pokemon.stats[s]) - : `${Utils.formatStat(this.pokemon.hp, true)}/${Utils.formatStat(this.pokemon.getMaxHp(), true)}`; + const statValueText = stat !== Stat.HP + ? Utils.formatStat(this.pokemon.stats[s]) + : `${Utils.formatStat(this.pokemon.hp, true)}/${Utils.formatStat(this.pokemon.getMaxHp(), true)}`; - const statValue = addTextObject(this.scene, 120 + 88 * colIndex, 56 + 16 * rowIndex, statValueText, TextStyle.WINDOW_ALT); - statValue.setOrigin(1, 0); - statsContainer.add(statValue); - }); + const statValue = addTextObject(this.scene, 120 + 88 * colIndex, 56 + 16 * rowIndex, statValueText, TextStyle.WINDOW_ALT); + statValue.setOrigin(1, 0); + statsContainer.add(statValue); + }); - const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier + const itemModifiers = this.scene.findModifiers(m => m instanceof PokemonHeldItemModifier && (m as PokemonHeldItemModifier).pokemonId === this.pokemon.id, true) as PokemonHeldItemModifier[]; - itemModifiers.forEach((item, i) => { - const icon = item.getIcon(this.scene, true); + itemModifiers.forEach((item, i) => { + const icon = item.getIcon(this.scene, true); - icon.setPosition((i % 17) * 12 + 3, 14 * Math.floor(i / 17) + 15); - statsContainer.add(icon); + icon.setPosition((i % 17) * 12 + 3, 14 * Math.floor(i / 17) + 15); + statsContainer.add(icon); - icon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 32, 32), Phaser.Geom.Rectangle.Contains); - icon.on('pointerover', () => (this.scene as BattleScene).ui.showTooltip(item.type.name, item.type.getDescription(this.scene), true)); - icon.on('pointerout', () => (this.scene as BattleScene).ui.hideTooltip()); - }); + icon.setInteractive(new Phaser.Geom.Rectangle(0, 0, 32, 32), Phaser.Geom.Rectangle.Contains); + icon.on('pointerover', () => (this.scene as BattleScene).ui.showTooltip(item.type.name, item.type.getDescription(this.scene), true)); + icon.on('pointerout', () => (this.scene as BattleScene).ui.hideTooltip()); + }); - const relLvExp = getLevelRelExp(this.pokemon.level + 1, this.pokemon.species.growthRate); - const expRatio = this.pokemon.level < this.scene.getMaxExpLevel() ? this.pokemon.levelExp / relLvExp : 0; + const relLvExp = getLevelRelExp(this.pokemon.level + 1, this.pokemon.species.growthRate); + const expRatio = this.pokemon.level < this.scene.getMaxExpLevel() ? this.pokemon.levelExp / relLvExp : 0; - const expLabel = addTextObject(this.scene, 6, 112, 'EXP. Points', TextStyle.SUMMARY); - expLabel.setOrigin(0, 0); - statsContainer.add(expLabel); + const expLabel = addTextObject(this.scene, 6, 112, 'EXP. Points', TextStyle.SUMMARY); + expLabel.setOrigin(0, 0); + statsContainer.add(expLabel); - const nextLvExpLabel = addTextObject(this.scene, 6, 128, 'Next Lv.', TextStyle.SUMMARY); - nextLvExpLabel.setOrigin(0, 0); - statsContainer.add(nextLvExpLabel); + const nextLvExpLabel = addTextObject(this.scene, 6, 128, 'Next Lv.', TextStyle.SUMMARY); + nextLvExpLabel.setOrigin(0, 0); + statsContainer.add(nextLvExpLabel); - const expText = addTextObject(this.scene, 208, 112, this.pokemon.exp.toString(), TextStyle.WINDOW_ALT); - expText.setOrigin(1, 0); - statsContainer.add(expText); + const expText = addTextObject(this.scene, 208, 112, this.pokemon.exp.toString(), TextStyle.WINDOW_ALT); + expText.setOrigin(1, 0); + statsContainer.add(expText); - const nextLvExp = this.pokemon.level < this.scene.getMaxExpLevel() - ? getLevelTotalExp(this.pokemon.level + 1, this.pokemon.species.growthRate) - this.pokemon.exp - : 0; - const nextLvExpText = addTextObject(this.scene, 208, 128, nextLvExp.toString(), TextStyle.WINDOW_ALT); - nextLvExpText.setOrigin(1, 0); - statsContainer.add(nextLvExpText); + const nextLvExp = this.pokemon.level < this.scene.getMaxExpLevel() + ? getLevelTotalExp(this.pokemon.level + 1, this.pokemon.species.growthRate) - this.pokemon.exp + : 0; + const nextLvExpText = addTextObject(this.scene, 208, 128, nextLvExp.toString(), TextStyle.WINDOW_ALT); + nextLvExpText.setOrigin(1, 0); + statsContainer.add(nextLvExpText); - const expOverlay = this.scene.add.image(140, 145, 'summary_stats_overlay_exp'); - expOverlay.setOrigin(0, 0); - statsContainer.add(expOverlay); + const expOverlay = this.scene.add.image(140, 145, 'summary_stats_overlay_exp'); + expOverlay.setOrigin(0, 0); + statsContainer.add(expOverlay); - const expMaskRect = this.scene.make.graphics({}); - expMaskRect.setScale(6); - expMaskRect.fillStyle(0xFFFFFF); - expMaskRect.beginPath(); - expMaskRect.fillRect(140 + pageContainer.x, 145 + pageContainer.y + 21, Math.floor(expRatio * 64), 3); + const expMaskRect = this.scene.make.graphics({}); + expMaskRect.setScale(6); + expMaskRect.fillStyle(0xFFFFFF); + expMaskRect.beginPath(); + expMaskRect.fillRect(140 + pageContainer.x, 145 + pageContainer.y + 21, Math.floor(expRatio * 64), 3); - const expMask = expMaskRect.createGeometryMask(); + const expMask = expMaskRect.createGeometryMask(); - expOverlay.setMask(expMask); - break; - case Page.MOVES: - this.movesContainer = this.scene.add.container(5, -pageBg.height + 26); - pageContainer.add(this.movesContainer); + expOverlay.setMask(expMask); + break; + case Page.MOVES: + this.movesContainer = this.scene.add.container(5, -pageBg.height + 26); + pageContainer.add(this.movesContainer); - this.extraMoveRowContainer = this.scene.add.container(0, 64); - this.extraMoveRowContainer.setVisible(false); - this.movesContainer.add(this.extraMoveRowContainer); + this.extraMoveRowContainer = this.scene.add.container(0, 64); + this.extraMoveRowContainer.setVisible(false); + this.movesContainer.add(this.extraMoveRowContainer); - const extraRowOverlay = this.scene.add.image(-2, 1, 'summary_moves_overlay_row'); - extraRowOverlay.setOrigin(0, 1); - this.extraMoveRowContainer.add(extraRowOverlay); + const extraRowOverlay = this.scene.add.image(-2, 1, 'summary_moves_overlay_row'); + extraRowOverlay.setOrigin(0, 1); + this.extraMoveRowContainer.add(extraRowOverlay); - const extraRowText = addTextObject(this.scene, 35, 0, this.summaryUiMode === SummaryUiMode.LEARN_MOVE ? this.newMove.name : 'Cancel', - this.summaryUiMode === SummaryUiMode.LEARN_MOVE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY); - extraRowText.setOrigin(0, 1); - this.extraMoveRowContainer.add(extraRowText); + const extraRowText = addTextObject(this.scene, 35, 0, this.summaryUiMode === SummaryUiMode.LEARN_MOVE ? this.newMove.name : 'Cancel', + this.summaryUiMode === SummaryUiMode.LEARN_MOVE ? TextStyle.SUMMARY_PINK : TextStyle.SUMMARY); + extraRowText.setOrigin(0, 1); + this.extraMoveRowContainer.add(extraRowText); - if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE) { - this.extraMoveRowContainer.setVisible(true); - const newMoveTypeIcon = this.scene.add.sprite(0, 0, 'types', Type[this.newMove.type].toLowerCase()); - newMoveTypeIcon.setOrigin(0, 1); - this.extraMoveRowContainer.add(newMoveTypeIcon); + if (this.summaryUiMode === SummaryUiMode.LEARN_MOVE) { + this.extraMoveRowContainer.setVisible(true); + const newMoveTypeIcon = this.scene.add.sprite(0, 0, 'types', Type[this.newMove.type].toLowerCase()); + newMoveTypeIcon.setOrigin(0, 1); + this.extraMoveRowContainer.add(newMoveTypeIcon); - const ppOverlay = this.scene.add.image(163, -1, 'summary_moves_overlay_pp'); - ppOverlay.setOrigin(0, 1); - this.extraMoveRowContainer.add(ppOverlay); + const ppOverlay = this.scene.add.image(163, -1, 'summary_moves_overlay_pp'); + ppOverlay.setOrigin(0, 1); + this.extraMoveRowContainer.add(ppOverlay); - const pp = Utils.padInt(this.newMove.pp, 2, ' '); - const ppText = addTextObject(this.scene, 173, 1, `${pp}/${pp}`, TextStyle.WINDOW); - ppText.setOrigin(0, 1); - this.extraMoveRowContainer.add(ppText); + const pp = Utils.padInt(this.newMove.pp, 2, ' '); + const ppText = addTextObject(this.scene, 173, 1, `${pp}/${pp}`, TextStyle.WINDOW); + ppText.setOrigin(0, 1); + this.extraMoveRowContainer.add(ppText); + } + + this.moveRowsContainer = this.scene.add.container(0, 0); + this.movesContainer.add(this.moveRowsContainer); + + for (let m = 0; m < 4; m++) { + const move = m < this.pokemon.moveset.length ? this.pokemon.moveset[m] : null; + const moveRowContainer = this.scene.add.container(0, 16 * m); + this.moveRowsContainer.add(moveRowContainer); + + if (move) { + const typeIcon = this.scene.add.sprite(0, 0, 'types', Type[move.getMove().type].toLowerCase()); + typeIcon.setOrigin(0, 1); + moveRowContainer.add(typeIcon); } - this.moveRowsContainer = this.scene.add.container(0, 0); - this.movesContainer.add(this.moveRowsContainer); + const moveText = addTextObject(this.scene, 35, 0, move ? move.getName() : '-', TextStyle.SUMMARY); + moveText.setOrigin(0, 1); + moveRowContainer.add(moveText); - for (let m = 0; m < 4; m++) { - const move = m < this.pokemon.moveset.length ? this.pokemon.moveset[m] : null; - const moveRowContainer = this.scene.add.container(0, 16 * m); - this.moveRowsContainer.add(moveRowContainer); + const ppOverlay = this.scene.add.image(163, -1, 'summary_moves_overlay_pp'); + ppOverlay.setOrigin(0, 1); + moveRowContainer.add(ppOverlay); - if (move) { - const typeIcon = this.scene.add.sprite(0, 0, 'types', Type[move.getMove().type].toLowerCase()); - typeIcon.setOrigin(0, 1); - moveRowContainer.add(typeIcon); - } + const ppText = addTextObject(this.scene, 173, 1, '--/--', TextStyle.WINDOW); + ppText.setOrigin(0, 1); - const moveText = addTextObject(this.scene, 35, 0, move ? move.getName() : '-', TextStyle.SUMMARY); - moveText.setOrigin(0, 1); - moveRowContainer.add(moveText); - - const ppOverlay = this.scene.add.image(163, -1, 'summary_moves_overlay_pp'); - ppOverlay.setOrigin(0, 1); - moveRowContainer.add(ppOverlay); - - const ppText = addTextObject(this.scene, 173, 1, '--/--', TextStyle.WINDOW); - ppText.setOrigin(0, 1); - - if (move) { - const maxPP = move.getMovePp(); - const pp = maxPP - move.ppUsed; - ppText.setText(`${Utils.padInt(pp, 2, ' ')}/${Utils.padInt(maxPP, 2, ' ')}`); - } - - moveRowContainer.add(ppText); + if (move) { + const maxPP = move.getMovePp(); + const pp = maxPP - move.ppUsed; + ppText.setText(`${Utils.padInt(pp, 2, ' ')}/${Utils.padInt(maxPP, 2, ' ')}`); } - this.moveDescriptionText = addTextObject(this.scene, 2, 84, '', TextStyle.WINDOW_ALT, { wordWrap: { width: 1212 } }); - this.movesContainer.add(this.moveDescriptionText); + moveRowContainer.add(ppText); + } - const moveDescriptionTextMaskRect = this.scene.make.graphics({}); - moveDescriptionTextMaskRect.setScale(6); - moveDescriptionTextMaskRect.fillStyle(0xFFFFFF); - moveDescriptionTextMaskRect.beginPath(); - moveDescriptionTextMaskRect.fillRect(112, 130, 202, 46); + this.moveDescriptionText = addTextObject(this.scene, 2, 84, '', TextStyle.WINDOW_ALT, { wordWrap: { width: 1212 } }); + this.movesContainer.add(this.moveDescriptionText); - const moveDescriptionTextMask = moveDescriptionTextMaskRect.createGeometryMask(); + const moveDescriptionTextMaskRect = this.scene.make.graphics({}); + moveDescriptionTextMaskRect.setScale(6); + moveDescriptionTextMaskRect.fillStyle(0xFFFFFF); + moveDescriptionTextMaskRect.beginPath(); + moveDescriptionTextMaskRect.fillRect(112, 130, 202, 46); - this.moveDescriptionText.setMask(moveDescriptionTextMask); - break; + const moveDescriptionTextMask = moveDescriptionTextMaskRect.createGeometryMask(); + + this.moveDescriptionText.setMask(moveDescriptionTextMask); + break; } } diff --git a/src/ui/target-select-ui-handler.ts b/src/ui/target-select-ui-handler.ts index 36588dc4784..cdb1eea8e68 100644 --- a/src/ui/target-select-ui-handler.ts +++ b/src/ui/target-select-ui-handler.ts @@ -1,11 +1,11 @@ -import { BattlerIndex } from "../battle"; -import BattleScene from "../battle-scene"; -import { Moves } from "../data/enums/moves"; -import { Mode } from "./ui"; -import UiHandler from "./ui-handler"; -import * as Utils from "../utils"; -import { getMoveTargets } from "../data/move"; -import {Button} from "../enums/buttons"; +import { BattlerIndex } from '../battle'; +import BattleScene from '../battle-scene'; +import { Moves } from '../data/enums/moves'; +import { Mode } from './ui'; +import UiHandler from './ui-handler'; +import * as Utils from '../utils'; +import { getMoveTargets } from '../data/move'; +import {Button} from '../enums/buttons'; export type TargetSelectCallback = (cursor: integer) => void; @@ -55,22 +55,22 @@ export default class TargetSelectUiHandler extends UiHandler { success = true; } else { switch (button) { - case Button.UP: - if (this.cursor < BattlerIndex.ENEMY && this.targets.findIndex(t => t >= BattlerIndex.ENEMY) > -1) - success = this.setCursor(this.targets.find(t => t >= BattlerIndex.ENEMY)); - break; - case Button.DOWN: - if (this.cursor >= BattlerIndex.ENEMY && this.targets.findIndex(t => t < BattlerIndex.ENEMY) > -1) - success = this.setCursor(this.targets.find(t => t < BattlerIndex.ENEMY)); - break; - case Button.LEFT: - if (this.cursor % 2 && this.targets.findIndex(t => t === this.cursor - 1) > -1) - success = this.setCursor(this.cursor - 1); - break; - case Button.RIGHT: - if (!(this.cursor % 2) && this.targets.findIndex(t => t === this.cursor + 1) > -1) - success = this.setCursor(this.cursor + 1); - break; + case Button.UP: + if (this.cursor < BattlerIndex.ENEMY && this.targets.findIndex(t => t >= BattlerIndex.ENEMY) > -1) + success = this.setCursor(this.targets.find(t => t >= BattlerIndex.ENEMY)); + break; + case Button.DOWN: + if (this.cursor >= BattlerIndex.ENEMY && this.targets.findIndex(t => t < BattlerIndex.ENEMY) > -1) + success = this.setCursor(this.targets.find(t => t < BattlerIndex.ENEMY)); + break; + case Button.LEFT: + if (this.cursor % 2 && this.targets.findIndex(t => t === this.cursor - 1) > -1) + success = this.setCursor(this.cursor - 1); + break; + case Button.RIGHT: + if (!(this.cursor % 2) && this.targets.findIndex(t => t === this.cursor + 1) > -1) + success = this.setCursor(this.cursor + 1); + break; } } @@ -124,4 +124,4 @@ export default class TargetSelectUiHandler extends UiHandler { super.clear(); this.eraseCursor(); } -} \ No newline at end of file +} diff --git a/src/ui/text.ts b/src/ui/text.ts index 31c76c72956..133e2f16cea 100644 --- a/src/ui/text.ts +++ b/src/ui/text.ts @@ -1,10 +1,10 @@ -import BBCodeText from "phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText"; -import InputText from "phaser3-rex-plugins/plugins/inputtext"; -import { ModifierTier } from "../modifier/modifier-tier"; -import { EggTier } from "../data/enums/egg-type"; -import BattleScene from "../battle-scene"; -import { UiTheme } from "../enums/ui-theme"; -import i18next from "i18next"; +import BBCodeText from 'phaser3-rex-plugins/plugins/gameobjects/tagtext/bbcodetext/BBCodeText'; +import InputText from 'phaser3-rex-plugins/plugins/inputtext'; +import { ModifierTier } from '../modifier/modifier-tier'; +import { EggTier } from '../data/enums/egg-type'; +import BattleScene from '../battle-scene'; +import { UiTheme } from '../enums/ui-theme'; +import i18next from 'i18next'; export enum TextStyle { MESSAGE, @@ -27,7 +27,7 @@ export enum TextStyle { TOOLTIP_TITLE, TOOLTIP_CONTENT, MOVE_INFO_CONTENT -}; +} interface LanguageSetting { summaryFontSize?: string, @@ -39,14 +39,14 @@ interface LanguageSetting { } const languageSettings: { [key: string]: LanguageSetting } = { - "en":{}, - "de":{}, - "es":{}, - "it":{}, - "fr":{}, - "zh_CN":{}, - "pt_BR":{}, -} + 'en':{}, + 'de':{}, + 'es':{}, + 'it':{}, + 'fr':{}, + 'zh_CN':{}, + 'pt_BR':{}, +}; export function addTextObject(scene: Phaser.Scene, x: number, y: number, content: string, style: TextStyle, extraStyleOptions?: Phaser.Types.GameObjects.Text.TextStyle): Phaser.GameObjects.Text { const [ styleOptions, shadowColor, shadowXpos, shadowYpos ] = getTextStyleOptions(style, (scene as BattleScene).uiTheme, extraStyleOptions); @@ -99,43 +99,43 @@ function getTextStyleOptions(style: TextStyle, uiTheme: UiTheme, extraStyleOptio }; switch (style) { - case TextStyle.SUMMARY: - case TextStyle.SUMMARY_ALT: - case TextStyle.SUMMARY_BLUE: - case TextStyle.SUMMARY_RED: - case TextStyle.SUMMARY_PINK: - case TextStyle.SUMMARY_GOLD: - case TextStyle.SUMMARY_GRAY: - case TextStyle.SUMMARY_GREEN: - case TextStyle.WINDOW: - case TextStyle.WINDOW_ALT: - case TextStyle.MESSAGE: - case TextStyle.SETTINGS_LABEL: - case TextStyle.SETTINGS_SELECTED: - styleOptions.fontSize = languageSettings[lang]?.summaryFontSize || '96px'; - break; - case TextStyle.BATTLE_INFO: - case TextStyle.MONEY: - case TextStyle.TOOLTIP_TITLE: - styleOptions.fontSize = languageSettings[lang]?.battleInfoFontSize || '72px'; - shadowXpos = 3.5; - shadowYpos = 3.5; - break; - case TextStyle.PARTY: - case TextStyle.PARTY_RED: - styleOptions.fontSize = languageSettings[lang]?.partyFontSize || '66px'; - styleOptions.fontFamily = 'pkmnems'; - break; - case TextStyle.TOOLTIP_CONTENT: - styleOptions.fontSize = languageSettings[lang]?.tooltipContentFontSize || '64px'; - shadowXpos = 3; - shadowYpos = 3; - break; - case TextStyle.MOVE_INFO_CONTENT: - styleOptions.fontSize = languageSettings[lang]?.moveInfoFontSize || '56px'; - shadowXpos = 3; - shadowYpos = 3; - break; + case TextStyle.SUMMARY: + case TextStyle.SUMMARY_ALT: + case TextStyle.SUMMARY_BLUE: + case TextStyle.SUMMARY_RED: + case TextStyle.SUMMARY_PINK: + case TextStyle.SUMMARY_GOLD: + case TextStyle.SUMMARY_GRAY: + case TextStyle.SUMMARY_GREEN: + case TextStyle.WINDOW: + case TextStyle.WINDOW_ALT: + case TextStyle.MESSAGE: + case TextStyle.SETTINGS_LABEL: + case TextStyle.SETTINGS_SELECTED: + styleOptions.fontSize = languageSettings[lang]?.summaryFontSize || '96px'; + break; + case TextStyle.BATTLE_INFO: + case TextStyle.MONEY: + case TextStyle.TOOLTIP_TITLE: + styleOptions.fontSize = languageSettings[lang]?.battleInfoFontSize || '72px'; + shadowXpos = 3.5; + shadowYpos = 3.5; + break; + case TextStyle.PARTY: + case TextStyle.PARTY_RED: + styleOptions.fontSize = languageSettings[lang]?.partyFontSize || '66px'; + styleOptions.fontFamily = 'pkmnems'; + break; + case TextStyle.TOOLTIP_CONTENT: + styleOptions.fontSize = languageSettings[lang]?.tooltipContentFontSize || '64px'; + shadowXpos = 3; + shadowYpos = 3; + break; + case TextStyle.MOVE_INFO_CONTENT: + styleOptions.fontSize = languageSettings[lang]?.moveInfoFontSize || '56px'; + shadowXpos = 3; + shadowYpos = 3; + break; } shadowColor = getTextColor(style, true, uiTheme); @@ -157,77 +157,77 @@ export function getBBCodeFrag(content: string, textStyle: TextStyle, uiTheme: Ui export function getTextColor(textStyle: TextStyle, shadow?: boolean, uiTheme: UiTheme = UiTheme.DEFAULT): string { switch (textStyle) { - case TextStyle.MESSAGE: - return !shadow ? '#f8f8f8' : '#6b5a73'; - case TextStyle.WINDOW: - case TextStyle.MOVE_INFO_CONTENT: - case TextStyle.TOOLTIP_CONTENT: - if (uiTheme) - return !shadow ? '#484848' : '#d0d0c8'; - return !shadow ? '#f8f8f8' : '#6b5a73'; - case TextStyle.WINDOW_ALT: + case TextStyle.MESSAGE: + return !shadow ? '#f8f8f8' : '#6b5a73'; + case TextStyle.WINDOW: + case TextStyle.MOVE_INFO_CONTENT: + case TextStyle.TOOLTIP_CONTENT: + if (uiTheme) return !shadow ? '#484848' : '#d0d0c8'; - case TextStyle.BATTLE_INFO: - if (uiTheme) - return !shadow ? '#404040' : '#ded6b5'; - return !shadow ? '#f8f8f8' : '#6b5a73'; - case TextStyle.PARTY: - return !shadow ? '#f8f8f8' : '#707070'; - case TextStyle.PARTY_RED: - return !shadow ? '#f89890' : '#984038'; - case TextStyle.SUMMARY: + return !shadow ? '#f8f8f8' : '#6b5a73'; + case TextStyle.WINDOW_ALT: + return !shadow ? '#484848' : '#d0d0c8'; + case TextStyle.BATTLE_INFO: + if (uiTheme) + return !shadow ? '#404040' : '#ded6b5'; + return !shadow ? '#f8f8f8' : '#6b5a73'; + case TextStyle.PARTY: + return !shadow ? '#f8f8f8' : '#707070'; + case TextStyle.PARTY_RED: + return !shadow ? '#f89890' : '#984038'; + case TextStyle.SUMMARY: + return !shadow ? '#ffffff' : '#636363'; + case TextStyle.SUMMARY_ALT: + if (uiTheme) return !shadow ? '#ffffff' : '#636363'; - case TextStyle.SUMMARY_ALT: - if (uiTheme) - return !shadow ? '#ffffff' : '#636363'; - return !shadow ? '#484848' : '#d0d0c8'; - case TextStyle.SUMMARY_RED: - case TextStyle.TOOLTIP_TITLE: - return !shadow ? '#e70808' : '#ffbd73'; - case TextStyle.SUMMARY_BLUE: - return !shadow ? '#40c8f8' : '#006090'; - case TextStyle.SUMMARY_PINK: - return !shadow ? '#f89890' : '#984038'; - case TextStyle.SUMMARY_GOLD: - case TextStyle.MONEY: - return !shadow ? '#e8e8a8' : '#a0a060'; - case TextStyle.SUMMARY_GRAY: - return !shadow ? '#a0a0a0' : '#636363'; - case TextStyle.SUMMARY_GREEN: - return !shadow ? '#78c850' : '#306850'; - case TextStyle.SETTINGS_LABEL: - return !shadow ? '#f8b050' : '#c07800'; - case TextStyle.SETTINGS_SELECTED: - return !shadow ? '#f88880' : '#f83018'; + return !shadow ? '#484848' : '#d0d0c8'; + case TextStyle.SUMMARY_RED: + case TextStyle.TOOLTIP_TITLE: + return !shadow ? '#e70808' : '#ffbd73'; + case TextStyle.SUMMARY_BLUE: + return !shadow ? '#40c8f8' : '#006090'; + case TextStyle.SUMMARY_PINK: + return !shadow ? '#f89890' : '#984038'; + case TextStyle.SUMMARY_GOLD: + case TextStyle.MONEY: + return !shadow ? '#e8e8a8' : '#a0a060'; + case TextStyle.SUMMARY_GRAY: + return !shadow ? '#a0a0a0' : '#636363'; + case TextStyle.SUMMARY_GREEN: + return !shadow ? '#78c850' : '#306850'; + case TextStyle.SETTINGS_LABEL: + return !shadow ? '#f8b050' : '#c07800'; + case TextStyle.SETTINGS_SELECTED: + return !shadow ? '#f88880' : '#f83018'; } } export function getModifierTierTextTint(tier: ModifierTier): integer { switch (tier) { - case ModifierTier.COMMON: - return 0xffffff; - case ModifierTier.GREAT: - return 0x3890f8; - case ModifierTier.ULTRA: - return 0xf8d038; - case ModifierTier.ROGUE: - return 0xd52929; - case ModifierTier.MASTER: - return 0xe020c0; - case ModifierTier.LUXURY: - return 0xe64a18; + case ModifierTier.COMMON: + return 0xffffff; + case ModifierTier.GREAT: + return 0x3890f8; + case ModifierTier.ULTRA: + return 0xf8d038; + case ModifierTier.ROGUE: + return 0xd52929; + case ModifierTier.MASTER: + return 0xe020c0; + case ModifierTier.LUXURY: + return 0xe64a18; } } export function getEggTierTextTint(tier: EggTier): integer { switch (tier) { - case EggTier.COMMON: - return getModifierTierTextTint(ModifierTier.COMMON); - case EggTier.GREAT: - return getModifierTierTextTint(ModifierTier.GREAT); - case EggTier.ULTRA: - return getModifierTierTextTint(ModifierTier.ULTRA); - case EggTier.MASTER: - return getModifierTierTextTint(ModifierTier.MASTER); + case EggTier.COMMON: + return getModifierTierTextTint(ModifierTier.COMMON); + case EggTier.GREAT: + return getModifierTierTextTint(ModifierTier.GREAT); + case EggTier.ULTRA: + return getModifierTierTextTint(ModifierTier.ULTRA); + case EggTier.MASTER: + return getModifierTierTextTint(ModifierTier.MASTER); } -} \ No newline at end of file +} diff --git a/src/ui/title-ui-handler.ts b/src/ui/title-ui-handler.ts index 4da4f189f6b..70444563ae2 100644 --- a/src/ui/title-ui-handler.ts +++ b/src/ui/title-ui-handler.ts @@ -1,11 +1,11 @@ -import BattleScene from "../battle-scene"; -import { DailyRunScoreboard } from "./daily-run-scoreboard"; -import OptionSelectUiHandler from "./option-select-ui-handler"; -import { Mode } from "./ui"; -import * as Utils from "../utils"; -import { TextStyle, addTextObject } from "./text"; -import { getBattleCountSplashMessage, getSplashMessages } from "../data/splash-messages"; -import i18next from "i18next"; +import BattleScene from '../battle-scene'; +import { DailyRunScoreboard } from './daily-run-scoreboard'; +import OptionSelectUiHandler from './option-select-ui-handler'; +import { Mode } from './ui'; +import * as Utils from '../utils'; +import { TextStyle, addTextObject } from './text'; +import { getBattleCountSplashMessage, getSplashMessages } from '../data/splash-messages'; +import i18next from 'i18next'; export default class TitleUiHandler extends OptionSelectUiHandler { private titleContainer: Phaser.GameObjects.Container; @@ -34,17 +34,17 @@ export default class TitleUiHandler extends OptionSelectUiHandler { this.titleContainer.add(logo); this.dailyRunScoreboard = new DailyRunScoreboard(this.scene, 1, 44); - this.dailyRunScoreboard.setup(); + this.dailyRunScoreboard.setup(); this.titleContainer.add(this.dailyRunScoreboard); - this.playerCountLabel = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - 90, `? ${i18next.t("menu:playersOnline")}`, TextStyle.MESSAGE, { fontSize: '54px' }); + this.playerCountLabel = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 2, (this.scene.game.canvas.height / 6) - 90, `? ${i18next.t('menu:playersOnline')}`, TextStyle.MESSAGE, { fontSize: '54px' }); this.playerCountLabel.setOrigin(1, 0); this.titleContainer.add(this.playerCountLabel); this.splashMessageText = addTextObject(this.scene, logo.x + 64, logo.y + logo.displayHeight - 8, '', TextStyle.MONEY, { fontSize: '54px' }); this.splashMessageText.setOrigin(0.5, 0.5); - this.splashMessageText.setAngle(-20) + this.splashMessageText.setAngle(-20); this.titleContainer.add(this.splashMessageText); const originalSplashMessageScale = this.splashMessageText.scale; @@ -55,19 +55,19 @@ export default class TitleUiHandler extends OptionSelectUiHandler { scale: originalSplashMessageScale * 1.25, loop: -1, yoyo: true, - }) + }); } updateTitleStats(): void { - Utils.apiFetch(`game/titlestats`) + Utils.apiFetch('game/titlestats') .then(request => request.json()) .then(stats => { - this.playerCountLabel.setText(`${stats.playerCount} ${i18next.t("menu:playersOnline")}`); + this.playerCountLabel.setText(`${stats.playerCount} ${i18next.t('menu:playersOnline')}`); if (this.splashMessage === getBattleCountSplashMessage()) this.splashMessageText.setText(getBattleCountSplashMessage().replace('{COUNT}', stats.battleCount.toLocaleString('en-US'))); }) .catch(err => { - console.error("Failed to fetch title stats:\n", err); + console.error('Failed to fetch title stats:\n', err); }); } @@ -112,4 +112,4 @@ export default class TitleUiHandler extends OptionSelectUiHandler { ease: 'Sine.easeInOut' }); } -} \ No newline at end of file +} diff --git a/src/ui/ui-handler.ts b/src/ui/ui-handler.ts index 7fdb85d94c0..b06d27c4721 100644 --- a/src/ui/ui-handler.ts +++ b/src/ui/ui-handler.ts @@ -1,7 +1,7 @@ -import BattleScene from "../battle-scene"; -import { TextStyle, getTextColor } from "./text"; -import UI, { Mode } from "./ui"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { TextStyle, getTextColor } from './text'; +import UI, { Mode } from './ui'; +import {Button} from '../enums/buttons'; export default abstract class UiHandler { protected scene: BattleScene; @@ -47,4 +47,4 @@ export default abstract class UiHandler { clear() { this.active = false; } -} \ No newline at end of file +} diff --git a/src/ui/ui-theme.ts b/src/ui/ui-theme.ts index a08acc04aff..7a7dd62542c 100644 --- a/src/ui/ui-theme.ts +++ b/src/ui/ui-theme.ts @@ -1,6 +1,6 @@ -import { UiTheme } from "#app/enums/ui-theme"; -import { legacyCompatibleImages } from "#app/scene-base"; -import BattleScene from "../battle-scene"; +import { UiTheme } from '#app/enums/ui-theme'; +import { legacyCompatibleImages } from '#app/scene-base'; +import BattleScene from '../battle-scene'; export enum WindowVariant { NORMAL, @@ -10,12 +10,12 @@ export enum WindowVariant { export function getWindowVariantSuffix(windowVariant: WindowVariant): string { switch (windowVariant) { - case WindowVariant.THIN: - return '_thin'; - case WindowVariant.XTHIN: - return '_xthin'; - default: - return ''; + case WindowVariant.THIN: + return '_thin'; + case WindowVariant.XTHIN: + return '_xthin'; + default: + return ''; } } @@ -63,10 +63,10 @@ export function updateWindowType(scene: BattleScene, windowTypeIndex: integer): const traverse = (object: any) => { if (object.hasOwnProperty('children') && object.children instanceof Phaser.GameObjects.DisplayList) { const children = object.children as Phaser.GameObjects.DisplayList; - for (let child of children.getAll()) + for (const child of children.getAll()) traverse(child); } else if (object instanceof Phaser.GameObjects.Container) { - for (let child of object.getAll()) + for (const child of object.getAll()) traverse(child); } else if (object instanceof Phaser.GameObjects.NineSlice) { if (object.texture.key.startsWith('window_')) @@ -77,7 +77,7 @@ export function updateWindowType(scene: BattleScene, windowTypeIndex: integer): if (object.texture?.key === 'bg') themedObjects.push(object); } - } + }; traverse(scene); @@ -88,10 +88,10 @@ export function updateWindowType(scene: BattleScene, windowTypeIndex: integer): const windowKey = `window_${windowTypeIndex}`; - for (let [ window, variant ] of windowObjects) + for (const [ window, variant ] of windowObjects) window.setTexture(`${windowKey}${getWindowVariantSuffix(variant)}`); - for (let obj of themedObjects) + for (const obj of themedObjects) obj.setFrame(windowTypeIndex); } @@ -149,4 +149,4 @@ export function addUiThemeOverrides(scene: BattleScene): void { } return ret; }; -} \ No newline at end of file +} diff --git a/src/ui/ui.ts b/src/ui/ui.ts index 09deb2bdd7a..0e22fdbb501 100644 --- a/src/ui/ui.ts +++ b/src/ui/ui.ts @@ -26,7 +26,7 @@ import { addWindow } from './ui-theme'; import LoginFormUiHandler from './login-form-ui-handler'; import RegistrationFormUiHandler from './registration-form-ui-handler'; import LoadingModalUiHandler from './loading-modal-ui-handler'; -import * as Utils from "../utils"; +import * as Utils from '../utils'; import GameStatsUiHandler from './game-stats-ui-handler'; import AwaitableUiHandler from './awaitable-ui-handler'; import SaveSlotSelectUiHandler from './save-slot-select-ui-handler'; @@ -35,7 +35,7 @@ import SavingIconHandler from './saving-icon-handler'; import UnavailableModalUiHandler from './unavailable-modal-ui-handler'; import OutdatedModalUiHandler from './outdated-modal-ui-handler'; import SessionReloadModalUiHandler from './session-reload-modal-ui-handler'; -import {Button} from "../enums/buttons"; +import {Button} from '../enums/buttons'; export enum Mode { MESSAGE, @@ -67,7 +67,7 @@ export enum Mode { SESSION_RELOAD, UNAVAILABLE, OUTDATED -}; +} const transitionModes = [ Mode.SAVE_SLOT, @@ -152,7 +152,7 @@ export default class UI extends Phaser.GameObjects.Container { } setup(): void { - for (let handler of this.handlers) + for (const handler of this.handlers) handler.setup(); this.overlay = this.scene.add.rectangle(0, 0, this.scene.game.canvas.width / 6, this.scene.game.canvas.height / 6, 0); this.overlay.setOrigin(0, 0); @@ -182,7 +182,7 @@ export default class UI extends Phaser.GameObjects.Container { this.tooltipTitle.setOrigin(0.5, 0); this.tooltipContent = addTextObject(this.scene, 6, 16, '', TextStyle.TOOLTIP_CONTENT); - this.tooltipContent.setWordWrapWidth(696) + this.tooltipContent.setWordWrapWidth(696); this.tooltipContainer.add(this.tooltipBg); this.tooltipContainer.add(this.tooltipTitle); @@ -256,9 +256,9 @@ export default class UI extends Phaser.GameObjects.Container { this.tooltipBg.width = Math.min(Math.max(this.tooltipTitle.displayWidth, this.tooltipContent.displayWidth) + 12, 684); this.tooltipBg.height = (title ? 31 : 19) + 10.5 * (wrappedContent.split('\n').length - 1); if (overlap) - (this.scene as BattleScene).uiContainer.moveAbove(this.tooltipContainer, this); + (this.scene as BattleScene).uiContainer.moveAbove(this.tooltipContainer, this); else - (this.scene as BattleScene).uiContainer.moveBelow(this.tooltipContainer, this); + (this.scene as BattleScene).uiContainer.moveBelow(this.tooltipContainer, this); } hideTooltip(): void { @@ -360,7 +360,7 @@ export default class UI extends Phaser.GameObjects.Container { doSetMode(); this.fadeIn(250); }); - }) + }); } else doSetMode(); }); @@ -421,4 +421,4 @@ export default class UI extends Phaser.GameObjects.Container { this.revertMode().then(success => Utils.executeIf(success, this.revertModes).then(() => resolve())); }); } -} \ No newline at end of file +} diff --git a/src/ui/unavailable-modal-ui-handler.ts b/src/ui/unavailable-modal-ui-handler.ts index 4481746c723..279b0947a8e 100644 --- a/src/ui/unavailable-modal-ui-handler.ts +++ b/src/ui/unavailable-modal-ui-handler.ts @@ -1,8 +1,8 @@ -import BattleScene from "../battle-scene"; -import { ModalConfig, ModalUiHandler } from "./modal-ui-handler"; -import { addTextObject, TextStyle } from "./text"; -import { Mode } from "./ui"; -import { updateUserInfo } from "#app/account"; +import BattleScene from '../battle-scene'; +import { ModalConfig, ModalUiHandler } from './modal-ui-handler'; +import { addTextObject, TextStyle } from './text'; +import { Mode } from './ui'; +import { updateUserInfo } from '#app/account'; export default class UnavailableModalUiHandler extends ModalUiHandler { private reconnectTimer: number; @@ -57,7 +57,7 @@ export default class UnavailableModalUiHandler extends ModalUiHandler { this.scene.playSound('pb_bounce_1'); this.reconnectCallback(); } - }) + }); }, 5000); return super.show([ config ]); @@ -65,4 +65,4 @@ export default class UnavailableModalUiHandler extends ModalUiHandler { return false; } -} \ No newline at end of file +} diff --git a/src/ui/vouchers-ui-handler.ts b/src/ui/vouchers-ui-handler.ts index 55f3ac224aa..363edb858f3 100644 --- a/src/ui/vouchers-ui-handler.ts +++ b/src/ui/vouchers-ui-handler.ts @@ -1,10 +1,10 @@ -import BattleScene from "../battle-scene"; -import { Voucher, getVoucherTypeIcon, getVoucherTypeName, vouchers } from "../system/voucher"; -import MessageUiHandler from "./message-ui-handler"; -import { TextStyle, addTextObject } from "./text"; -import { Mode } from "./ui"; -import { addWindow } from "./ui-theme"; -import {Button} from "../enums/buttons"; +import BattleScene from '../battle-scene'; +import { Voucher, getVoucherTypeIcon, getVoucherTypeName, vouchers } from '../system/voucher'; +import MessageUiHandler from './message-ui-handler'; +import { TextStyle, addTextObject } from './text'; +import { Mode } from './ui'; +import { addWindow } from './ui-theme'; +import {Button} from '../enums/buttons'; import i18next from '../plugins/i18n'; const itemRows = 4; @@ -41,7 +41,7 @@ export default class VouchersUiHandler extends MessageUiHandler { const headerBg = addWindow(this.scene, 0, 0, (this.scene.game.canvas.width / 6) - 2, 24); headerBg.setOrigin(0, 0); - const headerText = addTextObject(this.scene, 0, 0, i18next.t("voucher:vouchers"), TextStyle.SETTINGS_LABEL); + const headerText = addTextObject(this.scene, 0, 0, i18next.t('voucher:vouchers'), TextStyle.SETTINGS_LABEL); headerText.setOrigin(0, 0); headerText.setPositionRelative(headerBg, 8, 4); @@ -128,7 +128,7 @@ export default class VouchersUiHandler extends MessageUiHandler { this.titleText.setText(getVoucherTypeName(voucher.voucherType)); this.showText(voucher.description); - this.unlockText.setText(unlocked ? new Date(voucherUnlocks[voucher.id]).toLocaleDateString() : i18next.t("voucher:locked")); + this.unlockText.setText(unlocked ? new Date(voucherUnlocks[voucher.id]).toLocaleDateString() : i18next.t('voucher:locked')); } processInput(button: Button): boolean { @@ -143,33 +143,33 @@ export default class VouchersUiHandler extends MessageUiHandler { const rowIndex = Math.floor(this.cursor / itemCols); const itemOffset = (this.scrollCursor * itemCols); switch (button) { - case Button.UP: - if (this.cursor < itemCols) { - if (this.scrollCursor) - success = this.setScrollCursor(this.scrollCursor - 1); - } else - success = this.setCursor(this.cursor - itemCols); - break; - case Button.DOWN: - const canMoveDown = (this.cursor + itemOffset) + itemCols < this.itemsTotal; - if (rowIndex >= itemRows - 1) { - if (this.scrollCursor < Math.ceil(this.itemsTotal / itemCols) - itemRows && canMoveDown) - success = this.setScrollCursor(this.scrollCursor + 1); - } else if (canMoveDown) - success = this.setCursor(this.cursor + itemCols); - break; - case Button.LEFT: - if (!this.cursor && this.scrollCursor) - success = this.setScrollCursor(this.scrollCursor - 1) && this.setCursor(this.cursor + (itemCols - 1)); - else if (this.cursor) - success = this.setCursor(this.cursor - 1); - break; - case Button.RIGHT: - if (this.cursor + 1 === itemRows * itemCols && this.scrollCursor < Math.ceil(this.itemsTotal / itemCols) - itemRows) { - success = this.setScrollCursor(this.scrollCursor + 1) && this.setCursor(this.cursor - (itemCols - 1)); - } else if (this.cursor + itemOffset < Object.keys(vouchers).length - 1) - success = this.setCursor(this.cursor + 1); - break; + case Button.UP: + if (this.cursor < itemCols) { + if (this.scrollCursor) + success = this.setScrollCursor(this.scrollCursor - 1); + } else + success = this.setCursor(this.cursor - itemCols); + break; + case Button.DOWN: + const canMoveDown = (this.cursor + itemOffset) + itemCols < this.itemsTotal; + if (rowIndex >= itemRows - 1) { + if (this.scrollCursor < Math.ceil(this.itemsTotal / itemCols) - itemRows && canMoveDown) + success = this.setScrollCursor(this.scrollCursor + 1); + } else if (canMoveDown) + success = this.setCursor(this.cursor + itemCols); + break; + case Button.LEFT: + if (!this.cursor && this.scrollCursor) + success = this.setScrollCursor(this.scrollCursor - 1) && this.setCursor(this.cursor + (itemCols - 1)); + else if (this.cursor) + success = this.setCursor(this.cursor - 1); + break; + case Button.RIGHT: + if (this.cursor + 1 === itemRows * itemCols && this.scrollCursor < Math.ceil(this.itemsTotal / itemCols) - itemRows) { + success = this.setScrollCursor(this.scrollCursor + 1) && this.setCursor(this.cursor - (itemCols - 1)); + } else if (this.cursor + itemOffset < Object.keys(vouchers).length - 1) + success = this.setCursor(this.cursor + 1); + break; } } @@ -180,7 +180,7 @@ export default class VouchersUiHandler extends MessageUiHandler { } setCursor(cursor: integer): boolean { - let ret = super.setCursor(cursor); + const ret = super.setCursor(cursor); let updateVoucher = ret; diff --git a/src/utils.test.ts b/src/utils.test.ts index 22ccbfc6320..0180c746840 100644 --- a/src/utils.test.ts +++ b/src/utils.test.ts @@ -1,16 +1,16 @@ -import { expect, describe, it } from "vitest"; -import { randomString, padInt } from "./utils"; +import { expect, describe, it } from 'vitest'; +import { randomString, padInt } from './utils'; -import Phaser from "phaser"; +import Phaser from 'phaser'; -describe("utils", () => { - describe("randomString", () => { - it("should return a string of the specified length", () => { +describe('utils', () => { + describe('randomString', () => { + it('should return a string of the specified length', () => { const str = randomString(10); expect(str.length).toBe(10); }); - it("should work with seed", () => { + it('should work with seed', () => { const state = Phaser.Math.RND.state(); const str1 = randomString(10, true); Phaser.Math.RND.state(state); @@ -20,25 +20,25 @@ describe("utils", () => { }); }); - describe("padInt", () => { - it("should return a string", () => { + describe('padInt', () => { + it('should return a string', () => { const result = padInt(1, 10); expect(typeof result).toBe('string'); }); - it("should return a padded result with default padWith", () => { + it('should return a padded result with default padWith', () => { const result = padInt(1, 3); expect(result).toBe('001'); }); - it("should return a padded result using a custom padWith", () => { - const result = padInt(1, 10, 'yes') + it('should return a padded result using a custom padWith', () => { + const result = padInt(1, 10, 'yes'); expect(result).toBe('yesyesyes1'); }); - it("should return inputted value when zero length is entered", () => { + it('should return inputted value when zero length is entered', () => { const result = padInt(1, 0); - expect(result).toBe('1') - }) + expect(result).toBe('1'); + }); }); }); diff --git a/src/utils.ts b/src/utils.ts index 142de91c1ca..71c8da99e6c 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -23,9 +23,9 @@ export function shiftCharCodes(str: string, shiftCount: integer) { let newStr = ''; for (let i = 0; i < str.length; i++) { - let charCode = str.charCodeAt(i); - let newCharCode = charCode + shiftCount; - newStr += String.fromCharCode(newCharCode); + const charCode = str.charCodeAt(i); + const newCharCode = charCode + shiftCount; + newStr += String.fromCharCode(newCharCode); } return newStr; @@ -137,8 +137,8 @@ export function getPlayTimeString(totalSeconds: integer): string { } export function binToDec(input: string): integer { - let place: integer[] = []; - let binary: string[] = []; + const place: integer[] = []; + const binary: string[] = []; let decimalNum = 0; @@ -176,25 +176,25 @@ export function getIvsFromId(id: integer): integer[] { export function formatLargeNumber(count: integer, threshold: integer): string { if (count < threshold) return count.toString(); - let ret = count.toString(); + const ret = count.toString(); let suffix = ''; switch (Math.ceil(ret.length / 3) - 1) { - case 1: - suffix = 'K'; - break; - case 2: - suffix = 'M'; - break; - case 3: - suffix = 'B'; - break; - default: - return '?'; + case 1: + suffix = 'K'; + break; + case 2: + suffix = 'M'; + break; + case 3: + suffix = 'B'; + break; + default: + return '?'; } const digits = ((ret.length + 2) % 3) + 1; let decimalNumber = ret.slice(digits, digits + 2); while (decimalNumber.endsWith('0')) - decimalNumber = decimalNumber.slice(0, -1); + decimalNumber = decimalNumber.slice(0, -1); return `${ret.slice(0, digits)}${decimalNumber ? `.${decimalNumber}` : ''}${suffix}`; } @@ -302,9 +302,9 @@ export function fixedInt(value: integer): integer { } export function rgbToHsv(r: integer, g: integer, b: integer) { - let v = Math.max(r, g, b); - let c = v - Math.min(r, g, b); - let h = c && ((v === r) ? (g - b) / c : ((v === g) ? 2 + (b - r) / c : 4 + (r - g) / c)); + const v = Math.max(r, g, b); + const c = v - Math.min(r, g, b); + const h = c && ((v === r) ? (g - b) / c : ((v === g) ? 2 + (b - r) / c : 4 + (r - g) / c)); return [ 60 * (h < 0 ? h + 6 : h), v && c / v, v]; } @@ -327,13 +327,13 @@ export function deltaRgb(rgb1: integer[], rgb2: integer[]): integer { export function rgbHexToRgba(hex: string) { const color = hex.match(/^([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i); return { - r: parseInt(color[1], 16), - g: parseInt(color[2], 16), - b: parseInt(color[3], 16), - a: 255 + r: parseInt(color[1], 16), + g: parseInt(color[2], 16), + b: parseInt(color[3], 16), + a: 255 }; } export function rgbaToInt(rgba: integer[]): integer { return (rgba[0] << 24) + (rgba[1] << 16) + (rgba[2] << 8) + rgba[3]; -} \ No newline at end of file +}