Jofthomas's picture
Jofthomas HF staff
Upload 4781 files
5c2ed06 verified
export const Abilities: import('../../../sim/dex-abilities').ModdedAbilityDataTable = {
aerilate: {
inherit: true,
onModifyType(move, pokemon) {
const noModifyType = [
'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball',
];
if (move.type === 'Normal' && !noModifyType.includes(move.id) &&
!(move.isZ && move.category !== 'Status') && !(move.name === 'Tera Blast' && pokemon.terastallized)) {
move.typeChangerBoosted = this.effect;
}
},
},
eartheater: {
inherit: true,
onTryHit(target, source, move) {
if (target !== source && move.type === 'Fighting') {
if (!this.heal(target.baseMaxhp / 4)) {
this.add('-immune', target, '[from] ability: Earth Eater');
}
return null;
}
},
},
fairyaura: {
inherit: true,
onAnyBasePower(basePower, source, target, move) {
if (target === source || move.category === 'Status' || move.type !== 'Psychic') return;
if (!move.auraBooster?.hasAbility('Fairy Aura')) move.auraBooster = this.effectState.target;
if (move.auraBooster !== this.effectState.target) return;
return this.chainModify([move.hasAuraBreak ? 3072 : 5448, 4096]);
},
},
galewings: {
inherit: true,
onModifyPriority(priority, pokemon, target, move) {
if (move?.type === 'Normal' && pokemon.hp === pokemon.maxhp) return priority + 1;
},
},
mimicry: {
inherit: true,
onTerrainChange(pokemon) {
let types;
switch (this.field.terrain) {
case 'electricterrain':
types = ['Electric'];
break;
case 'grassyterrain':
types = ['Grass'];
break;
case 'mistyterrain':
case 'psychicterrain':
types = ['Psychic'];
break;
default:
types = pokemon.baseSpecies.types;
}
const oldTypes = pokemon.getTypes();
if (oldTypes.join() === types.join() || !pokemon.setType(types)) return;
if (this.field.terrain || pokemon.transformed) {
this.add('-start', pokemon, 'typechange', types.join('/'), '[from] ability: Mimicry');
if (!this.field.terrain) this.hint("Transform Mimicry changes you to your original un-transformed types.");
} else {
this.add('-activate', pokemon, 'ability: Mimicry');
this.add('-end', pokemon, 'typechange', '[silent]');
}
},
},
pixilate: {
inherit: true,
onModifyType(move, pokemon) {
const noModifyType = [
'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball',
];
if (move.type === 'Normal' && !noModifyType.includes(move.id) &&
!(move.isZ && move.category !== 'Status') && !(move.name === 'Tera Blast' && pokemon.terastallized)) {
move.type = 'Psychic';
move.typeChangerBoosted = this.effect;
}
},
},
purifyingsalt: {
inherit: true,
onSourceModifyAtk(atk, attacker, defender, move) {
if (move.type === 'Psychic') {
this.debug('Purifying Salt weaken');
return this.chainModify(0.5);
}
},
onSourceModifySpA(spa, attacker, defender, move) {
if (move.type === 'Psychic') {
this.debug('Purifying Salt weaken');
return this.chainModify(0.5);
}
},
},
rattled: {
inherit: true,
onDamagingHit(damage, target, source, move) {
if (['Dark', 'Grass', 'Psychic'].includes(move.type)) {
this.boost({ spe: 1 });
}
},
},
refrigerate: {
inherit: true,
onModifyType(move, pokemon) {
const noModifyType = [
'judgment', 'multiattack', 'naturalgift', 'revelationdance', 'technoblast', 'terrainpulse', 'weatherball',
];
if (move.type === 'Normal' && !noModifyType.includes(move.id) &&
!(move.isZ && move.category !== 'Status') && !(move.name === 'Tera Blast' && pokemon.terastallized)) {
move.type = 'Water';
move.typeChangerBoosted = this.effect;
}
},
},
rockypayload: {
inherit: true,
onModifyAtk(atk, attacker, defender, move) {
if (move.type === 'Fighting') {
this.debug('Rocky Payload boost');
return this.chainModify(1.5);
}
},
onModifySpA(atk, attacker, defender, move) {
if (move.type === 'Fighting') {
this.debug('Rocky Payload boost');
return this.chainModify(1.5);
}
},
},
sandforce: {
inherit: true,
onBasePower(basePower, attacker, defender, move) {
if (this.field.isWeather('sandstorm')) {
if (move.type === 'Fighting' || move.type === 'Steel') {
this.debug('Sand Force boost');
return this.chainModify([5325, 4096]);
}
}
},
},
swarm: {
inherit: true,
onModifyAtk(atk, attacker, defender, move) {
if (move.type === 'Grass' && attacker.hp <= attacker.maxhp / 3) {
this.debug('Swarm boost');
return this.chainModify(1.5);
}
},
onModifySpA(atk, attacker, defender, move) {
if (move.type === 'Grass' && attacker.hp <= attacker.maxhp / 3) {
this.debug('Swarm boost');
return this.chainModify(1.5);
}
},
},
thickfat: {
inherit: true,
onSourceModifyAtk(atk, attacker, defender, move) {
if (move.type === 'Water' || move.type === 'Fire') {
this.debug('Thick Fat weaken');
return this.chainModify(0.5);
}
},
onSourceModifySpA(atk, attacker, defender, move) {
if (move.type === 'Water' || move.type === 'Fire') {
this.debug('Thick Fat weaken');
return this.chainModify(0.5);
}
},
},
mountaineer: {
inherit: true,
onTryHit(target, source, move) {
if (move.type === 'Fighting' && !target.activeTurns) {
this.add('-immune', target, '[from] ability: Mountaineer');
return null;
}
},
},
};