diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 7cb92c451..3c869aaba 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -21,6 +21,7 @@ import { ModifierPoolType, getDefaultModifierTypeForTier, getEnemyModifierTypesF 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 Battle, { BattleType, FixedBattleConfig, fixedBattles } from './battle'; import { GameMode, GameModes, gameModes } from './game-mode'; import FieldSpritePipeline from './pipelines/field-sprite'; @@ -808,6 +809,7 @@ export default class BattleScene extends SceneBase { 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) diff --git a/src/data/ability.ts b/src/data/ability.ts index e0bd24b4e..4b8dee38b 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -18,8 +18,9 @@ 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"; -export class Ability { +export class Ability implements Localizable { public id: Abilities; public name: string; public description: string; @@ -29,13 +30,20 @@ export class Ability { public attrs: AbAttr[]; public conditions: AbAttrCondition[]; - constructor(id: Abilities, name: string, description: string, generation: integer) { + constructor(id: Abilities, generation: integer) { this.id = id; - this.name = name; - this.description = description; this.generation = generation; this.attrs = []; this.conditions = []; + + this.localize(); + } + + localize(): void { + const i18nKey = Abilities[this.id].split('_').filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join('') as string; + + this.name = this.id ? i18next.t(`ability:${i18nKey}.name`) as string : ''; + this.description = this.id ? i18next.t(`ability:${i18nKey}.description`) as string : ''; } getAttrs(attrType: { new(...args: any[]): AbAttr }): AbAttr[] { @@ -76,6 +84,16 @@ export class Ability { return this; } + + partial(): this { + this.name += ' (P)'; + return this; + } + + unimplemented(): this { + this.name += ' (N)'; + return this; + } } type AbAttrApplyFunc = (attr: TAttr, passive: boolean) => boolean | Promise; @@ -2409,422 +2427,456 @@ function queueShowAbility(pokemon: Pokemon, passive: boolean): void { pokemon.scene.clearPhaseQueueSplice(); } -export const allAbilities = [ new Ability(Abilities.NONE, "-", "", 3) ]; +export const allAbilities = [ new Ability(Abilities.NONE, 3) ]; export function initAbilities() { allAbilities.push( - new Ability(Abilities.STENCH, "Stench", "By releasing stench when attacking, this Pokémon may cause the target to flinch.", 3) + new Ability(Abilities.STENCH, 3) .attr(PostAttackApplyBattlerTagAbAttr, false, (user, target, move) => !move.getMove().findAttr(attr => attr instanceof FlinchAttr) ? 10 : 0, BattlerTagType.FLINCHED), - new Ability(Abilities.DRIZZLE, "Drizzle", "The Pokémon makes it rain when it enters a battle.", 3) + new Ability(Abilities.DRIZZLE, 3) .attr(PostSummonWeatherChangeAbAttr, WeatherType.RAIN) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.RAIN), - new Ability(Abilities.SPEED_BOOST, "Speed Boost", "Its Speed stat is boosted every turn.", 3) + new Ability(Abilities.SPEED_BOOST, 3) .attr(PostTurnStatChangeAbAttr, BattleStat.SPD, 1), - new Ability(Abilities.BATTLE_ARMOR, "Battle Armor", "Hard armor protects the Pokémon from critical hits.", 3) + new Ability(Abilities.BATTLE_ARMOR, 3) .attr(BlockCritAbAttr) .ignorable(), - new Ability(Abilities.STURDY, "Sturdy", "It cannot be knocked out with one hit. One-hit KO moves cannot knock it out, either.", 3) + new Ability(Abilities.STURDY, 3) .attr(PreDefendFullHpEndureAbAttr) .attr(BlockOneHitKOAbAttr) .ignorable(), - new Ability(Abilities.DAMP, "Damp (N)", "Prevents the use of explosive moves, such as Self-Destruct, by dampening its surroundings.", 3) - .ignorable(), - new Ability(Abilities.LIMBER, "Limber", "Its limber body protects the Pokémon from paralysis.", 3) + new Ability(Abilities.DAMP, 3) + .ignorable() + .unimplemented(), + new Ability(Abilities.LIMBER, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.PARALYSIS) .ignorable(), - new Ability(Abilities.SAND_VEIL, "Sand Veil", "Boosts the Pokémon's evasiveness in a sandstorm.", 3) + new Ability(Abilities.SAND_VEIL, 3) .attr(BattleStatMultiplierAbAttr, BattleStat.EVA, 1.2) .attr(BlockWeatherDamageAttr, WeatherType.SANDSTORM) .condition(getWeatherCondition(WeatherType.SANDSTORM)) .ignorable(), - new Ability(Abilities.STATIC, "Static", "The Pokémon is charged with static electricity, so contact with it may cause paralysis.", 3) + new Ability(Abilities.STATIC, 3) .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.PARALYSIS), - new Ability(Abilities.VOLT_ABSORB, "Volt Absorb", "Restores HP if hit by an Electric-type move instead of taking damage.", 3) + new Ability(Abilities.VOLT_ABSORB, 3) .attr(TypeImmunityHealAbAttr, Type.ELECTRIC) .ignorable(), - new Ability(Abilities.WATER_ABSORB, "Water Absorb", "Restores HP if hit by a Water-type move instead of taking damage.", 3) + new Ability(Abilities.WATER_ABSORB, 3) .attr(TypeImmunityHealAbAttr, Type.WATER) .ignorable(), - new Ability(Abilities.OBLIVIOUS, "Oblivious", "The Pokémon is oblivious, and that keeps it from being infatuated or falling for taunts.", 3) + new Ability(Abilities.OBLIVIOUS, 3) .attr(BattlerTagImmunityAbAttr, BattlerTagType.INFATUATED) .ignorable(), - new Ability(Abilities.CLOUD_NINE, "Cloud Nine", "Eliminates the effects of weather.", 3) + new Ability(Abilities.CLOUD_NINE, 3) .attr(SuppressWeatherEffectAbAttr, true), - new Ability(Abilities.COMPOUND_EYES, "Compound Eyes", "The Pokémon's compound eyes boost its accuracy.", 3) + new Ability(Abilities.COMPOUND_EYES, 3) .attr(BattleStatMultiplierAbAttr, BattleStat.ACC, 1.3), - new Ability(Abilities.INSOMNIA, "Insomnia", "The Pokémon is suffering from insomnia and cannot fall asleep.", 3) + new Ability(Abilities.INSOMNIA, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP) .attr(BattlerTagImmunityAbAttr, BattlerTagType.DROWSY) .ignorable(), - new Ability(Abilities.COLOR_CHANGE, "Color Change", "The Pokémon's type becomes the type of the move used on it.", 3) + new Ability(Abilities.COLOR_CHANGE, 3) .attr(PostDefendTypeChangeAbAttr), - new Ability(Abilities.IMMUNITY, "Immunity", "The immune system of the Pokémon prevents it from getting poisoned.", 3) + new Ability(Abilities.IMMUNITY, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.POISON, StatusEffect.TOXIC) .ignorable(), - new Ability(Abilities.FLASH_FIRE, "Flash Fire", "Powers up the Pokémon's Fire-type moves if it's hit by one.", 3) + new Ability(Abilities.FLASH_FIRE, 3) .attr(TypeImmunityAddBattlerTagAbAttr, Type.FIRE, BattlerTagType.FIRE_BOOST, 1, (pokemon: Pokemon) => !pokemon.status || pokemon.status.effect !== StatusEffect.FREEZE) .ignorable(), - new Ability(Abilities.SHIELD_DUST, "Shield Dust (N)", "This Pokémon's dust blocks the additional effects of attacks taken.", 3) - .ignorable(), - new Ability(Abilities.OWN_TEMPO, "Own Tempo", "This Pokémon has its own tempo, and that prevents it from becoming confused.", 3) + new Ability(Abilities.SHIELD_DUST, 3) + .ignorable() + .unimplemented(), + new Ability(Abilities.OWN_TEMPO, 3) .attr(BattlerTagImmunityAbAttr, BattlerTagType.CONFUSED) .ignorable(), - new Ability(Abilities.SUCTION_CUPS, "Suction Cups (N)", "This Pokémon uses suction cups to stay in one spot to negate all moves and items that force switching out.", 3) - .ignorable(), - new Ability(Abilities.INTIMIDATE, "Intimidate", "The Pokémon intimidates opposing Pokémon upon entering battle, lowering their Attack stat.", 3) + new Ability(Abilities.SUCTION_CUPS, 3) + .ignorable() + .unimplemented(), + new Ability(Abilities.INTIMIDATE, 3) .attr(PostSummonStatChangeAbAttr, BattleStat.ATK, -1), - new Ability(Abilities.SHADOW_TAG, "Shadow Tag", "This Pokémon steps on the opposing Pokémon's shadow to prevent it from escaping.", 3) + new Ability(Abilities.SHADOW_TAG, 3) .attr(ArenaTrapAbAttr), - new Ability(Abilities.ROUGH_SKIN, "Rough Skin", "This Pokémon inflicts damage with its rough skin to the attacker on contact.", 3) + new Ability(Abilities.ROUGH_SKIN, 3) .attr(PostDefendContactDamageAbAttr, 8) .bypassFaint(), - new Ability(Abilities.WONDER_GUARD, "Wonder Guard", "Its mysterious power only lets supereffective moves hit the Pokémon.", 3) + new Ability(Abilities.WONDER_GUARD, 3) .attr(NonSuperEffectiveImmunityAbAttr) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .ignorable(), - new Ability(Abilities.LEVITATE, "Levitate", "By floating in the air, the Pokémon receives full immunity to all Ground-type moves.", 3) + new Ability(Abilities.LEVITATE, 3) .attr(TypeImmunityAbAttr, Type.GROUND, (pokemon: Pokemon) => !pokemon.getTag(BattlerTagType.IGNORE_FLYING) && !pokemon.scene.arena.getTag(ArenaTagType.GRAVITY) && !pokemon.getTag(BattlerTagType.GROUNDED)) .ignorable(), - new Ability(Abilities.EFFECT_SPORE, "Effect Spore", "Contact with the Pokémon may inflict poison, sleep, or paralysis on its attacker.", 3) + new Ability(Abilities.EFFECT_SPORE, 3) .attr(PostDefendContactApplyStatusEffectAbAttr, 10, StatusEffect.POISON, StatusEffect.PARALYSIS, StatusEffect.SLEEP), - new Ability(Abilities.SYNCHRONIZE, "Synchronize (N)", "The attacker will receive the same status condition if it inflicts a burn, poison, or paralysis to the Pokémon.", 3) - .attr(SyncEncounterNatureAbAttr), - new Ability(Abilities.CLEAR_BODY, "Clear Body", "Prevents other Pokémon's moves or Abilities from lowering the Pokémon's stats.", 3) + new Ability(Abilities.SYNCHRONIZE, 3) + .attr(SyncEncounterNatureAbAttr) + .unimplemented(), + new Ability(Abilities.CLEAR_BODY, 3) .attr(ProtectStatAbAttr) .ignorable(), - new Ability(Abilities.NATURAL_CURE, "Natural Cure", "All status conditions heal when the Pokémon switches out.", 3) + new Ability(Abilities.NATURAL_CURE, 3) .attr(PreSwitchOutResetStatusAbAttr), - new Ability(Abilities.LIGHTNING_ROD, "Lightning Rod", "The Pokémon draws in all Electric-type moves. Instead of being hit by Electric-type moves, it boosts its Sp. Atk.", 3) + new Ability(Abilities.LIGHTNING_ROD, 3) .attr(RedirectTypeMoveAbAttr, Type.ELECTRIC) .attr(TypeImmunityStatChangeAbAttr, Type.ELECTRIC, BattleStat.SPATK, 1) .ignorable(), - new Ability(Abilities.SERENE_GRACE, "Serene Grace (N)", "Boosts the likelihood of additional effects occurring when attacking.", 3), - new Ability(Abilities.SWIFT_SWIM, "Swift Swim", "Boosts the Pokémon's Speed stat in rain.", 3) + new Ability(Abilities.SERENE_GRACE, 3) + .unimplemented(), + new Ability(Abilities.SWIFT_SWIM, 3) .attr(BattleStatMultiplierAbAttr, BattleStat.SPD, 2) .condition(getWeatherCondition(WeatherType.RAIN, WeatherType.HEAVY_RAIN)), - new Ability(Abilities.CHLOROPHYLL, "Chlorophyll", "Boosts the Pokémon's Speed stat in harsh sunlight.", 3) + new Ability(Abilities.CHLOROPHYLL, 3) .attr(BattleStatMultiplierAbAttr, BattleStat.SPD, 2) .condition(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN)), - new Ability(Abilities.ILLUMINATE, "Illuminate", "By illuminating its surroundings, the Pokémon raises the likelihood of meeting wild Pokémon and prevents its accuracy from being lowered.", 3) + new Ability(Abilities.ILLUMINATE, 3) .attr(ProtectStatAbAttr, BattleStat.ACC) .attr(DoubleBattleChanceAbAttr) .ignorable(), - new Ability(Abilities.TRACE, "Trace", "When it enters a battle, the Pokémon copies an opposing Pokémon's Ability.", 3) + new Ability(Abilities.TRACE, 3) .attr(TraceAbAttr) .attr(UncopiableAbilityAbAttr), - new Ability(Abilities.HUGE_POWER, "Huge Power", "Doubles the Pokémon's Attack stat.", 3) + new Ability(Abilities.HUGE_POWER, 3) .attr(BattleStatMultiplierAbAttr, BattleStat.ATK, 2), - new Ability(Abilities.POISON_POINT, "Poison Point", "Contact with the Pokémon may poison the attacker.", 3) + new Ability(Abilities.POISON_POINT, 3) .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.POISON), - new Ability(Abilities.INNER_FOCUS, "Inner Focus", "The Pokémon's intensely focused, and that protects the Pokémon from flinching.", 3) + new Ability(Abilities.INNER_FOCUS, 3) .attr(BattlerTagImmunityAbAttr, BattlerTagType.FLINCHED) .ignorable(), - new Ability(Abilities.MAGMA_ARMOR, "Magma Armor", "The Pokémon is covered with hot magma, which prevents the Pokémon from becoming frozen.", 3) + new Ability(Abilities.MAGMA_ARMOR, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.FREEZE) .ignorable(), - new Ability(Abilities.WATER_VEIL, "Water Veil", "The Pokémon is covered with a water veil, which prevents the Pokémon from getting a burn.", 3) + new Ability(Abilities.WATER_VEIL, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .ignorable(), - new Ability(Abilities.MAGNET_PULL, "Magnet Pull (N)", "Prevents Steel-type Pokémon from escaping using its magnetic force.", 3) + new Ability(Abilities.MAGNET_PULL, 3) /*.attr(ArenaTrapAbAttr) - .condition((pokemon: Pokemon) => pokemon.getOpponent()?.isOfType(Type.STEEL))*/, - new Ability(Abilities.SOUNDPROOF, "Soundproof", "Soundproofing gives the Pokémon full immunity to all sound-based moves.", 3) + .condition((pokemon: Pokemon) => pokemon.getOpponent()?.isOfType(Type.STEEL))*/ + .unimplemented(), + new Ability(Abilities.SOUNDPROOF, 3) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.getMove().hasFlag(MoveFlags.SOUND_BASED)) .ignorable(), - new Ability(Abilities.RAIN_DISH, "Rain Dish", "The Pokémon gradually regains HP in rain.", 3) + new Ability(Abilities.RAIN_DISH, 3) .attr(PostWeatherLapseHealAbAttr, 1, WeatherType.RAIN, WeatherType.HEAVY_RAIN), - new Ability(Abilities.SAND_STREAM, "Sand Stream", "The Pokémon summons a sandstorm when it enters a battle.", 3) + new Ability(Abilities.SAND_STREAM, 3) .attr(PostSummonWeatherChangeAbAttr, WeatherType.SANDSTORM) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SANDSTORM), - new Ability(Abilities.PRESSURE, "Pressure", "By putting pressure on the opposing Pokémon, it raises their PP usage.", 3) + new Ability(Abilities.PRESSURE, 3) .attr(IncreasePpAbAttr) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' is exerting its Pressure!')), - new Ability(Abilities.THICK_FAT, "Thick Fat", "The Pokémon is protected by a layer of thick fat, which halves the damage taken from Fire- and Ice-type moves.", 3) + new Ability(Abilities.THICK_FAT, 3) .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 0.5) .attr(ReceivedTypeDamageMultiplierAbAttr, Type.ICE, 0.5) .ignorable(), - new Ability(Abilities.EARLY_BIRD, "Early Bird", "The Pokémon awakens from sleep twice as fast as other Pokémon.", 3) + new Ability(Abilities.EARLY_BIRD, 3) .attr(ReduceStatusEffectDurationAbAttr, StatusEffect.SLEEP), - new Ability(Abilities.FLAME_BODY, "Flame Body", "Contact with the Pokémon may burn the attacker.", 3) + new Ability(Abilities.FLAME_BODY, 3) .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.BURN), - new Ability(Abilities.RUN_AWAY, "Run Away", "Enables a sure getaway from wild Pokémon.", 3) + new Ability(Abilities.RUN_AWAY, 3) .attr(RunSuccessAbAttr), - new Ability(Abilities.KEEN_EYE, "Keen Eye", "Keen eyes prevent other Pokémon from lowering this Pokémon's accuracy.", 3) + new Ability(Abilities.KEEN_EYE, 3) .attr(ProtectStatAbAttr, BattleStat.ACC) .ignorable(), - new Ability(Abilities.HYPER_CUTTER, "Hyper Cutter", "The Pokémon's proud of its powerful pincers. They prevent other Pokémon from lowering its Attack stat.", 3) + new Ability(Abilities.HYPER_CUTTER, 3) .attr(ProtectStatAbAttr, BattleStat.ATK) .ignorable(), - new Ability(Abilities.PICKUP, "Pickup", "The Pokémon may pick up the item an opposing Pokémon held during a battle.", 3) + new Ability(Abilities.PICKUP, 3) .attr(PostBattleLootAbAttr), - new Ability(Abilities.TRUANT, "Truant", "The Pokémon can't use a move if it had used a move on the previous turn.", 3) + new Ability(Abilities.TRUANT, 3) .attr(PostSummonAddBattlerTagAbAttr, BattlerTagType.TRUANT, 1, false), - new Ability(Abilities.HUSTLE, "Hustle", "Boosts the Attack stat, but lowers accuracy.", 3) + new Ability(Abilities.HUSTLE, 3) .attr(BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5) .attr(BattleStatMultiplierAbAttr, BattleStat.ACC, 0.8), - new Ability(Abilities.CUTE_CHARM, "Cute Charm", "Contact with the Pokémon may cause infatuation.", 3) + new Ability(Abilities.CUTE_CHARM, 3) .attr(PostDefendContactApplyTagChanceAbAttr, 30, BattlerTagType.INFATUATED), - new Ability(Abilities.PLUS, "Plus (N)", "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.", 3), - new Ability(Abilities.MINUS, "Minus (N)", "Boosts the Sp. Atk stat of the Pokémon if an ally with the Plus or Minus Ability is also in battle.", 3), - new Ability(Abilities.FORECAST, "Forecast (N)", "The Pokémon transforms with the weather to change its type to Water, Fire, or Ice.", 3) + new Ability(Abilities.PLUS, 3) + .unimplemented(), + new Ability(Abilities.MINUS, 3) + .unimplemented(), + new Ability(Abilities.FORECAST, 3) .attr(UncopiableAbilityAbAttr) - .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.STICKY_HOLD, "Sticky Hold", "Items held by the Pokémon are stuck fast and cannot be removed by other Pokémon.", 3) + .attr(NoFusionAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.STICKY_HOLD, 3) .attr(BlockItemTheftAbAttr) .bypassFaint() .ignorable(), - new Ability(Abilities.SHED_SKIN, "Shed Skin", "The Pokémon may heal its own status conditions by shedding its skin.", 3) + new Ability(Abilities.SHED_SKIN, 3) .conditionalAttr(pokemon => !Utils.randSeedInt(3), PostTurnResetStatusAbAttr), - new Ability(Abilities.GUTS, "Guts", "It's so gutsy that having a status condition boosts the Pokémon's Attack stat.", 3) + new Ability(Abilities.GUTS, 3) .attr(BypassBurnDamageReductionAbAttr) .conditionalAttr(pokemon => !!pokemon.status, BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5), - new Ability(Abilities.MARVEL_SCALE, "Marvel Scale", "The Pokémon's marvelous scales boost the Defense stat if it has a status condition.", 3) + new Ability(Abilities.MARVEL_SCALE, 3) .conditionalAttr(pokemon => !!pokemon.status, BattleStatMultiplierAbAttr, BattleStat.DEF, 1.5) .ignorable(), - new Ability(Abilities.LIQUID_OOZE, "Liquid Ooze", "The oozed liquid has a strong stench, which damages attackers using any draining move.", 3) + new Ability(Abilities.LIQUID_OOZE, 3) .attr(ReverseDrainAbAttr), - new Ability(Abilities.OVERGROW, "Overgrow", "Powers up Grass-type moves when the Pokémon's HP is low.", 3) + new Ability(Abilities.OVERGROW, 3) .attr(LowHpMoveTypePowerBoostAbAttr, Type.GRASS), - new Ability(Abilities.BLAZE, "Blaze", "Powers up Fire-type moves when the Pokémon's HP is low.", 3) + new Ability(Abilities.BLAZE, 3) .attr(LowHpMoveTypePowerBoostAbAttr, Type.FIRE), - new Ability(Abilities.TORRENT, "Torrent", "Powers up Water-type moves when the Pokémon's HP is low.", 3) + new Ability(Abilities.TORRENT, 3) .attr(LowHpMoveTypePowerBoostAbAttr, Type.WATER), - new Ability(Abilities.SWARM, "Swarm", "Powers up Bug-type moves when the Pokémon's HP is low.", 3) + new Ability(Abilities.SWARM, 3) .attr(LowHpMoveTypePowerBoostAbAttr, Type.BUG), - new Ability(Abilities.ROCK_HEAD, "Rock Head", "Protects the Pokémon from recoil damage.", 3) + new Ability(Abilities.ROCK_HEAD, 3) .attr(BlockRecoilDamageAttr), - new Ability(Abilities.DROUGHT, "Drought", "Turns the sunlight harsh when the Pokémon enters a battle.", 3) + new Ability(Abilities.DROUGHT, 3) .attr(PostSummonWeatherChangeAbAttr, WeatherType.SUNNY) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SUNNY), - new Ability(Abilities.ARENA_TRAP, "Arena Trap", "Prevents opposing Pokémon from fleeing.", 3) + new Ability(Abilities.ARENA_TRAP, 3) .attr(ArenaTrapAbAttr), - new Ability(Abilities.VITAL_SPIRIT, "Vital Spirit", "The Pokémon is full of vitality, and that prevents it from falling asleep.", 3) + new Ability(Abilities.VITAL_SPIRIT, 3) .attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP) .attr(BattlerTagImmunityAbAttr, BattlerTagType.DROWSY) .ignorable(), - new Ability(Abilities.WHITE_SMOKE, "White Smoke", "The Pokémon is protected by its white smoke, which prevents other Pokémon from lowering its stats.", 3) + new Ability(Abilities.WHITE_SMOKE, 3) .attr(ProtectStatAbAttr) .ignorable(), - new Ability(Abilities.PURE_POWER, "Pure Power", "Using its pure power, the Pokémon doubles its Attack stat.", 3) + new Ability(Abilities.PURE_POWER, 3) .attr(BattleStatMultiplierAbAttr, BattleStat.ATK, 2), - new Ability(Abilities.SHELL_ARMOR, "Shell Armor", "A hard shell protects the Pokémon from critical hits.", 3) + new Ability(Abilities.SHELL_ARMOR, 3) .attr(BlockCritAbAttr) .ignorable(), - new Ability(Abilities.AIR_LOCK, "Air Lock", "Eliminates the effects of weather.", 3) + new Ability(Abilities.AIR_LOCK, 3) .attr(SuppressWeatherEffectAbAttr, true), - new Ability(Abilities.TANGLED_FEET, "Tangled Feet", "Raises evasiveness if the Pokémon is confused.", 4) + new Ability(Abilities.TANGLED_FEET, 4) .conditionalAttr(pokemon => !!pokemon.getTag(BattlerTagType.CONFUSED), BattleStatMultiplierAbAttr, BattleStat.EVA, 2) .ignorable(), - new Ability(Abilities.MOTOR_DRIVE, "Motor Drive", "Boosts its Speed stat if hit by an Electric-type move instead of taking damage.", 4) + new Ability(Abilities.MOTOR_DRIVE, 4) .attr(TypeImmunityStatChangeAbAttr, Type.ELECTRIC, BattleStat.SPD, 1) .ignorable(), - new Ability(Abilities.RIVALRY, "Rivalry", "Becomes competitive and deals more damage to Pokémon of the same gender, but deals less to Pokémon of the opposite gender.", 4) + new Ability(Abilities.RIVALRY, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => user.gender !== Gender.GENDERLESS && target.gender !== Gender.GENDERLESS && user.gender === target.gender, 1.25) .attr(MovePowerBoostAbAttr, (user, target, move) => user.gender !== Gender.GENDERLESS && target.gender !== Gender.GENDERLESS && user.gender !== target.gender, 0.75), - new Ability(Abilities.STEADFAST, "Steadfast", "The Pokémon's determination boosts the Speed stat each time the Pokémon flinches.", 4) + new Ability(Abilities.STEADFAST, 4) .attr(FlinchStatChangeAbAttr, BattleStat.SPD, 1), - new Ability(Abilities.SNOW_CLOAK, "Snow Cloak", "Boosts the Pokémon's evasiveness in snow.", 4) + new Ability(Abilities.SNOW_CLOAK, 4) .attr(BattleStatMultiplierAbAttr, BattleStat.EVA, 1.2) .attr(BlockWeatherDamageAttr, WeatherType.HAIL) .condition(getWeatherCondition(WeatherType.HAIL, WeatherType.SNOW)) .ignorable(), - new Ability(Abilities.GLUTTONY, "Gluttony", "Makes the Pokémon eat a held Berry when its HP drops to half or less, which is sooner than usual.", 4) + new Ability(Abilities.GLUTTONY, 4) .attr(ReduceBerryUseThresholdAbAttr), - new Ability(Abilities.ANGER_POINT, "Anger Point", "The Pokémon is angered when it takes a critical hit, and that maxes its Attack stat.", 4) + new Ability(Abilities.ANGER_POINT, 4) .attr(PostDefendCritStatChangeAbAttr, BattleStat.ATK, 6), - new Ability(Abilities.UNBURDEN, "Unburden (N)", "Boosts the Speed stat if the Pokémon's held item is used or lost.", 4), - new Ability(Abilities.HEATPROOF, "Heatproof", "The heatproof body of the Pokémon halves the damage from Fire-type moves that hit it.", 4) + new Ability(Abilities.UNBURDEN, 4) + .unimplemented(), + new Ability(Abilities.HEATPROOF, 4) .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 0.5) .ignorable(), - new Ability(Abilities.SIMPLE, "Simple", "The stat changes the Pokémon receives are doubled.", 4) + new Ability(Abilities.SIMPLE, 4) .attr(StatChangeMultiplierAbAttr, 2) .ignorable(), - new Ability(Abilities.DRY_SKIN, "Dry Skin", "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.", 4) + new Ability(Abilities.DRY_SKIN, 4) .attr(PostWeatherLapseDamageAbAttr, 2, WeatherType.SUNNY, WeatherType.HARSH_SUN) .attr(PostWeatherLapseHealAbAttr, 2, WeatherType.RAIN, WeatherType.HEAVY_RAIN) .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 1.25) .attr(TypeImmunityHealAbAttr, Type.WATER) .ignorable(), - new Ability(Abilities.DOWNLOAD, "Download", "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.", 4) + new Ability(Abilities.DOWNLOAD, 4) .attr(DownloadAbAttr), - new Ability(Abilities.IRON_FIST, "Iron Fist", "Powers up punching moves.", 4) + new Ability(Abilities.IRON_FIST, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.PUNCHING_MOVE), 1.2), - new Ability(Abilities.POISON_HEAL, "Poison Heal (N)", "Restores HP if the Pokémon is poisoned instead of losing HP.", 4), - new Ability(Abilities.ADAPTABILITY, "Adaptability", "Powers up moves of the same type as the Pokémon.", 4) + new Ability(Abilities.POISON_HEAL, 4) + .unimplemented(), + new Ability(Abilities.ADAPTABILITY, 4) .attr(StabBoostAbAttr), - new Ability(Abilities.SKILL_LINK, "Skill Link", "Maximizes the number of times multistrike moves hit.", 4) + new Ability(Abilities.SKILL_LINK, 4) .attr(MaxMultiHitAbAttr), - new Ability(Abilities.HYDRATION, "Hydration", "Heals status conditions if it's raining.", 4) + new Ability(Abilities.HYDRATION, 4) .attr(PostTurnResetStatusAbAttr) .condition(getWeatherCondition(WeatherType.RAIN, WeatherType.HEAVY_RAIN)), - new Ability(Abilities.SOLAR_POWER, "Solar Power", "Boosts the Sp. Atk stat in harsh sunlight, but HP decreases every turn.", 4) + new Ability(Abilities.SOLAR_POWER, 4) .attr(PostWeatherLapseDamageAbAttr, 2, WeatherType.SUNNY, WeatherType.HARSH_SUN) .attr(BattleStatMultiplierAbAttr, BattleStat.SPATK, 1.5) .condition(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN)), - new Ability(Abilities.QUICK_FEET, "Quick Feet", "Boosts the Speed stat if the Pokémon has a status condition.", 4) + new Ability(Abilities.QUICK_FEET, 4) .conditionalAttr(pokemon => pokemon.status ? pokemon.status.effect === StatusEffect.PARALYSIS : false, BattleStatMultiplierAbAttr, BattleStat.SPD, 2) .conditionalAttr(pokemon => !!pokemon.status, BattleStatMultiplierAbAttr, BattleStat.SPD, 1.5), - new Ability(Abilities.NORMALIZE, "Normalize", "All the Pokémon's moves become Normal type. The power of those moves is boosted a little.", 4) + new Ability(Abilities.NORMALIZE, 4) .attr(MoveTypeChangeAttr, Type.NORMAL, 1.2, (user, target, move) => move.id !== Moves.HIDDEN_POWER && move.id !== Moves.WEATHER_BALL && move.id !== Moves.NATURAL_GIFT && move.id !== Moves.JUDGMENT && move.id !== Moves.TECHNO_BLAST), - new Ability(Abilities.SNIPER, "Sniper (N)", "Powers up moves if they become critical hits when attacking.", 4), - new Ability(Abilities.MAGIC_GUARD, "Magic Guard", "The Pokémon only takes damage from attacks.", 4) + new Ability(Abilities.SNIPER, 4) + .unimplemented(), + new Ability(Abilities.MAGIC_GUARD, 4) .attr(BlockNonDirectDamageAbAttr), - new Ability(Abilities.NO_GUARD, "No Guard", "The Pokémon employs no-guard tactics to ensure incoming and outgoing attacks always land.", 4) + new Ability(Abilities.NO_GUARD, 4) .attr(AlwaysHitAbAttr) .attr(DoubleBattleChanceAbAttr), - new Ability(Abilities.STALL, "Stall (N)", "The Pokémon moves after all other Pokémon do.", 4), - new Ability(Abilities.TECHNICIAN, "Technician", "Powers up the Pokémon's weaker moves.", 4) + new Ability(Abilities.STALL, 4) + .unimplemented(), + new Ability(Abilities.TECHNICIAN, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => move.power <= 60, 1.5), - new Ability(Abilities.LEAF_GUARD, "Leaf Guard", "Prevents status conditions in harsh sunlight.", 4) + new Ability(Abilities.LEAF_GUARD, 4) .attr(StatusEffectImmunityAbAttr) .condition(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN)) .ignorable(), - new Ability(Abilities.KLUTZ, "Klutz (N)", "The Pokémon can't use any held items.", 4), - new Ability(Abilities.MOLD_BREAKER, "Mold Breaker", "Moves can be used on the target regardless of its Abilities.", 4) + new Ability(Abilities.KLUTZ, 4) + .unimplemented(), + new Ability(Abilities.MOLD_BREAKER, 4) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' breaks the mold!')) .attr(MoveAbilityBypassAbAttr), - new Ability(Abilities.SUPER_LUCK, "Super Luck (P)", "The Pokémon is so lucky that the critical-hit ratios of its moves are boosted.", 4) - .attr(BonusCritAbAttr), - new Ability(Abilities.AFTERMATH, "Aftermath", "Damages the attacker if it contacts the Pokémon with a finishing hit.", 4) + new Ability(Abilities.SUPER_LUCK, 4) + .attr(BonusCritAbAttr) + .partial(), + new Ability(Abilities.AFTERMATH, 4) .attr(PostFaintContactDamageAbAttr,4) .bypassFaint(), - new Ability(Abilities.ANTICIPATION, "Anticipation", "The Pokémon can sense an opposing Pokémon's dangerous moves.", 4) + new Ability(Abilities.ANTICIPATION, 4) .conditionalAttr(getAnticipationCondition(), PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' shuddered!')), - new Ability(Abilities.FOREWARN, "Forewarn (N)", "When it enters a battle, the Pokémon can tell one of the moves an opposing Pokémon has.", 4), - new Ability(Abilities.UNAWARE, "Unaware", "When attacking, the Pokémon ignores the target Pokémon's stat changes.", 4) + new Ability(Abilities.FOREWARN, 4) + .unimplemented(), + new Ability(Abilities.UNAWARE, 4) .attr(IgnoreOpponentStatChangesAbAttr) .ignorable(), - new Ability(Abilities.TINTED_LENS, "Tinted Lens", "The Pokémon can use \"not very effective\" moves to deal regular damage.", 4) + new Ability(Abilities.TINTED_LENS, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type) <= 0.5, 2), - new Ability(Abilities.FILTER, "Filter", "Reduces the power of supereffective attacks taken.", 4) + new Ability(Abilities.FILTER, 4) .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 0.75) .ignorable(), - new Ability(Abilities.SLOW_START, "Slow Start", "For five turns, the Pokémon's Attack and Speed stats are halved.", 4) + new Ability(Abilities.SLOW_START, 4) .attr(PostSummonAddBattlerTagAbAttr, BattlerTagType.SLOW_START, 5), - new Ability(Abilities.SCRAPPY, "Scrappy (N)", "The Pokémon can hit Ghost-type Pokémon with Normal- and Fighting-type moves.", 4), - new Ability(Abilities.STORM_DRAIN, "Storm Drain", "Draws in all Water-type moves. Instead of being hit by Water-type moves, it boosts its Sp. Atk.", 4) + new Ability(Abilities.SCRAPPY, 4) + .unimplemented(), + new Ability(Abilities.STORM_DRAIN, 4) .attr(RedirectTypeMoveAbAttr, Type.WATER) .attr(TypeImmunityStatChangeAbAttr, Type.WATER, BattleStat.SPATK, 1) .ignorable(), - new Ability(Abilities.ICE_BODY, "Ice Body", "The Pokémon gradually regains HP in snow.", 4) + new Ability(Abilities.ICE_BODY, 4) .attr(BlockWeatherDamageAttr, WeatherType.HAIL) .attr(PostWeatherLapseHealAbAttr, 1, WeatherType.HAIL, WeatherType.SNOW), - new Ability(Abilities.SOLID_ROCK, "Solid Rock", "Reduces the power of supereffective attacks taken.", 4) + new Ability(Abilities.SOLID_ROCK, 4) .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 0.75) .ignorable(), - new Ability(Abilities.SNOW_WARNING, "Snow Warning", "The Pokémon makes it snow when it enters a battle.", 4) + new Ability(Abilities.SNOW_WARNING, 4) .attr(PostSummonWeatherChangeAbAttr, WeatherType.SNOW) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SNOW), - new Ability(Abilities.HONEY_GATHER, "Honey Gather (N)", "The Pokémon may gather Honey after a battle.", 4), - new Ability(Abilities.FRISK, "Frisk (N)", "When it enters a battle, the Pokémon can check an opposing Pokémon's held item.", 4), - new Ability(Abilities.RECKLESS, "Reckless", "Powers up moves that have recoil damage.", 4) + new Ability(Abilities.HONEY_GATHER, 4) + .unimplemented(), + new Ability(Abilities.FRISK, 4) + .unimplemented(), + new Ability(Abilities.RECKLESS, 4) .attr(MovePowerBoostAbAttr, (user, target, move) => move.getAttrs(RecoilAttr).length && move.id !== Moves.STRUGGLE, 1.2), - new Ability(Abilities.MULTITYPE, "Multitype (N)", "Changes the Pokémon's type to match the Plate or Z-Crystal it holds.", 4) + new Ability(Abilities.MULTITYPE, 4) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) - .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.FLOWER_GIFT, "Flower Gift (P)", "Boosts the Attack and Sp. Def stats of itself and allies in harsh sunlight.", 4) + .attr(NoFusionAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.FLOWER_GIFT, 4) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.ATK, 1.5) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY || WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.SPDEF, 1.5) .attr(UncopiableAbilityAbAttr) .attr(NoFusionAbilityAbAttr) - .ignorable(), - new Ability(Abilities.BAD_DREAMS, "Bad Dreams (N)", "Reduces the HP of sleeping opposing Pokémon.", 4), - new Ability(Abilities.PICKPOCKET, "Pickpocket", "Steals an item from an attacker that made direct contact.", 5) + .ignorable() + .partial(), + new Ability(Abilities.BAD_DREAMS, 4) + .unimplemented(), + new Ability(Abilities.PICKPOCKET, 5) .attr(PostDefendStealHeldItemAbAttr, (target, user, move) => move.hasFlag(MoveFlags.MAKES_CONTACT)), - new Ability(Abilities.SHEER_FORCE, "Sheer Force (N)", "Removes additional effects to increase the power of moves when attacking.", 5), - new Ability(Abilities.CONTRARY, "Contrary", "Makes stat changes have an opposite effect.", 5) + new Ability(Abilities.SHEER_FORCE, 5) + .unimplemented(), + new Ability(Abilities.CONTRARY, 5) .attr(StatChangeMultiplierAbAttr, -1) .ignorable(), - new Ability(Abilities.UNNERVE, "Unnerve", "Unnerves opposing Pokémon and makes them unable to eat Berries.", 5) + new Ability(Abilities.UNNERVE, 5) .attr(PreventBerryUseAbAttr), - new Ability(Abilities.DEFIANT, "Defiant", "Boosts the Pokémon's Attack stat sharply when its stats are lowered.", 5) + new Ability(Abilities.DEFIANT, 5) .attr(PostStatChangeStatChangeAbAttr, (target, statsChanged, levels) => levels < 0, [BattleStat.ATK], 2), - new Ability(Abilities.DEFEATIST, "Defeatist", "Halves the Pokémon's Attack and Sp. Atk stats when its HP becomes half or less.", 5) + new Ability(Abilities.DEFEATIST, 5) .attr(BattleStatMultiplierAbAttr, BattleStat.ATK, 0.5) .attr(BattleStatMultiplierAbAttr, BattleStat.SPATK, 0.5) .condition((pokemon) => pokemon.getHpRatio() <= 0.5), - new Ability(Abilities.CURSED_BODY, "Cursed Body (N)", "May disable a move used on the Pokémon.", 5), - new Ability(Abilities.HEALER, "Healer (N)", "Sometimes heals an ally's status condition.", 5), - new Ability(Abilities.FRIEND_GUARD, "Friend Guard (N)", "Reduces damage done to allies.", 5) - .ignorable(), - new Ability(Abilities.WEAK_ARMOR, "Weak Armor", "Physical attacks to the Pokémon lower its Defense stat but sharply raise its Speed stat.", 5) + new Ability(Abilities.CURSED_BODY, 5) + .unimplemented(), + new Ability(Abilities.HEALER, 5) + .unimplemented(), + new Ability(Abilities.FRIEND_GUARD, 5) + .ignorable() + .unimplemented(), + new Ability(Abilities.WEAK_ARMOR, 5) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, BattleStat.DEF, -1) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, BattleStat.SPD, 2), - new Ability(Abilities.HEAVY_METAL, "Heavy Metal", "Doubles the Pokémon's weight.", 5) + new Ability(Abilities.HEAVY_METAL, 5) .attr(WeightMultiplierAbAttr, 2) .ignorable(), - new Ability(Abilities.LIGHT_METAL, "Light Metal", "Halves the Pokémon's weight.", 5) + new Ability(Abilities.LIGHT_METAL, 5) .attr(WeightMultiplierAbAttr, 0.5) .ignorable(), - new Ability(Abilities.MULTISCALE, "Multiscale", "Reduces the amount of damage the Pokémon takes while its HP is full.", 5) + new Ability(Abilities.MULTISCALE, 5) .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getHpRatio() === 1, 0.5) .ignorable(), - new Ability(Abilities.TOXIC_BOOST, "Toxic Boost", "Powers up physical attacks when the Pokémon is poisoned.", 5) + new Ability(Abilities.TOXIC_BOOST, 5) .attr(MovePowerBoostAbAttr, (user, target, move) => move.category === MoveCategory.PHYSICAL && (user.status?.effect === StatusEffect.POISON || user.status?.effect === StatusEffect.TOXIC), 1.5), - new Ability(Abilities.FLARE_BOOST, "Flare Boost", "Powers up special attacks when the Pokémon is burned.", 5) + new Ability(Abilities.FLARE_BOOST, 5) .attr(MovePowerBoostAbAttr, (user, target, move) => move.category === MoveCategory.SPECIAL && user.status?.effect === StatusEffect.BURN, 1.5), - new Ability(Abilities.HARVEST, "Harvest (N)", "May create another Berry after one is used.", 5), - new Ability(Abilities.TELEPATHY, "Telepathy (N)", "Anticipates an ally's attack and dodges it.", 5) - .ignorable(), - new Ability(Abilities.MOODY, "Moody", "Raises one stat sharply and lowers another every turn.", 5) + new Ability(Abilities.HARVEST, 5) + .unimplemented(), + new Ability(Abilities.TELEPATHY, 5) + .ignorable() + .unimplemented(), + new Ability(Abilities.MOODY, 5) .attr(PostTurnStatChangeAbAttr, BattleStat.RAND, 2) .attr(PostTurnStatChangeAbAttr, BattleStat.RAND, -1), - new Ability(Abilities.OVERCOAT, "Overcoat", "Protects the Pokémon from things like sand, hail, and powder.", 5) + new Ability(Abilities.OVERCOAT, 5) .attr(BlockWeatherDamageAttr) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.getMove().hasFlag(MoveFlags.POWDER_MOVE)) .ignorable(), - new Ability(Abilities.POISON_TOUCH, "Poison Touch", "May poison a target when the Pokémon makes contact.", 5) + new Ability(Abilities.POISON_TOUCH, 5) .attr(PostAttackContactApplyStatusEffectAbAttr, 30, StatusEffect.POISON), - new Ability(Abilities.REGENERATOR, "Regenerator", "Restores a little HP when withdrawn from battle.", 5) + new Ability(Abilities.REGENERATOR, 5) .attr(PreSwitchOutHealAbAttr), - new Ability(Abilities.BIG_PECKS, "Big Pecks", "Protects the Pokémon from Defense-lowering effects.", 5) + new Ability(Abilities.BIG_PECKS, 5) .attr(ProtectStatAbAttr, BattleStat.DEF) .ignorable(), - new Ability(Abilities.SAND_RUSH, "Sand Rush", "Boosts the Pokémon's Speed stat in a sandstorm.", 5) + new Ability(Abilities.SAND_RUSH, 5) .attr(BattleStatMultiplierAbAttr, BattleStat.SPD, 2) .attr(BlockWeatherDamageAttr, WeatherType.SANDSTORM) .condition(getWeatherCondition(WeatherType.SANDSTORM)), - new Ability(Abilities.WONDER_SKIN, "Wonder Skin (N)", "Makes status moves more likely to miss.", 5) - .ignorable(), - new Ability(Abilities.ANALYTIC, "Analytic (N)", "Boosts move power when the Pokémon moves last.", 5), - new Ability(Abilities.ILLUSION, "Illusion (N)", "Comes out disguised as the Pokémon in the party's last spot.", 5) + new Ability(Abilities.WONDER_SKIN, 5) + .ignorable() + .unimplemented(), + new Ability(Abilities.ANALYTIC, 5) + .unimplemented(), + new Ability(Abilities.ILLUSION, 5) .attr(UncopiableAbilityAbAttr) - .attr(UnswappableAbilityAbAttr), - new Ability(Abilities.IMPOSTER, "Imposter", "The Pokémon transforms itself into the Pokémon it's facing.", 5) + .attr(UnswappableAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.IMPOSTER, 5) .attr(PostSummonTransformAbAttr) .attr(UncopiableAbilityAbAttr), - new Ability(Abilities.INFILTRATOR, "Infiltrator (N)", "Passes through the opposing Pokémon's barrier, substitute, and the like and strikes.", 5), - new Ability(Abilities.MUMMY, "Mummy", "Contact with the Pokémon changes the attacker's Ability to Mummy.", 5) + new Ability(Abilities.INFILTRATOR, 5) + .unimplemented(), + new Ability(Abilities.MUMMY, 5) .attr(PostDefendAbilityGiveAbAttr) .bypassFaint(), - new Ability(Abilities.MOXIE, "Moxie", "The Pokémon shows moxie, and that boosts the Attack stat after knocking out any Pokémon.", 5) + new Ability(Abilities.MOXIE, 5) .attr(PostVictoryStatChangeAbAttr, BattleStat.ATK, 1), - new Ability(Abilities.JUSTIFIED, "Justified", "Being hit by a Dark-type move boosts the Attack stat of the Pokémon, for justice.", 5) + new Ability(Abilities.JUSTIFIED, 5) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.type === Type.DARK && move.category !== MoveCategory.STATUS, BattleStat.ATK, 1), - new Ability(Abilities.RATTLED, "Rattled (P)", "Intimidate or being hit by a Dark-, Ghost-, or Bug-type move will scare the Pokémon and boost its Speed stat.", 5) + new Ability(Abilities.RATTLED, 5) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS && (move.type === Type.DARK || move.type === Type.BUG || - move.type === Type.GHOST), BattleStat.SPD, 1), - new Ability(Abilities.MAGIC_BOUNCE, "Magic Bounce (N)", "Reflects status moves instead of getting hit by them.", 5) - .ignorable(), - new Ability(Abilities.SAP_SIPPER, "Sap Sipper", "Boosts the Attack stat if hit by a Grass-type move instead of taking damage.", 5) + move.type === Type.GHOST), BattleStat.SPD, 1) + .partial(), + new Ability(Abilities.MAGIC_BOUNCE, 5) + .ignorable() + .unimplemented(), + new Ability(Abilities.SAP_SIPPER, 5) .attr(TypeImmunityStatChangeAbAttr, Type.GRASS, BattleStat.ATK, 1) .ignorable(), - new Ability(Abilities.PRANKSTER, "Prankster", "Gives priority to a status move.", 5) + new Ability(Abilities.PRANKSTER, 5) .attr(IncrementMovePriorityAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS), - new Ability(Abilities.SAND_FORCE, "Sand Force", "Boosts the power of Rock-, Ground-, and Steel-type moves in a sandstorm.", 5) + new Ability(Abilities.SAND_FORCE, 5) .attr(MoveTypePowerBoostAbAttr, Type.ROCK, 1.3) .attr(MoveTypePowerBoostAbAttr, Type.GROUND, 1.3) .attr(MoveTypePowerBoostAbAttr, Type.STEEL, 1.3) .attr(BlockWeatherDamageAttr, WeatherType.SANDSTORM) .condition(getWeatherCondition(WeatherType.SANDSTORM)), - new Ability(Abilities.IRON_BARBS, "Iron Barbs", "Inflicts damage on the attacker upon contact with iron barbs.", 5) + new Ability(Abilities.IRON_BARBS, 5) .attr(PostDefendContactDamageAbAttr, 8) .bypassFaint(), - new Ability(Abilities.ZEN_MODE, "Zen Mode", "Changes the Pokémon's shape when HP is half or less.", 5) + new Ability(Abilities.ZEN_MODE, 5) .attr(PostBattleInitFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 1 : 0) .attr(PostSummonFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 1 : 0) .attr(PostTurnFormChangeAbAttr, p => p.getHpRatio() <= 0.5 ? 1 : 0) @@ -2832,115 +2884,130 @@ export function initAbilities() { .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.VICTORY_STAR, "Victory Star (P)", "Boosts the accuracy of its allies and itself.", 5) - .attr(BattleStatMultiplierAbAttr, BattleStat.ACC, 1.1), - new Ability(Abilities.TURBOBLAZE, "Turboblaze", "Moves can be used on the target regardless of its Abilities.", 5) + new Ability(Abilities.VICTORY_STAR, 5) + .attr(BattleStatMultiplierAbAttr, BattleStat.ACC, 1.1) + .partial(), + new Ability(Abilities.TURBOBLAZE, 5) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' is radiating a blazing aura!')) .attr(MoveAbilityBypassAbAttr), - new Ability(Abilities.TERAVOLT, "Teravolt", "Moves can be used on the target regardless of its Abilities.", 5) + new Ability(Abilities.TERAVOLT, 5) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' is radiating a bursting aura!')) .attr(MoveAbilityBypassAbAttr), - new Ability(Abilities.AROMA_VEIL, "Aroma Veil (N)", "Protects itself and its allies from attacks that limit their move choices.", 6) - .ignorable(), - new Ability(Abilities.FLOWER_VEIL, "Flower Veil (N)", "Ally Grass-type Pokémon are protected from status conditions and the lowering of their stats.", 6) - .ignorable(), - new Ability(Abilities.CHEEK_POUCH, "Cheek Pouch (N)", "Restores HP as well when the Pokémon eats a Berry.", 6), - new Ability(Abilities.PROTEAN, "Protean (N)", "Changes the Pokémon's type to the type of the move it's about to use.", 6), - new Ability(Abilities.FUR_COAT, "Fur Coat", "Halves the damage from physical moves.", 6) + new Ability(Abilities.AROMA_VEIL, 6) + .ignorable() + .unimplemented(), + new Ability(Abilities.FLOWER_VEIL, 6) + .ignorable() + .unimplemented(), + new Ability(Abilities.CHEEK_POUCH, 6) + .unimplemented(), + new Ability(Abilities.PROTEAN, 6) + .unimplemented(), + new Ability(Abilities.FUR_COAT, 6) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, 0.5) .ignorable(), - new Ability(Abilities.MAGICIAN, "Magician", "The Pokémon steals the held item of a Pokémon it hits with a move.", 6) + new Ability(Abilities.MAGICIAN, 6) .attr(PostAttackStealHeldItemAbAttr), - new Ability(Abilities.BULLETPROOF, "Bulletproof", "Protects the Pokémon from some ball and bomb moves.", 6) + new Ability(Abilities.BULLETPROOF, 6) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.getMove().hasFlag(MoveFlags.BALLBOMB_MOVE)) .ignorable(), - new Ability(Abilities.COMPETITIVE, "Competitive", "Boosts the Sp. Atk stat sharply when a stat is lowered.", 6) + new Ability(Abilities.COMPETITIVE, 6) .attr(PostStatChangeStatChangeAbAttr, (target, statsChanged, levels) => levels < 0, [BattleStat.SPATK], 2), - new Ability(Abilities.STRONG_JAW, "Strong Jaw", "The Pokémon's strong jaw boosts the power of its biting moves.", 6) + new Ability(Abilities.STRONG_JAW, 6) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.BITING_MOVE), 1.5), - new Ability(Abilities.REFRIGERATE, "Refrigerate", "Normal-type moves become Ice-type moves. The power of those moves is boosted a little.", 6) + new Ability(Abilities.REFRIGERATE, 6) .attr(MoveTypeChangePowerMultiplierAbAttr, Type.NORMAL, Type.ICE, 1.2), - new Ability(Abilities.SWEET_VEIL, "Sweet Veil (P)", "Prevents itself and ally Pokémon from falling asleep.", 6) + new Ability(Abilities.SWEET_VEIL, 6) .attr(StatusEffectImmunityAbAttr, StatusEffect.SLEEP) .attr(BattlerTagImmunityAbAttr, BattlerTagType.DROWSY) - .ignorable(), - new Ability(Abilities.STANCE_CHANGE, "Stance Change", "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.", 6) + .ignorable() + .partial(), + new Ability(Abilities.STANCE_CHANGE, 6) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.GALE_WINGS, "Gale Wings", "Gives priority to Flying-type moves when the Pokémon's HP is full.", 6) + new Ability(Abilities.GALE_WINGS, 6) .attr(IncrementMovePriorityAbAttr, (pokemon, move) => pokemon.getHpRatio() === 1 && move.type === Type.FLYING), - new Ability(Abilities.MEGA_LAUNCHER, "Mega Launcher", "Powers up aura and pulse moves.", 6) + new Ability(Abilities.MEGA_LAUNCHER, 6) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.PULSE_MOVE), 1.5), - new Ability(Abilities.GRASS_PELT, "Grass Pelt", "Boosts the Pokémon's Defense stat on Grassy Terrain.", 6) + new Ability(Abilities.GRASS_PELT, 6) .conditionalAttr(getTerrainCondition(TerrainType.GRASSY), BattleStatMultiplierAbAttr, BattleStat.DEF, 1.5) .ignorable(), - new Ability(Abilities.SYMBIOSIS, "Symbiosis (N)", "The Pokémon passes its item to an ally that has used up an item.", 6), - new Ability(Abilities.TOUGH_CLAWS, "Tough Claws", "Powers up moves that make direct contact.", 6) + new Ability(Abilities.SYMBIOSIS, 6) + .unimplemented(), + new Ability(Abilities.TOUGH_CLAWS, 6) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), 1.3), - new Ability(Abilities.PIXILATE, "Pixilate", "Normal-type moves become Fairy-type moves. The power of those moves is boosted a little.", 6) + new Ability(Abilities.PIXILATE, 6) .attr(MoveTypeChangePowerMultiplierAbAttr, Type.NORMAL, Type.FAIRY, 1.2), - new Ability(Abilities.GOOEY, "Gooey", "Contact with the Pokémon lowers the attacker's Speed stat.", 6) + new Ability(Abilities.GOOEY, 6) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), BattleStat.SPD, -1, false), - new Ability(Abilities.AERILATE, "Aerilate", "Normal-type moves become Flying-type moves. The power of those moves is boosted a little.", 6) + new Ability(Abilities.AERILATE, 6) .attr(MoveTypeChangePowerMultiplierAbAttr, Type.NORMAL, Type.FLYING, 1.2), - new Ability(Abilities.PARENTAL_BOND, "Parental Bond (N)", "Parent and child each attacks.", 6), - new Ability(Abilities.DARK_AURA, "Dark Aura", "Powers up each Pokémon's Dark-type moves.", 6) + new Ability(Abilities.PARENTAL_BOND, 6) + .unimplemented(), + new Ability(Abilities.DARK_AURA, 6) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' is radiating a Dark Aura!')) .attr(FieldMoveTypePowerBoostAbAttr, Type.DARK, 4 / 3), - new Ability(Abilities.FAIRY_AURA, "Fairy Aura", "Powers up each Pokémon's Fairy-type moves.", 6) + new Ability(Abilities.FAIRY_AURA, 6) .attr(PostSummonMessageAbAttr, (pokemon: Pokemon) => getPokemonMessage(pokemon, ' is radiating a Fairy Aura!')) .attr(FieldMoveTypePowerBoostAbAttr, Type.FAIRY, 4 / 3), - new Ability(Abilities.AURA_BREAK, "Aura Break (N)", "The effects of \"Aura\" Abilities are reversed to lower the power of affected moves.", 6) - .ignorable(), - new Ability(Abilities.PRIMORDIAL_SEA, "Primordial Sea", "The Pokémon changes the weather to nullify Fire-type attacks.", 6) + new Ability(Abilities.AURA_BREAK, 6) + .ignorable() + .unimplemented(), + new Ability(Abilities.PRIMORDIAL_SEA, 6) .attr(PostSummonWeatherChangeAbAttr, WeatherType.HEAVY_RAIN) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HEAVY_RAIN), - new Ability(Abilities.DESOLATE_LAND, "Desolate Land", "The Pokémon changes the weather to nullify Water-type attacks.", 6) + new Ability(Abilities.DESOLATE_LAND, 6) .attr(PostSummonWeatherChangeAbAttr, WeatherType.HARSH_SUN) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.HARSH_SUN), - new Ability(Abilities.DELTA_STREAM, "Delta Stream", "The Pokémon changes the weather to eliminate all of the Flying type's weaknesses.", 6) + new Ability(Abilities.DELTA_STREAM, 6) .attr(PostSummonWeatherChangeAbAttr, WeatherType.STRONG_WINDS) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.STRONG_WINDS), - new Ability(Abilities.STAMINA, "Stamina", "Boosts the Defense stat when hit by an attack.", 7) + new Ability(Abilities.STAMINA, 7) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, BattleStat.DEF, 1), - new Ability(Abilities.WIMP_OUT, "Wimp Out (N)", "The Pokémon cowardly switches out when its HP becomes half or less.", 7), - new Ability(Abilities.EMERGENCY_EXIT, "Emergency Exit (N)", "The Pokémon, sensing danger, switches out when its HP becomes half or less.", 7), - new Ability(Abilities.WATER_COMPACTION, "Water Compaction", "Boosts the Pokémon's Defense stat sharply when hit by a Water-type move.", 7) + new Ability(Abilities.WIMP_OUT, 7) + .unimplemented(), + new Ability(Abilities.EMERGENCY_EXIT, 7) + .unimplemented(), + new Ability(Abilities.WATER_COMPACTION, 7) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.type === Type.WATER, BattleStat.DEF, 2), - new Ability(Abilities.MERCILESS, "Merciless (N)", "The Pokémon's attacks become critical hits if the target is poisoned.", 7), - new Ability(Abilities.SHIELDS_DOWN, "Shields Down (P)", "When its HP becomes half or less, the Pokémon's shell breaks and it becomes aggressive.", 7) + new Ability(Abilities.MERCILESS, 7) + .unimplemented(), + new Ability(Abilities.SHIELDS_DOWN, 7) .attr(PostBattleInitFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0)) .attr(PostSummonFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0)) .attr(PostTurnFormChangeAbAttr, p => p.formIndex % 7 + (p.getHpRatio() <= 0.5 ? 7 : 0)) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) - .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.STAKEOUT, "Stakeout (N)", "Doubles the damage dealt to the target's replacement if the target switches out.", 7), - new Ability(Abilities.WATER_BUBBLE, "Water Bubble", "Lowers the power of Fire-type moves done to the Pokémon and prevents the Pokémon from getting a burn.", 7) + .attr(NoFusionAbilityAbAttr) + .partial(), + new Ability(Abilities.STAKEOUT, 7) + .unimplemented(), + new Ability(Abilities.WATER_BUBBLE, 7) .attr(ReceivedTypeDamageMultiplierAbAttr, Type.FIRE, 0.5) .attr(MoveTypePowerBoostAbAttr, Type.WATER, 1) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .ignorable(), - new Ability(Abilities.STEELWORKER, "Steelworker", "Powers up Steel-type moves.", 7) + new Ability(Abilities.STEELWORKER, 7) .attr(MoveTypePowerBoostAbAttr, Type.STEEL), - new Ability(Abilities.BERSERK, "Berserk (N)", "Boosts the Pokémon's Sp. Atk stat when it takes a hit that causes its HP to become half or less.", 7), - new Ability(Abilities.SLUSH_RUSH, "Slush Rush", "Boosts the Pokémon's Speed stat in snow.", 7) + new Ability(Abilities.BERSERK, 7) + .unimplemented(), + new Ability(Abilities.SLUSH_RUSH, 7) .attr(BattleStatMultiplierAbAttr, BattleStat.SPD, 2) .condition(getWeatherCondition(WeatherType.HAIL, WeatherType.SNOW)), - new Ability(Abilities.LONG_REACH, "Long Reach", "The Pokémon uses its moves without making contact with the target.", 7) + new Ability(Abilities.LONG_REACH, 7) .attr(IgnoreContactAbAttr), - new Ability(Abilities.LIQUID_VOICE, "Liquid Voice", "All sound-based moves become Water-type moves.", 7) + new Ability(Abilities.LIQUID_VOICE, 7) .attr(MoveTypeChangeAttr, Type.WATER, 1, (user, target, move) => move.hasFlag(MoveFlags.SOUND_BASED)), - new Ability(Abilities.TRIAGE, "Triage", "Gives priority to a healing move.", 7) + new Ability(Abilities.TRIAGE, 7) .attr(IncrementMovePriorityAbAttr, (pokemon, move) => move.hasFlag(MoveFlags.TRIAGE_MOVE), 3), - new Ability(Abilities.GALVANIZE, "Galvanize", "Normal-type moves become Electric-type moves. The power of those moves is boosted a little.", 7) + new Ability(Abilities.GALVANIZE, 7) .attr(MoveTypeChangePowerMultiplierAbAttr, Type.NORMAL, Type.ELECTRIC, 1.2), - new Ability(Abilities.SURGE_SURFER, "Surge Surfer", "Doubles the Pokémon's Speed stat on Electric Terrain.", 7) + new Ability(Abilities.SURGE_SURFER, 7) .conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), BattleStatMultiplierAbAttr, BattleStat.SPD, 2), - new Ability(Abilities.SCHOOLING, "Schooling", "When it has a lot of HP, the Pokémon forms a powerful school. It stops schooling when its HP is low.", 7) + new Ability(Abilities.SCHOOLING, 7) .attr(PostBattleInitFormChangeAbAttr, p => p.level < 20 || p.getHpRatio() <= 0.25 ? 0 : 1) .attr(PostSummonFormChangeAbAttr, p => p.level < 20 || p.getHpRatio() <= 0.25 ? 0 : 1) .attr(PostTurnFormChangeAbAttr, p => p.level < 20 || p.getHpRatio() <= 0.25 ? 0 : 1) @@ -2948,7 +3015,7 @@ export function initAbilities() { .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.DISGUISE, "Disguise (P)", "Once per battle, the shroud that covers the Pokémon can protect it from an attack.", 7) + new Ability(Abilities.DISGUISE, 7) .attr(PreDefendMovePowerToOneAbAttr, (target, user, move) => target.formIndex == 0 && target.getAttackTypeEffectiveness(move.type) > 0) .attr(PostSummonFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1) .attr(PostBattleInitFormChangeAbAttr, p => p.battleData.hitCount === 0 ? 0 : 1) @@ -2960,46 +3027,54 @@ export function initAbilities() { .attr(UnsuppressableAbilityAbAttr) .attr(NoTransformAbilityAbAttr) .attr(NoFusionAbilityAbAttr) - .ignorable(), - new Ability(Abilities.BATTLE_BOND, "Battle Bond (N)", "Defeating an opposing Pokémon strengthens the Pokémon's bond with its Trainer, and it becomes Ash-Greninja. Water Shuriken gets more powerful.", 7) + .ignorable() + .partial(), + new Ability(Abilities.BATTLE_BOND, 7) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) - .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.POWER_CONSTRUCT, "Power Construct (N)", "Other Cells gather to aid when its HP becomes half or less. Then the Pokémon changes its form to Complete Forme.", 7) + .attr(NoFusionAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.POWER_CONSTRUCT, 7) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) - .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.CORROSION, "Corrosion (N)", "The Pokémon can poison the target even if it's a Steel or Poison type.", 7), - new Ability(Abilities.COMATOSE, "Comatose (N)", "It's always drowsing and will never wake up. It can attack without waking up.", 7) + .attr(NoFusionAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.CORROSION, 7) + .unimplemented(), + new Ability(Abilities.COMATOSE, 7) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(UnsuppressableAbilityAbAttr), - new Ability(Abilities.QUEENLY_MAJESTY, "Queenly Majesty", "Its majesty pressures the opposing Pokémon, making it unable to attack using priority moves.", 7) + .attr(UnsuppressableAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.QUEENLY_MAJESTY, 7) .attr(FieldPriorityMoveImmunityAbAttr) .ignorable(), - new Ability(Abilities.INNARDS_OUT, "Innards Out (N)", "Damages the attacker landing the finishing hit by the amount equal to its last HP.", 7), - new Ability(Abilities.DANCER, "Dancer (N)", "When another Pokémon uses a dance move, it can use a dance move following it regardless of its Speed.", 7), - new Ability(Abilities.BATTERY, "Battery (N)", "Powers up ally Pokémon's special moves.", 7), - new Ability(Abilities.FLUFFY, "Fluffy", "Halves the damage taken from moves that make direct contact, but doubles that of Fire-type moves.", 7) + new Ability(Abilities.INNARDS_OUT, 7) + .unimplemented(), + new Ability(Abilities.DANCER, 7) + .unimplemented(), + new Ability(Abilities.BATTERY, 7) + .unimplemented(), + new Ability(Abilities.FLUFFY, 7) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), 0.5) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.type === Type.FIRE, 2) .ignorable(), - new Ability(Abilities.DAZZLING, "Dazzling", "Surprises the opposing Pokémon, making it unable to attack using priority moves.", 7) + new Ability(Abilities.DAZZLING, 7) .attr(FieldPriorityMoveImmunityAbAttr) .ignorable(), - new Ability(Abilities.SOUL_HEART, "Soul-Heart", "Boosts its Sp. Atk stat every time a Pokémon faints.", 7) + new Ability(Abilities.SOUL_HEART, 7) .attr(PostKnockOutStatChangeAbAttr, BattleStat.SPATK, 1), - new Ability(Abilities.TANGLING_HAIR, "Tangling Hair", "Contact with the Pokémon lowers the attacker's Speed stat.", 7) + new Ability(Abilities.TANGLING_HAIR, 7) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.hasFlag(MoveFlags.MAKES_CONTACT), BattleStat.SPD, -1, false), - new Ability(Abilities.RECEIVER, "Receiver", "The Pokémon copies the Ability of a defeated ally.", 7) + new Ability(Abilities.RECEIVER, 7) .attr(CopyFaintedAllyAbilityAbAttr) .attr(UncopiableAbilityAbAttr), - new Ability(Abilities.POWER_OF_ALCHEMY, "Power of Alchemy", "The Pokémon copies the Ability of a defeated ally.", 7) + new Ability(Abilities.POWER_OF_ALCHEMY, 7) .attr(CopyFaintedAllyAbilityAbAttr) .attr(UncopiableAbilityAbAttr), - new Ability(Abilities.BEAST_BOOST, "Beast Boost", "The Pokémon boosts its most proficient stat each time it knocks out a Pokémon.", 7) + new Ability(Abilities.BEAST_BOOST, 7) .attr(PostVictoryStatChangeAbAttr, p => { const battleStats = Utils.getEnumValues(BattleStat).slice(0, -3).map(s => s as BattleStat); let highestBattleStat = 0; @@ -3013,241 +3088,282 @@ export function initAbilities() { }); return highestBattleStatIndex; }, 1), - new Ability(Abilities.RKS_SYSTEM, "RKS System (N)", "Changes the Pokémon's type to match the memory disc it holds.", 7) + new Ability(Abilities.RKS_SYSTEM, 7) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) - .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.ELECTRIC_SURGE, "Electric Surge", "Turns the ground into Electric Terrain when the Pokémon enters a battle.", 7) + .attr(NoFusionAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.ELECTRIC_SURGE, 7) .attr(PostSummonTerrainChangeAbAttr, TerrainType.ELECTRIC) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC), - new Ability(Abilities.PSYCHIC_SURGE, "Psychic Surge", "Turns the ground into Psychic Terrain when the Pokémon enters a battle.", 7) + new Ability(Abilities.PSYCHIC_SURGE, 7) .attr(PostSummonTerrainChangeAbAttr, TerrainType.PSYCHIC) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.PSYCHIC), - new Ability(Abilities.MISTY_SURGE, "Misty Surge", "Turns the ground into Misty Terrain when the Pokémon enters a battle.", 7) + new Ability(Abilities.MISTY_SURGE, 7) .attr(PostSummonTerrainChangeAbAttr, TerrainType.MISTY) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.MISTY), - new Ability(Abilities.GRASSY_SURGE, "Grassy Surge", "Turns the ground into Grassy Terrain when the Pokémon enters a battle.", 7) + new Ability(Abilities.GRASSY_SURGE, 7) .attr(PostSummonTerrainChangeAbAttr, TerrainType.GRASSY) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.GRASSY), - new Ability(Abilities.FULL_METAL_BODY, "Full Metal Body", "Prevents other Pokémon's moves or Abilities from lowering the Pokémon's stats.", 7) + new Ability(Abilities.FULL_METAL_BODY, 7) .attr(ProtectStatAbAttr), - new Ability(Abilities.SHADOW_SHIELD, "Shadow Shield", "Reduces the amount of damage the Pokémon takes while its HP is full.", 7) + new Ability(Abilities.SHADOW_SHIELD, 7) .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getHpRatio() === 1, 0.5), - new Ability(Abilities.PRISM_ARMOR, "Prism Armor", "Reduces the power of supereffective attacks taken.", 7) + new Ability(Abilities.PRISM_ARMOR, 7) .attr(ReceivedMoveDamageMultiplierAbAttr,(target, user, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 0.75), - new Ability(Abilities.NEUROFORCE, "Neuroforce", "Powers up moves that are super effective.", 7) + new Ability(Abilities.NEUROFORCE, 7) .attr(MovePowerBoostAbAttr, (user, target, move) => target.getAttackTypeEffectiveness(move.type) >= 2, 1.25), - new Ability(Abilities.INTREPID_SWORD, "Intrepid Sword", "Boosts the Pokémon's Attack stat when the Pokémon enters a battle.", 8) + new Ability(Abilities.INTREPID_SWORD, 8) .attr(PostSummonStatChangeAbAttr, BattleStat.ATK, 1, true), - new Ability(Abilities.DAUNTLESS_SHIELD, "Dauntless Shield", "Boosts the Pokémon's Defense stat when the Pokémon enters a battle.", 8) + new Ability(Abilities.DAUNTLESS_SHIELD, 8) .attr(PostSummonStatChangeAbAttr, BattleStat.DEF, 1, true), - new Ability(Abilities.LIBERO, "Libero (N)", "Changes the Pokémon's type to the type of the move it's about to use.", 8), - new Ability(Abilities.BALL_FETCH, "Ball Fetch (N)", "The Pokémon will fetch the Poké Ball from the first failed throw of the battle.", 8), - new Ability(Abilities.COTTON_DOWN, "Cotton Down (N)", "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.", 8), - new Ability(Abilities.PROPELLER_TAIL, "Propeller Tail (N)", "Ignores the effects of opposing Pokémon's Abilities and moves that draw in moves.", 8), - new Ability(Abilities.MIRROR_ARMOR, "Mirror Armor (N)", "Bounces back only the stat-lowering effects that the Pokémon receives.", 8) - .ignorable(), - new Ability(Abilities.GULP_MISSILE, "Gulp Missile (N)", "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.", 8) + new Ability(Abilities.LIBERO, 8) + .unimplemented(), + new Ability(Abilities.BALL_FETCH, 8) + .unimplemented(), + new Ability(Abilities.COTTON_DOWN, 8) + .unimplemented(), + new Ability(Abilities.PROPELLER_TAIL, 8) + .unimplemented(), + new Ability(Abilities.MIRROR_ARMOR, 8) + .ignorable() + .unimplemented(), + new Ability(Abilities.GULP_MISSILE, 8) .attr(UnsuppressableAbilityAbAttr) .attr(NoTransformAbilityAbAttr) - .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.STALWART, "Stalwart (N)", "Ignores the effects of opposing Pokémon's Abilities and moves that draw in moves.", 8), - new Ability(Abilities.STEAM_ENGINE, "Steam Engine", "Boosts the Pokémon's Speed stat drastically if hit by a Fire- or Water-type move.", 8) + .attr(NoFusionAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.STALWART, 8) + .unimplemented(), + new Ability(Abilities.STEAM_ENGINE, 8) .attr(PostDefendStatChangeAbAttr, (target, user, move) => (move.type === Type.FIRE || move.type === Type.WATER) && move.category !== MoveCategory.STATUS, BattleStat.SPD, 6), - new Ability(Abilities.PUNK_ROCK, "Punk Rock", "Boosts the power of sound-based moves. The Pokémon also takes half the damage from these kinds of moves.", 8) + new Ability(Abilities.PUNK_ROCK, 8) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SOUND_BASED), 1.3) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.hasFlag(MoveFlags.SOUND_BASED), 0.5) .ignorable(), - new Ability(Abilities.SAND_SPIT, "Sand Spit", "The Pokémon creates a sandstorm when it's hit by an attack.", 8) + new Ability(Abilities.SAND_SPIT, 8) .attr(PostDefendWeatherChangeAbAttr, WeatherType.SANDSTORM), - new Ability(Abilities.ICE_SCALES, "Ice Scales", "The Pokémon is protected by ice scales, which halve the damage taken from special moves.", 8) + new Ability(Abilities.ICE_SCALES, 8) .attr(ReceivedMoveDamageMultiplierAbAttr, (target, user, move) => move.category === MoveCategory.SPECIAL, 0.5) .ignorable(), - new Ability(Abilities.RIPEN, "Ripen", "Ripens Berries and doubles their effect.", 8) + new Ability(Abilities.RIPEN, 8) .attr(DoubleBerryEffectAbAttr), - new Ability(Abilities.ICE_FACE, "Ice Face (N)", "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.", 8) + new Ability(Abilities.ICE_FACE, 8) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) .attr(NoTransformAbilityAbAttr) .attr(NoFusionAbilityAbAttr) - .ignorable(), - new Ability(Abilities.POWER_SPOT, "Power Spot (N)", "Just being next to the Pokémon powers up moves.", 8), - new Ability(Abilities.MIMICRY, "Mimicry (N)", "Changes the Pokémon's type depending on the terrain.", 8), - new Ability(Abilities.SCREEN_CLEANER, "Screen Cleaner (N)", "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.", 8), - new Ability(Abilities.STEELY_SPIRIT, "Steely Spirit (N)", "Powers up ally Pokémon's Steel-type moves.", 8), - new Ability(Abilities.PERISH_BODY, "Perish Body (N)", "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.", 8), - new Ability(Abilities.WANDERING_SPIRIT, "Wandering Spirit (P)", "The Pokémon exchanges Abilities with a Pokémon that hits it with a move that makes direct contact.", 8) + .ignorable() + .unimplemented(), + new Ability(Abilities.POWER_SPOT, 8) + .unimplemented(), + new Ability(Abilities.MIMICRY, 8) + .unimplemented(), + new Ability(Abilities.SCREEN_CLEANER, 8) + .unimplemented(), + new Ability(Abilities.STEELY_SPIRIT, 8) + .unimplemented(), + new Ability(Abilities.PERISH_BODY, 8) + .unimplemented(), + new Ability(Abilities.WANDERING_SPIRIT, 8) .attr(PostDefendAbilitySwapAbAttr) - .bypassFaint(), - new Ability(Abilities.GORILLA_TACTICS, "Gorilla Tactics (N)", "Boosts the Pokémon's Attack stat but only allows the use of the first selected move.", 8), - new Ability(Abilities.NEUTRALIZING_GAS, "Neutralizing Gas (P)", "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.", 8) + .bypassFaint() + .partial(), + new Ability(Abilities.GORILLA_TACTICS, 8) + .unimplemented(), + new Ability(Abilities.NEUTRALIZING_GAS, 8) .attr(SuppressFieldAbilitiesAbAttr) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.PASTEL_VEIL, "Pastel Veil", "Protects the Pokémon and its ally Pokémon from being poisoned.", 8) + .attr(NoTransformAbilityAbAttr) + .partial(), + new Ability(Abilities.PASTEL_VEIL, 8) .attr(StatusEffectImmunityAbAttr, StatusEffect.POISON, StatusEffect.TOXIC) .ignorable(), - new Ability(Abilities.HUNGER_SWITCH, "Hunger Switch", "The Pokémon changes its form, alternating between its Full Belly Mode and Hangry Mode after the end of each turn.", 8) + new Ability(Abilities.HUNGER_SWITCH, 8) .attr(PostTurnFormChangeAbAttr, p => p.getFormKey ? 0 : 1) .attr(PostTurnFormChangeAbAttr, p => p.getFormKey ? 1 : 0) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(NoTransformAbilityAbAttr) .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.QUICK_DRAW, "Quick Draw (N)", "Enables the Pokémon to move first occasionally.", 8), - new Ability(Abilities.UNSEEN_FIST, "Unseen Fist (N)", "If the Pokémon uses moves that make direct contact, it can attack the target even if the target protects itself.", 8), - new Ability(Abilities.CURIOUS_MEDICINE, "Curious Medicine (N)", "When the Pokémon enters a battle, it scatters medicine from its shell, which removes all stat changes from allies.", 8), - new Ability(Abilities.TRANSISTOR, "Transistor", "Powers up Electric-type moves.", 8) + new Ability(Abilities.QUICK_DRAW, 8) + .unimplemented(), + new Ability(Abilities.UNSEEN_FIST, 8) + .unimplemented(), + new Ability(Abilities.CURIOUS_MEDICINE, 8) + .unimplemented(), + new Ability(Abilities.TRANSISTOR, 8) .attr(MoveTypePowerBoostAbAttr, Type.ELECTRIC), - new Ability(Abilities.DRAGONS_MAW, "Dragon's Maw", "Powers up Dragon-type moves.", 8) + new Ability(Abilities.DRAGONS_MAW, 8) .attr(MoveTypePowerBoostAbAttr, Type.DRAGON), - new Ability(Abilities.CHILLING_NEIGH, "Chilling Neigh", "When the Pokémon knocks out a target, it utters a chilling neigh, which boosts its Attack stat.", 8) + new Ability(Abilities.CHILLING_NEIGH, 8) .attr(PostVictoryStatChangeAbAttr, BattleStat.ATK, 1), - new Ability(Abilities.GRIM_NEIGH, "Grim Neigh", "When the Pokémon knocks out a target, it utters a terrifying neigh, which boosts its Sp. Atk stat.", 8) + new Ability(Abilities.GRIM_NEIGH, 8) .attr(PostVictoryStatChangeAbAttr, BattleStat.SPATK, 1), - new Ability(Abilities.AS_ONE_GLASTRIER, "As One", "This Ability combines the effects of both Calyrex's Unnerve Ability and Glastrier's Chilling Neigh Ability.", 8) + new Ability(Abilities.AS_ONE_GLASTRIER, 8) .attr(PreventBerryUseAbAttr) .attr(PostVictoryStatChangeAbAttr, BattleStat.ATK, 1) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr), - new Ability(Abilities.AS_ONE_SPECTRIER, "As One", "This Ability combines the effects of both Calyrex's Unnerve Ability and Spectrier's Grim Neigh Ability.", 8) + new Ability(Abilities.AS_ONE_SPECTRIER, 8) .attr(PreventBerryUseAbAttr) .attr(PostVictoryStatChangeAbAttr, BattleStat.SPATK, 1) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr), - new Ability(Abilities.LINGERING_AROMA, "Lingering Aroma", "Contact with the Pokémon changes the attacker's Ability to Lingering Aroma.", 9) + new Ability(Abilities.LINGERING_AROMA, 9) .attr(PostDefendAbilityGiveAbAttr) .bypassFaint(), - new Ability(Abilities.SEED_SOWER, "Seed Sower", "Turns the ground into Grassy Terrain when the Pokémon is hit by an attack.", 9) + new Ability(Abilities.SEED_SOWER, 9) .attr(PostDefendTerrainChangeAbAttr, TerrainType.GRASSY), - new Ability(Abilities.THERMAL_EXCHANGE, "Thermal Exchange", "Boosts the Attack stat when the Pokémon is hit by a Fire-type move. The Pokémon also cannot be burned.", 9) + new Ability(Abilities.THERMAL_EXCHANGE, 9) .attr(PostDefendStatChangeAbAttr, (target, user, move) => move.type === Type.FIRE && move.category !== MoveCategory.STATUS, BattleStat.ATK, 1) .attr(StatusEffectImmunityAbAttr, StatusEffect.BURN) .ignorable(), - new Ability(Abilities.ANGER_SHELL, "Anger Shell (N)", "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.", 9), - new Ability(Abilities.PURIFYING_SALT, "Purifying Salt", "The Pokémon's pure salt protects it from status conditions and halves the damage taken from Ghost-type moves.", 9) + new Ability(Abilities.ANGER_SHELL, 9) + .unimplemented(), + new Ability(Abilities.PURIFYING_SALT, 9) .attr(StatusEffectImmunityAbAttr) .attr(ReceivedTypeDamageMultiplierAbAttr, Type.GHOST, 0.5) .ignorable(), - new Ability(Abilities.WELL_BAKED_BODY, "Well-Baked Body", "The Pokémon takes no damage when hit by Fire-type moves. Instead, its Defense stat is sharply boosted.", 9) + new Ability(Abilities.WELL_BAKED_BODY, 9) .attr(TypeImmunityStatChangeAbAttr, Type.FIRE, BattleStat.DEF, 2) .ignorable(), - new Ability(Abilities.WIND_RIDER, "Wind Rider (P)", "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.", 9) + new Ability(Abilities.WIND_RIDER, 9) .attr(MoveImmunityStatChangeAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.getMove().hasFlag(MoveFlags.WIND_MOVE), BattleStat.ATK, 1) - .ignorable(), - new Ability(Abilities.GUARD_DOG, "Guard Dog (N)", "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.", 9) - .ignorable(), - new Ability(Abilities.ROCKY_PAYLOAD, "Rocky Payload", "Powers up Rock-type moves.", 9) + .ignorable() + .partial(), + new Ability(Abilities.GUARD_DOG, 9) + .ignorable() + .unimplemented(), + new Ability(Abilities.ROCKY_PAYLOAD, 9) .attr(MoveTypePowerBoostAbAttr, Type.ROCK), - new Ability(Abilities.WIND_POWER, "Wind Power (P)", "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.", 9) - .attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.hasFlag(MoveFlags.WIND_MOVE), BattlerTagType.CHARGED), - new Ability(Abilities.ZERO_TO_HERO, "Zero to Hero (N)", "The Pokémon transforms into its Hero Form when it switches out.", 9) + new Ability(Abilities.WIND_POWER, 9) + .attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.hasFlag(MoveFlags.WIND_MOVE), BattlerTagType.CHARGED) + .partial(), + new Ability(Abilities.ZERO_TO_HERO, 9) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) .attr(NoTransformAbilityAbAttr) - .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.COMMANDER, "Commander (N)", "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.", 9) + .attr(NoFusionAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.COMMANDER, 9) .attr(UncopiableAbilityAbAttr) - .attr(UnswappableAbilityAbAttr), - new Ability(Abilities.ELECTROMORPHOSIS, "Electromorphosis", "The Pokémon becomes charged when it takes damage, boosting the power of the next Electric-type move the Pokémon uses.", 9) + .attr(UnswappableAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.ELECTROMORPHOSIS, 9) .attr(PostDefendApplyBattlerTagAbAttr, (target, user, move) => move.category !== MoveCategory.STATUS, BattlerTagType.CHARGED), - new Ability(Abilities.PROTOSYNTHESIS, "Protosynthesis", "Boosts the Pokémon's most proficient stat in harsh sunlight or if the Pokémon is holding Booster Energy.", 9) + new Ability(Abilities.PROTOSYNTHESIS, 9) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN), PostSummonAddBattlerTagAbAttr, BattlerTagType.PROTOSYNTHESIS, 0, true) .attr(PostWeatherChangeAddBattlerTagAttr, BattlerTagType.PROTOSYNTHESIS, 0, WeatherType.SUNNY, WeatherType.HARSH_SUN) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.QUARK_DRIVE, "Quark Drive", "Boosts the Pokémon's most proficient stat on Electric Terrain or if the Pokémon is holding Booster Energy.", 9) + new Ability(Abilities.QUARK_DRIVE, 9) .conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), PostSummonAddBattlerTagAbAttr, BattlerTagType.QUARK_DRIVE, 0, true) .attr(PostTerrainChangeAddBattlerTagAttr, BattlerTagType.QUARK_DRIVE, 0, TerrainType.ELECTRIC) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.GOOD_AS_GOLD, "Good as Gold (P)", "A body of pure, solid gold gives the Pokémon full immunity to other Pokémon's status moves.", 9) + new Ability(Abilities.GOOD_AS_GOLD, 9) .attr(MoveImmunityAbAttr, (pokemon, attacker, move) => pokemon !== attacker && move.getMove().category === MoveCategory.STATUS) - .ignorable(), - new Ability(Abilities.VESSEL_OF_RUIN, "Vessel of Ruin (N)", "The power of the Pokémon's ruinous vessel lowers the Sp. Atk stats of all Pokémon except itself.", 9) - .ignorable(), - new Ability(Abilities.SWORD_OF_RUIN, "Sword of Ruin (N)", "The power of the Pokémon's ruinous sword lowers the Defense stats of all Pokémon except itself.", 9) - .ignorable(), - new Ability(Abilities.TABLETS_OF_RUIN, "Tablets of Ruin (N)", "The power of the Pokémon's ruinous wooden tablets lowers the Attack stats of all Pokémon except itself.", 9) - .ignorable(), - new Ability(Abilities.BEADS_OF_RUIN, "Beads of Ruin (N)", "The power of the Pokémon's ruinous beads lowers the Sp. Def stats of all Pokémon except itself.", 9) - .ignorable(), - new Ability(Abilities.ORICHALCUM_PULSE, "Orichalcum Pulse", "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.", 9) + .ignorable() + .partial(), + new Ability(Abilities.VESSEL_OF_RUIN, 9) + .ignorable() + .unimplemented(), + new Ability(Abilities.SWORD_OF_RUIN, 9) + .ignorable() + .unimplemented(), + new Ability(Abilities.TABLETS_OF_RUIN, 9) + .ignorable() + .unimplemented(), + new Ability(Abilities.BEADS_OF_RUIN, 9) + .ignorable() + .unimplemented(), + new Ability(Abilities.ORICHALCUM_PULSE, 9) .attr(PostSummonWeatherChangeAbAttr, WeatherType.SUNNY) .attr(PostBiomeChangeWeatherChangeAbAttr, WeatherType.SUNNY) .conditionalAttr(getWeatherCondition(WeatherType.SUNNY, WeatherType.HARSH_SUN), BattleStatMultiplierAbAttr, BattleStat.ATK, 4 / 3), - new Ability(Abilities.HADRON_ENGINE, "Hadron Engine", "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.", 9) + new Ability(Abilities.HADRON_ENGINE, 9) .attr(PostSummonTerrainChangeAbAttr, TerrainType.ELECTRIC) .attr(PostBiomeChangeTerrainChangeAbAttr, TerrainType.ELECTRIC) .conditionalAttr(getTerrainCondition(TerrainType.ELECTRIC), BattleStatMultiplierAbAttr, BattleStat.SPATK, 4 / 3), - new Ability(Abilities.OPPORTUNIST, "Opportunist (N)", "If an opponent's stat is boosted, the Pokémon seizes the opportunity to boost the same stat for itself.", 9), - new Ability(Abilities.CUD_CHEW, "Cud Chew (N)", "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.", 9), - new Ability(Abilities.SHARPNESS, "Sharpness", "Powers up slicing moves.", 9) + new Ability(Abilities.OPPORTUNIST, 9) + .unimplemented(), + new Ability(Abilities.CUD_CHEW, 9) + .unimplemented(), + new Ability(Abilities.SHARPNESS, 9) .attr(MovePowerBoostAbAttr, (user, target, move) => move.hasFlag(MoveFlags.SLICING_MOVE), 1.5), - new Ability(Abilities.SUPREME_OVERLORD, "Supreme Overlord (N)", "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.", 9), - new Ability(Abilities.COSTAR, "Costar (N)", "When the Pokémon enters a battle, it copies an ally's stat changes.", 9), - new Ability(Abilities.TOXIC_DEBRIS, "Toxic Debris", "Scatters poison spikes at the feet of the opposing team when the Pokémon takes damage from physical moves.", 9) + new Ability(Abilities.SUPREME_OVERLORD, 9) + .unimplemented(), + new Ability(Abilities.COSTAR, 9) + .unimplemented(), + new Ability(Abilities.TOXIC_DEBRIS, 9) .attr(PostDefendApplyArenaTrapTagAbAttr, (target, user, move) => move.category === MoveCategory.PHYSICAL, ArenaTagType.TOXIC_SPIKES) .bypassFaint(), - new Ability(Abilities.ARMOR_TAIL, "Armor Tail", "The mysterious tail covering the Pokémon's head makes opponents unable to use priority moves against the Pokémon or its allies.", 9) + new Ability(Abilities.ARMOR_TAIL, 9) .attr(FieldPriorityMoveImmunityAbAttr) .ignorable(), - new Ability(Abilities.EARTH_EATER, "Earth Eater", "If hit by a Ground-type move, the Pokémon has its HP restored instead of taking damage.", 9) + new Ability(Abilities.EARTH_EATER, 9) .attr(TypeImmunityHealAbAttr, Type.GROUND) .ignorable(), - new Ability(Abilities.MYCELIUM_MIGHT, "Mycelium Might (P)", "The Pokémon will always act more slowly when using status moves, but these moves will be unimpeded by the Ability of the target.", 9) - .attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS), - new Ability(Abilities.MINDS_EYE, "Mind's Eye (N)", "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.", 9) - .ignorable(), - new Ability(Abilities.SUPERSWEET_SYRUP, "Supersweet Syrup (N)", "A sickly sweet scent spreads across the field the first time the Pokémon enters a battle, lowering the evasiveness of opposing Pokémon.", 9), - new Ability(Abilities.HOSPITALITY, "Hospitality", "When the Pokémon enters a battle, it showers its ally with hospitality, restoring a small amount of the ally's HP.", 9) + new Ability(Abilities.MYCELIUM_MIGHT, 9) + .attr(MoveAbilityBypassAbAttr, (pokemon, move: Move) => move.category === MoveCategory.STATUS) + .partial(), + new Ability(Abilities.MINDS_EYE, 9) + .ignorable() + .unimplemented(), + new Ability(Abilities.SUPERSWEET_SYRUP, 9) + .unimplemented(), + new Ability(Abilities.HOSPITALITY, 9) .attr(PostSummonAllyHealAbAttr, 4, true), - new Ability(Abilities.TOXIC_CHAIN, "Toxic Chain", "The power of the Pokémon's toxic chain may badly poison any target the Pokémon hits with a move.", 9) + new Ability(Abilities.TOXIC_CHAIN, 9) .attr(PostAttackApplyStatusEffectAbAttr, false, 30, StatusEffect.TOXIC), - new Ability(Abilities.EMBODY_ASPECT_TEAL, "Embody Aspect", "The Pokémon's heart fills with memories, causing the Teal Mask to shine and the Pokémon's Speed stat to be boosted.", 9) + new Ability(Abilities.EMBODY_ASPECT_TEAL, 9) .attr(PostBattleInitStatChangeAbAttr, BattleStat.SPD, 1, true) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.EMBODY_ASPECT_WELLSPRING, "Embody Aspect", "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.", 9) + new Ability(Abilities.EMBODY_ASPECT_WELLSPRING, 9) .attr(PostBattleInitStatChangeAbAttr, BattleStat.SPDEF, 1, true) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.EMBODY_ASPECT_HEARTHFLAME, "Embody Aspect", "The Pokémon's heart fills with memories, causing the Hearthflame Mask to shine and the Pokémon's Attack stat to be boosted.", 9) + new Ability(Abilities.EMBODY_ASPECT_HEARTHFLAME, 9) .attr(PostBattleInitStatChangeAbAttr, BattleStat.ATK, 1, true) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.EMBODY_ASPECT_CORNERSTONE, "Embody Aspect", "The Pokémon's heart fills with memories, causing the Cornerstone Mask to shine and the Pokémon's Defense stat to be boosted.", 9) + new Ability(Abilities.EMBODY_ASPECT_CORNERSTONE, 9) .attr(PostBattleInitStatChangeAbAttr, BattleStat.DEF, 1, true) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(NoTransformAbilityAbAttr), - new Ability(Abilities.TERA_SHIFT, "Tera Shift", "When the Pokémon enters a battle, it absorbs the energy around itself and transforms into its Terastal Form.", 9) + new Ability(Abilities.TERA_SHIFT, 9) .attr(PostSummonFormChangeAbAttr, p => p.getFormKey() ? 0 : 1) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) .attr(UnsuppressableAbilityAbAttr) .attr(NoTransformAbilityAbAttr) .attr(NoFusionAbilityAbAttr), - new Ability(Abilities.TERA_SHELL, "Tera Shell (N)", "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.", 9) + new Ability(Abilities.TERA_SHELL, 9) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) - .ignorable(), - new Ability(Abilities.TERAFORM_ZERO, "Teraform Zero (N)", "When Terapagos changes into its Stellar Form, it uses its hidden powers to eliminate all effects of weather and terrain, reducing them to zero.", 9) - .attr(UncopiableAbilityAbAttr) - .attr(UnswappableAbilityAbAttr), - new Ability(Abilities.POISON_PUPPETEER, "Poison Puppeteer (N)", "Pokémon poisoned by Pecharunt's moves will also become confused.", 9) + .ignorable() + .unimplemented(), + new Ability(Abilities.TERAFORM_ZERO, 9) .attr(UncopiableAbilityAbAttr) .attr(UnswappableAbilityAbAttr) + .unimplemented(), + new Ability(Abilities.POISON_PUPPETEER, 9) + .attr(UncopiableAbilityAbAttr) + .attr(UnswappableAbilityAbAttr) + .unimplemented(), ); } diff --git a/src/locales/en/ability.ts b/src/locales/en/ability.ts new file mode 100644 index 000000000..8360c0c08 --- /dev/null +++ b/src/locales/en/ability.ts @@ -0,0 +1,1244 @@ +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.", + }, + drizzle: { + 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.", + }, + battleArmor: { + 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.", + }, + damp: { + 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.", + }, + sandVeil: { + 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.", + }, + voltAbsorb: { + 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.", + }, + oblivious: { + 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.", + }, + compoundEyes: { + 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.", + }, + colorChange: { + 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.", + }, + flashFire: { + 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.", + }, + ownTempo: { + 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.", + }, + intimidate: { + 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.", + }, + roughSkin: { + 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.", + }, + levitate: { + 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.", + }, + synchronize: { + 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.", + }, + naturalCure: { + 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.", + }, + sereneGrace: { + 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.", + }, + chlorophyll: { + 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.", + }, + trace: { + 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.", + }, + poisonPoint: { + 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.", + }, + magmaArmor: { + 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.", + }, + magnetPull: { + 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.", + }, + rainDish: { + 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.", + }, + pressure: { + 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.", + }, + earlyBird: { + 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.", + }, + runAway: { + 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.", + }, + hyperCutter: { + 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.", + }, + truant: { + 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.", + }, + cuteCharm: { + 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.", + }, + 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.", + }, + forecast: { + 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.", + }, + shedSkin: { + 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.", + }, + marvelScale: { + 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.", + }, + overgrow: { + 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.", + }, + torrent: { + 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.", + }, + rockHead: { + 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.", + }, + arenaTrap: { + 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.", + }, + whiteSmoke: { + 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.", + }, + shellArmor: { + name: "Shell Armor", + description: "A hard shell protects the Pokémon from critical hits.", + }, + airLock: { + name: "Air Lock", + description: "Eliminates the effects of weather.", + }, + tangledFeet: { + 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.", + }, + 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.", + }, + steadfast: { + 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.", + }, + 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.", + }, + angerPoint: { + 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.", + }, + heatproof: { + 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.", + }, + 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.", + }, + 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.", + }, + ironFist: { + 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.", + }, + adaptability: { + 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.", + }, + hydration: { + 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.", + }, + quickFeet: { + 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.", + }, + sniper: { + 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.", + }, + noGuard: { + 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.", + }, + technician: { + name: "Technician", + description: "Powers up the Pokémon's weaker moves.", + }, + leafGuard: { + name: "Leaf Guard", + description: "Prevents status conditions in harsh sunlight.", + }, + klutz: { + 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.", + }, + superLuck: { + 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.", + }, + anticipation: { + 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.", + }, + unaware: { + name: "Unaware", + description: "When attacking, the Pokémon ignores the target Pokémon's stat changes.", + }, + tintedLens: { + 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.", + }, + slowStart: { + 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.", + }, + stormDrain: { + 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.", + }, + solidRock: { + 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.", + }, + honeyGather: { + 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 held item.", + }, + reckless: { + 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.", + }, + flowerGift: { + 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.", + }, + pickpocket: { + 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.", + }, + contrary: { + 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.", + }, + defiant: { + 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.", + }, + cursedBody: { + name: "Cursed Body", + description: "May disable a move used on the Pokémon.", + }, + healer: { + name: "Healer", + description: "Sometimes heals an ally's status condition.", + }, + friendGuard: { + 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.", + }, + heavyMetal: { + name: "Heavy Metal", + description: "Doubles the Pokémon's weight.", + }, + lightMetal: { + 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.", + }, + toxicBoost: { + 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.", + }, + harvest: { + name: "Harvest", + description: "May create another Berry after one is used.", + }, + telepathy: { + name: "Telepathy", + description: "Anticipates an ally's attack and dodges it.", + }, + moody: { + 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.", + }, + poisonTouch: { + 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.", + }, + bigPecks: { + 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.", + }, + wonderSkin: { + name: "Wonder Skin", + description: "Makes status moves more likely to miss.", + }, + analytic: { + 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.", + }, + imposter: { + 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.", + }, + 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.", + }, + justified: { + 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.", + }, + magicBounce: { + 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.", + }, + prankster: { + 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.", + }, + ironBarbs: { + 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.", + }, + victoryStar: { + 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.", + }, + teravolt: { + 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.", + }, + flowerVeil: { + 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.", + }, + protean: { + 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.", + }, + magician: { + 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.", + }, + competitive: { + 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.", + }, + refrigerate: { + 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.", + }, + 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.", + }, + galeWings: { + 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.", + }, + grassPelt: { + 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.", + }, + toughClaws: { + 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.", + }, + gooey: { + 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.", + }, + parentalBond: { + name: "Parental Bond", + description: "Parent and child each attacks.", + }, + darkAura: { + 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.", + }, + auraBreak: { + 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.", + }, + desolateLand: { + 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.", + }, + stamina: { + 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.", + }, + emergencyExit: { + 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.", + }, + merciless: { + 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.", + }, + stakeout: { + 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.", + }, + steelworker: { + 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.", + }, + slushRush: { + 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.", + }, + liquidVoice: { + name: "Liquid Voice", + description: "All sound-based moves become Water-type moves.", + }, + triage: { + 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.", + }, + surgeSurfer: { + 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.", + }, + disguise: { + 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.", + }, + 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.", + }, + corrosion: { + 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.", + }, + queenlyMajesty: { + 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.", + }, + dancer: { + 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.", + }, + fluffy: { + 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.", + }, + soulHeart: { + 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.", + }, + receiver: { + 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.", + }, + beastBoost: { + 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.", + }, + electricSurge: { + 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.", + }, + mistySurge: { + 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.", + }, + fullMetalBody: { + 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.", + }, + prismArmor: { + name: "Prism Armor", + description: "Reduces the power of supereffective attacks taken.", + }, + neuroforce: { + 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.", + }, + dauntlessShield: { + 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.", + }, + ballFetch: { + 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.", + }, + propellerTail: { + 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.", + }, + 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.", + }, + stalwart: { + 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.", + }, + 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.", + }, + sandSpit: { + 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.", + }, + ripen: { + 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.", + }, + powerSpot: { + 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.", + }, + 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.", + }, + steelySpirit: { + 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.", + }, + wanderingSpirit: { + 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.", + }, + 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.", + }, + pastelVeil: { + 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.", + }, + quickDraw: { + 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.", + }, + 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.", + }, + transistor: { + name: "Transistor", + description: "Powers up Electric-type moves.", + }, + dragonsMaw: { + 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.", + }, + grimNeigh: { + 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.", + }, + asOneSpectrier: { + 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.", + }, + seedSower: { + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + rockyPayload: { + 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.", + }, + zeroToHero: { + 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.", + }, + 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.", + }, + protosynthesis: { + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + opportunist: { + 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.", + }, + sharpness: { + 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.", + }, + costar: { + 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.", + }, + 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.", + }, + earthEater: { + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + teraShift: { + 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.", + }, + 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.", + }, + poisonPuppeteer: { + name: "Poison Puppeteer", + description: "Pokémon poisoned by Pecharunt's moves will also become confused.", + }, +} as const; diff --git a/src/locales/es/ability.ts b/src/locales/es/ability.ts new file mode 100644 index 000000000..3010a14d6 --- /dev/null +++ b/src/locales/es/ability.ts @@ -0,0 +1,1244 @@ +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." + }, + "drizzle": { + name: "Llovizna", + description: "Hace que llueva al entrar en combate." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "swiftSwim": { + name: "Nado Rápido", + description: "Aumenta su Velocidad cuando llueve." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "stall": { + name: "Rezagado", + description: "Ejecuta su movimiento tras todos los demás." + }, + "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." + }, + "klutz": { + name: "Zoquete", + description: "No puede usar objetos equipados." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "honeyGather": { + name: "Recogemiel", + description: "Puede que encuentre Miel una vez concluido el combate." + }, + "frisk": { + name: "Cacheo", + description: "Puede ver el objeto que lleva el rival al entrar en combate." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "heavyMetal": { + name: "Metal Pesado", + description: "Duplica 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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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á." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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í." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + }, + "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." + } +} as const; diff --git a/src/locales/fr/ability.ts b/src/locales/fr/ability.ts new file mode 100644 index 000000000..8360c0c08 --- /dev/null +++ b/src/locales/fr/ability.ts @@ -0,0 +1,1244 @@ +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.", + }, + drizzle: { + 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.", + }, + battleArmor: { + 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.", + }, + damp: { + 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.", + }, + sandVeil: { + 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.", + }, + voltAbsorb: { + 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.", + }, + oblivious: { + 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.", + }, + compoundEyes: { + 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.", + }, + colorChange: { + 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.", + }, + flashFire: { + 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.", + }, + ownTempo: { + 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.", + }, + intimidate: { + 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.", + }, + roughSkin: { + 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.", + }, + levitate: { + 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.", + }, + synchronize: { + 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.", + }, + naturalCure: { + 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.", + }, + sereneGrace: { + 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.", + }, + chlorophyll: { + 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.", + }, + trace: { + 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.", + }, + poisonPoint: { + 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.", + }, + magmaArmor: { + 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.", + }, + magnetPull: { + 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.", + }, + rainDish: { + 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.", + }, + pressure: { + 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.", + }, + earlyBird: { + 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.", + }, + runAway: { + 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.", + }, + hyperCutter: { + 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.", + }, + truant: { + 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.", + }, + cuteCharm: { + 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.", + }, + 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.", + }, + forecast: { + 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.", + }, + shedSkin: { + 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.", + }, + marvelScale: { + 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.", + }, + overgrow: { + 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.", + }, + torrent: { + 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.", + }, + rockHead: { + 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.", + }, + arenaTrap: { + 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.", + }, + whiteSmoke: { + 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.", + }, + shellArmor: { + name: "Shell Armor", + description: "A hard shell protects the Pokémon from critical hits.", + }, + airLock: { + name: "Air Lock", + description: "Eliminates the effects of weather.", + }, + tangledFeet: { + 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.", + }, + 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.", + }, + steadfast: { + 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.", + }, + 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.", + }, + angerPoint: { + 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.", + }, + heatproof: { + 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.", + }, + 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.", + }, + 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.", + }, + ironFist: { + 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.", + }, + adaptability: { + 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.", + }, + hydration: { + 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.", + }, + quickFeet: { + 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.", + }, + sniper: { + 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.", + }, + noGuard: { + 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.", + }, + technician: { + name: "Technician", + description: "Powers up the Pokémon's weaker moves.", + }, + leafGuard: { + name: "Leaf Guard", + description: "Prevents status conditions in harsh sunlight.", + }, + klutz: { + 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.", + }, + superLuck: { + 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.", + }, + anticipation: { + 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.", + }, + unaware: { + name: "Unaware", + description: "When attacking, the Pokémon ignores the target Pokémon's stat changes.", + }, + tintedLens: { + 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.", + }, + slowStart: { + 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.", + }, + stormDrain: { + 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.", + }, + solidRock: { + 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.", + }, + honeyGather: { + 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 held item.", + }, + reckless: { + 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.", + }, + flowerGift: { + 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.", + }, + pickpocket: { + 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.", + }, + contrary: { + 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.", + }, + defiant: { + 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.", + }, + cursedBody: { + name: "Cursed Body", + description: "May disable a move used on the Pokémon.", + }, + healer: { + name: "Healer", + description: "Sometimes heals an ally's status condition.", + }, + friendGuard: { + 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.", + }, + heavyMetal: { + name: "Heavy Metal", + description: "Doubles the Pokémon's weight.", + }, + lightMetal: { + 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.", + }, + toxicBoost: { + 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.", + }, + harvest: { + name: "Harvest", + description: "May create another Berry after one is used.", + }, + telepathy: { + name: "Telepathy", + description: "Anticipates an ally's attack and dodges it.", + }, + moody: { + 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.", + }, + poisonTouch: { + 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.", + }, + bigPecks: { + 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.", + }, + wonderSkin: { + name: "Wonder Skin", + description: "Makes status moves more likely to miss.", + }, + analytic: { + 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.", + }, + imposter: { + 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.", + }, + 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.", + }, + justified: { + 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.", + }, + magicBounce: { + 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.", + }, + prankster: { + 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.", + }, + ironBarbs: { + 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.", + }, + victoryStar: { + 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.", + }, + teravolt: { + 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.", + }, + flowerVeil: { + 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.", + }, + protean: { + 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.", + }, + magician: { + 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.", + }, + competitive: { + 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.", + }, + refrigerate: { + 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.", + }, + 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.", + }, + galeWings: { + 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.", + }, + grassPelt: { + 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.", + }, + toughClaws: { + 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.", + }, + gooey: { + 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.", + }, + parentalBond: { + name: "Parental Bond", + description: "Parent and child each attacks.", + }, + darkAura: { + 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.", + }, + auraBreak: { + 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.", + }, + desolateLand: { + 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.", + }, + stamina: { + 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.", + }, + emergencyExit: { + 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.", + }, + merciless: { + 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.", + }, + stakeout: { + 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.", + }, + steelworker: { + 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.", + }, + slushRush: { + 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.", + }, + liquidVoice: { + name: "Liquid Voice", + description: "All sound-based moves become Water-type moves.", + }, + triage: { + 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.", + }, + surgeSurfer: { + 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.", + }, + disguise: { + 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.", + }, + 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.", + }, + corrosion: { + 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.", + }, + queenlyMajesty: { + 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.", + }, + dancer: { + 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.", + }, + fluffy: { + 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.", + }, + soulHeart: { + 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.", + }, + receiver: { + 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.", + }, + beastBoost: { + 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.", + }, + electricSurge: { + 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.", + }, + mistySurge: { + 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.", + }, + fullMetalBody: { + 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.", + }, + prismArmor: { + name: "Prism Armor", + description: "Reduces the power of supereffective attacks taken.", + }, + neuroforce: { + 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.", + }, + dauntlessShield: { + 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.", + }, + ballFetch: { + 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.", + }, + propellerTail: { + 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.", + }, + 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.", + }, + stalwart: { + 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.", + }, + 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.", + }, + sandSpit: { + 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.", + }, + ripen: { + 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.", + }, + powerSpot: { + 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.", + }, + 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.", + }, + steelySpirit: { + 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.", + }, + wanderingSpirit: { + 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.", + }, + 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.", + }, + pastelVeil: { + 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.", + }, + quickDraw: { + 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.", + }, + 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.", + }, + transistor: { + name: "Transistor", + description: "Powers up Electric-type moves.", + }, + dragonsMaw: { + 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.", + }, + grimNeigh: { + 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.", + }, + asOneSpectrier: { + 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.", + }, + seedSower: { + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + rockyPayload: { + 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.", + }, + zeroToHero: { + 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.", + }, + 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.", + }, + protosynthesis: { + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + opportunist: { + 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.", + }, + sharpness: { + 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.", + }, + costar: { + 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.", + }, + 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.", + }, + earthEater: { + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + 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.", + }, + teraShift: { + 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.", + }, + 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.", + }, + poisonPuppeteer: { + name: "Poison Puppeteer", + description: "Pokémon poisoned by Pecharunt's moves will also become confused.", + }, +} as const; diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts index 31ddc2d6c..a69f441d8 100644 --- a/src/plugins/i18n.ts +++ b/src/plugins/i18n.ts @@ -8,6 +8,10 @@ import { move as enMove } from '../locales/en/move'; import { move as esMove } from '../locales/es/move'; import { move as frMove } from '../locales/fr/move'; +import { ability as enAbility } from '../locales/en/ability'; +import { ability as esAbility } from '../locales/es/ability'; +import { ability as frAbility } from '../locales/fr/ability'; + import { pokeball as enPokeball } from '../locales/en/pokeball'; import { pokeball as esPokeball } from '../locales/es/pokeball'; import { pokeball as frPokeball } from '../locales/fr/pokeball'; @@ -39,6 +43,15 @@ export interface MoveTranslationEntries { [key: string]: MoveTranslationEntry } +export interface AbilityTranslationEntry { + name: string, + description: string +} + +export interface AbilityTranslationEntries { + [key: string]: AbilityTranslationEntry +} + export interface Localizable { localize(): void; } @@ -74,6 +87,7 @@ export function initI18n(): void { en: { menu: enMenu, move: enMove, + ability: enAbility, pokeball: enPokeball, pokemon: enPokemon, pokemonStat: enPokemonStat, @@ -82,6 +96,7 @@ export function initI18n(): void { es: { menu: esMenu, move: esMove, + ability: esAbility, pokeball: esPokeball, pokemon: esPokemon, pokemonStat: esPokemonStat, @@ -90,6 +105,7 @@ export function initI18n(): void { fr: { menu: frMenu, move: frMove, + ability: frAbility, pokeball: frPokeball, pokemon: frPokemon, pokemonStat: frPokemonStat, @@ -109,6 +125,7 @@ declare module 'i18next' { resources: { menu: typeof enMenu; move: typeof enMove; + ability: typeof enAbility; pokeball: typeof enPokeball; pokemon: typeof enPokemon; pokemonStat: typeof enPokemonStat; diff --git a/src/ui/fight-ui-handler.ts b/src/ui/fight-ui-handler.ts index 8ca6ab6e3..1f37c9d01 100644 --- a/src/ui/fight-ui-handler.ts +++ b/src/ui/fight-ui-handler.ts @@ -6,12 +6,14 @@ 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"; export default class FightUiHandler extends UiHandler { private movesContainer: Phaser.GameObjects.Container; private typeIcon: Phaser.GameObjects.Sprite; private ppText: Phaser.GameObjects.Text; private cursorObj: Phaser.GameObjects.Image; + private moveCategoryIcon: Phaser.GameObjects.Sprite; protected fieldIndex: integer = 0; protected cursor2: integer = 0; @@ -26,10 +28,15 @@ export default class FightUiHandler extends UiHandler { this.movesContainer = this.scene.add.container(18, -38.7); ui.add(this.movesContainer); - this.typeIcon = this.scene.add.sprite((this.scene.game.canvas.width / 6) - 33, -31, 'types', 'unknown'); + this.typeIcon = this.scene.add.sprite((this.scene.game.canvas.width / 6) - 41, -31, 'types', 'unknown'); this.typeIcon.setVisible(false); ui.add(this.typeIcon); + this.moveCategoryIcon = this.scene.add.sprite((this.scene.game.canvas.width / 6) - 19, -31, 'categories', 'physical'); + this.moveCategoryIcon.setVisible(false); + ui.add(this.moveCategoryIcon); + + this.ppText = addTextObject(this.scene, (this.scene.game.canvas.width / 6) - 18, -15.5, ' / ', TextStyle.WINDOW); this.ppText.setOrigin(1, 0.5); this.ppText.setVisible(false); @@ -120,16 +127,19 @@ export default class FightUiHandler extends UiHandler { if (hasMove) { const pokemonMove = moveset[cursor]; - this.typeIcon.setTexture('types', Type[pokemonMove.getMove().type].toLowerCase()); + this.typeIcon.setTexture('types', Type[pokemonMove.getMove().type].toLowerCase()).setScale(0.65); + this.moveCategoryIcon.setTexture('categories', MoveCategory[pokemonMove.getMove().category].toLowerCase()).setScale(0.8); const maxPP = pokemonMove.getMovePp(); const pp = maxPP - pokemonMove.ppUsed; + this.ppText.setText(`${Utils.padInt(pp, 2, ' ')}/${Utils.padInt(maxPP, 2, ' ')}`); } this.typeIcon.setVisible(hasMove); this.ppText.setVisible(hasMove); + this.moveCategoryIcon.setVisible(hasMove); this.cursorObj.setPosition(13 + (cursor % 2 === 1 ? 100 : 0), -31 + (cursor >= 2 ? 15 : 0)); @@ -151,6 +161,7 @@ export default class FightUiHandler extends UiHandler { this.clearMoves(); this.typeIcon.setVisible(false); this.ppText.setVisible(false); + this.moveCategoryIcon.setVisible(false); this.eraseCursor(); }