Contrary Doubles

Snaquaza

KACAW
is a Community Contributor Alumnusis a Smogon Media Contributor Alumnusis a Battle Simulator Moderator Alumnus
Because very few items are able to actually become viable with this new switch. It would do more harm than good to the items, and would basically force Leftovers onto a bunch of things, which is really bland. There's no point to it.
Personally, I kinda forgot about items. However, I do agree with lcass that it's probably better if items that directly modify stats are included. This means Choice Band, Specs, Scarf, Assault Vest and Eviolite are affected, as well as a bunch of signature ones. However Leftovers and Life Orb aren't affected since they don't affect a stat directly. Besides that, stuff like Salac Berry working normally sounds very strange.
 

Pikachuun

the entire waruda machine
config/formats.js
Code:
    {
        name: "Contrary Doubles",
        section: "Other Metagames",
   
        gameType: 'doubles',
        ruleset: ['Pokemon', 'Standard Doubles', 'Team Preview'],
        banlist: ['Arceus', 'Dialga', 'Giratina', 'Giratina-Origin', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo', 'Palkia', 'Rayquaza', 'Reshiram', 'Xerneas', 'Yveltal', 'Zekrom', 'Salamencite', 'Soul Dew', 'Dark Void', 'Archeops', 'Regigigas', 'Draco Meteor', 'Psycho Boost', 'V-create', 'Leaf Storm', 'Superpower'],
        mod: 'contrarydubs', //Needed for statuses + abilities
        onBoost: function (boost) {
            for (var i in boost) {
                boost[i] *= -1;
            }
        },
        onModifyMove: function (move, pokemon) {
            if (pokemon.status === 'brn' && move.basePower && move.category === 'Physical' && !pokemon.hasAbility('guts')) {
                if (move.id !== 'facade') {
                    move.basePower *= 4; //Account for burn's attack drop in battle-engine.js
                }
            }
        }
    },
mods/contrarydubs/abilities.js
Code:
exports.BattleAbilities = {
    "angerpoint": {
        inherit: true,
        onAfterDamage: function (damage, target, source, move) {
            if (!target.hp) return;
            if (move && move.effectType === 'Move' && move.crit) {
                target.setBoost({atk: 6});
                this.add('-setboost', target, 'atk', -12, '[from] ability: Anger Point');
            }
        }
    },
    "chlorophyll": {
        inherit: true,
        onModifySpe: function (speMod) {
            if (this.isWeather(['sunnyday', 'desolateland'])) {
                return this.chain(speMod, -2);
            }
        }
    },
    "compoundeyes": {
        inherit: true,
        onSourceAccuracy: function (accuracy) {
            if (typeof accuracy !== 'number') return;
            this.debug('compoundeyes - decreasing accuracy');
            return accuracy / 1.3;
        }
    },
    "defeatist": {
        inherit: true,
        onModifyAtk: function (atk, pokemon) {
            if (pokemon.hp < pokemon.maxhp / 2) {
                return this.chainModify(2);
            }
        },
        onModifySpA: function (spa, pokemon) {
            if (pokemon.hp < pokemon.maxhp / 2) {
                return this.chainModify(2);
            }
        }
    },
    "flowergift": {
        inherit: true,
        onAllyModifyAtk: function (atk) {
            if (this.effectData.target.template.speciesid !== 'cherrim') return;
            if (this.isWeather(['sunnyday', 'desolateland'])) {
                return this.chainModify(2/3);
            }
        },
        onAllyModifySpD: function (spd) {
            if (this.effectData.target.template.speciesid !== 'cherrim') return;
            if (this.isWeather(['sunnyday', 'desolateland'])) {
                return this.chainModify(2/3);
            }
        }
    },
    "furcoat": {
        inherit: true,
        onModifyDef: function (def) {
            return this.chainModify(0.5);
        }
    },
    "guts": {
        inherit: true,
        onModifyAtk: function (atk, pokemon) {
            if (pokemon.status) {
                return this.chainModify(2/3);
            }
        }
    },
    "hugepower": {
        inherit: true,
        onModifyAtk: function (atk) {
            return this.chainModify(0.5);
        }
    },
    "hustle": {
        inherit: true,
        onModifyAtk: function (atk) {
            return this.modify(atk, 2/3);
        },
        onModifyMove: function (move) {
            if (move.category === 'Physical' && typeof move.accuracy === 'number') {
                move.accuracy *= 1.25;
            }
        }
    },
    "marvelscale": {
        inherit: true,
        onModifyDef: function (def, pokemon) {
            if (pokemon.status) {
                return this.chainModify(2/3);
            }
        }
    },
    "minus": {
        inherit: true,
        onModifySpA: function (spa, pokemon) {
            var allyActive = pokemon.side.active;
            if (allyActive.length === 1) {
                return;
            }
            for (var i = 0; i < allyActive.length; i++) {
                if (allyActive[i] && allyActive[i].position !== pokemon.position && !allyActive[i].fainted && allyActive[i].hasAbility(['minus', 'plus'])) {
                    return this.chainModify(2/3);
                }
            }
        }
    },
    "plus": {
        inherit: true,
        onModifySpA: function (spa, pokemon) {
            var allyActive = pokemon.side.active;
            if (allyActive.length === 1) {
                return;
            }
            for (var i = 0; i < allyActive.length; i++) {
                if (allyActive[i] && allyActive[i].position !== pokemon.position && !allyActive[i].fainted && allyActive[i].hasAbility(['plus', 'minus'])) {
                    return this.chainModify(2/3);
                }
            }
        }
    },
    "purepower": {
        inherit: true,
        onModifyAtk: function (atk) {
            return this.chainModify(0.5);
        }
    },
    "quickfeet": {
        inherit: true,
        onModifySpe: function (speMod, pokemon) {
            if (pokemon.status) {
                return this.chain(speMod, 2/3);
            }
        }
    },
    "sandrush": {
        inherit: true,
        onModifySpe: function (speMod, pokemon) {
            if (this.isWeather('sandstorm')) {
                return this.chain(speMod, 0.5);
            }
        }
    },
    "sandveil": {
        inherit: true,
        onAccuracy: function (accuracy) {
            if (typeof accuracy !== 'number') return;
            if (this.isWeather('sandstorm')) {
                this.debug('Sand Veil - increasing accuracy');
                return accuracy * 1.25;
            }
        }
    },
    "slowstart": {
        inherit: true,
        effect: {
            duration: 5,
            onStart: function (target) {
                this.add('-start', target, 'Slow Start');
            },
            onModifyAtkPriority: 5,
            onModifyAtk: function (atk, pokemon) {
                return this.chainModify(2);
            },
            onModifySpe: function (speMod, pokemon) {
                return this.chain(speMod, 2);
            },
            onEnd: function (target) {
                this.add('-end', target, 'Slow Start');
            }
        }
    },
    "snowcloak": {
        inherit: true,
        onAccuracy: function (accuracy) {
            if (typeof accuracy !== 'number') return;
            if (this.isWeather('hail')) {
                this.debug('Snow Cloak - increasing accuracy');
                return accuracy * 1.25;
            }
        }
    },
    "solarpower": {
        inherit: true,
        onModifySpA: function (spa, pokemon) {
            if (this.isWeather(['sunnyday', 'desolateland'])) {
                return this.chainModify(2/3);
            }
        },
        onWeather: function (target, source, effect) {
            if (effect.id === 'sunnyday' || effect.id === 'desolateland') {
                this.heal(target.maxhp / 8);
            }
        }
    },
    "swiftswim": {
        inherit: true,
        onModifySpe: function (speMod, pokemon) {
            if (this.isWeather(['raindance', 'primordialsea'])) {
                return this.chain(speMod, 0.5);
            }
        }
    },
    "tangledfeet": {
        inherit: true,
        onAccuracy: function (accuracy, target) {
            if (typeof accuracy !== 'number') return;
            if (target && target.volatiles['confusion']) {
                this.debug('Tangled Feet - increasing accuracy');
                return accuracy * 2;
            }
        }
    },
    "unburden": {
        inherit: true,
        effect: {
            onModifySpe: function (speMod, pokemon) {
                if (!pokemon.item) {
                    return this.chain(speMod, 0.5);
                }
            }
        }
    },
    "victorystar": {
        inherit: true,
        onAllyModifyMove: function (move) {
            if (typeof move.accuracy === 'number') {
                move.accuracy *= 10/11;
            }
        }
    }
};
mods/contrarydubs/items.js
Code:
exports.BattleItems = {
    "choiceband": {
        inherit: true,
        onModifyAtk: function (atk) {
            return this.chainModify(2/3);
        }
    },
    "choicescarf": {
        inherit: true,
        onModifySpe: function (speMod) {
            return this.chain(speMod, 2/3);
        }
    },
    "choicespecs": {
        inherit: true,
        onModifySpA: function (atk) {
            return this.chainModify(2/3);
        }
    },
    "deepseascale": {
        inherit: true,
        onModifySpD: function (spd, pokemon) {
            if (pokemon.baseTemplate.species === 'Clamperl') {
                return this.chainModify(0.5);
            }
        }
    },
    "deepseatooth": {
        inherit: true,
        onModifySpA: function (spa, pokemon) {
            if (pokemon.baseTemplate.species === 'Clamperl') {
                return this.chainModify(0.5);
            }
        }
    },
    "eviolite": {
        inherit: true,
        onModifyDef: function (def, pokemon) {
            if (pokemon.baseTemplate.nfe) {
                return this.chainModify(2/3);
            }
        },
        onModifySpD: function (spd, pokemon) {
            if (pokemon.baseTemplate.nfe) {
                return this.chainModify(2/3);
            }
        }
    },
    "ironball": {
        inherit: true,
        onModifySpe: function (speMod) {
            return this.chain(speMod, 2);
        }
    },
    "lightball": {
        inherit: true,
        onModifyAtk: function (atk, pokemon) {
            if (pokemon.baseTemplate.baseSpecies === 'Pikachu') {
                return this.chainModify(0.5);
            }
        },
        onModifySpA: function (spa, pokemon) {
            if (pokemon.baseTemplate.baseSpecies === 'Pikachu') {
                return this.chainModify(0.5);
            }
        }
    },
    "metalpowder": {
        inherit: true,
        onModifyDef: function (def, pokemon) {
            if (pokemon.template.species === 'Ditto') {
                return this.chainModify(0.6);
            }
        }
    },
    "widelens": {
        inherit: true,
        onModifyMove: function (move, user, target) {
            if (typeof move.accuracy === 'number') {
                move.accuracy *= 10/11;
            }
        }
    },
    "zoomlens": {
        inherit: true,
        onModifyMove: function (move, user, target) {
            if (typeof move.accuracy === 'number' && !this.willMove(target)) {
                this.debug('Zoom Lens reducing accuracy');
                move.accuracy *= 5/6;
            }
        }
    }
};
mods/contrarydubs/statuses.js
Code:
exports.BattleStatuses = {
    //brn is implemented in formats.js
    par: {
        inherit: true,
        onModifySpe: function (speMod, pokemon) {
            if (!pokemon.hasAbility('quickfeet')) {
                return this.chain(speMod, 4);
            }
        }
    }
};
 
Last edited:
Personally, I kinda forgot about items. However, I do agree with lcass that it's probably better if items that directly modify stats are included. This means Choice Band, Specs, Scarf, Assault Vest and Eviolite are affected, as well as a bunch of signature ones. However Leftovers and Life Orb aren't affected since they don't affect a stat directly. Besides that, stuff like Salac Berry working normally sounds very strange.
Well, if you say so. xD Tbh I kinda forgot about items, too, so I wasn't sure how it would be handled. But modifying items, too, does sound like a logical choice. Here is a list of changes made to items:

Absorb Bulb
A consumable item. If the holder is hit by a water type Attack, Special Attack will go down by one stage.

Apicot Berry
Lowers Defense by one stage when HP is low.

Cell Battery
A consumable item. If the holder is hit by an electric type attack, Special Attack will go down by one stage.

Choice Band
Lowers Attack. Only one attack can be used.

Choice Scarf
Lowers Speed. Only one attack can be used.

Choice Specs
Lowers Special Attack. Only one attack can be used.

DeepSeaScale
Decreases Special Defense when held by Clamperl.

DeepSeaTooth
Decreases Special Attack when held by Clamperl.

Eviolite
A lumpy stone. When held, it lowers the Defense and Special Defense of a Pokemon that can still evolve.

Ganlon Berry
Lowers Defense when HP is low.

Liechi Berry
Lowers Attack when HP is low.

Quick Power
Lowers Speed when held by Ditto.

Light Ball
A Pokémon held item that doubles Speed. It makes Flying-type and levitating holders susceptible to Ground moves.

Light Ball
An item to be held by Pikachu. It lowers the Attack and Special Attack of the holder.

Metal Powder
Lowers Defense when held by Ditto.

Macho Brace
An item to be held by a Pokémon. It is a stiff and heavy brace that lowers strong growth but raises Speed.

Petaya Berry
Lowers Special Attack when HP is low.

Starf Berry
Lowers a random stat when HP is low.


Thank you so much Pikachuun for coding it! We really appreciate it :)

