/* Ratings and how they work: -1: Detrimental An ability that severely harms the user. ex. Defeatist, Slow Start 0: Useless An ability with no overall benefit in a singles battle. ex. Color Change, Plus 1: Ineffective An ability that has minimal effect or is only useful in niche situations. ex. Light Metal, Suction Cups 2: Useful An ability that can be generally useful. ex. Flame Body, Overcoat 3: Effective An ability with a strong effect on the user or foe. ex. Chlorophyll, Sturdy 4: Very useful One of the more popular abilities. It requires minimal support to be effective. ex. Adaptability, Magic Bounce 5: Essential The sort of ability that defines metagames. ex. Imposter, Shadow Tag */ export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = { noability: { inherit: true, rating: 0.1, }, adaptability: { inherit: true, rating: 4, }, aerilate: { inherit: true, rating: 4, }, aftermath: { inherit: true, rating: 2.5, }, airlock: { inherit: true, rating: 2, }, analytic: { inherit: true, rating: 2.5, }, angerpoint: { inherit: true, rating: 1.5, }, anticipation: { inherit: true, rating: 0.5, }, arenatrap: { inherit: true, rating: 5, }, aromaveil: { inherit: true, rating: 2, }, asoneglastrier: { inherit: true, rating: 3.5, }, asonespectrier: { inherit: true, rating: 3.5, }, aurabreak: { inherit: true, rating: 1, }, baddreams: { inherit: true, rating: 1.5, }, ballfetch: { inherit: true, rating: 0, }, battery: { inherit: true, rating: 0, }, battlearmor: { inherit: true, rating: 1, }, battlebond: { inherit: true, onSourceAfterFaint(length, target, source, effect) { if (effect?.effectType !== 'Move') { return; } if (source.species.id === 'greninjabond' && source.hp && !source.transformed && source.side.foePokemonLeft()) { this.add('-activate', source, 'ability: Battle Bond'); source.formeChange('Greninja-Ash', this.effect, true); } }, onModifyMovePriority: -1, onModifyMove(move, attacker) { if (move.id === 'watershuriken' && attacker.species.name === 'Greninja-Ash' && !attacker.transformed) { move.multihit = 3; } }, isNonstandard: null, rating: 4, }, beastboost: { inherit: true, rating: 3.5, }, berserk: { inherit: true, rating: 2, }, bigpecks: { inherit: true, rating: 0.5, }, blaze: { inherit: true, rating: 2, }, bulletproof: { inherit: true, rating: 3, }, cheekpouch: { inherit: true, rating: 2, }, chillingneigh: { inherit: true, rating: 3, }, chlorophyll: { inherit: true, rating: 3, }, clearbody: { inherit: true, rating: 2, }, cloudnine: { inherit: true, rating: 2, }, colorchange: { inherit: true, rating: 0, }, comatose: { inherit: true, rating: 4, }, competitive: { inherit: true, onAfterEachBoost(boost, target, source, effect) { if (!source || target.isAlly(source)) { if (effect.id === 'stickyweb') { this.hint("In Gen 8, Court Change Sticky Web counts as lowering your own Speed, and Competitive only affects stats lowered by foes.", true, source.side); } return; } let statsLowered = false; let i: BoostID; for (i in boost) { if (boost[i]! < 0) { statsLowered = true; } } if (statsLowered) { this.boost({ spa: 2 }, target, target, null, false, true); } }, rating: 2.5, }, compoundeyes: { inherit: true, rating: 3, }, contrary: { inherit: true, rating: 4.5, }, corrosion: { inherit: true, rating: 2.5, }, cottondown: { inherit: true, rating: 2, }, curiousmedicine: { inherit: true, rating: 0, }, cursedbody: { inherit: true, rating: 2, }, cutecharm: { inherit: true, rating: 0.5, }, damp: { inherit: true, rating: 1, }, dancer: { inherit: true, rating: 1.5, }, darkaura: { inherit: true, rating: 3, }, dauntlessshield: { inherit: true, onStart(pokemon) { this.boost({ def: 1 }, pokemon); }, rating: 3.5, }, dazzling: { inherit: true, rating: 2.5, }, defeatist: { inherit: true, rating: -1, }, defiant: { inherit: true, onAfterEachBoost(boost, target, source, effect) { if (!source || target.isAlly(source)) { if (effect.id === 'stickyweb') { this.hint("In Gen 8, Court Change Sticky Web counts as lowering your own Speed, and Defiant only affects stats lowered by foes.", true, source.side); } return; } let statsLowered = false; let i: BoostID; for (i in boost) { if (boost[i]! < 0) { statsLowered = true; } } if (statsLowered) { this.boost({ atk: 2 }, target, target, null, false, true); } }, rating: 2.5, }, deltastream: { inherit: true, rating: 4, }, desolateland: { inherit: true, rating: 4.5, }, disguise: { inherit: true, rating: 3.5, }, download: { inherit: true, rating: 3.5, }, dragonsmaw: { inherit: true, rating: 3.5, }, drizzle: { inherit: true, rating: 4, }, drought: { inherit: true, rating: 4, }, dryskin: { inherit: true, rating: 3, }, earlybird: { inherit: true, rating: 1.5, }, effectspore: { inherit: true, rating: 2, }, electricsurge: { inherit: true, rating: 4, }, emergencyexit: { inherit: true, rating: 1, }, fairyaura: { inherit: true, rating: 3, }, filter: { inherit: true, rating: 3, }, flamebody: { inherit: true, rating: 2, }, flareboost: { inherit: true, rating: 2, }, flashfire: { inherit: true, rating: 3.5, }, flowergift: { inherit: true, rating: 1, }, flowerveil: { inherit: true, rating: 0, }, fluffy: { inherit: true, rating: 3.5, }, forecast: { inherit: true, rating: 2, }, forewarn: { inherit: true, rating: 0.5, }, friendguard: { inherit: true, rating: 0, }, frisk: { inherit: true, rating: 1.5, }, fullmetalbody: { inherit: true, rating: 2, }, furcoat: { inherit: true, rating: 4, }, galewings: { inherit: true, rating: 2.5, }, galvanize: { inherit: true, rating: 4, }, gluttony: { inherit: true, rating: 1.5, }, gooey: { inherit: true, rating: 2, }, gorillatactics: { inherit: true, rating: 4.5, }, grasspelt: { inherit: true, rating: 0.5, }, grassysurge: { inherit: true, rating: 4, }, grimneigh: { inherit: true, rating: 3, }, gulpmissile: { inherit: true, flags: { failroleplay: 1, noreceiver: 1, noentrain: 1, notrace: 1, failskillswap: 1, cantsuppress: 1, notransform: 1 }, rating: 2.5, }, guts: { inherit: true, rating: 3, }, harvest: { inherit: true, rating: 2.5, }, healer: { inherit: true, rating: 0, }, heatproof: { inherit: true, onSourceModifyAtk() {}, onSourceModifySpA() {}, onSourceBasePowerPriority: 18, onSourceBasePower(basePower, attacker, defender, move) { if (move.type === 'Fire') { this.debug('Heatproof BP weaken'); return this.chainModify(0.5); } }, rating: 2, }, heavymetal: { inherit: true, rating: 0, }, honeygather: { inherit: true, rating: 0, }, hugepower: { inherit: true, rating: 5, }, hungerswitch: { inherit: true, rating: 1, }, hustle: { inherit: true, rating: 3.5, }, hydration: { inherit: true, rating: 1.5, }, hypercutter: { inherit: true, rating: 1.5, }, icebody: { inherit: true, rating: 1, }, iceface: { inherit: true, rating: 3, }, icescales: { inherit: true, rating: 4, }, illuminate: { inherit: true, onTryBoost() {}, onModifyMove() {}, flags: {}, rating: 0, }, illusion: { inherit: true, rating: 4.5, }, immunity: { inherit: true, rating: 2, }, imposter: { inherit: true, rating: 5, }, infiltrator: { inherit: true, rating: 2.5, }, innardsout: { inherit: true, rating: 4, }, innerfocus: { inherit: true, rating: 1.5, }, insomnia: { inherit: true, rating: 2, }, intimidate: { inherit: true, rating: 3.5, }, intrepidsword: { inherit: true, onStart(pokemon) { this.boost({ atk: 1 }, pokemon); }, rating: 4, }, ironbarbs: { inherit: true, rating: 2.5, }, ironfist: { inherit: true, rating: 3, }, justified: { inherit: true, rating: 2.5, }, keeneye: { inherit: true, rating: 0.5, }, klutz: { inherit: true, rating: -1, }, leafguard: { inherit: true, rating: 0.5, }, levitate: { inherit: true, rating: 3.5, }, libero: { inherit: true, onPrepareHit(source, target, move) { if (move.hasBounced || move.flags['futuremove'] || move.sourceEffect === 'snatch' || move.callsMove) return; const type = move.type; if (type && type !== '???' && source.getTypes().join() !== type) { if (!source.setType(type)) return; this.add('-start', source, 'typechange', type, '[from] ability: Libero'); } }, rating: 4.5, }, lightmetal: { inherit: true, rating: 1, }, lightningrod: { inherit: true, rating: 3, }, limber: { inherit: true, rating: 2, }, liquidooze: { inherit: true, rating: 1.5, }, liquidvoice: { inherit: true, rating: 1.5, }, longreach: { inherit: true, rating: 1, }, magicbounce: { inherit: true, rating: 4, }, magicguard: { inherit: true, rating: 4, }, magician: { inherit: true, rating: 1.5, }, magmaarmor: { inherit: true, rating: 1, }, magnetpull: { inherit: true, rating: 4, }, marvelscale: { inherit: true, rating: 2.5, }, megalauncher: { inherit: true, rating: 3, }, merciless: { inherit: true, rating: 1.5, }, mimicry: { inherit: true, rating: 0.5, }, minus: { inherit: true, rating: 0, }, mirrorarmor: { inherit: true, rating: 2.5, }, mistysurge: { inherit: true, rating: 3.5, }, moldbreaker: { inherit: true, rating: 3.5, }, moody: { inherit: true, rating: 5, }, motordrive: { inherit: true, rating: 3, }, moxie: { inherit: true, rating: 3, }, multiscale: { inherit: true, rating: 3.5, }, multitype: { inherit: true, rating: 4, }, mummy: { inherit: true, rating: 2, }, naturalcure: { inherit: true, rating: 2.5, }, neuroforce: { inherit: true, rating: 2.5, }, neutralizinggas: { inherit: true, rating: 4, }, noguard: { inherit: true, rating: 4, }, normalize: { inherit: true, rating: 0, }, oblivious: { inherit: true, rating: 1.5, }, overcoat: { inherit: true, rating: 2, }, overgrow: { inherit: true, rating: 2, }, owntempo: { inherit: true, rating: 1.5, }, parentalbond: { inherit: true, rating: 4.5, }, pastelveil: { inherit: true, rating: 2, }, perishbody: { inherit: true, rating: 1, }, pickpocket: { inherit: true, rating: 1, }, pickup: { inherit: true, rating: 0.5, }, pixilate: { inherit: true, rating: 4, }, plus: { inherit: true, rating: 0, }, poisonheal: { inherit: true, rating: 4, }, poisonpoint: { inherit: true, rating: 1.5, }, poisontouch: { inherit: true, rating: 2, }, powerconstruct: { inherit: true, rating: 5, }, powerofalchemy: { inherit: true, rating: 0, }, powerspot: { inherit: true, rating: 1, }, prankster: { inherit: true, rating: 4, }, pressure: { inherit: true, rating: 2.5, }, primordialsea: { inherit: true, rating: 4.5, }, prismarmor: { inherit: true, rating: 3, }, propellertail: { inherit: true, rating: 0, }, protean: { inherit: true, onPrepareHit(source, target, move) { if (move.hasBounced || move.flags['futuremove'] || move.sourceEffect === 'snatch' || move.callsMove) return; const type = move.type; if (type && type !== '???' && source.getTypes().join() !== type) { if (!source.setType(type)) return; this.add('-start', source, 'typechange', type, '[from] ability: Protean'); } }, rating: 4.5, }, psychicsurge: { inherit: true, rating: 4, }, punkrock: { inherit: true, rating: 3.5, }, purepower: { inherit: true, rating: 5, }, queenlymajesty: { inherit: true, rating: 2.5, }, quickdraw: { inherit: true, rating: 2.5, }, quickfeet: { inherit: true, rating: 2.5, }, raindish: { inherit: true, rating: 1.5, }, rattled: { inherit: true, rating: 1.5, }, receiver: { inherit: true, rating: 0, }, reckless: { inherit: true, rating: 3, }, refrigerate: { inherit: true, rating: 4, }, regenerator: { inherit: true, rating: 4.5, }, ripen: { inherit: true, rating: 2, }, rivalry: { inherit: true, rating: 0, }, rkssystem: { inherit: true, rating: 4, }, rockhead: { inherit: true, rating: 3, }, roughskin: { inherit: true, rating: 2.5, }, runaway: { inherit: true, rating: 0, }, sandforce: { inherit: true, rating: 2, }, sandrush: { inherit: true, rating: 3, }, sandspit: { inherit: true, rating: 2, }, sandstream: { inherit: true, rating: 4, }, sandveil: { inherit: true, rating: 1.5, }, sapsipper: { inherit: true, rating: 3, }, schooling: { inherit: true, rating: 3, }, scrappy: { inherit: true, rating: 3, }, screencleaner: { inherit: true, rating: 2, }, serenegrace: { inherit: true, rating: 3.5, }, shadowshield: { inherit: true, rating: 3.5, }, shadowtag: { inherit: true, rating: 5, }, shedskin: { inherit: true, rating: 3, }, sheerforce: { inherit: true, rating: 3.5, }, shellarmor: { inherit: true, rating: 1, }, shielddust: { inherit: true, rating: 2, }, shieldsdown: { inherit: true, rating: 3, }, simple: { inherit: true, rating: 4, }, skilllink: { inherit: true, rating: 3, }, slowstart: { inherit: true, rating: -1, }, slushrush: { inherit: true, rating: 3, }, sniper: { inherit: true, rating: 2, }, snowcloak: { inherit: true, rating: 1.5, }, snowwarning: { inherit: true, onStart(source) { this.field.setWeather('hail'); }, rating: 4, }, solarpower: { inherit: true, rating: 2, }, solidrock: { inherit: true, rating: 3, }, soulheart: { inherit: true, rating: 3.5, }, soundproof: { inherit: true, rating: 1.5, }, speedboost: { inherit: true, rating: 4.5, }, stakeout: { inherit: true, rating: 4.5, }, stall: { inherit: true, rating: -1, }, stalwart: { inherit: true, rating: 0, }, stamina: { inherit: true, rating: 3.5, }, stancechange: { inherit: true, rating: 4, }, static: { inherit: true, rating: 2, }, steadfast: { inherit: true, rating: 1, }, steamengine: { inherit: true, rating: 2, }, steelworker: { inherit: true, rating: 3.5, }, steelyspirit: { inherit: true, rating: 3.5, }, stench: { inherit: true, rating: 0.5, }, stickyhold: { inherit: true, rating: 2, }, stormdrain: { inherit: true, rating: 3, }, strongjaw: { inherit: true, rating: 3, }, sturdy: { inherit: true, rating: 3, }, suctioncups: { inherit: true, rating: 1, }, superluck: { inherit: true, rating: 1.5, }, surgesurfer: { inherit: true, rating: 3, }, swarm: { inherit: true, rating: 2, }, sweetveil: { inherit: true, rating: 2, }, swiftswim: { inherit: true, rating: 3, }, symbiosis: { inherit: true, rating: 0, }, synchronize: { inherit: true, rating: 2, }, tangledfeet: { inherit: true, rating: 1, }, tanglinghair: { inherit: true, rating: 2, }, technician: { inherit: true, rating: 3.5, }, telepathy: { inherit: true, rating: 0, }, teravolt: { inherit: true, rating: 3.5, }, thickfat: { inherit: true, rating: 3.5, }, tintedlens: { inherit: true, rating: 4, }, torrent: { inherit: true, rating: 2, }, toughclaws: { inherit: true, rating: 3.5, }, toxicboost: { inherit: true, rating: 2.5, }, trace: { inherit: true, rating: 3, }, transistor: { inherit: true, onModifyAtk(atk, attacker, defender, move) { if (move.type === 'Electric') { this.debug('Transistor boost'); return this.chainModify(1.5); } }, onModifySpA(atk, attacker, defender, move) { if (move.type === 'Electric') { this.debug('Transistor boost'); return this.chainModify(1.5); } }, rating: 3.5, }, triage: { inherit: true, rating: 3.5, }, truant: { inherit: true, rating: -1, }, turboblaze: { inherit: true, rating: 3.5, }, unaware: { inherit: true, rating: 4, }, unburden: { inherit: true, rating: 3.5, }, unnerve: { inherit: true, rating: 1.5, }, unseenfist: { inherit: true, rating: 2, }, victorystar: { inherit: true, rating: 2, }, vitalspirit: { inherit: true, rating: 2, }, voltabsorb: { inherit: true, rating: 3.5, }, wanderingspirit: { inherit: true, rating: 2.5, }, waterabsorb: { inherit: true, rating: 3.5, }, waterbubble: { inherit: true, rating: 4.5, }, watercompaction: { inherit: true, rating: 1.5, }, waterveil: { inherit: true, rating: 2, }, weakarmor: { inherit: true, rating: 1, }, whitesmoke: { inherit: true, rating: 2, }, wimpout: { inherit: true, rating: 1, }, wonderguard: { inherit: true, flags: { failroleplay: 1, noreceiver: 1, failskillswap: 1, breakable: 1 }, rating: 5, }, wonderskin: { inherit: true, rating: 2, }, zenmode: { inherit: true, rating: 0, }, mountaineer: { inherit: true, rating: 3, }, rebound: { inherit: true, rating: 3, }, persistent: { inherit: true, rating: 3, }, };