mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-03-21 17:25:10 -05:00
ESLint has a whole new config format, so I figure it's a good time to make the config system saner. - First, we no longer have separate eslint-no-types configs. Lint performance shouldn't be enough of a problem to justify the relevant maintenance complexity. - Second, our base config should work out-of-the-box now. `npx eslint` will work as expected, without any CLI flags. You should still use `npm run lint` which adds the `--cached` flag for performance. - Third, whatever updates I did fixed style linting, which apparently has been bugged for quite some time, considering all the obvious mixed-tabs-and-spaces issues I found in the upgrade. Also here are some changes to our style rules. In particular: - Curly brackets (for objects etc) now have spaces inside them. Sorry for the huge change. ESLint doesn't support our old style, and most projects use Prettier style, so we might as well match them in this way. See https://github.com/eslint-stylistic/eslint-stylistic/issues/415 - String + number concatenation is no longer allowed. We now consistently use template strings for this.
1225 lines
17 KiB
TypeScript
1225 lines
17 KiB
TypeScript
/*
|
|
|
|
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,
|
|
},
|
|
};
|