You should all post some replays when you have the chance ^^
 
Last edited:

Lcass4919

The Xatu Warrior
Well, if you say so. xD Tbh I kinda forgot about items, too, so I wasn't sure how it would be handled. But modifying items, too, does sound like a logical choice. Here is a list of changes made to items:

Absorb Bulb
A consumable item. If the holder is hit by a water type Attack, Special Attack will go down by one stage.

Cell Battery
A consumable item. If the holder is hit by an electric type attack, Special Attack will go down by one stage.

Choice Band
Lowers Attack. Only one attack can be used.

Choice Scarf
Lowers Speed. Only one attack can be used.

Choice Specs
Lowers Special Attack. Only one attack can be used.

DeepSeaScale
Decreases Special Defense when held by Clamperl.

DeepSeaTooth
Decreases Special Attack when held by Clamperl.

Eviolite
A lumpy stone. When held, it lowers the Defense and Special Defense of a Pokemon that can still evolve.

Ganlon Berry
Lowers Defense when HP is low.

Liechi Berry
Lowers Attack when HP is low.

Quick Power
Lowers Speed when held by Ditto.

Light Ball
An item to be held by Pikachu. It lowers the Attack and Special Attack of the holder.

Metal Powder
Lowers Defense when held by Ditto.

Micle Berry
Lowers a move's accuracy when HP is low.

