diff --git a/config/formats.js b/config/formats.js
index c3865b2740..c7433e61be 100644
--- a/config/formats.js
+++ b/config/formats.js
@@ -313,3019 +313,6 @@ exports.Formats = [
this.p2.pokemonLeft = this.p2.pokemon.length;
}
},
- {
- name: "[Seasonal] Super Staff Bros.",
- section: "OM of the Month",
-
- team: 'randomSeasonalStaff',
- ruleset: ['Sleep Clause Mod', 'HP Percentage Mod', 'Cancel Mod'],
- onBegin: function () {
- // This seasonal gets a bit from Super Smash Bros., that's where the initial message comes from.
- this.add('message', "GET READY FOR THE NEXT BATTLE!");
- // This link leads to a post where all signature moves can be found so the user can use this resource while battling.
- this.add("raw|Seasonal help for moves can be found here");
- // Prepare Steamroll's special lead role.
- if (toId(this.p1.pokemon[0].name) === 'steamroll') {
- this.add('c|@Steamroll|I wasn\'t aware we were starting. Allow me...');
- this.p1.pokemon[0].isLead = true;
- }
- if (toId(this.p2.pokemon[0].name) === 'steamroll') {
- this.add('c|@Steamroll|I wasn\'t aware we were starting. Allow me...');
- this.p2.pokemon[0].isLead = true;
- }
- // This variable saves the status of a spammy conversation to be played, so it's only played once.
- this.convoPlayed = false;
-
- // This code here is used for the renaming of moves showing properly on client.
- var globalRenamedMoves = {
- 'defog': "Defrog"
- };
- var customRenamedMoves = {
- "cathy": {
- 'kingsshield': "Heavy Dosage of Fun",
- 'calmmind': "Surplus of Humour",
- 'shadowsneak': "Patent Hilarity",
- 'shadowball': "Ion Ray of Fun",
- 'shadowclaw': "Sword of Fun",
- 'flashcannon': "Fun Cannon",
- 'dragontail': "/kick",
- 'hyperbeam': "/ban"
- }
- };
- var allPokemon = this.p1.pokemon.concat(this.p2.pokemon);
-
- for (var i = 0, len = allPokemon.length; i < len; i++) {
- var pokemon = allPokemon[i];
- var last = pokemon.moves.length - 1;
- if (pokemon.moves[last]) {
- pokemon.moves[last] = toId(pokemon.set.signatureMove);
- pokemon.moveset[last].move = pokemon.set.signatureMove;
- pokemon.baseMoveset[last].move = pokemon.set.signatureMove;
- }
- for (var j = 0; j < pokemon.moveset.length; j++) {
- var moveData = pokemon.moveset[j];
- if (globalRenamedMoves[moveData.id]) {
- pokemon.moves[j] = toId(pokemon.set.signatureMove);
- moveData.move = globalRenamedMoves[moveData.id];
- pokemon.baseMoveset[j].move = globalRenamedMoves[moveData.id];
- }
-
- var customRenamedSet = customRenamedMoves[toId(pokemon.name)];
- if (customRenamedSet && customRenamedSet[moveData.id]) {
- pokemon.moves[j] = toId(pokemon.set.signatureMove);
- moveData.move = customRenamedSet[moveData.id];
- pokemon.baseMoveset[j].move = customRenamedSet[moveData.id];
- }
- }
- }
- },
- // Here we add some flavour or design immunities.
- onImmunity: function (type, pokemon) {
- // Great Sage is naturally immune to Attract.
- if (type === 'attract' && toId(pokemon.name) === 'greatsage') {
- this.add('-immune', pokemon, '[from] Irrelevant');
- return false;
- }
- // qtrx is immune to Torment or Taunt.
- if ((type === 'torment' || type === 'taunt') && pokemon.volatiles['unownaura']) {
- this.add('-immune', pokemon, '[from] Unown aura');
- return false;
- }
- // Somalia's Ban Spree makes it immune to some move types, since he's too mad to feel pain.
- // Types have been chosen from types you can be immune against with an ability.
- if (toId(pokemon.name) === 'somalia' && type in {'Ground':1, 'Water':1, 'Fire':1, 'Grass':1, 'Poison':1, 'Normal':1, 'Electric':1}) {
- this.add('-message', "You can't stop SOMALIA in middle of his Ban Spree!");
- return false;
- }
- },
- // Hacks for megas changed abilities. This allow for their changed abilities.
- onUpdate: function (pokemon) {
- var name = toId(pokemon.name);
-
- if (pokemon.template.isMega) {
- if (name === 'theimmortal' && pokemon.getAbility().id === 'megalauncher') {
- pokemon.setAbility('cloudnine'); // Announced ability.
- }
- if (name === 'enguarde' && pokemon.getAbility().id === 'innerfocus') {
- pokemon.setAbility('superluck');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'shrang' && pokemon.getAbility().id === 'levitate') {
- pokemon.setAbility('pixilate');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'skitty' && pokemon.getAbility().id === 'healer') {
- pokemon.setAbility('shedskin');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'audiosurfer' && pokemon.getAbility().id === 'healer') {
- pokemon.setAbility('pixilate');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'dtc' && pokemon.getAbility().id === 'toughclaws') {
- pokemon.setAbility('levitate');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'trinitrotoluene' && pokemon.getAbility().id === 'toughclaws') {
- pokemon.setAbility('protean');
- this.add('-ability', pokemon, pokemon.ability);
- }
- }
- },
- // Here we treat many things, read comments inside for information.
- onSwitchInPriority: 1,
- onSwitchIn: function (pokemon) {
- var name = toId(pokemon.illusion ? pokemon.illusion.name : pokemon.name);
- // No OP pls. Balance stuff, changing them upon switch in. Wonder Guard gets curse to minimise their turns out.
- if (pokemon.getAbility().id === 'wonderguard') {
- pokemon.addVolatile('curse', pokemon);
- this.add('-message', pokemon.name + "'s Wonder Guard has cursed it!");
- }
- // Weak Pokémon get a boost so they can fight amongst the other monsters.
- // Innovamania is just useless, so the boosts are a prank.
- if (name === 'test2017' && !pokemon.illusion) {
- this.boost({atk:1}, pokemon, pokemon, 'innate ability');
- }
- if (name === 'okuu' && !pokemon.illusion) {
- this.boost({def:2, spd:1}, pokemon, pokemon, 'innate ability');
- }
- if (name === 'innovamania' && !pokemon.illusion) {
- this.boost({atk:6, def:6, spa:6, spd:6, spe:6, accuracy:6}, pokemon, pokemon, 'divine grace');
- }
- if (name === 'bloobblob' && !pokemon.illusion) {
- this.boost({def:1, spd:1, spe:2}, pokemon, pokemon, 'innate ability');
- }
- if (name === 'timbuktu' && !pokemon.illusion) {
- this.boost({def:-2, spd:-1}, pokemon, pokemon, 'innate ability');
- }
- if (name === 'electrolyte') {
- pokemon.lastAttackType = 'None';
- }
- // Deal with kupo's special transformation ability.
- if (pokemon.kupoTransformed) {
- pokemon.name = '@kupo';
- pokemon.kupoTransformed = false;
- }
- // Deal with Timbuktu's move (read onModifyMove relevant part).
- if (name === 'timbuktu') {
- pokemon.timesGeoblastUsed = 0;
- }
-
- // Add here more hacky stuff for mega abilities.
- // This happens when the mega switches in, as opposed to mega-evolving on the turn.
- var oldAbility = pokemon.ability;
- if (pokemon.template.isMega) {
- if (name === 'theimmortal' && pokemon.getAbility().id !== 'cloudnine') {
- pokemon.setAbility('cloudnine'); // Announced ability.
- }
- if (name === 'dell' && pokemon.getAbility().id !== 'adaptability') {
- pokemon.setAbility('adaptability');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'enguarde' && pokemon.getAbility().id !== 'superluck') {
- pokemon.setAbility('superluck');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'skitty' && pokemon.getAbility().id !== 'shedskin') {
- pokemon.setAbility('shedskin');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'audiosurfer' && pokemon.getAbility().id !== 'pixilate') {
- pokemon.setAbility('pixilate');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'dtc' && pokemon.getAbility().id !== 'levitate') {
- pokemon.setAbility('levitate');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'shrang' && pokemon.getAbility().id !== 'pixilate') {
- pokemon.setAbility('pixilate');
- this.add('-ability', pokemon, pokemon.ability);
- }
- if (name === 'trinitrotoluene' && pokemon.getAbility().id !== 'protean') {
- pokemon.setAbility('protean');
- this.add('-ability', pokemon, pokemon.ability);
- }
- } else {
- pokemon.canMegaEvo = this.canMegaEvo(pokemon); // Bypass one mega limit.
- }
-
- // Add here special typings, done for flavour mainly.
- if (name === 'mikel' && !pokemon.illusion) {
- this.add('-start', pokemon, 'typechange', 'Normal/Ghost');
- pokemon.typesData = [
- {type: 'Normal', suppressed: false, isAdded: false},
- {type: 'Ghost', suppressed: false, isAdded: false}
- ];
- }
- if (name === 'qtrx') {
- this.add('-message', pokemon.name + " is radiating an Unown aura!"); // Even if only illusion.
- if (!pokemon.illusion) {
- pokemon.addVolatile('unownaura');
- this.add('-start', pokemon, 'typechange', 'Normal/Psychic');
- pokemon.typesData = [
- {type: 'Normal', suppressed: false, isAdded: false},
- {type: 'Psychic', suppressed: false, isAdded: false}
- ];
- }
- pokemon.addVolatile('focusenergy');
- this.boost({evasion: -1}, pokemon, pokemon, 'Unown aura');
- }
- if (name === 'birkal' && !pokemon.illusion) {
- pokemon.addType('Bird');
- this.add('-start', pokemon, 'typeadd', 'Bird', '[from] ability: Caw');
- }
-
- // Edgy switch-in sentences go here.
- // Sentences vary in style and how they are presented, so each Pokémon has its own way of sending them.
- var sentences = [];
- var sentence = '';
-
- // Admins.
- if (name === 'antar') {
- this.add("c|~Antar|It's my time in the sun.");
- }
- if (name === 'chaos') {
- this.add("c|~chaos|I always win");
- }
- if (name === 'haunter') {
- this.add("c|~haunter|Dux mea lux");
- }
- if (name === 'jasmine') {
- if (this[((pokemon.side.id === 'p1') ? 'p2' : 'p1')].active[0].name.charAt(0) === '%') {
- sentence = "Back in my day we didn't have Drivers.";
- } else {
- sentences = ["Your mum says hi.", "Sorry I was just enjoying a slice of pineapple pizza, what was I supposed to do again?", "I could go for some Cheesy Chips right about now.", "I'd tap that.", "/me throws coffee at the server"].randomize();
- sentence = sentences[0];
- }
- this.add('c|~Jasmine|' + sentence);
- }
- if (name === 'joim') {
- var dice = this.random(4);
- if (dice === 1) {
- // Fullscreen toucan!
- this.add('-message', '░░░░░░░░▄▄▄▀▀▀▄▄███▄');
- this.add('-message', '░░░░░▄▀▀░░░░░░░▐░▀██▌');
- this.add('-message', '░░░▄▀░░░░▄▄███░▌▀▀░▀█');
- this.add('-message', '░░▄█░░▄▀▀▒▒▒▒▒▄▐░░░░█▌');
- this.add('-message', '░▐█▀▄▀▄▄▄▄▀▀▀▀▌░░░░░▐█▄');
- this.add('-message', '░▌▄▄▀▀░░░░░░░░▌░░░░▄███████▄');
- this.add('-message', '░░░░░░░░░░░░░▐░░░░▐███████████▄');
- this.add('-message', '░░blessed by░░░░▐░░░░▐█████████████▄');
- this.add('-message', '░░le toucan░░░░░░▀▄░░░▐██████████████▄');
- this.add('-message', '░░░░░░ of ░░░░░░░░▀▄▄████████████████▄');
- this.add('-message', '░░░░░luck░░░░░░░░░░░░░█▀██████');
- } else if (dice === 2) {
- // Too spammy, sends it to chat only.
- this.add('c|~Joim|░░░░░░░░░░░░▄▐');
- this.add('c|~Joim|░░░░░░▄▄▄░░▄██▄');
- this.add('c|~Joim|░░░░░▐▀█▀▌░░░░▀█▄');
- this.add('c|~Joim|░░░░░▐█▄█▌░░░░░░▀█▄');
- this.add('c|~Joim|░░░░░░▀▄▀░░░▄▄▄▄▄▀▀');
- this.add('c|~Joim|░░░░▄▄▄██▀▀▀▀');
- this.add('c|~Joim|░░░█▀▄▄▄█░▀▀');
- this.add('c|~Joim|░░░▌░▄▄▄▐▌▀▀▀');
- this.add('c|~Joim|▄░▐░░░▄▄░█░▀▀ U HAVE BEEN SPOOKED');
- this.add('c|~Joim|▀█▌░░░▄░▀█▀░▀');
- this.add('c|~Joim|░░░░░░░▄▄▐▌▄▄ BY THE');
- this.add('c|~Joim|░░░░░░░▀███▀█░▄');
- this.add('c|~Joim|░░░░░░▐▌▀▄▀▄▀▐▄ SPOOKY SKILENTON');
- this.add('c|~Joim|░░░░░░▐▀░░░░░░▐▌');
- this.add('c|~Joim|░░░░░░█░░░░░░░░█');
- this.add('c|~Joim|░░░░░▐▌░░░░░░░░░█');
- this.add('c|~Joim|░░░░░█░░░░░░░░░░▐▌SEND THIS TO 7 PPL OR SKELINTONS WILL EAT YOU');
- } else if (dice === 3) {
- this.add('-message', '░░░░░░░░░░░░▄▄▄▄░░░░░░░░░░░░░░░░░░░░░░░▄▄▄▄▄');
- this.add('-message', '░░░█░░░░▄▀█▀▀▄░░▀▀▀▄░░░░▐█░░░░░░░░░▄▀█▀▀▄░░░▀█▄');
- this.add('-message', '░░█░░░░▀░▐▌░░▐▌░░░░░▀░░░▐█░░░░░░░░▀░▐▌░░▐▌░░░░█▀');
- this.add('-message', '░▐▌░░░░░░░▀▄▄▀░░░░░░░░░░▐█▄▄░░░░░░░░░▀▄▄▀░░░░░▐▌');
- this.add('-message', '░█░░░░░░░░░░░░░░░░░░░░░░░░░▀█░░░░░░░░░░░░░░░░░░█');
- this.add('-message', '▐█░░░░░░░░░░░░░░░░░░░░░░░░░░█▌░░░░░░░░░░░░░░░░░█');
- this.add('-message', '▐█░░░░░░░░░░░░░░░░░░░░░░░░░░█▌░░░░░░░░░░░░░░░░░█');
- this.add('-message', '░█░░░░░░░░░░░░░░░░░░░░█▄░░░▄█░░░░░░░░░░░░░░░░░░█');
- this.add('-message', '░▐▌░░░░░░░░░░░░░░░░░░░░▀███▀░░░░░░░░░░░░░░░░░░▐▌');
- this.add('-message', '░░█░░░░░░░░░░░░░░░░░▀▄░░░░░░░░░░▄▀░░░░░░░░░░░░█');
- this.add('-message', '░░░█░░░░░░░░░░░░░░░░░░▀▄▄▄▄▄▄▄▀▀░░░░░░░░░░░░░█');
- } else {
- sentences = ["Gen 1 OU is a true skill metagame.", "Finally a good reason to punch a teenager in the face!", "So here we are again, it's always such a pleasure.", "( ͝° ͜ʖ͡°)"].randomize();
- sentence = sentences[0];
- this.add('c|~Joim|' + sentence);
- }
- }
- if (name === 'theimmortal') {
- this.add('c|~The Immortal|Give me my robe, put on my crown!');
- }
- if (name === 'v4') {
- sentences = ["Oh right. I'm still here...", "WHAT ELSE WERE YOU EXPECTING?!", "Soaring on beautiful buttwings."].randomize();
- this.add('c|~V4|' + sentences[0]);
- }
- if (name === 'zarel') {
- this.add('c|~Zarel|Your mom');
- }
-
- // Leaders.
- if (name === 'hollywood') {
- this.add('c|&hollywood|Kappa');
- }
- if (name === 'jdarden') {
- this.add('c|&jdarden|Did someone call for some BALK?');
- }
- if (name === 'okuu') {
- sentences = ["Current Discussion Topics: Benefits of Nuclear Energy, green raymoo worst raymoo, ...", "Current Discussion Topics: I ate the Sun - AMA, Card Games inside of Fighting Games, ...", "Current Discussion Topics: Our testing process shouldn't include Klaxons, Please remove Orin from keyboard prior to entering chat, ...", "Current Discussion Topics: Please refrain from eating crow, We'll get out of Beta once we handle all of this Alpha Decay, ...", "Current Discussion Topics: Schroedinger's Chen might still be in that box, I'm So Meta Even This Acronym, ...", "Current Discussion Topics: What kind of idiot throws knives into a thermonuclear explosion?, わからない ハハハ, ..."].randomize();
- this.add("raw|
" + sentences[0] + "
");
- }
- if (name === 'sirdonovan') {
- this.add('c|&sirDonovan|Oh, a battle? Let me finish my tea and crumpets');
- }
- if (name === 'sweep') {
- this.add('c|&Sweep|xD');
- }
- if (name === 'verbatim') {
- this.add('c|&verbatim|All in');
- }
-
- // Mods.
- if (name === 'acedia') {
- this.add('c|@Acedia|Time for a true display of skill ( ͡° ͜ʖ ͡°)');
- }
- if (name === 'am') {
- this.add('c|@AM|Lucky and Bad');
- }
- if (name === 'antemortem') {
- this.add('c|@antemortem|I Am Here To Oppress Users');
- }
- if (name === 'ascriptmaster') {
- this.add("c|@Ascriptmaster|Good luck, I'm behind 7 proxies");
- }
- if (name === 'asgdf') {
- sentences = ["Steel waters run deep, they say!", "I will insteell fear in your heart!", "Man the harpuns!"].randomize();
- this.add('c|@asgdf|' + sentences[0]);
- }
- if (name === 'audiosurfer') {
- pokemon.phraseIndex = this.random(3);
- if (pokemon.phraseIndex === 2) {
- var singers = ['Waxahatchee', 'Speedy Ortiz', 'Sufjan Stevens', 'Kendrick Lamar'];
- this.add('c|@Audiosurfer|Have you heard the new ' + singers[this.random(4)] + ' song?');
- } else if (pokemon.phraseIndex === 1) {
- this.add('c|@Audiosurfer|If you were worth playing you wouldn\'t be on the ladder.');
- } else {
- this.add('c|@Audiosurfer| Just came back from surfing. Don\'t believe me? Here\'s a pic: http://fc02.deviantart.net/fs70/i/2011/352/d/3/surf_all_the_oceans_by_dawn_shade-d4jga6b.png');
- }
- }
- if (name === 'barton') {
- this.add('c|@barton|free passion');
- }
- if (name === 'bean') {
- sentences = ["Everybody wants to be a cat", "if you KO me i'll ban u on PS", "just simply outplay the coin-toss"].randomize();
- this.add('c|@bean|' + sentences[0]);
- }
- if (name === 'beowulf') {
- this.add('c|@Beowulf|Grovel peasant, you are in the presence of the RNGesus');
- }
- if (name === 'biggie') {
- sentences = ["Now I'm in the limelight cause I rhyme tight", "HAPPY FEET! WOMBO COMBO!", "You finna mess around and get dunked on"].randomize();
- this.add('c|@BiGGiE|' + sentences[0]);
- }
- if (name === 'blitzamirin') {
- this.add('c|@Blitzamirin|How Can Mirrors Be Real If Our Eyes Aren\'t Real? ╰( ~ ◕ ᗜ ◕ ~ )੭━☆゚.*・。゚');
- }
- if (name === 'businesstortoise') {
- this.add('c|@Business Tortoise|' + ["Another day, another smile :)", "Hello this is steve, how may I help you?"][this.random(2)]);
- }
- if (name === 'coolstorybrobat') {
- pokemon.phraseIndex = this.random(5);
- switch (pokemon.phraseIndex) {
- case 1:
- sentence = "Time to GET SLAYED";
- break;
- case 2:
- sentence = "BRUH!";
- break;
- case 3:
- sentence = "Ahem! Gentlemen...";
- break;
- case 4:
- sentence = "I spent 6 months training in the mountains for this day!";
- break;
- default:
- sentence = "Shoutout to all the pear...";
- }
- this.add('c|@CoolStoryBrobat|' + sentence);
- }
- if (name === 'dell') {
- this.add('c|@Dell|<[~.~]> Next best furry besides Yoshi taking the stand!');
- }
- if (name === 'eeveegeneral') {
- sentences = ['Eevee army assemble!', 'To the ramparts!', 'You and what army?'];
- this.add('c|@Eevee General|' + sentences[this.random(3)]);
- }
- if (name === 'electrolyte') {
- this.add('c|@Electrolyte|Eyyy where the middle school azn girls at??');
- }
- if (name === 'eos') {
- this.add('c|@Eos|ᕦ༼ຈل͜ຈ༽ᕤ');
- }
- if (name === 'formerhope') {
- this.add('c|@Former Hope|/me enters battle');
- }
- if (name === 'genesect') {
- pokemon.phraseIndex = this.random(6);
- if (pokemon.phraseIndex === 5) {
- this.add('-message', '░░ ░░ ██ ██ ██ ██ ██ ░░ ░░');
- this.add('-message', '░░ ██ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ██ ░░');
- this.add('-message', '██ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ▓▓ ██');
- this.add('-message', '██ ▓▓ ▓▓ ██ ██ ██ ▓▓ ▓▓ ██');
- this.add('-message', '██ ██ ██ ██ ░░ ██ ██ ██ ██');
- this.add('-message', '██ ▒▒ ▒▒ ██ ██ ██ ▒▒ ▒▒ ██');
- this.add('-message', '██ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ██');
- this.add('-message', '░░ ██ ▒▒ ▒▒ ▒▒ ▒▒ ▒▒ ██ ░░');
- this.add('-message', '░░ ░░ ██ ██ ██ ██ ██ ░░ ░░');
- } else if (pokemon.phraseIndex === 4) {
- this.add('c|@Genesect|┬┴┬┴┤ ʕ├┬┴┬┴');
- this.add('c|@Genesect|┬┴┬┴┤ ʕ•├┬┴┬┴');
- this.add('c|@Genesect|┬┴┬┴┤ʕ•ᴥ├┬┴┬┴');
- this.add('c|@Genesect|Shitposting?');
- } else if (pokemon.phraseIndex === 3) {
- this.add('-message', '▄ ▄▄░░░░░░░▄▄▄▄░░░░▌▄▄▄▄▄░░░░░▐▌');
- this.add('-message', '▒▀█▌░░░▐▀▀▄▄▐▌▒░░▒▀▒▄▒█▄░░░░▐▌');
- this.add('-message', '░░▀█▒░░▓░░█▐█▌▌░░▒░▐▌█▌▐▌░░▐▌░');
- this.add('-message', '░░░░░░▓▀░░▒▐▀▄▀▀▀▀▒▒▀▀░░▀▌▒▀░░');
- this.add('-message', '░░░░░░▌░░░░░░▀▄▄▄▄▀░░░░░░▌░░░░');
- this.add('-message', '░░░░░▄▌░░░░░░░░░░░░░░░░░░▒░░░░');
- } else if (pokemon.phraseIndex === 2) {
- this.add('c|@Genesect|Born too early to explore the universe');
- this.add('c|@Genesect|Born too late to explore the world');
- this.add('c|@Genesect|Born just in time to explore DANKMEMES');
- } else if (pokemon.phraseIndex === 1) {
- this.add('-message', '░░░░░░░░░░▄▄▄▄▄▄░░░░░░░░░░');
- this.add('-message', '░░░░░░░░▄▀█▀█▄██████████▄▄');
- this.add('-message', '░░░░░░░▐██████████████████▌');
- this.add('-message', '░░░░░░░███████████████████▌');
- this.add('-message', '░░░░░░▐███████████████████▌');
- this.add('-message', '░░░░░░█████████████████████▄');
- this.add('-message', '░░░▄█▐█▄█▀█████████████▀█▄█▐█▄');
- this.add('-message', '░▄██▌██████▄█▄█▄█▄█▄█▄█████▌██▌');
- this.add('-message', '████▄▀▀▀▀████████████▀▀▀▀▄███');
- this.add('-message', '█████████▄▄▄▄▄▄▄▄▄▄▄▄██████▀');
- this.add('-message', '░░░▀▀████████████████████▀');
- this.add('c|@Genesect|/me tips fedora');
- } else {
- sentences = ["(ง ͠ ͠° ͟ل͜ ͡°)ง sᴏᴜɴᴅs ᴅᴏɴɢᴇʀᴏᴜs... ɪᴍ ɪɴ (ง ͠ ͠° ͟ل͜ ͡°)ง", 'http://pastebin.com/8r0jgDd7 become a mod today!'].randomize();
- this.add('c|@Genesect|' + sentences[0]);
- }
- }
- if (name === 'hippopotas') {
- this.add('-message', '@Hippopotas\'s Sand Stream whipped up a sandstorm!');
- }
- if (name === 'hydroimpact') {
- this.add('c|@HYDRO IMPACT|Think about the name first and then the Pokemon. Look beyond the "simple" detail.');
- }
- if (name === 'innovamania') {
- sentences = ['Don\'t take this seriously', 'These Black Glasses sure look cool', 'Ready for some fun?( ͡° ͜ʖ ͡°)', '( ͡° ͜ʖ ͡°'];
- this.add('c|@innovamania|' + sentences[this.random(4)]);
- }
- if (name === 'jac') {
- this.add('c|@Jac|YAAAAAAAAAAAAAAAS');
- }
- if (name === 'jinofthegale') {
- this.add('c|@jin of the gale|' + ['3...2...1... LET IT RIP!', 'My bit-beast is going to eat you alive!'][this.random(2)]);
- }
- if (name === 'kostitsynkun') {
- this.add('c|@Kostitsyn-kun|Kyun ★ Kyun~');
- }
- if (name === 'kupo') {
- this.add('c|@kupo|abc!');
- }
- if (name === 'lawrenceiii') {
- this.add('c|@Lawrence III|Give me all of your virgin maidens.');
- }
- if (name === 'layell') {
- this.add('c|@Layell|Enter stage left');
- }
- if (name === 'legitimateusername') {
- this.add('c|@LegitimateUsername|``And believe me I am still alive.``');
- this.add('c|@LegitimateUsername|``I\'m doing Science and I\'m still alive.``');
- this.add('c|@LegitimateUsername|``I feel FANTASTIC and I\'m still alive.``');
- this.add('c|@LegitimateUsername|``While you\'re dying I\'ll be still alive.``');
- this.add('c|@LegitimateUsername|``And when you\'re dead I will be still alive.``');
- }
- if (name === 'level51') {
- this.add('c|@Level 51|Happiness and rainbows, hurrah!');
- }
- if (name === 'lyto') {
- sentences = ["This is divine retribution!", "I will handle this myself!", "Let battle commence!"].randomize();
- this.add('c|@Lyto|' + sentences[0]);
- }
- if (name === 'marty') {
- this.add('c|@Marty|Prepare yourself.');
- }
- if (name === 'morfent') {
- this.add('c|@Morfent|``──────▀█████▄──────▲``');
- this.add('c|@Morfent|``───▄███████████▄──◀█▶``');
- this.add('c|@Morfent|``─────▄████▀█▄──────█``');
- this.add('c|@Morfent|``───▄█████████████████▄ - I``');
- this.add('c|@Morfent|``─▄█████.▼.▼.▼.▼.▼.▼.▼ - cast``');
- this.add('c|@Morfent|``▄███████▄.▲.▲.▲.▲.▲.▲ - magic``');
- this.add('c|@Morfent|``█████████████████████▀▀ - shitpost``');
- }
- if (name === 'naniman') {
- this.add('c|@Nani Man|rof');
- }
- if (name === 'phil') {
- this.add('c|@phil|GET SLUGGED');
- }
- if (name === 'qtrx') {
- sentences = ["cutie are ex", "q-trix", "quarters", "cute T-rex", "Qatari", "random letters", "spammy letters", "asgdf"];
- this.add('c|@qtrx|omg DONT call me \'' + sentences[this.random(8)] + '\' pls respect my name its very special!!1!');
- }
- if (name === 'queez') {
- this.add('c|@Queez|B-be gentle');
- }
- if (name === 'rekeri') {
- this.add('c|@rekeri|Get Rekeri\'d :]');
- }
- if (name === 'relados') {
- var italians = {'haunter': 1, 'test2017': 1, 'uselesstrainer': 1};
- if (toId(pokemon.side.foe.active[0].name) in italians) {
- this.add('c|@Relados|lol italians');
- } else {
- sentences = ['lmfao why are you even playing this game', 'and now, to unleash screaming temporal doom', 'rof'];
- this.add('c|@Relados|' + sentences[this.random(3)]);
- }
- }
- if (name === 'reverb') {
- this.add('c|@Reverb|How is this legal?');
- }
- if (name === 'rosiethevenusaur') {
- sentences = ['!dt party', 'Are you Wifi whitelisted?', 'Read the roomintro!'];
- this.add('c|@RosieTheVenusaur|' + sentences[this.random(3)]);
- }
- if (name === 'scalarmotion') {
- this.add('-message', 'sraclrlamtio got prmotd to driier');
- }
- if (name === 'scotteh') {
- this.add('c|@Scotteh|─────▄▄████▀█▄');
- this.add('c|@Scotteh|───▄██████████████████▄');
- this.add('c|@Scotteh|─▄█████.▼.▼.▼.▼.▼.▼.▼');
- }
- if (name === 'shamethat') {
- sentences = ['no guys stop fighting', 'mature people use their words', 'please direct all attacks to user: beowulf'];
- this.add('c|@Shame That|' + sentences[this.random(3)]);
- }
- if (name === 'skitty') {
- this.add('c|@Skitty|\\_$-_-$_/');
- }
- if (name === 'spydreigon') {
- sentences = ['curry consumer', 'try to keep up', 'fucking try to knock me down', 'Sometimes I slather myself in vasoline and pretend I\'m a slug', 'I\'m really feeling it!'];
- this.add('c|@Spydreigon|' + sentences[this.random(5)]);
- }
- if (name === 'steamroll') {
- if (!pokemon.isLead) {
- sentences = ['You\'re in for it now!', 'Welcome to a new world of pain!', 'This is going to be **__fun__**...', 'Awesome! Imma deck you in the shnoz!'];
- this.add('c|@Steamroll|' + sentences[this.random(4)]);
- } else {
- pokemon.isLead = false;
- }
- }
- if (name === 'steeledges') {
- sentences = ["In this moment, I am euphoric. Not because of any phony god's blessing. But because, I am enlightened by my own intelligence.", "Potent Potables for $200, Alex."].randomize();
- this.add('c|@SteelEdges|' + sentences[0]);
- }
- if (name === 'temporaryanonymous') {
- sentences = ['Hey, hey, can I gently scramble your insides (just for laughs)? ``hahahaha``', 'check em', 'If you strike me down, I shall become more powerful than you can possibly imagine! I have a strong deathrattle effect and I cannot be silenced!'];
- this.add('c|@Temporaryanonymous|' + sentences[this.random(3)]);
- }
- if (name === 'test2017') {
- var quacks = '';
- var count = 0;
- do {
- count++;
- quacks = quacks + 'QUACK!';
- } while (this.random(3) !== 2 && count < 15);
- this.add('c|@Test2017|' + quacks);
- }
- if (name === 'tfc') {
- sentences = ['Here comes the king', ' this chat sucks', 'Coronis smells'];
- this.add('c|@TFC|' + sentences[this.random(3)]);
- }
- if (name === 'tgmd') {
- this.add('c|@TGMD|I\'m a dog :]');
- }
- if (name === 'timbuktu') {
- this.add('c|@Timbuktu|plot twist');
- }
- if (name === 'trickster') {
- this.add('c|@Trickster|' + ['I do this for free, you know.', 'Believe in the me that believes in you!'][this.random(2)]);
- }
- if (name === 'trinitrotoluene') {
- this.add('c|@trinitrotoluene|pls no hax');
- }
- if (name === 'waterbomb') {
- this.add('c|@WaterBomb|Get off my lawn! *shakes cane*');
- }
- if (name === 'xfix') {
- var hazards = {stealthrock: 1, spikes: 1, toxicspikes: 1, stickyweb: 1};
- var hasHazards = false;
- for (var hazard in hazards) {
- if (pokemon.side.getSideCondition(hazard)) {
- hasHazards = true;
- break;
- }
- }
- if (hasHazards) {
- this.add('c|@xfix|(no haz... too late)');
- } else {
- this.add('c|@xfix|(no hazards, attacks only, final destination)');
- }
- }
- if (name === 'zdrup') {
- this.add('c|@zdrup|Wait for it...');
- }
- if (name === 'zebraiken') {
- pokemon.phraseIndex = this.random(3);
- // Zeb's faint and entry phrases correspond to each other.
- if (pokemon.phraseIndex === 2) {
- this.add('c|@Zebraiken|bzzt n_n');
- } else if (pokemon.phraseIndex === 1) {
- this.add('c|@Zebraiken|bzzt *_*');
- } else {
- this.add('c|@Zebraiken|bzzt o_o');
- }
- }
-
- // Drivers.
- if (name === 'aelita') {
- this.add('c|%Aelita|Transfer: Aelita. Scanner: Aelita. Virtualization!');
- }
- if (name === 'arcticblast') {
- sentences = ['BEAR MY ARCTIC BLAST', 'lmao what kind of team is this', 'guys guys guess what?!?!?!?!', 'Double battles are completely superior to single battles.', 'I miss the days when PS never broke 100 users and all the old auth were still around.'];
- this.add('c|%Arcticblast|' + sentences[this.random(5)]);
- }
- if (name === 'articuno') {
- sentences = ['Don\'t hurt me, I\'m a gril!', '/me quivers **violently**', 'Don\'t make me use my ban whip...'];
- this.add('c|%Articuno|' + sentences[this.random(3)]);
- }
- if (name === 'astara') {
- this.add('c|%Ast☆arA|I\'d rather take a nap, I hope you won\'t be a petilil shit, Eat some rare candies and get on my level.');
- }
- if (name === 'asty') {
- this.add('c|%Asty|:^) Top kek');
- }
- if (name === 'birkal') {
- this.add('c|%Birkal|caw');
- }
- if (name === 'bloobblob') {
- this.add('c|%bloobblob|Contract?');
- }
- if (name === 'charlescarmichael') {
- this.add('c|%Charles Carmichael|If Taylor Swift were in a Fast and Furious movie, it’d be called Taylor Drift.');
- }
- if (name === 'crestfall') {
- sentences = ['On wings of night.', 'Let us hunt those who have fallen to darkness.'];
- this.add('c|%Crestfall|' + sentences[this.random(2)]);
- }
- if (name === 'feliburn') {
- this.add('c|%Feliburn|Come on!');
- }
- if (name === 'galbia') {
- this.add('c|%galbia|prepare for my beautiful display of pure italian skill');
- }
- if (name === 'hugendugen') {
- this.add('c|%Hugendugen|4-1-0 let\'s go for it');
- }
- if (name === 'jellicent') {
- this.add('c|%Jellicent|~(^.^)~');
- }
- if (name === 'kayo') {
- this.add('c|%Kayo|The One and Only Obese Phantom Enthusiast');
- }
- if (name === 'ljdarkrai') {
- this.add('c|%LJDarkrai|Azideias');
- }
- if (name === 'majorbling') {
- sentences = ['(ゞ๑⚈ ˳̫⚈๑) ♡', 'If you can\'t win contests as well as battles, your team is bad~ <3', '♡ Dedenne is too cute to KO ♡'];
- this.add('c|%Majorbling|' + sentences[this.random(3)]);
- }
- if (name === 'raseri') {
- this.add('c|%raseri|ban prinplup');
- }
- if (name === 'quotecs') {
- this.add('c|%QuoteCS|Yeah, I know what you mean, but unfortunately I lack good answers to those because of my incredibly dry personality.');
- }
- if (name === 'uselesstrainer') {
- sentences = ['huehuehuehue', 'PIZA', 'SPAGUETI', 'RAVIOLI RAVIOLI GIVE ME THE FORMUOLI', 'get ready for PUN-ishment'];
- this.add('c|%useless trainer|' + sentences[this.random(5)]);
- }
- if (name === 'vacate') {
- this.add('c|%Vacate|sticky situation');
- }
-
- // Voices.
- if (name === 'aldaron') {
- this.add('c|+Aldaron|indefatigable workhorse');
- }
- if (name === 'bmelts') {
- this.add('c|+bmelts|zero post hero');
- }
- if (name === 'cathy') {
- var foe = toId(pokemon.side.foe.active[0].name);
- if (foe === 'greatsage' && !this.convoPlayed) {
- this.add('-message', '<~GreatSage> from my observation, it appears that most romantic partners occupy their discussions with repetitive declarations and other uninteresting content');
- this.add('-message', '<&Cathy> lol');
- this.add('-message', '<&Cathy> sounds dull');
- this.add('-message', '<~GreatSage> i do not believe i have ever observed romantic partners discuss any consequential matters (e.g. mathematics, science, or other topics of intellectual interest)');
- this.add('-message', '<~GreatSage> the "normal social protocol" of romance has always presented as exceptionally absurd to me');
- this.add('-message', '<&Cathy> which aspects are you referring to?');
- this.add('-message', '<~GreatSage> it is rather difficult to summarize them in phrases');
- this.add('-message', '<~GreatSage> it\'s not something i have investigated with any thoroughness');
- this.convoPlayed = true;
- } else {
- switch (foe) {
- case 'bmelts':
- sentence = ['attacks bmelts with a heavy dosage of fun', 'destroys bmelts with an ion ray of fun times'][this.random(2)];
- break;
- case 'snowflakes':
- sentence = 'pounces on Snowflakes with a surplus of humour';
- break;
- case 'mikel':
- sentence = 'crushes mikel with patent hilarity';
- break;
- case 'hugendugen':
- sentence = 'skewers Hugendugen with the sword of fun';
- break;
- case 'limi':
- sentence = 'devastates Limi with the fun cannon';
- break;
- }
- }
- if (sentence) {
- this.add('c|HappyFunTimes|/me ' + sentence);
- } else if (!this.convoPlayed){
- this.add('c|+Cathy|Trivial.');
- }
- }
- if (toId(pokemon.side.foe.active[0].name) === 'cathy') {
- if (name === 'greatsage' && !this.convoPlayed) {
- this.add('-message', '<~GreatSage> from my observation, it appears that most romantic partners occupy their discussions with repetitive declarations and other uninteresting content');
- this.add('-message', '<&Cathy> lol');
- this.add('-message', '<&Cathy> sounds dull');
- this.add('-message', '<~GreatSage> i do not believe i have ever observed romantic partners discuss any consequential matters (e.g. mathematics, science, or other topics of intellectual interest)');
- this.add('-message', '<~GreatSage> the "normal social protocol" of romance has always presented as exceptionally absurd to me');
- this.add('-message', '<&Cathy> which aspects are you referring to?');
- this.add('-message', '<~GreatSage> it is rather difficult to summarize them in phrases');
- this.add('-message', '<~GreatSage> it\'s not something i have investigated with any thoroughness');
- this.convoPlayed = true;
- } else {
- switch (name) {
- case 'bmelts':
- sentence = ['attacks bmelts with a heavy dosage of fun', 'destroys bmelts with an ion ray of fun times'][this.random(2)];
- break;
- case 'snowflakes':
- sentence = 'pounces on Snowflakes with a surplus of humour';
- break;
- case 'mikel':
- sentence = 'crushes mikel with patent hilarity';
- break;
- case 'hugendugen':
- sentence = 'skewers Hugendugen with the sword of fun';
- break;
- case 'limi':
- sentence = 'devastates Limi with the fun cannon';
- break;
- }
- if (sentence) this.add('c|HappyFunTimes|/me ' + sentence);
- }
- }
- if (name === 'diatom') {
- this.add('-message', pokemon.side.foe.name + ' was banned by Diatom. (you should be thankful you are banned and not permabanned)');
- }
- if (name === 'mattl') {
- this.add('c|+MattL|The annoyance I will cause is not well-defined.');
- }
- if (name === 'shaymin') {
- this.add('c|+shaymin|Ready for hax?');
- }
- if (name === 'somalia') {
- this.add('c|+SOMALIA|stupidest shit ever');
- }
- if (name === 'talktakestime') {
- this.add('c|+TalkTakesTime|Welcome to BoTTT!');
- }
- },
- // Here we deal with some special mechanics due to custom sets and moves.
- onBeforeMove: function (pokemon, target, move) {
- var name = toId(pokemon.name);
- // Special Shaymin forme change.
- if (name === 'shaymin' && !pokemon.illusion) {
- var targetSpecies = (move.category === 'Status') ? 'Shaymin' : 'Shaymin-Sky';
-
- if (targetSpecies !== pokemon.template.species) {
- this.add('message', pokemon.name + ((move.category === 'Status') ? ' has reverted to Land Forme!' : ' took to the sky once again!'));
- var template = this.getTemplate(targetSpecies);
- pokemon.formeChange(targetSpecies);
- pokemon.baseTemplate = template;
- pokemon.setAbility(template.abilities['0']);
- pokemon.baseAbility = template.ability;
- pokemon.details = template.species + (pokemon.level === 100 ? '' : ', L' + pokemon.level) + (pokemon.gender === '' ? '' : ', ' + pokemon.gender) + (pokemon.set.shiny ? ', shiny' : '');
- this.add('detailschange', pokemon, pokemon.details);
- }
- }
-
- // Break the secondary of Dell's sig if an attack is attempted.
- if (target.volatiles['parry'] && move.category !== 'Status') {
- target.removeVolatile('parry');
- }
-
- if (pokemon.volatiles['needles']) {
- var dice = this.random(3);
- pokemon.removeVolatile('needles');
- if (dice === 2) {
- this.boost({atk:1, spe:1, def:-1}, pokemon, pokemon, 'used needles');
- } else if (dice === 1) {
- this.boost({def:1, spd:1, spe:-1}, pokemon, pokemon, 'used needles');
- } else {
- this.boost({atk:1, def:1, spe:-1}, pokemon, pokemon, 'used needles');
- }
- }
-
- if (move.id === 'judgment' && name === 'shrang' && !pokemon.illusion) {
- this.add('-start', pokemon, 'typechange', 'Dragon/Fairy');
- pokemon.typesData = [
- {type: 'Dragon', suppressed: false, isAdded: false},
- {type: 'Fairy', suppressed: false, isAdded: false}
- ];
- }
- },
- // Add here salty tears, that is, custom faint phrases.
- onFaint: function (pokemon) {
- if (pokemon.kupoTransformed) {
- pokemon.name = '@kupo';
- pokemon.kupoTransformed = false;
- }
- var name = toId(pokemon.name);
- var sentences = [];
- var sentence = '';
-
- // Admins.
- if (name === 'antar') {
- this.add('c|~Antar|Should\'ve been an Umbreon.');
- }
- if (name === 'chaos') {
- if (name === toId(pokemon.name)) this.add('c|~chaos|//forcewin chaos');
- if (this.random(1000) === 420) {
- // Shouldn't happen much, but if this happens it's hilarious.
- this.add('c|~chaos|actually');
- this.add('c|~chaos|//forcewin ' + pokemon.side.name);
- this.win(pokemon.side);
- }
- }
- if (name === 'haunter') {
- this.add('c|~haunter|you can\'t compare with my powers');
- }
- if (name === 'jasmine') {
- this.add('c|~Jasmine|' + ['I meant to do that.', 'God, I\'m the worse digimon.'][this.random(2)]);
- }
- if (name === 'joim') {
- sentences = ['AVENGE ME, KIDS! AVEEEENGEEE MEEEEEE!!', '``This was a triumph, I\'m making a note here: HUGE SUCCESS.``', '``Remember when you tried to kill me twice? Oh how we laughed and laughed! Except I wasn\'t laughing.``', '``I\'m not even angry, I\'m being so sincere right now, even though you broke my heart and killed me. And tore me to pieces. And threw every piece into a fire.``'];
- this.add('c|~Joim|' + sentences[this.random(4)]);
- }
- if (name === 'theimmortal') {
- this.add('c|~The Immortal|Oh how wrong we were to think immortality meant never dying.');
- }
- if (name === 'v4') {
- this.add('c|~V4|' + ['Back to irrevelance for now n_n', 'Well that was certainly a pleasant fall.'][this.random(2)]);
- }
- if (name === 'zarel') {
- this.add('c|~Zarel|your mom');
- // Followed by the usual '~Zarel fainted'.
- this.add('-message', '~Zarel used your mom!');
- }
-
- // Leaders.
- if (name === 'hollywood') {
- this.add('c|&hollywood|BibleThump');
- }
- if (name === 'jdarden') {
- this.add('c|&jdarden|;-;7');
- }
- if (name === 'okuu') {
- this.add("raw|...and Smooth Jazz.
");
- }
- if (name === 'sirdonovan') {
- this.add('-message', 'RIP sirDonovan');
- }
- if (name === 'slayer95') {
- this.add('c|&Slayer95|I may be defeated this time, but that is irrevelant in the grand plot of seasonals!');
- }
- if (name === 'sweep') {
- this.add('c|&Sweep|xD');
- }
- if (name === 'verbatim') {
- this.add('c|&verbatim|Crash and Burn');
- }
-
- // Mods.
- if (name === 'acedia') {
- this.add('c|@Acedia|My dad smoked his whole life. One day my mom told him "If you want to see your children graduate, you have to stop". 3 years later he died of lung cancer. My mom told me "Dont smoke; dont put your family through this". At 24, I have never touched a cigarette. I must say, I feel a sense of regret, because watching you play Pokemon gave me cancer anyway ( ͝° ͜ʖ͡°)');
- }
- if (name === 'am') {
- this.add('c|@AM|RIP');
- }
- if (name === 'antemortem') {
- this.add('c|@antemortem|FUCKING CAMPAIGNERS');
- }
- if (name === 'ascriptmaster') {
- this.add('c|@Ascriptmaster|Too overpowered. I\'m nerfing you next patch');
- }
- if (name === 'asgdf') {
- this.add('c|@asgdf|' + ['Looks like I spoke too hasteely', 'You only won because I couldn\'t think of a penguin pun!'][this.random(2)]);
- }
- if (name === 'audiosurfer') {
- if (pokemon.phraseIndex === 2) {
- this.add('c|@Audiosurfer|No? Well you should check it out.');
- } else if (pokemon.phraseIndex === 1) {
- this.add('c|@Audiosurfer|You should consider Battling 101 friend.');
- } else {
- this.add('c|@Audiosurfer|Back to catching waves.');
- }
- }
- if (name === 'barton') {
- this.add('c|@barton|' + ['ok', 'haha?'][this.random(2)]);
- }
- if (name === 'bean') {
- sentences = ['that\'s it ur getting banned', 'meow', '(✖╭╮✖)'];
- this.add('c|@bean|' + sentences[this.random(3)]);
- }
- if (name === 'beowulf') {
- this.add('c|@Beowulf|There is no need to be mad');
- }
- if (name === 'biggie') {
- sentences = ['It was all a dream', 'It\'s gotta be the shoes', 'ヽ༼ຈل͜ຈ༽ノ RIOT ヽ༼ຈل͜ຈ༽ノ'];
- this.add('c|@BiGGiE|' + sentences[this.random(3)]);
- }
- if (name === 'blitzamirin') {
- this.add('c|@Blitzamirin| The Mirror Can Lie It Doesn\'t Show What\'s Inside! ╰〳~ ✖ Д ✖ ~〵⊃━☆゚.*・。゚');
- }
- if (name === 'businesstortoise') {
- this.add('c|@Business Tortoise|couldn\'t meet my deadline...');
- }
- if (name === 'coolstorybrobat') {
- switch (pokemon.phraseIndex) {
- case 1:
- sentence = "Lol I got slayed";
- break;
- case 2:
- sentence = "BRUH...";
- break;
- case 3:
- sentence = "I tried";
- break;
- case 4:
- sentence = "Going back to those mountains to train brb";
- break;
- default:
- sentence = "I forgot what fruit had... tasted like...";
- }
- this.add('c|@CoolStoryBrobat|' + sentence);
- }
- if (name === 'dell') {
- this.add('c|@Dell|All because I couldn\'t use Yoshi...');
- this.add('c|@Dell|───────────────████─███────────');
- this.add('c|@Dell|──────────────██▒▒▒█▒▒▒█───────');
- this.add('c|@Dell|─────────────██▒────────█──────');
- this.add('c|@Dell|─────────██████──██─██──█──────');
- this.add('c|@Dell|────────██████───██─██──█──────');
- this.add('c|@Dell|────────██▒▒▒█──────────███────');
- this.add('c|@Dell|────────██▒▒▒▒▒▒───▒──██████───');
- this.add('c|@Dell|───────██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒███─');
- this.add('c|@Dell|──────██▒▒▒▒─────▒▒▒▒▒▒▒▒▒▒▒▒█─');
- this.add('c|@Dell|──────██▒▒▒───────▒▒▒▒▒▒▒█▒█▒██');
- this.add('c|@Dell|───────██▒▒───────▒▒▒▒▒▒▒▒▒▒▒▒█');
- this.add('c|@Dell|────────██▒▒─────█▒▒▒▒▒▒▒▒▒▒▒▒█');
- this.add('c|@Dell|────────███▒▒───██▒▒▒▒▒▒▒▒▒▒▒▒█');
- this.add('c|@Dell|─────────███▒▒───█▒▒▒▒▒▒▒▒▒▒▒█─');
- this.add('c|@Dell|────────██▀█▒▒────█▒▒▒▒▒▒▒▒██──');
- this.add('c|@Dell|──────██▀██▒▒▒────█████████────');
- this.add('c|@Dell|────██▀███▒▒▒▒────█▒▒██────────');
- this.add('c|@Dell|█████████▒▒▒▒▒█───██──██───────');
- this.add('c|@Dell|█▒▒▒▒▒▒█▒▒▒▒▒█────████▒▒█──────');
- this.add('c|@Dell|█▒▒▒▒▒▒█▒▒▒▒▒▒█───███▒▒▒█──────');
- this.add('c|@Dell|█▒▒▒▒▒▒█▒▒▒▒▒█────█▒▒▒▒▒█──────');
- this.add('c|@Dell|██▒▒▒▒▒█▒▒▒▒▒▒█───█▒▒▒███──────');
- this.add('c|@Dell|─██▒▒▒▒███████───██████────────');
- this.add('c|@Dell|──██▒▒▒▒▒██─────██─────────────');
- this.add('c|@Dell|───██▒▒▒██─────██──────────────');
- this.add('c|@Dell|────█████─────███──────────────');
- this.add('c|@Dell|────█████▄───█████▄────────────');
- this.add('c|@Dell|──▄█▓▓▓▓▓█▄─█▓▓▓▓▓█▄───────────');
- this.add('c|@Dell|──█▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓█──────────');
- this.add('c|@Dell|──█▓▓▓▓▓▓▓▓██▓▓▓▓▓▓▓█──────────');
- this.add('c|@Dell|──▀████████▀▀███████▀──────────');
- }
- if (name === 'eeveegeneral') {
- this.add('c|@Eevee General|' + ['Retreat!', 'You may have won the battle, but you haven\'t won the war!', 'I salute you o7'][this.random(3)]);
- }
- if (name === 'electrolyte') {
- this.add('c|@Electrolyte|just wait till I hit puberty...');
- }
- if (name === 'enguarde') {
- this.add('c|@Enguarde|I let my guard down...');
- }
- if (name === 'eos') {
- this.add('c|@EoS|؍༼ಥ_ಥ༽ጋ');
- }
- if (name === 'formerhope') {
- this.add('c|@Former Hope|This is why we can\'t have nice things.');
- }
- if (name === 'genesect') {
- if (pokemon.phraseIndex === 5 || pokemon.phraseIndex === 3 || pokemon.phraseIndex === 1) {
- this.add('-message', '▄████▄░░░░░░░░░░░░░░░░░░░░');
- this.add('-message', '██████▄░░░░░░▄▄▄░░░░░░░░░░');
- this.add('-message', '░███▀▀▀▄▄▄▀▀▀░░░░░░░░░░░░░');
- this.add('-message', '░░░▄▀▀▀▄░░░█▀▀▄░▄▀▀▄░█▄░█░');
- this.add('-message', '░░░▄▄████░░█▀▀▄░█▄▄█░█▀▄█░');
- this.add('-message', '░░░░██████░█▄▄▀░█░░█░█░▀█░');
- this.add('-message', '░░░░░▀▀▀▀░░░░░░░░░░░░░░░░░');
- } else if (pokemon.phraseIndex === 4) {
- this.add('c|@Genesect|Well, if that\'s what you want');
- this.add('c|@Genesect|┬┴┬┴┤ʕ•ᴥ├┬┴┬┴');
- this.add('c|@Genesect|┬┴┬┴┤ ʕ•├┬┴┬┴');
- this.add('c|@Genesect|┬┴┬┴┤ ʕ├┬┴┬┴');
- } else {
- sentences = ["The darkside cannot be extinguished, when you fight...", "؍༼ಥ_ಥ༽ጋ lament your dongers ؍༼ಥ_ಥ༽ጋ", "Yᵒᵘ Oᶰˡʸ Lᶤᵛᵉ Oᶰᶜᵉ", "やれやれだぜ", " ୧༼ಠ益ಠ༽୨ MRGLRLRLR ୧༼ಠ益ಠ༽୨"].randomize();
- this.add('c|@Genesect|' + sentences[0]);
- }
- }
- if (name === 'hippopotas') {
- this.add('-message', 'The sandstorm subsided.');
- }
- if (name === 'hydroimpact') {
- this.add('c|@HYDRO IMPACT|Well done, you\'ve gone beyond your limits and have gained my trust. Now go and write your own destiny, don\'t let fate write it for you.');
- }
- if (name === 'innovamania') {
- sentences = ['Did you rage quit?', 'How\'d you lose with this set?', 'Pm Nani Man to complain about this set ( ͡° ͜ʖ ͡°)'];
- this.add('c|@innovamania|' + sentences[this.random(3)]);
- }
- if (name === 'jac') {
- this.add('c|@Jac|bruh');
- }
- if (name === 'jinofthegale') {
- sentences = ['ヽ༼ຈل͜ຈ༽ノ You\'ve upped your game ヽ༼ຈل͜ຈ༽ノ?', 'Please don\'t steal my bit-beast!', 'Should have used Black'];
- this.add('c|@jin of the gale|' + sentences[this.random(3)]);
- }
- if (name === 'kostitsynkun') {
- this.add('c|@Kostitsyn-kun|Kyun ★ Kyun~');
- }
- if (name === 'kupo') {
- this.add('c|@kupo|:C');
- }
- if (name === 'lawrenceiii') {
- this.add('c|@Lawrence III|Fuck off.');
- }
- if (name === 'layell') {
- this.add('c|@Layell|' + ['Alas poor me', 'Goodnight sweet prince'][this.random(2)]);
- }
- if (name === 'legitimateusername') {
- this.add('c|@LegitimateUsername|``This isn\'t brave. It\'s murder. What did I ever do to you?``');
- }
- if (name === 'level51') {
- this.add('c|@Level 51|You made me sad. That\'s the opposite of happy.');
- }
- if (name === 'lyto') {
- this.add('c|@Lyto|' + ['Unacceptable!', 'Mrgrgrgrgr...'][this.random(2)]);
- }
- if (name === 'marty') {
- this.add('c|@Marty|Your fate is sealed');
- }
- if (name === 'morfent') {
- sentences = ['Hacking claims the lives of over 2,000 registered laddering alts every day.', 'Every 60 seconds in Africa, a minute passes. Together we can stop this. Please spread the word.', 'SOOOOOO $TONED FUCK MAN AW $HIT NIGGA HELLA MOTHER FUCKING 666 ODD FUTURE MAN BRO CHECK THIS OUT MY SWAG WITH THE WHAT WHOLE 666 420 $$$$ HOLLA HOLLA GET DOLLA SWED CASH FUCKING MARIJUANA CIGARETTES GANGSTA GANGSTA EAZY-E C;;R;E;A;M; SO BAKED OFF THE BOBMARLEY GANJA 420 SHIT PURE OG KUUSSHHH LEGALIZE CRYSTAL WEED'];
- this.add('c|@Morfent|' + sentences[this.random(3)]);
- }
- if (name === 'naniman') {
- sentences = ['rof', "deck'd", '**praise** TI'];
- this.add('c|@Nani Man|' + sentences[this.random(3)]);
- }
- if (name === 'phil') {
- this.add('c|@phil|The salt is real right now');
- }
- if (name === 'qtrx') {
- sentences = ['Keyboard not found; press **Ctrl + W** to continue...', 'hfowurfbiEU;DHBRFEr92he', 'At least my name ain\t asgdf...'];
- this.add('c|@qtrx|' + sentences[this.random(3)]);
- }
- if (name === 'queez') {
- this.add('c|@Queez|(◕‿◕✿)');
- }
- if (name === 'rekeri') {
- this.add('c|@rekeri|lucky af :[');
- }
- if (name === 'relados') {
- sentences = ['BS HAX', 'rekt', 'rof'];
- this.add('c|@Relados|' + sentences[this.random(3)]);
- }
- if (name === 'reverb') {
- this.add('c|@Reverb|stupid communist dipshit');
- }
- if (name === 'rosiethevenusaur') {
- this.add('c|@RosieTheVenusaur|' + ['SD SKARM SHALL LIVE AGAIN!!!', 'Not my WiFi!'][this.random(2)]);
- }
- if (name === 'scalarmotion') {
- this.add('-message', 'scalarmotion was banned by Nani Man. (spangj)');
- }
- if (name === 'scotteh') {
- this.add('-message', '▄███████▄.▲.▲.▲.▲.▲.▲');
- this.add('-message', '█████████████████████▀▀');
- }
- if (name === 'shamethat') {
- sentences = ["ok agree to disagree", "rematch, don't attack this time", "i blame beowulf"];
- this.add('c|@Shame That|' + sentences[this.random(3)]);
- }
- if (name === 'skitty') {
- this.add('c|@Skitty|!learn skitty, roleplay');
- this.add('raw|Skitty can\'t learn Role Play
');
- }
- if (name === 'spydreigon') {
- sentences = ['lolhax', 'crit mattered', 'bruh cum @ meh', '>thinking Pokemon takes any skill'];
- this.add('c|@Spydreigon|' + sentences[this.random(4)]);
- }
- if (name === 'steamroll') {
- if (!pokemon.killedSome) {
- sentence = 'Goddamn I feel useless.';
- } else {
- sentences = ['...And I saw, as it were... Spaghetti.', "Agh, shouldn't of been that easy.", 'Hope that was enough.'];
- sentence = sentences[this.random(3)];
- }
- this.add('c|@Steamroll|' + sentence);
- }
- if (name === 'steeledges') {
- this.add('c|@SteelEdges|' + ['You know, I never really cared for Hot Pockets.', 'Suck it, Trebek. Suck it long, and suck it hard.'][this.random(2)]);
- }
- if (name === 'temporaryanonymous') {
- sentences = [';_;7', 'This kills the tempo', 'I\'m kill. rip.', 'S-senpai! Y-you\'re being too rough! >.<;;;;;;;;;;;;;;;;;', 'A-at least you checked my dubs right?', 'B-but that\'s impossible! This can\'t be! AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHGH'];
- this.add('c|@Temporaryanonymous|' + sentences[this.random(6)]);
- }
- if (name === 'test2017') {
- sentences = ['DUCK YOU!', 'GO DUCK YOURSELF!', 'SUCK MY DUCK!'];
- this.add('c|@Test2017|' + sentences[this.random(3)]);
- }
- if (name === 'tfc') {
- this.add('c|@TFC|' + ['brb gotta piss', 'oh thats bs'][this.random(2)]);
- }
- if (name === 'tgmd') {
- this.add('c|@TGMD|rip in pepsi');
- }
- if (name === 'timbuktu') {
- this.add('c|@Timbuktu|' + ['3', 'broken'][this.random(2)]);
- }
- if (name === 'trickster') {
- sentences = ['RIP in pepperoni cappuccino pistachio.', 'El psy congroo.', 'W-wow! Hacker!', '“This guy\'s team is CRAZY!” ☑ “My team can\'t win against a team like that” ☑ "He NEEDED precisely those two crits to win" ☑ “He led with the only Pokemon that could beat me” ☑ "He got the perfect hax" ☑ “There was nothing I could do” ☑ “I played that perfectly”', '(⊙﹏⊙✿)'];
- this.add('c|@Trickster|' + sentences[this.random(5)]);
- }
- if (name === 'trinitrotoluene') {
- this.add('c|@trinitrotoluene|why hax @_@');
- }
- if (name === 'waterbomb') {
- this.add('c|@WaterBomb|brb getting more denture cream');
- }
- if (name === 'xfix') {
- var foe = pokemon.side.foe.active[0];
- if (foe.name === '@xfix') {
- this.add('c|@xfix|(annoying Dittos...)');
- } else if (foe.ability === 'magicbounce') {
- this.add('c|@xfix|(why ' + foe.name + ' has Magic Bounce...)');
- this.add('c|@xfix|(gg... why...)');
- } else {
- this.add('c|@xfix|(gg... I guess)');
- }
- }
- if (name === 'zdrup') {
- this.add('c|@zdrup|... keep waiting for it ...');
- }
- if (name === 'zebraiken') {
- if (pokemon.phraseIndex === 2) {
- this.add('c|@Zebraiken|bzzt u_u');
- } else if (pokemon.phraseIndex === 1) {
- this.add('c|@Zebraiken|bzzt ._.');
- } else {
- // Default faint.
- this.add('c|@Zebraiken|bzzt x_x');
- }
- }
-
- // Drivers.
- if (name === 'aelita') {
- sentences = ['Oh no, the Scyphozoa\'s here!', 'Devirtualized...', 'Stones. Aelita Stones. Like the rock group. I\'m Odd\'s cousin from Canada.'];
- this.add('c|%Aelita|' + sentences[this.random(3)]);
- }
- if (name === 'arcticblast') {
- sentences = ['totally had it but choked, gg', 'I would have won if it weren\'t for HAX', 'oh', 'Double battles are stil superior to single battles.', 'newfag'];
- this.add('c|%Arcticblast|' + sentences[this.random(5)]);
- }
- if (name === 'articuno') {
- sentences = ['This is why you don\'t get any girls.', 'fite me irl', 'Actually, I don\'t have a gender...'];
- this.add('c|%Articuno|' + sentences[this.random(3)]);
- }
- if (name === 'astara') {
- sentences = ['/me twerks into oblivion', 'good night ♥', 'Astara Vista Baby'];
- this.add('c|%Ast☆arA|' + sentences[this.random(3)]);
- }
- if (name === 'asty') {
- this.add('c|%Asty|:^( Bottom kek');
- }
- if (name === 'birkal') {
- this.add('c|%Birkal|//birkal');
- }
- if (name === 'bloobblob') {
- this.add('c|%bloobblob|I won\'t die! Even if I\'m killed!');
- }
- if (name === 'charlescarmichael') {
- this.add('c|%Charles Carmichael|The Grandmaster of Puns will be back for revenge!');
- }
- if (name === 'crestfall') {
- this.add('c|%Crestfall|Vayne [All Chat]: Outplayed me gg no re');
- }
- if (name === 'feliburn') {
- this.add('c|%Feliburn|' + ['BHUWUUU!', 'I like shorts! They\'re comfy and easy to wear!'][this.random(2)]);
- }
- if (name === 'galbia') {
- this.add('c|%galbia|' + ['azz e mo', 'rip luck :('][this.random(2)]);
- }
- if (name === 'jellicent') {
- this.add('c|%Jellicent|X_X');
- }
- if (name === 'kayo') {
- this.add('c|%Kayo|Fat ShOoOoOoSty!');
- }
- if (name === 'ljdarkrai') {
- this.add('c|%LJDarkrai|:<');
- }
- if (name === 'majorbling') {
- this.add('c|%Majorbling|There is literally no way to make this pokemon good...(ゞ๑T ˳̫T\'๑) ');
- }
- if (name === 'raseri') {
- this.add('c|%raseri|banned');
- }
- if (name === 'quotecs') {
- this.add('c|%QuoteCS|#StillIrrelevant');
- }
- if (name === 'uselesstrainer') {
- sentences = ['MATTERED', 'CAIO', 'ima repr0t', 'one day i\'ll turn into a beautiful butterfly'];
- this.add('c|%useless trainer|' + sentences[this.random(4)]);
- }
- if (name === 'vacate') {
- this.add('c|%Vacate|dam it');
- }
-
- // Ex-staff or honorary voice.
- if (name === 'bmelts') {
- this.add('c|+bmelts|retired now');
- }
- if (name === 'cathy') {
- this.add('c|+Cathy|I was being facetious');
- }
- if (name === 'diatom' && !pokemon.hasBeenThanked) {
- this.add('c|★' + pokemon.side.foe.name + '|Thanks Diatom...');
- }
- if (name === 'mattl') {
- this.add('c|+MattL|Finish him! You used "Finals week!" Fatality!');
- }
- if (name === 'redew') {
- this.add('c|+Redew|i hope u think ur a good player');
- this.add('c|+Redew|play spl man');
- this.add('c|+Redew|ud win lots');
- }
- if (name === 'shaymin') {
- this.add('c|+shaymin|You\'ve done well, perhaps...too well, even beating the odds!');
- }
- if (name === 'somalia') {
- this.add('c|+SOMALIA|tired of this shitass game');
- }
- if (name === 'talktakestime') {
- this.add('-message', '(Automated response: Your battle contained a banned outcome.)');
- }
- },
- // Special switch-out events for some mons.
- onSwitchOut: function (pokemon) {
- if (toId(pokemon.name) === 'hippopotas' && !pokemon.illusion) {
- this.add('-message', 'The sandstorm subsided.');
- }
- // Shaymin forme change.
- if (toId(pokemon.name) === 'shaymin' && !pokemon.illusion) {
- if (pokemon.template.species === 'Shaymin') {
- var template = this.getTemplate('Shaymin-Sky');
- pokemon.formeChange('Shaymin-Sky');
- pokemon.baseTemplate = template;
- pokemon.setAbility(template.abilities['0']);
- pokemon.baseAbility = template.ability;
- pokemon.details = template.species + (pokemon.level === 100 ? '' : ', L' + pokemon.level) + (pokemon.gender === '' ? '' : ', ' + pokemon.gender) + (pokemon.set.shiny ? ', shiny' : '');
- }
- }
-
- // Transform
- if (pokemon.originalName) pokemon.name = pokemon.originalName;
- },
- onDragOut: function (pokemon) {
- // Prevents qtrx from being red carded by chaos while in the middle of using sig move, which causes a visual glitch.
- if (pokemon.isDuringAttack) {
- this.add('-message', "But the Unown Aura absorbed the effect!");
- return null;
- }
- if (pokemon.kupoTransformed) {
- pokemon.name = '@kupo';
- pokemon.kupoTransformed = false;
- }
- },
- onAfterMoveSelf: function (source, target, move) {
- // Make haunter not immune to Life Orb as a means to balance.
- if (toId(source.name) === 'haunter') {
- this.damage(source.maxhp / 10, source, source, this.getItem('lifeorb'));
- }
- },
- onModifyPokemon: function (pokemon) {
- var name = toId(pokemon.name);
- // Enforce choice item locking on custom moves.
- // qtrx only has one move anyway. This isn't implemented for Cathy since her moves are all custom. Don't trick her a Scarf!
- if (name !== 'qtrx' && name !== 'Cathy') {
- var moves = pokemon.moveset;
- if (pokemon.getItem().isChoice && pokemon.lastMove === moves[3].id) {
- for (var i = 0; i < 3; i++) {
- if (!moves[i].disabled) {
- pokemon.disableMove(moves[i].id, false);
- moves[i].disabled = true;
- }
- }
- }
- }
- // Enforce taunt disabling custom moves.
- if (pokemon.volatiles['taunt']) {
- var moves = pokemon.moveset;
- for (var i = 0; i < moves.length; i++) {
- if (this.getMove(moves[i].id).category === 'Status' && !moves[i].disabled) {
- pokemon.disableMove(moves[i].id, false);
- moves[i].disabled = true;
- }
- }
- }
- },
- // Specific residual events for custom moves.
- // This allows the format to have kind of custom side effects and volatiles.
- onResidual: function (battle) {
- for (var s in battle.sides) {
- var thisSide = battle.sides[s];
- if (thisSide.premonTimer > 4) {
- thisSide.premonTimer = 0;
- thisSide.premonEffect = true;
- } else if (thisSide.premonTimer > 0) {
- if (thisSide.premonTimer === 4) thisSide.addSideCondition('safeguard');
- thisSide.premonTimer++;
- }
- for (var p in thisSide.active) {
- var pokemon = thisSide.active[p];
- var name = toId(pokemon.name);
-
- if (pokemon.side.premonEffect) {
- pokemon.side.premonEffect = false;
- this.add('c|@zdrup|...dary! __**LEGENDARY!**__');
- this.boost({atk:1, def:1, spa:1, spd:1, spe:1, accuracy:1}, pokemon, pokemon, 'legendary premonition');
- pokemon.addVolatile('aquaring');
- pokemon.addVolatile('focusenergy');
- }
- if (pokemon.volatiles['resilience'] && !pokemon.fainted) {
- this.heal(pokemon.maxhp / 16, pokemon, pokemon);
- this.add('-message', pokemon.name + "'s resilience healed itself!");
- }
- if (pokemon.volatiles['unownaura'] && !pokemon.fainted && !pokemon.illusion) {
- this.add('-message', "Your keyboard is reacting to " + pokemon.name + "'s Unown aura!");
- if (this.random(2) === 1) {
- this.useMove('trickroom', pokemon);
- } else {
- this.useMove('wonderroom', pokemon);
- }
- }
- if (name === 'beowulf' && !pokemon.fainted && !pokemon.illusion) {
- this.add('c|@Beowulf|/me buzzes loudly!');
- }
- if (name === 'cathy' && !pokemon.fainted && !pokemon.illusion) {
- var messages = [
- 'kicking is hilarious!',
- 'flooding the chat log with kicks makes me lol',
- 'please don\'t stop me from having fun',
- 'having fun is great!',
- 'isn\'t this so much fun?',
- 'let\'s all have fun by spamming the channel!',
- 'FUN FUN FUN',
- 'SO MUCH FUN!',
- '^_^ fun times ^_^',
- '/me is having so much fun!',
- 'having fun is great!',
- '/me thinks spam is fun!',
- '/me loves spamming this channel, because it\'s completely inconsequential!',
- 'this is just the internet -- nothing matters!',
- 'let\'s have fun ALL NIGHT LONG!!!!!!!!!!!!!!!!!!!!!!'
- ];
- this.add('c|HappyFunTimes|' + messages[this.random(15)]);
- }
- if (pokemon.volatiles['parry']) {
- // Dell hasn't been attacked.
- pokemon.removeVolatile('parry');
- this.add('-message', "Untouched, the Aura Parry grows stronger still!");
- this.boost({def:1, spd:1}, pokemon, pokemon, 'Aura Parry');
- }
- }
- }
- },
- // This is where the signature moves are actually done.
- onModifyMove: function (move, pokemon) {
- // This is to make signature moves work when transformed.
- if (move.id === 'transform') {
- move.onHit = function (target, pokemon) {
- if (!pokemon.transformInto(target, pokemon)) return false;
- pokemon.originalName = pokemon.name;
- pokemon.name = target.name;
- };
- }
-
- var name = toId(pokemon.illusion && move.sourceEffect === 'allyswitch' ? pokemon.illusion.name : pokemon.name);
- // Prevent visual glitch with Spell Steal.
- move.effectType = 'Move';
- // Just because it's funny.
- if (move.id === 'defog') {
- move.name = 'Defrog';
- this.attrLastMove('[still]');
- this.add('-anim', pokemon, "Defog", pokemon);
- }
-
- // Admin signature moves.
- if (move.id === 'spikes' && name === 'antar') {
- move.name = 'Firebomb';
- move.basePower = 100;
- move.category = 'Special';
- move.flags = {};
- move.type = 'Fire';
- move.onTryHitSide = function (side, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Overheat", side.active[0]);
- };
- }
- if (move.id === 'embargo' && name === 'chaos') {
- move.name = 'Forcewin';
- move.onHit = function (pokemon) {
- pokemon.addVolatile('taunt');
- pokemon.addVolatile('torment');
- pokemon.addVolatile('confusion');
- pokemon.addVolatile('healblock');
- };
- }
- if (move.id === 'quiverdance' && name === 'haunter') {
- move.name = 'Genius Dance';
- move.boosts = {spd:1, spe:1, accuracy:2, evasion:-1, def:-1};
- move.onTryHit = function (pokemon) {
- if (pokemon.volatiles['haunterino']) return false;
- };
- move.onHit = function (pokemon) {
- if (pokemon.volatiles['haunterino']) return false;
- pokemon.addVolatile('haunterino');
- };
- }
- if (move.id === 'bellydrum' && name === 'jasmine') {
- move.name = 'Lockdown';
- move.onHit = function (target, pokemon) {
- this.add("raw|The server is restarting soon.
Please finish your battles quickly. No new battles can be started until the server resets in a few minutes.
");
- };
- move.self = {boosts: {atk:6}};
- }
- if (move.id === 'milkdrink' && name === 'joim') {
- move.name = 'Red Bull Drink';
- move.boosts = {spa:1, spe:1, accuracy:1, evasion:-1};
- delete move.heal;
- move.onTryHit = function (pokemon) {
- if (pokemon.volatiles['redbull']) return false;
- this.attrLastMove('[still]');
- this.add('-anim', pokemon, "Geomancy", pokemon);
- };
- move.onHit = function (pokemon) {
- if (pokemon.volatiles['redbull']) return false;
- pokemon.addVolatile('redbull');
- };
- }
- if (move.id === 'sleeptalk' && name === 'theimmortal') {
- move.name = 'Sleep Walk';
- move.pp = 20;
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Healing Wish", target);
- };
- move.onHit = function (pokemon) {
- if (pokemon.status !== 'slp') {
- if (pokemon.hp >= pokemon.maxhp) return false;
- if (!pokemon.setStatus('slp')) return false;
- pokemon.statusData.time = 3;
- pokemon.statusData.startTime = 3;
- this.heal(pokemon.maxhp);
- this.add('-status', pokemon, 'slp', '[from] move: Rest');
- }
- var moves = [];
- for (var i = 0; i < pokemon.moveset.length; i++) {
- var move = pokemon.moveset[i].id;
- if (move && move !== 'sleeptalk') moves.push(move);
- }
- var move = '';
- if (moves.length) move = moves[this.random(moves.length)];
- if (!move) return false;
- this.useMove(move, pokemon);
- var activate = false;
- var boosts = {};
- for (var i in pokemon.boosts) {
- if (pokemon.boosts[i] < 0) {
- activate = true;
- boosts[i] = 0;
- }
- }
- if (activate) pokemon.setBoost(boosts);
- if (!pokemon.informed) {
- this.add('c|~The Immortal|I don\'t really sleep walk...');
- pokemon.informed = true;
- }
- };
- }
- if (move.id === 'vcreate' && name === 'v4') {
- move.name = 'V-Generate';
- move.self = {boosts: {accuracy: -2}};
- move.accuracy = 85;
- move.secondaries = [{chance: 50, status: 'brn'}];
- }
- if (move.id === 'relicsong' && name === 'zarel') {
- move.name = 'Relic Song Dance';
- move.basePower = 60;
- move.multihit = 2;
- move.category = 'Special';
- move.type = 'Psychic';
- move.negateSecondary = true;
- move.ignoreImmunity = true;
- delete move.secondaries;
- move.onTryHit = function (target, pokemon) {
- this.attrLastMove('[still]');
- var move = pokemon.template.speciesid === 'meloettapirouette' ? 'Brick Break' : 'Relic Song';
- this.add('-anim', pokemon, move, target);
- };
- move.onHit = function (target, pokemon, move) {
- if (pokemon.template.speciesid === 'meloettapirouette' && pokemon.formeChange('Meloetta')) {
- this.add('-formechange', pokemon, 'Meloetta', '[msg]');
- } else if (pokemon.formeChange('Meloetta-Pirouette')) {
- this.add('-formechange', pokemon, 'Meloetta-Pirouette', '[msg]');
- // Modifying the move outside of the ModifyMove event? BLASPHEMY
- move.category = 'Physical';
- move.type = 'Fighting';
- }
- };
- move.onAfterMove = function (pokemon) {
- // Ensure Meloetta goes back to standard form after using the move
- if (pokemon.template.speciesid === 'meloettapirouette' && pokemon.formeChange('Meloetta')) {
- this.add('-formechange', pokemon, 'Meloetta', '[msg]');
- }
- };
- }
-
- // Leader signature moves.
- if (move.id === 'geomancy' && name === 'hollywood') {
- move.name = 'Meme Mime';
- move.flags = {};
- move.onTry = function () {};
- move.boosts = {atk:1, def:1, spa:1, spd:1, spe:1, accuracy:1};
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', pokemon, "Geomancy", pokemon);
- };
- }
- if (move.id === 'dragontail' && name === 'jdarden') {
- move.name = 'Wyvern\'s Wind';
- if (!move.flags) move.flags = {};
- move.flags['sound'] = 1;
- move.type = 'Flying';
- move.category = 'Special';
- move.basePower = 80;
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Boomburst", target);
- };
- }
- if (move.id === 'firespin' && name === 'okuu') {
- move.name = 'Blazing Star - Ten Evil Stars';
- move.basePower = 60;
- move.accuracy = true;
- move.type = 'Fire';
- move.priority = 2;
- move.status = 'brn';
- move.self = {boosts: {spa:-1}};
- move.onHit = function (target, source) {
- var oldAbility = target.setAbility('solarpower');
- if (oldAbility) {
- this.add('-ability', target, target.ability, '[from] move: Blazing Star - Ten Evil Stars');
- }
- };
- }
- if (move.id === 'mefirst' && name === 'sirdonovan') {
- move.name = 'Ladies First';
- move.category = 'Special';
- move.type = 'Fairy';
- move.basePower = 120;
- move.accuracy = 100;
- move.self = {boosts: {spe:1}};
- move.onHit = function (target, pokemon) {
- var decision = this.willMove(pokemon);
- if (decision && target.gender === 'F') {
- this.cancelMove(pokemon);
- this.queue.unshift(decision);
- this.add('-activate', pokemon, 'move: Ladies First');
- }
- };
- }
- if (move.id === 'allyswitch' && name === 'slayer95') {
- move.name = 'Spell Steal';
- move.target = 'self';
- move.onTryHit = function (target, source) {
- if (!source.illusion) {
- this.add('-fail', source);
- this.add('-hint', "Spell Steal only works behind an Illusion!");
- return null;
- }
- };
- move.onHit = function (target, source) {
- var lastMove = source.illusion.moveset[source.illusion.moves.length - 1];
- this.useMove(lastMove.id, source);
- };
- }
- if (move.id === 'kingsshield' && name === 'sweep') {
- move.name = "Sweep's Shield";
- move.onHit = function (pokemon) {
- pokemon.setAbility('swiftswim');
- pokemon.addVolatile('stall');
- };
- }
- if (move.id === 'superfang' && name === 'vacate') {
- move.name = 'Duper Fang';
- move.basePower = 105;
- delete move.damageCallback;
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Super Fang", target);
- };
- move.onHit = function (pokemon) {
- if (this.random(100) < 95) {
- pokemon.trySetStatus('par');
- } else {
- pokemon.addVolatile('confusion');
- }
- };
- }
- if (move.id === 'bravebird' && name === 'verbatim') {
- move.name = 'Glass Cannon';
- move.basePower = 170;
- move.accuracy = 80;
- move.recoil = [1, 4];
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "High Jump Kick", target);
- };
- move.onHit = function (pokemon) {
- this.add('c|&verbatim|DEFENESTRATION!');
- if (this.random(20) === 1) pokemon.switchFlag = true;
- };
- move.onMoveFail = function (target, source, move) {
- this.damage(source.maxhp / 2, source, source, 'glasscannon');
- };
- }
-
- // Mod signature moves.
- if (move.id === 'worryseed' && name === 'acedia') {
- move.name = 'Procrastination';
- move.onHit = function (pokemon, source) {
- var oldAbility = pokemon.setAbility('slowstart');
- if (oldAbility) {
- this.add('-ability', pokemon, 'Slow Start', '[from] move: Procrastination');
- if (this.random(100) < 10) source.faint();
- return;
- }
- return false;
- };
- }
- if (move.id === 'pursuit' && name === 'am') {
- move.name = 'Predator';
- move.basePowerCallback = function (pokemon, target) {
- if (target.beingCalledBack) return 120;
- return 60;
- };
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Pursuit", target);
- };
- move.boosts = {atk:-1, spa:-1, accuracy:-2};
- }
- if (move.id === 'triattack' && name === 'ascriptmaster') {
- move.name = 'Spectrum Beam';
- move.ignoreImmunity = true;
- move.basePower = 8;
- move.critRatio = 1;
- move.accuracy = 95;
- move.typechart = Object.keys(Tools.data.TypeChart);
- move.hitcount = 0;
- move.type = move.typechart[0];
- move.multihit = move.typechart.length;
- delete move.secondaries;
- move.onPrepareHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Swift", target);
- };
- move.onHit = function (target, source, move) {
- move.hitcount++;
- move.type = move.typechart[move.hitcount];
- };
- }
- if (move.id === 'drainingkiss' && name === 'antemortem') {
- move.name = 'Postmortem';
- move.basePower = 110;
- move.accuracy = 85;
- delete move.drain;
- // Manually activate the ability again.
- if (pokemon.ability === 'sheerforce') {
- delete move.secondaries;
- move.negateSecondary = true;
- pokemon.addVolatile('sheerforce');
- } else {
- move.secondaries = [{chance: 50, self: {boosts: {spa: 1, spe: 1}}}];
- }
- }
- if (move.id === 'futuresight' && name === 'asgdf') {
- move.name = 'Obscure Pun';
- // It's easier onHit since it's a future move.
- // Otherwise, all of onTryHit must be rewritten here to add the drop chance.
- move.onHit = function (pokemon) {
- this.add('-message', 'I get it now!');
- if (this.random(100) < 70) {
- this.boost({spa:-1, spd:-1}, pokemon, pokemon, move.sourceEffect);
- }
- };
- }
- if (move.id === 'detect' && name === 'audiosurfer') {
- move.name = 'Audioshield';
- move.secondary = {chance: 50, self: {boosts: {accuracy:-1}}};
- move.onTryHit = function (target) {
- this.add('-anim', target, "Boomburst", target);
- return !!this.willAct() && this.runEvent('StallMove', target);
- };
- move.onHit = function (pokemon) {
- var foe = pokemon.side.foe.active[0];
- if (foe.ability !== 'soundproof') {
- this.add('-message', 'The Audioshield is making a deafening noise!');
- this.damage(foe.maxhp / 12, foe, pokemon);
- if (this.random(2) === 1) this.boost({atk:-1, spa:-1}, foe, foe, 'noise damage');
- }
- pokemon.addVolatile('stall');
- };
- }
- if (move.id === 'bulkup' && name === 'barton') {
- move.name = 'MDMA Huff';
- move.boosts = {atk:2, spe:1, accuracy:-1};
- }
- if (move.id === 'glare' && name === 'bean') {
- move.name = 'Coin Toss';
- move.accuracy = true;
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Pay Day", target);
- };
- move.onHit = function (pokemon) {
- pokemon.addVolatile('confusion');
- };
- move.ignoreImmunity = true;
- move.type = 'Dark';
- }
- if (move.id === 'bugbuzz' && name === 'beowulf') {
- move.name = 'Buzzing of the Swarm';
- move.category = 'Physical';
- move.basePower = 100;
- move.secondaries = [{chance:10, volatileStatus: 'flinch'}];
- }
- if (move.id === 'dragontail' && name === 'biggie') {
- move.name = 'Food Rush';
- move.basePower = 100;
- move.type = 'Normal';
- move.self = {boosts: {evasion:-1}};
- }
- if (move.id === 'quickattack' && name === 'birkal') {
- move.name = 'Caw';
- move.type = 'Bird';
- move.category = 'Status';
- move.onHit = function (target) {
- if (!target.setType('Bird')) return false;
- this.add('-start', target, 'typechange', 'Bird');
- this.add('c|%Birkal|caw');
- };
- }
- if (move.id === 'oblivionwing' && name === 'blitzamirin') {
- move.name = 'Pneuma Relinquish';
- move.type = 'Ghost';
- move.damageCallback = function (pokemon, target) {
- return target.hp / 2;
- };
- move.onImmunity = function (type) {
- if (type in {'Normal':1, 'Ghost':1}) return false;
- };
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Roar of Time", target);
- };
- move.onHit = function (pokemon) {
- pokemon.addVolatile('gastroacid');
- };
- }
- if (move.id === 'bravebird' && name === 'coolstorybrobat') {
- move.name = 'Brave Bat';
- move.basePower = 130;
- move.critRatio = 2;
- delete move.recoil;
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Brave Bird", target);
- };
- }
- if (move.id === 'detect' && name === 'dell') {
- var dmg = Math.ceil(pokemon.maxhp / (pokemon.ability === 'simple' ? 2 : 4));
- move.name = 'Aura Parry';
- move.self = {boosts: {atk:1, spa:1, spe:1}};
- move.onTryHit = function (target, source) {
- if (source.hp <= dmg) return false;
- this.attrLastMove('[still]');
- this.add('-anim', source, "Amnesia", source);
- return !!this.willAct() && this.runEvent('StallMove', target);
- };
- move.onHit = function (target) {
- this.directDamage(dmg, target, target);
- pokemon.addVolatile('parry');
- pokemon.addVolatile('stall');
- };
- }
- if (name === 'eeveegeneral') {
- if (move.id === 'shiftgear') {
- move.name = 'Gears of War';
- }
- if (move.id === 'quickattack') {
- move.name = 'War Crimes';
- move.type = 'Normal';
- move.category = 'Status';
- move.basePower = 0;
- move.onHit = function (pokemon, source) {
- this.directDamage(source.maxhp / 4, source, source);
- pokemon.addVolatile('curse');
- pokemon.addVolatile('confusion');
- this.add("c|@Eevee General|What's a Geneva Convention?");
- };
- }
- }
- if (name === 'electrolyte') {
- if (move.id === 'entrainment') {
- move.name = 'Study';
- move.priority = 1;
- move.flags = {protect:1};
- move.onTryHit = function (target, source) {
- if (source.lastAttackType === 'None') {
- this.add('-hint', "Study only works when preceded by an attacking move.");
- return false;
- }
- };
- move.onHit = function (target, source) {
- var possibleTypes = [];
- var attackType = source.lastAttackType;
- source.lastAttackType = 'None';
- for (var type in this.data.TypeChart) {
- if (target.hasType(type)) continue;
- var typeCheck = this.data.TypeChart[type].damageTaken[attackType];
- if (typeCheck === 1) {
- possibleTypes.push(type);
- }
- }
- if (!possibleTypes.length) {
- return false;
- }
- var type = possibleTypes[this.random(possibleTypes.length)];
- if (!target.setType(type)) {
- return false;
- }
- this.add('c|@Electrolyte|Ha! I\'ve found your weakness.');
- this.add('-start', target, 'typechange', type);
- };
- } else {
- pokemon.lastAttackType = move.type;
- }
- }
- if (move.id === 'fakeout' && name === 'enguarde') {
- move.name = 'Ready Stance';
- move.type = 'Steel';
- move.secondaries = [{chance:100, boosts:{atk:-1, spa:-1}, volatileStatus: 'flinch'}];
- move.onTryHit = function (target, source) {
- if (source.activeTurns > 1) {
- this.add('-hint', "Ready Stance only works on your first turn out.");
- return false;
- }
- };
- move.onHit = function (target, source) {
- source.addVolatile('focusenergy');
- this.add('c|@Enguarde|En garde!'); // teehee
- };
- }
- if (move.id === 'shadowball' && name === 'eos') {
- move.name = 'Shadow Curse';
- move.power = 60;
- move.priority = 1;
- move.volatileStatus = 'curse';
- move.onHit = function (target, source) {
- this.directDamage(source.maxhp / 2, source, source);
- };
- }
- if (move.id === 'roleplay' && name === 'formerhope') {
- move.volatileStatus = 'taunt';
- move.self = {boosts: {spa:1}};
- move.onTryHit = function (target, source) {
- this.add('c|@Former Hope|/me godmodes');
- };
- move.onHit = function () {};
- }
- if (move.id === 'geargrind' && name === 'genesect') {
- move.name = "Grind you're mum";
- move.basePower = 30;
- move.onHit = function (target, pokemon) {
- if (target.fainted || target.hp <= 0) this.boost({atk:2, spa:2, spe:1}, pokemon, pokemon, move);
- };
- }
- if (move.id === 'partingshot' && name === 'hippopotas') {
- move.name = 'Hazard Pass';
- delete move.boosts;
- move.onHit = function (pokemon) {
- var hazards = ['stealthrock', 'spikes', 'toxicspikes', 'stickyweb'].randomize();
- pokemon.side.addSideCondition(hazards[0]);
- pokemon.side.addSideCondition(hazards[1]);
- };
- }
- if (move.id === 'hydrocannon' && name === 'hydroimpact') {
- move.name = 'HYDRO IMPACT';
- move.basePower = 150;
- move.accuracy = 90;
- move.category = 'Physical';
- move.status = 'brn';
- delete move.self;
- move.onHit = function (target, source) {
- this.directDamage(source.maxhp * 0.35, source, source);
- };
- }
- if (move.id === 'splash' && name === 'innovamania') {
- move.name = 'Rage Quit';
- delete move.onTryHit;
- move.onHit = function (pokemon) {
- pokemon.faint();
- };
- }
- if (move.id === 'crunch' && name === 'jas61292') {
- move.name = 'Minus One';
- move.basePower = 110;
- move.accuracy = 85;
- delete move.secondary;
- delete move.secondaries;
- move.onHit = function (pokemon, source) {
- var boosts = {};
- var stats = Object.keys(pokemon.stats).slice(1);
- boosts[stats[this.random(4)]] = -1;
- this.boost(boosts, pokemon, source);
- };
- }
- if (move.id === 'rapidspin' && name === 'jinofthegale') {
- move.name = 'Beyblade';
- move.category = 'Special';
- move.type = 'Electric';
- move.basePower = 90;
- // If we use onHit but use source, we don't have to edit self.onHit.
- move.onHit = function (pokemon, source) {
- var side = source.side;
- for (var i = 0; i < side.pokemon.length; i++) {
- side.pokemon[i].status = '';
- }
- this.add('-cureteam', source, '[from] move: Beyblade');
- };
- }
- if (move.id === 'refresh' && name === 'kostitsynkun') {
- move.name = 'Kawaii-desu uguu~';
- move.heal = [1, 2];
- move.flags = {heal: 1};
- move.onHit = function (target, source) {
- this.add('-curestatus', source, source.status);
- source.status = '';
- source.removeVolatile('confusion');
- source.removeVolatile('curse');
- source.removeVolatile('attract');
- if (this.random(7) === 1) {
- pokemon.side.foe.active[0].addVolatile('attract');
- }
- };
- }
- if (move.id === 'transform' && name === 'kupo') {
- move.name = 'Kupo Nuts';
- move.flags = {};
- move.priority = 2;
- move.onHit = function (pokemon, user) {
- var template = pokemon.template;
- if (pokemon.fainted || pokemon.illusion) {
- return false;
- }
- if (!template.abilities || (pokemon && pokemon.transformed) || (user && user.transformed)) {
- return false;
- }
- if (!user.formeChange(template, true)) {
- return false;
- }
- user.transformed = true;
- user.typesData = [];
- for (var i = 0, l = pokemon.typesData.length; i < l; i++) {
- user.typesData.push({
- type: pokemon.typesData[i].type,
- suppressed: false,
- isAdded: pokemon.typesData[i].isAdded
- });
- }
- for (var statName in user.stats) {
- user.stats[statName] = pokemon.stats[statName];
- }
- user.moveset = [];
- user.moves = [];
- for (var i = 0; i < pokemon.moveset.length; i++) {
- var move = this.getMove(user.set.moves[i]);
- var moveData = pokemon.moveset[i];
- var moveName = moveData.move;
- if (moveData.id === 'hiddenpower') {
- moveName = 'Hidden Power ' + user.hpType;
- }
- user.moveset.push({
- move: moveName,
- id: moveData.id,
- pp: move.noPPBoosts ? moveData.maxpp : 5,
- maxpp: move.noPPBoosts ? moveData.maxpp : 5,
- target: moveData.target,
- disabled: false
- });
- user.moves.push(toId(moveName));
- }
- for (var j in pokemon.boosts) {
- user.boosts[j] = pokemon.boosts[j];
- }
- this.add('-transform', user, pokemon);
- user.setAbility(pokemon.ability);
- user.originalName = user.name;
- user.name = pokemon.name;
- user.update();
- };
- }
- if (move.id === 'gust' && name === 'lawrenceiii') {
- move.name = 'Shadow Storm';
- move.type = 'Shadow';
- move.accuracy = true;
- move.ignoreDefensive = true;
- move.defensiveCategory = 'Physical';
- move.basePowerCallback = function (pokemon, target) {
- if (target.volatiles['partiallytrapped']) return 65;
- return 35;
- };
- move.onEffectiveness = function (typeMod, target, type, move) {
- var eff = 1;
- if (toId(pokemon.side.foe.active[0].name) === 'lawrenceiii') eff = -1;
- return eff; // Shadow moves are SE against all non-Shadow mons.
- };
- move.onHit = function (target, source) {
- if (target.volatiles['partiallytrapped'] && (this.random(100) < 35)) {
- target.addVolatile('confusion');
- }
- };
- }
- if (move.id === 'shellsmash' && name === 'legitimateusername') {
- move.name = 'Shell Fortress';
- move.boosts = {def:2, spd:2, atk:-4, spa:-4, spe:-4};
- }
- if (move.id === 'trumpcard' && name === 'level51') {
- move.name = 'Next Level Strats';
- delete move.basePowerCallback;
- move.target = 'self';
- move.category = 'Status';
- move.onTryHit = function (pokemon) {
- if (pokemon.level >= 200) return false;
- };
- move.onHit = function (pokemon) {
- pokemon.level += 9;
- if (pokemon.level > 200) pokemon.level = 200;
- this.add('-message', 'Level 51 advanced 9 levels! It is now level ' + pokemon.level + '!');
- };
- }
- if (move.id === 'thundershock' && name === 'lyto') {
- move.name = 'Gravity Storm';
- move.basePower = 100;
- move.accuracy = 100;
- delete move.secondary;
- delete move.secondaries;
- move.self = {volatileStatus: 'magnetrise'};
- }
- if (move.id === 'protect' && name === 'layell') {
- move.name = 'Pixel Protection';
- move.self = {boosts: {def:3, spd:2}};
- move.onTryHit = function (pokemon) {
- if (pokemon.volatiles['pixels']) {
- this.add('-hint', "Pixel Protection only works once per outing.");
- return false;
- }
- this.attrLastMove('[still]');
- this.add('-anim', pokemon, "Moonblast", pokemon);
- return !!this.willAct() && this.runEvent('StallMove', pokemon);
- };
- move.onHit = function (pokemon) {
- if (pokemon.volatiles['pixels']) return false;
- pokemon.addVolatile('pixels');
- pokemon.addVolatile('stall');
- };
- }
- if (move.id === 'sacredfire' && name === 'marty') {
- move.name = 'Immolate';
- move.basePower += 20;
- move.category = 'Special';
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Flamethrower", target);
- };
- }
- if (move.id === 'spikes' && name === 'morfent') {
- move.name = 'Used Needles';
- move.self = {boosts: {evasion: -1}};
- move.target = 'normal';
- move.onTryHit = function (target, source) {
- source.addVolatile('needles');
- };
- }
- if (name === 'naniman') {
- if (move.id === 'fireblast') {
- move.name = 'Tanned';
- move.accuracy = 100;
- move.secondaries = [{status:'brn', chance:100}];
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Eruption", target);
- };
- move.onHit = function (target, source) {
- this.boost({atk:1, spa:1, evasion:-1, accuracy:-1}, source, source);
- };
- } else if (move.id === 'topsyturvy') move.name = 'rof';
- }
- if (move.id === 'inferno' && name === 'nixhex') {
- move.name = 'Beautiful Disaster';
- move.type = 'Normal';
- move.secondaries = [{
- chance:100,
- onHit: function (target, source) {
- var result = this.random(2);
- if (result < 1) {
- target.trySetStatus('brn', source);
- } else {
- target.trySetStatus('par', source);
- }
- }
- }];
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Simple Beam", target);
- };
- }
- if (move.id === 'hypnosis' && name === 'osiris') {
- move.name = 'Restless Sleep';
- move.accuracy = 85;
- move.volatileStatus = 'nightmare';
- }
- if (move.id === 'whirlpool' && name === 'phil') {
- move.name = 'Slug Attack';
- move.basePower = 50;
- move.secondaries = [{chance:100, status:'tox'}];
- }
- if (move.id === 'meditate' && name === 'qtrx') {
- move.name = 'KEYBOARD SMASH';
- move.target = 'normal';
- move.boosts = null;
- move.hitcount = [3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7][this.random(11)];
- move.onPrepareHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Fairy Lock", target);
- this.add('-anim', pokemon, "Fairy Lock", pokemon); // DRAMATIC FLASHING
- };
- move.onHit = function (target, source) {
- var gibberish = '';
- var hits = 0;
- var hps = ['hiddenpowerbug', 'hiddenpowerdark', 'hiddenpowerdragon', 'hiddenpowerelectric', 'hiddenpowerfighting', 'hiddenpowerfire', 'hiddenpowerflying', 'hiddenpowerghost', 'hiddenpowergrass', 'hiddenpowerground', 'hiddenpowerice', 'hiddenpowerpoison', 'hiddenpowerpsychic', 'hiddenpowerrock', 'hiddenpowersteel', 'hiddenpowerwater'];
- this.add('c|@qtrx|/me slams face into keyboard!');
- source.isDuringAttack = true; // Prevents the user from being kicked out in the middle of using Hidden Powers.
- for (var i = 0; i < move.hitcount; i++) {
- if (target.hp !== 0) {
- var len = 16 + this.random(35);
- gibberish = '';
- for (var j = 0; j < len; j++) gibberish += String.fromCharCode(48 + this.random(79));
- this.add('-message', gibberish);
- this.useMove(hps[this.random(16)], source, target);
- hits++;
- }
- }
- this.add('-message', 'Hit ' + hits + ' times!');
- source.isDuringAttack = false;
- };
- }
- if (move.id === 'leer' && name === 'queez') {
- move.name = 'Sneeze';
- delete move.boosts;
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Curse", target);
- };
- move.onHit = function (target, source) {
- if (!target.volatiles.curse) {
- this.boost({atk:1, def:1, spa:1, spd:1, spe:1, accuracy:1}, source, source);
- target.addVolatile('curse');
- } else {
- this.boost({atk: 1}, source, source);
- this.boost({def: -1}, target, source);
- this.useMove('explosion', source, target);
- }
- };
- }
- if (move.id === 'headcharge' && name === 'rekeri') {
- move.name = 'Land Before Time';
- move.basePower = 125;
- move.type = 'Rock';
- move.accuracy = 90;
- move.secondaries = [{chance:10, volatileStatus:'flinch'}];
- }
- if (move.id === 'stockpile' && name === 'relados') {
- move.name = 'Loyalty';
- move.type = 'Fire';
- move.priority = 1;
- delete move.volatileStatus;
- move.onTryHit = function () {
- return true;
- };
- move.onHit = function (target, source) {
- if (!source.volatiles['stockpile'] || (source.volatiles['stockpile'].layers < 3)) {
- source.addVolatile('stockpile');
- this.add("raw|Relados received a loyalty point!
");
- } else {
- source.removeVolatile('stockpile');
- this.add("raw|Relados was rewarded for his loyalty!
Relados has advanced one level.
");
- source.level++;
- source.formeChange('Terrakion');
- source.details = source.species + (source.level === 99 ? '' : ', L' + source.level + 1);
- this.add('detailschange', source, source.details);
- this.heal(source.maxhp, source, source);
- }
- this.add('-clearallboost');
- for (var i = 0; i < this.sides.length; i++) {
- if (this.sides[i].active[0]) this.sides[i].active[0].clearBoosts();
- }
- };
- }
- if (move.id === 'eggbomb' && name === 'reverb') {
- move.name = 'fat monkey';
- move.accuracy = 95;
- move.flags = {contact: 1, protect: 1};
- move.self = {boosts: {def:-1, spe:-1}};
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Brave Bird", target);
- };
- move.onHit = function (target, source) {
- this.heal(120, source, source);
- };
- move.onMoveFail = function (target, source, move) {
- this.directDamage(120, source, source);
- };
- }
- if (move.id === 'frenzyplant' && name === 'rosiethevenusaur') {
- move.name = 'Swag Plant';
- move.volatileStatus = 'confusion';
- move.self = {boosts: {atk:1, def:1}};
- }
- if (move.id === 'icebeam' && name === 'scalarmotion') {
- move.name = 'Eroding Frost';
- move.basePower = 65;
- move.onEffectiveness = function (typeMod, type) {
- if (type in {'Fire':1, 'Water': 1}) return 1;
- };
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Blizzard", target);
- };
- }
- if (move.id === 'boomburst' && name === 'scotteh') {
- move.name = 'Geomagnetic Storm';
- move.type = 'Electric';
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Discharge", target);
- };
- }
- if (move.id === 'healingwish' && name === 'shamethat') {
- move.name = 'Extreme Compromise';
- }
- if (move.id === 'judgment' && name === 'shrang') {
- move.name = 'Pixilate';
- }
- if (move.id === 'storedpower' && name === 'skitty') {
- move.name = 'Ultimate Dismissal';
- move.type = 'Fairy';
- move.onDamage = function (damage, target, source, effect) {
- if (damage > 0) {
- this.heal(Math.ceil((damage * 0.25) * 100 / target.maxhp), source, source);
- }
- };
- }
- if (move.id === 'thousandarrows' && name === 'snowflakes') {
- move.name = 'Azalea Butt Slam';
- move.category = 'Special';
- move.onHit = function (target, source, move) {
- target.addVolatile('trapped', source, move, 'trapper');
- };
- }
- if (move.id === 'waterpulse' && name === 'spydreigon') {
- move.name = 'Mineral Pulse';
- move.basePower = 95;
- move.type = 'Steel';
- move.accuracy = 100;
- }
- if (name === 'steamroll') {
- if (move.id === 'protect') {
- move.name = 'Conflagration';
- move.onTryHit = function (pokemon) {
- if (pokemon.activeTurns > 1) {
- this.add('-hint', "Conflagration only works on your first turn out.");
- return false;
- }
- this.attrLastMove('[still]');
- this.add('-anim', pokemon, "Fire Blast", pokemon);
- };
- move.self = {boosts: {atk:2, def:2, spa:2, spd:2, spe:2}};
- }
- move.onHit = function (target, pokemon) {
- if (target.fainted || target.hp <= 0) pokemon.killedSome = 1;
- };
- }
- if (move.id === 'tailglow' && name === 'steeledges') {
- delete move.boosts;
- move.name = 'True Daily Double';
- move.target = 'normal';
- move.onTryHit = function (target, source) {
- if (source.volatiles['truedailydouble']) return false;
- this.attrLastMove('[still]');
- this.add('-anim', source, "Nasty Plot", target);
- };
- move.onHit = function (target, source) {
- if (this.random(2)) {
- this.add('-message', '@SteelEdges failed misserably!');
- this.boost({spa: -2}, source, source);
- } else {
- this.add('-message', '@SteelEdges is the winner!');
- this.boost({spa: 4}, source, source);
- }
- source.addVolatile('truedailydouble');
- };
- }
- if (move.id === 'shadowsneak' && name === 'temporaryanonymous') {
- move.name = 'SPOOPY EDGE CUT';
- move.basePower = 90;
- move.accuracy = 100;
- move.self = {boosts: {evasion:-1}};
- move.onTryHit = function (target, source) {
- this.add('-message', '*@Temporaryanonymous teleports behind you*');
- this.attrLastMove('[still]');
- this.add('-anim', source, "Shadow Force", target);
- };
- move.onHit = function (pokemon) {
- if (pokemon.hp <= 0 || pokemon.fainted) {
- this.add('c|@Temporaryanonymous|YOU ARE ALREADY DEAD *unsheathes glorious cursed nippon steel katana and cuts you in half with it* heh......nothing personnel.........kid......................');
- }
- };
- move.onMoveFail = function (target, source, move) {
- this.add('-message', '*@Temporaryanonymous teleports behind you*');
- this.add('c|@Temporaryanonymous|YOU ARE ALREADY DEAD *misses* Tch......not bad.........kid......................');
- };
- }
- if (name === 'test2017') {
- if (move.id === 'karatechop') {
- move.name = 'Ducktastic';
- move.basePower = 100;
- move.accuracy = 100;
- move.type = 'Normal';
- }
- if (move.id === 'roost') {
- move.onHit = function (pokemon) {
- pokemon.trySetStatus('tox');
- };
- }
- }
- if (move.id === 'drainpunch' && name === 'tfc') {
- move.name = 'Chat Flood';
- move.basePower = 150;
- move.type = 'Water';
- move.category = 'Special';
- move.self = {boosts: {spa:-1, spd:-1, def:-1}};
- }
- if (move.id === 'return' && name === 'tgmd') {
- delete move.basePowerCallback;
- move.name = 'Canine Carnage';
- move.basePower = 120;
- move.secondaries = [{chance:10, volatileStatus:'flinch'}, {chance:100, boosts:{def:-1}}];
- move.accuracy = 90;
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Close Combat", target);
- };
- }
- if (move.id === 'rockthrow' && name === 'timbuktu') {
- move.name = 'Geoblast';
- move.type = 'Fire'; // Not the other way round or STAB would be lost.
- move.category = 'Special';
- move.accuracy = true;
- move.basePowerCallback = function (source, target) {
- return (40 * Math.pow(2, source.timesGeoblastUsed));
- };
- move.onEffectiveness = function (typeMod, type, move) {
- return typeMod + this.getEffectiveness('Rock', type);
- };
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Fire Blast", source);
- this.add('-anim', source, "Power Gem", target);
- };
- move.onHit = function (target, source) {
- source.timesGeoblastUsed++;
- };
- }
- if (move.id === 'naturepower' && name === 'trickster') {
- move.name = 'Cometstorm';
- move.category = 'Special';
- move.type = 'Fairy';
- move.basePower = 80;
- move.secondaries = [{chance:30, status:'brn'}, {chance:30, status:'frz'}];
- move.onEffectiveness = function (typeMod, type, move) {
- return typeMod + this.getEffectiveness('Ice', type);
- };
- move.self = {boosts: {accuracy:-1}};
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Simple Beam", target);
- };
- delete move.onHit;
- }
- if (move.id === 'explosion' && name === 'trinitrotoluene') {
- move.name = 'Get Haxed';
- move.basePower = 250;
- move.onTryHit = function (target, source) {
- this.boost({def: -1}, target, source);
- };
- move.onHit = function (pokemon) {
- pokemon.side.addSideCondition('spikes');
- this.add('-message', 'Debris was scattered on ' + pokemon.name + "'s side!");
- };
- }
- if (move.id === 'waterfall' && name === 'waterbomb') {
- move.name = 'Water Bomb';
- move.basePowerCallback = function (pokemon, target) {
- if (this.effectiveWeather() === 'raindance' || this.effectiveWeather() === 'primordialsea') return 93;
- if (this.effectiveWeather() === 'sunnyday' || this.effectiveWeather() === 'desolateland') return 210;
- return 140;
- };
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Seismic Toss", target);
- target.ignore['Ability'] = true;
- };
- move.accuracy = true;
- move.ignoreImmunity = true;
- move.ignoreDefensive = true;
- move.ignoreEvasion = true;
- }
- if (move.id === 'metronome' && name === 'xfix') {
- if (pokemon.moveset[3] && pokemon.moveset[3].pp) {
- pokemon.moveset[3].pp = Math.round(pokemon.moveset[3].pp * 10 + 6) / 10;
- }
- move.name = '(Super Glitch)';
- move.multihit = [2, 5];
- move.onTryHit = function (target, source) {
- if (!source.isActive) return null;
- if (this.random(777) !== 42) return;
- var opponent = pokemon.side.foe.active[0];
- opponent.setStatus('brn');
- var possibleStatuses = ['confusion', 'flinch', 'attract', 'focusenergy', 'foresight', 'healblock'];
- for (var i = 0; i < possibleStatuses.length; i++) {
- if (this.random(3) === 1) {
- opponent.addVolatile(possibleStatuses[i]);
- }
- }
-
- function generateNoise() {
- var noise = '';
- var random = this.random(40, 81);
- for (var i = 0; i < random; i++) {
- if (this.random(4) !== 0) {
- // Non-breaking space
- noise += '\u00A0';
- } else {
- noise += String.fromCharCode(this.random(0xA0, 0x3040));
- }
- }
- return noise;
- }
- this.add('-message', "(Enemy " + generateNoise.call(this) + " TMTRAINER " + opponent.name + " is frozen solid?)");
- this.add('-message', "(Enemy " + generateNoise.call(this) + " TMTRAINER " + opponent.name + " is hurt by its burn!)");
- this.damage(opponent.maxhp * this.random(42, 96) * 0.01, opponent, opponent);
- var exclamation = source.status === 'brn' ? '!' : '?';
- this.add('-message', "(Enemy " + generateNoise.call(this) + " TMTRAINER @xfix is hurt by its burn" + exclamation + ")");
- this.damage(source.maxhp * this.random(24, 48) * 0.01, source, source);
- return null;
- };
- }
- if (move.id === 'detect' && name === 'zebraiken') {
- move.name = 'bzzt';
- move.self = {boosts: {spa:1, atk:1}};
- }
- if (move.id === 'wish' && name === 'zdrup') {
- move.name = 'Premonition';
- move.flags = {};
- move.sideCondition = 'mist';
- move.onTryHit = function (pokemon) {
- if (pokemon.side.premonTimer) {
- this.add ('-hint', 'Premonition\'s effect is already underway!');
- return false;
- }
- };
- move.onHit = function (pokemon) {
- pokemon.side.premonTimer = 1;
- };
- }
-
- // Driver signature moves.
- if (move.id === 'thunder' && name === 'aelita') {
- move.name = 'Energy Field';
- move.accuracy = 100;
- move.basePower = 150;
- move.secondaries = [{chance:40, status:'par'}];
- move.self = {boosts:{spa:-1, spd:-1, spe:-1}};
- }
- if (move.id === 'psychoboost' && name === 'arcticblast') {
- move.name = 'Doubles Purism';
- delete move.self;
- move.onHit = function (target, source) {
- if (source.hp) {
- var hasRemovedHazards = false;
- var sideConditions = {'spikes': 1, 'toxicspikes': 1, 'stealthrock': 1, 'stickyweb': 1};
- for (var i in sideConditions) {
- if (target.side.removeSideCondition(i)) {
- hasRemovedHazards = true;
- this.add('-sideend', target.side, this.getEffect(i).name, '[from] move: Doubles Purism', '[of] ' + source);
- }
- if (source.side.removeSideCondition(i)) {
- hasRemovedHazards = true;
- this.add('-sideend', source.side, this.getEffect(i).name, '[from] move: Doubles Purism', '[of] ' + source);
- }
- }
- if (hasRemovedHazards) this.add('c|%Arcticblast|HAZARDS ARE TERRIBLE IN DOUBLES');
- }
- };
- }
- if (move.id === 'whirlwind' && name === 'articuno') {
- move.name = 'True Support';
- move.self = {boosts: {def:1, spd:1}};
- move.onHit = function (target, source) {
- this.useMove('substitute', target, target);
- };
- }
- if (move.id === 'toxic' && name === 'asty') {
- move.name = 'Amphibian Toxin';
- move.accuracy = 100;
- move.self = {boosts:{atk:-1, spa:-1}};
- move.boosts = {atk:-1, spa:-1};
- move.onHit = function (target, source) {
- target.side.addSideCondition('toxicspikes');
- target.side.addSideCondition('toxicspikes');
- };
- }
- if (move.id === 'psywave' && name === 'astara') {
- move.name = 'Star Bolt Desperation';
- move.type = ['Bird', 'Bug', 'Dark', 'Dragon', 'Electric', 'Fairy', 'Fighting', 'Fire', 'Flying', 'Ghost', 'Grass', 'Ground', 'Ice', 'Normal', 'Poison', 'Psychic', 'Rock', 'Steel', 'Water'][this.random(19)];
- move.damageCallback = function (pokemon) {
- return pokemon.hp * 7 / 8;
- };
- move.onHit = function (target, source) {
- if (this.random(2) === 1) target.addVolatile('confusion');
- var status = ['par', 'brn', 'frz', 'psn', 'tox', 'slp'][this.random(6)];
- if (this.random(2) === 1) target.trySetStatus(status);
- var boosts = {};
- var increase = ['atk', 'def', 'spa', 'spd', 'spe', 'accuracy'][this.random(6)];
- var decrease = ['atk', 'def', 'spa', 'spd', 'spe', 'accuracy'][this.random(6)];
- boosts[increase] = 1;
- boosts[decrease] = -1;
- this.boost(boosts, source, source);
- };
- }
- if (move.id === 'spikecannon' && name === 'bloobblob') {
- // I fear that having two moves with id 'bulletseed' would mess with PP.
- move.name = 'Lava Whip';
- move.type = 'Fire';
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Tail Slap", target);
- };
- }
- if (move.id === 'hypervoice' && name === 'bumbadadabum') {
- move.name = 'Open Source Software';
- move.type = 'Electric';
- move.basePower = 110;
- move.accuracy = 95;
- move.secondaries = [{chance:20, self:{boosts:{spa:-1}}, volatileStatus:'disable'}];
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Dark Void", target);
- };
- move.onHit = function () {
- this.add('c|%Bumbadadabum|I\'d just like to interject for a moment. What you\'re referring to as Linux, is in fact, GNU/Linux, or as I\'ve recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.');
- };
- }
- if (move.id === 'swagger' && name === 'charlescarmichael') {
- move.name = 'Bad Pun';
- move.onHit = function (pokemon) {
- pokemon.addVolatile('taunt');
- };
- }
- if (move.id === 'protect' && name === 'crestfall') {
- move.name = 'Final Hour';
- move.onTryHit = function (pokemon) {
- if (pokemon.activeTurns > 1) {
- this.add('-hint', "Final Hour only works on your first turn out.");
- return false;
- }
- this.attrLastMove('[still]');
- this.add('-anim', pokemon, "Dark Pulse", pokemon);
- };
- move.onHit = function () {
- this.add('c|%Crestfall|' + ['The die is cast...', 'Time for reckoning.'][this.random(2)]);
- };
- move.self = {boosts: {spe:2, evasion:1, def:-2, spd:-2}};
- }
- if (move.id === 'dragonrush' && name === 'dtc') {
- move.name = 'Dragon Smash';
- move.basePower = 150;
- move.recoil = [1, 2];
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Head Charge", target);
- };
- }
- if (name === 'feliburn') {
- if (move.id === 'firepunch') {
- move.name = 'Falcon Punch';
- move.basePower = 150;
- move.accuracy = 85;
- move.self = {boosts: {atk:-1, def:-1, spd:-1}};
- move.onTryHit = function (target, source) {
- this.add('c|%Feliburn|FAALCOOOOOOON');
- this.attrLastMove('[still]');
- this.add('-anim', source, "Fire Punch", target);
- };
- move.onHit = function () {
- this.add('c|%Feliburn|PUUUUUNCH!!');
- };
- }
- if (move.id === 'taunt') {
- move.onHit = function () {
- this.add('c|%Feliburn|Show me your moves!');
- };
- }
- }
- if (move.id === 'highjumpkick' && name === 'galbia') {
- move.name = 'Kibitz';
- move.basePower = 110;
- move.accuracy = 100;
- delete move.onMoveFail;
- move.onHit = function (target, source) {
- var result = this.random(100);
- var chance = source.hasAbility('serenegrace') ? 60 : 30;
- // If the result is less than 60 or 30, then Kibitz will flinch the target.
- if (this.willMove(target) && result < chance) {
- target.addVolatile('flinch');
- } else if (target.hp !== 0 && !target.newlySwitched) {
- this.damage(source.maxhp / 3, source, source, 'Kibitz');
- }
- };
- }
- if (move.id === 'psychup' && name === 'hugendugen') {
- move.name = 'Policy Decision';
- move.onHit = function (target, source) {
- var targetBoosts = {};
- var targetDeboosts = {};
- for (var i in target.boosts) {
- targetBoosts[i] = target.boosts[i];
- targetDeboosts[i] = -target.boosts[i];
- }
- source.setBoost(targetBoosts);
- target.setBoost(targetDeboosts);
- this.add('-copyboost', source, target, '[from] move: Policy Decision');
- this.add('-invertboost', target, '[from] move: Policy Decision');
- };
- }
- if (move.id === 'surf' && name === 'jellicent') {
- move.name = 'Shot For Shot';
- move.basePower = 80;
- move.volatileStatus = 'confusion';
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Teeter Dance", target);
- };
- }
- if (move.id === 'vinewhip' && name === 'kayo') {
- move.name = 'Beard of Zeus Bomb';
- move.type = 'Steel';
- move.basePower = 90;
- move.secondaries = [{
- chance:50,
- self:{boosts:{atk:1, spd:1}},
- onHit: function (target, source) {
- if (target.gender === 'F') {
- target.addVolatile('attract');
- } else if (target.gender === 'M') {
- target.addVolatile('confusion');
- } else {
- target.trySetStatus('brn');
- }
- }
- }];
- move.onTryHit = function (target, source, move) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Leaf Storm", target);
- };
- }
- if (move.id === 'blazekick' && name === 'ljdarkrai') {
- move.name = 'Blaze Blade';
- move.accuracy = 100;
- move.basePower = 90;
- move.critRatio = 2;
- }
- if (move.id === 'bulletpunch' && name === 'majorbling') {
- move.name = 'Focus Laser';
- move.type = 'Electric';
- move.category = 'Status';
- move.basePower = 0;
- move.self = {volatileStatus:'torment'};
- move.onTryHit = function (target, source) {
- if (pokemon.activeTurns > 1) {
- this.add('-hint', "Focus Laser only works on your first turn out.");
- return false;
- }
- };
- move.onPrepareHit = function (source, target, move) {
- if (pokemon.activeTurns > 1) {
- return;
- }
- this.add('-message', "%Majorbling's power level is increasing! It's over nine thousand!");
- target.addVolatile('focuspunch');
- this.boost({spa:2, atk:2, spe:2}, target, target);
- };
- move.onHit = function (target, source) {
- this.useMove('discharge', source, target);
- source.removeVolatile('focuspunch');
- };
- }
- if (move.id === 'scald' && name === 'raseri') {
- move.name = 'Ban Scald';
- move.basePower = 150;
- delete move.secondary;
- delete move.secondaries;
- move.status = 'brn';
- }
- if (move.id === 'spikes' && name === 'quotecs') {
- move.name = 'Diversify';
- move.self = {boosts: {atk:1, spd:1}};
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Eruption", source);
- };
- }
- if (move.id === 'bulletpunch' && name === 'uselesstrainer') {
- move.name = 'Ranting';
- move.type = 'Bug';
- move.basePower = 40;
- move.multihit = [2, 5];
- move.self = {volatileStatus: 'mustrecharge'};
- move.accuracy = 95;
- }
-
- // Voices signature moves.
- if (move.id === 'superpower' && name === 'aldaron') {
- move.name = 'Admin Decision';
- move.basePower = 80;
- move.self = {boosts: {def:1, spd:1, spe:-2}};
- move.onEffectiveness = function () {
- return 1;
- };
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Simple Beam", target);
- };
- }
- if (move.id === 'partingshot' && name === 'bmelts') {
- move.name = "Aaaannnd... he's gone";
- move.type = 'Ice';
- move.category = 'Special';
- move.basePower = 80;
- delete move.boosts;
- }
- if (name === 'cathy') {
- if (move.id === 'kingsshield') {
- move.name = 'Heavy Dosage of Fun';
- }
- if (move.id === 'calmmind') {
- move.name = 'Surplus of Humour';
- move.self = {boosts: {spa:1, atk:1}};
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', target, "Geomancy", target);
- };
- }
- if (move.id === 'shadowsneak') {
- move.name = 'Patent Hilarity';
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Shadow Sneak", target);
- };
- }
- if (move.id === 'shadowball') {
- move.name = 'Ion Ray of Fun';
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Simple Beam", target);
- };
- }
- if (move.id === 'shadowclaw') {
- move.name = 'Sword of Fun';
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Sacred Sword", target);
- };
- }
- if (move.id === 'flashcannon') {
- move.name = 'Fun Cannon';
- move.secondaries = [{chance:60, boosts:{spd:-1}}];
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Hydro Pump", target);
- };
- }
- if (move.id === 'dragontail') {
- move.name = '/kick';
- move.type = 'Steel';
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Karate Chop", target);
- };
- }
- if (move.id === 'hyperbeam') {
- move.name = '/ban';
- move.basePower = 150;
- move.type = 'Ghost';
- }
- if (move.id === 'memento') {
- move.name = 'HP Display Policy';
- move.boosts = {atk: -12, def: -12, spa: -12, spd: -12, spe: -12, accuracy: -12, evasion: -12};
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Explosion", target);
- };
- move.onHit = function (target, source) {
- source.faint();
- };
- }
- }
- if (name === 'diatom') {
- if (move.id === 'healingwish') {
- move.name = 'Be Thankful';
- move.sideCondition = 'luckychant';
- move.onHit = function () {
- pokemon.side.addSideCondition('reflect');
- pokemon.side.addSideCondition('lightscreen');
- pokemon.side.addSideCondition('safeguard');
- pokemon.side.addSideCondition('mist');
- for (var i = 0; i < 6; i++) {
- var thanker = pokemon.side.pokemon[i];
- if (toId(thanker.name) !== name && !thanker.fainted) this.add('c|' + thanker.name + '|Thanks Diatom!');
- pokemon.hasBeenThanked = true;
- }
- };
- }
- if (move.id === 'psywave') {
- move.accuracy = 80;
- move.onMoveFail = function () {
- this.add('c|+Diatom|you should be thankful my psywave doesn\'t always hit');
- };
- }
- }
- if (move.id === 'growl' && name === 'limi') {
- move.name = 'Resilience';
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Shadow Ball", target);
- };
- move.onHit = function (target, source) {
- target.trySetStatus('psn');
- source.trySetStatus('psn');
- source.addVolatile('resilience');
- source.addVolatile('aquaring');
- };
- }
- if (move.id === 'toxic' && name === 'mattl') {
- move.name = 'Topology';
- move.self = {status: 'tox'};
- }
- if (move.id === 'swagger' && name === 'mikel') {
- move.accuracy = true;
- move.name = 'Trolling Lobby';
- move.onTryHit = function (pokemon, source) {
- if (source.hp <= Math.floor(source.maxhp * 2 / 3)) return false;
- return;
- };
- move.onHit = function (pokemon, source) {
- pokemon.addVolatile('taunt');
- if (!pokemon.hasType('Grass')) pokemon.addVolatile('leechseed');
- pokemon.addVolatile('torment');
- this.directDamage(source.maxhp * 2 / 3, source, source);
- };
- }
- if (move.id === 'judgment' && name === 'greatsage') {
- move.type = 'Rock';
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Energy Ball", target);
- this.add('c|+Great Sage|JUDGEMENT ' + target.name);
- };
- move.onHit = function (target, source) {
- source.addVolatile('ingrain');
- source.addVolatile('aquaring');
- };
- }
- if (move.id === 'recover' && name === 'redew') {
- move.onHit = function (pokemon) {
- if (pokemon.trySetStatus('tox')) {
- this.add('-message', '+Redew lost at SPL and got badly poisoned due to excessive trolling!');
- }
- };
- }
- if (move.id === 'detect' && name === 'shaymin') {
- move.name = 'Flower Garden';
- move.type = 'Grass';
- move.self = {boosts: {def:1, spa:1, spd:1}};
- move.onTryHit = function (target, source) {
- if (source.volatiles['flowergarden']) return false;
- this.attrLastMove('[still]');
- this.add('-anim', source, "Amnesia", source);
- };
- move.onHit = function (target, source) {
- source.addVolatile('stall');
- source.addVolatile('flowergarden');
- };
- }
- if (move.id === 'energyball' && name === 'somalia') {
- move.name = 'Ban Everyone';
- move.basePower = 0;
- delete move.secondary;
- move.category = 'Status';
- move.accuracy = 50 + 50 * pokemon.hp / pokemon.maxhp;
- move.onTryHit = function (target, source) {
- this.attrLastMove('[still]');
- this.add('-anim', source, "Explosion", target);
- source.faint();
- };
- move.onHit = function (target, source) {
- this.add('-anim', target, "Explosion", source);
- target.faint();
- target.side.addSideCondition('stealthrock');
- target.side.addSideCondition('toxicspikes');
- };
- move.onMoveFail = function (target, source, move) {
- source.faint();
- };
- }
- if (move.id === 'taunt' && name === 'talktakestime') {
- move.name = 'Bot Mute';
- move.onHit = function (target) {
- target.addVolatile('embargo');
- target.addVolatile('torment');
- target.addVolatile('healblock');
- };
- }
- }
- },
{
name: "CAP",
section: "Other Metagames",
diff --git a/data/scripts.js b/data/scripts.js
index daedd91860..e7811ac1b3 100644
--- a/data/scripts.js
+++ b/data/scripts.js
@@ -3083,728 +3083,5 @@ exports.BattleScripts = {
baseFormes[template.baseSpecies] = 1;
}
return pokemon;
- },
- randomSeasonalStaffTeam: function (side) {
- var team = [];
- var variant = this.random(2);
- // Hardcoded sets of the available Pokémon.
- var sets = {
- // Admins.
- '~Antar': {
- species: 'Quilava', ability: 'Turboblaze', item: 'Eviolite', gender: 'M',
- moves: ['blueflare', ['quiverdance', 'solarbeam', 'moonblast'][this.random(3)], 'sunnyday'],
- baseSignatureMove: 'spikes', signatureMove: "Firebomb",
- evs: {hp:4, spa:252, spe:252}, nature: 'Timid'
- },
- '~chaos': {
- species: 'Bouffalant', ability: 'Fur Coat', item: 'Red Card', gender: 'M',
- moves: ['precipiceblades', ['recover', 'stockpile', 'swordsdance'][this.random(3)], 'extremespeed', 'explosion'],
- baseSignatureMove: 'embargo', signatureMove: "Forcewin",
- evs: {hp:4, atk:252, spe:252}, nature: 'Adamant'
- },
- '~haunter': {
- species: 'Landorus', ability: 'Sheer Force', item: 'Life Orb', gender: 'M',
- moves: ['hurricane', 'earthpower', 'fireblast', 'blizzard', 'thunder'],
- baseSignatureMove: 'quiverdance', signatureMove: "Genius Dance",
- evs: {hp:4, spa:252, spe:252}, nature: 'Modest'
- },
- '~Jasmine': {
- species: 'Mew', ability: 'Speed Boost', item: 'Focus Sash', gender: 'F',
- moves: ['explosion', 'transform', 'milkdrink', 'storedpower'],
- baseSignatureMove: 'bellydrum', signatureMove: "Lockdown",
- evs: {hp:252, def:252, spd:4}, nature: 'Bold'
- },
- '~Joim': {
- species: 'Zapdos', ability: 'Download', item: 'Leftovers', gender: 'M', shiny: true,
- moves: ['thunderbolt', 'hurricane', ['earthpower', 'roost', 'flamethrower', 'worryseed', 'haze', 'spore'][this.random(6)]],
- baseSignatureMove: 'milkdrink', signatureMove: "Red Bull Drink",
- evs: {hp:4, spa:252, spe:252}, nature: 'Modest'
- },
- '~The Immortal': {
- species: 'Blastoise', ability: 'Magic Bounce', item: 'Blastoisinite', gender: 'M', shiny: true,
- moves: ['shellsmash', 'steameruption', 'dragontail'],
- baseSignatureMove: 'sleeptalk', signatureMove: "Sleep Walk",
- evs: {hp:252, def:4, spd:252}, nature: 'Sassy'
- },
- '~V4': {
- species: 'Victini', ability: 'Desolate Land', item: (variant === 0 ? ['Life Orb', 'Charcoal', 'Leftovers'][this.random(3)] : ['Life Orb', 'Choice Scarf', 'Leftovers'][this.random(3)]), gender: 'M',
- moves: (variant === 0 ? ['thousandarrows', 'bolt strike', 'shiftgear', 'dragonascent', 'closecombat', 'substitute'] : ['thousandarrows', 'bolt strike', 'dragonascent', 'closecombat']),
- baseSignatureMove: 'vcreate', signatureMove: "V-Generate",
- evs: {hp:4, atk:252, spe:252}, nature: 'Jolly'
- },
- '~Zarel': {
- species: 'Meloetta', ability: 'Serene Grace', item: '', gender: 'F',
- moves: ['lunardance', 'fierydance', 'perishsong', 'petaldance', 'quiverdance'],
- baseSignatureMove: 'relicsong', signatureMove: "Relic Song Dance",
- evs: {hp:4, atk:252, spa:252}, nature: 'Quiet'
- },
- // Leaders.
- '&hollywood': {
- species: 'Mr. Mime', ability: 'Prankster', item: 'Leftovers', gender: 'M',
- moves: ['batonpass', ['substitute', 'milkdrink'][this.random(2)], 'encore'],
- baseSignatureMove: 'geomancy', signatureMove: "Meme Mime",
- evs: {hp:252, def:4, spe:252}, nature: 'Timid'
- },
- '&jdarden': {
- species: 'Dragonair', ability: 'Fur Coat', item: 'Eviolite', gender: 'M',
- moves: ['rest', 'sleeptalk', 'quiverdance'], name: 'jdarden',
- baseSignatureMove: 'dragontail', signatureMove: "Wyvern's Wind",
- evs: {hp:252, def:4, spd:252}, nature: 'Calm'
- },
- '&Okuu': {
- species: 'Honchkrow', ability: 'Drought', item: 'Life Orb', gender: 'F',
- moves: [['bravebird', 'sacredfire'][this.random(2)], ['suckerpunch', 'punishment'][this.random(2)], 'roost'],
- baseSignatureMove: 'firespin', signatureMove: "Blazing Star - Ten Evil Stars",
- evs: {atk:252, spa:4, spe:252}, nature: 'Quirky'
- },
- '&sirDonovan': {
- species: 'Togetic', ability: 'Gale Wings', item: 'Eviolite', gender: 'M',
- moves: ['roost', 'hurricane', 'afteryou', 'charm', 'dazzlinggleam'],
- baseSignatureMove: 'mefirst', signatureMove: "Ladies First",
- evs: {hp:252, spa:252, spe:4}, nature: 'Modest'
- },
- '&Slayer95': {
- species: 'Scizor', ability: 'Illusion', item: 'Scizorite', gender: 'M',
- moves: ['swordsdance', 'bulletpunch', 'uturn'],
- baseSignatureMove: 'allyswitch', signatureMove: "Spell Steal",
- evs: {atk:252, def:252, spd: 4}, nature: 'Brave'
- },
- '&Sweep': {
- species: 'Omastar', ability: 'Drizzle', item: ['Honey', 'Mail'][this.random(2)], gender: 'M',
- moves: ['shellsmash', 'originpulse', ['thunder', 'icebeam'][this.random(2)]],
- baseSignatureMove: 'kingsshield', signatureMove: "Sweep's Shield",
- evs: {hp:4, spa:252, spe:252}, nature: 'Modest'
- },
- '&verbatim': {
- species: 'Archeops', ability: 'Reckless', item: 'Life Orb', gender: 'M',
- moves: ['headsmash', 'highjumpkick', 'flareblitz', 'volttackle', 'woodhammer'],
- baseSignatureMove: 'bravebird', signatureMove: "Glass Cannon",
- evs: {hp:4, atk:252, spe:252}, nature: 'Jolly'
- },
- // Mods.
- '@Acedia': {
- species: 'Slakoth', ability: 'Magic Bounce', item: 'Quick Claw', gender: 'F',
- moves: ['metronome', 'sketch', 'assist', 'swagger', 'foulplay'],
- baseSignatureMove: 'worryseed', signatureMove: "Procrastination",
- evs: {hp:252, atk:252, def:4}, nature: 'Serious'
- },
- '@AM': {
- species: 'Tyranitar', ability: 'Adaptability', item: (variant === 1 ? 'Lum Berry' : 'Choice Scarf'), gender: 'M',
- moves: (variant === 1 ? ['earthquake', 'diamondstorm', 'swordsdance', 'meanlook'] : ['knockoff', 'diamondstorm', 'earthquake']),
- baseSignatureMove: 'pursuit', signatureMove: "Predator",
- evs: {atk:252, def:4, spe: 252}, nature: 'Jolly'
- },
- '@antemortem': {
- species: 'Clefable', ability: (variant === 1 ? 'Sheer Force' : 'Multiscale'), item: (variant === 1 ? 'Life Orb' : 'Leftovers'), gender: 'M',
- moves: ['earthpower', 'cosmicpower', 'recover', 'gigadrain'],
- baseSignatureMove: 'drainingkiss', signatureMove: "Postmortem",
- evs: {hp:252, spa:252, def:4}, nature: 'Modest'
- },
- '@Ascriptmaster': {
- species: 'Rotom', ability: 'Teravolt', item: 'Air Balloon', gender: 'M',
- moves: ['chargebeam', 'signalbeam', 'flamethrower', 'aurorabeam', 'dazzlinggleam'],
- baseSignatureMove: 'triattack', signatureMove: "Spectrum Beam",
- evs: {hp:4, spa:252, spe:252}, nature: 'Timid'
- },
- '@asgdf': {
- species: 'Empoleon', ability: 'Filter', item: 'Rocky Helmet', gender: 'M',
- moves: ['scald', 'recover', 'calmmind', 'searingshot', 'encore'],
- baseSignatureMove: 'futuresight', signatureMove: "Obscure Pun",
- evs: {hp:252, spa:252, def:4}, nature: 'Modest'
- },
- '@Audiosurfer': {
- species: 'Audino', ability: 'Prankster', item: 'Audinite', gender: 'M',
- moves: ['boomburst', 'slackoff', 'glare'],
- baseSignatureMove: 'detect', signatureMove: "Audioshield",
- evs: {hp:252, spa:252, spe:4}, nature: 'Modest'
- },
- '@barton': {
- species: 'Piloswine', ability: 'Parental Bond', item: 'Eviolite', gender: 'M',
- moves: ['earthquake', 'iciclecrash', 'taunt'],
- baseSignatureMove: 'bulkup', signatureMove: "MDMA Huff",
- evs: {hp:252, atk:252, def:4}, nature: 'Adamant'
- },
- '@bean': {
- species: 'Liepard', ability: 'Prankster', item: 'Leftovers', gender: 'M',
- moves: ['knockoff', 'encore', 'substitute', 'gastroacid', 'leechseed'],
- baseSignatureMove: 'glare', signatureMove: "Coin Toss",
- evs: {hp:252, def:252, spd:4}, nature: 'Calm'
- },
- '@Beowulf': {
- species: 'Beedrill', ability: 'Download', item: 'Beedrillite', gender: 'M',
- moves: ['spikyshield', 'gunkshot', ['sacredfire', 'boltstrike', 'diamondstorm'][this.random(3)]],
- baseSignatureMove: 'bugbuzz', signatureMove: "Buzzing of the Swarm",
- evs: {hp:4, atk:252, spe:252}, nature: 'Jolly'
- },
- '@BiGGiE': {
- species: 'Snorlax', ability: 'Fur Coat', item: 'Leftovers', gender: 'M',
- moves: ['drainpunch', 'diamondstorm', 'kingsshield', 'knockoff', 'precipiceblades'],
- baseSignatureMove: 'dragontail', signatureMove: "Food Rush",
- evs: {hp:4, atk:252, spd:252}, nature: 'Adamant'
- },
- '@Blitzamirin': {
- species: 'Chandelure', ability: 'Prankster', item: 'Red Card', gender: 'M',
- moves: ['heartswap', ['darkvoid', 'substitute'][this.random(2)], ['shadowball', 'blueflare'][this.random(2)]],
- baseSignatureMove: 'oblivionwing', signatureMove: "Pneuma Relinquish",
- evs: {def:4, spa:252, spe:252}, nature: 'Timid'
- },
- '@CoolStoryBrobat': {
- species: 'Crobat', ability: 'Gale Wings', item: 'Black Glasses', gender: 'M',
- moves: ['knockoff', 'bulkup', 'roost', 'closecombat', 'defog'],
- baseSignatureMove: 'bravebird', signatureMove: "Brave Bat",
- evs: {hp:4, atk:252, spe:252}, nature: 'Jolly'
- },
- '@Dell': {
- species: 'Lucario', ability: 'Simple', item: 'Lucarionite', gender: 'M',
- moves: ['jumpkick', ['flashcannon', 'bulletpunch'][this.random(2)], 'batonpass'],
- baseSignatureMove: 'detect', signatureMove: "Aura Parry",
- evs: {hp:4, atk:216, spa:36, spe:252}, nature: 'Naive'
- },
- '@Eevee General': {
- species: 'Eevee', ability: 'Magic Guard', item: 'Eviolite', gender: 'M',
- moves: ['shiftgear', 'healorder', 'crunch', 'sacredsword', 'doubleedge'],
- baseSignatureMove: 'quickattack', signatureMove: "War Crimes",
- evs: {hp:252, atk:252, def:4}, nature: 'Impish'
- },
- '@Electrolyte': {
- species: 'Elekid', ability: 'Pure Power', item: 'Life Orb', gender: 'M',
- moves: ['volttackle', 'earthquake', ['iciclecrash', 'diamondstorm'][this.random(2)]],
- baseSignatureMove: 'entrainment', signatureMove: "Study",
- evs: {atk:252, spd:4, spe:252}, nature: 'Adamant'
- },
- '@Enguarde': {
- species: 'Gallade', ability: ['Intimidate', 'Hyper Cutter'][this.random(2)], item: 'Galladite', gender: 'M',
- moves: ['psychocut', 'sacredsword', ['nightslash', 'precipiceblades', 'leafblade'][this.random(3)]],
- baseSignatureMove: 'fakeout', signatureMove: "Ready Stance",
- evs: {hp:4, atk:252, spe:252}, nature: 'Adamant'
- },
- '@Eos': {
- species: 'Drifblim', ability: 'Fur Coat', item: 'Assault Vest', gender: 'M',
- moves: ['oblivionwing', 'paraboliccharge', 'gigadrain', 'drainingkiss'],
- baseSignatureMove: 'shadowball', signatureMove: "Shadow Curse", //placeholder
- evs: {hp:248, spa:252, spd:8}, nature: 'Modest'
- },
- '@Former Hope': {
- species: 'Froslass', ability: 'Prankster', item: 'Focus Sash', gender: 'M',
- moves: [['icebeam', 'shadowball'][this.random(2)], 'destinybond', 'thunderwave'],
- baseSignatureMove: 'roleplay', signatureMove: "Role Play",
- evs: {hp:252, spa:252, spd:4}, nature: 'Modest'
- },
- '@Genesect': {
- species: 'Genesect', ability: 'Mold Breaker', item: 'Life Orb', gender: 'M',
- moves: ['bugbuzz', 'closecombat', 'extremespeed', 'thunderbolt', 'uturn'],
- baseSignatureMove: 'geargrind', signatureMove: "Grind you're mum",
- evs: {atk:252, spa:252, spe:4}, nature: 'Quiet'
- },
- '@Hippopotas': {
- species: 'Hippopotas', ability: 'Regenerator', item: 'Eviolite', gender: 'M',
- moves: ['haze', 'stealthrock', 'spikes', 'toxicspikes', 'stickyweb'],
- baseSignatureMove: 'partingshot', signatureMove: "Hazard Pass",
- evs: {hp:252, def:252, spd:4}, ivs: {atk:0, spa:0}, nature: 'Bold'
- },
- '@HYDRO IMPACT': {
- species: 'Charizard', ability: 'Rivalry', item: 'Life Orb', gender: 'M',
- moves: ['airslash', 'flamethrower', 'nobleroar', 'hydropump'],
- baseSignatureMove: 'hydrocannon', signatureMove: "HYDRO IMPACT",
- evs: {atk:4, spa:252, spe:252}, nature: 'Hasty'
- },
- '@innovamania': {
- species: 'Arceus', ability: 'Pick Up', item: 'Black Glasses', gender: 'M',
- moves: [['holdhands', 'trickortreat'][this.random(2)], ['swordsdance', 'agility'][this.random(2)], 'celebrate'],
- baseSignatureMove: 'splash', signatureMove: "Rage Quit",
- evs: {hp:4, atk:252, spe:252}, nature: 'Jolly'
- },
- '@jas61292': {
- species: 'Malaconda', ability: 'Analytic', item: 'Safety Goggles', gender: 'M',
- moves: ['coil', 'thunderwave', 'icefang', 'powerwhip', 'moonlight'],
- baseSignatureMove: 'crunch', signatureMove: "Minus One",
- evs: {hp:252, atk:252, spd:4}, nature: 'Adamant'
- },
- '@jin of the gale': {
- species: 'Starmie', ability: 'Drizzle', item: 'Damp Rock', gender: 'M',
- moves: ['steameruption', 'hurricane', 'recover', 'psystrike', 'quiverdance'],
- baseSignatureMove: 'rapidspin', signatureMove: "Beyblade",
- evs: {hp:4, spa:252, spe:252}, nature: 'Timid'
- },
- '@Kostitsyn-Kun': {
- species: 'Gothorita', ability: 'Simple', item: 'Eviolite', gender: 'F', //requested
- moves: ['calmmind', 'psyshock', ['dazzlinggleam', 'secretsword'][this.random(2)]],
- baseSignatureMove: 'refresh', signatureMove: "Kawaii-desu uguu~",
- evs: {hp:252, def:136, spe:120}, nature: 'Bold'
- },
- '@kupo': {
- species: 'Pikachu', ability: 'Prankster', item: "Light Ball", gender: 'M',
- moves: ['substitute', 'spore', 'encore'],
- baseSignatureMove: 'transform', signatureMove: "Kupo Nuts",
- evs: {hp:252, def:4, spd:252}, nature: 'Jolly'
- },
- '@Lawrence III': {
- species: 'Lugia', ability: 'Trace', item: "Grip Claw", gender: 'M',
- moves: ['infestation', 'magmastorm', 'oblivionwing'],
- baseSignatureMove: 'gust', signatureMove: "Shadow Storm",
- evs: {hp:248, def:84, spa:92, spd:84}, nature: 'Modest'
- },
- '@Layell': {
- species: 'Sneasel', ability: 'Technician', item: "King's Rock", gender: 'M',
- moves: ['iceshard', 'iciclespear', ['machpunch', 'pursuit', 'knockoff'][this.random(3)]],
- baseSignatureMove: 'protect', signatureMove: "Pixel Protection",
- evs: {hp:4, atk:252, spe:252}, nature: 'Adamant'
- },
- '@LegitimateUsername': {
- species: 'Shuckle', ability: 'Unaware', item: 'Leftovers', gender: 'M',
- moves: ['leechseed', 'rest', 'foulplay'],
- baseSignatureMove: 'shellsmash', signatureMove: "Shell Fortress",
- evs: {hp:252, def:228, spd:28}, nature: 'Calm'
- },
- '@Level 51': {
- species: 'Togekiss', ability: 'Parental Bond', item: 'Leftovers', gender: 'M',
- moves: ['seismictoss', 'roost', ['cosmicpower', 'cottonguard'][this.random(2)]],
- baseSignatureMove: 'trumpcard', signatureMove: "Next Level Strats",
- evs: {hp:252, def:4, spd:252}, nature: 'Calm'
- },
- '@Lyto': {
- species: 'Lanturn', ability: 'Magic Bounce', item: 'Leftovers', gender: 'M',
- moves: ['originpulse', 'lightofruin', 'blueflare', 'recover', 'tailglow'],
- baseSignatureMove: 'thundershock', signatureMove: "Gravity Storm",
- evs: {hp:188, spa:252, spe:68}, nature: 'Modest'
- },
- '@Marty': {
- species: 'Houndoom', ability: 'Drought', item: 'Houndoominite', gender: 'M',
- moves: ['nightdaze', 'solarbeam', 'aurasphere', 'thunderbolt', 'earthpower'],
- baseSignatureMove: 'sacredfire', signatureMove: "Immolate",
- evs: {spa:252, spd:4, spe:252}, ivs: {atk:0}, nature: 'Timid'
- },
- '@Morfent': {
- species: 'Dusknoir', ability: 'Fur Coat', item: "Leftovers", gender: 'M',
- moves: [['recover', 'acidarmor', 'swordsdance', 'willowisp', 'trickroom'][this.random(5)], 'shadowclaw', ['earthquake', 'icepunch', 'thunderpunch'][this.random(3)]],
- baseSignatureMove: 'spikes', signatureMove: "Used Needles",
- evs: {hp:252, atk:4, def:252}, ivs: {spe:0}, nature: 'Impish'
- },
- '@Nani Man': {
- species: 'Gengar', ability: 'Desolate Land', item: 'Black Glasses', gender: 'M', shiny: true,
- moves: ['eruption', 'swagger', 'shadow ball', 'topsyturvy', 'dazzlinggleam'],
- baseSignatureMove: 'fireblast', signatureMove: "Tanned",
- evs: {hp:4, spa:252, spe:252}, nature: 'Timid'
- },
- '@NixHex': {
- species: 'Porygon2', ability: 'No Guard', item: 'Eviolite', gender: 'M', shiny: true,
- moves: ['thunder', 'blizzard', 'overheat', 'triattack', 'recover'],
- baseSignatureMove: 'inferno', signatureMove: "Beautiful Disaster",
- evs: {hp:252, spa:252, spe:4}, nature: 'Modest'
- },
- '@Osiris': {
- species: 'Pumpkaboo-Super', ability: 'Bad Dreams', item: 'Eviolite', gender: 'M',
- moves: ['leechseed', 'recover', 'cosmicpower'],
- baseSignatureMove: 'hypnosis', signatureMove: "Restless Sleep",
- evs: {hp:252, def:216, spd:40}, ivs: {atk:0}, nature: 'bold'
- },
- '@phil': {
- species: 'Gastrodon', ability: 'Drizzle', item: 'Shell Bell', gender: 'M',
- moves: ['scald', 'recover', 'gastroacid', 'brine'],
- baseSignatureMove: 'whirlpool', signatureMove: "Slug Attack",
- evs: {hp:252, spa:252, def:4}, nature: 'Quirky'
- },
- '@qtrx': {
- species: 'Unown', ability: 'Levitate', item: 'Focus Sash', gender: 'M',
- moves: [],
- baseSignatureMove: 'meditate', signatureMove: "Hidden Power... Normal?",
- evs: {hp:252, def:4, spa:252}, ivs: {atk:0, spe:0}, nature: 'Quiet'
- },
- '@Queez': {
- species: 'Cubchoo', ability: 'Prankster', item: 'Eviolite', gender: 'M',
- moves: ['pound', 'fly', 'softboiled', 'thunderwave', 'waterpulse'],
- baseSignatureMove: 'leer', signatureMove: "Sneeze",
- evs: {hp:252, def:228, spd:28}, nature: 'Calm'
- },
- '@rekeri': {
- species: 'Tyrantrum', ability: 'Tough Claws', item: 'Life Orb', gender: 'M',
- moves: ['outrage', 'extremespeed', 'stoneedge', 'closecombat'],
- baseSignatureMove: 'headcharge', signatureMove: "Land Before Time",
- evs: {hp:252, atk:252, def:4}, nature: 'Adamant'
- },
- '@Relados': {
- species: 'Terrakion', ability: 'Guts', item: 'Flame Orb', gender: 'M',
- moves: ['knockoff', 'diamondstorm', 'closecombat', 'iceshard', 'drainpunch'],
- baseSignatureMove: 'stockpile', signatureMove: "Loyalty",
- evs: {atk:252, def:4, spe:252}, nature: 'Adamant'
- },
- '@Reverb': {
- species: 'Slaking', ability: 'Scrappy', item: 'Assault Vest', gender: 'M',
- moves: ['feint', 'stormthrow', 'blazekick'], // Feint as a countermeasure to the abundance of Protect-based set-up moves.
- baseSignatureMove: 'eggbomb', signatureMove: "fat monkey",
- evs: {hp:252, spd:40, spe:216}, nature: 'Jolly' // EV-nerf.
- },
- '@RosieTheVenusaur': {
- species: 'Venusaur', ability: 'Moxie', item: 'Leftovers', gender: 'F',
- moves: ['flamethrower', 'extremespeed', 'sacredfire', 'knockoff', 'closecombat'],
- baseSignatureMove: 'frenzyplant', signatureMove: "Swag Plant",
- evs: {hp:252, atk:252, def:4}, nature: 'Adamant'
- },
- '@scalarmotion': {
- species: 'Cryogonal', ability: 'Magic Guard', item: 'Focus Sash', gender: 'M',
- moves: ['rapidspin', 'willowisp', 'taunt', 'recover', 'voltswitch'],
- baseSignatureMove: 'icebeam', signatureMove: "Eroding Frost",
- evs: {spa:252, spd:4, spe:252}, nature: 'Timid'
- },
- '@Scotteh': {
- species: 'Suicune', ability: 'Fur Coat', item: 'Leftovers', gender: 'M',
- moves: ['icebeam', 'steameruption', 'recover', 'nastyplot'],
- baseSignatureMove: 'boomburst', signatureMove: "Geomagnetic Storm",
- evs: {def:252, spa:4, spe:252}, nature: 'Bold'
- },
- '@Shame That': {
- species: 'Weavile', ability: 'Magic Guard', item: 'Focus Sash', gender: 'M',
- moves: ['substitute', 'captivate', 'reflect', 'rest', 'raindance', 'foresight'],
- baseSignatureMove: 'healingwish', signatureMove: "Extreme Compromise",
- evs: {hp:252, def:4, spe:252}, nature: 'Jolly'
- },
- '@shrang': {
- species: 'Latias', ability: 'Pixilate', item: ['Latiasite', 'Life Orb', 'Leftovers'][this.random(3)], gender: 'M',
- moves: ['dracometeor', 'roost', 'nastyplot', 'fireblast', 'aurasphere', 'psystrike'], //not QD again senpai >.<
- baseSignatureMove: 'judgment', signatureMove: "Pixilate", //placeholder
- evs: {hp:160, spa:96, spe:252}, ivs: {atk:0}, nature: 'Timid'
- },
- '@Skitty': {
- species: 'Audino', ability: 'Intimidate', item: 'Audinite', gender: 'M',
- moves: ['acupressure', 'recover', ['taunt', 'cosmicpower', 'magiccoat'][this.random(3)]],
- baseSignatureMove: 'storedpower', signatureMove: "Ultimate Dismissal",
- evs: {hp:252, def:252, spd:4}, nature: 'Bold'
- },
- '@Snowflakes': {
- species: 'Celebi', ability: 'Filter', item: 'Leftovers', gender: 'M',
- moves: [
- ['gigadrain', ['recover', 'quiverdance'][this.random(2)], ['icebeam', 'searingshot', 'psystrike', 'thunderbolt', 'aurasphere', 'moonblast'][this.random(6)]],
- ['gigadrain', 'recover', [['uturn', 'voltswitch'][this.random(2)], 'thunderwave', 'leechseed', 'healbell', 'healingwish', 'reflect', 'lightscreen', 'stealthrock'][this.random(8)]],
- ['gigadrain', 'perishsong', ['recover', ['uturn', 'voltswitch'][this.random(2)], 'leechseed', 'thunderwave', 'healbell'][this.random(5)]],
- ['gigadrain', 'recover', ['thunderwave', 'icebeam', ['uturn', 'voltswitch'][this.random(2)], 'psystrike'][this.random(4)]]
- ][this.random(4)],
- baseSignatureMove: 'thousandarrows', signatureMove: "Azalea Butt Slam",
- evs: {hp:252, spa:252, def:4}, nature: 'Modest'
- },
- '@Spydreigon': {
- species: 'Hydreigon', ability: 'Mega Launcher', item: 'Life Orb', gender: 'M',
- moves: ['dragonpulse', 'darkpulse', 'aurasphere', 'originpulse', 'shiftgear'],
- baseSignatureMove: 'waterpulse', signatureMove: "Mineral Pulse",
- evs: {hp:4, spa:252, spe:252}, nature: 'Timid'
- },
- '@Steamroll': {
- species: 'Growlithe', ability: 'Adaptability', item: 'Life Orb', gender: 'M',
- moves: ['flareblitz', 'volttackle', 'closecombat'],
- baseSignatureMove: 'protect', signatureMove: "Conflagration",
- evs: {atk:252, def:4, spe:252}, nature: 'Adamant'
- },
- '@SteelEdges': {
- species: 'Alakazam', ability: 'Competitive', item: 'Alakazite', gender: 'M',
- moves: ['bugbuzz', 'hypervoice', 'psystrike', 'batonpass', 'focusblast'],
- baseSignatureMove: 'tailglow', signatureMove: "True Daily Double",
- evs: {hp:4, spa:252, spe:252}, nature: 'Serious'
- },
- '@Temporaryanonymous': {
- species: 'Doublade', ability: 'Tough Claws', item: 'Eviolite', gender: 'M',
- moves: ['swordsdance', ['xscissor', 'sacredsword', 'knockoff'][this.random(3)], 'geargrind'],
- baseSignatureMove: 'shadowsneak', signatureMove: "SPOOPY EDGE CUT",
- evs: {hp:252, atk:252, def:4}, nature: 'Adamant'
- },
- '@Test2017': {
- species: "Farfetch'd", ability: 'Wonder Guard', item: 'Stick', gender: 'M',
- moves: ['foresight', 'gastroacid', 'nightslash', 'roost', 'thousandarrows'],
- baseSignatureMove: 'karatechop', signatureMove: "Ducktastic",
- evs: {hp:252, atk:252, spe:4}, nature: 'Adamant'
- },
- '@TFC': {
- species: 'Blastoise', ability: 'Prankster', item: 'Leftovers', gender: 'M',
- moves: ['quiverdance', 'cottonguard', 'storedpower', 'aurasphere', 'slackoff'],
- baseSignatureMove: 'drainpunch', signatureMove: "Chat Flood",
- evs: {atk:252, def:4, spe:252}, nature: 'Modest'
- },
- '@TGMD': {
- species: 'Stoutland', ability: 'Speed Boost', item: 'Life Orb', gender: 'M',
- moves: [['extremespeed', 'sacredsword'][this.random(2)], 'knockoff', 'protect'],
- baseSignatureMove: 'return', signatureMove: "Canine Carnage",
- evs: {hp:32, atk:252, spe:224}, nature: 'Adamant'
- },
- '@Timbuktu': {
- species: 'Heatmor', ability: 'Contrary', item: 'Life Orb', gender: 'M',
- moves: ['overheat', ['hammerarm', 'substitute'][this.random(2)], ['glaciate', 'thunderbolt'][this.random(2)]], // Curse didn't make sense at all so it was changed to Hammer Arm
- baseSignatureMove: 'rockthrow', signatureMove: "Geoblast",
- evs: {spa:252, spd:4, spe:252}, nature: 'Timid'
- },
- '@Trickster': {
- species: 'Whimsicott', ability: 'Prankster', item: 'Leftovers', gender: 'M',
- moves: ['swagger', 'spore', 'seedflare', 'recover', 'nastyplot'],
- baseSignatureMove: 'naturepower', signatureMove: "Cometstorm",
- evs: {hp:252, spa:252, spe:4}
- },
- '@trinitrotoluene': {
- species: 'Metagross', ability: 'Levitate', item: 'Metagrossite', gender: 'M',
- moves: ['meteormash', 'zenheadbutt', 'hammerarm', 'grassknot', 'earthquake', 'thunderpunch', 'icepunch', 'shiftgear'],
- baseSignatureMove: 'explosion', signatureMove: "Get Haxed",
- evs: {atk:252, def:4, spe:252}, nature: 'Jolly'
- },
- '@WaterBomb': {
- species: 'Poliwrath', ability: 'Unaware', item: 'Leftovers', gender: 'M',
- moves: ['heartswap', 'softboiled', 'aromatherapy', 'highjumpkick'],
- baseSignatureMove: 'waterfall', signatureMove: "Water Bomb",
- evs: {hp:252, atk:252, def:4}, nature: 'Adamant'
- },
- '@xfix': {
- species: 'Xatu', ability: 'Magic Bounce', item: 'Focus Sash', gender: 'M',
- moves: ['thunderwave', 'substitute', 'roost'],
- baseSignatureMove: 'metronome', signatureMove: "(Super Glitch)",
- evs: {hp:252, spd:252, def:4}, nature: 'Calm'
- },
- '@zdrup': {
- species: 'Slowking', ability: 'Slow Start', item: 'Leftovers', gender: 'M',
- moves: ['psystrike', 'futuresight', 'originpulse', 'slackoff', 'destinybond'],
- baseSignatureMove: 'wish', signatureMove: "Premonition",
- evs: {hp:252, def:4, spd:252}, nature: 'Quiet'
- },
- '@Zebraiken': {
- species: 'zebstrika', ability: 'Compound Eyes', item: 'Life Orb', gender: 'M',
- moves: ['thunder', ['fire blast', 'focusblast', 'highjumpkick', 'meteormash'][this.random(3)], ['blizzard', 'iciclecrash', 'sleeppowder'][this.random(3)]], // why on earth does he learn Meteor Mash?
- baseSignatureMove: 'detect', signatureMove: "bzzt",
- evs: {atk:4, spa:252, spe:252}, nature: 'Hasty'
- },
- // Drivers.
- '%Aelita': {
- species: 'Porygon-Z', ability: 'Protean', item: 'Life Orb', gender: 'F',
- moves: ['boomburst', 'quiverdance', 'chatter', 'blizzard', 'moonblast'],
- baseSignatureMove: 'thunder', signatureMove: "Energy Field",
- evs: {hp:4, spa:252, spd:252}, nature: 'Modest'
- },
- '%Arcticblast': {
- species: 'Cresselia', ability: 'Levitate', item: 'Sitrus Berry', gender: 'M',
- moves: [
- ['fakeout', 'icywind', 'trickroom', 'safeguard', 'thunderwave', 'tailwind', 'knockoff'][this.random(7)],
- ['sunnyday', 'moonlight', 'calmmind', 'protect', 'taunt'][this.random(5)],
- ['originpulse', 'heatwave', 'hypervoice', 'icebeam', 'moonblast'][this.random(5)]
- ],
- baseSignatureMove: 'psychoboost', signatureMove: "Doubles Purism",
- evs: {hp:252, def:120, spa:56, spd:80}, nature: 'Sassy'
- },
- '%Articuno': {
- species: 'Articuno', ability: 'Magic Guard', item: 'Sitrus Berry', gender: 'F',
- moves: ['roost', 'calmmind', ['psychic', 'airslash', 'icebeam', 'thunderwave'][this.random(4)]],
- baseSignatureMove: 'whirlwind', signatureMove: "True Support",
- evs: {hp:252, def:192, spa:64}, nature: 'Modest'
- },
- '%Ast☆arA': {
- species: 'Jirachi', ability: 'Cursed Body', item: ['Leftovers', 'Sitrus Berry'][this.random(2)], gender: 'F',
- moves: ['psychic', 'moonblast', 'nastyplot', 'recover', 'surf'],
- baseSignatureMove: 'psywave', signatureMove: "Star Bolt Desperation",
- evs: {hp:4, spa:252, spd:252}, nature: 'Modest'
- },
- '%Asty': {
- species: 'Seismitoad', ability: 'Sap Sipper', item: 'Red Card', gender: 'M',
- moves: ['earthquake', 'recover', 'icepunch'],
- baseSignatureMove: 'toxic', signatureMove: "Amphibian Toxin",
- evs: {atk:252, spd:252, spe:4}, nature: 'Adamant'
- },
- '%Birkal': {
- species: 'Rotom-Fan', ability: 'Magic Guard', item: 'Choice Scarf', gender: 'M',
- moves: ['trick', 'aeroblast', ['discharge', 'partingshot', 'recover', 'tailglow'][this.random(4)]],
- baseSignatureMove: 'quickattack', signatureMove: "Caw",
- evs: {hp:4, spa:252, spe:252}, nature: 'Timid'
- },
- '%bloobblob': {
- species: 'Cinccino', ability: 'Skill Link', item: 'Life Orb', gender: 'M',
- moves: ['bulletseed', 'rockblast', 'uturn', 'tailslap', 'knockoff'],
- baseSignatureMove: 'spikecannon', signatureMove: "Lava Whip",
- evs: {atk:252, def:4, spe:252}, nature: 'Adamant'
- },
- '%Bumbadadabum': {
- species: 'Samurott', ability: 'Analytic', item: 'Safety Goggles', gender: 'M',
- moves: ['calmmind', 'originpulse', 'icebeam'],
- baseSignatureMove: 'hypervoice', signatureMove: "Open Source Software",
- evs: {hp:252, spa:252, spd:4}, nature: 'Modest'
- },
- '%Charles Carmichael': {
- species: 'Quagsire', ability: 'Sap Sipper', item: 'Liechi Berry', gender: 'M',
- moves: ['waterfall', 'earthquake', ['stoneedge', 'rockslide'][this.random(2)], 'icepunch'],
- baseSignatureMove: 'swagger', signatureMove: "Bad Pun",
- evs: {hp:248, atk:252, spe:8}, nature: 'Naughty'
- },
- '%Crestfall': {
- species: 'Darkrai', ability: 'Parental Bond', item: 'Lum Berry', gender: 'M',
- moves: ['darkpulse', 'icebeam', 'oblivionwing'],
- baseSignatureMove: 'protect', signatureMove: "Final Hour",
- evs: {spa:252, def:4, spe:252}, nature: 'Modest'
- },
- '%DTC': {
- species: 'Charizard', ability: 'Magic Guard', item: 'Charizardite X', gender: 'M',
- moves: ['shiftgear', 'blazekick', 'roost'],
- baseSignatureMove: 'dragonrush', signatureMove: "Dragon Smash",
- evs: {hp:4, atk:252, spe:252}, nature: 'Adamant'
- },
- '%Feliburn': {
- species: 'Infernape', ability: 'Adaptability', item: 'Expert Belt', gender: 'M',
- moves: ['highjumpkick', 'sacredfire', 'taunt', 'fusionbolt', 'machpunch'],
- baseSignatureMove: 'firepunch', signatureMove: "Falcon Punch",
- evs: {atk:252, def:4, spe:252}, nature: 'Jolly'
- },
- '%galbia': {
- species: 'Cobalion', ability: 'Serene Grace', item: 'Leftovers',
- moves: ['ironhead', 'taunt', 'swordsdance', 'thunderwave', 'substitute'],
- baseSignatureMove: 'highjumpkick', signatureMove: "Kibitz",
- evs: {atk:252, def:4, spe:252}, nature: 'Jolly'
- },
- '%Hugendugen': {
- species: 'Latios', ability: 'Prankster', item: 'Life Orb', gender: 'M',
- moves: ['taunt', 'dracometeor', 'surf', 'earthpower', 'recover', 'thunderbolt', 'icebeam'],
- baseSignatureMove: 'psychup', signatureMove: "Policy Decision",
- evs: {hp:4, spa:252, spe:252}, nature: 'Modest'
- },
- '%Jellicent': {
- species: 'Jellicent', ability: 'Poison Heal', item: 'Toxic Orb', gender: 'M',
- moves: ['recover', 'freezedry', 'trick', 'substitute'],
- baseSignatureMove: 'surf', signatureMove: "Shot For Shot",
- evs: {hp:252, def:4, spd:252}, nature: 'Calm'
- },
- '%Kayo': {
- species: 'Gourgeist-Super', ability: 'Magic Bounce', item: 'Leftovers', gender: 'M', shiny: true,
- moves: ['leechseed', 'shadowforce', 'spore', 'recover'],
- baseSignatureMove: 'vinewhip', signatureMove: "Beard of Zeus Bomb",
- evs: {hp:252, def:252, spd:4}, nature: 'Impish'
- },
- '%LJDarkrai': {
- species: 'Garchomp', ability: 'Compound Eyes', item: 'Life Orb', gender: 'M',
- moves: ['dragondance', 'dragonrush', 'gunkshot', 'precipiceblades', 'sleeppowder', 'stoneedge'], name: '%LJDarkrai',
- baseSignatureMove: 'blazekick', signatureMove: "Blaze Blade",
- evs: {hp:4, atk:252, spe:252}, nature: 'Adamant'
- },
- '%Majorbling': {
- species: 'Dedenne', ability: 'Levitate', item: 'Expert Belt', gender: 'M',
- moves: ['moonblast', 'voltswitch', 'discharge', 'focusblast', 'taunt'],
- baseSignatureMove: 'bulletpunch', signatureMove: "Focus Laser",
- evs: {hp:4, spa:252, spe:252}, nature: 'Timid'
- },
- '%QuoteCS': {
- species: 'Skarmory', ability: 'Adaptability', item: 'Life Orb', gender: 'M',
- moves: ['meteormash', 'bravebird', 'roost'],
- baseSignatureMove: 'spikes', signatureMove: "Diversify",
- evs: {hp:248, atk:252, spe:8}, nature: 'Adamant'
- },
- '%raseri': {
- species: 'Prinplup', ability: 'Regenerator', item: 'Eviolite', gender: 'M',
- moves: ['defog', 'stealthrock', 'toxic', 'roar', 'bravebird'],
- baseSignatureMove: 'scald', signatureMove: "Ban Scald",
- evs: {hp:252, def:228, spd:28}, nature: 'Bold'
- },
- '%uselesstrainer': {
- species: 'Scatterbug', ability: 'Skill Link', item: 'Mail', gender: 'M',
- moves: ['explosion', 'stringshot', 'stickyweb', 'spiderweb', 'mist'],
- baseSignatureMove: 'bulletpunch', signatureMove: "Ranting",
- evs: {atk:252, def:4, spe:252}, nature: 'Jolly'
- },
- '%Vacate': {
- species: 'Bibarel', ability: 'Adaptability', item: 'Leftovers', gender: 'M',
- moves: ['earthquake', 'smellingsalts', 'stockpile', 'zenheadbutt', 'waterfall'],
- baseSignatureMove: 'superfang', signatureMove: "Duper Fang",
- evs: {atk:252, def:4, spd:252}, nature: 'Quiet'
- },
- // Voices.
- '+Aldaron': {
- species: 'Conkeldurr', ability: 'Speed Boost', item: 'Assault Vest', gender: 'M',
- moves: ['drainpunch', 'machpunch', 'iciclecrash', 'closecombat', 'earthquake', 'shadowclaw'],
- baseSignatureMove: 'superpower', signatureMove: "Admin Decision",
- evs: {hp:252, atk:252, def:4}, nature: 'Adamant'
- },
- '+bmelts': {
- species: 'Mewtwo', ability: 'Regenerator', item: 'Mewtwonite X', gender: 'M',
- moves: ['batonpass', 'uturn', 'voltswitch'],
- baseSignatureMove: 'partingshot', signatureMove: "Aaaannnd... he's gone",
- evs: {hp:4, spa:252, spe:252}, nature: 'Modest'
- },
- '+Cathy': {
- species: 'Aegislash', ability: 'Stance Change', item: 'Life Orb', gender: 'F',
- moves: ['kingsshield', 'shadowsneak', ['calmmind', 'shadowball', 'shadowclaw', 'flashcannon', 'dragontail', 'hyperbeam'][this.random(5)]],
- baseSignatureMove: 'memento', signatureMove: "HP Display Policy",
- evs: {hp:4, atk:252, spa:252}, nature: 'Quiet'
- },
- '+Diatom': {
- species: 'Spiritomb', ability: 'Parental Bond', item: 'Custap Berry', gender: 'M',
- moves: ['psywave', ['poisonfang', 'shadowstrike'][this.random(2)], ['uturn', 'rapidspin'][this.random(2)]],
- baseSignatureMove: 'healingwish', signatureMove: "Be Thankful I Sacrificed Myself",
- evs: {hp:252, def:136, spd:120}, nature: 'Impish'
- },
- '+Limi': {
- species: 'Primeape', ability: 'Poison Heal', item: 'Leftovers', gender: 'M',
- moves: ['ingrain', 'doubleedge', 'leechseed'],
- baseSignatureMove: 'growl', signatureMove: "Resilience",
- evs: {hp:252, atk:252, def:4}, nature: 'Adamant'
- },
- '+MattL': {
- species: 'Mandibuzz', ability: 'Poison Heal', item: 'Leftovers', gender: 'M',
- moves: ['oblivionwing', 'leechseed', 'quiverdance', 'topsyturvy', 'substitute'],
- baseSignatureMove: 'toxic', signatureMove: "Topology",
- evs: {hp:252, def:252, spd:4}, nature: 'Bold'
- },
- '+mikel': {
- species: 'Giratina', ability: 'Prankster', item: 'Lum Berry', gender: 'M',
- moves: ['rest', 'recycle', ['toxic', 'willowisp'][this.random(2)]],
- baseSignatureMove: 'swagger', signatureMove: "Trolling Lobby",
- evs: {hp:252, def:128, spd:128}, ivs: {atk:0}, nature: 'Calm'
- },
- '+Great Sage': {
- species: 'Shuckle', ability: 'Harvest', item: 'Leppa Berry', gender: '',
- moves: ['substitute', 'protect', 'batonpass'],
- baseSignatureMove: 'judgment', signatureMove: "Judgment",
- evs: {hp:252, def:28, spd:228}, ivs: {atk:0, def:0, spe:0}, nature: 'Bold'
- },
- '+Redew': {
- species: 'Minun', ability: 'Wonder Guard', item: 'Air Balloon', gender: 'M',
- moves: ['nastyplot', 'thunderbolt', 'icebeam'],
- baseSignatureMove: 'recover', signatureMove: "Recover",
- evs:{hp:4, spa:252, spe:252}, nature: 'Modest'
- },
- '+shaymin': {
- species: 'Shaymin-Sky', ability: 'Serene Grace', item: 'Expert Belt', gender: 'F',
- moves: ['seedflare', 'airslash', ['secretsword', 'earthpower', 'roost'][this.random(3)]],
- baseSignatureMove: 'detect', signatureMove: "Flower Garden",
- evs: {hp:4, spa:252, spe:252}, nature: 'Timid'
- },
- '+SOMALIA': {
- species: 'Gastrodon', ability: 'Anger Point', item: 'Leftovers', gender: 'M',
- moves: ['recover', 'steameruption', 'earthpower', 'leafstorm', 'substitute'],
- baseSignatureMove: 'energyball', signatureMove: "Ban Everyone",
- evs: {hp:252, spa:252, spd:4}, nature: 'Modest'
- },
- '+TalkTakesTime': {
- species: 'Registeel', ability: 'Flash Fire', item: 'Leftovers', gender: 'M',
- moves: ['recover', 'ironhead', 'bellydrum'],
- baseSignatureMove: 'taunt', signatureMove: "Bot Mute",
- evs: {hp:252, atk:252, def:4}, nature: 'Adamant'
- }
- };
- // Generate the team randomly.
- var pool = Object.keys(sets).randomize();
- var ranks = {'~':'admins', '&':'leaders', '@':'mods', '%':'drivers', '+':'voices'};
- var levels = {'~':99, '&':97, '@':96, '%':96, '+':95};
- for (var i = 0; i < 6; i++) {
- var rank = pool[i].charAt(0);
- var set = sets[pool[i]];
- set.level = levels[rank];
- set.name = pool[i];
- if (!set.ivs) {
- set.ivs = {hp:31, atk:31, def:31, spa:31, spd:31, spe:31};
- } else {
- for (var iv in {hp:31, atk:31, def:31, spa:31, spd:31, spe:31}) {
- set.ivs[iv] = set.ivs[iv] ? set.ivs[iv] : 31;
- }
- }
- // Assuming the hardcoded set evs are all legal.
- if (!set.evs) set.evs = {hp:84, atk:84, def:84, spa:84, spd:84, spe:84};
- set.moves = set.moves.sample(3).concat(set.baseSignatureMove);
- team.push(set);
- }
-
- // Check for Illusion.
- if (team[5].name === '&Slayer95') {
- var temp = team[4];
- team[4] = team[5];
- team[5] = temp;
- }
-
- return team;
}
};