mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-05-05 21:17:43 -05:00
Random Battle improvements
This commit is contained in:
parent
14744879c8
commit
1d941a90d3
|
|
@ -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",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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']) {
|
||||
|
|
|
|||
|
|
@ -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'))) ||
|
||||
|
|
|
|||
|
|
@ -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'])) ||
|
||||
|
|
|
|||
|
|
@ -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':
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user