Petaya Berry
Lowers Special Attack when HP is low.

Starf Berry
Lowers a random stat when HP is low.

Wide Lens
Lowers the accuracy of moves.

Zoom Lens
Lower a move's accuracy if the holder moves last.


Thank you so much Pikachuun for coding it! We really appreciate it :)

You should all post some replays when you have the chance ^^
dont forget about iron ball, lmao iron ball should raise speed 1.5 since it affects the actual speed stat similar to choice band and whatnot.
 

Pikachuun

the entire waruda machine
Well, if you say so. xD Tbh I kinda forgot about items, too, so I wasn't sure how it would be handled. But modifying items, too, does sound like a logical choice. Here is a list of changes made to items:

Absorb Bulb
A consumable item. If the holder is hit by a water type Attack, Special Attack will go down by one stage.

Cell Battery
A consumable item. If the holder is hit by an electric type attack, Special Attack will go down by one stage.

Choice Band
Lowers Attack. Only one attack can be used.

Choice Scarf
Lowers Speed. Only one attack can be used.

Choice Specs
Lowers Special Attack. Only one attack can be used.

DeepSeaScale
Decreases Special Defense when held by Clamperl.

DeepSeaTooth
Decreases Special Attack when held by Clamperl.

Eviolite
A lumpy stone. When held, it lowers the Defense and Special Defense of a Pokemon that can still evolve.

