Got Talent (Playable on ROM!) [Dead - no conditions in Gen 7]

Lcass4919

The Xatu Warrior
something id like to bring up, is the difference between boosting "damage output" and "raising a specific stat" because i already see the people confusing the two. items like choice band, assault vest, eviolite, choice scarf and abilities such as guts, huge power, and fur coat, alongside boosting moves all raise a specific stat. which in this meta, means your attacking stat AND defending/speed stat(if using said stats) huge power raises all cool moves(which are associated with attack now), fur coat raises all tough attacks(which is associated with defense now), and so on and so fourth. items like life orb and the plates, and abilities like adaptability, tough claws, and sheer force boost the "damage output" and NOT the specific stat. which means life orb boosts ALL categories. this is very important to understand, as i imagine a LOT of people will end up getting these two terms mixed up as some people already have, and it is especially important in this meta, as there are more then two stats you can attack from now meaning people will be confused on why swellow's facade is practically no different from before due to 125 speed NOT being affected by guts...which raises attack.
 
Last edited:

InfernapeTropius11

get on my level
I've known about this for a while, but every time I see it again I'm reminded about why I love the idea! So many things get buffed, and it's sometimes hard to guess what moves mons are running. Mons with wide movepools are buffed, as they can potentially go "mixed" and still use their most powerful stat. Here are a few ideas I had:


Ferrothorn looks decent here--it's defense investment boosts the power of Power Whip giving it a psuedo base 131 atk on Power Whip, which hits rly hard if you're invested--and still gives it bulk! Gyro Ball hits just as hard as normal (it's a Cool move, so still uses the Atk stat). Some walls with good mixed bulk may choose to invest in Def and SpD instead of one of the two and HP in order to sacrifice a bit of bulk for more powerful attacks (if their attacks are Tough or Clever).


Mega Gardevoir also seems interesting. It can go "mixed" and has some neat coverage with Ice Punch (Beautiful, uses SpA), Psyshock, (unchanged), Energy Ball (unchanged), and... Return! (Cute, uses Speed) 100 bast Atk 133 BP STAB is no joke, special walls beware:

252+ Atk Base 100 Pixilate Mega Gardevoir Return vs. 4 HP / 252+ Def Eviolite Chansey: 262-310 (40.8 - 48.2%) -- 69.5% chance to 2HKO after Stealth Rock
252+ Atk Base 100 Pixilate Mega Gardevoir Return vs. 248 HP / 0 Def Slowking: 238-282 (60.5 - 71.7%) -- guaranteed 2HKO after Stealth Rock
252+ Atk Base 100 Pixilate Mega Gardevoir Return vs. 96 HP / 0- Def Tornadus-T: 267-315 (82.6 - 97.5%) -- guaranteed OHKO after Stealth Rock
252+ Atk Base 100 Mega Gardevoir Ice Punch vs. 244 HP / 0 Def Gliscor: 248-296 (70.4 - 84%) -- guaranteed 2HKO after Stealth Rock and Poison Heal

It also has 135 SpD, so it can use Hidden Power for coverage. Unfortunately it misses out on Steel-types (Focus Miss is a Cool move) and also loses Hyper Voice (Cool) so it definitely took a hit in viability, but it still seems like a decent lure for those who don't know what to expect haha.


Victini is also really cool--investing in SpA and Speed gives it Glaciate, Fire Blast, Psyshock, and Bolt Strike boosted by SpA, and U-Turn boosted by Speed, so it can be a cool mixed Scarfer/Specs(er?) with max investment on all of its moves, instead of having to choose between physical or special. Strong mixed attackers in general are really good here, and Scarf Diggersby sounds scary af among other things (Ninjask OP).
 
Nice Mtea as always nv, its good to see this approved. Of course sine I took to long most of my already theorymonned Ideas have been posted, but lets go anyway!
Many Fighting types such as (Mega) Heracross, Gallade, and Medicham now get fighting priority in the form of vacuum wave. Machamp does as well, but ist rather less notable. Since these pokemon previously had to use offstab moves or go without, this could be very helpful.
Iron Head/Earthquake/Curse/Stone Edge M-steelix is the definition of bulky offense. While Curse's attack boost is no longer helpful, it is the best this behemoth gets
Iron Defense/Earthquake/Stone Edge/Drain Punch Regirock fulfills a similar role. While it is weaker and lacks the steel type, it makes up for them with iron defense, which doubles its defensive bulk and offensive precense. This, more than anything, is why I think shuckle is managable- It can only boost by one stage, has a mediocre spd movepool, and is weak to rock. SInce physical defense appears likely to dominate the metagame, shuckle's power is comparatively less, at least in terms of damage dealt.
 
Adding an analysis of some notable users of Eviolite that got left out of Jajoken's post, because their defense stats were lower than 120. A lot of these NFEs and LCs stand out above their fully evolved forms because, while they may not be as bulky in some cases, Eviolite makes them hit much harder with Tough and Clever moves.

: Already in UU with just 75 base attack, Gligar is a force to be reckoned with in GT. Sporting an Eviolite boosted 105 Defense and a decent Tough movepool (Earthquake, Stone Edge, Crunch), Gligar can hit much harder than before, while still maintaining its bulk.
: Not much different than normal, but uses Sludge Bomb instead of Brave Bird. Can also use Giga Drain to utilize its Special Defense.
: While not nearly as bulky as its evolution, Ferrothorn, Ferroseed hits about 17% harder with Power Whip after Eviolite, and its Knock Off also gets a boost. Unfortunately, Gyro Ball is Cool, so you have to use Iron Head instead, which is too bad; with all the speed demons in this meta, Gyro Ball off of base 10 speed is pretty much guaranteed to have max power most of the time.
: Both bulkier and more powerful than standard Metagross, Metang hits nearly as hard as Gligar, and also has some decent power behind Zen Headbutt and Knock off if you want to go "mixed." It does lose out on Meteor Mash and Gyro Ball, though, so Metagross is probably still better in most cases.
: Essentially a better Tangrowth. Tangela has a base 115 Def and access to Eviolite, and an amazing Tough movepool which includes Power Whip, Earthquake, and Sludge Bomb. Tangela is also yet another victim of one if its best moves using one of its worst stats: Giga Drain uses its base 40 SpD, which gets a boost from Eviolite, but is still very weak.
: This little underdog has a base 100 Def and access to Iron Defense along with a plethora of Tough Moves, including STAB Dragon Rush. Unfortunately, it doesn't get Dragon Tail, which would be much more useful, and Dragon isn't the best defensive typing. Oh, and it lacks recovery outside of Rest.
: If for some reason you really want some kind of Pupa/Shell-based NFE, Whirlipede is probably the better option. Not only does it get Iron Defense as well, it also has Speed Boost, Toxic Spikes, and Baton Pass.
: Has more powerful Scalds than Slowbro, but Alomomola is probably better overall.

: Can seriously hurt Fighting types on the switch-in with Psychic off of 463 SpD, and can toss around Knock Offs with the very same stat. And Rock Tomb for screwing over speedy birds and bugs, I guess. Otherwise, Chansey is still Chansey.
: Porygon2 also gets powerful Psychics, but analytic makes it hit much harder, and Porygon2 still has a usable Special Attack, so it can run things like Ice Beam and Thunderbolt. As for Tri Attack, nv forgot to add it to the list in the OP, but it's Beauty, so Porygon2 can still reliably use it. However, Porygon2 does suffer from not learning Knock Off, and with the significant decrease in the number of Pokemon running Swords Dance and Dragon Dance, Foul Play is much less effective. In my opinion, Foul Play should be changed to use the target's Special Defense stat instead of their Attack, as it can be described as using the targets stats in general, not just specifically their Attack.
: Unaware is a handy ability to have in a meta where everything is using Iron Defense/Amnesia/Agility, and Clefairy unfortunately doesn't get Unaware, but Magic Guard is still a good ability. Stored Power is Clever, so it uses Special Defense. This means that a Cosmic Power set can absolutely demolish if allowed to set up. (This is also a viable strategy on Clefable, if no one's mentioned it yet.)
: Having Shadow Ball and Shadow Sneak using Special Defense to calculate damage is a significant improvement, but Dusclops outclasses it in all but speed.
: While Vullaby is usually more physically defensive, you can't ignore an Eviolite boosted STAB Knock Off. It's a significant improvement over Foul Play, whose viability is currently reduced.
: Basically a special version of Shelgon. It still doesn't get Dragon Tail, but it does get better abilities. Assault Vest Goodra is basically a 100% improvement over this, though.
 
