Skip to content

Commit

Permalink
More ability polish
Browse files Browse the repository at this point in the history
  • Loading branch information
ACakeWearingAHat authored May 1, 2024
1 parent 3d185c8 commit 99fad94
Showing 1 changed file with 30 additions and 13 deletions.
43 changes: 30 additions & 13 deletions data/mods/gen9ssb/abilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,8 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {

// A Quag To The Past
quagofruin: {
shortDesc: "Active Pokemon without this Ability have their Def multiplied by 0.85. Ignores abilities.",
shortDesc: "Active Pokemon without this Ability have 0.85x Defense. Ignores abilities.",
desc: "Active Pokemon without this Ability have their Defense multiplied by 0.85x. This Pokemon's moves and their effects ignore certain Abilities of other Pokemon.",
name: "Quag of Ruin",
onStart(pokemon) {
if (this.suppressingAbility(pokemon)) return;
Expand All @@ -202,7 +203,8 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
gen: 9,
},
clodofruin: {
shortDesc: "Active Pokemon without this Ability have their Atk multiplied by 0.85. Ignores stat changes.",
shortDesc: "Active Pokemon without this Ability have 0.85x Attack. Ignores stat changes.",
desc: "Active Pokemon without this Ability have their Attack multiplied by 0.85x. This Pokemon ignores other Pokemon's stat stages when taking or doing damage.",
name: "Clod of Ruin",
onStart(pokemon) {
if (this.suppressingAbility(pokemon)) return;
Expand Down Expand Up @@ -258,6 +260,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// Arcueid
marblephantasm: {
shortDesc: "Deoxys-Defense is immune to status moves/effects. Deoxys-Attack gains Fairy type.",
desc: "If this Pokemon is a Deoxys-Defense, it is immune to status moves and cannot be afflicted with any non-volatile status condition. If this Pokemon is a Deoxys-Attack, it gains an additional Fairy typing for as long as this Ability remains active.",
name: "Marble Phantasm",
onStart(source) {
this.field.setWeather('millenniumcastle');
Expand Down Expand Up @@ -355,6 +358,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// ausma
cascade: {
shortDesc: "Switches out when below 50% HP. First re-entry gives +1 Def/SpD and +3 Spe.",
desc: "When this Pokemon has more than 1/2 its maximum HP and takes damage bringing it to 1/2 or less of its maximum HP, it immediately switches out to a chosen ally. When this Pokemon next enters the field, its Defense and Special Defense are boosted by 1 stage and its Speed is boosted by 3 stages.",
name: "Cascade",
onEmergencyExit(target) {
if (target.volatiles['sigilsstorm']?.lostFocus) {
Expand Down Expand Up @@ -433,7 +437,8 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {

// Blitz
blitzofruin: {
shortDesc: "Dazzling + active Pokemon without this Ability have their Speed multiplied by 0.75.",
shortDesc: "Dazzling + active Pokemon without this Ability have 0.75x Speed.",
desc: "Active Pokemon without this Ability have their Speed multiplied by 0.75x. This Pokemon is protected from opposing priority moves.",
name: "Blitz of Ruin",
onStart(pokemon) {
this.add('-ability', pokemon, 'Blitz of Ruin');
Expand Down Expand Up @@ -556,6 +561,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// clerica
masquerade: {
shortDesc: "(Mimikyu only) The first hit is blocked: instead, takes 1/8 damage and gets +1 Atk/Spe.",
desc: "If this Pokemon is a Mimikyu, the first hit it takes in battle deals 0 neutral damage. Its disguise is then broken, it changes to Busted Form, its Attack and Speed are boosted by 1 stage, and it loses 1/8 of its max HP. Confusion damage also breaks the disguise.",
name: "Masquerade",
onDamagePriority: 1,
onDamage(damage, target, source, effect) {
Expand Down Expand Up @@ -672,6 +678,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// Dawn of Artemis
formchange: {
shortDesc: ">50% HP Necrozma, else Necrozma-Ultra. SpA boosts become Atk boosts and vice versa.",
desc: "If this Pokemon is a Necrozma, it changes to Necrozma-Ultra and switches its Attack and Special Attack stat stage changes if it has 1/2 or less of its maximum HP at the end of a turn. If Necrozma-Ultra's HP is above 1/2 of its maximum HP at the end of a turn, it changes back to Necrozma and switches its Attack and Special Attack stat stage changes.",
name: "Form Change",
onResidual(pokemon) {
if (pokemon.baseSpecies.baseSpecies !== 'Necrozma' || pokemon.transformed || !pokemon.hp) return;
Expand Down Expand Up @@ -759,7 +766,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// Elly
stormsurge: {
shortDesc: "On switch-in, summons rain that causes wind moves to have perfect accuracy and 1.2x Base Power.",
desc: "Wind moves get perfect accuracy and become 20% stronger. Water moves are 50% stronger, Fire moves are 50% weaker.",
desc: "Summons the Storm Surge weather on switch-in. While Storm Surge is active, wind moves used by any Pokemon are perfectly accurate and become 20% stronger. Water moves are 50% stronger, Fire moves are 50% weaker.",
name: "Storm Surge",
onStart(source) {
this.field.setWeather('stormsurge');
Expand All @@ -769,6 +776,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// Emboar02
hogwash: {
shortDesc: "Reckless; on STAB moves, also add Rock Head. On non-STAB moves, recoil is recovery.",
desc: "This Pokemon's attacks that would normally have recoil or crash damage have their power multiplied by 1.2. Does not affect Struggle. STAB recoil attacks used by this Pokemon do not deal recoil damage to the user. Non-STAB recoil attacks used by this Pokemon will heal the user instead of dealing recoil damage.",
name: "Hogwash",
onBasePowerPriority: 23,
onBasePower(basePower, attacker, defender, move) {
Expand Down Expand Up @@ -1004,7 +1012,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {

// HoeenHero
misspelled: {
shortDesc: "SpA 1.5x, Accuracy 0.8x. Never misses, only misspells moves.",
shortDesc: "Special Attack 1.5x, Accuracy 0.8x. Never misses, only misspells moves.",
name: "Misspelled",
onModifySpAPriority: 5,
onModifySpA(spa) {
Expand Down Expand Up @@ -1094,6 +1102,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// Irpachuza
mimeknowsbest: {
shortDesc: "When this Pokemon switches in, it uses a random screen or protect move.",
desc: "When this Pokemon switches in, it will randomly use one of Light Screen, Reflect, Protect, Detect, Barrier, Spiky Shield, Baneful Bunker, Safeguard, Mist, King's Shield, Magic Coat, or Aurora Veil.",
name: "Mime knows best",
onStart(target) {
const randomMove = [
Expand Down Expand Up @@ -1283,7 +1292,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {

// Kry
flashfreeze: {
shortDesc: "Heatproof + If foe's used offensive stat has positive stat changes, it deals 75% damage.",
shortDesc: "Heatproof + If attacker's used offensive stat has positive stat changes, take 0.75x damage.",
name: "Flash Freeze",
onSourceModifyAtkPriority: 6,
onSourceModifyAtk(atk, attacker, defender, move) {
Expand Down Expand Up @@ -1318,6 +1327,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// Lasen
idealizedworld: {
shortDesc: "Removes everything on switch-in.",
desc: "When this Pokemon switches in, all stat boosts, entry hazards, weathers, terrains, persistent weathers (such as Primordial Sea), and any other field effects (such as Aurora Veil) are removed from all sides of the field.",
name: "Idealized World",
onStart(pokemon) {
const target = pokemon.side.foe;
Expand Down Expand Up @@ -1436,6 +1446,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// Mad Monty
climatechange: {
shortDesc: "1.5x SpA in sun, 1.5x Def/SpD in snow, heals 50% in rain. Changes forme/weather.",
desc: "If this Pokemon is a Castform, it changes the active weather and therefore this Pokemon's forme and set at the end of each turn, alternating between sun, rain, and snow in that order. When the weather is sun, this Pokemon's Special Attack is multiplied by 1.5x. When the weather becomes rain, this Pokemon heals for 1/2 of its maximum HP. When the weather is snow, this Pokemon's Defense and Special Defense are multiplied by 1.5x.",
name: "Climate Change",
onResidualOrder: 28,
onResidualSubOrder: 2,
Expand Down Expand Up @@ -1531,7 +1542,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {

// maroon
builtdifferent: {
shortDesc: "Stamina + Normal type moves get +1 priority.",
shortDesc: "Stamina + Normal-type moves get +1 priority.",
name: "Built Different",
onDamagingHit(damage, target, source, effect) {
this.boost({def: 1});
Expand Down Expand Up @@ -1589,7 +1600,8 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {

// MyPearl
eoncall: {
shortDesc: "Changes into Latios after Status move, Latias after Special move.",
shortDesc: "Changes into Latios after status move, Latias after special move.",
desc: "If this Pokemon is a Latios, it changes into Latias after using a status move. If this Pokemon is a Latias, it changes into Latios after using a special attack.",
name: "Eon Call",
onAfterMove(source, target, move) {
if (move.category === 'Status' && source.species.baseSpecies === 'Latias') {
Expand Down Expand Up @@ -1626,6 +1638,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// nya
adorablegrace: {
shortDesc: "This Pokemon's secondary effects and certain items have their activation chance doubled.",
desc: "This Pokemon's secondary effects of attacks, as well as the effects of chance based items like Focus Band and King's Rock, have their activation chance doubled.",
name: "Adorable Grace",
onModifyMovePriority: -2,
onModifyMove(move) {
Expand Down Expand Up @@ -1693,6 +1706,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// PartMan
ctiershitposter: {
shortDesc: "-1 Atk/SpA, +1 Def/SpD. +1 Atk/SpA/Spe, -1 Def/SpD, Mold Breaker if 420+ dmg taken.",
desc: "When this Pokemon switches in, its Defense and Special Defense are boosted by 1 stage and its Attack and Special Attack are lowered by 1 stage. Once this Pokemon has taken total damage throughout the battle equal to or greater than 420 HP, it instead ignores the Abilities of opposing Pokemon when attacking and its existing stat stage changes are cleared. After this and whenever it gets sent out from this point onwards, this Pokemon boosts its Attack, Special Attack, and Speed by 1 stage, and lowers its Defense and Special Defense by 1 stage.",
name: "C- Tier Shitposter",
onDamage(damage, target, source, effect) {
target.m.damageTaken ??= 0;
Expand Down Expand Up @@ -1879,6 +1893,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// Ransei
ultramystik: {
shortDesc: "Stats 1.5x until hit super effectively + Magic Guard + Leftovers.",
desc: "This Pokemon can only be damaged by direct attacks. At the end of each turn, this Pokemon restores 1/16 of its maximum HP. This Pokemon's Attack, Defense, Special Attack, Special Defense, and Speed are boosted by 1.5x if it has not been hit by a super effective attack during this battle.",
name: "Ultra Mystik",
onStart(target) {
if (!this.effectState.superHit) {
Expand Down Expand Up @@ -2062,6 +2077,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// SexyMalasada
ancestryritual: {
shortDesc: "Recoil heals. While below 50% HP, changes to Typhlosion-Hisui.",
desc: "Moves that would deal recoil or crash damage, aside from Struggle, heal this Pokemon for the corresponding amount instead. If this Pokemon is a Typhlosion, it changes to Typhlosion-Hisui if it has 1/2 or less of its maximum HP at the end of a turn. If Typhlosion-Hisui's HP is above 1/2 of its maximum HP at the end of a turn, it changes back to Typhlosion.",
name: "Ancestry Ritual",
onDamage(damage, target, source, effect) {
if (effect.id === 'recoil') {
Expand Down Expand Up @@ -2460,7 +2476,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// umuwo
soulsurfer: {
name: "Soul Surfer",
shortDesc: "Rain on entry; Speed: x2 in Electric Terrain.",
shortDesc: "Drizzle + Surge Surfer.",
onStart(source) {
this.field.setWeather('raindance');
},
Expand Down Expand Up @@ -2500,6 +2516,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// Violet
seenoevilhearnoevilspeaknoevil: {
shortDesc: "Dark immune; Cornerstone: Sound immune. Wellspring: Moves never miss. Hearthflame: 1.3x BP vs male.",
desc: "This Pokemon is immune to Dark-type attacks. If this Pokemon is Ogerpon-Cornerstone, it is immune to sound moves. If this Pokemon is Ogerpon-Wellspring, its moves will never miss. If this Pokemon is Ogerpon-Hearthflame, its damage against male targets is multiplied by 1.3x.",
name: "See No Evil, Hear No Evil, Speak No Evil",
onTryHit(target, source, move) {
if (target !== source && move.flags['sound'] && target.species.id.startsWith('ogerponcornerstone')) {
Expand Down Expand Up @@ -2572,7 +2589,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// WarriorGallade
primevalharvest: {
shortDesc: "Sun: Heal 1/8 max HP, random berry if no item. Else 50% random berry if no item.",
desc: "In Sun, the user restores 1/8th of its max HP at the end of the turn and has a 100% chance to get a random berry if it has no item. Outside of sun, there is a 50% chance to get a random berry. Berry given will be one of: Cheri, Chesto, Pecha, Lum, Aguav, Liechi, Ganlon, Petaya, Apicot, Salac, Micle, Lansat, Enigma, Custap, Kee or Maranga.",
desc: "In Sun, the user restores 1/8th of its maximum HP at the end of the turn and has a 100% chance to get a random berry if it has no item. Outside of sun, there is a 50% chance to get a random berry. Berry given will be one of: Cheri, Chesto, Pecha, Lum, Aguav, Liechi, Ganlon, Petaya, Apicot, Salac, Micle, Lansat, Enigma, Custap, Kee or Maranga.",
name: "Primeval Harvest",
onResidualOrder: 28,
onResidualSubOrder: 2,
Expand All @@ -2598,7 +2615,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {

// WigglyTree
treestance: {
shortDesc: "No recoil; 3/4 damage from super effective attacks.",
shortDesc: "Rock Head + Filter.",
name: "Tree Stance",
onDamage(damage, target, source, effect) {
if (effect.id === 'recoil') {
Expand Down Expand Up @@ -2639,7 +2656,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {
// Yellow Paint
yellowmagic: {
shortDesc: "+25% HP, +1 SpA, +1 Spe, Charge, or paralyzes attacker when hit by an Electric move; Electric immunity.",
desc: "This Pokemon is immune to Electric type moves. When this Pokemon is hit by one, it either: restores 25% of its max HP, boosts Sp. Atk by 1 stage, boosts Speed by 1 stage, begins charging or paralyzes the attacker.",
desc: "This Pokemon is immune to Electric type moves. When this Pokemon is hit by one, it either: restores 25% of its maximum HP, boosts its Special Attack by 1 stage, boosts its Speed by 1 stage, gains the Charge effect, or paralyzes the attacker.",
name: "Yellow Magic",
onTryHit(target, source, move) {
if (target !== source && move.type === 'Electric') {
Expand Down Expand Up @@ -2676,7 +2693,7 @@ export const Abilities: {[k: string]: ModdedAbilityData} = {

// YveltalNL
heightadvantage: {
shortDesc: "If this Pokemon's height is more than that of the foe, lowers the foe's Atk and Sp. Atk by 1.",
shortDesc: "If this Pokemon's height is more than that of the foe, -1 to foe's Attack/Sp. Atk.",
name: "Height Advantage",
onStart(pokemon) {
let activated = false;
Expand Down

0 comments on commit 99fad94

Please sign in to comment.