From 1d941a90d33cf7e80d54605b7d8ea3a2bf5e128a Mon Sep 17 00:00:00 2001 From: The Immortal Date: Tue, 19 Jan 2021 06:01:35 +0400 Subject: [PATCH] Random Battle improvements --- data/mods/gen5/formats-data.ts | 66 +++++++++++++++++----------------- data/mods/gen5/random-teams.ts | 36 +++++++++---------- data/mods/gen6/random-teams.ts | 2 +- data/mods/gen7/random-teams.ts | 2 +- data/random-teams.ts | 8 ++--- 5 files changed, 57 insertions(+), 57 deletions(-) diff --git a/data/mods/gen5/formats-data.ts b/data/mods/gen5/formats-data.ts index 1d07b8d3ed..f5e14ceb9d 100644 --- a/data/mods/gen5/formats-data.ts +++ b/data/mods/gen5/formats-data.ts @@ -17,7 +17,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "NFE", }, charizard: { - randomBattleMoves: ["airslash", "dragonpulse", "fireblast", "hiddenpowergrass", "roost", "substitute"], + randomBattleMoves: ["airslash", "dragonpulse", "fireblast", "focusblast", "hiddenpowergrass", "roost"], tier: "NU", doublesTier: "DOU", }, @@ -106,7 +106,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "LC", }, sandslash: { - randomBattleMoves: ["earthquake", "rapidspin", "stealthrock", "stoneedge", "swordsdance", "toxic", "xscissor"], + randomBattleMoves: ["earthquake", "rapidspin", "stealthrock", "stoneedge", "swordsdance", "xscissor"], tier: "RU", doublesTier: "DUU", }, @@ -147,7 +147,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "NFE", }, ninetales: { - randomBattleMoves: ["fireblast", "hypnosis", "nastyplot", "painsplit", "solarbeam", "substitute", "willowisp"], + randomBattleMoves: ["fireblast", "nastyplot", "painsplit", "solarbeam", "substitute", "willowisp"], tier: "OU", doublesTier: "DOU", }, @@ -181,7 +181,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "NFE", }, vileplume: { - randomBattleMoves: ["aromatherapy", "gigadrain", "hiddenpowerfire", "leechseed", "sleeppowder", "sludgebomb", "stunspore", "synthesis"], + randomBattleMoves: ["aromatherapy", "gigadrain", "hiddenpowerfire", "leechseed", "sleeppowder", "sludgebomb", "synthesis"], tier: "(NU)", doublesTier: "DUU", }, @@ -218,7 +218,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "LC", }, persian: { - randomBattleMoves: ["bite", "fakeout", "hypnosis", "return", "taunt", "uturn", "waterpulse"], + randomBattleMoves: ["bite", "fakeout", "return", "switcheroo", "taunt", "uturn", "waterpulse"], tier: "(NU)", doublesTier: "DUU", }, @@ -714,7 +714,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { doublesTier: "DOU", }, moltres: { - randomBattleMoves: ["airslash", "fireblast", "hiddenpowergrass", "hurricane", "roost", "substitute", "toxic", "uturn", "willowisp"], + randomBattleMoves: ["fireblast", "hiddenpowergrass", "hurricane", "roost", "substitute", "toxic", "uturn", "willowisp"], tier: "RU", doublesTier: "DUU", }, @@ -973,7 +973,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { doublesTier: "DUU", }, qwilfish: { - randomBattleMoves: ["destinybond", "haze", "painsplit", "poisonjab", "spikes", "taunt", "thunderwave", "waterfall"], + randomBattleMoves: ["destinybond", "painsplit", "poisonjab", "spikes", "taunt", "thunderwave", "waterfall"], tier: "RU", doublesTier: "DUU", }, @@ -1007,7 +1007,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "LC", }, magcargo: { - randomBattleMoves: ["hiddenpowerrock", "lavaplume", "recover", "shellsmash", "stealthrock", "toxic"], + randomBattleMoves: ["hiddenpowerrock", "lavaplume", "recover", "stealthrock", "toxic"], tier: "(NU)", doublesTier: "DUU", }, @@ -1037,7 +1037,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { doublesTier: "DUU", }, delibird: { - randomBattleMoves: ["aerialace", "icepunch", "iceshard", "rapidspin"], + randomBattleMoves: ["aerialace", "icebeam", "iceshard", "rapidspin"], tier: "(NU)", doublesTier: "DUU", }, @@ -1273,7 +1273,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "NFE", }, slaking: { - randomBattleMoves: ["doubleedge", "earthquake", "nightslash", "pursuit", "retaliate"], + randomBattleMoves: ["earthquake", "nightslash", "pursuit", "retaliate", "return"], tier: "(NU)", doublesTier: "DUU", }, @@ -1559,7 +1559,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "LC", }, banette: { - randomBattleMoves: ["destinybond", "shadowclaw", "taunt", "trickroom", "willowisp"], + randomBattleMoves: ["pursuit", "shadowclaw", "shadowsneak", "trick", "willowisp"], tier: "(NU)", doublesTier: "DUU", }, @@ -1660,7 +1660,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { doublesTier: "NFE", }, metagross: { - randomBattleMoves: ["agility", "bulletpunch", "earthquake", "meteormash", "stealthrock", "zenheadbutt"], + randomBattleMoves: ["agility", "bulletpunch", "earthquake", "meteormash", "pursuit", "stealthrock", "zenheadbutt"], tier: "(OU)", doublesTier: "DOU", }, @@ -1875,7 +1875,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "LC", }, gastrodon: { - randomBattleMoves: ["clearsmog", "earthpower", "icebeam", "recover", "scald", "toxic"], + randomBattleMoves: ["earthquake", "icebeam", "recover", "scald", "toxic"], tier: "OU", doublesTier: "DOU", }, @@ -2059,15 +2059,17 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { doublesTier: "DUU", }, giratina: { - randomBattleMoves: ["aurasphere", "calmmind", "dragontail", "dragonpulse", "rest", "sleeptalk", "willowisp"], + randomBattleMoves: ["calmmind", "dragontail", "dragonpulse", "rest", "sleeptalk", "willowisp"], tier: "Uber", doublesTier: "DUber", }, giratinaorigin: { - randomBattleMoves: ["dracometeor", "dragontail", "earthquake", "hiddenpowerfire", "rest", "shadowsneak", "sleeptalk", "willowisp"], + randomBattleMoves: ["dracometeor", "earthquake", "hiddenpowerfire", "shadowsneak", "willowisp"], + tier: "Uber", + doublesTier: "DUber", }, cresselia: { - randomBattleMoves: ["calmmind", "hiddenpowerfighting", "lightscreen", "lunardance", "moonlight", "psychic", "reflect", "thunderwave", "toxic"], + randomBattleMoves: ["calmmind", "hiddenpowerfighting", "moonlight", "psychic", "thunderwave", "toxic"], tier: "RUBL", doublesTier: "DOU", }, @@ -2108,7 +2110,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["calmmind", "judgment", "recover", "refresh"], }, arceusdragon: { - randomBattleMoves: ["earthquake", "extremespeed", "outrage", "recover", "swordsdance"], + randomBattleMoves: ["earthquake", "extremespeed", "outrage", "swordsdance"], }, arceuselectric: { randomBattleMoves: ["calmmind", "icebeam", "judgment", "recover", "substitute"], @@ -2117,7 +2119,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["calmmind", "darkpulse", "icebeam", "judgment", "recover", "toxic"], }, arceusfire: { - randomBattleMoves: ["calmmind", "fireblast", "flamethrower", "recover", "thunderbolt"], + randomBattleMoves: ["calmmind", "fireblast", "judgment", "recover", "thunderbolt"], }, arceusflying: { randomBattleMoves: ["calmmind", "focusblast", "judgment", "recover", "substitute"], @@ -2126,28 +2128,28 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["calmmind", "focusblast", "judgment", "recover", "roar", "willowisp"], }, arceusgrass: { - randomBattleMoves: ["calmmind", "earthpower", "icebeam", "judgment", "recover", "stealthrock", "thunderwave"], + randomBattleMoves: ["calmmind", "earthpower", "icebeam", "judgment", "recover", "thunderwave"], }, arceusground: { - randomBattleMoves: ["earthquake", "recover", "stoneedge", "swordsdance", "willowisp"], + randomBattleMoves: ["calmmind", "icebeam", "judgment", "recover", "willowisp"], }, arceusice: { - randomBattleMoves: ["calmmind", "focusblast", "icebeam", "judgment", "recover", "thunderbolt"], + randomBattleMoves: ["calmmind", "fireblast", "icebeam", "recover", "thunderbolt"], }, arceuspoison: { - randomBattleMoves: ["calmmind", "focusblast", "icebeam", "recover", "sludgebomb", "stealthrock", "willowisp"], + randomBattleMoves: ["flamethrower", "icebeam", "recover", "sludgebomb", "stealthrock", "willowisp"], }, arceuspsychic: { - randomBattleMoves: ["calmmind", "focusblast", "icebeam", "psyshock", "recover", "willowisp"], + randomBattleMoves: ["calmmind", "darkpulse", "judgment", "recover", "willowisp"], }, arceusrock: { randomBattleMoves: ["earthquake", "stoneedge", "swordsdance", "recover"], }, arceussteel: { - randomBattleMoves: ["calmmind", "icebeam", "judgment", "recover", "roar", "willowisp"], + randomBattleMoves: ["calmmind", "judgment", "recover", "thunderbolt", "willowisp"], }, arceuswater: { - randomBattleMoves: ["calmmind", "fireblast", "icebeam", "judgment", "recover"], + randomBattleMoves: ["brickbreak", "extremespeed", "recover", "swordsdance", "waterfall"], }, victini: { randomBattleMoves: ["blueflare", "boltstrike", "focusblast", "thunderbolt", "trick", "uturn", "vcreate"], @@ -2348,7 +2350,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "NFE", }, scolipede: { - randomBattleMoves: ["aquatail", "batonpass", "earthquake", "megahorn", "rockslide", "spikes", "swordsdance"], + randomBattleMoves: ["aquatail", "earthquake", "megahorn", "rockslide", "spikes", "swordsdance"], tier: "NUBL", doublesTier: "DUU", }, @@ -2451,7 +2453,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "LC", }, garbodor: { - randomBattleMoves: ["clearsmog", "explosion", "spikes", "toxicspikes"], + randomBattleMoves: ["gunkshot", "haze", "painsplit", "spikes", "toxicspikes"], tier: "NU", doublesTier: "DUU", }, @@ -2597,7 +2599,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "LC", }, beheeyem: { - randomBattleMoves: ["hiddenpowerfighting", "psychic", "substitute", "thunderbolt", "trick", "trickroom"], + randomBattleMoves: ["hiddenpowerfighting", "psychic", "thunderbolt", "trick", "trickroom"], tier: "(NU)", doublesTier: "DUU", }, @@ -2608,7 +2610,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "NFE", }, chandelure: { - randomBattleMoves: ["energyball", "fireblast", "hiddenpowerfighting", "hiddenpowerground", "painsplit", "shadowball", "substitute", "trick"], + randomBattleMoves: ["calmmind", "energyball", "fireblast", "hiddenpowerfighting", "shadowball", "substitute"], tier: "UUBL", doublesTier: "DOU", }, @@ -2679,7 +2681,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { doublesTier: "DUU", }, bouffalant: { - randomBattleMoves: ["earthquake", "headcharge", "megahorn", "stoneedge", "substitute", "swordsdance"], + randomBattleMoves: ["earthquake", "headcharge", "megahorn", "stoneedge", "swordsdance"], tier: "RU", doublesTier: "DUU", }, @@ -2695,7 +2697,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { tier: "LC", }, mandibuzz: { - randomBattleMoves: ["bravebird", "foulplay", "roost", "taunt", "toxic", "uturn", "whirlwind"], + randomBattleMoves: ["bravebird", "foulplay", "roost", "taunt", "toxic", "whirlwind"], tier: "NU", doublesTier: "DUU", }, @@ -2816,7 +2818,7 @@ export const FormatsData: {[k: string]: ModdedSpeciesFormatsData} = { randomBattleMoves: ["closecombat", "icepunch", "relicsong", "return", "shadowclaw"], }, genesect: { - randomBattleMoves: ["blazekick", "extremespeed", "flamethrower", "icebeam", "ironhead", "shiftgear", "thunderbolt", "uturn"], + randomBattleMoves: ["bugbuzz", "flamethrower", "icebeam", "rockpolish", "thunderbolt", "uturn"], tier: "Uber", doublesTier: "DOU", }, diff --git a/data/mods/gen5/random-teams.ts b/data/mods/gen5/random-teams.ts index 4c277b211b..e4b423489f 100644 --- a/data/mods/gen5/random-teams.ts +++ b/data/mods/gen5/random-teams.ts @@ -55,9 +55,6 @@ export class RandomGen5Teams extends RandomGen6Teams { if (setMoveid.startsWith('hiddenpower')) availableHP++; } - // These moves can be used even if we aren't setting up to use them: - const SetupException = ['closecombat', 'dracometeor', 'extremespeed', 'suckerpunch', 'superpower']; - let hasMove: {[k: string]: boolean} = {}; let counter; @@ -130,7 +127,7 @@ export class RandomGen5Teams extends RandomGen6Teams { if (counter.Physical + counter['physicalpool'] < 2 && !hasMove['batonpass'] && (!hasMove['rest'] || !hasMove['sleeptalk'])) rejected = true; isSetup = true; break; - case 'calmmind': case 'nastyplot': case 'quiverdance': case 'tailglow': + case 'calmmind': case 'nastyplot': case 'tailglow': if (counter.setupType !== 'Special' || counter['specialsetup'] > 1) rejected = true; if (counter.Special + counter['specialpool'] < 2 && !hasMove['batonpass'] && (!hasMove['rest'] || !hasMove['sleeptalk'])) rejected = true; isSetup = true; @@ -148,7 +145,7 @@ export class RandomGen5Teams extends RandomGen6Teams { break; // Bad after setup - case 'bulletpunch': + case 'bulletpunch': case 'toxic': if (counter['speedsetup']) rejected = true; break; case 'circlethrow': case 'dragontail': @@ -220,7 +217,7 @@ export class RandomGen5Teams extends RandomGen6Teams { case 'blueflare': case 'flareblitz': case 'fierydance': case 'flamethrower': case 'lavaplume': if (hasMove['fireblast'] || hasMove['overheat'] || hasMove['vcreate']) rejected = true; break; - case 'airslash': case 'bravebird': case 'pluck': + case 'bravebird': case 'pluck': if (hasMove['acrobatics'] || hasMove['hurricane']) rejected = true; break; case 'gigadrain': @@ -245,7 +242,7 @@ export class RandomGen5Teams extends RandomGen6Teams { if (counter.setupType !== 'Special' && counter.stab > 1) rejected = true; break; case 'return': - if (hasMove['bodyslam'] || hasMove['doubleedge']) rejected = true; + if (hasMove['doubleedge']) rejected = true; break; case 'weatherball': if (!hasMove['sunnyday']) rejected = true; @@ -273,6 +270,9 @@ export class RandomGen5Teams extends RandomGen6Teams { case 'encore': case 'suckerpunch': if (hasMove['thunderwave'] || hasMove['rest'] && hasMove['sleeptalk']) rejected = true; break; + case 'glare': case 'headbutt': + if (hasMove['bodyslam']) rejected = true; + break; case 'healbell': if (hasMove['magiccoat']) rejected = true; break; @@ -296,7 +296,7 @@ export class RandomGen5Teams extends RandomGen6Teams { if ((move.category === 'Physical' && counter.setupType === 'Special') || (move.category === 'Special' && counter.setupType === 'Physical')) { // Reject STABs last in case the setup type changes later on const stabs = counter[species.types[0]] + (counter[species.types[1]] || 0); - if (!SetupException.includes(moveid) && (!hasType[move.type] || stabs > 1 || counter[move.category] < 2)) rejected = true; + if (!hasType[move.type] || stabs > 1 || counter[move.category] < 2) rejected = true; } if ( counter.setupType && !isSetup && counter.setupType !== 'Mixed' && move.category !== counter.setupType && @@ -313,7 +313,7 @@ export class RandomGen5Teams extends RandomGen6Teams { } // Pokemon should have moves that benefit their Type/Ability/Weather, as well as moves required by its forme - if (!rejected && !['judgment', 'sleeptalk'].includes(moveid) && (counter['physicalsetup'] + counter['specialsetup'] < 2 && + if (!rejected && !['judgment', 'quiverdance', 'sleeptalk'].includes(moveid) && (counter['physicalsetup'] + counter['specialsetup'] < 2 && (!counter.setupType || counter.setupType === 'Mixed' || (move.category !== counter.setupType && move.category !== 'Status') || counter[counter.setupType] + counter.Status > 3) ) && ( (!counter.stab && !counter['damage'] && (species.types.length > 1 || (species.types[0] !== 'Normal' && species.types[0] !== 'Psychic') || !hasMove['icebeam'] || species.baseStats.spa >= species.baseStats.spd)) || @@ -322,21 +322,21 @@ export class RandomGen5Teams extends RandomGen6Teams { (hasType['Electric'] && (!counter['Electric'] || movePool.includes('thunder'))) || (hasType['Fighting'] && !counter['Fighting'] && (species.baseStats.atk >= 110 || hasAbility['Justified'] || hasAbility['Pure Power'] || counter.setupType || !counter['Status'])) || (hasType['Fire'] && !counter['Fire']) || - (hasType['Flying'] && hasType['Normal'] && !counter['Flying']) || + (hasType['Flying'] && !counter['Flying'] && (hasType['Normal'] || hasAbility['Serene Grace'])) || (hasType['Ghost'] && !hasType['Dark'] && !counter['Ghost']) || (hasType['Ground'] && !counter['Ground'] && !hasMove['rest'] && !hasMove['sleeptalk']) || (hasType['Ice'] && !counter['Ice']) || (hasType['Rock'] && !counter['Rock'] && species.baseStats.atk >= 80) || (hasType['Steel'] && hasAbility['Technician'] && !counter['Steel']) || - (hasType['Water'] && !counter['Water']) || - ((hasAbility['Adaptability'] && !counter.setupType && species.types.length > 1 && (!counter[species.types[0]] || !counter[species.types[1]])) || + (hasType['Water'] && (!counter['Water'] || (hasAbility['Adaptability'] && movePool.includes('waterfall'))) || (hasAbility['Bad Dreams'] && movePool.includes('darkvoid')) || (hasAbility['Contrary'] && !counter['contrary'] && species.name !== 'Shuckle') || (hasAbility['Guts'] && hasType['Normal'] && movePool.includes('facade')) || (hasAbility['Slow Start'] && movePool.includes('substitute')) || (!counter.recovery && !counter.setupType && !hasMove['healingwish'] && (counter.Status > 1 || (species.nfe && !!counter['Status'])) && (movePool.includes('recover') || movePool.includes('roost') || movePool.includes('softboiled'))) || - (species.requiredMove && movePool.includes(toID(species.requiredMove)))) + (movePool.includes('quiverdance') || species.requiredMove && movePool.includes(toID(species.requiredMove))) || + (isLead && movePool.includes('stealthrock') && !!counter.Status && !counter.setupType && !counter['speedsetup'] && !hasMove['substitute'])) )) { // Reject Status or non-STAB if (!isSetup && !move.weather && !move.damage && (move.category !== 'Status' || !move.flags.heal)) { @@ -406,7 +406,7 @@ export class RandomGen5Teams extends RandomGen6Teams { rejectAbility = true; } else if (['Analytic', 'Download', 'Hyper Cutter'].includes(ability)) { rejectAbility = species.nfe; - } else if (ability === 'Chlorophyll') { + } else if (ability === 'Chlorophyll' || ability === 'Solar Power') { rejectAbility = (!hasMove['sunnyday'] && !teamDetails['sun']); } else if (ability === 'Compound Eyes' || ability === 'No Guard') { rejectAbility = !counter['inaccurate']; @@ -477,12 +477,10 @@ export class RandomGen5Teams extends RandomGen6Teams { } } while (rejectAbility); - if (abilities.includes('Guts') && ability !== 'Quick Feet' && hasMove['facade']) { + if (abilities.includes('Guts') && hasMove['facade'] && (ability !== 'Quick Feet' || !counter.setupType)) { ability = 'Guts'; } else if (abilities.includes('Prankster') && counter.Status > 1) { ability = 'Prankster'; - } else if (abilities.includes('Quick Feet') && hasMove['facade']) { - ability = 'Quick Feet'; } else if (abilities.includes('Swift Swim') && hasMove['raindance']) { ability = 'Swift Swim'; } @@ -514,7 +512,7 @@ export class RandomGen5Teams extends RandomGen6Teams { } else if (hasMove['trick'] && hasMove['gyroball']) { item = (ability === 'Levitate' || hasType['Flying']) ? 'Macho Brace' : 'Iron Ball'; } else if (hasMove['switcheroo'] || hasMove['trick']) { - if (species.baseStats.spe >= 60 && species.baseStats.spe <= 108) { + if (species.baseStats.spe >= 60 && species.baseStats.spe <= 108 && !counter['priority']) { item = 'Choice Scarf'; } else { item = (counter.Physical > counter.Special) ? 'Choice Band' : 'Choice Specs'; @@ -561,7 +559,7 @@ export class RandomGen5Teams extends RandomGen6Teams { } else if (counter.Special >= 4 && !hasMove['clearsmog'] && !hasMove['fierydance']) { item = species.baseStats.spa >= 100 && species.baseStats.spe >= 60 && species.baseStats.spe <= 108 && !counter['priority'] && this.randomChance(2, 3) ? 'Choice Scarf' : 'Choice Specs'; } else if (counter.Special >= 3 && hasMove['uturn']) { - item = 'Choice Specs'; + item = (ability === 'Download') ? 'Choice Scarf' : 'Choice Specs'; } else if (this.dex.getEffectiveness('Ground', species) >= 2 && ability !== 'Levitate' && !hasMove['magnetrise']) { item = 'Air Balloon'; } else if (hasMove['substitute'] && hasMove['reversal']) { diff --git a/data/mods/gen6/random-teams.ts b/data/mods/gen6/random-teams.ts index 28347023df..62fa0cbbcb 100644 --- a/data/mods/gen6/random-teams.ts +++ b/data/mods/gen6/random-teams.ts @@ -487,7 +487,7 @@ export class RandomGen6Teams extends RandomGen7Teams { (hasType['Grass'] && !counter['Grass'] && !hasType['Fairy'] && !hasType['Poison'] && !hasType['Steel']) || (hasType['Ground'] && !counter['Ground'] && !hasMove['rest'] && !hasMove['sleeptalk']) || (hasType['Ice'] && !counter['Ice'] && !hasAbility['Refrigerate']) || - (hasType['Normal'] && (movePool.includes('boomburst') || hasAbility['Guts'] && movePool.includes('facade'))) || + (hasType['Normal'] && movePool.includes('facade')) || (hasType['Psychic'] && !!counter['Psychic'] && !hasType['Flying'] && !hasAbility['Pixilate'] && counter.stab < species.types.length) || (hasType['Rock'] && !counter['Rock'] && !hasType['Fairy'] && (hasAbility['Rock Head'] || counter.setupType === 'Physical')) || (hasType['Steel'] && !counter['Steel'] && (hasAbility['Technician'] || movePool.includes('meteormash'))) || diff --git a/data/mods/gen7/random-teams.ts b/data/mods/gen7/random-teams.ts index 53a9ef8139..2a8082a4cb 100644 --- a/data/mods/gen7/random-teams.ts +++ b/data/mods/gen7/random-teams.ts @@ -520,7 +520,7 @@ export class RandomGen7Teams extends RandomTeams { (hasType['Grass'] && !counter['Grass'] && (species.baseStats.atk >= 100 || movePool.includes('leafstorm'))) || (hasType['Ground'] && !counter['Ground'] && !hasMove['rest'] && !hasMove['sleeptalk']) || (hasType['Ice'] && !hasAbility['Refrigerate'] && (!counter['Ice'] || movePool.includes('iciclecrash') || (hasAbility['Snow Warning'] && movePool.includes('blizzard')))) || - (hasType['Normal'] && (movePool.includes('boomburst') || hasAbility['Guts'] && movePool.includes('facade'))) || + (hasType['Normal'] && movePool.includes('facade')) || (hasType['Poison'] && !counter['Poison'] && (counter.setupType || hasAbility['Adaptability'] || hasAbility['Sheer Force'] || movePool.includes('gunkshot'))) || (hasType['Psychic'] && !counter['Psychic'] && (hasAbility['Psychic Surge'] || movePool.includes('psychicfangs') || !hasType['Flying'] && !hasAbility['Pixilate'] && counter.stab < species.types.length)) || (hasType['Rock'] && !counter['Rock'] && !hasType['Fairy'] && (counter.setupType === 'Physical' || species.baseStats.atk >= 105 || hasAbility['Rock Head'])) || diff --git a/data/random-teams.ts b/data/random-teams.ts index 2fe2ecd8c1..8d5abdeab0 100644 --- a/data/random-teams.ts +++ b/data/random-teams.ts @@ -456,10 +456,10 @@ export class RandomTeams { ]; // Moves that shouldn't be the only STAB moves: const NoStab = [ - 'accelerock', 'aquajet', 'bounce', 'breakingswipe', 'explosion', 'fakeout', 'firstimpression', 'flamecharge', 'flipturn', - 'iceshard', 'machpunch', 'pluck', 'pursuit', 'quickattack', 'selfdestruct', 'skydrop', 'suckerpunch', 'watershuriken', + 'accelerock', 'aquajet', 'beakblast', 'bounce', 'breakingswipe', 'explosion', 'fakeout', 'firstimpression', 'flamecharge', + 'flipturn', 'iceshard', 'machpunch', 'pluck', 'pursuit', 'quickattack', 'selfdestruct', 'skydrop', 'suckerpunch', 'watershuriken', - 'clearsmog', 'eruption', 'icywind', 'incinerate', 'meteorbeam', 'snarl', 'vacuumwave', 'voltswitch', 'waterspout', + 'chatter', 'clearsmog', 'eruption', 'icywind', 'incinerate', 'meteorbeam', 'snarl', 'vacuumwave', 'voltswitch', 'waterspout', ]; // Iterate through all moves we've chosen so far and keep track of what they do: @@ -727,7 +727,7 @@ export class RandomTeams { case 'firstimpression': case 'glare': case 'icywind': case 'tailwind': case 'waterspout': if ((counter.setupType && !isDoubles) || !!counter['speedsetup'] || hasMove['rest']) rejected = true; break; - case 'bulletpunch': case 'rockblast': + case 'bulletpunch': case 'extremespeed': case 'rockblast': if (!!counter['speedsetup'] || counter.damagingMoves.length < 2) rejected = true; break; case 'closecombat': case 'flashcannon': case 'pollenpuff':