Last edited:
: Unaware is a handy ability to have in a meta where everything is using Iron Defense/Amnesia/Agility, and Stored Power is Clever, so it uses Special Defense. This means that a Cosmic Power set can absolutely demolish if allowed to set up. (This is also a viable strategy on Clefable, if no one's mentioned it yet.)
Unfortunately, Clefairy doesn't get Unaware. As its Hidden Ability it gets Friend Guard (which is totally pointless in Singles). That's too bad, because Unaware Clefairy could have been a nice Pokemon. But hey, there is still Magic Guard.
 

AWailOfATail

viva la darmz
I really just felt like coding this
config/formats.js
Code:
  {
     name: "Got Talent?",
     section: "Other Metagames",
     mod: 'gottalent',


     ruleset: ['Pokemon', 'Standard', 'Baton Pass Clause', 'Swagger Clause', 'Team Preview'],
     banlist: ['Arceus', 'Blaziken', 'Darkrai', 'Deoxys', 'Deoxys-Attack', 'Deoxys-Defense', 'Deoxys-Speed', 'Dialga', 'Genesect', 'Giratina',
       'Giratina-Origin', 'Greninja', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo', 'Palkia', 'Rayquaza', 'Reshiram',
       'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom', 'Gengarite', 'Kangaskhanite', 'Lucarionite', 'Mawilite', 'Salamencite', 'Soul Dew', 'Shadow Tag',
     ],
   },
mods/gottalent/scripts.js
NOTE: code is fairly large and therefore in another hide tag
Code:
'use strict';

exports.BattleScripts = {
   init: function () {

   
let coolMoves = ['acrobatics', 'aerialace', 'aquajet', 'blazekick', 'bravebird', 'brickbreak', 'bulletseed',
         'circlethrow', 'crosschop', 'crosspoison', 'crushclaw', 'cut', 'doublehit', 'doublekick',
         'dragonclaw', 'drillpeck', 'dynamicpunch', 'extremespeed', 'falseswipe', 'fellstinger',
         'firefang', 'flamecharge', 'flareblitz', 'forcepalm', 'furyattack', 'furycutter',
         'fusionbolt', 'gyroball', 'highjumpkick', 'hornattack', 'hyperfang', 'icefang', 'irontail',
         'jumpkick', 'leafblade', 'machpunch', 'magnetbomb', 'megakick', 'megahorn', 'metalclaw',
         'meteormash', 'nightslash', 'outrage', 'peck', 'phantomforce', 'pinmissile', 'precipiceblades',
         'psychocut', 'punishment', 'quickattack', 'rapidspin', 'razorleaf', 'razorshell', 'retaliate', 'reversal',
         'rollingkick', 'sacredsword', 'shadowclaw', 'shadowforce', 'skyattack', 'skyuppercut', 'slash',
         'spark', 'spikecannon', 'steelwing', 'stormthrow', 'submission', 'thunderfang', 'thunderpunch',
         'triplekick', 'twineedle', 'vcreate', 'vinewhip', 'vitalthrow', 'volttackle', 'watershuriken',
         'wingattack', 'xscissor', 'aeroblast', 'aircutter', 'airslash', 'darkpulse', 'dragonbreath',
         'electroball', 'extrasensory', 'focusblast', 'hyperbeam', 'hypervoice', 'leaftornado',
         'nightdaze', 'oblivionwing', 'psystrike', 'searingshot', 'shockwave', 'solarbeam', 'swift',
         'technoblast', 'thunder', 'thunderbolt', 'vacuumwave', 'voltswitch', 'zapcannon',
         //everything after this is nv's fault
         'holdback', 'razorwind', 'thundershock', 'trumpcard', 'twister'];
    
    
     let toughMoves = ['armthrust', 'bite', 'bodyslam', 'boneclub', 'bonerush', 'bonemerang', 'bulldoze',
         'bulletpunch', 'chipaway', 'clamp', 'closecombat', 'crabhammer', 'crunch', 'dig', 'doubleedge',
         'dragonrush', 'dragontail', 'drainpunch', 'drillrun', 'dualchop', 'earthquake', 'firepunch',
         'flyingpress', 'focuspunch', 'gunkshot', 'hammerarm', 'headcharge', 'headsmash', 'headbutt',
         'heatcrash', 'heavyslam', 'hornleech', 'hyperspacefury', 'ironhead', 'lowkick', 'poisonjab',
         'powerwhip', 'poweruppunch', 'revenge', 'rockblast', 'rockclimb', 'rockslide', 'rockthrow',
         'rockwrecker', 'seedbomb', 'skullbash', 'slam', 'smackdown', 'smellingsalts', 'steamroller',
         'stomp', 'stoneedge', 'superpower', 'takedown', 'thief', 'wakeupslap', 'waterfall', 'wildcharge',
         'woodhammer', 'ancientpower', 'belch', 'boomburst', 'hurricane', 'incinerate', 'lavaplume',
         'magmastorm', 'muddywater', 'octazooka', 'scald', 'sludgebomb', 'sludgewave', 'snarl',
         //everything after this is nv's fault
         'bind', 'cometpunch', 'constrict', 'crushgrip', 'furyswipes', 'gigaimpact', 'karatechop',
         'magnitude', 'megapunch', 'payback', 'pound', 'rage', 'rocksmash', 'scratch', 'skydrop', 'strength',
         'tackle', 'thrash', 'vicegrip', 'wrap', 'brine', 'mudshot', 'sludge', 'smog', 'spitup', 'wringout'];

     let beautifulMoves = ['aquatail', 'avalanche', 'boltstrike', 'diamondstorm', 'explosion', 'firespin',
         'flamewheel', 'freezeshock', 'iceball', 'icepunch', 'iceshard', 'iciclecrash', 'iciclespear', 'landswrath',
         'petalblizzard', 'sacredfire', 'acidspray', 'aurasphere', 'blizzard', 'blueflare', 'bugbuzz', 'dazzlinggleam',
         'doomdesire', 'dracometeor', 'dragonpulse', 'earthpower', 'energyball', 'eruption', 'fierydance',
         'fireblast', 'flamethrower', 'flashcannon', 'freezedry', 'glaciate', 'heatwave', 'hydropump', 'icebeam',
         'icywind', 'inferno', 'leafstorm', 'moonblast', 'mysticalfire', 'naturepower', 'originpulse', 'overheat',
         'petaldance', 'powergem', 'psyshock', 'secretsword', 'seedflare', 'signalbeam', 'surf', 'triattack', 'waterpulse',
         'waterspout', 'weatherball',
         //nv's fault again
         'dive', 'dragonascent', 'selfdestruct', 'aurorabeam', 'blastburn', 'bubblebeam', 'chargebeam', 'clearsmog',
         'discharge', 'echoedvoice', 'electroweb', 'fairywind', 'firepledge', 'flameburst', 'frostbreath',
         'fusionflare', 'grasspledge', 'hydrocannon', 'iceburn', 'judgment', 'magicalleaf', 'mirrorshot',
         'ominouswind', 'powdersnow', 'psybeam', 'relicsong', 'roaroftime', 'round', 'silverwind', 'spacialrend',
         'venoshock', 'waterpledge', 'whirlpool'];

     let cleverMoves = ['attackorder', 'feint', 'feintattack', 'foulplay', 'geargrind', 'knockoff', 'lowsweep', 'naturalgift',
         'needlearm', 'poisonfang', 'poisontail', 'pursuit', 'rocktomb', 'shadowpunch', 'shadowsneak',
         'suckerpunch', 'zenheadbutt', 'dreameater', 'futuresight', 'gigadrain', 'hex', 'hiddenpower',
         'hyperspacehole', 'lusterpurge', 'mistball', 'paraboliccharge', 'psychic', 'psychoboost',
         'shadowball', 'storedpower',
         //NV SwiftRage
         'assurance', 'beatup', 'fly', 'payday', 'poisonsting', 'sandtomb', 'secretpower', 'absorb', 'acid',
         'confusion', 'gust', 'leechlife', 'megadrain', 'synchronoise'];

     let cuteMoves = ['bounce', 'bugbite', 'facade', 'fakeout', 'frustration', 'heartstamp', 'nuzzle', 'playrough', 'return',
         'rollout', 'tailslap', 'uturn', 'drainingkiss', 'grassknot', 'infestation', 'mudbomb', 'strugglebug', 'uproar',
         //you know the drill
         'astonish', 'barrage', 'covet', 'dizzypunch', 'doubleslap', 'eggbomb', 'flail', 'fling', 'lastresort', 'lick',
         'pluck', 'present', 'bubble', 'chatter', 'disarmingvoice', 'ember', 'mudslap', 'snore', 'watergun'];


     //applying coolness
     for (let i = 0; i < coolMoves.length; i++) {
       let applyTo = coolMoves[i];
       this.modData('Movedex', applyTo).contestCondition = 'cool';
     }
   
     //toughness
     for (let i = 0; i < toughMoves.length; i++) {
       let applyTo = toughMoves[i];
       this.modData('Movedex', applyTo).contestCondition = 'tough';
     }

     //beauty
     for (let i = 0; i < beautifulMoves.length; i++) {
       let applyTo = beautifulMoves[i];
       this.modData('Movedex', applyTo).contestCondition = 'beautiful';
     }

     //cleverness
     for (let i = 0; i < cleverMoves.length; i++) {
       let applyTo = cleverMoves[i];
       this.modData('Movedex', applyTo).contestCondition = 'clever';
     }

     //cuteness
     for (let i = 0; i < cuteMoves.length; i++) {
       let applyTo = cuteMoves[i];
       this.modData('Movedex', applyTo).contestCondition = 'cute';
     }
   
   },
   getDamage: function (pokemon, target, move, suppressMessages) {
     if (typeof move === 'string') move = this.getMove(move);

     if (typeof move === 'number') {
       move = {
         basePower: move,
         type: '???',
         category: 'Physical',
         flags: {},
       };
     }

     if (!move.ignoreImmunity || (move.ignoreImmunity !== true && !move.ignoreImmunity[move.type])) {
       if (!target.runImmunity(move.type, !suppressMessages)) {
         return false;
       }
     }

     if (move.ohko) {
       return target.maxhp;
     }

     if (move.damageCallback) {
       return move.damageCallback.call(this, pokemon, target);
     }
     if (move.damage === 'level') {
       return pokemon.level;
     }
     if (move.damage) {
       return move.damage;
     }

     if (!move) {
       move = {};
     }
     if (!move.type) move.type = '???';
     let type = move.type;
     // '???' is typeless damage: used for Struggle and Confusion etc
     let category = this.getCategory(move);
     let defensiveCategory = move.defensiveCategory || category;

     let basePower = move.basePower;
     if (move.basePowerCallback) {
       basePower = move.basePowerCallback.call(this, pokemon, target, move);
     }
     if (!basePower) {
       if (basePower === 0) return; // returning undefined means not dealing damage
       return basePower;
     }
     basePower = this.clampIntRange(basePower, 1);

     let critMult;
     if (this.gen <= 5) {
       move.critRatio = this.clampIntRange(move.critRatio, 0, 5);
       critMult = [0, 16, 8, 4, 3, 2];
     } else {
       move.critRatio = this.clampIntRange(move.critRatio, 0, 4);
       critMult = [0, 16, 8, 2, 1];
     }

     move.crit = move.willCrit || false;
     if (move.willCrit === undefined) {
       if (move.critRatio) {
         move.crit = (this.random(critMult[move.critRatio]) === 0);
       }
     }

     if (move.crit) {
       move.crit = this.runEvent('CriticalHit', target, null, move);
     }

     // happens after crit calculation
     basePower = this.runEvent('BasePower', pokemon, target, move, basePower, true);

     if (!basePower) return 0;
     basePower = this.clampIntRange(basePower, 1);

     let level = pokemon.level;

     let attacker = pokemon;
     let defender = target;
     let attackStat;
   
     //tada!
     if (move.contestCondition) {
       if (move.contestCondition === 'cool') attackStat = 'atk';
       else if (move.contestCondition === 'tough') attackStat = 'def';
       else if (move.contestCondition === 'beautiful') attackStat = 'spa';
       else if (move.contestCondition === 'clever') attackStat = 'spd';
       else if (move.contestCondition === 'cute') attackStat = 'spe';
     }

     let defenseStat = defensiveCategory === 'Physical' ? 'def' : 'spd';
     let statTable = {atk:'Atk', def:'Def', spa:'SpA', spd:'SpD', spe:'Spe'};
     let attack;
     let defense;

     let atkBoosts = move.useTargetOffensive ? defender.boosts[attackStat] : attacker.boosts[attackStat];
     let defBoosts = move.useSourceDefensive ? attacker.boosts[defenseStat] : defender.boosts[defenseStat];

     let ignoreNegativeOffensive = !!move.ignoreNegativeOffensive;
     let ignorePositiveDefensive = !!move.ignorePositiveDefensive;

     if (move.crit) {
       ignoreNegativeOffensive = true;
       ignorePositiveDefensive = true;
     }
     let ignoreOffensive = !!(move.ignoreOffensive || (ignoreNegativeOffensive && atkBoosts < 0));
     let ignoreDefensive = !!(move.ignoreDefensive || (ignorePositiveDefensive && defBoosts > 0));

     if (ignoreOffensive) {
       this.debug('Negating (sp)atk boost/penalty.');
       atkBoosts = 0;
     }
     if (ignoreDefensive) {
       this.debug('Negating (sp)def boost/penalty.');
       defBoosts = 0;
     }

     if (move.useTargetOffensive) {
       attack = defender.calculateStat(attackStat, atkBoosts);
     } else {
       attack = attacker.calculateStat(attackStat, atkBoosts);
     }

     if (move.useSourceDefensive) {
       defense = attacker.calculateStat(defenseStat, defBoosts);
     } else {
       defense = defender.calculateStat(defenseStat, defBoosts);
     }

     // Apply Stat Modifiers
     attack = this.runEvent('Modify' + statTable[attackStat], attacker, defender, move, attack);
     defense = this.runEvent('Modify' + statTable[defenseStat], defender, attacker, move, defense);

     //int(int(int(2 * L / 5 + 2) * A * P / D) / 50);
     let baseDamage = Math.floor(Math.floor(Math.floor(2 * level / 5 + 2) * basePower * attack / defense) / 50) + 2;

     // multi-target modifier (doubles only)
     if (move.spreadHit) {
       let spreadModifier = move.spreadModifier || 0.75;
       this.debug('Spread modifier: ' + spreadModifier);
       baseDamage = this.modify(baseDamage, spreadModifier);
     }

     // weather modifier
     baseDamage = this.runEvent('WeatherModifyDamage', pokemon, target, move, baseDamage);

     // crit
     if (move.crit) {
       baseDamage = this.modify(baseDamage, move.critModifier || (this.gen >= 6 ? 1.5 : 2));
     }

     // this is not a modifier
     baseDamage = this.randomizer(baseDamage);

     // STAB
     if (move.hasSTAB || type !== '???' && pokemon.hasType(type)) {
       // The "???" type never gets STAB
       // Not even if you Roost in Gen 4 and somehow manage to use
       // Struggle in the same turn.
       // (On second thought, it might be easier to get a Missingno.)
       baseDamage = this.modify(baseDamage, move.stab || 1.5);
     }
     // types
     move.typeMod = target.runEffectiveness(move);

     move.typeMod = this.clampIntRange(move.typeMod, -6, 6);
     if (move.typeMod > 0) {
       if (!suppressMessages) this.add('-supereffective', target);

       for (let i = 0; i < move.typeMod; i++) {
         baseDamage *= 2;
       }
     }
     if (move.typeMod < 0) {
       if (!suppressMessages) this.add('-resisted', target);

       for (let i = 0; i > move.typeMod; i--) {
         baseDamage = Math.floor(baseDamage / 2);
       }
     }

     if (move.crit && !suppressMessages) this.add('-crit', target);

     if (pokemon.status === 'brn' && basePower && move.category === 'Physical' && !pokemon.hasAbility('guts')) {
       if (this.gen < 6 || move.id !== 'facade') {
         baseDamage = this.modify(baseDamage, 0.5);
       }
     }

     // Generation 5 sets damage to 1 before the final damage modifiers only
     if (this.gen === 5 && basePower && !Math.floor(baseDamage)) {
       baseDamage = 1;
     }

     // Final modifier. Modifiers that modify damage after min damage check, such as Life Orb.
     baseDamage = this.runEvent('ModifyDamage', pokemon, target, move, baseDamage);

     if (this.gen !== 5 && basePower && !Math.floor(baseDamage)) {
       return 1;
     }

     return Math.floor(baseDamage);
   },
};


If anything doesn't work, let me know.
A move from each category has been tested and works accordingly :) They use the correct attacking stat but the normal defensive stat.
AKA I tested Ninjask's Bug Bite on a Ninetales. It used Ninjask's speed and Ninetales' defense. And yes, each turn, since Ninjask's speed increased, the damage increased.