Ganlon Berry
Lowers Defense when HP is low.

Liechi Berry
Lowers Attack when HP is low.

Quick Power
Lowers Speed when held by Ditto.

Light Ball
An item to be held by Pikachu. It lowers the Attack and Special Attack of the holder.

Metal Powder
Lowers Defense when held by Ditto.

Micle Berry
Lowers a move's accuracy when HP is low.

Petaya Berry
Lowers Special Attack when HP is low.

Starf Berry
Lowers a random stat when HP is low.

Wide Lens
Lowers the accuracy of moves.

Zoom Lens
Lower a move's accuracy if the holder moves last.
Done (and due to how I coded it most were already done)

EDIT: Did Choice Items, as well as Iron Ball
 

InfernapeTropius11

get on my level
Scarf users in Trick Room new meta. Btw, me and Snaq both have teams, so if you see either of us on Aqua, feel free to challenge us n.n (unless of course I'm on tablet in which case I have no teams rip)
 

Snaquaza

KACAW
is a Community Contributor Alumnusis a Smogon Media Contributor Alumnusis a Battle Simulator Moderator Alumnus
Stall is useless lmao. What stall pokemon benefits from this at all, Chansey is unusable... RIP Stall
Stall is quite bad in doubles anyway. Doubles has other playstyles, which I don't know too much about honestly, so I won't give a lecture about them.

Though I'm tagging Arcticblast to see what he thinks about this and explain some stuff about doubles.
 
Stall is quite bad in doubles anyway. Doubles has other playstyles, which I don't know too much about honestly, so I won't give a lecture about them.

Though I'm tagging Arcticblast to see what he thinks about this and explain some stuff about doubles.
Fair enough. That's true. I forgot it was doubles, even if this was singles stall would be very difficult too use.
 
Awesome set:

Ursaring @ Flame Orb
Guts
Adamant 252Atk/252spe/4hp
-Protect
-Close Combat/Hammer Arm
-EQ
-Return
(Facade isn't boosted anymore, right?)
Throw down some tailwind and start smashing! This boy gets an immediate +2 attack boost from contrary burn + guts, making him a super strong insta-sweeper. Pick a fighting move for whichever stat u want to boost
 

Martin

A monoid in the category of endofunctors
is a Smogon Discord Contributoris a Forum Moderator Alumnusis a Community Contributor Alumnusis a Contributor Alumnus
Awesome set:

Ursaring @ Flame Orb
Guts
Adamant 252Atk/252spe/4hp
-Protect
-Close Combat/Hammer Arm
-EQ
-Return
(Facade isn't boosted anymore, right?)
Throw down some tailwind and start smashing! This boy gets an immediate +2 attack boost from contrary burn + guts, making him a super strong insta-sweeper. Pick a fighting move for whichever stat u want to boost
Uh... I hate to break this to you, but Guts now lowers your attack and ignores the boost from burn - making this counterproductive as it is giving you 394/1.5=262.67 (rounds to 262) Atk if you use an adamant nature. The only vaible ability for Ursaring is Unnerve (which serves a rather useful purpose in stopping Sitrus/Lum/Chesto Berry - all big in dubs - from being used), and it is, for the most part, outclassed by Aerodactyl - who can make good use of all of Macho Brace, Flame Orb and Focus Sash to equal effect, if not to a greater effect, than Ursaring can).
 
Last edited:
Uh... I hate to break this to you, but Guts now lowers your attack and ignores the boost from burn - making this counterproductive as it is giving you 394/1.5=262.67 (rounds to 262) Atk if you use an adamant nature. The only vaible ability for Ursaring is Unnerve (which serves a rather useful purpose in stopping Sitrus/Lum/Chesto Berry - all big in dubs - from being used), and it is, for the most part, outclassed by Aerodactyl - who can make good use of all of Macho Brace, Flame Orb and Focus Sash to equal effect, if not to a greater effect, than Ursaring can).
Oh wow. I'm just confused, I didn't realize it worked that way. So would Swift Swim halve speed? It's a little confusing.

Ok well forget about Ursaring, how about Mega Kanghaskhan paired up with Sableye to priority burn her and get an attack boost? That could be deadly
 

Martin

A monoid in the category of endofunctors
is a Smogon Discord Contributoris a Forum Moderator Alumnusis a Community Contributor Alumnusis a Contributor Alumnus
Oh wow. I'm just confused, I didn't realize it worked that way. So would Swift Swim halve speed? It's a little confusing.

Ok well forget about Ursaring, how about Mega Kanghaskhan paired up with Sableye to priority burn her and get an attack boost? That could be deadly
Yes, Swift Swim lowers speed.

M-Kanga would get 2x attack (the equivalent to a PuP boost), so Will-O+Return on turn 1 could lead to some terrifying results.
 

Lcass4919

The Xatu Warrior
honestly though, i see no reason moody should be banned...its not banned in vgc or doubles iirc, and on top of that, moody is just a bad ability in this meta overall, even IF you gain +6 evasion, thats like...making them EXTREMELY frail innacurate, and weak.

#freethebipolarsmeargle

its really not a big deal, since it brings nothing to the table. but its still something that shouldnt have a clause for.
 

Martin

A monoid in the category of endofunctors
is a Smogon Discord Contributoris a Forum Moderator Alumnusis a Community Contributor Alumnusis a Contributor Alumnus
Yeah, even in VGC Moody's only even borderline viable user is Smeargle (Dark Void+Follow Me+Spiky Shield/King's Shield+filler) - and it is, put simply, not a good option. Moody abuse isn't as easy in dubs as it is in singles before consideration of the nerfs, and even then it is limited to a number of mediocre-at-best pokemon.

