{ "version": 3, "sources": ["../../../../../data/mods/gen8bdsp/random-teams.ts"], "sourcesContent": ["// BDSP team generation logic is currently largely shared with Swsh\r\n\r\nimport {PRNG, PRNGSeed} from '../../../sim/prng';\r\nimport {MoveCounter, RandomGen8Teams, OldRandomBattleSpecies} from '../gen8/random-teams';\r\n\r\nexport class RandomBDSPTeams extends RandomGen8Teams {\r\n\trandomData: {[species: string]: OldRandomBattleSpecies} = require('./random-data.json');\r\n\r\n\tconstructor(format: Format | string, prng: PRNG | PRNGSeed | null) {\r\n\t\tsuper(format, prng);\r\n\t\tthis.noStab = [...this.noStab, 'gigaimpact'];\r\n\t}\r\n\r\n\tgetHighPriorityItem(\r\n\t\tability: string,\r\n\t\ttypes: Set,\r\n\t\tmoves: Set,\r\n\t\tcounter: MoveCounter,\r\n\t\tteamDetails: RandomTeamsTypes.TeamDetails,\r\n\t\tspecies: Species,\r\n\t\tisLead: boolean,\r\n\t\tisDoubles: boolean\r\n\t) {\r\n\t\t// not undefined \u2014 we want \"no item\" not \"go find a different item\"\r\n\t\tif (moves.has('acrobatics')) return '';\r\n\t\tif (moves.has('solarbeam') && !(moves.has('sunnyday') || ability === 'Drought' || teamDetails.sun)) return 'Power Herb';\r\n\t\tif (moves.has('shellsmash')) return 'White Herb';\r\n\t\t// Species-specific item assigning\r\n\t\tif (species.name === 'Farfetch\\u2019d') return 'Leek';\r\n\t\tif (species.name === 'Latios' || species.name === 'Latias') return 'Soul Dew';\r\n\t\tif (species.name === 'Lopunny') return 'Toxic Orb';\r\n\t\tif (species.baseSpecies === 'Marowak') return 'Thick Club';\r\n\t\tif (species.baseSpecies === 'Pikachu') return 'Light Ball';\r\n\t\tif (species.name === 'Shedinja' || species.name === 'Smeargle') return 'Focus Sash';\r\n\t\tif (species.name === 'Shuckle' && moves.has('stickyweb')) return 'Mental Herb';\r\n\t\tif (ability !== 'Sniper' && (ability === 'Super Luck' || moves.has('focusenergy'))) return 'Scope Lens';\r\n\t\tif (species.name === 'Wobbuffet' && moves.has('destinybond')) return 'Custap Berry';\r\n\t\tif (species.name === 'Scyther' && counter.damagingMoves.size > 3) return 'Choice Band';\r\n\t\tif ((moves.has('bellydrum') || moves.has('tailglow')) && moves.has('substitute')) return 'Salac Berry';\r\n\r\n\t\t// Ability based logic and miscellaneous logic\r\n\t\tif (species.name === 'Wobbuffet' || ability === 'Ripen' || ability === 'Harvest') return 'Sitrus Berry';\r\n\t\tif (ability === 'Gluttony') return this.sample(['Aguav', 'Figy', 'Iapapa', 'Mago', 'Wiki']) + ' Berry';\r\n\t\tif (ability === 'Imposter') return 'Choice Scarf';\r\n\t\tif (ability === 'Guts' && counter.get('Physical') > 2) {\r\n\t\t\treturn types.has('Fire') ? 'Toxic Orb' : 'Flame Orb';\r\n\t\t}\r\n\t\tif (ability === 'Quick Feet' && moves.has('facade')) return 'Toxic Orb';\r\n\t\tif (ability === 'Toxic Boost' || ability === 'Poison Heal') return 'Toxic Orb';\r\n\t\tif (ability === 'Magic Guard' && counter.damagingMoves.size > 1) {\r\n\t\t\treturn moves.has('counter') ? 'Focus Sash' : 'Life Orb';\r\n\t\t}\r\n\t\tif (ability === 'Sheer Force' && counter.get('sheerforce')) return 'Life Orb';\r\n\t\tif (ability === 'Unburden') return (moves.has('closecombat') || moves.has('curse')) ? 'White Herb' : 'Sitrus Berry';\r\n\r\n\t\tif (!moves.has('fakeout') && (moves.has('trick') || moves.has('switcheroo'))) {\r\n\t\t\tif (species.baseStats.spe >= 60 && species.baseStats.spe <= 108 && !counter.get('priority')) {\r\n\t\t\t\treturn 'Choice Scarf';\r\n\t\t\t} else {\r\n\t\t\t\treturn (counter.get('Physical') > counter.get('Special')) ? 'Choice Band' : 'Choice Specs';\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (moves.has('auroraveil') || moves.has('lightscreen') && moves.has('reflect')) return 'Light Clay';\r\n\t\tconst statusCuringAbility = (\r\n\t\t\tability === 'Shed Skin' ||\r\n\t\t\tability === 'Natural Cure' ||\r\n\t\t\t(ability === 'Hydration' && moves.has('raindance'))\r\n\t\t);\r\n\t\tconst restWithoutSleepTalk = (moves.has('rest') && !moves.has('sleeptalk'));\r\n\t\tif (restWithoutSleepTalk && !statusCuringAbility) return 'Chesto Berry';\r\n\t\tif (moves.has('bellydrum')) return 'Sitrus Berry';\r\n\t}\r\n\r\n\tgetMediumPriorityItem(\r\n\t\tability: string,\r\n\t\tmoves: Set,\r\n\t\tcounter: MoveCounter,\r\n\t\tspecies: Species,\r\n\t\tisLead: boolean,\r\n\t\tisDoubles: boolean,\r\n\t): string | undefined {\r\n\t\t// Choice items\r\n\t\tif (moves.size === 1) {\r\n\t\t\tswitch (this.dex.moves.get([...moves][0]).category) {\r\n\t\t\tcase 'Status':\r\n\t\t\t\treturn 'Choice Scarf';\r\n\t\t\tcase 'Physical':\r\n\t\t\t\treturn 'Choice Band';\r\n\t\t\tcase 'Special':\r\n\t\t\t\treturn 'Choice Specs';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst choiceOK = ['fakeout', 'flamecharge', 'rapidspin'].every(m => !moves.has(m));\r\n\r\n\t\tif (counter.get('Physical') >= 4 && ability !== 'Serene Grace' && choiceOK) {\r\n\t\t\tconst scarfReqs = (\r\n\t\t\t\t(species.baseStats.atk >= 100 || ability === 'Huge Power') &&\r\n\t\t\t\tspecies.baseStats.spe >= 60 && species.baseStats.spe <= 108 &&\r\n\t\t\t\tability !== 'Speed Boost' && !counter.get('priority') &&\r\n\t\t\t\t['bounce', 'aerialace'].every(m => !moves.has(m))\r\n\t\t\t);\r\n\t\t\treturn (scarfReqs && this.randomChance(2, 3)) ? 'Choice Scarf' : 'Choice Band';\r\n\t\t}\r\n\t\tif (moves.has('sunnyday')) return 'Heat Rock';\r\n\t\tif (counter.get('Special') >= 4 || (counter.get('Special') >= 3 && moves.has('uturn'))) {\r\n\t\t\tconst scarfReqs = (\r\n\t\t\t\tspecies.baseStats.spa >= 100 &&\r\n\t\t\t\tspecies.baseStats.spe >= 60 && species.baseStats.spe <= 108 &&\r\n\t\t\t\tability !== 'Tinted Lens' && !counter.get('Physical')\r\n\t\t\t);\r\n\t\t\treturn (scarfReqs && this.randomChance(2, 3)) ? 'Choice Scarf' : 'Choice Specs';\r\n\t\t}\r\n\t\tif (counter.get('Physical') >= 4 && choiceOK) return 'Choice Band';\r\n\r\n\t\tif (\r\n\t\t\t((counter.get('Physical') >= 3 && moves.has('defog')) || (counter.get('Special') >= 3 && moves.has('healingwish'))) &&\r\n\t\t\t!counter.get('priority') && !moves.has('uturn')\r\n\t\t) return 'Choice Scarf';\r\n\r\n\t\t// Other items\r\n\t\tif (\r\n\t\t\tmoves.has('raindance') || moves.has('sunnyday') ||\r\n\t\t\t(ability === 'Speed Boost' && !counter.get('hazards'))\r\n\t\t) return 'Life Orb';\r\n\t\tif (\r\n\t\t\t['clearsmog', 'curse', 'haze', 'healbell', 'protect', 'sleeptalk'].some(m => moves.has(m)) &&\r\n\t\t\tability === 'Moody'\r\n\t\t) return 'Leftovers';\r\n\t}\r\n\r\n\tgetLowPriorityItem(\r\n\t\tability: string,\r\n\t\ttypes: Set,\r\n\t\tmoves: Set,\r\n\t\tabilities: Set,\r\n\t\tcounter: MoveCounter,\r\n\t\tteamDetails: RandomTeamsTypes.TeamDetails,\r\n\t\tspecies: Species,\r\n\t\tisLead: boolean,\r\n\t\tisDoubles: boolean\r\n\t): string | undefined {\r\n\t\tconst defensiveStatTotal = species.baseStats.hp + species.baseStats.def + species.baseStats.spd;\r\n\r\n\t\tif (\r\n\t\t\tisLead &&\r\n\t\t\tability !== 'Sturdy' && !moves.has('substitute') &&\r\n\t\t\t!counter.get('drain') && !counter.get('recoil') && !counter.get('recovery') &&\r\n\t\t\t((defensiveStatTotal <= 250 && counter.get('hazards')) || defensiveStatTotal <= 210)\r\n\t\t) return 'Focus Sash';\r\n\t\tif (\r\n\t\t\tcounter.damagingMoves.size >= 3 &&\r\n\t\t\t!counter.get('damage') &&\r\n\t\t\tability !== 'Sturdy' &&\r\n\t\t\t(species.baseStats.spe >= 90 || !moves.has('voltswitch')) &&\r\n\t\t\t['foulplay', 'rapidspin', 'substitute', 'uturn'].every(m => !moves.has(m)) && (\r\n\t\t\t\tcounter.get('speedsetup') ||\r\n\t\t\t\t// No Dynamax Buzzwole doesn't want Life Orb with Bulk Up + 3 attacks\r\n\t\t\t\t(counter.get('drain') && moves.has('roost')) ||\r\n\t\t\t\tmoves.has('trickroom') || moves.has('psystrike') ||\r\n\t\t\t\t(species.baseStats.spe > 40 && defensiveStatTotal < 275)\r\n\t\t\t)\r\n\t\t) return 'Life Orb';\r\n\t\tif (\r\n\t\t\tcounter.damagingMoves.size >= 4 &&\r\n\t\t\t!counter.get('Dragon') && !counter.get('Normal')\r\n\t\t) {\r\n\t\t\treturn 'Expert Belt';\r\n\t\t}\r\n\t\tif (\r\n\t\t\t!moves.has('substitute') &&\r\n\t\t\t(moves.has('dragondance') || moves.has('swordsdance')) &&\r\n\t\t\t(moves.has('outrage') || (\r\n\t\t\t\t['Bug', 'Fire', 'Ground', 'Normal', 'Poison'].every(type => !types.has(type)) &&\r\n\t\t\t\tability !== 'Storm Drain'\r\n\t\t\t))\r\n\t\t) return 'Lum Berry';\r\n\t}\r\n\r\n\tshouldCullMove(\r\n\t\tmove: Move,\r\n\t\ttypes: Set,\r\n\t\tmoves: Set,\r\n\t\tabilities: Set,\r\n\t\tcounter: MoveCounter,\r\n\t\tmovePool: string[],\r\n\t\tteamDetails: RandomTeamsTypes.TeamDetails,\r\n\t\tspecies: Species,\r\n\t\tisLead: boolean,\r\n\t\tisDoubles: boolean,\r\n\t): {cull: boolean, isSetup?: boolean} {\r\n\t\tif (isDoubles && species.baseStats.def >= 140 && movePool.includes('bodypress')) {\r\n\t\t\t// In Doubles, Pok\u00E9mon with Defense stats >= 140 should always have body press\r\n\t\t\treturn {cull: true};\r\n\t\t}\r\n\t\tif (species.id === 'entei' && movePool.includes('extremespeed')) {\r\n\t\t\treturn {cull: true};\r\n\t\t}\r\n\t\t// Spore is really, really good and should be forced onto all sets.\r\n\t\t// zzzzzz\r\n\t\t// Substitute is a hardcode for Breloom.\r\n\t\tif (movePool.includes('spore') && move.id !== 'substitute') {\r\n\t\t\treturn {cull: true};\r\n\t\t}\r\n\r\n\t\tconst hasRestTalk = moves.has('rest') && moves.has('sleeptalk');\r\n\r\n\t\t// Reject moves that need support\r\n\t\tswitch (move.id) {\r\n\t\tcase 'fly':\r\n\t\t\treturn {cull: !types.has(move.type) && !counter.setupType && !!counter.get('Status')};\r\n\t\tcase 'healbell':\r\n\t\t\treturn {cull: movePool.includes('protect') || movePool.includes('wish')};\r\n\t\tcase 'fireblast':\r\n\t\t\t// Special case for Togekiss, which always wants Aura Sphere\r\n\t\t\treturn {cull: abilities.has('Serene Grace') && (!moves.has('trick') || counter.get('Status') > 1)};\r\n\t\tcase 'firepunch':\r\n\t\t\t// Special case for Darmanitan-Zen-Galar, which doesn't always want Fire Punch\r\n\t\t\treturn {cull: moves.has('earthquake') && movePool.includes('substitute')};\r\n\t\tcase 'flamecharge':\r\n\t\t\treturn {cull: movePool.includes('swordsdance')};\r\n\t\tcase 'focuspunch':\r\n\t\t\treturn {cull: !moves.has('substitute')};\r\n\t\tcase 'rest':\r\n\t\t\tconst bulkySetup = !moves.has('sleeptalk') && ['bulkup', 'calmmind', 'coil', 'curse'].some(m => movePool.includes(m));\r\n\t\t\t// Registeel would otherwise get Curse sets without Rest, which are very bad generally\r\n\t\t\treturn {cull: species.id !== 'registeel' && (movePool.includes('sleeptalk') || bulkySetup)};\r\n\t\tcase 'sleeptalk':\r\n\t\t\t// Milotic always wants RestTalk\r\n\t\t\tif (species.id === 'milotic') return {cull: false};\r\n\t\t\tif (moves.has('stealthrock') || !moves.has('rest')) return {cull: true};\r\n\t\t\tif (movePool.length > 1 && !abilities.has('Contrary')) {\r\n\t\t\t\tconst rest = movePool.indexOf('rest');\r\n\t\t\t\tif (rest >= 0) this.fastPop(movePool, rest);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase 'storedpower':\r\n\t\t\treturn {cull: !counter.setupType};\r\n\t\tcase 'switcheroo': case 'trick':\r\n\t\t\t// We cull Switcheroo + Fake Out because Switcheroo is often used with a Choice item\r\n\t\t\treturn {cull: counter.get('Physical') + counter.get('Special') < 3 || moves.has('rapidspin') || moves.has('fakeout')};\r\n\t\tcase 'trickroom':\r\n\t\t\tconst webs = !!teamDetails.stickyWeb;\r\n\t\t\treturn {cull:\r\n\t\t\t\tisLead || webs || !!counter.get('speedsetup') ||\r\n\t\t\t\tcounter.damagingMoves.size < 2 || movePool.includes('nastyplot'),\r\n\t\t\t};\r\n\r\n\t\t// Set up once and only if we have the moves for it\r\n\t\tcase 'bellydrum': case 'bulkup': case 'coil': case 'curse': case 'dragondance': case 'honeclaws': case 'swordsdance':\r\n\t\t\tif (counter.setupType !== 'Physical') return {cull: true}; // if we're not setting up physically this is pointless\r\n\t\t\tif (counter.get('Physical') + counter.get('physicalpool') < 2 && !hasRestTalk) return {cull: true};\r\n\t\t\tif (move.id === 'swordsdance' && moves.has('dragondance')) return {cull: true}; // Dragon Dance is judged as better\r\n\r\n\t\t\treturn {cull: false, isSetup: true};\r\n\t\tcase 'calmmind': case 'nastyplot':\r\n\t\t\tif (counter.setupType !== 'Special') return {cull: true};\r\n\t\t\tif (\r\n\t\t\t\t(counter.get('Special') + counter.get('specialpool')) < 2 &&\r\n\t\t\t\t!hasRestTalk &&\r\n\t\t\t\t!(moves.has('wish') && moves.has('protect'))\r\n\t\t\t) return {cull: true};\r\n\t\t\tif (moves.has('healpulse') || move.id === 'calmmind' && moves.has('trickroom')) return {cull: true};\r\n\t\t\treturn {cull: false, isSetup: true};\r\n\t\tcase 'quiverdance':\r\n\t\t\treturn {cull: false, isSetup: true};\r\n\t\tcase 'shellsmash': case 'workup':\r\n\t\t\tif (counter.setupType !== 'Mixed') return {cull: true};\r\n\t\t\tif (counter.damagingMoves.size + counter.get('physicalpool') + counter.get('specialpool') < 2) return {cull: true};\r\n\t\t\treturn {cull: false, isSetup: true};\r\n\t\tcase 'agility': case 'autotomize': case 'rockpolish':\r\n\t\t\tif (counter.damagingMoves.size < 2 || moves.has('rest')) return {cull: true};\r\n\t\t\tif (movePool.includes('calmmind') || movePool.includes('nastyplot')) return {cull: true};\r\n\t\t\treturn {cull: false, isSetup: !counter.setupType};\r\n\r\n\t\t// Bad after setup\r\n\t\tcase 'counter': case 'reversal':\r\n\t\t\t// Counter: special case for Alakazam, which doesn't want Counter + Nasty Plot\r\n\t\t\treturn {cull: !!counter.setupType};\r\n\t\tcase 'bulletpunch': case 'extremespeed': case 'rockblast':\r\n\t\t\treturn {cull: (\r\n\t\t\t\t!!counter.get('speedsetup') ||\r\n\t\t\t\t(!isDoubles && moves.has('dragondance')) ||\r\n\t\t\t\tcounter.damagingMoves.size < 2\r\n\t\t\t)};\r\n\t\tcase 'closecombat': case 'flashcannon':\r\n\t\t\tconst substituteCullCondition = (\r\n\t\t\t\t(moves.has('substitute') && !types.has('Fighting')) ||\r\n\t\t\t\t(moves.has('toxic') && movePool.includes('substitute'))\r\n\t\t\t);\r\n\t\t\tconst preferHJKOverCCCullCondition = (\r\n\t\t\t\tmove.id === 'closecombat' &&\r\n\t\t\t\t!counter.setupType &&\r\n\t\t\t\t(moves.has('highjumpkick') || movePool.includes('highjumpkick'))\r\n\t\t\t);\r\n\t\t\treturn {cull: substituteCullCondition || preferHJKOverCCCullCondition};\r\n\t\tcase 'defog':\r\n\t\t\treturn {cull: (\r\n\t\t\t\t!!counter.setupType ||\r\n\t\t\t\t['healbell', 'toxicspikes', 'stealthrock', 'spikes'].some(m => moves.has(m)) ||\r\n\t\t\t\t!!teamDetails.defog\r\n\t\t\t)};\r\n\t\tcase 'fakeout':\r\n\t\t\treturn {cull: !!counter.setupType || ['protect', 'rapidspin', 'substitute', 'uturn'].some(m => moves.has(m))};\r\n\t\tcase 'glare': case 'icywind': case 'tailwind': case 'waterspout':\r\n\t\t\treturn {cull: !!counter.setupType || !!counter.get('speedsetup') || moves.has('rest')};\r\n\t\tcase 'healingwish': case 'memento':\r\n\t\t\treturn {cull: !!counter.setupType || !!counter.get('recovery') || moves.has('substitute') || moves.has('uturn')};\r\n\t\tcase 'partingshot':\r\n\t\t\treturn {cull: !!counter.get('speedsetup') || moves.has('bulkup') || moves.has('uturn')};\r\n\t\tcase 'protect':\r\n\t\t\tif (!isDoubles && ((counter.setupType && !moves.has('wish')) || moves.has('rest'))) return {cull: true};\r\n\t\t\tif (\r\n\t\t\t\t!isDoubles &&\r\n\t\t\t\tcounter.get('Status') < 2 &&\r\n\t\t\t\t['Guts', 'Quick Feet', 'Speed Boost', 'Moody'].every(m => !abilities.has(m))\r\n\t\t\t) return {cull: true};\r\n\t\t\tif (movePool.includes('leechseed') || (movePool.includes('toxic') && !moves.has('wish'))) return {cull: true};\r\n\t\t\tif (isDoubles && (\r\n\t\t\t\t['bellydrum', 'fakeout', 'shellsmash', 'spore'].some(m => movePool.includes(m)) ||\r\n\t\t\t\tmoves.has('tailwind') || moves.has('waterspout')\r\n\t\t\t)) return {cull: true};\r\n\t\t\treturn {cull: false};\r\n\t\tcase 'rapidspin':\r\n\t\t\tconst setup = ['curse', 'nastyplot', 'shellsmash'].some(m => moves.has(m));\r\n\t\t\treturn {cull: !!teamDetails.rapidSpin || setup || (!!counter.setupType && counter.get('Fighting') >= 2)};\r\n\t\tcase 'roar':\r\n\t\t\t// for Blastoise\r\n\t\t\treturn {cull: moves.has('shellsmash')};\r\n\t\tcase 'shadowsneak':\r\n\t\t\tconst sneakIncompatible = ['substitute', 'trickroom', 'toxic'].some(m => moves.has(m));\r\n\t\t\treturn {cull: hasRestTalk || sneakIncompatible || counter.setupType === 'Special'};\r\n\t\tcase 'spikes':\r\n\t\t\treturn {cull: !!counter.setupType || (!!teamDetails.spikes && teamDetails.spikes > 1)};\r\n\t\tcase 'stealthrock':\r\n\t\t\treturn {cull:\r\n\t\t\t\t!!counter.setupType ||\r\n\t\t\t\t!!counter.get('speedsetup') ||\r\n\t\t\t\t!!teamDetails.stealthRock ||\r\n\t\t\t\t['rest', 'substitute', 'trickroom', 'teleport'].some(m => moves.has(m)),\r\n\t\t\t};\r\n\t\tcase 'stickyweb':\r\n\t\t\treturn {cull: !!teamDetails.stickyWeb};\r\n\t\tcase 'taunt':\r\n\t\t\treturn {cull: moves.has('encore') || moves.has('nastyplot') || moves.has('swordsdance')};\r\n\t\tcase 'thunderwave': case 'voltswitch':\r\n\t\t\tconst cullInDoubles = isDoubles && (moves.has('electroweb') || moves.has('nuzzle'));\r\n\t\t\treturn {cull: (\r\n\t\t\t\t!!counter.setupType ||\r\n\t\t\t\t!!counter.get('speedsetup') ||\r\n\t\t\t\tmoves.has('shiftgear') ||\r\n\t\t\t\tmoves.has('raindance') ||\r\n\t\t\t\tcullInDoubles\r\n\t\t\t)};\r\n\t\tcase 'toxic':\r\n\t\t\treturn {cull: !!counter.setupType || ['sludgewave', 'thunderwave', 'willowisp'].some(m => moves.has(m))};\r\n\t\tcase 'toxicspikes':\r\n\t\t\treturn {cull: !!counter.setupType || !!teamDetails.toxicSpikes};\r\n\t\tcase 'uturn':\r\n\t\t\tconst bugSwordsDanceCase = types.has('Bug') && counter.get('recovery') && moves.has('swordsdance');\r\n\t\t\treturn {cull: (\r\n\t\t\t\t!!counter.get('speedsetup') ||\r\n\t\t\t\t(counter.setupType && !bugSwordsDanceCase) ||\r\n\t\t\t\t(abilities.has('Speed Boost') && moves.has('protect')) ||\r\n\t\t\t\t(isDoubles && moves.has('leechlife'))\r\n\t\t\t)};\r\n\r\n\t\t/**\r\n\t\t * Ineffective to have both moves together\r\n\t\t *\r\n\t\t * These are sorted in order of:\r\n\t\t * Normal>Fire>Water>Electric>Grass>Ice>Fighting>Poison>Ground>Flying>Psychic>Bug>Rock>Ghost>Dragon>Dark>Fairy\r\n\t\t * and then subsorted alphabetically.\r\n\t\t * This type order is arbitrary and referenced from https://pokemondb.net/type.\r\n\t\t */\r\n\t\tcase 'explosion':\r\n\t\t\tconst otherMoves = ['curse', 'stompingtantrum', 'painsplit', 'wish'].some(m => moves.has(m));\r\n\t\t\treturn {cull: !!counter.get('speedsetup') || !!counter.get('recovery') || otherMoves};\r\n\t\tcase 'quickattack':\r\n\t\t\treturn {cull: !!counter.get('speedsetup') || (types.has('Rock') && !!counter.get('Status'))};\r\n\t\tcase 'flamethrower': case 'lavaplume':\r\n\t\t\tconst otherFireMoves = ['heatwave', 'overheat'].some(m => moves.has(m));\r\n\t\t\treturn {cull: (moves.has('fireblast') && counter.setupType !== 'Physical') || otherFireMoves};\r\n\t\tcase 'overheat':\r\n\t\t\treturn {cull: moves.has('flareblitz') || (isDoubles && moves.has('calmmind'))};\r\n\t\tcase 'aquatail':\r\n\t\t\treturn {cull: moves.has('aquajet') || !!counter.get('Status')};\r\n\t\tcase 'hydropump':\r\n\t\t\treturn {cull: moves.has('scald') && (\r\n\t\t\t\t(counter.get('Special') < 4 && !moves.has('uturn')) ||\r\n\t\t\t\t(species.types.length > 1 && counter.get('stab') < 3)\r\n\t\t\t)};\r\n\t\tcase 'gigadrain':\r\n\t\t\treturn {cull: types.has('Poison') && !counter.get('Poison')};\r\n\t\tcase 'leafstorm':\r\n\t\t\tconst leafBladePossible = movePool.includes('leafblade') || moves.has('leafblade');\r\n\t\t\treturn {cull:\r\n\t\t\t\t(counter.setupType === 'Physical' && leafBladePossible) ||\r\n\t\t\t\t(moves.has('gigadrain') && !!counter.get('Status')) ||\r\n\t\t\t\t(isDoubles && moves.has('energyball')),\r\n\t\t\t};\r\n\t\tcase 'freezedry':\r\n\t\t\tconst betterIceMove = (\r\n\t\t\t\t(moves.has('blizzard') && !!counter.setupType) ||\r\n\t\t\t\t(moves.has('icebeam') && counter.get('Special') < 4)\r\n\t\t\t);\r\n\t\t\tconst preferThunderWave = movePool.includes('thunderwave') && types.has('Electric');\r\n\t\t\treturn {cull: betterIceMove || preferThunderWave || movePool.includes('bodyslam')};\r\n\t\t// Milotic always wants RestTalk\r\n\t\tcase 'icebeam':\r\n\t\t\treturn {cull: moves.has('dragontail')};\r\n\t\tcase 'bodypress':\r\n\t\t\tconst pressIncompatible = ['shellsmash', 'mirrorcoat', 'whirlwind'].some(m => moves.has(m));\r\n\t\t\treturn {cull: pressIncompatible || counter.setupType === 'Special'};\r\n\t\tcase 'drainpunch':\r\n\t\t\treturn {cull: moves.has('closecombat') || (!types.has('Fighting') && movePool.includes('swordsdance'))};\r\n\t\tcase 'facade':\r\n\t\t\t// Prefer Dynamic Punch when it can be a guaranteed-hit STAB move (mostly for Machamp)\r\n\t\t\treturn {cull: moves.has('dynamicpunch') && species.types.includes('Fighting') && abilities.has('No Guard')};\r\n\t\tcase 'focusblast':\r\n\t\t\t// Special cases for Blastoise and Regice; Blastoise wants Shell Smash, and Regice wants Thunderbolt\r\n\t\t\treturn {cull: movePool.includes('shellsmash') || hasRestTalk};\r\n\t\tcase 'superpower':\r\n\t\t\treturn {\r\n\t\t\t\tcull: moves.has('hydropump') ||\r\n\t\t\t\t\t(counter.get('Physical') >= 4 && movePool.includes('uturn')) ||\r\n\t\t\t\t\t(moves.has('substitute') && !abilities.has('Contrary')),\r\n\t\t\t\tisSetup: abilities.has('Contrary'),\r\n\t\t\t};\r\n\t\tcase 'poisonjab':\r\n\t\t\treturn {cull: !types.has('Poison') && counter.get('Status') >= 2};\r\n\t\tcase 'earthquake':\r\n\t\t\tconst doublesCull = moves.has('earthpower') || moves.has('highhorsepower');\r\n\t\t\tconst subToxicPossible = moves.has('substitute') && movePool.includes('toxic');\r\n\t\t\treturn {cull: (isDoubles && doublesCull) || subToxicPossible || moves.has('bonemerang')};\r\n\t\tcase 'airslash':\r\n\t\t\treturn {cull: hasRestTalk || counter.setupType === 'Physical'};\r\n\t\tcase 'hurricane':\r\n\t\t\treturn {cull: counter.setupType === 'Physical'};\r\n\t\tcase 'futuresight':\r\n\t\t\treturn {cull: moves.has('psyshock') || moves.has('trick') || movePool.includes('teleport')};\r\n\t\tcase 'psychic':\r\n\t\t\treturn {cull: moves.has('psyshock') && (!!counter.setupType || isDoubles)};\r\n\t\tcase 'psyshock':\r\n\t\t\treturn {cull: moves.has('psychic')};\r\n\t\tcase 'bugbuzz':\r\n\t\t\treturn {cull: moves.has('uturn') && !counter.setupType && !abilities.has('Tinted Lens')};\r\n\t\tcase 'leechlife':\r\n\t\t\treturn {cull:\r\n\t\t\t\t(isDoubles && moves.has('lunge')) ||\r\n\t\t\t\t(moves.has('uturn') && !counter.setupType) ||\r\n\t\t\t\tmovePool.includes('spikes'),\r\n\t\t\t};\r\n\t\tcase 'stoneedge':\r\n\t\t\tconst machampCullCondition = species.id === 'machamp' && !moves.has('dynamicpunch');\r\n\t\t\tconst rockSlidePlusStatusPossible = counter.get('Status') && movePool.includes('rockslide');\r\n\t\t\tconst otherRockMove = moves.has('rockblast') || moves.has('rockslide');\r\n\t\t\tconst lucarioCull = species.id === 'lucario' && !!counter.setupType;\r\n\t\t\treturn {cull: machampCullCondition || (!isDoubles && rockSlidePlusStatusPossible) || otherRockMove || lucarioCull};\r\n\t\tcase 'shadowball':\r\n\t\t\treturn {cull:\r\n\t\t\t\t(isDoubles && moves.has('phantomforce')) ||\r\n\t\t\t\t(!types.has('Ghost') && movePool.includes('focusblast')),\r\n\t\t\t};\r\n\t\tcase 'shadowclaw':\r\n\t\t\treturn {cull: types.has('Steel') && moves.has('shadowsneak') && counter.get('Physical') < 4};\r\n\t\tcase 'dragonpulse': case 'spacialrend':\r\n\t\t\treturn {cull: moves.has('dracometeor') && counter.get('Special') < 4};\r\n\t\tcase 'darkpulse':\r\n\t\t\tconst pulseIncompatible = ['foulplay', 'knockoff'].some(m => moves.has(m)) || (\r\n\t\t\t\tspecies.id === 'shiftry' && (moves.has('defog') || moves.has('suckerpunch'))\r\n\t\t\t);\r\n\t\t\t// Special clause to prevent bugged Shiftry sets with Sucker Punch + Nasty Plot\r\n\t\t\tconst shiftryCase = movePool.includes('nastyplot') && !moves.has('defog');\r\n\t\t\treturn {cull: pulseIncompatible && !shiftryCase && counter.setupType !== 'Special'};\r\n\t\tcase 'suckerpunch':\r\n\t\t\treturn {cull:\r\n\t\t\t\tmoves.has('rest') ||\r\n\t\t\t\tcounter.damagingMoves.size < 2 ||\r\n\t\t\t\t(counter.setupType === 'Special') ||\r\n\t\t\t\t(counter.get('Dark') > 1 && !types.has('Dark')),\r\n\t\t\t};\r\n\t\tcase 'dazzlinggleam':\r\n\t\t\treturn {cull: ['moonblast', 'petaldance'].some(m => moves.has(m))};\r\n\r\n\t\t// Status:\r\n\t\tcase 'bodyslam': case 'clearsmog':\r\n\t\t\tconst toxicCullCondition = moves.has('toxic') && !types.has('Normal');\r\n\t\t\treturn {cull: moves.has('sludgebomb') || moves.has('trick') || movePool.includes('recover') || toxicCullCondition};\r\n\t\tcase 'willowisp': case 'yawn':\r\n\t\t\t// Swords Dance is a special case for Rapidash\r\n\t\t\treturn {cull: moves.has('thunderwave') || moves.has('toxic') || moves.has('swordsdance')};\r\n\t\tcase 'painsplit': case 'recover': case 'synthesis':\r\n\t\t\treturn {cull: moves.has('rest') || moves.has('wish') || (move.id === 'synthesis' && moves.has('gigadrain'))};\r\n\t\tcase 'roost':\r\n\t\t\treturn {cull:\r\n\t\t\t\tmoves.has('throatchop') ||\r\n\t\t\t\t// Special cases for Salamence, Dynaless Dragonite, and Scizor to help prevent sets with poor coverage or no setup.\r\n\t\t\t\t(moves.has('dualwingbeat') && (moves.has('outrage') || species.id === 'scizor')),\r\n\t\t\t};\r\n\t\tcase 'reflect': case 'lightscreen':\r\n\t\t\treturn {cull: !!teamDetails.screens};\r\n\t\tcase 'slackoff':\r\n\t\t\t// Special case to prevent Scaldless Slowking\r\n\t\t\treturn {cull: species.id === 'slowking' && !moves.has('scald')};\r\n\t\tcase 'substitute':\r\n\t\t\tconst moveBasedCull = (\r\n\t\t\t\t// Breloom is OK with Substitute + Swords Dance (for subpunch sets)\r\n\t\t\t\tspecies.id !== 'breloom' &&\r\n\t\t\t\t['bulkup', 'nastyplot', 'painsplit', 'roost', 'swordsdance'].some(m => movePool.includes(m))\r\n\t\t\t);\r\n\t\t\tconst shayminCase = abilities.has('Serene Grace') && movePool.includes('airslash') && !moves.has('airslash');\r\n\t\t\treturn {cull: moves.has('rest') || moveBasedCull || shayminCase};\r\n\t\tcase 'helpinghand':\r\n\t\t\t// Special case for Shuckle in Doubles, which doesn't want sets with no method to harm foes\r\n\t\t\treturn {cull: moves.has('acupressure')};\r\n\t\tcase 'wideguard':\r\n\t\t\treturn {cull: moves.has('protect')};\r\n\t\tcase 'grassknot':\r\n\t\t\t// Special case for Raichu\r\n\t\t\treturn {cull: moves.has('surf')};\r\n\t\t}\r\n\r\n\t\treturn {cull: false};\r\n\t}\r\n\r\n\tshouldCullAbility(\r\n\t\tability: string,\r\n\t\ttypes: Set,\r\n\t\tmoves: Set,\r\n\t\tabilities: Set,\r\n\t\tcounter: MoveCounter,\r\n\t\tmovePool: string[],\r\n\t\tteamDetails: RandomTeamsTypes.TeamDetails,\r\n\t\tspecies: Species,\r\n\t\tisDoubles: boolean,\r\n\t): boolean {\r\n\t\tif ([\r\n\t\t\t'Flare Boost', 'Hydration', 'Ice Body', 'Immunity', 'Insomnia', 'Rain Dish',\r\n\t\t\t'Snow Cloak', 'Steadfast',\r\n\t\t].includes(ability)) return true;\r\n\r\n\t\tswitch (ability) {\r\n\t\t// Abilities which are primarily useful for certain moves\r\n\t\tcase 'Contrary': case 'Serene Grace': case 'Skill Link':\r\n\t\t\treturn !counter.get(ability.toLowerCase().replace(/\\s/g, ''));\r\n\t\tcase 'Analytic':\r\n\t\t\treturn (moves.has('rapidspin') || species.nfe || isDoubles);\r\n\t\tcase 'Blaze':\r\n\t\t\treturn (isDoubles && abilities.has('Solar Power')) || (!isDoubles && species.id === 'charizard');\r\n\t\tcase 'Chlorophyll':\r\n\t\t\treturn (species.baseStats.spe > 100 || !counter.get('Fire') && !moves.has('sunnyday') && !teamDetails.sun);\r\n\t\tcase 'Cloud Nine':\r\n\t\t\treturn species.id !== 'golduck';\r\n\t\tcase 'Competitive':\r\n\t\t\treturn (counter.get('Special') < 2 || (moves.has('rest') && moves.has('sleeptalk')));\r\n\t\tcase 'Compound Eyes': case 'No Guard':\r\n\t\t\treturn !counter.get('inaccurate');\r\n\t\tcase 'Cursed Body':\r\n\t\t\treturn abilities.has('Infiltrator');\r\n\t\tcase 'Defiant':\r\n\t\t\treturn !counter.get('Physical');\r\n\t\tcase 'Download':\r\n\t\t\treturn (counter.damagingMoves.size < 3 || moves.has('trick'));\r\n\t\tcase 'Early Bird':\r\n\t\t\treturn (types.has('Grass') && isDoubles);\r\n\t\tcase 'Flash Fire':\r\n\t\t\treturn (this.dex.getEffectiveness('Fire', species) < -1 || abilities.has('Drought'));\r\n\t\tcase 'Gluttony':\r\n\t\t\treturn !moves.has('bellydrum');\r\n\t\tcase 'Guts':\r\n\t\t\treturn (!moves.has('facade') && !moves.has('sleeptalk') && !species.nfe ||\r\n\t\t\t\tabilities.has('Quick Feet') && !!counter.setupType);\r\n\t\tcase 'Harvest':\r\n\t\t\treturn (abilities.has('Frisk') && !isDoubles);\r\n\t\tcase 'Hustle': case 'Inner Focus':\r\n\t\t\treturn (counter.get('Physical') < 2 || abilities.has('Iron Fist'));\r\n\t\tcase 'Infiltrator':\r\n\t\t\treturn (moves.has('rest') && moves.has('sleeptalk')) || (isDoubles && abilities.has('Clear Body'));\r\n\t\tcase 'Intimidate':\r\n\t\t\tif (species.id === 'salamence' && moves.has('dragondance')) return true;\r\n\t\t\treturn ['bodyslam', 'bounce', 'rockclimb', 'tripleaxel'].some(m => moves.has(m));\r\n\t\tcase 'Iron Fist':\r\n\t\t\treturn (counter.get('ironfist') < 2 || moves.has('dynamicpunch'));\r\n\t\tcase 'Justified':\r\n\t\t\treturn (isDoubles && abilities.has('Inner Focus'));\r\n\t\tcase 'Lightning Rod':\r\n\t\t\treturn (species.types.includes('Ground') || counter.setupType === 'Physical');\r\n\t\tcase 'Limber':\r\n\t\t\treturn species.types.includes('Electric') || moves.has('facade');\r\n\t\tcase 'Mold Breaker':\r\n\t\t\treturn (\r\n\t\t\t\tabilities.has('Adaptability') || abilities.has('Scrappy') || (abilities.has('Unburden') && !!counter.setupType) ||\r\n\t\t\t\t(abilities.has('Sheer Force') && !!counter.get('sheerforce'))\r\n\t\t\t);\r\n\t\tcase 'Moody':\r\n\t\t\treturn !!counter.setupType && abilities.has('Simple');\r\n\t\tcase 'Moxie':\r\n\t\t\treturn (counter.get('Physical') < 2 || moves.has('stealthrock') || moves.has('defog'));\r\n\t\tcase 'Overgrow':\r\n\t\t\treturn !counter.get('Grass');\r\n\t\tcase 'Own Tempo':\r\n\t\t\treturn !moves.has('petaldance');\r\n\t\tcase 'Prankster':\r\n\t\t\treturn !counter.get('Status');\r\n\t\tcase 'Pressure':\r\n\t\t\treturn (!!counter.setupType || counter.get('Status') < 2 || isDoubles);\r\n\t\tcase 'Quick Feet':\r\n\t\t\treturn !moves.has('facade');\r\n\t\tcase 'Reckless':\r\n\t\t\treturn !counter.get('recoil') || moves.has('curse');\r\n\t\tcase 'Rock Head':\r\n\t\t\treturn !counter.get('recoil');\r\n\t\tcase 'Sand Force': case 'Sand Veil':\r\n\t\t\treturn !teamDetails.sand;\r\n\t\tcase 'Sand Rush':\r\n\t\t\treturn (!teamDetails.sand && (!counter.setupType || !counter.get('Rock') || moves.has('rapidspin')));\r\n\t\tcase 'Scrappy':\r\n\t\t\treturn (moves.has('earthquake') && species.id === 'miltank');\r\n\t\tcase 'Sheer Force':\r\n\t\t\treturn (!counter.get('sheerforce') || abilities.has('Guts'));\r\n\t\tcase 'Shell Armor':\r\n\t\t\treturn (species.id === 'omastar' && (moves.has('spikes') || moves.has('stealthrock')));\r\n\t\tcase 'Sniper':\r\n\t\t\treturn counter.get('Water') > 1 && !moves.has('focusenergy');\r\n\t\tcase 'Speed Boost':\r\n\t\t\treturn moves.has('uturn');\r\n\t\tcase 'Sturdy':\r\n\t\t\treturn (moves.has('bulkup') || !!counter.get('recoil') || abilities.has('Solid Rock'));\r\n\t\tcase 'Swarm':\r\n\t\t\treturn (!counter.get('Bug') || !!counter.get('recovery'));\r\n\t\tcase 'Swift Swim':\r\n\t\t\tconst neverWantsSwim = !moves.has('raindance') && [\r\n\t\t\t\t'Intimidate', 'Rock Head', 'Water Absorb',\r\n\t\t\t].some(m => abilities.has(m));\r\n\t\t\tconst noSwimIfNoRain = !moves.has('raindance') && [\r\n\t\t\t\t'Cloud Nine', 'Lightning Rod', 'Intimidate', 'Rock Head', 'Sturdy', 'Water Absorb', 'Water Veil', 'Weak Armor',\r\n\t\t\t].some(m => abilities.has(m));\r\n\t\t\treturn teamDetails.rain ? neverWantsSwim : noSwimIfNoRain;\r\n\t\tcase 'Synchronize':\r\n\t\t\treturn counter.get('Status') < 3;\r\n\t\tcase 'Technician':\r\n\t\t\treturn (\r\n\t\t\t\t!counter.get('technician') ||\r\n\t\t\t\tmoves.has('tailslap') ||\r\n\t\t\t\tabilities.has('Punk Rock')\r\n\t\t\t);\r\n\t\tcase 'Tinted Lens':\r\n\t\t\treturn (\r\n\t\t\t\t// For Butterfree\r\n\t\t\t\t(moves.has('hurricane') && abilities.has('Compound Eyes')) ||\r\n\t\t\t\t(counter.get('Status') > 2 && !counter.setupType) ||\r\n\t\t\t\t// For Yanmega\r\n\t\t\t\tmoves.has('protect')\r\n\t\t\t);\r\n\t\tcase 'Unaware':\r\n\t\t\treturn species.id === 'bibarel';\r\n\t\tcase 'Unburden':\r\n\t\t\treturn (\r\n\t\t\t\tabilities.has('Prankster') ||\r\n\t\t\t\t// intended for Hitmonlee\r\n\t\t\t\tabilities.has('Reckless') ||\r\n\t\t\t\t!counter.setupType && !isDoubles\r\n\t\t\t);\r\n\t\tcase 'Volt Absorb':\r\n\t\t\treturn (this.dex.getEffectiveness('Electric', species) < -1);\r\n\t\tcase 'Water Absorb':\r\n\t\t\treturn (\r\n\t\t\t\tmoves.has('raindance') ||\r\n\t\t\t\t['Drizzle', 'Strong Jaw', 'Unaware', 'Volt Absorb'].some(abil => abilities.has(abil))\r\n\t\t\t);\r\n\t\tcase 'Weak Armor':\r\n\t\t\treturn (\r\n\t\t\t\tspecies.id === 'skarmory' ||\r\n\t\t\t\tmoves.has('shellsmash') || moves.has('rapidspin')\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nexport default RandomBDSPTeams;\r\n"], "mappings": "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", "names": [] }