Also if any moves aren't working correctly, then they're probably not in the list of 'cool' moves or whatever category they're in. Blame the OP
[21:11:30] +nv: Yea you can blame me since I did the list all on my own


EDIT: Code updated on April 11
 
Last edited:

nv

The Lost Age
is a Community Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis a Battle Simulator Staff Alumnus
I really just felt like coding this
config/formats.js
Code:
  {
     name: "Got Talent?",
     section: "Other Metagames",
     mod: 'gottalent',


     ruleset: ['Pokemon', 'Standard', 'Baton Pass Clause', 'Swagger Clause', 'Team Preview'],
     banlist: ['Arceus', 'Blaziken', 'Darkrai', 'Deoxys', 'Deoxys-Attack', 'Deoxys-Defense', 'Deoxys-Speed', 'Dialga', 'Genesect', 'Giratina',
       'Giratina-Origin', 'Greninja', 'Groudon', 'Ho-Oh', 'Kyogre', 'Kyurem-White', 'Lugia', 'Mewtwo', 'Palkia', 'Rayquaza', 'Reshiram',
       'Shaymin-Sky', 'Xerneas', 'Yveltal', 'Zekrom', 'Gengarite', 'Kangaskhanite', 'Lucarionite', 'Mawilite', 'Salamencite', 'Soul Dew', 'Shadow Tag',
     ],
   },
