Spaces:
Running
Running
{ | |
"version": 3, | |
"sources": ["../../sim/teams.ts"], | |
"sourcesContent": ["/**\n * Teams\n * Pokemon Showdown - http://pokemonshowdown.com/\n *\n * Functions for converting and generating teams.\n *\n * @license MIT\n */\n\nimport { Dex, toID } from './dex';\nimport type { PRNG, PRNGSeed } from './prng';\n\nexport interface PokemonSet {\n\t/**\n\t * Nickname. Should be identical to its base species if not specified\n\t * by the player, e.g. \"Minior\".\n\t */\n\tname: string;\n\t/**\n\t * Species name (including forme if applicable), e.g. \"Minior-Red\".\n\t * This should always be converted to an id before use.\n\t */\n\tspecies: string;\n\t/**\n\t * This can be an id, e.g. \"whiteherb\" or a full name, e.g. \"White Herb\".\n\t * This should always be converted to an id before use.\n\t */\n\titem: string;\n\t/**\n\t * This can be an id, e.g. \"shieldsdown\" or a full name,\n\t * e.g. \"Shields Down\".\n\t * This should always be converted to an id before use.\n\t */\n\tability: string;\n\t/**\n\t * Each move can be an id, e.g. \"shellsmash\" or a full name,\n\t * e.g. \"Shell Smash\"\n\t * These should always be converted to ids before use.\n\t */\n\tmoves: string[];\n\t/**\n\t * This can be an id, e.g. \"adamant\" or a full name, e.g. \"Adamant\".\n\t * This should always be converted to an id before use.\n\t */\n\tnature: string;\n\tgender: string;\n\t/**\n\t * Effort Values, used in stat calculation.\n\t * These must be between 0 and 255, inclusive.\n\t *\n\t * Also used to store AVs for Let's Go\n\t */\n\tevs: StatsTable;\n\t/**\n\t * Individual Values, used in stat calculation.\n\t * These must be between 0 and 31, inclusive.\n\t *\n\t * These are also used as DVs, or determinant values, in Gens\n\t * 1 and 2, which are represented as even numbers from 0 to 30.\n\t *\n\t * In Gen 2-6, these must match the Hidden Power type.\n\t *\n\t * In Gen 7+, Bottle Caps means these can either match the\n\t * Hidden Power type or 31.\n\t */\n\tivs: StatsTable;\n\t/**\n\t * This is usually between 1 and 100, inclusive,\n\t * but the simulator supports levels up to 9999 for testing purposes.\n\t */\n\tlevel: number;\n\t/**\n\t * While having no direct competitive effect, certain Pokemon cannot\n\t * be legally obtained as shiny, either as a whole or with certain\n\t * event-only abilities or moves.\n\t */\n\tshiny?: boolean;\n\t/**\n\t * This is technically \"Friendship\", but the community calls this\n\t * \"Happiness\".\n\t *\n\t * It's used to calculate the power of the moves Return and Frustration.\n\t * This value must be between 0 and 255, inclusive.\n\t */\n\thappiness?: number;\n\t/**\n\t * The pokeball this Pokemon is in. Like shininess, this property\n\t * has no direct competitive effects, but has implications for\n\t * event legality. For example, any Rayquaza that knows V-Create\n\t * must be sent out from a Cherish Ball.\n\t *\n\t * TODO: actually support this in the validator, switching animations,\n\t * and the teambuilder.\n\t */\n\tpokeball?: string;\n\t/**\n\t * Hidden Power type. Optional in older gens, but used in Gen 7+\n\t * because `ivs` contain post-Battle-Cap values.\n\t */\n\thpType?: string;\n\t/**\n\t * Dynamax Level. Affects the amount of HP gained when Dynamaxed.\n\t * This value must be between 0 and 10, inclusive.\n\t */\n\tdynamaxLevel?: number;\n\tgigantamax?: boolean;\n\t/**\n\t * Tera Type\n\t */\n\tteraType?: string;\n}\n\nexport const Teams = new class Teams {\n\tpack(team: PokemonSet[] | null): string {\n\t\tif (!team) return '';\n\n\t\tfunction getIv(ivs: StatsTable, s: keyof StatsTable): string {\n\t\t\treturn ivs[s] === 31 || ivs[s] === undefined ? '' : ivs[s].toString();\n\t\t}\n\n\t\tlet buf = '';\n\t\tfor (const set of team) {\n\t\t\tif (buf) buf += ']';\n\n\t\t\t// name\n\t\t\tbuf += (set.name || set.species);\n\n\t\t\t// species\n\t\t\tconst id = this.packName(set.species || set.name);\n\t\t\tbuf += `|${this.packName(set.name || set.species) === id ? '' : id}`;\n\n\t\t\t// item\n\t\t\tbuf += `|${this.packName(set.item)}`;\n\n\t\t\t// ability\n\t\t\tbuf += `|${this.packName(set.ability)}`;\n\n\t\t\t// moves\n\t\t\tbuf += '|' + set.moves.map(this.packName).join(',');\n\n\t\t\t// nature\n\t\t\tbuf += `|${set.nature || ''}`;\n\n\t\t\t// evs\n\t\t\tlet evs = '|';\n\t\t\tif (set.evs) {\n\t\t\t\tevs = `|${set.evs['hp'] || ''},${set.evs['atk'] || ''},${set.evs['def'] || ''},` +\n\t\t\t\t\t`${set.evs['spa'] || ''},${set.evs['spd'] || ''},${set.evs['spe'] || ''}`;\n\t\t\t}\n\t\t\tif (evs === '|,,,,,') {\n\t\t\t\tbuf += '|';\n\t\t\t} else {\n\t\t\t\tbuf += evs;\n\t\t\t}\n\n\t\t\t// gender\n\t\t\tif (set.gender) {\n\t\t\t\tbuf += `|${set.gender}`;\n\t\t\t} else {\n\t\t\t\tbuf += '|';\n\t\t\t}\n\n\t\t\t// ivs\n\t\t\tlet ivs = '|';\n\t\t\tif (set.ivs) {\n\t\t\t\tivs = `|${getIv(set.ivs, 'hp')},${getIv(set.ivs, 'atk')},${getIv(set.ivs, 'def')},` +\n\t\t\t\t\t`${getIv(set.ivs, 'spa')},${getIv(set.ivs, 'spd')},${getIv(set.ivs, 'spe')}`;\n\t\t\t}\n\t\t\tif (ivs === '|,,,,,') {\n\t\t\t\tbuf += '|';\n\t\t\t} else {\n\t\t\t\tbuf += ivs;\n\t\t\t}\n\n\t\t\t// shiny\n\t\t\tif (set.shiny) {\n\t\t\t\tbuf += '|S';\n\t\t\t} else {\n\t\t\t\tbuf += '|';\n\t\t\t}\n\n\t\t\t// level\n\t\t\tif (set.level && set.level !== 100) {\n\t\t\t\tbuf += `|${set.level}`;\n\t\t\t} else {\n\t\t\t\tbuf += '|';\n\t\t\t}\n\n\t\t\t// happiness\n\t\t\tif (set.happiness !== undefined && set.happiness !== 255) {\n\t\t\t\tbuf += `|${set.happiness}`;\n\t\t\t} else {\n\t\t\t\tbuf += '|';\n\t\t\t}\n\n\t\t\tif (set.pokeball || set.hpType || set.gigantamax ||\n\t\t\t\t(set.dynamaxLevel !== undefined && set.dynamaxLevel !== 10) || set.teraType) {\n\t\t\t\tbuf += `,${set.hpType || ''}`;\n\t\t\t\tbuf += `,${this.packName(set.pokeball || '')}`;\n\t\t\t\tbuf += `,${set.gigantamax ? 'G' : ''}`;\n\t\t\t\tbuf += `,${set.dynamaxLevel !== undefined && set.dynamaxLevel !== 10 ? set.dynamaxLevel : ''}`;\n\t\t\t\tbuf += `,${set.teraType || ''}`;\n\t\t\t}\n\t\t}\n\n\t\treturn buf;\n\t}\n\n\tunpack(buf: string): PokemonSet[] | null {\n\t\tif (!buf) return null;\n\t\tif (typeof buf !== 'string') return buf;\n\t\tif (buf.startsWith('[') && buf.endsWith(']')) {\n\t\t\ttry {\n\t\t\t\tbuf = this.pack(JSON.parse(buf));\n\t\t\t} catch {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tconst team = [];\n\t\tlet i = 0;\n\t\tlet j = 0;\n\n\t\t// limit to 24\n\t\tfor (let count = 0; count < 24; count++) {\n\t\t\tconst set: PokemonSet = {} as PokemonSet;\n\t\t\tteam.push(set);\n\n\t\t\t// name\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tset.name = buf.substring(i, j);\n\t\t\ti = j + 1;\n\n\t\t\t// species\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tset.species = this.unpackName(buf.substring(i, j), Dex.species) || set.name;\n\t\t\ti = j + 1;\n\n\t\t\t// item\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tset.item = this.unpackName(buf.substring(i, j), Dex.items);\n\t\t\ti = j + 1;\n\n\t\t\t// ability\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tconst ability = buf.substring(i, j);\n\t\t\tconst species = Dex.species.get(set.species);\n\t\t\tset.ability = ['', '0', '1', 'H', 'S'].includes(ability) ?\n\t\t\t\tspecies.abilities[ability as '0' || '0'] || (ability === '' ? '' : '!!!ERROR!!!') :\n\t\t\t\tthis.unpackName(ability, Dex.abilities);\n\t\t\ti = j + 1;\n\n\t\t\t// moves\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tset.moves = buf.substring(i, j).split(',', 24).map(name => this.unpackName(name, Dex.moves));\n\t\t\ti = j + 1;\n\n\t\t\t// nature\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tset.nature = this.unpackName(buf.substring(i, j), Dex.natures);\n\t\t\ti = j + 1;\n\n\t\t\t// evs\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tif (j !== i) {\n\t\t\t\tconst evs = buf.substring(i, j).split(',', 6);\n\t\t\t\tset.evs = {\n\t\t\t\t\thp: Number(evs[0]) || 0,\n\t\t\t\t\tatk: Number(evs[1]) || 0,\n\t\t\t\t\tdef: Number(evs[2]) || 0,\n\t\t\t\t\tspa: Number(evs[3]) || 0,\n\t\t\t\t\tspd: Number(evs[4]) || 0,\n\t\t\t\t\tspe: Number(evs[5]) || 0,\n\t\t\t\t};\n\t\t\t}\n\t\t\ti = j + 1;\n\n\t\t\t// gender\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tif (i !== j) set.gender = buf.substring(i, j);\n\t\t\ti = j + 1;\n\n\t\t\t// ivs\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tif (j !== i) {\n\t\t\t\tconst ivs = buf.substring(i, j).split(',', 6);\n\t\t\t\tset.ivs = {\n\t\t\t\t\thp: ivs[0] === '' ? 31 : Number(ivs[0]) || 0,\n\t\t\t\t\tatk: ivs[1] === '' ? 31 : Number(ivs[1]) || 0,\n\t\t\t\t\tdef: ivs[2] === '' ? 31 : Number(ivs[2]) || 0,\n\t\t\t\t\tspa: ivs[3] === '' ? 31 : Number(ivs[3]) || 0,\n\t\t\t\t\tspd: ivs[4] === '' ? 31 : Number(ivs[4]) || 0,\n\t\t\t\t\tspe: ivs[5] === '' ? 31 : Number(ivs[5]) || 0,\n\t\t\t\t};\n\t\t\t}\n\t\t\ti = j + 1;\n\n\t\t\t// shiny\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tif (i !== j) set.shiny = true;\n\t\t\ti = j + 1;\n\n\t\t\t// level\n\t\t\tj = buf.indexOf('|', i);\n\t\t\tif (j < 0) return null;\n\t\t\tif (i !== j) set.level = parseInt(buf.substring(i, j));\n\t\t\ti = j + 1;\n\n\t\t\t// happiness\n\t\t\tj = buf.indexOf(']', i);\n\t\t\tlet misc;\n\t\t\tif (j < 0) {\n\t\t\t\tif (i < buf.length) misc = buf.substring(i).split(',', 6);\n\t\t\t} else {\n\t\t\t\tif (i !== j) misc = buf.substring(i, j).split(',', 6);\n\t\t\t}\n\t\t\tif (misc) {\n\t\t\t\tset.happiness = (misc[0] ? Number(misc[0]) : 255);\n\t\t\t\tset.hpType = misc[1] || '';\n\t\t\t\tset.pokeball = this.unpackName(misc[2] || '', Dex.items);\n\t\t\t\tset.gigantamax = !!misc[3];\n\t\t\t\tset.dynamaxLevel = (misc[4] ? Number(misc[4]) : 10);\n\t\t\t\tset.teraType = misc[5];\n\t\t\t}\n\t\t\tif (j < 0) break;\n\t\t\ti = j + 1;\n\t\t}\n\n\t\treturn team;\n\t}\n\n\t/** Very similar to toID but without the lowercase conversion */\n\tpackName(this: void, name: string | undefined | null) {\n\t\tif (!name) return '';\n\t\treturn name.replace(/[^A-Za-z0-9]+/g, '');\n\t}\n\n\t/** Will not entirely recover a packed name, but will be a pretty readable guess */\n\tunpackName(name: string, dexTable?: { get: (name: string) => AnyObject }) {\n\t\tif (!name) return '';\n\t\tif (dexTable) {\n\t\t\tconst obj = dexTable.get(name);\n\t\t\tif (obj.exists) return obj.name;\n\t\t}\n\t\treturn name.replace(/([0-9]+)/g, ' $1 ').replace(/([A-Z])/g, ' $1').replace(/[ ][ ]/g, ' ').trim();\n\t}\n\n\t/**\n\t * Exports a team in human-readable PS export format\n\t */\n\texport(team: PokemonSet[], options?: { hideStats?: boolean }) {\n\t\tlet output = '';\n\t\tfor (const set of team) {\n\t\t\toutput += this.exportSet(set, options) + `\\n`;\n\t\t}\n\t\treturn output;\n\t}\n\n\texportSet(set: PokemonSet, { hideStats }: { hideStats?: boolean } = {}) {\n\t\tlet out = ``;\n\n\t\t// core\n\t\tif (set.name && set.name !== set.species) {\n\t\t\tout += `${set.name} (${set.species})`;\n\t\t} else {\n\t\t\tout += set.species;\n\t\t}\n\t\tif (set.gender === 'M') out += ` (M)`;\n\t\tif (set.gender === 'F') out += ` (F)`;\n\t\tif (set.item) out += ` @ ${set.item}`;\n\t\tout += ` \\n`;\n\n\t\tif (set.ability) {\n\t\t\tout += `Ability: ${set.ability} \\n`;\n\t\t}\n\n\t\t// details\n\t\tif (set.level && set.level !== 100) {\n\t\t\tout += `Level: ${set.level} \\n`;\n\t\t}\n\t\tif (set.shiny) {\n\t\t\tout += `Shiny: Yes \\n`;\n\t\t}\n\t\tif (typeof set.happiness === 'number' && set.happiness !== 255 && !isNaN(set.happiness)) {\n\t\t\tout += `Happiness: ${set.happiness} \\n`;\n\t\t}\n\t\tif (set.pokeball) {\n\t\t\tout += `Pokeball: ${set.pokeball} \\n`;\n\t\t}\n\t\tif (set.hpType) {\n\t\t\tout += `Hidden Power: ${set.hpType} \\n`;\n\t\t}\n\t\tif (typeof set.dynamaxLevel === 'number' && set.dynamaxLevel !== 10 && !isNaN(set.dynamaxLevel)) {\n\t\t\tout += `Dynamax Level: ${set.dynamaxLevel} \\n`;\n\t\t}\n\t\tif (set.gigantamax) {\n\t\t\tout += `Gigantamax: Yes \\n`;\n\t\t}\n\t\tif (set.teraType) {\n\t\t\tout += `Tera Type: ${set.teraType} \\n`;\n\t\t}\n\n\t\t// stats\n\t\tif (!hideStats) {\n\t\t\tif (set.evs) {\n\t\t\t\tconst stats = Dex.stats.ids().map(\n\t\t\t\t\tstat => set.evs[stat] ?\n\t\t\t\t\t\t`${set.evs[stat]} ${Dex.stats.shortNames[stat]}` : ``\n\t\t\t\t).filter(Boolean);\n\t\t\t\tif (stats.length) {\n\t\t\t\t\tout += `EVs: ${stats.join(\" / \")} \\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (set.nature) {\n\t\t\t\tout += `${set.nature} Nature \\n`;\n\t\t\t}\n\t\t\tif (set.ivs) {\n\t\t\t\tconst stats = Dex.stats.ids().map(\n\t\t\t\t\tstat => (set.ivs[stat] !== 31 && set.ivs[stat] !== undefined) ?\n\t\t\t\t\t\t`${set.ivs[stat] || 0} ${Dex.stats.shortNames[stat]}` : ``\n\t\t\t\t).filter(Boolean);\n\t\t\t\tif (stats.length) {\n\t\t\t\t\tout += `IVs: ${stats.join(\" / \")} \\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// moves\n\t\tfor (let move of set.moves) {\n\t\t\tif (move.startsWith(`Hidden Power `) && move.charAt(13) !== '[') {\n\t\t\t\tmove = `Hidden Power [${move.slice(13)}]`;\n\t\t\t}\n\t\t\tout += `- ${move} \\n`;\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tparseExportedTeamLine(line: string, isFirstLine: boolean, set: PokemonSet, aggressive?: boolean) {\n\t\tif (isFirstLine) {\n\t\t\tlet item;\n\t\t\t[line, item] = line.split(' @ ');\n\t\t\tif (item) {\n\t\t\t\tset.item = item;\n\t\t\t\tif (toID(set.item) === 'noitem') set.item = '';\n\t\t\t}\n\t\t\tif (line.endsWith(' (M)')) {\n\t\t\t\tset.gender = 'M';\n\t\t\t\tline = line.slice(0, -4);\n\t\t\t}\n\t\t\tif (line.endsWith(' (F)')) {\n\t\t\t\tset.gender = 'F';\n\t\t\t\tline = line.slice(0, -4);\n\t\t\t}\n\t\t\tif (line.endsWith(')') && line.includes('(')) {\n\t\t\t\tconst [name, species] = line.slice(0, -1).split('(');\n\t\t\t\tset.species = Dex.species.get(species).name;\n\t\t\t\tset.name = name.trim();\n\t\t\t} else {\n\t\t\t\tset.species = Dex.species.get(line).name;\n\t\t\t\tset.name = '';\n\t\t\t}\n\t\t} else if (line.startsWith('Trait: ')) {\n\t\t\tline = line.slice(7);\n\t\t\tset.ability = aggressive ? toID(line) : line;\n\t\t} else if (line.startsWith('Ability: ')) {\n\t\t\tline = line.slice(9);\n\t\t\tset.ability = aggressive ? toID(line) : line;\n\t\t} else if (line === 'Shiny: Yes') {\n\t\t\tset.shiny = true;\n\t\t} else if (line.startsWith('Level: ')) {\n\t\t\tline = line.slice(7);\n\t\t\tset.level = +line;\n\t\t} else if (line.startsWith('Happiness: ')) {\n\t\t\tline = line.slice(11);\n\t\t\tset.happiness = +line;\n\t\t} else if (line.startsWith('Pokeball: ')) {\n\t\t\tline = line.slice(10);\n\t\t\tset.pokeball = aggressive ? toID(line) : line;\n\t\t} else if (line.startsWith('Hidden Power: ')) {\n\t\t\tline = line.slice(14);\n\t\t\tset.hpType = aggressive ? toID(line) : line;\n\t\t} else if (line.startsWith('Tera Type: ')) {\n\t\t\tline = line.slice(11);\n\t\t\tset.teraType = aggressive ? line.replace(/[^a-zA-Z0-9]/g, '') : line;\n\t\t} else if (line === 'Gigantamax: Yes') {\n\t\t\tset.gigantamax = true;\n\t\t} else if (line.startsWith('EVs: ')) {\n\t\t\tline = line.slice(5);\n\t\t\tconst evLines = line.split('/');\n\t\t\tset.evs = { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 };\n\t\t\tfor (const evLine of evLines) {\n\t\t\t\tconst [statValue, statName] = evLine.trim().split(' ');\n\t\t\t\tconst statid = Dex.stats.getID(statName);\n\t\t\t\tif (!statid) continue;\n\t\t\t\tconst value = parseInt(statValue);\n\t\t\t\tset.evs[statid] = value;\n\t\t\t}\n\t\t} else if (line.startsWith('IVs: ')) {\n\t\t\tline = line.slice(5);\n\t\t\tconst ivLines = line.split('/');\n\t\t\tset.ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 };\n\t\t\tfor (const ivLine of ivLines) {\n\t\t\t\tconst [statValue, statName] = ivLine.trim().split(' ');\n\t\t\t\tconst statid = Dex.stats.getID(statName);\n\t\t\t\tif (!statid) continue;\n\t\t\t\tlet value = parseInt(statValue);\n\t\t\t\tif (isNaN(value)) value = 31;\n\t\t\t\tset.ivs[statid] = value;\n\t\t\t}\n\t\t} else if (/^[A-Za-z]+ (N|n)ature/.test(line)) {\n\t\t\tlet natureIndex = line.indexOf(' Nature');\n\t\t\tif (natureIndex === -1) natureIndex = line.indexOf(' nature');\n\t\t\tif (natureIndex === -1) return;\n\t\t\tline = line.substr(0, natureIndex);\n\t\t\tif (line !== 'undefined') set.nature = aggressive ? toID(line) : line;\n\t\t} else if (line.startsWith('-') || line.startsWith('~')) {\n\t\t\tline = line.slice(line.charAt(1) === ' ' ? 2 : 1);\n\t\t\tif (line.startsWith('Hidden Power [')) {\n\t\t\t\tconst hpType = line.slice(14, -1);\n\t\t\t\tline = 'Hidden Power ' + hpType;\n\t\t\t\tif (!set.ivs && Dex.types.isName(hpType)) {\n\t\t\t\t\tset.ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 };\n\t\t\t\t\tconst hpIVs = Dex.types.get(hpType).HPivs || {};\n\t\t\t\t\tfor (const statid in hpIVs) {\n\t\t\t\t\t\tset.ivs[statid as StatID] = hpIVs[statid as StatID]!;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (line === 'Frustration' && set.happiness === undefined) {\n\t\t\t\tset.happiness = 0;\n\t\t\t}\n\t\t\tset.moves.push(line);\n\t\t}\n\t}\n\t/** Accepts a team in any format (JSON, packed, or exported) */\n\timport(buffer: string, aggressive?: boolean): PokemonSet[] | null {\n\t\tconst sanitize = aggressive ? toID : Dex.getName;\n\t\tif (buffer.startsWith('[')) {\n\t\t\ttry {\n\t\t\t\tconst team = JSON.parse(buffer);\n\t\t\t\tif (!Array.isArray(team)) throw new Error(`Team should be an Array but isn't`);\n\t\t\t\tfor (const set of team) {\n\t\t\t\t\tset.name = sanitize(set.name);\n\t\t\t\t\tset.species = sanitize(set.species);\n\t\t\t\t\tset.item = sanitize(set.item);\n\t\t\t\t\tset.ability = sanitize(set.ability);\n\t\t\t\t\tset.gender = sanitize(set.gender);\n\t\t\t\t\tset.nature = sanitize(set.nature);\n\t\t\t\t\tconst evs = { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 };\n\t\t\t\t\tif (set.evs) {\n\t\t\t\t\t\tfor (const statid in evs) {\n\t\t\t\t\t\t\tif (typeof set.evs[statid] === 'number') evs[statid as StatID] = set.evs[statid];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tset.evs = evs;\n\t\t\t\t\tconst ivs = { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 };\n\t\t\t\t\tif (set.ivs) {\n\t\t\t\t\t\tfor (const statid in ivs) {\n\t\t\t\t\t\t\tif (typeof set.ivs[statid] === 'number') ivs[statid as StatID] = set.ivs[statid];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tset.ivs = ivs;\n\t\t\t\t\tif (!Array.isArray(set.moves)) {\n\t\t\t\t\t\tset.moves = [];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tset.moves = set.moves.map(sanitize);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn team;\n\t\t\t} catch {}\n\t\t}\n\n\t\tconst lines = buffer.split(\"\\n\");\n\n\t\tconst sets: PokemonSet[] = [];\n\t\tlet curSet: PokemonSet | null = null;\n\n\t\twhile (lines.length && !lines[0]) lines.shift();\n\t\twhile (lines.length && !lines[lines.length - 1]) lines.pop();\n\n\t\tif (lines.length === 1 && lines[0].includes('|')) {\n\t\t\treturn this.unpack(lines[0]);\n\t\t}\n\t\tfor (let line of lines) {\n\t\t\tline = line.trim();\n\t\t\tif (line === '' || line === '---') {\n\t\t\t\tcurSet = null;\n\t\t\t} else if (line.startsWith('===')) {\n\t\t\t\t// team backup format; ignore\n\t\t\t} else if (!curSet) {\n\t\t\t\tcurSet = {\n\t\t\t\t\tname: '', species: '', item: '', ability: '', gender: '',\n\t\t\t\t\tnature: '',\n\t\t\t\t\tevs: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n\t\t\t\t\tivs: { hp: 31, atk: 31, def: 31, spa: 31, spd: 31, spe: 31 },\n\t\t\t\t\tlevel: 100,\n\t\t\t\t\tmoves: [],\n\t\t\t\t};\n\t\t\t\tsets.push(curSet);\n\t\t\t\tthis.parseExportedTeamLine(line, true, curSet, aggressive);\n\t\t\t} else {\n\t\t\t\tthis.parseExportedTeamLine(line, false, curSet, aggressive);\n\t\t\t}\n\t\t}\n\t\treturn sets;\n\t}\n\n\tgetGenerator(format: Format | string, seed: PRNG | PRNGSeed | null = null) {\n\t\tlet TeamGenerator;\n\t\tformat = Dex.formats.get(format);\n\t\tconst formatID = toID(format);\n\t\tif (formatID.includes('gen9computergeneratedteams')) {\n\t\t\tTeamGenerator = require(Dex.forFormat(format).dataDir + '/cg-teams').default;\n\t\t} else if (formatID.includes('gen9superstaffbrosultimate')) {\n\t\t\tTeamGenerator = require(`../data/mods/gen9ssb/random-teams`).default;\n\t\t} else if (formatID.includes('gen9babyrandombattle')) {\n\t\t\tTeamGenerator = require(`../data/random-battles/gen9baby/teams`).default;\n\t\t} else if (formatID.includes('gen9randombattle') && format.ruleTable?.has('+pokemontag:cap')) {\n\t\t\tTeamGenerator = require(`../data/random-battles/gen9cap/teams`).default;\n\t\t} else {\n\t\t\tTeamGenerator = require(`../data/random-battles/${format.mod}/teams`).default;\n\t\t}\n\n\t\treturn new TeamGenerator(format, seed);\n\t}\n\n\tgenerate(format: Format | string, options: PlayerOptions | null = null): PokemonSet[] {\n\t\treturn this.getGenerator(format, options?.seed).getTeam(options);\n\t}\n};\n\nexport default Teams;\n"], | |
"mappings": "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", | |
"names": ["Teams"] | |
} | |