{ "version": 3, "sources": ["../../../../server/chat-plugins/cg-teams-leveling.ts"], "sourcesContent": ["/**\r\n * Not a chat plugin.\r\n *\r\n * Handles updating the level database for [Gen 9] Computer-Generated Teams.\r\n */\r\n\r\nimport {SQL} from \"../../lib\";\r\n\r\nexport let addPokemon: SQL.Statement | null = null;\r\nexport let incrementWins: SQL.Statement | null = null;\r\nexport let incrementLosses: SQL.Statement | null = null;\r\nexport let dbSetupPromise: Promise | null = null;\r\n\r\nasync function setupDatabase(database: SQL.DatabaseManager) {\r\n\tawait database.runFile('./databases/schemas/battlestats.sql');\r\n\taddPokemon = await database.prepare(\r\n\t\t'INSERT OR IGNORE INTO gen9computergeneratedteams (species_id, wins, losses, level) VALUES (?, 0, 0, ?)'\r\n\t);\r\n\tincrementWins = await database.prepare(\r\n\t\t'UPDATE gen9computergeneratedteams SET wins = wins + 1 WHERE species_id = ?'\r\n\t);\r\n\tincrementLosses = await database.prepare(\r\n\t\t'UPDATE gen9computergeneratedteams SET losses = losses + 1 WHERE species_id = ?'\r\n\t);\r\n}\r\n\r\nif (Config.usesqlite && Config.usesqliteleveling) {\r\n\tconst database = SQL(module, {\r\n\t\tfile: './databases/battlestats.db',\r\n\t});\r\n\tdbSetupPromise = setupDatabase(database);\r\n}\r\n\r\nasync function updateStats(battle: RoomBattle, winner: ID) {\r\n\tif (!incrementWins || !incrementLosses) await dbSetupPromise;\r\n\tif (battle.rated < 1000 || toID(battle.format) !== 'gen9computergeneratedteams') return;\r\n\r\n\tconst p1 = Users.get(battle.p1.name);\r\n\tconst p2 = Users.get(battle.p2.name);\r\n\tif (!p1 || !p2) return;\r\n\r\n\tconst p1team = await battle.getTeam(p1);\r\n\tconst p2team = await battle.getTeam(p2);\r\n\tif (!p1team || !p2team) return;\r\n\r\n\tlet loserTeam, winnerTeam;\r\n\tif (winner === p1.id) {\r\n\t\tloserTeam = p2team;\r\n\t\twinnerTeam = p1team;\r\n\t} else {\r\n\t\tloserTeam = p1team;\r\n\t\twinnerTeam = p2team;\r\n\t}\r\n\r\n\tfor (const species of winnerTeam) {\r\n\t\tawait addPokemon?.run([toID(species.species), species.level]);\r\n\t\tawait incrementWins?.run([toID(species.species)]);\r\n\t}\r\n\tfor (const species of loserTeam) {\r\n\t\tawait addPokemon?.run([toID(species.species), species.level]);\r\n\t\tawait incrementLosses?.run([toID(species.species)]);\r\n\t}\r\n}\r\n\r\nexport const handlers: Chat.Handlers = {\r\n\tonBattleEnd(battle, winner) {\r\n\t\tif (!Config.usesqlite || !Config.usesqliteleveling) return;\r\n\t\tvoid updateStats(battle, winner);\r\n\t},\r\n};\r\n"], "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,iBAAkB;AAEX,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,eAAe,YAAY,QAAoB,QAAY;AAC1D,MAAI,CAAC,iBAAiB,CAAC;AAAiB,UAAM;AAC9C,MAAI,OAAO,QAAQ,OAAQ,KAAK,OAAO,MAAM,MAAM;AAA8B;AAEjF,QAAM,KAAK,MAAM,IAAI,OAAO,GAAG,IAAI;AACnC,QAAM,KAAK,MAAM,IAAI,OAAO,GAAG,IAAI;AACnC,MAAI,CAAC,MAAM,CAAC;AAAI;AAEhB,QAAM,SAAS,MAAM,OAAO,QAAQ,EAAE;AACtC,QAAM,SAAS,MAAM,OAAO,QAAQ,EAAE;AACtC,MAAI,CAAC,UAAU,CAAC;AAAQ;AAExB,MAAI,WAAW;AACf,MAAI,WAAW,GAAG,IAAI;AACrB,gBAAY;AACZ,iBAAa;AAAA,EACd,OAAO;AACN,gBAAY;AACZ,iBAAa;AAAA,EACd;AAEA,aAAW,WAAW,YAAY;AACjC,UAAM,YAAY,IAAI,CAAC,KAAK,QAAQ,OAAO,GAAG,QAAQ,KAAK,CAAC;AAC5D,UAAM,eAAe,IAAI,CAAC,KAAK,QAAQ,OAAO,CAAC,CAAC;AAAA,EACjD;AACA,aAAW,WAAW,WAAW;AAChC,UAAM,YAAY,IAAI,CAAC,KAAK,QAAQ,OAAO,GAAG,QAAQ,KAAK,CAAC;AAC5D,UAAM,iBAAiB,IAAI,CAAC,KAAK,QAAQ,OAAO,CAAC,CAAC;AAAA,EACnD;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": [] }