mods/gottalent/scripts.js
NOTE: code is fairly large and therefore in another hide tag
Code:
'use strict';

exports.BattleScripts = {
   init: function () {

     let coolMoves = ['acrobatics', 'aerialace', 'aquajet', 'blazekick', 'bravebird', 'brickbreak', 'bulletseed',
         'circlethrow', 'crosschop', 'crosspoison', 'crushclaw', 'cut', 'doublehit', 'doublekick',
         'dragonclaw', 'drillpeck', 'dynamicpunch', 'extremespeed', 'falseswipe', 'fellstinger',
         'firefang', 'flamecharge', 'flareblitz', 'forcepalm', 'furyattack', 'furycutter',
         'fusionbolt', 'gyroball', 'highjumpkick', 'hornattack', 'hyperfang', 'icefang', 'irontail',
         'jumpkick', 'leafblade', 'machpunch', 'magnetbomb', 'megakick', 'megahorn', 'metalclaw',
         'meteormash', 'nightslash', 'outrage', 'peck', 'phantomforce', 'pinmissile', 'precipiceblades',
         'psychocut', 'punishment', 'quickattack', 'rapidspin', 'razorleaf', 'razorshell', 'retaliate', 'reversal',
         'rollingkick', 'sacredsword', 'shadowclaw', 'shadowforce', 'skyattack', 'skyuppercut', 'slash',
         'spark', 'spikecannon', 'steelwing', 'stormthrow', 'submission', 'thunderfang', 'thunderpunch',
         'triplekick', 'twineedle', 'vcreate', 'vinewhip', 'vitalthrow', 'volttackle', 'watershuriken',
         'wingattack', 'xscissor', 'aeroblast', 'aircutter', 'airslash', 'darkpulse', 'dragonbreath',
         'electroball', 'extrasensory', 'focusblast', 'hyperbeam', 'hypervoice', 'leaftornado',
         'nightdaze', 'oblivionwing', 'psystrike', 'searingshot', 'shockwave', 'solarbeam', 'swift',
         'technoblast', 'thunder', 'thunderbolt', 'vacuumwave', 'voltswitch', 'zapcannon'];
    
    
     let toughMoves = ['armthrust', 'bite', 'bodyslam', 'boneclub', 'bonerush', 'bonemerang', 'bulldoze',
         'bulletpunch', 'chipaway', 'clamp', 'closecombat', 'crabhammer', 'crunch', 'dig', 'doubleedge',
         'dragonrush', 'dragontail', 'drainpunch', 'drillrun', 'dualchop', 'earthquake', 'firepunch',
         'flyingpress', 'focuspunch', 'gunkshot', 'hammerarm', 'headcharge', 'headsmash', 'headbutt',
         'heatcrash', 'heavyslam', 'hornleech', 'hyperspacefury', 'ironhead', 'lowkick', 'poisonjab',
         'powerwhip', 'poweruppunch', 'revenge', 'rockblast', 'rockclimb', 'rockslide', 'rockthrow',
         'rockwrecker', 'seedbomb', 'skullbash', 'slam', 'smackdown', 'smellingsalts', 'steamroller',
         'stomp', 'stoneedge', 'superpower', 'takedown', 'thief', 'wakeupslap', 'waterfall', 'wildcharge',
         'woodhammer', 'ancientpower', 'belch', 'boomburst', 'hurricane', 'incinerate', 'lavaplume',
         'magmastorm', 'muddywater', 'octazooka', 'scald', 'sludgebomb', 'sludgewave', 'snarl'];

     let beautifulMoves = ['aquatail', 'avalanche', 'boltstrike', 'diamondstorm', 'explosion', 'firespin',
         'flamewheel', 'freezeshock', 'iceball', 'icepunch', 'iceshard', 'iciclecrash', 'iciclespear', 'landswrath',
         'petalblizzard', 'sacredfire', 'acidspray', 'aurasphere', 'blizzard', 'blueflare', 'bugbuzz', 'dazzlinggleam',
         'doomdesire', 'dracometeor', 'dragonpulse', 'earthpower', 'energyball', 'eruption', 'fierydance',
         'fireblast', 'flamethrower', 'flashcannon', 'freezedry', 'glaciate', 'heatwave', 'hydropump', 'icebeam',
         'icywind', 'inferno', 'leafstorm', 'moonblast', 'mysticalfire', 'naturepower', 'originpulse', 'overheat',
         'petaldance', 'powergem', 'psyshock', 'secretsword', 'seedflare', 'signalbeam', 'surf', 'triattack', 'waterpulse',
         'waterspout', 'weatherball'];

     let cleverMoves = ['attackorder', 'feint', 'feintattack', 'foulplay', 'geargrind', 'knockoff', 'lowsweep', 'naturalgift',
         'needlearm', 'poisonfang', 'poisontail', 'pursuit', 'rocktomb', 'shadowpunch', 'shadowsneak',
         'suckerpunch', 'zenheadbutt', 'dreameater', 'futuresight', 'gigadrain', 'hex', 'hiddenpower',
         'hyperspacehole', 'lusterpurge', 'mistball', 'paraboliccharge', 'psychic', 'psychoboost',
         'shadowball', 'storedpower'];

     let cuteMoves = ['bounce', 'bugbite', 'facade', 'fakeout', 'frustration', 'heartstamp', 'nuzzle', 'playrough', 'return',
         'rollout', 'tailslap', 'uturn', 'drainingkiss', 'grassknot', 'infestation', 'mudbomb', 'strugglebug', 'uproar'];

     //applying coolness
     for (let i = 0; i < coolMoves.length; i++) {
       let applyTo = coolMoves[i];
       this.modData('Movedex', applyTo).contestCondition = 'cool';
     }
    
     //toughness
     for (let i = 0; i < toughMoves.length; i++) {
       let applyTo = toughMoves[i];
       this.modData('Movedex', applyTo).contestCondition = 'tough';
     }

     //beauty
     for (let i = 0; i < beautifulMoves.length; i++) {
       let applyTo = beautifulMoves[i];
       this.modData('Movedex', applyTo).contestCondition = 'beautiful';
     }

     //cleverness
     for (let i = 0; i < cleverMoves.length; i++) {
       let applyTo = cleverMoves[i];
       this.modData('Movedex', applyTo).contestCondition = 'clever';
     }

     //cuteness
     for (let i = 0; i < cuteMoves.length; i++) {
       let applyTo = cuteMoves[i];
       this.modData('Movedex', applyTo).contestCondition = 'cute';
     }
    
   },
   getDamage: function (pokemon, target, move, suppressMessages) {
     if (typeof move === 'string') move = this.getMove(move);

     if (typeof move === 'number') {
       move = {
         basePower: move,
         type: '???',
         category: 'Physical',
         flags: {},
       };
     }

     if (!move.ignoreImmunity || (move.ignoreImmunity !== true && !move.ignoreImmunity[move.type])) {
       if (!target.runImmunity(move.type, !suppressMessages)) {
         return false;
       }
     }

     if (move.ohko) {
       return target.maxhp;
     }

     if (move.damageCallback) {
       return move.damageCallback.call(this, pokemon, target);
     }
     if (move.damage === 'level') {
       return pokemon.level;
     }
     if (move.damage) {
       return move.damage;
     }

     if (!move) {
       move = {};
     }
     if (!move.type) move.type = '???';
     let type = move.type;
     // '???' is typeless damage: used for Struggle and Confusion etc
     let category = this.getCategory(move);
     let defensiveCategory = move.defensiveCategory || category;

     let basePower = move.basePower;
     if (move.basePowerCallback) {
       basePower = move.basePowerCallback.call(this, pokemon, target, move);
     }
     if (!basePower) {
       if (basePower === 0) return; // returning undefined means not dealing damage
       return basePower;
     }
     basePower = this.clampIntRange(basePower, 1);

     let critMult;
     if (this.gen <= 5) {
       move.critRatio = this.clampIntRange(move.critRatio, 0, 5);
       critMult = [0, 16, 8, 4, 3, 2];
     } else {
       move.critRatio = this.clampIntRange(move.critRatio, 0, 4);
       critMult = [0, 16, 8, 2, 1];
     }

     move.crit = move.willCrit || false;
     if (move.willCrit === undefined) {
       if (move.critRatio) {
         move.crit = (this.random(critMult[move.critRatio]) === 0);
       }
     }

     if (move.crit) {
       move.crit = this.runEvent('CriticalHit', target, null, move);
     }

     // happens after crit calculation
     basePower = this.runEvent('BasePower', pokemon, target, move, basePower, true);

     if (!basePower) return 0;
     basePower = this.clampIntRange(basePower, 1);

     let level = pokemon.level;

     let attacker = pokemon;
     let defender = target;
     let attackStat;
    
     //tada!
     if (move.contestCondition) {
       if (move.contestCondition === 'cool') attackStat = 'atk';
       else if (move.contestCondition === 'tough') attackStat = 'def';
       else if (move.contestCondition === 'beautiful') attackStat = 'spa';
       else if (move.contestCondition === 'clever') attackStat = 'spd';
       else if (move.contestCondition === 'cute') attackStat = 'spe';
     }

     let defenseStat = defensiveCategory === 'Physical' ? 'def' : 'spd';
     let statTable = {atk:'Atk', def:'Def', spa:'SpA', spd:'SpD', spe:'Spe'};
     let attack;
     let defense;

     let atkBoosts = move.useTargetOffensive ? defender.boosts[attackStat] : attacker.boosts[attackStat];
     let defBoosts = move.useSourceDefensive ? attacker.boosts[defenseStat] : defender.boosts[defenseStat];

     let ignoreNegativeOffensive = !!move.ignoreNegativeOffensive;
     let ignorePositiveDefensive = !!move.ignorePositiveDefensive;

     if (move.crit) {
       ignoreNegativeOffensive = true;
       ignorePositiveDefensive = true;
     }
     let ignoreOffensive = !!(move.ignoreOffensive || (ignoreNegativeOffensive && atkBoosts < 0));
     let ignoreDefensive = !!(move.ignoreDefensive || (ignorePositiveDefensive && defBoosts > 0));

     if (ignoreOffensive) {
       this.debug('Negating (sp)atk boost/penalty.');
       atkBoosts = 0;
     }
     if (ignoreDefensive) {
       this.debug('Negating (sp)def boost/penalty.');
       defBoosts = 0;
     }

     if (move.useTargetOffensive) {
       attack = defender.calculateStat(attackStat, atkBoosts);
     } else {
       attack = attacker.calculateStat(attackStat, atkBoosts);
     }

     if (move.useSourceDefensive) {
       defense = attacker.calculateStat(defenseStat, defBoosts);
     } else {
       defense = defender.calculateStat(defenseStat, defBoosts);
     }

     // Apply Stat Modifiers
     attack = this.runEvent('Modify' + statTable[attackStat], attacker, defender, move, attack);
     defense = this.runEvent('Modify' + statTable[defenseStat], defender, attacker, move, defense);

     //int(int(int(2 * L / 5 + 2) * A * P / D) / 50);
     let baseDamage = Math.floor(Math.floor(Math.floor(2 * level / 5 + 2) * basePower * attack / defense) / 50) + 2;

     // multi-target modifier (doubles only)
     if (move.spreadHit) {
       let spreadModifier = move.spreadModifier || 0.75;
       this.debug('Spread modifier: ' + spreadModifier);
       baseDamage = this.modify(baseDamage, spreadModifier);
     }

     // weather modifier
     baseDamage = this.runEvent('WeatherModifyDamage', pokemon, target, move, baseDamage);

     // crit
     if (move.crit) {
       baseDamage = this.modify(baseDamage, move.critModifier || (this.gen >= 6 ? 1.5 : 2));
     }

     // this is not a modifier
     baseDamage = this.randomizer(baseDamage);

     // STAB
     if (move.hasSTAB || type !== '???' && pokemon.hasType(type)) {
       // The "???" type never gets STAB
       // Not even if you Roost in Gen 4 and somehow manage to use
       // Struggle in the same turn.
       // (On second thought, it might be easier to get a Missingno.)
       baseDamage = this.modify(baseDamage, move.stab || 1.5);
     }
     // types
     move.typeMod = target.runEffectiveness(move);

     move.typeMod = this.clampIntRange(move.typeMod, -6, 6);
     if (move.typeMod > 0) {
       if (!suppressMessages) this.add('-supereffective', target);

       for (let i = 0; i < move.typeMod; i++) {
         baseDamage *= 2;
       }
     }
     if (move.typeMod < 0) {
       if (!suppressMessages) this.add('-resisted', target);

       for (let i = 0; i > move.typeMod; i--) {
         baseDamage = Math.floor(baseDamage / 2);
       }
     }

     if (move.crit && !suppressMessages) this.add('-crit', target);

     if (pokemon.status === 'brn' && basePower && move.category === 'Physical' && !pokemon.hasAbility('guts')) {
       if (this.gen < 6 || move.id !== 'facade') {
         baseDamage = this.modify(baseDamage, 0.5);
       }
     }

     // Generation 5 sets damage to 1 before the final damage modifiers only
     if (this.gen === 5 && basePower && !Math.floor(baseDamage)) {
       baseDamage = 1;
     }

     // Final modifier. Modifiers that modify damage after min damage check, such as Life Orb.
     baseDamage = this.runEvent('ModifyDamage', pokemon, target, move, baseDamage);

     if (this.gen !== 5 && basePower && !Math.floor(baseDamage)) {
       return 1;
     }

     return Math.floor(baseDamage);
   },
};


