Spaces:
Running
Running
{ | |
"version": 3, | |
"sources": ["../../../server/chat-plugins/cg-teams-leveling.ts"], | |
"sourcesContent": ["/**\n * Not a chat plugin.\n *\n * Handles updating the level database for [Gen 9] Computer-Generated Teams.\n */\n\nimport { SQL } from \"../../lib\";\nimport { getSpeciesName } from \"./randombattles/winrates\";\n\nexport let addPokemon: SQL.Statement | null = null;\nexport let incrementWins: SQL.Statement | null = null;\nexport let incrementLosses: SQL.Statement | null = null;\nexport let dbSetupPromise: Promise<void> | null = null;\n\nasync function setupDatabase(database: SQL.DatabaseManager) {\n\tawait database.runFile('./databases/schemas/battlestats.sql');\n\taddPokemon = await database.prepare(\n\t\t'INSERT OR IGNORE INTO gen9computergeneratedteams (species_id, wins, losses, level) VALUES (?, 0, 0, ?)'\n\t);\n\tincrementWins = await database.prepare(\n\t\t'UPDATE gen9computergeneratedteams SET wins = wins + 1 WHERE species_id = ?'\n\t);\n\tincrementLosses = await database.prepare(\n\t\t'UPDATE gen9computergeneratedteams SET losses = losses + 1 WHERE species_id = ?'\n\t);\n}\n\nif (Config.usesqlite && Config.usesqliteleveling) {\n\tconst database = SQL(module, {\n\t\tfile: './databases/battlestats.db',\n\t});\n\tdbSetupPromise = setupDatabase(database);\n}\n\nfunction getLevelSpeciesID(set: PokemonSet, format?: Format) {\n\tif (['Basculin', 'Greninja'].includes(set.name)) return toID(set.species);\n\treturn toID(getSpeciesName(set, format || Dex.formats.get('gen9computergeneratedteams')));\n}\n\nasync function updateStats(battle: RoomBattle, winner: ID) {\n\tif (!incrementWins || !incrementLosses) await dbSetupPromise;\n\tif (toID(battle.format) !== 'gen9computergeneratedteams') return;\n\t// if the game is rated or part of a tournament hosted by a public room, it counts\n\tif (battle.rated <= 1 && battle.room.parent?.game) {\n\t\tlet parent = battle.room.parent;\n\t\tif (parent.game!.gameid === 'bestof' && parent.parent?.game) parent = parent.parent;\n\t\tif (parent.game!.gameid !== 'tournament' || parent.settings.isPrivate) return;\n\t} else if (battle.rated < 1000) {\n\t\treturn;\n\t}\n\n\tfor (const player of battle.players) {\n\t\tconst team = await battle.getPlayerTeam(player);\n\t\tif (!team) return;\n\t\tconst increment = (player.id === winner ? incrementWins : incrementLosses);\n\n\t\tfor (const set of team) {\n\t\t\tconst statsSpecies = getLevelSpeciesID(set, Dex.formats.get(battle.format));\n\t\t\tawait addPokemon?.run([statsSpecies, set.level || 100]);\n\t\t\tawait increment?.run([statsSpecies]);\n\t\t}\n\t}\n}\n\nexport const handlers: Chat.Handlers = {\n\tonBattleEnd(battle, winner) {\n\t\tif (!Config.usesqlite || !Config.usesqliteleveling) return;\n\t\tvoid updateStats(battle, winner);\n\t},\n};\n"], | |
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,iBAAoB;AACpB,sBAA+B;AAExB,IAAI,aAAmC;AACvC,IAAI,gBAAsC;AAC1C,IAAI,kBAAwC;AAC5C,IAAI,iBAAuC;AAElD,eAAe,cAAc,UAA+B;AAC3D,QAAM,SAAS,QAAQ,qCAAqC;AAC5D,eAAa,MAAM,SAAS;AAAA,IAC3B;AAAA,EACD;AACA,kBAAgB,MAAM,SAAS;AAAA,IAC9B;AAAA,EACD;AACA,oBAAkB,MAAM,SAAS;AAAA,IAChC;AAAA,EACD;AACD;AAEA,IAAI,OAAO,aAAa,OAAO,mBAAmB;AACjD,QAAM,eAAW,gBAAI,QAAQ;AAAA,IAC5B,MAAM;AAAA,EACP,CAAC;AACD,mBAAiB,cAAc,QAAQ;AACxC;AAEA,SAAS,kBAAkB,KAAiB,QAAiB;AAC5D,MAAI,CAAC,YAAY,UAAU,EAAE,SAAS,IAAI,IAAI;AAAG,WAAO,KAAK,IAAI,OAAO;AACxE,SAAO,SAAK,gCAAe,KAAK,UAAU,IAAI,QAAQ,IAAI,4BAA4B,CAAC,CAAC;AACzF;AAEA,eAAe,YAAY,QAAoB,QAAY;AAC1D,MAAI,CAAC,iBAAiB,CAAC;AAAiB,UAAM;AAC9C,MAAI,KAAK,OAAO,MAAM,MAAM;AAA8B;AAE1D,MAAI,OAAO,SAAS,KAAK,OAAO,KAAK,QAAQ,MAAM;AAClD,QAAI,SAAS,OAAO,KAAK;AACzB,QAAI,OAAO,KAAM,WAAW,YAAY,OAAO,QAAQ;AAAM,eAAS,OAAO;AAC7E,QAAI,OAAO,KAAM,WAAW,gBAAgB,OAAO,SAAS;AAAW;AAAA,EACxE,WAAW,OAAO,QAAQ,KAAM;AAC/B;AAAA,EACD;AAEA,aAAW,UAAU,OAAO,SAAS;AACpC,UAAM,OAAO,MAAM,OAAO,cAAc,MAAM;AAC9C,QAAI,CAAC;AAAM;AACX,UAAM,YAAa,OAAO,OAAO,SAAS,gBAAgB;AAE1D,eAAW,OAAO,MAAM;AACvB,YAAM,eAAe,kBAAkB,KAAK,IAAI,QAAQ,IAAI,OAAO,MAAM,CAAC;AAC1E,YAAM,YAAY,IAAI,CAAC,cAAc,IAAI,SAAS,GAAG,CAAC;AACtD,YAAM,WAAW,IAAI,CAAC,YAAY,CAAC;AAAA,IACpC;AAAA,EACD;AACD;AAEO,MAAM,WAA0B;AAAA,EACtC,YAAY,QAAQ,QAAQ;AAC3B,QAAI,CAAC,OAAO,aAAa,CAAC,OAAO;AAAmB;AACpD,SAAK,YAAY,QAAQ,MAAM;AAAA,EAChC;AACD;", | |
"names": [] | |
} | |