@supalosa/chronodivide-bot 0.6.6-beta.1 → 0.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bot/bot.js +3 -1
- package/dist/bot/bot.js.map +1 -1
- package/dist/bot/logic/awareness.js +0 -13
- package/dist/bot/logic/awareness.js.map +1 -1
- package/dist/bot/logic/building/queueController.js +4 -1
- package/dist/bot/logic/building/queueController.js.map +1 -1
- package/dist/bot/logic/common/rulesCache.js +38 -0
- package/dist/bot/logic/common/rulesCache.js.map +1 -0
- package/dist/bot/logic/mission/mission.js +21 -9
- package/dist/bot/logic/mission/mission.js.map +1 -1
- package/dist/bot/logic/mission/missions/attackMission.js +1 -1
- package/dist/bot/logic/mission/missions/attackMission.js.map +1 -1
- package/dist/bot/logic/mission/missions/squads/combatSquad.js +10 -7
- package/dist/bot/logic/mission/missions/squads/combatSquad.js.map +1 -1
- package/dist/bot/logic/threat/threatCalculator.js +42 -25
- package/dist/bot/logic/threat/threatCalculator.js.map +1 -1
- package/dist/dummyBot/dummyBot.js +8 -0
- package/dist/dummyBot/dummyBot.js.map +1 -0
- package/dist/{exampleBot.js → main.js} +37 -15
- package/dist/main.js.map +1 -0
- package/package.json +1 -1
- package/src/bot/bot.ts +3 -1
- package/src/bot/logic/awareness.ts +0 -19
- package/src/bot/logic/building/queueController.ts +5 -1
- package/src/bot/logic/common/rulesCache.ts +46 -0
- package/src/bot/logic/mission/mission.ts +35 -9
- package/src/bot/logic/mission/missions/attackMission.ts +1 -1
- package/src/bot/logic/mission/missions/squads/combatSquad.ts +11 -8
- package/src/bot/logic/threat/threatCalculator.ts +58 -26
- package/src/dummyBot/dummyBot.ts +9 -0
- package/src/{exampleBot.ts → main.ts} +40 -14
- package/.env.template +0 -5
- package/.github/workflows/npm-publish.yml +0 -24
- package/dist/exampleBot.js.map +0 -1
- package/tsconfig.json +0 -73
package/dist/bot/bot.js
CHANGED
|
@@ -28,7 +28,9 @@ export class SupalosaBot extends Bot {
|
|
|
28
28
|
this.matchAwareness = new MatchAwarenessImpl(null, new SectorCache(game.mapApi, this.knownMapBounds), myPlayer.startLocation, (message, sayInGame) => this.logBotStatus(message, sayInGame));
|
|
29
29
|
this.matchAwareness.onGameStart(game, myPlayer);
|
|
30
30
|
this.logBotStatus(`Map bounds: ${this.knownMapBounds.width}, ${this.knownMapBounds.height}`);
|
|
31
|
-
this.tryAllyWith
|
|
31
|
+
this.tryAllyWith
|
|
32
|
+
.filter((playerName) => playerName !== this.name)
|
|
33
|
+
.forEach((playerName) => this.actionsApi.toggleAlliance(playerName, true));
|
|
32
34
|
}
|
|
33
35
|
onGameTick(game) {
|
|
34
36
|
if (!this.matchAwareness) {
|
package/dist/bot/bot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../src/bot/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,GAAG,EAAqB,UAAU,EAAE,WAAW,EAAQ,MAAM,wBAAwB,CAAC;AAE7G,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAkB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAa,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAE9C,gDAAgD;AAChD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,OAAO,WAAY,SAAQ,GAAG;IAShC,YACI,IAAY,EACZ,OAAkB,EACV,cAAwB,EAAE,EAC1B,gBAAgB,IAAI;QAE5B,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAHb,gBAAW,GAAX,WAAW,CAAe;QAC1B,kBAAa,GAAb,aAAa,CAAO;QARxB,0BAAqB,GAAW,CAAC,CAAC;QAElC,mBAAc,GAA0B,IAAI,CAAC;QASjD,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC9G,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IACjD,CAAC;IAEQ,WAAW,CAAC,IAAa;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,GAAG,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,CAAC,cAAc,GAAG,IAAI,kBAAkB,CACxC,IAAI,EACJ,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,EACjD,QAAQ,CAAC,aAAa,EACtB,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAChE,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC,YAAY,CAAC,eAAe,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QAE7F,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../../src/bot/bot.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,12 +55,6 @@ export class MatchAwarenessImpl {
|
|
|
55
55
|
let scaledAirThreat = (threatFactor * threatCache.totalOffensiveAntiAirThreat + threatCache.totalDefensiveThreat) * 1.1;
|
|
56
56
|
return scaledGroundPower > scaledGroundThreat || scaledAirPower > scaledAirThreat;
|
|
57
57
|
}
|
|
58
|
-
isHostileUnit(unit, hostilePlayerNames) {
|
|
59
|
-
if (!unit) {
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
return hostilePlayerNames.includes(unit.owner);
|
|
63
|
-
}
|
|
64
58
|
onGameStart(gameApi, playerData) {
|
|
65
59
|
this.scoutingManager.onGameStart(gameApi, playerData, this.sectorCache);
|
|
66
60
|
}
|
|
@@ -72,13 +66,6 @@ export class MatchAwarenessImpl {
|
|
|
72
66
|
if (updateRatio && updateRatio < 1.0) {
|
|
73
67
|
this.logger(`${updateRatio * 100.0}% of sectors updated in last 60 seconds.`);
|
|
74
68
|
}
|
|
75
|
-
const hostilePlayerNames = game
|
|
76
|
-
.getPlayers()
|
|
77
|
-
.map((name) => game.getPlayerData(name))
|
|
78
|
-
.filter((other) => other.name !== playerData.name &&
|
|
79
|
-
other.isCombatant &&
|
|
80
|
-
!game.areAlliedPlayers(playerData.name, other.name))
|
|
81
|
-
.map((other) => other.name);
|
|
82
69
|
// Build the quadtree, if this is too slow we should consider doing this periodically.
|
|
83
70
|
const hostileUnitIds = game.getVisibleUnits(playerData.name, "enemy");
|
|
84
71
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"awareness.js","sourceRoot":"","sources":["../../../src/bot/logic/awareness.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6D,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAG5G,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAgD,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAsDpD,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAEtC,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAE7C,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAIxC,MAAM,eAAe,GAAG,CAAC,QAA0B,EAAE,KAAuB,EAAE,EAAE;IAC5E,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAS,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,OAAO,kBAAkB;IAM3B,YACY,WAAgC,EAChC,WAAwB,EACxB,cAAuB,EACvB,MAAsD;QAHtD,gBAAW,GAAX,WAAW,CAAqB;QAChC,gBAAW,GAAX,WAAW,CAAa;QACxB,mBAAc,GAAd,cAAc,CAAS;QACvB,WAAM,GAAN,MAAM,CAAgD;QAT1D,kBAAa,GAAY,KAAK,CAAC;QAWnC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,sBAAsB,CAAC,KAAc,EAAE,MAAc;QACjD,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,oBAAoB,CAAC,OAAe,EAAE,OAAe,EAAE,MAAc;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACvG,OAAO,aAAa;aACf,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAO,EAAE,CAAC,CAAC;aAC5D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC;aAC3F,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,cAAc;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IACD,iBAAiB;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IACD,kBAAkB;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAEO,iBAAiB,CAAC,WAAyB,EAAE,YAAoB;QACrE,IAAI,iBAAiB,GAAG,WAAW,CAAC,iCAAiC,GAAG,GAAG,CAAC;QAC5E,IAAI,kBAAkB,GAClB,CAAC,YAAY,GAAG,WAAW,CAAC,wBAAwB,GAAG,WAAW,CAAC,oBAAoB,CAAC,GAAG,GAAG,CAAC;QAEnG,IAAI,cAAc,GAAG,WAAW,CAAC,sBAAsB,GAAG,GAAG,CAAC;QAC9D,IAAI,eAAe,GACf,CAAC,YAAY,GAAG,WAAW,CAAC,2BAA2B,GAAG,WAAW,CAAC,oBAAoB,CAAC,GAAG,GAAG,CAAC;QAEtG,OAAO,iBAAiB,GAAG,kBAAkB,IAAI,cAAc,GAAG,eAAe,CAAC;IACtF,CAAC;
|
|
1
|
+
{"version":3,"file":"awareness.js","sourceRoot":"","sources":["../../../src/bot/logic/awareness.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,9 +26,11 @@ export const queueTypeToName = (queue) => {
|
|
|
26
26
|
return "Unknown";
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
|
+
const REPAIR_CHECK_INTERVAL = 30;
|
|
29
30
|
export class QueueController {
|
|
30
31
|
constructor() {
|
|
31
32
|
this.queueStates = [];
|
|
33
|
+
this.lastRepairCheckAt = 0;
|
|
32
34
|
}
|
|
33
35
|
onAiUpdate(game, productionApi, actionsApi, playerData, threatCache, unitTypeRequests, logger) {
|
|
34
36
|
this.queueStates = QUEUES.map((queueType) => {
|
|
@@ -52,7 +54,7 @@ export class QueueController {
|
|
|
52
54
|
this.updateBuildQueue(game, productionApi, actionsApi, playerData, threatCache, decision.queue, decision.topItem, totalWeightAcrossQueues, totalCostAcrossQueues, logger);
|
|
53
55
|
});
|
|
54
56
|
// Repair is simple - just repair everything that's damaged.
|
|
55
|
-
if (playerData.credits > 0) {
|
|
57
|
+
if (playerData.credits > 0 && game.getCurrentTick() > this.lastRepairCheckAt + REPAIR_CHECK_INTERVAL) {
|
|
56
58
|
game.getVisibleUnits(playerData.name, "self", (r) => r.repairable).forEach((unitId) => {
|
|
57
59
|
const unit = game.getUnitData(unitId);
|
|
58
60
|
if (!unit || !unit.hitPoints || !unit.maxHitPoints || unit.hasWrenchRepair) {
|
|
@@ -62,6 +64,7 @@ export class QueueController {
|
|
|
62
64
|
actionsApi.toggleRepairWrench(unitId);
|
|
63
65
|
}
|
|
64
66
|
});
|
|
67
|
+
this.lastRepairCheckAt = game.getCurrentTick();
|
|
65
68
|
}
|
|
66
69
|
}
|
|
67
70
|
updateBuildQueue(game, productionApi, actionsApi, playerData, threatCache, queueType, decision, totalWeightAcrossQueues, totalCostAcrossQueues, logger) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queueController.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/queueController.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,WAAW,EACX,SAAS,GAEZ,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAEH,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,GAC9B,MAAM,oBAAoB,CAAC;AAG5B,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,SAAS,CAAC,UAAU;IACpB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,QAAQ;IAClB,SAAS,CAAC,QAAQ;IAClB,SAAS,CAAC,SAAS;IACnB,SAAS,CAAC,KAAK;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAgB,EAAE,EAAE;IAChD,QAAQ,KAAK,EAAE;QACX,KAAK,SAAS,CAAC,UAAU;YACrB,OAAO,YAAY,CAAC;QACxB,KAAK,SAAS,CAAC,MAAM;YACjB,OAAO,QAAQ,CAAC;QACpB,KAAK,SAAS,CAAC,QAAQ;YACnB,OAAO,UAAU,CAAC;QACtB,KAAK,SAAS,CAAC,QAAQ;YACnB,OAAO,UAAU,CAAC;QACtB,KAAK,SAAS,CAAC,SAAS;YACpB,OAAO,WAAW,CAAC;QACvB,KAAK,SAAS,CAAC,KAAK;YAChB,OAAO,OAAO,CAAC;QACnB;YACI,OAAO,SAAS,CAAC;KACxB;AACL,CAAC,CAAC;AASF,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"queueController.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/queueController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// checking technorules directly reduces the amount of calls to getUnitData(), which is a relatively expensive function.
|
|
2
|
+
// A null value indicates an object that does not have TechnoRules.
|
|
3
|
+
const technoRulesCache = {};
|
|
4
|
+
export const getCachedTechnoRules = (gameApi, unitId) => {
|
|
5
|
+
const gameObject = gameApi.getGameObjectData(unitId);
|
|
6
|
+
if (!gameObject) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const { rulesApi } = gameApi;
|
|
10
|
+
const { name } = gameObject;
|
|
11
|
+
if (technoRulesCache[name]) {
|
|
12
|
+
// object is present in cache, either with TechnoRules or null (indicating that it does not have TechnoRules)
|
|
13
|
+
return technoRulesCache[name];
|
|
14
|
+
}
|
|
15
|
+
const aircraftRules = rulesApi.aircraftRules.get(name);
|
|
16
|
+
if (aircraftRules) {
|
|
17
|
+
technoRulesCache[name] = aircraftRules;
|
|
18
|
+
return aircraftRules;
|
|
19
|
+
}
|
|
20
|
+
const buildingRules = rulesApi.buildingRules.get(name);
|
|
21
|
+
if (buildingRules) {
|
|
22
|
+
technoRulesCache[name] = buildingRules;
|
|
23
|
+
return buildingRules;
|
|
24
|
+
}
|
|
25
|
+
const infantryRules = rulesApi.infantryRules.get(name);
|
|
26
|
+
if (infantryRules) {
|
|
27
|
+
technoRulesCache[name] = infantryRules;
|
|
28
|
+
return infantryRules;
|
|
29
|
+
}
|
|
30
|
+
const vehicleRules = rulesApi.vehicleRules.get(name);
|
|
31
|
+
if (vehicleRules) {
|
|
32
|
+
technoRulesCache[name] = vehicleRules;
|
|
33
|
+
return vehicleRules;
|
|
34
|
+
}
|
|
35
|
+
technoRulesCache[name] = null;
|
|
36
|
+
return null;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=rulesCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rulesCache.js","sourceRoot":"","sources":["../../../../src/bot/logic/common/rulesCache.ts"],"names":[],"mappings":"AAEA,wHAAwH;AACxH,mEAAmE;AACnE,MAAM,gBAAgB,GAAgD,EAAE,CAAC;AAEzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAE,MAAc,EAAsB,EAAE;IACzF,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,EAAE;QACb,OAAO,IAAI,CAAC;KACf;IACD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;IAE5B,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE;QACxB,6GAA6G;QAC7G,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;KACjC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,aAAa,EAAE;QACf,gBAAgB,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;QACvC,OAAO,aAAa,CAAC;KACxB;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,aAAa,EAAE;QACf,gBAAgB,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;QACvC,OAAO,aAAa,CAAC;KACxB;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,aAAa,EAAE;QACf,gBAAgB,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;QACvC,OAAO,aAAa,CAAC;KACxB;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,YAAY,EAAE;QACd,gBAAgB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;QACtC,OAAO,YAAY,CAAC;KACvB;IAED,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9B,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Vector2 } from "@chronodivide/game-api";
|
|
1
|
+
import { Vector2, } from "@chronodivide/game-api";
|
|
2
2
|
import { getDistanceBetweenTileAndPoint } from "../map/map.js";
|
|
3
|
+
import { getCachedTechnoRules } from "../common/rulesCache.js";
|
|
3
4
|
const calculateCenterOfMass = (unitTiles) => {
|
|
4
5
|
if (unitTiles.length === 0) {
|
|
5
6
|
return null;
|
|
@@ -30,12 +31,11 @@ export class Mission {
|
|
|
30
31
|
}
|
|
31
32
|
// TODO call this
|
|
32
33
|
updateCenterOfMass(gameApi) {
|
|
33
|
-
const
|
|
34
|
-
.map((unitId) => gameApi.
|
|
35
|
-
.filter((unit) => unit?.canMove)
|
|
34
|
+
const unitTiles = this.unitIds
|
|
35
|
+
.map((unitId) => gameApi.getGameObjectData(unitId))
|
|
36
36
|
.map((unit) => unit?.tile)
|
|
37
37
|
.filter((tile) => !!tile);
|
|
38
|
-
const tileMetrics = calculateCenterOfMass(
|
|
38
|
+
const tileMetrics = calculateCenterOfMass(unitTiles);
|
|
39
39
|
if (tileMetrics) {
|
|
40
40
|
this.centerOfMass = tileMetrics.centerOfMass;
|
|
41
41
|
this.maxDistanceToCenterOfMass = tileMetrics.maxDistance;
|
|
@@ -61,23 +61,35 @@ export class Mission {
|
|
|
61
61
|
addUnit(unitIdToAdd) {
|
|
62
62
|
this.unitIds.push(unitIdToAdd);
|
|
63
63
|
}
|
|
64
|
+
// Note: don't call this unless you REALLY need the UnitData instead of the GameObjectData.
|
|
64
65
|
getUnits(gameApi) {
|
|
65
66
|
return this.unitIds
|
|
66
67
|
.map((unitId) => gameApi.getUnitData(unitId))
|
|
67
68
|
.filter((unit) => unit != null)
|
|
68
69
|
.map((unit) => unit);
|
|
69
70
|
}
|
|
71
|
+
// returns GameObjectData, which is significantly faster to retrieve.
|
|
72
|
+
getUnitsGameObjectData(gameApi) {
|
|
73
|
+
return this.unitIds
|
|
74
|
+
.map((unitId) => gameApi.getGameObjectData(unitId))
|
|
75
|
+
.filter((unit) => unit != null)
|
|
76
|
+
.map((unit) => unit);
|
|
77
|
+
}
|
|
70
78
|
getUnitsOfTypes(gameApi, ...names) {
|
|
71
79
|
return this.unitIds
|
|
72
80
|
.map((unitId) => gameApi.getUnitData(unitId))
|
|
73
81
|
.filter((unit) => !!unit && names.includes(unit.name))
|
|
74
82
|
.map((unit) => unit);
|
|
75
83
|
}
|
|
76
|
-
|
|
84
|
+
getUnitsMatchingByRule(gameApi, filter) {
|
|
77
85
|
return this.unitIds
|
|
78
|
-
.map((unitId) =>
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
.map((unitId) => ({
|
|
87
|
+
unitId,
|
|
88
|
+
rules: getCachedTechnoRules(gameApi, unitId),
|
|
89
|
+
}))
|
|
90
|
+
.filter((entry) => entry.rules !== null)
|
|
91
|
+
.filter(({ rules }) => filter(rules))
|
|
92
|
+
.map(({ unitId }) => unitId);
|
|
81
93
|
}
|
|
82
94
|
getCenterOfMass() {
|
|
83
95
|
return this.centerOfMass;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mission.js","sourceRoot":"","sources":["../../../../src/bot/logic/mission/mission.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mission.js","sourceRoot":"","sources":["../../../../src/bot/logic/mission/mission.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,7 @@ export class AttackMission extends Mission {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
handlePreparingState(gameApi, actionsApi, playerData, matchAwareness, actionBatcher) {
|
|
61
|
-
const currentComposition = countBy(this.
|
|
61
|
+
const currentComposition = countBy(this.getUnitsGameObjectData(gameApi), (unit) => unit.name);
|
|
62
62
|
const missingUnits = Object.entries(this.composition).filter(([unitType, targetAmount]) => {
|
|
63
63
|
return !currentComposition[unitType] || currentComposition[unitType] < targetAmount;
|
|
64
64
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attackMission.js","sourceRoot":"","sources":["../../../../../src/bot/logic/mission/missions/attackMission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAc,QAAQ,EAAY,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAClH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAiB,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAI3F,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAe,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,iEAAa,CAAA;IACb,+EAAoB,CAAA;AACxB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,IAAK,kBAIJ;AAJD,WAAK,kBAAkB;IACnB,qEAAa,CAAA;IACb,qEAAa,CAAA;IACb,uEAAc,CAAA;AAClB,CAAC,EAJI,kBAAkB,KAAlB,kBAAkB,QAItB;AAED,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEzC,SAAS,0BAA0B,CAC/B,OAAgB,EAChB,UAAsB,EACtB,cAA8B;IAE9B,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC;KAC/D;SAAM,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,EAAE;QACjD,OAAO,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;KACpE;SAAM;QACH,OAAO,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;KACrE;AACL,CAAC;AAED,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAC1C,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAyB;IAQxD,YACI,UAAkB,EACV,QAAgB,EACxB,SAAkB,EACV,UAAmB,EACnB,MAAc,EACd,WAA4B,EACpC,MAAmB;QAEnB,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAPlB,aAAQ,GAAR,QAAQ,CAAQ;QAEhB,eAAU,GAAV,UAAU,CAAS;QACnB,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAiB;QAXhC,qBAAgB,GAAG,CAAC,CAAC;QACrB,uBAAkB,GAAY,KAAK,CAAC;QAEpC,UAAK,GAAuB,kBAAkB,CAAC,SAAS,CAAC;QAY7D,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,WAAW,CACP,OAAgB,EAChB,UAAsB,EACtB,UAAsB,EACtB,cAA8B,EAC9B,aAA4B;QAE5B,QAAQ,IAAI,CAAC,KAAK,EAAE;YAChB,KAAK,kBAAkB,CAAC,SAAS;gBAC7B,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;YACrG,KAAK,kBAAkB,CAAC,SAAS;gBAC7B,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;YACrG,KAAK,kBAAkB,CAAC,UAAU;gBAC9B,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;SACzG;IACL,CAAC;IAEO,oBAAoB,CACxB,OAAgB,EAChB,UAAsB,EACtB,UAAsB,EACtB,cAA8B,EAC9B,aAA4B;QAE5B,MAAM,kBAAkB,GAAoB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"attackMission.js","sourceRoot":"","sources":["../../../../../src/bot/logic/mission/missions/attackMission.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,14 +42,17 @@ export class CombatSquad {
|
|
|
42
42
|
this.lastCommand = gameApi.getCurrentTick();
|
|
43
43
|
const centerOfMass = mission.getCenterOfMass();
|
|
44
44
|
const maxDistance = mission.getMaxDistanceToCenterOfMass();
|
|
45
|
-
const
|
|
45
|
+
const unitIds = mission.getUnitsMatchingByRule(gameApi, (r) => r.isSelectableCombatant);
|
|
46
|
+
const units = unitIds
|
|
47
|
+
.map((unitId) => gameApi.getUnitData(unitId))
|
|
48
|
+
.filter((unit) => !!unit);
|
|
46
49
|
// Only use ground units for center of mass.
|
|
47
|
-
const
|
|
48
|
-
(r.
|
|
49
|
-
r.
|
|
50
|
-
r.
|
|
50
|
+
const groundUnitIds = mission.getUnitsMatchingByRule(gameApi, (r) => r.isSelectableCombatant &&
|
|
51
|
+
(r.movementZone === MovementZone.Infantry ||
|
|
52
|
+
r.movementZone === MovementZone.Normal ||
|
|
53
|
+
r.movementZone === MovementZone.InfantryDestroyer));
|
|
51
54
|
if (this.state === SquadState.Gathering) {
|
|
52
|
-
const requiredGatherRadius = GameMath.sqrt(
|
|
55
|
+
const requiredGatherRadius = GameMath.sqrt(groundUnitIds.length) * GATHER_RATIO + MIN_GATHER_RADIUS;
|
|
53
56
|
if (centerOfMass &&
|
|
54
57
|
maxDistance &&
|
|
55
58
|
gameApi.mapApi.getTile(centerOfMass.x, centerOfMass.y) !== undefined &&
|
|
@@ -65,7 +68,7 @@ export class CombatSquad {
|
|
|
65
68
|
}
|
|
66
69
|
else {
|
|
67
70
|
const targetPoint = this.targetArea || playerData.startLocation;
|
|
68
|
-
const requiredGatherRadius = GameMath.sqrt(
|
|
71
|
+
const requiredGatherRadius = GameMath.sqrt(groundUnitIds.length) * GATHER_RATIO + MAX_GATHER_RADIUS;
|
|
69
72
|
if (centerOfMass &&
|
|
70
73
|
maxDistance &&
|
|
71
74
|
gameApi.mapApi.getTile(centerOfMass.x, centerOfMass.y) !== undefined &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combatSquad.js","sourceRoot":"","sources":["../../../../../../src/bot/logic/mission/missions/squads/combatSquad.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,QAAQ,EACR,YAAY,GAIf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAe,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAGvF,OAAO,EAA0C,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEhF,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAExC,4EAA4E;AAC5E,uDAAuD;AACvD,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,yFAAyF;AACzF,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,IAAK,UAGJ;AAHD,WAAK,UAAU;IACX,qDAAS,CAAA;IACT,qDAAS,CAAA;AACb,CAAC,EAHI,UAAU,KAAV,UAAU,QAGd;AAED,MAAM,OAAO,WAAW;IAQpB;;;;;OAKG;IACH,YACY,SAAkB,EAClB,UAAmB,EACnB,MAAc;QAFd,cAAS,GAAT,SAAS,CAAS;QAClB,eAAU,GAAV,UAAU,CAAS;QACnB,WAAM,GAAN,MAAM,CAAQ;QAhBlB,gBAAW,GAAkB,IAAI,CAAC;QAClC,UAAK,GAAG,UAAU,CAAC,SAAS,CAAC;QAI7B,mBAAc,GAA0C,EAAE,CAAC;IAYhE,CAAC;IAEG,kBAAkB;QACrB,OAAO,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC;IAC5C,CAAC;IAEM,aAAa,CAAC,UAAmB;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEM,UAAU,CACb,OAAgB,EAChB,UAAsB,EACtB,aAA4B,EAC5B,UAAsB,EACtB,OAAqB,EACrB,cAA8B,EAC9B,MAAmB;QAEnB,IACI,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,4BAA4B,CAAC,EACnG;YACE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;YAC3D,MAAM,
|
|
1
|
+
{"version":3,"file":"combatSquad.js","sourceRoot":"","sources":["../../../../../../src/bot/logic/mission/missions/squads/combatSquad.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { GameMath, MovementZone, ObjectType } from "@chronodivide/game-api";
|
|
1
|
+
import { GameMath, MovementZone, ObjectType, } from "@chronodivide/game-api";
|
|
2
2
|
import { GlobalThreat } from "./threat.js";
|
|
3
|
+
import { getCachedTechnoRules } from "../common/rulesCache.js";
|
|
3
4
|
export function calculateGlobalThreat(game, playerData, visibleAreaPercent) {
|
|
4
5
|
let groundUnits = game.getVisibleUnits(playerData.name, "enemy", (r) => r.type == ObjectType.Vehicle || r.type == ObjectType.Infantry);
|
|
5
6
|
let airUnits = game.getVisibleUnits(playerData.name, "enemy", (r) => r.movementZone == MovementZone.Fly);
|
|
@@ -29,44 +30,60 @@ export function calculateGlobalThreat(game, playerData, visibleAreaPercent) {
|
|
|
29
30
|
let ourGroundDefencePower = calculateFirepowerForUnits(game, ourGroundDefence);
|
|
30
31
|
return new GlobalThreat(visibleAreaPercent, observedGroundThreat, observedAirThreat, observedAntiAirThreat, observedGroundDefence, ourGroundDefencePower, ourAntiGroundPower, ourAntiAirPower, ourAirPower);
|
|
31
32
|
}
|
|
33
|
+
// For the purposes of determining if units can target air/ground, we look purely at the technorules and only the base weapon (not elite)
|
|
34
|
+
// This excludes some special cases such as IFVs changing turrets, but we have to deal with it for now.
|
|
32
35
|
function isAntiGround(gameApi, unitId) {
|
|
33
|
-
|
|
34
|
-
if (unit && unit.primaryWeapon) {
|
|
35
|
-
return unit.primaryWeapon.projectileRules.isAntiGround;
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
36
|
+
return testProjectile(gameApi, unitId, (p) => p.isAntiGround);
|
|
38
37
|
}
|
|
39
38
|
function isAntiAir(gameApi, unitId) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
return testProjectile(gameApi, unitId, (p) => p.isAntiAir);
|
|
40
|
+
}
|
|
41
|
+
function testProjectile(gameApi, unitId, test) {
|
|
42
|
+
const rules = getCachedTechnoRules(gameApi, unitId);
|
|
43
|
+
if (!rules || !(rules.primary || rules.secondary)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
const primaryWeapon = rules.primary ? gameApi.rulesApi.getWeapon(rules.primary) : null;
|
|
47
|
+
const primaryProjectile = getProjectileRules(gameApi, primaryWeapon);
|
|
48
|
+
if (primaryProjectile && test(primaryProjectile)) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
const secondaryWeapon = rules.secondary ? gameApi.rulesApi.getWeapon(rules.secondary) : null;
|
|
52
|
+
const secondaryProjectile = getProjectileRules(gameApi, secondaryWeapon);
|
|
53
|
+
if (secondaryProjectile && test(secondaryProjectile)) {
|
|
54
|
+
return true;
|
|
43
55
|
}
|
|
44
56
|
return false;
|
|
45
57
|
}
|
|
46
|
-
function
|
|
58
|
+
function getProjectileRules(gameApi, weapon) {
|
|
59
|
+
const primaryProjectile = weapon ? gameApi.rulesApi.getProjectile(weapon.projectile) : null;
|
|
60
|
+
return primaryProjectile;
|
|
61
|
+
}
|
|
62
|
+
function calculateFirepowerForUnit(gameApi, gameObjectData) {
|
|
63
|
+
const rules = getCachedTechnoRules(gameApi, gameObjectData.id);
|
|
64
|
+
if (!rules) {
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
const currentHp = gameObjectData?.hitPoints || 0;
|
|
68
|
+
const maxHp = gameObjectData?.maxHitPoints || 0;
|
|
47
69
|
let threat = 0;
|
|
48
|
-
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
((unitData.primaryWeapon.rules.damage + 1) * GameMath.sqrt(unitData.primaryWeapon.rules.range + 1))) /
|
|
53
|
-
Math.max(unitData.primaryWeapon.rules.rof, 1);
|
|
70
|
+
const hpRatio = currentHp / Math.max(1, maxHp);
|
|
71
|
+
if (rules.primary) {
|
|
72
|
+
const weapon = gameApi.rulesApi.getWeapon(rules.primary);
|
|
73
|
+
threat += (hpRatio * ((weapon.damage + 1) * GameMath.sqrt(weapon.range + 1))) / Math.max(weapon.rof, 1);
|
|
54
74
|
}
|
|
55
|
-
if (
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
((unitData.secondaryWeapon.rules.damage + 1) *
|
|
59
|
-
GameMath.sqrt(unitData.secondaryWeapon.rules.range + 1))) /
|
|
60
|
-
Math.max(unitData.secondaryWeapon.rules.rof, 1);
|
|
75
|
+
if (rules.secondary) {
|
|
76
|
+
const weapon = gameApi.rulesApi.getWeapon(rules.secondary);
|
|
77
|
+
threat += (hpRatio * ((weapon.damage + 1) * GameMath.sqrt(weapon.range + 1))) / Math.max(weapon.rof, 1);
|
|
61
78
|
}
|
|
62
79
|
return Math.min(800, threat);
|
|
63
80
|
}
|
|
64
81
|
function calculateFirepowerForUnits(game, unitIds) {
|
|
65
82
|
let threat = 0;
|
|
66
83
|
unitIds.forEach((unitId) => {
|
|
67
|
-
|
|
68
|
-
if (
|
|
69
|
-
threat += calculateFirepowerForUnit(
|
|
84
|
+
const gameObjectData = game.getGameObjectData(unitId);
|
|
85
|
+
if (gameObjectData) {
|
|
86
|
+
threat += calculateFirepowerForUnit(game, gameObjectData);
|
|
70
87
|
}
|
|
71
88
|
});
|
|
72
89
|
return threat;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threatCalculator.js","sourceRoot":"","sources":["../../../../src/bot/logic/threat/threatCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"threatCalculator.js","sourceRoot":"","sources":["../../../../src/bot/logic/threat/threatCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dummyBot.js","sourceRoot":"","sources":["../../src/dummyBot/dummyBot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAG7C,yDAAyD;AACzD,MAAM,OAAO,QAAS,SAAQ,GAAG;IAC7B,YAAY,IAAY,EAAE,OAAkB;QACxC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzB,CAAC;CACJ"}
|