If anything doesn't work, let me know.
A move from each category has been tested and works accordingly :) They use the correct attacking stat but the normal defensive stat.
AKA I tested Ninjask's Bug Bite on a Ninetales. It used Ninjask's speed and Ninetales' defense. And yes, each turn, since Ninjask's speed increased, the damage increased.

Also if any moves aren't working correctly, then they're probably not in the list of 'cool' moves or whatever category they're in. Blame the OP
[21:11:30] +nv: Yea you can blame me since I did the list all on my own
Thank you so much AWailOfATail this looked very complicated and I am glad you were able to figure it out n_n

Tagging urkerab to put this on ROM if he wants to so we can get to playtesting stuff :D
 
  • Like
Reactions: Mq
This isn't relevant yet, but Steam Eruption is a Beautiful move. Doesn't really matter since the stat used doesn't change, but its worth listing in the OP. I assumed it was a Tough move because Scald lol.

EDIT: Also --
Light of Ruin: Beautiful
Thousand Waves: Tough
Thousand Arrows: Beautiful

Probably don't need to list these since no announced Pokemon can learn them but I was curious so there you go.
 
Last edited:
  • Like
Reactions: nv

nv

The Lost Age
is a Community Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis a Battle Simulator Staff Alumnus
This isn't relevant yet, but Steam Eruption is a Beautiful move. Doesn't really matter since the stat used doesn't change, but its worth listing in the OP. I assumed it was a Tough move because Scald lol.
Plus as of right now, it is currently unreleased since Volcanion is unreleased. But I will make a note of it lol.
EDIT: Also --
Light of Ruin: Beautiful
Thousand Waves: Tough
Thousand Arrows: Beautiful

