{ "version": 3, "sources": ["../../../../../data/mods/gen1/random-teams.ts"], "sourcesContent": ["import RandomGen2Teams from '../gen2/random-teams';\r\nimport {Utils} from '../../../lib';\r\nimport {MoveCounter} from '../gen8/random-teams';\r\n\r\ninterface HackmonsCupEntry {\r\n\ttypes: string[];\r\n\tbaseStats: StatsTable;\r\n}\r\n\r\ninterface Gen1RandomBattleSpecies {\r\n\tlevel?: number;\r\n\tmoves?: ID[];\r\n\tessentialMove?: ID;\r\n\texclusiveMoves?: ID[];\r\n\tcomboMoves?: ID[];\r\n}\r\n\r\nexport class RandomGen1Teams extends RandomGen2Teams {\r\n\trandomData: {[species: string]: Gen1RandomBattleSpecies} = require('./random-data.json');\r\n\r\n\t// Challenge Cup or CC teams are basically fully random teams.\r\n\trandomCCTeam() {\r\n\t\tthis.enforceNoDirectCustomBanlistChanges();\r\n\r\n\t\tconst team = [];\r\n\r\n\t\tconst randomN = this.randomNPokemon(this.maxTeamSize, this.forceMonotype);\r\n\r\n\t\tfor (const pokemon of randomN) {\r\n\t\t\tconst species = this.dex.species.get(pokemon);\r\n\t\t\tconst learnset = this.dex.species.getLearnset(species.id);\r\n\r\n\t\t\t// Level balance: calculate directly from stats rather than using some silly lookup table.\r\n\t\t\tconst mbstmin = 1307;\r\n\t\t\tconst stats = species.baseStats;\r\n\r\n\t\t\t// Modified base stat total assumes 15 DVs, 255 EVs in every stat\r\n\t\t\tlet mbst = (stats[\"hp\"] * 2 + 30 + 63 + 100) + 10;\r\n\t\t\tmbst += (stats[\"atk\"] * 2 + 30 + 63 + 100) + 5;\r\n\t\t\tmbst += (stats[\"def\"] * 2 + 30 + 63 + 100) + 5;\r\n\t\t\tmbst += (stats[\"spa\"] * 2 + 30 + 63 + 100) + 5;\r\n\t\t\tmbst += (stats[\"spd\"] * 2 + 30 + 63 + 100) + 5;\r\n\t\t\tmbst += (stats[\"spe\"] * 2 + 30 + 63 + 100) + 5;\r\n\r\n\t\t\tlet level;\r\n\t\t\tif (this.adjustLevel) {\r\n\t\t\t\tlevel = this.adjustLevel;\r\n\t\t\t} else {\r\n\t\t\t\tlevel = Math.floor(100 * mbstmin / mbst); // Initial level guess will underestimate\r\n\r\n\t\t\t\twhile (level < 100) {\r\n\t\t\t\t\tmbst = Math.floor((stats[\"hp\"] * 2 + 30 + 63 + 100) * level / 100 + 10);\r\n\t\t\t\t\t// Since damage is roughly proportional to lvl\r\n\t\t\t\t\tmbst += Math.floor(((stats[\"atk\"] * 2 + 30 + 63 + 100) * level / 100 + 5) * level / 100);\r\n\t\t\t\t\tmbst += Math.floor((stats[\"def\"] * 2 + 30 + 63 + 100) * level / 100 + 5);\r\n\t\t\t\t\tmbst += Math.floor(((stats[\"spa\"] * 2 + 30 + 63 + 100) * level / 100 + 5) * level / 100);\r\n\t\t\t\t\tmbst += Math.floor((stats[\"spd\"] * 2 + 30 + 63 + 100) * level / 100 + 5);\r\n\t\t\t\t\tmbst += Math.floor((stats[\"spe\"] * 2 + 30 + 63 + 100) * level / 100 + 5);\r\n\r\n\t\t\t\t\tif (mbst >= mbstmin) break;\r\n\t\t\t\t\tlevel++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Random DVs.\r\n\t\t\tconst ivs = {\r\n\t\t\t\thp: 0,\r\n\t\t\t\tatk: this.random(16),\r\n\t\t\t\tdef: this.random(16),\r\n\t\t\t\tspa: this.random(16),\r\n\t\t\t\tspd: 0,\r\n\t\t\t\tspe: this.random(16),\r\n\t\t\t};\r\n\t\t\tivs[\"hp\"] = (ivs[\"atk\"] % 2) * 16 + (ivs[\"def\"] % 2) * 8 + (ivs[\"spe\"] % 2) * 4 + (ivs[\"spa\"] % 2) * 2;\r\n\t\t\tivs[\"atk\"] *= 2;\r\n\t\t\tivs[\"def\"] *= 2;\r\n\t\t\tivs[\"spa\"] *= 2;\r\n\t\t\tivs[\"spd\"] = ivs[\"spa\"];\r\n\t\t\tivs[\"spe\"] *= 2;\r\n\r\n\t\t\t// Maxed EVs.\r\n\t\t\tconst evs = {hp: 255, atk: 255, def: 255, spa: 255, spd: 255, spe: 255};\r\n\r\n\t\t\t// Four random unique moves from movepool. don't worry about \"attacking\" or \"viable\".\r\n\t\t\t// Since Gens 1 and 2 learnsets are shared, we need to weed out Gen 2 moves.\r\n\t\t\tconst pool: string[] = [];\r\n\t\t\tif (learnset) {\r\n\t\t\t\tfor (const move in learnset) {\r\n\t\t\t\t\tif (this.dex.moves.get(move).gen !== 1) continue;\r\n\t\t\t\t\tif (learnset[move].some(learned => learned.startsWith('1'))) {\r\n\t\t\t\t\t\tpool.push(move);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tteam.push({\r\n\t\t\t\tname: species.baseSpecies,\r\n\t\t\t\tspecies: species.name,\r\n\t\t\t\tmoves: this.multipleSamplesNoReplace(pool, 4),\r\n\t\t\t\tgender: false,\r\n\t\t\t\tability: 'No Ability',\r\n\t\t\t\tevs: evs,\r\n\t\t\t\tivs: ivs,\r\n\t\t\t\titem: '',\r\n\t\t\t\tlevel,\r\n\t\t\t\thappiness: 0,\r\n\t\t\t\tshiny: false,\r\n\t\t\t\tnature: 'Serious',\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn team;\r\n\t}\r\n\r\n\t// Random team generation for Gen 1 Random Battles.\r\n\trandomTeam() {\r\n\t\tthis.enforceNoDirectCustomBanlistChanges();\r\n\r\n\t\t// Get what we need ready.\r\n\t\tconst seed = this.prng.seed;\r\n\t\tconst ruleTable = this.dex.formats.getRuleTable(this.format);\r\n\t\tconst pokemon: RandomTeamsTypes.RandomSet[] = [];\r\n\r\n\t\t// For Monotype\r\n\t\tconst isMonotype = !!this.forceMonotype || ruleTable.has('sametypeclause');\r\n\t\tconst typePool = this.dex.types.names();\r\n\t\tconst type = this.forceMonotype || this.sample(typePool);\r\n\r\n\t\t/** Pok\u00E9mon that are not wholly incompatible with the team, but still pretty bad */\r\n\t\tconst rejectedButNotInvalidPool: string[] = [];\r\n\t\tconst nuTiers = ['UU', 'UUBL', 'NFE', 'LC', 'NU'];\r\n\t\tconst uuTiers = ['NFE', 'UU', 'UUBL', 'NU'];\r\n\r\n\t\t// Now let's store what we are getting.\r\n\t\tconst typeCount: {[k: string]: number} = {};\r\n\t\tconst weaknessCount: {[k: string]: number} = {Electric: 0, Psychic: 0, Water: 0, Ice: 0, Ground: 0};\r\n\t\tlet uberCount = 0;\r\n\t\tlet nuCount = 0;\r\n\r\n\t\tconst pokemonPool = this.getPokemonPool(type, pokemon, isMonotype);\r\n\t\twhile (pokemonPool.length && pokemon.length < this.maxTeamSize) {\r\n\t\t\tconst species = this.dex.species.get(this.sampleNoReplace(pokemonPool));\r\n\t\t\tif (!species.exists || !this.randomData[species.id]?.moves) continue;\r\n\t\t\t// Only one Ditto is allowed per battle in Generation 1,\r\n\t\t\t// as it can cause an endless battle if two Dittos are forced\r\n\t\t\t// to face each other.\r\n\t\t\tif (species.id === 'ditto' && this.battleHasDitto) continue;\r\n\r\n\t\t\t// Dynamically scale limits for different team sizes. The default and minimum value is 1.\r\n\t\t\tconst limitFactor = Math.round(this.maxTeamSize / 6) || 1;\r\n\r\n\t\t\tconst tier = species.tier;\r\n\t\t\tswitch (tier) {\r\n\t\t\tcase 'LC':\r\n\t\t\tcase 'NFE':\r\n\t\t\t\t// Don't add pre-evo mon if already 4 or more non-OUs\r\n\t\t\t\t// Regardless, pre-evo mons are slightly less common.\r\n\t\t\t\tif (nuCount >= 4 * limitFactor || this.randomChance(1, 3)) continue;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Uber':\r\n\t\t\t\t// Only allow a single Uber.\r\n\t\t\t\tif (uberCount >= 1 * limitFactor) continue;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\t// OUs are fine. Otherwise 50% chance to skip mon if already 4 or more non-OUs.\r\n\t\t\t\tif (uuTiers.includes(tier) && pokemonPool.length > 1 && (nuCount >= 4 * limitFactor && this.randomChance(1, 2))) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet skip = false;\r\n\r\n\t\t\tif (!isMonotype && !this.forceMonotype) {\r\n\t\t\t\t// Limit 2 of any type as well. Diversity and minor weakness count.\r\n\t\t\t\t// The second of a same type has halved chance of being added.\r\n\t\t\t\tfor (const typeName of species.types) {\r\n\t\t\t\t\tif (typeCount[typeName] >= 2 * limitFactor ||\r\n\t\t\t\t\t\t(typeCount[typeName] >= 1 * limitFactor && this.randomChance(1, 2) && pokemonPool.length > 1)) {\r\n\t\t\t\t\t\tskip = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (skip) {\r\n\t\t\t\t\trejectedButNotInvalidPool.push(species.id);\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// We need a weakness count of spammable attacks to avoid being swept by those.\r\n\t\t\t// Spammable attacks are: Thunderbolt, Psychic, Surf, Blizzard, Earthquake.\r\n\t\t\tconst pokemonWeaknesses = [];\r\n\t\t\tfor (const typeName in weaknessCount) {\r\n\t\t\t\tconst increaseCount = this.dex.getImmunity(typeName, species) && this.dex.getEffectiveness(typeName, species) > 0;\r\n\t\t\t\tif (!increaseCount) continue;\r\n\t\t\t\tif (weaknessCount[typeName] >= 2 * limitFactor) {\r\n\t\t\t\t\tskip = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tpokemonWeaknesses.push(typeName);\r\n\t\t\t}\r\n\r\n\t\t\tif (skip) {\r\n\t\t\t\trejectedButNotInvalidPool.push(species.id);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// The set passes the limitations.\r\n\t\t\tpokemon.push(this.randomSet(species));\r\n\r\n\t\t\t// Now let's increase the counters.\r\n\t\t\t// Type counter.\r\n\t\t\tfor (const typeName of species.types) {\r\n\t\t\t\tif (typeCount[typeName]) {\r\n\t\t\t\t\ttypeCount[typeName]++;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttypeCount[typeName] = 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Weakness counter.\r\n\t\t\tfor (const weakness of pokemonWeaknesses) {\r\n\t\t\t\tweaknessCount[weakness]++;\r\n\t\t\t}\r\n\r\n\t\t\t// Increment tier bias counters.\r\n\t\t\tif (tier === 'Uber') {\r\n\t\t\t\tuberCount++;\r\n\t\t\t} else if (nuTiers.includes(tier)) {\r\n\t\t\t\tnuCount++;\r\n\t\t\t}\r\n\r\n\t\t\t// Ditto check\r\n\t\t\tif (species.id === 'ditto') this.battleHasDitto = true;\r\n\t\t}\r\n\r\n\t\t// if we don't have enough Pok\u00E9mon, go back to rejects, which are already known to not be invalid.\r\n\t\twhile (pokemon.length < this.maxTeamSize && rejectedButNotInvalidPool.length) {\r\n\t\t\tconst species = this.sampleNoReplace(rejectedButNotInvalidPool);\r\n\t\t\tpokemon.push(this.randomSet(species));\r\n\t\t}\r\n\r\n\t\tif (pokemon.length < this.maxTeamSize && pokemon.length < 12 && !isMonotype) {\r\n\t\t\tthrow new Error(`Could not build a random team for ${this.format} (seed=${seed})`);\r\n\t\t}\r\n\r\n\t\treturn pokemon;\r\n\t}\r\n\r\n\tshouldCullMove(move: Move, types: Set, moves: Set, counter: MoveCounter): {cull: boolean} {\r\n\t\tswitch (move.id) {\r\n\t\t// bit redundant to have both, but neither particularly better than the other\r\n\t\tcase 'hydropump':\r\n\t\t\treturn {cull: moves.has('surf')};\r\n\t\tcase 'surf':\r\n\t\t\treturn {cull: moves.has('hydropump')};\r\n\r\n\t\t// other redundancies that aren't handled within the movesets themselves\r\n\t\tcase 'selfdestruct':\r\n\t\t\treturn {cull: moves.has('rest')};\r\n\t\tcase 'rest':\r\n\t\t\treturn {cull: moves.has('selfdestruct')};\r\n\t\tcase 'sharpen': case 'swordsdance':\r\n\t\t\treturn {cull: counter.get('Special') > counter.get('Physical') || !counter.get('Physical') || moves.has('growth')};\r\n\t\tcase 'growth':\r\n\t\t\treturn {cull: counter.get('Special') < counter.get('Physical') || !counter.get('Special') || moves.has('swordsdance')};\r\n\t\tcase 'poisonpowder': case 'stunspore': case 'sleeppowder': case 'toxic':\r\n\t\t\treturn {cull: counter.get('Status') > 1};\r\n\t\t}\r\n\t\treturn {cull: false};\r\n\t}\r\n\r\n\t/**\r\n\t * Random set generation for Gen 1 Random Battles.\r\n\t */\r\n\trandomSet(species: string | Species): RandomTeamsTypes.RandomSet {\r\n\t\tspecies = this.dex.species.get(species);\r\n\t\tif (!species.exists) species = this.dex.species.get('pikachu'); // Because Gen 1.\r\n\r\n\t\tconst data = this.randomData[species.id];\r\n\t\tconst movePool = data.moves?.slice() || [];\r\n\t\tconst moves = new Set();\r\n\t\tconst types = new Set(species.types);\r\n\r\n\t\tconst counter = new MoveCounter();\r\n\r\n\t\t// Moves that boost Attack:\r\n\t\tconst PhysicalSetup = ['swordsdance', 'sharpen'];\r\n\t\t// Moves which boost Special Attack:\r\n\t\tconst SpecialSetup = ['amnesia', 'growth'];\r\n\r\n\t\t// Either add all moves or add none\r\n\t\tif (data.comboMoves && data.comboMoves.length <= this.maxMoveCount && this.randomChance(1, 2)) {\r\n\t\t\tfor (const m of data.comboMoves) moves.add(m);\r\n\t\t}\r\n\r\n\t\t// Add one of the semi-mandatory moves\r\n\t\t// Often, these are used so that the Pokemon only gets one of the less useful moves\r\n\t\tif (moves.size < this.maxMoveCount && data.exclusiveMoves) {\r\n\t\t\tmoves.add(this.sample(data.exclusiveMoves));\r\n\t\t}\r\n\r\n\t\t// Add the mandatory move. SD Mew and Amnesia Snorlax are exceptions.\r\n\t\tif (moves.size < this.maxMoveCount && data.essentialMove) {\r\n\t\t\tmoves.add(data.essentialMove);\r\n\t\t}\r\n\r\n\t\twhile (moves.size < this.maxMoveCount && movePool.length) {\r\n\t\t\t// Choose next 4 moves from learnset/viable moves and add them to moves list:\r\n\t\t\twhile (moves.size < this.maxMoveCount && movePool.length) {\r\n\t\t\t\tconst moveid = this.sampleNoReplace(movePool);\r\n\t\t\t\tmoves.add(moveid);\r\n\t\t\t}\r\n\r\n\t\t\t// Only do move choosing if we have backup moves in the pool...\r\n\t\t\tif (movePool.length) {\r\n\t\t\t\tfor (const setMoveid of moves) {\r\n\t\t\t\t\tconst move = this.dex.moves.get(setMoveid);\r\n\t\t\t\t\tconst moveid = move.id;\r\n\t\t\t\t\tif (!move.damage && !move.damageCallback) counter.add(move.category);\r\n\t\t\t\t\tif (PhysicalSetup.includes(moveid)) counter.add('physicalsetup');\r\n\t\t\t\t\tif (SpecialSetup.includes(moveid)) counter.add('specialsetup');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (const moveid of moves) {\r\n\t\t\t\t\tif (moveid === data.essentialMove) continue;\r\n\t\t\t\t\tconst move = this.dex.moves.get(moveid);\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t(!data.essentialMove || moveid !== data.essentialMove) &&\r\n\t\t\t\t\t\tthis.shouldCullMove(move, types, moves, counter).cull\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tmoves.delete(moveid);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcounter.add(move.category);\r\n\t\t\t\t}\r\n\t\t\t} // End of the check for more than 4 moves on moveset.\r\n\t\t}\r\n\r\n\t\tconst levelScale: {[k: string]: number} = {\r\n\t\t\tLC: 88,\r\n\t\t\tNFE: 80,\r\n\t\t\tPU: 77,\r\n\t\t\tNU: 77,\r\n\t\t\tNUBL: 76,\r\n\t\t\tUU: 74,\r\n\t\t\tUUBL: 71,\r\n\t\t\tOU: 68,\r\n\t\t\tUber: 65,\r\n\t\t};\r\n\r\n\t\tconst level = this.adjustLevel || data.level || levelScale[species.tier] || 80;\r\n\r\n\t\tconst evs = {hp: 255, atk: 255, def: 255, spa: 255, spd: 255, spe: 255};\r\n\t\tconst ivs = {hp: 30, atk: 30, def: 30, spa: 30, spd: 30, spe: 30};\r\n\r\n\t\t// Should be able to use Substitute four times from full HP without fainting\r\n\t\tif (moves.has('substitute')) {\r\n\t\t\twhile (evs.hp > 3) {\r\n\t\t\t\tconst hp = Math.floor(Math.floor(2 * species.baseStats.hp + ivs.hp + Math.floor(evs.hp / 4) + 100) * level / 100 + 10);\r\n\t\t\t\tif (hp % 4 !== 0) break;\r\n\t\t\t\tevs.hp -= 4;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tname: species.name,\r\n\t\t\tspecies: species.name,\r\n\t\t\tmoves: Array.from(moves),\r\n\t\t\tability: 'No Ability',\r\n\t\t\tevs,\r\n\t\t\tivs,\r\n\t\t\titem: '',\r\n\t\t\tlevel,\r\n\t\t\tshiny: false,\r\n\t\t\tgender: false,\r\n\t\t};\r\n\t}\r\n\r\n\trandomHCTeam(): PokemonSet[] {\r\n\t\tthis.enforceNoDirectCustomBanlistChanges();\r\n\r\n\t\tconst team = [];\r\n\r\n\t\tconst movePool = [...this.dex.moves.all()];\r\n\t\tconst typesPool = ['Bird', ...this.dex.types.names()];\r\n\r\n\t\tconst randomN = this.randomNPokemon(this.maxTeamSize);\r\n\t\tconst hackmonsCup: {[k: string]: HackmonsCupEntry} = {};\r\n\r\n\t\tfor (const forme of randomN) {\r\n\t\t\t// Choose forme\r\n\t\t\tconst species = this.dex.species.get(forme);\r\n\t\t\tif (!hackmonsCup[species.id]) {\r\n\t\t\t\thackmonsCup[species.id] = {\r\n\t\t\t\t\ttypes: [this.sample(typesPool), this.sample(typesPool)],\r\n\t\t\t\t\tbaseStats: {\r\n\t\t\t\t\t\thp: Utils.clampIntRange(this.random(256), 1),\r\n\t\t\t\t\t\tatk: Utils.clampIntRange(this.random(256), 1),\r\n\t\t\t\t\t\tdef: Utils.clampIntRange(this.random(256), 1),\r\n\t\t\t\t\t\tspa: Utils.clampIntRange(this.random(256), 1),\r\n\t\t\t\t\t\tspd: 0,\r\n\t\t\t\t\t\tspe: Utils.clampIntRange(this.random(256), 1),\r\n\t\t\t\t\t},\r\n\t\t\t\t};\r\n\t\t\t\tif (this.forceMonotype && !hackmonsCup[species.id].types.includes(this.forceMonotype)) {\r\n\t\t\t\t\thackmonsCup[species.id].types[1] = this.forceMonotype;\r\n\t\t\t\t}\r\n\t\t\t\thackmonsCup[species.id].baseStats.spd = hackmonsCup[species.id].baseStats.spa;\r\n\t\t\t}\r\n\t\t\tif (hackmonsCup[species.id].types[0] === hackmonsCup[species.id].types[1]) {\r\n\t\t\t\thackmonsCup[species.id].types.splice(1, 1);\r\n\t\t\t}\r\n\r\n\t\t\t// Random unique moves\r\n\t\t\tconst moves = [];\r\n\t\t\tdo {\r\n\t\t\t\tconst move = this.sampleNoReplace(movePool);\r\n\t\t\t\tif (move.gen <= this.gen && !move.isNonstandard && !move.name.startsWith('Hidden Power ')) {\r\n\t\t\t\t\tmoves.push(move.id);\r\n\t\t\t\t}\r\n\t\t\t} while (moves.length < this.maxMoveCount);\r\n\r\n\t\t\t// Random EVs\r\n\t\t\tconst evs = {\r\n\t\t\t\thp: this.random(256),\r\n\t\t\t\tatk: this.random(256),\r\n\t\t\t\tdef: this.random(256),\r\n\t\t\t\tspa: this.random(256),\r\n\t\t\t\tspd: 0,\r\n\t\t\t\tspe: this.random(256),\r\n\t\t\t};\r\n\t\t\tevs['spd'] = evs['spa'];\r\n\r\n\t\t\t// Random DVs\r\n\t\t\tconst ivs: StatsTable = {\r\n\t\t\t\thp: 0,\r\n\t\t\t\tatk: this.random(16),\r\n\t\t\t\tdef: this.random(16),\r\n\t\t\t\tspa: this.random(16),\r\n\t\t\t\tspd: 0,\r\n\t\t\t\tspe: this.random(16),\r\n\t\t\t};\r\n\t\t\tivs[\"hp\"] = (ivs[\"atk\"] % 2) * 16 + (ivs[\"def\"] % 2) * 8 + (ivs[\"spe\"] % 2) * 4 + (ivs[\"spa\"] % 2) * 2;\r\n\t\t\tfor (const iv in ivs) {\r\n\t\t\t\tif (iv === 'hp' || iv === 'spd') continue;\r\n\t\t\t\tivs[iv as keyof StatsTable] *= 2;\r\n\t\t\t}\r\n\t\t\tivs['spd'] = ivs['spa'];\r\n\r\n\t\t\t// Level balance\r\n\t\t\tconst mbstmin = 425;\r\n\t\t\tconst baseStats = hackmonsCup[species.id].baseStats;\r\n\t\t\tconst calcStat = (statName: StatID, lvl?: number) => {\r\n\t\t\t\tif (lvl) {\r\n\t\t\t\t\treturn Math.floor(Math.floor(2 * baseStats[statName] + ivs[statName] + Math.floor(evs[statName] / 4)) * lvl / 100 + 5);\r\n\t\t\t\t}\r\n\t\t\t\treturn Math.floor(2 * baseStats[statName] + ivs[statName] + Math.floor(evs[statName] / 4)) + 5;\r\n\t\t\t};\r\n\t\t\tlet mbst = 0;\r\n\t\t\tfor (const statName of Object.keys(baseStats)) {\r\n\t\t\t\tmbst += calcStat(statName as StatID);\r\n\t\t\t\tif (statName === 'hp') mbst += 5;\r\n\t\t\t}\r\n\t\t\tlet level;\r\n\t\t\tif (this.adjustLevel) {\r\n\t\t\t\tlevel = this.adjustLevel;\r\n\t\t\t} else {\r\n\t\t\t\tlevel = Math.floor(100 * mbstmin / mbst);\r\n\t\t\t\twhile (level < 100) {\r\n\t\t\t\t\tfor (const statName of Object.keys(baseStats)) {\r\n\t\t\t\t\t\tmbst += calcStat(statName as StatID, level);\r\n\t\t\t\t\t\tif (statName === 'hp') mbst += 5;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mbst >= mbstmin) break;\r\n\t\t\t\t\tlevel++;\r\n\t\t\t\t}\r\n\t\t\t\tif (level > 100) level = 100;\r\n\t\t\t}\r\n\r\n\t\t\tteam.push({\r\n\t\t\t\tname: species.baseSpecies,\r\n\t\t\t\tspecies: species.name,\r\n\t\t\t\tgender: species.gender,\r\n\t\t\t\titem: '',\r\n\t\t\t\tability: 'No Ability',\r\n\t\t\t\tmoves,\r\n\t\t\t\tevs,\r\n\t\t\t\tivs,\r\n\t\t\t\tnature: '',\r\n\t\t\t\tlevel,\r\n\t\t\t\tshiny: false,\r\n\t\t\t\t// Hacky but the only way to communicate stats/level generation properly\r\n\t\t\t\thc: hackmonsCup[species.id],\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn team;\r\n\t}\r\n}\r\n\r\nexport default RandomGen1Teams;\r\n"], "mappings": "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", "names": ["import_random_teams", "RandomGen2Teams"] }