Spaces:
Running
Running
{ | |
"version": 3, | |
"sources": ["../../../../data/mods/randomroulette/scripts.ts"], | |
"sourcesContent": ["import { PRNG } from '../../../sim/prng';\nimport { Pokemon } from '../../../sim/pokemon';\nimport { Teams } from '../../../sim/teams';\n\nexport const Scripts: ModdedBattleScriptsData = {\n\tstart() {\n\t\t// Choose a random format\n\t\tthis.gen = this.random(1, 10);\n\t\tconst format = Dex.formats.get(`gen${this.gen}randombattle@@@${(this.format.customRules || []).join(',')}`);\n\t\tthis.dex = Dex.forFormat(format);\n\t\tthis.ruleTable = this.dex.formats.getRuleTable(format);\n\t\tthis.teamGenerator = Teams.getGenerator(format);\n\n\t\tthis.actions.battle = this;\n\t\tthis.actions.dex = this.dex;\n\t\tif (this.actions.dex.data.Scripts.actions) Object.assign(this.actions, this.actions.dex.data.Scripts.actions);\n\t\tif (format.actions) Object.assign(this.actions, format.actions);\n\n\t\tfor (const i in this.dex.data.Scripts) {\n\t\t\tconst entry = this.dex.data.Scripts[i];\n\t\t\tif (typeof entry === 'function') (this as any)[i] = entry;\n\t\t}\n\n\t\tfor (const rule of this.ruleTable.keys()) {\n\t\t\tif ('+*-!'.includes(rule.charAt(0))) continue;\n\t\t\tconst subFormat = this.dex.formats.get(rule);\n\t\t\tif (subFormat.exists) {\n\t\t\t\tconst hasEventHandler = Object.keys(subFormat).some(\n\t\t\t\t\t// skip event handlers that are handled elsewhere\n\t\t\t\t\tval => val.startsWith('on') && ![\n\t\t\t\t\t\t'onBegin', 'onTeamPreview', 'onBattleStart', 'onValidateRule', 'onValidateTeam', 'onChangeSet', 'onValidateSet',\n\t\t\t\t\t].includes(val)\n\t\t\t\t);\n\t\t\t\tif (hasEventHandler) this.field.addPseudoWeather(rule);\n\t\t\t}\n\t\t}\n\n\t\t// Generate teams using the format\n\t\tfor (const side of this.sides) {\n\t\t\tthis.teamGenerator.setSeed(PRNG.generateSeed());\n\n\t\t\tconst team = this.teamGenerator.getTeam();\n\t\t\tside.team = team;\n\t\t\tside.pokemon = [];\n\t\t\tfor (let i = 0; i < team.length && i < 24; i++) {\n\t\t\t\tside.pokemon.push(new Pokemon(team[i], side));\n\t\t\t\tside.pokemon[i].position = i;\n\t\t\t}\n\t\t\tside.dynamaxUsed = this.gen !== 8;\n\t\t}\n\n\t\t// Everything below is copied from sim/battle.ts\n\n\t\t// Deserialized games should use restart()\n\t\tif (this.deserialized) return;\n\t\t// need all players to start\n\t\tif (!this.sides.every(side => !!side)) throw new Error(`Missing sides: ${this.sides}`);\n\n\t\tif (this.started) throw new Error(`Battle already started`);\n\n\t\tthis.started = true;\n\t\tif (this.gameType === 'multi') {\n\t\t\tthis.sides[1].foe = this.sides[2]!;\n\t\t\tthis.sides[0].foe = this.sides[3]!;\n\t\t\tthis.sides[2]!.foe = this.sides[1];\n\t\t\tthis.sides[3]!.foe = this.sides[0];\n\t\t\tthis.sides[1].allySide = this.sides[3]!;\n\t\t\tthis.sides[0].allySide = this.sides[2]!;\n\t\t\tthis.sides[2]!.allySide = this.sides[0];\n\t\t\tthis.sides[3]!.allySide = this.sides[1];\n\t\t\t// sync side conditions\n\t\t\tthis.sides[2]!.sideConditions = this.sides[0].sideConditions;\n\t\t\tthis.sides[3]!.sideConditions = this.sides[1].sideConditions;\n\t\t} else {\n\t\t\tthis.sides[1].foe = this.sides[0];\n\t\t\tthis.sides[0].foe = this.sides[1];\n\t\t\tif (this.sides.length > 2) { // ffa\n\t\t\t\tthis.sides[2]!.foe = this.sides[3]!;\n\t\t\t\tthis.sides[3]!.foe = this.sides[2]!;\n\t\t\t}\n\t\t}\n\n\t\tfor (const side of this.sides) {\n\t\t\tthis.add('teamsize', side.id, side.pokemon.length);\n\t\t}\n\n\t\tthis.add('gen', this.gen);\n\n\t\tthis.add('tier', format.name);\n\t\tif (this.rated) {\n\t\t\tif (this.rated === 'Rated battle') this.rated = true;\n\t\t\tthis.add('rated', typeof this.rated === 'string' ? this.rated : '');\n\t\t}\n\n\t\tif (format.onBegin) format.onBegin.call(this);\n\t\tfor (const rule of this.ruleTable.keys()) {\n\t\t\tif ('+*-!'.includes(rule.charAt(0))) continue;\n\t\t\tconst subFormat = this.dex.formats.get(rule);\n\t\t\tif (subFormat.onBegin) subFormat.onBegin.call(this);\n\t\t}\n\n\t\tif (this.sides.some(side => !side.pokemon[0])) {\n\t\t\tthrow new Error('Battle not started: A player has an empty team.');\n\t\t}\n\n\t\tif (this.debugMode) {\n\t\t\tthis.checkEVBalance();\n\t\t}\n\n\t\tif (format.onTeamPreview) format.onTeamPreview.call(this);\n\t\tfor (const rule of this.ruleTable.keys()) {\n\t\t\tif ('+*-!'.includes(rule.charAt(0))) continue;\n\t\t\tconst subFormat = this.dex.formats.get(rule);\n\t\t\tif (subFormat.onTeamPreview) subFormat.onTeamPreview.call(this);\n\t\t}\n\n\t\tthis.queue.addChoice({ choice: 'start' });\n\t\tthis.midTurn = true;\n\t\tif (!this.requestState) this.turnLoop();\n\t},\n};\n"], | |
"mappings": "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", | |
"names": [] | |
} | |