Probably don't need to list these since no announced Pokemon can learn them but I was curious so there you go.
Added in these as well.
 
Fire Spin is special category.

Missing stuff:
I'm using Serebii for this list (didn't include things like Seismic Toss because they're already good in the code):


Hold Back
Razor Wind, Thundershock, Trump card, Twister


Bind, Comet Punch, Constrict, Crush Grip, Fury Swipes, Giga Impact, Karate Chop, Magnitude, Mega Punch, Payback, Pound, Rage, Rock Smash, Scratch, Sky Drop, Strength, Tackle, Thrash, Vice Grip, Wrap
Brine, Mud Shot, Sludge, Smog, Spit Up, Wring Out


Dive, Dragon Ascent, Self-Destruct
Aurora Beam, Blast Burn, Bubble Beam, Charge Beam, Clear Smog, Discharge, Echoed Voice, Electroweb, Fairy Wind, Fire Pledge, Flame Burst, Frost Breath, Fusion Flare, Grass Pledge, Hydro Cannon, Ice Burn, Judgment, Magical Leaf, Mirror Shot, Ominous Wind, Powder Snow, Psybeam, Relic Song, Roar of Time, Round, Silver Wind, Spacial Rend, Venoshock, Water Pledge, Whirlpool


Assurance, Beat Up, Fly, Pay Day, Poison Sting, Sand Tomb, Secret Power
Absorb, Acid, Confusion, Future Sight, Gust, Leech Life, Mega Drain, Poison Gas, Synchronoise


