Spaces:
Sleeping
Sleeping
{ | |
"version": 3, | |
"sources": ["../../../../data/random-battles/gen7apex/teams.ts"], | |
"sourcesContent": ["import { RandomGen7Teams, ZeroAttackHPIVs } from '../gen7/teams';\n\nconst POWERFUL_ABILITIES = [\n\t'Adaptability', 'Aftermath', 'Analytic', 'Arena Trap', 'Beast Boost', 'Berserk', 'Comatose', 'Competitive',\n\t'Compound Eyes', 'Contrary', 'Cursed Body', 'Defiant', 'Desolate Land', 'Download', 'Drizzle', 'Drought', 'Dry Skin',\n\t'Effect Spore', 'Filter', 'Flame Body', 'Flash Fire', 'Fluffy', 'Fur Coat', 'Gooey', 'Grassy Surge', 'Heatproof',\n\t'Huge Power', 'Hustle', 'Illusion', 'Imposter', 'Innards Out', 'Intimidate', 'Iron Barbs', 'Levitate', 'Lightning Rod',\n\t'Magic Bounce', 'Magic Guard', 'Marvel Scale', 'Mold Breaker', 'Moody', 'Motor Drive', 'Moxie', 'Multiscale',\n\t'Natural Cure', 'Neuroforce', 'Parental Bond', 'Poison Point', 'Poison Touch', 'Prankster', 'Primordial Sea', 'Prism Armor',\n\t'Protean', 'Pure Power', 'Regenerator', 'Rough Skin', 'Sand Stream', 'Sap Sipper', 'Serene Grace',\n\t'Shadow Shield', 'Shadow Tag', 'Shed Skin', 'Sheer Force', 'Shield Dust', 'Simple', 'Snow Warning', 'Solid Rock',\n\t'Soul-Heart', 'Speed Boost', 'Stakeout', 'Stamina', 'Static', 'Storm Drain', 'Sturdy', 'Tangling Hair', 'Technician',\n\t'Teravolt', 'Thick Fat', 'Tinted Lens', 'Tough Claws', 'Trace', 'Triage', 'Turboblaze', 'Unaware', 'Volt Absorb',\n\t'Water Absorb', 'Water Bubble', 'Wonder Guard',\n];\n\nexport class RandomGen7ApexTeams extends RandomGen7Teams {\n\trandomSet(\n\t\tspecies: string | Species,\n\t\tteamDetails: RandomTeamsTypes.TeamDetails = {},\n\t\tisLead = false\n\t): RandomTeamsTypes.RandomSet {\n\t\tspecies = this.dex.species.get(species);\n\t\tconst forme = this.getForme(species);\n\t\tconst sets = this.randomSets[species.id][\"sets\"];\n\t\tconst possibleSets = [];\n\t\t// Check if the Pokemon has a Z-Move user set\n\t\tlet canZMove = false;\n\t\tfor (const set of sets) {\n\t\t\tif (!teamDetails.zMove && set.role === 'Z-Move user') canZMove = true;\n\t\t}\n\t\tfor (const set of sets) {\n\t\t\t// Prevent multiple Z-Move users\n\t\t\tif (teamDetails.zMove && set.role === 'Z-Move user') continue;\n\t\t\t// Prevent Setup Sweeper and Bulky Setup if Z-Move user is available\n\t\t\tif (canZMove && ['Setup Sweeper', 'Bulky Setup'].includes(set.role)) continue;\n\t\t\tpossibleSets.push(set);\n\t\t}\n\t\tconst set = this.sampleIfArray(possibleSets);\n\t\tconst role = set.role;\n\t\tconst movePool: string[] = Array.from(set.movepool);\n\t\tconst preferredTypes = set.preferredTypes;\n\t\tconst preferredType = this.sampleIfArray(preferredTypes) || '';\n\n\t\tlet ability = '';\n\t\tlet item = undefined;\n\n\t\tconst evs = { hp: 85, atk: 85, def: 85, spa: 85, spd: 85, spe: 85 };\n\t\tconst ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 };\n\n\t\tconst types = species.types;\n\t\tconst baseAbilities = set.abilities!;\n\t\t// Use the mega's ability for moveset generation\n\t\tconst abilities = (species.battleOnly && !species.requiredAbility) ? Object.values(species.abilities) : baseAbilities;\n\n\t\t// Get moves\n\t\tconst moves = this.randomMoveset(types, abilities, teamDetails, species, isLead, movePool,\n\t\t\tpreferredType, role);\n\t\tconst counter = this.newQueryMoves(moves, species, preferredType, abilities);\n\n\t\t// Get ability\n\t\tability = this.getAbility(new Set(types), moves, baseAbilities, counter, movePool, teamDetails, species,\n\t\t\tpreferredType, role);\n\n\t\t// Get items\n\t\titem = this.getPriorityItem(ability, types, moves, counter, teamDetails, species, isLead, preferredType, role);\n\t\tif (item === undefined) {\n\t\t\titem = this.getItem(ability, types, moves, counter, teamDetails, species, isLead, preferredType, role);\n\t\t}\n\n\t\t// For Trick / Switcheroo\n\t\tif (item === 'Leftovers' && types.includes('Poison')) {\n\t\t\titem = 'Black Sludge';\n\t\t}\n\n\t\tconst level = this.getLevel(species);\n\n\t\t// Minimize confusion damage, including if Foul Play is its only physical attack\n\t\tif (\n\t\t\t(!counter.get('Physical') || (counter.get('Physical') <= 1 && (moves.has('foulplay') || moves.has('rapidspin')))) &&\n\t\t\t!moves.has('copycat') && !moves.has('transform')\n\t\t) {\n\t\t\tevs.atk = 0;\n\t\t\tivs.atk = 0;\n\t\t}\n\n\t\t// Override regular ability with a random \"powerful\" ability\n\t\tability = this.sample(POWERFUL_ABILITIES);\n\n\t\tif (ability === 'Beast Boost' && !counter.get('Special')) {\n\t\t\tevs.spa = 0;\n\t\t\tivs.spa = 0;\n\t\t}\n\n\t\t// We use a special variable to track Hidden Power\n\t\t// so that we can check for all Hidden Powers at once\n\t\tlet hasHiddenPower = false;\n\t\tfor (const move of moves) {\n\t\t\tif (move.startsWith('hiddenpower')) hasHiddenPower = true;\n\t\t}\n\n\t\t// Fix IVs for non-Bottle Cap-able sets\n\t\tif (hasHiddenPower && level < 100) {\n\t\t\tlet hpType;\n\t\t\tfor (const move of moves) {\n\t\t\t\tif (move.startsWith('hiddenpower')) hpType = move.substr(11);\n\t\t\t}\n\t\t\tif (!hpType) throw new Error(`hasHiddenPower is true, but no Hidden Power move was found.`);\n\t\t\tconst HPivs = ivs.atk === 0 ? ZeroAttackHPIVs[hpType] : this.dex.types.get(hpType).HPivs;\n\t\t\tlet iv: StatID;\n\t\t\tfor (iv in HPivs) {\n\t\t\t\tivs[iv] = HPivs[iv]!;\n\t\t\t}\n\t\t}\n\n\t\t// Prepare optimal HP\n\t\tconst srImmunity = ability === 'Magic Guard';\n\t\tconst srWeakness = srImmunity ? 0 : this.dex.getEffectiveness('Rock', species);\n\t\twhile (evs.hp > 1) {\n\t\t\tconst hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10);\n\t\t\tif (moves.has('substitute') && !['Black Sludge', 'Leftovers'].includes(item)) {\n\t\t\t\tif (item === 'Sitrus Berry') {\n\t\t\t\t\t// Two Substitutes should activate Sitrus Berry\n\t\t\t\t\tif (hp % 4 === 0) break;\n\t\t\t\t} else {\n\t\t\t\t\t// Should be able to use Substitute four times from full HP without fainting\n\t\t\t\t\tif (hp % 4 > 0) break;\n\t\t\t\t}\n\t\t\t} else if (moves.has('bellydrum') && (item === 'Sitrus Berry')) {\n\t\t\t\t// Belly Drum should activate Sitrus Berry\n\t\t\t\tif (hp % 2 === 0) break;\n\t\t\t} else if (['highjumpkick', 'jumpkick'].some(m => moves.has(m))) {\n\t\t\t\t// Crash damage move users want an odd HP to survive two misses\n\t\t\t\tif (hp % 2 > 0) break;\n\t\t\t} else {\n\t\t\t\t// Maximize number of Stealth Rock switch-ins\n\t\t\t\tif (srWeakness <= 0 || ability === 'Regenerator') break;\n\t\t\t\tif (srWeakness === 1 && ['Black Sludge', 'Leftovers', 'Life Orb'].includes(item)) break;\n\t\t\t\tif (item !== 'Sitrus Berry' && hp % (4 / srWeakness) > 0) break;\n\t\t\t\t// Minimise number of Stealth Rock switch-ins to activate Sitrus Berry\n\t\t\t\tif (item === 'Sitrus Berry' && hp % (4 / srWeakness) === 0) break;\n\t\t\t}\n\t\t\tevs.hp -= 4;\n\t\t}\n\n\t\tif (['gyroball', 'metalburst', 'trickroom'].some(m => moves.has(m))) {\n\t\t\tevs.spe = 0;\n\t\t\tivs.spe = (hasHiddenPower && level < 100) ? ivs.spe - 30 : 0;\n\t\t}\n\n\t\t// shuffle moves to add more randomness to camomons\n\t\tconst shuffledMoves = Array.from(moves);\n\t\tthis.prng.shuffle(shuffledMoves);\n\n\t\t// Z-Conversion Porygon-Z should have Shadow Ball first if no Recover, otherwise Thunderbolt\n\t\tif (species.id === 'porygonz' && role === 'Z-Move user') {\n\t\t\tconst firstMove = (moves.has('shadowball') ? 'shadowball' : 'thunderbolt');\n\t\t\tthis.fastPop(shuffledMoves, shuffledMoves.indexOf(firstMove));\n\t\t\tshuffledMoves.unshift(firstMove);\n\t\t}\n\n\t\treturn {\n\t\t\tname: species.baseSpecies,\n\t\t\tspecies: forme,\n\t\t\tgender: species.baseSpecies === 'Greninja' ? 'M' : species.gender,\n\t\t\tshiny: this.randomChance(1, 1024),\n\t\t\tlevel,\n\t\t\tmoves: shuffledMoves,\n\t\t\tability,\n\t\t\tevs,\n\t\t\tivs,\n\t\t\titem,\n\t\t\trole,\n\t\t};\n\t}\n}\n\nexport default RandomGen7ApexTeams;\n"], | |
"mappings": "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", | |
"names": ["set"] | |
} | |