unban moody
 
Plus, Moody, in normal metagames, is INCREASING your stats as time goes to infinity. So, in this Meta, as time goes on you get weaker. To be fair, I see no point in using it at all now unless you do Smeargle Heart Swap shenanigans
 
Regigigas @ Leftovers
Ability: Slow Start
EVs: 252 HP / 252 Atk / 4 SpD
Adamant Nature
- Return
- Earthquake
- Knock Off
- Thunder Punch / Brick Break / Drain Punch

I'm surprised no one ever mentioned this monster.
Pastebin list said:
Slow Start - Temporarily doubles Attack and Speed stat.
This is legal right?
 

Lcass4919

The Xatu Warrior
Regigigas @ Leftovers
Ability: Slow Start
EVs: 252 HP / 252 Atk / 4 SpD
Adamant Nature
- Return
- Earthquake
- Knock Off
- Thunder Punch / Brick Break / Drain Punch

I'm surprised no one ever mentioned this monster.


This is legal right?
"Both Regigigas and Archeops are being quick-banned, since their abilities now make them broken. Also, to prevent things like Burn and Paralysis from being too powerful, the residual damage from Burn remains, and Paralysis still has a chance of preventing a Pokemon from moving." they are banned.
 

Users Who Are Viewing This Thread (Users: 1, Guests: 0)

Top