Astonish, Barrage, Covet, Dizzy Punch, Double Slap, Egg Bomb, Flail, Fling, Heart Stamp, Last Resort, Lick, Pluck, Present
Bubble, Chatter, Disarming Voice, Ember, Mud Slap, Snore, Water Gun


------

This means Gengar can go boom using its 130 SpA.
 
Last edited:
  • Like
Reactions: nv

AWailOfATail

viva la darmz
Fire Spin is special category.

Missing stuff:
I'm using Serebii for this list (didn't include things like Seismic Toss because they're already good in the code):


Hold Back
Razor Wind, Thundershock, Trump card, Twister


Bind, Comet Punch, Constrict, Crush Grip, Fury Swipes, Giga Impact, Karate Chop, Magnitude, Mega Punch, Payback, Pound, Rage, Rock Smash, Scratch, Sky Drop, Strength, Tackle, Thrash, Vice Grip, Wrap
Brine, Mud Shot, Sludge, Smog, Spit Up, Wring Out


Dive, Dragon Ascent, Self-Destruct
Aurora Beam, Blast Burn, Bubble Beam, Charge Beam, Clear Smog, Discharge, Echoed Voice, Electroweb, Fairy Wind, Fire Pledge, Flame Burst, Frost Breath, Fusion Flare, Grass Pledge, Hydro Cannon, Ice Burn, Judgment, Magical Leaf, Mirror Shot, Ominous Wind, Powder Snow, Psybeam, Relic Song, Roar of Time, Round, Silver Wind, Spacial Rend, Venoshock, Water Pledge, Whirlpool


Assurance, Beat Up, Fly, Pay Day, Poison Sting, Sand Tomb, Secret Power
Absorb, Acid, Confusion, Future Sight, Gust, Leech Life, Mega Drain, Poison Gas, Synchronoise


Astonish, Barrage, Covet, Dizzy Punch, Double Slap, Egg Bomb, Flail, Fling, Heart Stamp, Last Resort, Lick, Pluck, Present
Bubble, Chatter, Disarming Voice, Ember, Mud Slap, Snore, Water Gun
Ok blame nv

Don't implement until I update code in a few hours when I get home
Fairly sure Heart Stamp was in there, will edit when I figure it out

EDIT: yeah some of them are in there but most aren't ;-; I'll fix it soon, just on phone right now. Don't let anyone implement this yet!
 
  • Like
Reactions: nv

nv

The Lost Age
is a Community Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis a Battle Simulator Staff Alumnus
Fire Spin is special category.

Missing stuff:
I'm using Serebii for this list (didn't include things like Seismic Toss because they're already good in the code):


Hold Back
Razor Wind, Thundershock, Trump card, Twister


Bind, Comet Punch, Constrict, Crush Grip, Fury Swipes, Giga Impact, Karate Chop, Magnitude, Mega Punch, Payback, Pound, Rage, Rock Smash, Scratch, Sky Drop, Strength, Tackle, Thrash, Vice Grip, Wrap
Brine, Mud Shot, Sludge, Smog, Spit Up, Wring Out


Dive, Dragon Ascent, Self-Destruct
Aurora Beam, Blast Burn, Bubble Beam, Charge Beam, Clear Smog, Discharge, Echoed Voice, Electroweb, Fairy Wind, Fire Pledge, Flame Burst, Frost Breath, Fusion Flare, Grass Pledge, Hydro Cannon, Ice Burn, Judgment, Magical Leaf, Mirror Shot, Ominous Wind, Powder Snow, Psybeam, Relic Song, Roar of Time, Round, Silver Wind, Spacial Rend, Venoshock, Water Pledge, Whirlpool


Assurance, Beat Up, Fly, Pay Day, Poison Sting, Sand Tomb, Secret Power
Absorb, Acid, Confusion, Future Sight, Gust, Leech Life, Mega Drain, Poison Gas, Synchronoise


Astonish, Barrage, Covet, Dizzy Punch, Double Slap, Egg Bomb, Flail, Fling, Heart Stamp, Last Resort, Lick, Pluck, Present
Bubble, Chatter, Disarming Voice, Ember, Mud Slap, Snore, Water Gun
The bolded ones are ones that were already on the list while the one italicized one is a status move and thus is unaffected by this change. Thanks for catching all these for me so AWailOfATail can fix my mistakes...
 
  • Like
Reactions: Mq
Yeah well it was kinda hard shuffling around 3-4 browser tabs. :P

Anyway, I'm just glad to be of some help in a meta I'm already a fan of.
 
Someone mentioned Unburden Sceptile, who I neglected to mention on my list. Probably one of the best Cute attackers, so here's a sweet set to make up for it:


Sceptile @ Salac Berry
Ability: Unburden
EVs: 252 HP / 4 Def / 252 Spe
Timid Nature
IVs: 0 Atk
- Substitute
- Agility
- Grass Knot
- Return

Since basically no one will be investing in Speed, you can pretty safely Sub up until you get your Salac + Unburden boost, which is effectively an instant +3. Grass Knot is nice because it takes advantage of the high weight of many of the high Defense Pokemon, who also tend to have lower Special Defense as well. Even if they do have great SpD like Probopass (150 base), who is neutral to Grass:

+3 252+ Spe Sceptile Grass Knot (120 BP) vs. 252 HP / 0 SpD Probopass: 357-421 (110.1 - 129.9%) -- guaranteed OHKO

Return hits low-weight Pokemon and those that resist Grass Knot for higher damage. Agility is cool, but you'll probably never get the chance to use it. However, if you can manage it, it allows you to reach a Speed stat higher than what is normally possible, because Unburden doesn't contribute to the +6 limit.

