Spaces:
Running
Running
{ | |
"version": 3, | |
"sources": ["../../../../data/random-battles/gen2/teams.ts"], | |
"sourcesContent": ["import RandomGen3Teams from '../gen3/teams';\nimport type { PRNG, PRNGSeed } from '../../../sim/prng';\nimport type { MoveCounter } from '../gen8/teams';\n\n// Moves that restore HP:\nconst RECOVERY_MOVES = [\n\t'milkdrink', 'moonlight', 'morningsun', 'painsplit', 'recover', 'softboiled', 'synthesis',\n];\n// Moves that boost Attack:\nconst PHYSICAL_SETUP = [\n\t'bellydrum', 'curse', 'meditate', 'swordsdance',\n];\n// Conglomerate for ease of access\nconst SETUP = [\n\t'agility', 'bellydrum', 'curse', 'growth', 'meditate', 'raindance', 'sunnyday', 'swordsdance',\n];\n// Moves that shouldn't be the only STAB moves:\nconst NO_STAB = [\n\t'explosion', 'icywind', 'machpunch', 'pursuit', 'quickattack', 'rapidspin', 'selfdestruct', 'skyattack', 'thief',\n];\n\n// Moves that should be paired together when possible\nconst MOVE_PAIRS = [\n\t['sleeptalk', 'rest'],\n\t['meanlook', 'perishsong'],\n];\n\nexport class RandomGen2Teams extends RandomGen3Teams {\n\trandomSets: { [species: IDEntry]: RandomTeamsTypes.RandomSpeciesData } = require('./sets.json');\n\n\tconstructor(format: string | Format, prng: PRNG | PRNGSeed | null) {\n\t\tsuper(format, prng);\n\t\tthis.noStab = NO_STAB;\n\t\tthis.moveEnforcementCheckers = {\n\t\t\tElectric: (movePool, moves, abilities, types, counter) => !counter.get('Electric'),\n\t\t\tFire: (movePool, moves, abilities, types, counter) => !counter.get('Fire'),\n\t\t\tFlying: (movePool, moves, abilities, types, counter, species) => (\n\t\t\t\t!counter.get('Flying') && ['gligar', 'murkrow', 'xatu'].includes(species.id)\n\t\t\t),\n\t\t\tGround: (movePool, moves, abilities, types, counter) => !counter.get('Ground'),\n\t\t\tIce: (movePool, moves, abilities, types, counter) => !counter.get('Ice'),\n\t\t\tNormal: (movePool, moves, abilities, types, counter) => !counter.get('Normal'),\n\t\t\tPoison: (movePool, moves, abilities, types, counter) => !counter.get('Poison'),\n\t\t\tPsychic: (movePool, moves, abilities, types, counter, species) => !counter.get('Psychic') && species.id !== 'starmie',\n\t\t\tRock: (movePool, moves, abilities, types, counter, species) => !counter.get('Rock') && species.id !== 'magcargo',\n\t\t\tWater: (movePool, moves, abilities, types, counter) => !counter.get('Water'),\n\t\t};\n\t}\n\n\tcullMovePool(\n\t\ttypes: string[],\n\t\tmoves: Set<string>,\n\t\tabilities = {},\n\t\tcounter: MoveCounter,\n\t\tmovePool: string[],\n\t\tteamDetails: RandomTeamsTypes.TeamDetails,\n\t\tspecies: Species,\n\t\tisLead: boolean,\n\t\tpreferredType: string,\n\t\trole: RandomTeamsTypes.Role,\n\t): void {\n\t\t// Pokemon cannot have multiple Hidden Powers in any circumstance\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\t\tif (hasHiddenPower) {\n\t\t\tlet movePoolHasHiddenPower = true;\n\t\t\twhile (movePoolHasHiddenPower) {\n\t\t\t\tmovePoolHasHiddenPower = false;\n\t\t\t\tfor (const moveid of movePool) {\n\t\t\t\t\tif (moveid.startsWith('hiddenpower')) {\n\t\t\t\t\t\tthis.fastPop(movePool, movePool.indexOf(moveid));\n\t\t\t\t\t\tmovePoolHasHiddenPower = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (moves.size + movePool.length <= this.maxMoveCount) return;\n\t\t// If we have two unfilled moves and only one unpaired move, cull the unpaired move.\n\t\tif (moves.size === this.maxMoveCount - 2) {\n\t\t\tconst unpairedMoves = [...movePool];\n\t\t\tfor (const pair of MOVE_PAIRS) {\n\t\t\t\tif (movePool.includes(pair[0]) && movePool.includes(pair[1])) {\n\t\t\t\t\tthis.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[0]));\n\t\t\t\t\tthis.fastPop(unpairedMoves, unpairedMoves.indexOf(pair[1]));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (unpairedMoves.length === 1) {\n\t\t\t\tthis.fastPop(movePool, movePool.indexOf(unpairedMoves[0]));\n\t\t\t}\n\t\t}\n\n\t\t// These moves are paired, and shouldn't appear if there is not room for them both.\n\t\tif (moves.size === this.maxMoveCount - 1) {\n\t\t\tfor (const pair of MOVE_PAIRS) {\n\t\t\t\tif (movePool.includes(pair[0]) && movePool.includes(pair[1])) {\n\t\t\t\t\tthis.fastPop(movePool, movePool.indexOf(pair[0]));\n\t\t\t\t\tthis.fastPop(movePool, movePool.indexOf(pair[1]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Team-based move culls\n\t\tif (teamDetails.spikes) {\n\t\t\tif (movePool.includes('spikes')) this.fastPop(movePool, movePool.indexOf('spikes'));\n\t\t\tif (moves.size + movePool.length <= this.maxMoveCount) return;\n\t\t}\n\t\tif (teamDetails.rapidSpin) {\n\t\t\tif (movePool.includes('rapidspin')) this.fastPop(movePool, movePool.indexOf('rapidspin'));\n\t\t\tif (moves.size + movePool.length <= this.maxMoveCount) return;\n\t\t}\n\t\tif (teamDetails.statusCure) {\n\t\t\tif (movePool.includes('healbell')) this.fastPop(movePool, movePool.indexOf('healbell'));\n\t\t\tif (moves.size + movePool.length <= this.maxMoveCount) return;\n\t\t}\n\n\t\t// General incompatibilities\n\t\tconst incompatiblePairs = [\n\t\t\t// These moves don't mesh well with other aspects of the set\n\t\t\t[PHYSICAL_SETUP, PHYSICAL_SETUP],\n\t\t\t[SETUP, 'haze'],\n\t\t\t['bodyslam', 'thunderwave'],\n\t\t\t[['stunspore', 'thunderwave'], 'toxic'],\n\n\t\t\t// These attacks are redundant with each other\n\t\t\t['surf', 'hydropump'],\n\t\t\t[['bodyslam', 'return'], ['bodyslam', 'doubleedge']],\n\t\t\t['fireblast', 'flamethrower'],\n\t\t\t['thunder', 'thunderbolt'],\n\t\t];\n\n\t\tfor (const pair of incompatiblePairs) this.incompatibleMoves(moves, movePool, pair[0], pair[1]);\n\n\t\tif (!role.includes('Bulky')) this.incompatibleMoves(moves, movePool, ['rest', 'sleeptalk'], 'roar');\n\t}\n\n\t// Generate random moveset for a given species, role, preferred type.\n\trandomMoveset(\n\t\ttypes: string[],\n\t\tabilities: string[],\n\t\tteamDetails: RandomTeamsTypes.TeamDetails,\n\t\tspecies: Species,\n\t\tisLead: boolean,\n\t\tmovePool: string[],\n\t\tpreferredType: string,\n\t\trole: RandomTeamsTypes.Role,\n\t): Set<string> {\n\t\tconst preferredTypes = preferredType ? preferredType.split(',') : [];\n\t\tconst moves = new Set<string>();\n\t\tlet counter = this.newQueryMoves(moves, species, preferredType, abilities);\n\t\tthis.cullMovePool(types, moves, abilities, counter, movePool, teamDetails, species, isLead,\n\t\t\tpreferredType, role);\n\n\t\t// If there are only four moves, add all moves and return early\n\t\tif (movePool.length <= this.maxMoveCount) {\n\t\t\t// Still need to ensure that multiple Hidden Powers are not added (if maxMoveCount is increased)\n\t\t\twhile (movePool.length) {\n\t\t\t\tconst moveid = this.sample(movePool);\n\t\t\t\tcounter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t}\n\t\t\treturn moves;\n\t\t}\n\n\t\tconst runEnforcementChecker = (checkerName: string) => {\n\t\t\tif (!this.moveEnforcementCheckers[checkerName]) return false;\n\t\t\treturn this.moveEnforcementCheckers[checkerName](\n\t\t\t\tmovePool, moves, abilities, new Set(types), counter, species, teamDetails\n\t\t\t);\n\t\t};\n\n\t\t// Add required move (e.g. Relic Song for Meloetta-P)\n\t\tif (species.requiredMove) {\n\t\t\tconst move = this.dex.moves.get(species.requiredMove).id;\n\t\t\tcounter = this.addMove(move, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\tmovePool, preferredType, role);\n\t\t}\n\n\t\t// Add other moves you really want to have, e.g. STAB, recovery, setup.\n\n\t\t// Enforce Destiny Bond, Explosion, Present, Spikes and Spore\n\t\tfor (const moveid of ['destinybond', 'explosion', 'present', 'spikes', 'spore']) {\n\t\t\tif (movePool.includes(moveid)) {\n\t\t\t\tcounter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t}\n\t\t}\n\n\t\t// Enforce Baton Pass on Smeargle\n\t\tif (movePool.includes('batonpass') && species.id === 'smeargle') {\n\t\t\tcounter = this.addMove('batonpass', moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\tmovePool, preferredType, role);\n\t\t}\n\n\t\t// Enforce moves of all Preferred Types\n\t\tfor (const type of preferredTypes) {\n\t\t\tif (!counter.get(type)) {\n\t\t\t\tconst stabMoves = [];\n\t\t\t\tfor (const moveid of movePool) {\n\t\t\t\t\tconst move = this.dex.moves.get(moveid);\n\t\t\t\t\tconst moveType = this.getMoveType(move, species, abilities, preferredType);\n\t\t\t\t\tif (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && type === moveType) {\n\t\t\t\t\t\tstabMoves.push(moveid);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (stabMoves.length) {\n\t\t\t\t\tconst moveid = this.sample(stabMoves);\n\t\t\t\t\tcounter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Enforce STAB\n\t\tfor (const type of types) {\n\t\t\t// Check if a STAB move of that type should be required\n\t\t\tconst stabMoves = [];\n\t\t\tfor (const moveid of movePool) {\n\t\t\t\tconst move = this.dex.moves.get(moveid);\n\t\t\t\tconst moveType = this.getMoveType(move, species, abilities, preferredType);\n\t\t\t\tif (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && type === moveType) {\n\t\t\t\t\tstabMoves.push(moveid);\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (runEnforcementChecker(type)) {\n\t\t\t\tif (!stabMoves.length) break;\n\t\t\t\tconst moveid = this.sampleNoReplace(stabMoves);\n\t\t\t\tcounter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t}\n\t\t}\n\n\t\t// If no STAB move was added, add a STAB move\n\t\tif (!counter.get('stab')) {\n\t\t\tconst stabMoves = [];\n\t\t\tfor (const moveid of movePool) {\n\t\t\t\tconst move = this.dex.moves.get(moveid);\n\t\t\t\tconst moveType = this.getMoveType(move, species, abilities, preferredType);\n\t\t\t\tif (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback) && types.includes(moveType)) {\n\t\t\t\t\tstabMoves.push(moveid);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (stabMoves.length) {\n\t\t\t\tconst moveid = this.sample(stabMoves);\n\t\t\t\tcounter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t}\n\t\t}\n\n\t\t// Enforce recovery\n\t\tif (['Bulky Support', 'Bulky Attacker', 'Bulky Setup'].includes(role)) {\n\t\t\tconst recoveryMoves = movePool.filter(moveid => RECOVERY_MOVES.includes(moveid));\n\t\t\tif (recoveryMoves.length) {\n\t\t\t\tconst moveid = this.sample(recoveryMoves);\n\t\t\t\tcounter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t}\n\t\t\t// Rest/Sleep Talk count as recovery in Gen 2\n\t\t\tif (movePool.includes('rest')) {\n\t\t\t\tcounter = this.addMove('rest', moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t}\n\t\t\tif (movePool.includes('sleeptalk')) {\n\t\t\t\tcounter = this.addMove('sleeptalk', moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t}\n\t\t}\n\n\t\t// Enforce setup\n\t\tif (role.includes('Setup')) {\n\t\t\t// First, try to add a non-Speed setup move\n\t\t\tconst nonSpeedSetupMoves = movePool.filter(moveid => SETUP.includes(moveid) && moveid !== 'agility');\n\t\t\tif (nonSpeedSetupMoves.length) {\n\t\t\t\tconst moveid = this.sample(nonSpeedSetupMoves);\n\t\t\t\tcounter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t} else {\n\t\t\t\tif (movePool.includes('agility')) {\n\t\t\t\t\tcounter = this.addMove('agility', moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Enforce Thief\n\t\tif (role === 'Thief user') {\n\t\t\tif (movePool.includes('thief')) {\n\t\t\t\tcounter = this.addMove('thief', moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t}\n\t\t}\n\n\t\t// Enforce a move not on the noSTAB list\n\t\tif (!counter.damagingMoves.size && !moves.has('present')) {\n\t\t\t// Choose an attacking move\n\t\t\tconst attackingMoves = [];\n\t\t\tfor (const moveid of movePool) {\n\t\t\t\tconst move = this.dex.moves.get(moveid);\n\t\t\t\tif (!this.noStab.includes(moveid) && (move.category !== 'Status')) attackingMoves.push(moveid);\n\t\t\t}\n\t\t\tif (attackingMoves.length) {\n\t\t\t\tconst moveid = this.sample(attackingMoves);\n\t\t\t\tcounter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t}\n\t\t}\n\n\t\t// Enforce coverage move\n\t\tif (['Fast Attacker', 'Setup Sweeper', 'Bulky Attacker'].includes(role)) {\n\t\t\tif (counter.damagingMoves.size === 1) {\n\t\t\t\t// Find the type of the current attacking move\n\t\t\t\tconst currentAttackType = counter.damagingMoves.values().next().value!.type;\n\t\t\t\t// Choose an attacking move that is of different type to the current single attack\n\t\t\t\tconst coverageMoves = [];\n\t\t\t\tfor (const moveid of movePool) {\n\t\t\t\t\tconst move = this.dex.moves.get(moveid);\n\t\t\t\t\tconst moveType = this.getMoveType(move, species, abilities, preferredType);\n\t\t\t\t\tif (!this.noStab.includes(moveid) && (move.basePower || move.basePowerCallback)) {\n\t\t\t\t\t\tif (currentAttackType !== moveType) coverageMoves.push(moveid);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (coverageMoves.length) {\n\t\t\t\t\tconst moveid = this.sample(coverageMoves);\n\t\t\t\t\tcounter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Choose remaining moves randomly from movepool and add them to moves list:\n\t\twhile (moves.size < this.maxMoveCount && movePool.length) {\n\t\t\tconst moveid = this.sample(movePool);\n\t\t\tcounter = this.addMove(moveid, moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\tmovePool, preferredType, role);\n\t\t\tfor (const pair of MOVE_PAIRS) {\n\t\t\t\tif (moveid === pair[0] && movePool.includes(pair[1])) {\n\t\t\t\t\tcounter = this.addMove(pair[1], moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t\t}\n\t\t\t\tif (moveid === pair[1] && movePool.includes(pair[0])) {\n\t\t\t\t\tcounter = this.addMove(pair[0], moves, types, abilities, teamDetails, species, isLead,\n\t\t\t\t\t\tmovePool, preferredType, role);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn moves;\n\t}\n\n\tgetItem(\n\t\tability: string,\n\t\ttypes: string[],\n\t\tmoves: Set<string>,\n\t\tcounter: MoveCounter,\n\t\tteamDetails: RandomTeamsTypes.TeamDetails,\n\t\tspecies: Species,\n\t\tisLead: boolean,\n\t\tpreferredType: string,\n\t\trole: RandomTeamsTypes.Role,\n\t): string {\n\t\t// First, the high-priority items\n\t\tif (species.id === 'ditto') return 'Metal Powder';\n\t\tif (species.id === 'marowak') return 'Thick Club';\n\t\tif (species.id === 'pikachu') return 'Light Ball';\n\n\t\tif (moves.has('thief')) return '';\n\n\t\tif (moves.has('flail')) return 'Pink Bow';\n\t\tif (moves.has('reversal')) return 'Black Belt';\n\n\t\tif (moves.has('rest') && !moves.has('sleeptalk') && !role.includes('Bulky')) return 'Mint Berry';\n\n\t\tif (moves.has('bellydrum') && !counter.get('recovery') && this.randomChance(1, 2)) return 'Miracle Berry';\n\n\t\t// Default to Leftovers\n\t\treturn 'Leftovers';\n\t}\n\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\n\t\tconst set = this.sampleIfArray(sets);\n\t\tconst role = set.role;\n\t\tconst movePool: string[] = Array.from(set.movepool);\n\t\tconst preferredTypes = set.preferredTypes;\n\t\t// In Gen 2, if a set has multiple preferred types, enforce all of them.\n\t\tconst preferredType = preferredTypes ? preferredTypes.join() : '';\n\n\t\tconst ability = '';\n\t\tlet item = undefined;\n\n\t\tconst evs = { hp: 255, atk: 255, def: 255, spa: 255, spd: 255, spe: 255 };\n\t\tconst ivs = { hp: 30, atk: 30, def: 30, spa: 30, spd: 30, spe: 30 };\n\n\t\tconst types = species.types;\n\t\tconst abilities: string[] = [];\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 items\n\t\titem = this.getItem(ability, types, moves, counter, teamDetails, species, isLead, preferredType, role);\n\n\t\tconst level = this.getLevel(species);\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\tif (hasHiddenPower) {\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: { [k: string]: Partial<typeof ivs> } = {\n\t\t\t\tdragon: { def: 28 },\n\t\t\t\tice: { def: 26 },\n\t\t\t\tpsychic: { def: 24 },\n\t\t\t\telectric: { atk: 28 },\n\t\t\t\tgrass: { atk: 28, def: 28 },\n\t\t\t\twater: { atk: 28, def: 26 },\n\t\t\t\tfire: { atk: 28, def: 24 },\n\t\t\t\tsteel: { atk: 26 },\n\t\t\t\tghost: { atk: 26, def: 28 },\n\t\t\t\tbug: { atk: 26, def: 26 },\n\t\t\t\trock: { atk: 26, def: 24 },\n\t\t\t\tground: { atk: 24 },\n\t\t\t\tpoison: { atk: 24, def: 28 },\n\t\t\t\tflying: { atk: 24, def: 26 },\n\t\t\t\tfighting: { atk: 24, def: 24 },\n\t\t\t};\n\t\t\tlet iv: StatID;\n\t\t\tfor (iv in hpIVs[hpType]) {\n\t\t\t\tivs[iv] = hpIVs[hpType][iv]!;\n\t\t\t}\n\t\t\tif (ivs.atk === 28 || ivs.atk === 24) ivs.hp = 14;\n\t\t\tif (ivs.def === 28 || ivs.def === 24) ivs.hp -= 8;\n\t\t}\n\n\t\t// Prepare optimal HP\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') && item !== 'Leftovers') {\n\t\t\t\t// Should be able to use four Substitutes\n\t\t\t\tif (hp % 4 > 0) break;\n\t\t\t} else if (moves.has('bellydrum') && item !== 'Leftovers') {\n\t\t\t\t// Belly Drum users without Leftovers should reach exactly 50% HP\n\t\t\t\tif (hp % 2 === 0) break;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tevs.hp -= 4;\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\treturn {\n\t\t\tname: species.baseSpecies,\n\t\t\tspecies: forme,\n\t\t\tlevel,\n\t\t\tmoves: shuffledMoves,\n\t\t\tability: 'No Ability',\n\t\t\tevs,\n\t\t\tivs,\n\t\t\titem,\n\t\t\trole,\n\t\t\t// No shiny chance because Gen 2 shinies have bad IVs\n\t\t\tshiny: false,\n\t\t\tgender: species.gender ? species.gender : 'M',\n\t\t};\n\t}\n}\n\nexport default RandomGen2Teams;\n"], | |
"mappings": "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", | |
"names": ["RandomGen3Teams"] | |
} | |