Can't touch Shuckle though. :C (Here's a simulated +6 Speed, Unburden Attack)

+6 252+ Atk Huge Power Sceptile Grass Knot (40 BP) vs. 248 HP / 252+ Def Shuckle: 208-246 (85.5 - 101.2%) -- 12.5% chance to OHKO
 

Martin

A monoid in the category of endofunctors
is a Smogon Discord Contributoris a Forum Moderator Alumnusis a Community Contributor Alumnusis a Contributor Alumnus
Is it just me or has NV brought back gen 1 Amnesia?

Seriously though this meta sounds really fun. There are lots of possibilities for what you can do, and when I get to a computer I might do a load of research into possibilities. For now though, I want to comment on a move which has gotten worse as opposed to better: Close Combat.

As CC is tough, it gets weaker every time you use it. This is because it lowers its user's defense stat, which in turn lowers CC's base power due to being catagorised as tough. This means that fighting-types can't mindlessly spam it anymore like they are able to in standard, and it can be punished by setup sweepers as a result.
 

Milotic @ Leftovers
Ability: Marvel Scale
EVs: 252 HP / 252 Def / 4 SpD
Bold Nature
- Scald
- Sleep Talk
- Rest
- Coil / Dragon Tail

Move over Suicune. Here's your new RestTalker. Milotic reaches a comfy 423 Def while sleeping thanks to Marvel Scale, which increases even more as it sets up Coil. Scald uses that Defense boost to hit hard and annoy things with a burn. Dragon Tail is also an option to use against Amnesia/Iron Defense users. Calling out DTail from Sleep Talk will make it hit those slow bulky mons before they even have the chance to attack.



Linoone @ Flame Orb
Ability: Quick Feet
EVs: 252 HP / 4 Def / 252 Spe
Timid Nature
- Facade
- Play Rough
- Grass Knot
- Protect

Linoone without Extreme Speed? It gets 492 speed after Flame Orb activates though. You can then whack things with double power Facade. Coverage moves also use Linoone's boosted speed. You can still opt to use Extreme Speed, just make sure to change the EVs and Nature.
Jolteon may have higher Speed with Quick Feet, but it lacks Cute moves.


Slowbro-Mega @ Slowbronite
Ability: Regenerator
EVs: 248 HP / 252 Def / 8 SpD
Bold Nature
- Scald
- Slack Off
- Drain Punch
- Earthquake / Iron Defense

Full defense investment means 504 Def after mega-evolving. Drain Punch kills off Dark-types. Slowbro may be the best answer to Shuckle, provided that the latter doesn't carry HP Electric. Earthquake is usually redundant with Water, but it's there if you want to use it.


----

I just noticed something weird though: Clever moves make more sense being affected by Speed (Feint, Shadow Sneak, Pursuit, Sucker Punch), and Cute moves by Special Defense (barring Fake Out).
Is there any reason why Cute=Speed and Clever=Special Defense, or is it arbitrary?
 
  • Like
Reactions: nv
I just noticed something weird though: Clever moves make more sense being affected by Speed (Feint, Shadow Sneak, Pursuit, Sucker Punch), and Cute moves by Special Defense (barring Fake Out).
Is there any reason why Cute=Speed and Clever=Special Defense, or is it arbitrary?
The reason why Cute is related to Speed and Clever is related to Special Defense is connected to the flavor preferences of a Pokémon, which is determined by its Nature. For example, Pokémon with a Nature that increases the Attack prefers Spicy berries, from which you get Pokéblocks that increase the Coolness. As such, Cool moves are connected to the Attack stat. To make it more clear:

Attack (Spicy) → Coolness
Defense (Sour) → Toughness
Special Attack (Dry) → Beauty
Special Defense (Bitter) → Cleverness
Speed (Sweet) → Cuteness
 
Tagging urkerab to put this on ROM if he wants to so we can get to playtesting stuff :D
I've loaded some code up, and also supported it as a random battle format, in case you're lazy, although of course all the boosting moves will be wrong.
I changed the modData calls to set the stat directly, rather than working indirectly though the contest condition. Also the indentation copied badly, so instead I copied getDamage from battle-engine.js except for the line let attackStat = move.attackStat;
 

AWailOfATail

viva la darmz
I've loaded some code up, and also supported it as a random battle format, in case you're lazy, although of course all the boosting moves will be wrong.
I changed the modData calls to set the stat directly, rather than working indirectly though the contest condition. Also the indentation copied badly, so instead I copied getDamage from battle-engine.js except for the line let attackStat = move.attackStat;
Rip indentation, I'll start using pastebin even if I don't think it's too long
But yeah, I just felt more comfortable applying the contestCondition because coolMoves gets 'cool' and that was just how I thought about it.
Honestly, as long as metas are playable, \(^o^)/

Let's go see how broken Ninjask/Shuckle will be! (Hint: I'm expecting very broken but who knows?)
 

nv

The Lost Age
is a Community Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis a Battle Simulator Staff Alumnus
I've loaded some code up, and also supported it as a random battle format, in case you're lazy, although of course all the boosting moves will be wrong.
I changed the modData calls to set the stat directly, rather than working indirectly though the contest condition. Also the indentation copied badly, so instead I copied getDamage from battle-engine.js except for the line let attackStat = move.attackStat;
Thank you so much. I am grateful this got coded (shoutout to AWailOfATail) and playable so quickly. Thanks guys! Now we can playtest supposedly broken stuff (Shuckle) and maybe consider unbanning unbroken Ubers (Mega Mawile, etc.)
 
The reason why Cute is related to Speed and Clever is related to Special Defense is connected to the flavor preferences of a Pokémon, which is determined by its Nature. For example, Pokémon with a Nature that increases the Attack prefers Spicy berries, from which you get Pokéblocks that increase the Coolness. As such, Cool moves are connected to the Attack stat. To make it more clear:

Attack (Spicy) → Coolness
Defense (Sour) → Toughness
Special Attack (Dry) → Beauty
Special Defense (Bitter) → Cleverness
Speed (Sweet) → Cuteness
Thanks for clarifying this! I've never been a fan of contests (I don't even know how it works). :P

---

There are some more gimmicky moves that may be useful in this meta, like Guard Split. Guard Split had a huge buff because it not only softens the opponent's defenses, it also makes offense hit for a lot less.

Hasty Accelgor, for example, gets 359 Def after using Guard Split on Bold Shuckle (Shuckle's Def goes down from 614 to 359), and decreases the power of Shuckle's Tough and Clever moves. Accelgor can function as a soft stop for bulky attackers. U-Turn is a Cute move and will hit really hard coming from 145 base Speed. It even has Recover to make use of new bulk after Guard Split.
Encore is also pretty amazing here because of how slow the majority of the metagame is. Zam and Accelgor both have access to it as well.

Ninjask is still takes 50% from Stealth Rock damage, and Protect doesn't block Roar or Whirlwind. It will also have tons of trouble because of all the Steel-types running around.
 
Last edited:
  • Like
Reactions: nv

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

Top