@supalosa/chronodivide-bot 0.2.1 → 0.2.2
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/.prettierrc +5 -5
- package/README.md +3 -3
- package/dist/bot/bot.js +5 -1
- package/dist/bot/bot.js.map +1 -0
- package/dist/bot/logic/awareness.js +12 -2
- package/dist/bot/logic/awareness.js.map +1 -0
- package/dist/bot/logic/awarenessImpl.js +132 -0
- package/dist/bot/logic/awarenessImpl.js.map +1 -0
- package/dist/bot/logic/building/ArtilleryUnit.js +1 -0
- package/dist/bot/logic/building/ArtilleryUnit.js.map +1 -0
- package/dist/bot/logic/building/antiGroundStaticDefence.js +1 -0
- package/dist/bot/logic/building/antiGroundStaticDefence.js.map +1 -0
- package/dist/bot/logic/building/basicAirUnit.js +1 -0
- package/dist/bot/logic/building/basicAirUnit.js.map +1 -0
- package/dist/bot/logic/building/basicBuilding.js +1 -0
- package/dist/bot/logic/building/basicBuilding.js.map +1 -0
- package/dist/bot/logic/building/basicGroundUnit.js +1 -0
- package/dist/bot/logic/building/basicGroundUnit.js.map +1 -0
- package/dist/bot/logic/building/building.js +55 -11
- package/dist/bot/logic/building/building.js.map +1 -0
- package/dist/bot/logic/building/harvester.js +1 -0
- package/dist/bot/logic/building/harvester.js.map +1 -0
- package/dist/bot/logic/building/powerPlant.js +1 -0
- package/dist/bot/logic/building/powerPlant.js.map +1 -0
- package/dist/bot/logic/building/queueController.js +1 -0
- package/dist/bot/logic/building/queueController.js.map +1 -0
- package/dist/bot/logic/building/resourceCollectionBuilding.js +1 -0
- package/dist/bot/logic/building/resourceCollectionBuilding.js.map +1 -0
- package/dist/bot/logic/common/scout.js +100 -0
- package/dist/bot/logic/common/scout.js.map +1 -0
- package/dist/bot/logic/common/utils.js +2 -0
- package/dist/bot/logic/common/utils.js.map +1 -0
- package/dist/bot/logic/map/map.js +9 -25
- package/dist/bot/logic/map/map.js.map +1 -0
- package/dist/bot/logic/map/sector.js +33 -1
- package/dist/bot/logic/map/sector.js.map +1 -0
- package/dist/bot/logic/mission/mission.js +3 -1
- package/dist/bot/logic/mission/mission.js.map +1 -0
- package/dist/bot/logic/mission/missionController.js +3 -2
- package/dist/bot/logic/mission/missionController.js.map +1 -0
- package/dist/bot/logic/mission/missionFactories.js +1 -0
- package/dist/bot/logic/mission/missionFactories.js.map +1 -0
- package/dist/bot/logic/mission/missions/attackMission.js +6 -5
- package/dist/bot/logic/mission/missions/attackMission.js.map +1 -0
- package/dist/bot/logic/mission/missions/defenceMission.js +11 -6
- package/dist/bot/logic/mission/missions/defenceMission.js.map +1 -0
- package/dist/bot/logic/mission/missions/expansionMission.js +5 -4
- package/dist/bot/logic/mission/missions/expansionMission.js.map +1 -0
- package/dist/bot/logic/mission/missions/oneTimeMission.js +3 -2
- package/dist/bot/logic/mission/missions/oneTimeMission.js.map +1 -0
- package/dist/bot/logic/mission/missions/retreatMission.js +3 -2
- package/dist/bot/logic/mission/missions/retreatMission.js.map +1 -0
- package/dist/bot/logic/mission/missions/scoutingMission.js +8 -9
- package/dist/bot/logic/mission/missions/scoutingMission.js.map +1 -0
- package/dist/bot/logic/squad/behaviours/attackSquad.js +63 -56
- package/dist/bot/logic/squad/behaviours/combatSquad.js +5 -2
- package/dist/bot/logic/squad/behaviours/combatSquad.js.map +1 -0
- package/dist/bot/logic/squad/behaviours/common.js +1 -0
- package/dist/bot/logic/squad/behaviours/common.js.map +1 -0
- package/dist/bot/logic/squad/behaviours/defenceSquad.js +15 -2
- package/dist/bot/logic/squad/behaviours/expansionSquad.js +1 -0
- package/dist/bot/logic/squad/behaviours/expansionSquad.js.map +1 -0
- package/dist/bot/logic/squad/behaviours/retreatSquad.js +1 -0
- package/dist/bot/logic/squad/behaviours/retreatSquad.js.map +1 -0
- package/dist/bot/logic/squad/behaviours/scoutingSquad.js +66 -18
- package/dist/bot/logic/squad/behaviours/scoutingSquad.js.map +1 -0
- package/dist/bot/logic/squad/squad.js +3 -3
- package/dist/bot/logic/squad/squad.js.map +1 -0
- package/dist/bot/logic/squad/squadBehaviour.js +1 -0
- package/dist/bot/logic/squad/squadBehaviour.js.map +1 -0
- package/dist/bot/logic/squad/squadBehaviours.js +1 -0
- package/dist/bot/logic/squad/squadBehaviours.js.map +1 -0
- package/dist/bot/logic/squad/squadController.js +56 -16
- package/dist/bot/logic/squad/squadController.js.map +1 -0
- package/dist/bot/logic/threat/threat.js +1 -0
- package/dist/bot/logic/threat/threat.js.map +1 -0
- package/dist/bot/logic/threat/threatCalculator.js +1 -0
- package/dist/bot/logic/threat/threatCalculator.js.map +1 -0
- package/dist/exampleBot.js +1 -0
- package/dist/exampleBot.js.map +1 -0
- package/package.json +9 -6
- package/src/bot/bot.ts +6 -2
- package/src/bot/logic/awareness.ts +21 -4
- package/src/bot/logic/building/ArtilleryUnit.ts +43 -43
- package/src/bot/logic/building/antiGroundStaticDefence.ts +60 -60
- package/src/bot/logic/building/basicAirUnit.ts +68 -68
- package/src/bot/logic/building/basicBuilding.ts +47 -47
- package/src/bot/logic/building/building.ts +70 -12
- package/src/bot/logic/building/powerPlant.ts +32 -32
- package/src/bot/logic/building/resourceCollectionBuilding.ts +56 -56
- package/src/bot/logic/common/scout.ts +127 -1
- package/src/bot/logic/common/utils.ts +1 -0
- package/src/bot/logic/map/map.ts +70 -84
- package/src/bot/logic/map/sector.ts +46 -4
- package/src/bot/logic/mission/mission.ts +2 -2
- package/src/bot/logic/mission/missionController.ts +2 -3
- package/src/bot/logic/mission/missionFactories.ts +3 -0
- package/src/bot/logic/mission/missions/attackMission.ts +6 -2
- package/src/bot/logic/mission/missions/defenceMission.ts +34 -14
- package/src/bot/logic/mission/missions/expansionMission.ts +6 -4
- package/src/bot/logic/mission/missions/oneTimeMission.ts +3 -2
- package/src/bot/logic/mission/missions/retreatMission.ts +3 -2
- package/src/bot/logic/mission/missions/scoutingMission.ts +9 -6
- package/src/bot/logic/squad/behaviours/combatSquad.ts +5 -1
- package/src/bot/logic/squad/behaviours/scoutingSquad.ts +81 -23
- package/src/bot/logic/squad/squad.ts +3 -2
- package/src/bot/logic/squad/squadBehaviour.ts +3 -1
- package/src/bot/logic/squad/squadController.ts +88 -41
- package/src/bot/logic/threat/threat.ts +15 -15
- package/src/bot/logic/threat/threatCalculator.ts +99 -99
- package/tsconfig.json +73 -73
- package/dist/bot/logic/building/massedAntiGroundUnit.js +0 -20
- package/dist/bot/logic/building/queues.js +0 -19
- package/dist/bot/logic/knowledge.js +0 -1
- package/dist/bot/logic/mission/basicMission.js +0 -26
- package/dist/bot/logic/mission/expansionMission.js +0 -32
- package/dist/bot/logic/squad/behaviours/squadExpansion.js +0 -31
- package/dist/bot/logic/squad/behaviours/squadScouters.js +0 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/bot/logic/common/utils.ts"],"names":[],"mappings":""}
|
|
@@ -1,31 +1,14 @@
|
|
|
1
|
+
import _ from "lodash";
|
|
2
|
+
const MAX_WIDTH_AND_HEIGHT = 500;
|
|
1
3
|
// Expensive one-time call to determine the size of the map.
|
|
2
4
|
// The result is a point just outside the bounds of the map.
|
|
3
5
|
export function determineMapBounds(mapApi) {
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
maxX = point.x;
|
|
11
|
-
}
|
|
12
|
-
if (point.y > maxY) {
|
|
13
|
-
maxY = point.y;
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
// Expand outwards until we find the bounds.
|
|
17
|
-
for (let testX = maxX; testX < 10000; ++testX) {
|
|
18
|
-
if (mapApi.getTile(testX, 0) == undefined) {
|
|
19
|
-
maxX = testX;
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
for (let testY = maxY; testY < 10000; ++testY) {
|
|
24
|
-
if (mapApi.getTile(testY, 0) == undefined) {
|
|
25
|
-
maxY = testY;
|
|
26
|
-
break;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
6
|
+
// Probably want to ask for an API change to get this.
|
|
7
|
+
// Note that the maps is not always a rectangle!
|
|
8
|
+
const zeroTile = { rx: 0, ry: 0 };
|
|
9
|
+
const allTiles = mapApi.getTilesInRect(zeroTile, { width: MAX_WIDTH_AND_HEIGHT, height: MAX_WIDTH_AND_HEIGHT });
|
|
10
|
+
const maxX = _.maxBy(allTiles, (tile) => tile.rx)?.rx;
|
|
11
|
+
const maxY = _.maxBy(allTiles, (tile) => tile.ry)?.ry;
|
|
29
12
|
return { x: maxX, y: maxY };
|
|
30
13
|
}
|
|
31
14
|
export function calculateAreaVisibility(mapApi, playerData, startPoint, endPoint) {
|
|
@@ -61,3 +44,4 @@ export function getDistanceBetweenUnits(unit1, unit2) {
|
|
|
61
44
|
export function getDistanceBetween(unit, point) {
|
|
62
45
|
return getDistanceBetweenPoints({ x: unit.tile.rx, y: unit.tile.ry }, point);
|
|
63
46
|
}
|
|
47
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../src/bot/logic/map/map.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,21 @@ export class Sector {
|
|
|
7
7
|
this.sectorStartTile = sectorStartTile;
|
|
8
8
|
this.sectorVisibilityPct = sectorVisibilityPct;
|
|
9
9
|
this.sectorVisibilityLastCheckTick = sectorVisibilityLastCheckTick;
|
|
10
|
+
this.sectorExploreAttempts = 0;
|
|
11
|
+
}
|
|
12
|
+
onExploreAttempted(currentTick) {
|
|
13
|
+
this.sectorExploreAttempts++;
|
|
14
|
+
this.sectorLastExploredAt = currentTick;
|
|
15
|
+
}
|
|
16
|
+
// Whether we should attempt to explore this sector, given the cooldown and limit of attempts.
|
|
17
|
+
shouldAttemptExploration(currentTick, cooldown, limit) {
|
|
18
|
+
if (limit >= this.sectorExploreAttempts) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (this.sectorLastExploredAt && currentTick < this.sectorLastExploredAt + cooldown) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
10
25
|
}
|
|
11
26
|
}
|
|
12
27
|
export class SectorCache {
|
|
@@ -100,10 +115,27 @@ export class SectorCache {
|
|
|
100
115
|
}
|
|
101
116
|
return this.sectors[sectorX][sectorY];
|
|
102
117
|
}
|
|
103
|
-
|
|
118
|
+
getSectorBounds() {
|
|
119
|
+
return {
|
|
120
|
+
x: this.sectorsX,
|
|
121
|
+
y: this.sectorsY,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
getSectorCoordinatesForWorldPosition(x, y) {
|
|
104
125
|
if (x < 0 || x >= this.mapBounds.x || y < 0 || y >= this.mapBounds.y) {
|
|
105
126
|
return undefined;
|
|
106
127
|
}
|
|
128
|
+
return {
|
|
129
|
+
sectorX: Math.floor(x / SECTOR_SIZE),
|
|
130
|
+
sectorY: Math.floor(y / SECTOR_SIZE)
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
getSectorForWorldPosition(x, y) {
|
|
134
|
+
const sectorCoordinates = this.getSectorCoordinatesForWorldPosition(x, y);
|
|
135
|
+
if (!sectorCoordinates) {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
107
138
|
return this.sectors[Math.floor(x / SECTOR_SIZE)][Math.floor(y / SECTOR_SIZE)];
|
|
108
139
|
}
|
|
109
140
|
}
|
|
141
|
+
//# sourceMappingURL=sector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sector.js","sourceRoot":"","sources":["../../../../src/bot/logic/map/sector.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAGlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAE7B,MAAM,OAAO,MAAM;IAKf,YACW,gBAAyB,EACzB,eAAiC,EACjC,mBAAuC,EACvC,6BAAiD;QAHjD,qBAAgB,GAAhB,gBAAgB,CAAS;QACzB,oBAAe,GAAf,eAAe,CAAkB;QACjC,wBAAmB,GAAnB,mBAAmB,CAAoB;QACvC,kCAA6B,GAA7B,6BAA6B,CAAoB;QAExD,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACnC,CAAC;IAEM,kBAAkB,CAAC,WAAmB;QACzC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IAC5C,CAAC;IAED,8FAA8F;IACvF,wBAAwB,CAAC,WAAmB,EAAE,QAAgB,EAAE,KAAa;QAChF,IAAI,KAAK,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACrC,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,oBAAoB,IAAI,WAAW,GAAG,IAAI,CAAC,oBAAoB,GAAG,QAAQ,EAAE;YACjF,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAED,MAAM,OAAO,WAAW;IAQpB,YAAY,MAAc,EAAE,SAAkB;QAPtC,YAAO,GAAe,EAAE,CAAC;QAQ7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;gBACvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,MAAM,CAC7B,EAAE,CAAC,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,WAAW,EAAE,EAC5C,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,WAAW,EAAE,EAAE,GAAG,WAAW,CAAC,EAClD,SAAS,EACT,SAAS,CACZ,CAAC;aACL;SACJ;IACL,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,eAAuB,EAAE,kBAA0B,EAAE,MAAc,EAAE,UAAsB;QAC5G,IAAI,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,OAAO,gBAAgB,GAAG,kBAAkB,EAAE;YAC1C,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC9B,WAAW,GAAG,CAAC,CAAC;gBAChB,EAAE,WAAW,CAAC;aACjB;YACD,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC9B,WAAW,GAAG,CAAC,CAAC;gBAChB,WAAW,GAAG,CAAC,CAAC;aACnB;YACD,IAAI,MAAM,GAAuB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC1E,IAAI,MAAM,EAAE;gBACR,MAAM,CAAC,6BAA6B,GAAG,eAAe,CAAC;gBACvD,IAAI,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBACjC,IAAI,EAAE,GAAG;oBACL,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,WAAW;oBAC1C,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,WAAW;iBAC7C,CAAC;gBACF,IAAI,UAAU,GAAG,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACrE,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE;oBAC3B,MAAM,CAAC,mBAAmB,GAAG,UAAU,CAAC,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC;iBAChF;qBAAM;oBACH,MAAM,CAAC,mBAAmB,GAAG,SAAS,CAAC;iBAC1C;aACJ;YACD,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;YACtC,EAAE,WAAW,CAAC;YACd,EAAE,gBAAgB,CAAC;SACtB;IACL,CAAC;IAED,wCAAwC;IACjC,oBAAoB,CAAC,2BAAmC;QAC3D,IAAI,OAAO,GAAG,CAAC,EACX,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;YACvC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;gBACvC,IAAI,MAAM,GAAW,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1C,IACI,MAAM;oBACN,MAAM,CAAC,6BAA6B;oBACpC,MAAM,CAAC,6BAA6B,IAAI,2BAA2B,EACrE;oBACE,EAAE,OAAO,CAAC;iBACb;gBACD,EAAE,KAAK,CAAC;aACX;SACJ;QACD,OAAO,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,oBAAoB;QACvB,IAAI,OAAO,GAAG,CAAC,EACX,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;YACvC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;gBACvC,IAAI,MAAM,GAAW,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAE1C,wBAAwB;gBACxB,IAAI,MAAM,CAAC,mBAAmB,IAAI,SAAS,EAAE;oBACzC,OAAO,IAAI,MAAM,CAAC,mBAAmB,CAAC;oBACtC,KAAK,IAAI,GAAG,CAAC;iBAChB;aACJ;SACJ;QACD,OAAO,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEM,SAAS,CAAC,OAAe,EAAE,OAAe;QAC7C,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACpF,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,eAAe;QAClB,OAAO;YACH,CAAC,EAAE,IAAI,CAAC,QAAQ;YAChB,CAAC,EAAE,IAAI,CAAC,QAAQ;SACnB,CAAA;IACL,CAAC;IAEM,oCAAoC,CAAC,CAAS,EAAE,CAAS;QAC5D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;YAClE,OAAO,SAAS,CAAC;SACpB;QACD,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC;YACpC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC;SACvC,CAAA;IACL,CAAC;IAEM,yBAAyB,CAAC,CAAS,EAAE,CAAS;QACjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,oCAAoC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,iBAAiB,EAAE;YACpB,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAClF,CAAC;CACJ"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// AI starts Missions based on heuristics, which have one or more squads.
|
|
2
2
|
// Missions can create squads (but squads will disband themselves).
|
|
3
3
|
export class Mission {
|
|
4
|
-
constructor(uniqueName, priority
|
|
4
|
+
constructor(uniqueName, priority, logger) {
|
|
5
5
|
this.uniqueName = uniqueName;
|
|
6
6
|
this.priority = priority;
|
|
7
|
+
this.logger = logger;
|
|
7
8
|
this.squad = null;
|
|
8
9
|
this.active = true;
|
|
9
10
|
this.onFinish = () => { };
|
|
@@ -47,3 +48,4 @@ export const registerSquad = (squad) => ({
|
|
|
47
48
|
squad,
|
|
48
49
|
});
|
|
49
50
|
export const disbandMission = (reason) => ({ type: "disband", reason });
|
|
51
|
+
//# sourceMappingURL=mission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mission.js","sourceRoot":"","sources":["../../../../src/bot/logic/mission/mission.ts"],"names":[],"mappings":"AAKA,yEAAyE;AACzE,mEAAmE;AACnE,MAAM,OAAgB,OAAO;IAMzB,YAAoB,UAAkB,EAAU,QAAgB,EAAY,MAAmB;QAA3E,eAAU,GAAV,UAAU,CAAQ;QAAU,aAAQ,GAAR,QAAQ,CAAQ;QAAY,WAAM,GAAN,MAAM,CAAa;QALvF,UAAK,GAAiB,IAAI,CAAC;QAC3B,WAAM,GAAG,IAAI,CAAC;QAEd,aAAQ,GAA0D,GAAG,EAAE,GAAE,CAAC,CAAC;IAEe,CAAC;IAInG,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAES,QAAQ,CAAC,KAAY;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,WAAW;QACP,2CAA2C;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,0CAA0C;IAC1C,UAAU,CAAC,MAAsB;QAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,QAA+D;QAChE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAgBD,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,CACrB,CAAC;IACG,IAAI,EAAE,MAAM;CACO,CAAA,CAAC;AAE5B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAY,EAAE,EAAE,CAC1C,CAAC;IACG,IAAI,EAAE,eAAe;IACrB,KAAK;CACuB,CAAA,CAAC;AAErC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAY,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAA2B,CAAA,CAAC"}
|
|
@@ -48,9 +48,9 @@ export class MissionController {
|
|
|
48
48
|
});
|
|
49
49
|
// Create dynamic missions.
|
|
50
50
|
this.missionFactories.forEach((missionFactory) => {
|
|
51
|
-
missionFactory.maybeCreateMissions(gameApi, playerData, matchAwareness, this);
|
|
51
|
+
missionFactory.maybeCreateMissions(gameApi, playerData, matchAwareness, this, this.logger);
|
|
52
52
|
disbandedMissionsArray.forEach(({ reason, mission }) => {
|
|
53
|
-
missionFactory.onMissionFailed(gameApi, playerData, matchAwareness, mission, reason, this);
|
|
53
|
+
missionFactory.onMissionFailed(gameApi, playerData, matchAwareness, mission, reason, this, this.logger);
|
|
54
54
|
});
|
|
55
55
|
});
|
|
56
56
|
}
|
|
@@ -78,3 +78,4 @@ export class MissionController {
|
|
|
78
78
|
this.logger(`Missions (${this.missions.length}): ${this.missions.map((m) => m.getUniqueName()).join(", ")}`);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
+
//# sourceMappingURL=missionController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"missionController.js","sourceRoot":"","sources":["../../../../src/bot/logic/mission/missionController.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAMtD,OAAO,EAAkB,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,OAAO,iBAAiB;IAM1B,YAAoB,MAAsD;QAAtD,WAAM,GAAN,MAAM,CAAgD;QAJlE,aAAQ,GAAmB,EAAE,CAAC;QAE9B,2BAAsB,GAAa,EAAE,CAAC;QAG1C,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;IACrD,CAAC;IAEM,UAAU,CACb,OAAgB,EAChB,UAAsB,EACtB,cAA8B,EAC9B,eAAgC;QAEhC,4BAA4B;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAExE,uCAAuC;QACvC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACnD,OAAO;YACP,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC;SAClE,CAAC,CAAC,CAAC;QAEJ,8BAA8B;QAC9B,MAAM,SAAS,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;QAC5D,MAAM,iBAAiB,GAAqB,IAAI,GAAG,EAAE,CAAC;QACtD,MAAM,sBAAsB,GAAwC,EAAE,CAAC;QACvE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;QACjC,cAAc;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;aAClC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAG,CAAC,CAAC,MAA+B,CAAC,MAAM,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;QAEP,sCAAsC;QACtC,IAAI,CAAC,QAAQ;aACR,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;aACrE,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,CACP,sBAAsB,gBAAgB,CAAC,aAAa,EAAE,aAAa,MAAM,eAAe,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CACxH,CAAC;YACF,sBAAsB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC;YACnE,gBAAgB,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YACrF,gBAAgB,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAErG,sBAAsB;QACtB,MAAM,UAAU,GAAG,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC;QACnE,cAAc;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;aACnC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,MAAM,MAAM,GAAG,CAAC,CAAC,MAAoC,CAAC;YACtD,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,uBAAuB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEP,2BAA2B;QAC3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;YAC7C,cAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3F,sBAAsB,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;gBACnD,cAAc,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5G,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAI,OAAyB;QAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE;YAC1E,kCAAkC;YAClC,OAAO,IAAI,CAAC;SACf;QACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,WAAmB;QACrC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAEM,cAAc;QACjB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,MAAM,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"missionFactories.js","sourceRoot":"","sources":["../../../../src/bot/logic/mission/missionFactories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAoCrE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC;IACxC,IAAI,uBAAuB,EAAE;IAC7B,IAAI,sBAAsB,EAAE;IAC5B,IAAI,oBAAoB,EAAE;IAC1B,IAAI,qBAAqB,EAAE;CAC9B,CAAC"}
|
|
@@ -14,8 +14,8 @@ const NO_TARGET_IDLE_TIMEOUT_TICKS = 60;
|
|
|
14
14
|
* A mission that tries to attack a certain area.
|
|
15
15
|
*/
|
|
16
16
|
export class AttackMission extends Mission {
|
|
17
|
-
constructor(uniqueName, priority, rallyArea, attackArea, radius) {
|
|
18
|
-
super(uniqueName, priority);
|
|
17
|
+
constructor(uniqueName, priority, rallyArea, attackArea, radius, logger) {
|
|
18
|
+
super(uniqueName, priority, logger);
|
|
19
19
|
this.rallyArea = rallyArea;
|
|
20
20
|
this.attackArea = attackArea;
|
|
21
21
|
this.radius = radius;
|
|
@@ -81,7 +81,7 @@ export class AttackMissionFactory {
|
|
|
81
81
|
}
|
|
82
82
|
return null;
|
|
83
83
|
}
|
|
84
|
-
maybeCreateMissions(gameApi, playerData, matchAwareness, missionController) {
|
|
84
|
+
maybeCreateMissions(gameApi, playerData, matchAwareness, missionController, logger) {
|
|
85
85
|
if (!matchAwareness.shouldAttack()) {
|
|
86
86
|
return;
|
|
87
87
|
}
|
|
@@ -96,8 +96,8 @@ export class AttackMissionFactory {
|
|
|
96
96
|
}
|
|
97
97
|
// TODO: not using a fixed value here. But performance slows to a crawl when this is unique.
|
|
98
98
|
const squadName = "globalAttack";
|
|
99
|
-
const tryAttack = missionController.addMission(new AttackMission(squadName, 100, matchAwareness.getMainRallyPoint(), attackArea, attackRadius).then((reason, squad) => {
|
|
100
|
-
missionController.addMission(new RetreatMission("retreat-from-" + squadName + gameApi.getCurrentTick(), 100, matchAwareness.getMainRallyPoint(), squad?.getUnitIds() ?? []));
|
|
99
|
+
const tryAttack = missionController.addMission(new AttackMission(squadName, 100, matchAwareness.getMainRallyPoint(), attackArea, attackRadius, logger).then((reason, squad) => {
|
|
100
|
+
missionController.addMission(new RetreatMission("retreat-from-" + squadName + gameApi.getCurrentTick(), 100, matchAwareness.getMainRallyPoint(), squad?.getUnitIds() ?? [], logger));
|
|
101
101
|
}));
|
|
102
102
|
if (tryAttack) {
|
|
103
103
|
this.lastAttackAt = gameApi.getCurrentTick();
|
|
@@ -105,3 +105,4 @@ export class AttackMissionFactory {
|
|
|
105
105
|
}
|
|
106
106
|
onMissionFailed(gameApi, playerData, matchAwareness, failedMission, failureReason, missionController) { }
|
|
107
107
|
}
|
|
108
|
+
//# sourceMappingURL=attackMission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attackMission.js","sourceRoot":"","sources":["../../../../../src/bot/logic/mission/missions/attackMission.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,8 @@ export var DefenceFailReason;
|
|
|
10
10
|
* A mission that tries to defend a certain area.
|
|
11
11
|
*/
|
|
12
12
|
export class DefenceMission extends Mission {
|
|
13
|
-
constructor(uniqueName, priority, defenceArea, radius) {
|
|
14
|
-
super(uniqueName, priority);
|
|
13
|
+
constructor(uniqueName, priority, defenceArea, radius, logger) {
|
|
14
|
+
super(uniqueName, priority, logger);
|
|
15
15
|
this.defenceArea = defenceArea;
|
|
16
16
|
this.radius = radius;
|
|
17
17
|
}
|
|
@@ -24,9 +24,12 @@ export class DefenceMission extends Mission {
|
|
|
24
24
|
// Dispatch missions.
|
|
25
25
|
const foundTargets = matchAwareness.getHostilesNearPoint2d(this.defenceArea, this.radius);
|
|
26
26
|
if (foundTargets.length === 0) {
|
|
27
|
+
this.logger(`(Defence Mission ${this.getUniqueName()}): No targets found, disbanding.`);
|
|
27
28
|
return disbandMission(DefenceFailReason.NoTargets);
|
|
28
29
|
}
|
|
29
30
|
else {
|
|
31
|
+
const targetUnit = gameApi.getUnitData(foundTargets[0].unitId);
|
|
32
|
+
this.logger(`(Defence Mission ${this.getUniqueName()}): Focused on target ${targetUnit?.name} (${foundTargets.length} found in area ${this.radius})`);
|
|
30
33
|
this.combatSquad?.setAttackArea({ x: foundTargets[0].x, y: foundTargets[0].y });
|
|
31
34
|
}
|
|
32
35
|
}
|
|
@@ -37,7 +40,7 @@ const DEFENCE_CHECK_TICKS = 30;
|
|
|
37
40
|
// Starting radius around the player's base to trigger defense.
|
|
38
41
|
const DEFENCE_STARTING_RADIUS = 10;
|
|
39
42
|
// Every game tick, we increase the defendable area by this amount.
|
|
40
|
-
const DEFENCE_RADIUS_INCREASE_PER_GAME_TICK = 0.
|
|
43
|
+
const DEFENCE_RADIUS_INCREASE_PER_GAME_TICK = 0.001;
|
|
41
44
|
export class DefenceMissionFactory {
|
|
42
45
|
constructor() {
|
|
43
46
|
this.lastDefenceCheckAt = 0;
|
|
@@ -45,7 +48,7 @@ export class DefenceMissionFactory {
|
|
|
45
48
|
getName() {
|
|
46
49
|
return "DefenceMissionFactory";
|
|
47
50
|
}
|
|
48
|
-
maybeCreateMissions(gameApi, playerData, matchAwareness, missionController) {
|
|
51
|
+
maybeCreateMissions(gameApi, playerData, matchAwareness, missionController, logger) {
|
|
49
52
|
if (gameApi.getCurrentTick() < this.lastDefenceCheckAt + DEFENCE_CHECK_TICKS) {
|
|
50
53
|
return;
|
|
51
54
|
}
|
|
@@ -53,10 +56,12 @@ export class DefenceMissionFactory {
|
|
|
53
56
|
const defendableRadius = DEFENCE_STARTING_RADIUS + DEFENCE_RADIUS_INCREASE_PER_GAME_TICK * gameApi.getCurrentTick();
|
|
54
57
|
const enemiesNearSpawn = matchAwareness.getHostilesNearPoint2d(playerData.startLocation, defendableRadius);
|
|
55
58
|
if (enemiesNearSpawn.length > 0) {
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
logger(`Starting defence mission, ${enemiesNearSpawn.length} found in radius ${defendableRadius} (tick ${gameApi.getCurrentTick()})`);
|
|
60
|
+
missionController.addMission(new DefenceMission("globalDefence", 1000, playerData.startLocation, defendableRadius * 1.2, logger).then((reason, squad) => {
|
|
61
|
+
missionController.addMission(new RetreatMission("retreat-from-globalDefence" + gameApi.getCurrentTick(), 100, matchAwareness.getMainRallyPoint(), squad?.getUnitIds() ?? [], logger));
|
|
58
62
|
}));
|
|
59
63
|
}
|
|
60
64
|
}
|
|
61
65
|
onMissionFailed(gameApi, playerData, matchAwareness, failedMission, failureReason, missionController) { }
|
|
62
66
|
}
|
|
67
|
+
//# sourceMappingURL=defenceMission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defenceMission.js","sourceRoot":"","sources":["../../../../../src/bot/logic/mission/missions/defenceMission.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,21 +4,22 @@ import { OneTimeMission } from "./oneTimeMission.js";
|
|
|
4
4
|
* A mission that tries to create an MCV (if it doesn't exist) and deploy it somewhere it can be deployed.
|
|
5
5
|
*/
|
|
6
6
|
export class ExpansionMission extends OneTimeMission {
|
|
7
|
-
constructor(uniqueName, priority, selectedMcv) {
|
|
8
|
-
super(uniqueName, priority, () => new ExpansionSquad(selectedMcv));
|
|
7
|
+
constructor(uniqueName, priority, selectedMcv, logger) {
|
|
8
|
+
super(uniqueName, priority, () => new ExpansionSquad(selectedMcv), logger);
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
export class ExpansionMissionFactory {
|
|
12
12
|
getName() {
|
|
13
13
|
return "ExpansionMissionFactory";
|
|
14
14
|
}
|
|
15
|
-
maybeCreateMissions(gameApi, playerData, matchAwareness, missionController) {
|
|
15
|
+
maybeCreateMissions(gameApi, playerData, matchAwareness, missionController, logger) {
|
|
16
16
|
// At this point, only expand if we have a loose MCV.
|
|
17
17
|
const mcvs = gameApi.getVisibleUnits(playerData.name, "self", (r) => gameApi.getGeneralRules().baseUnit.includes(r.name));
|
|
18
18
|
mcvs.forEach((mcv) => {
|
|
19
|
-
missionController.addMission(new ExpansionMission("expand-with-" + mcv, 100, mcv));
|
|
19
|
+
missionController.addMission(new ExpansionMission("expand-with-" + mcv, 100, mcv, logger));
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
onMissionFailed(gameApi, playerData, matchAwareness, failedMission, failureReason, missionController) {
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
+
//# sourceMappingURL=expansionMission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expansionMission.js","sourceRoot":"","sources":["../../../../../src/bot/logic/mission/missions/expansionMission.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAChD,YAAY,UAAkB,EAAE,QAAgB,EAAE,WAA0B,EACxE,MAAmB;QACnB,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;CACJ;AAED,MAAM,OAAO,uBAAuB;IAChC,OAAO;QACH,OAAO,yBAAyB,CAAC;IACrC,CAAC;IAED,mBAAmB,CACf,OAAgB,EAChB,UAAsB,EACtB,cAA8B,EAC9B,iBAAoC,EACpC,MAAmB;QAEnB,qDAAqD;QACrD,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAChE,OAAO,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CACtD,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,iBAAiB,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,cAAc,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;IACP,CAAC;IAED,eAAe,CACX,OAAgB,EAChB,UAAsB,EACtB,cAA8B,EAC9B,aAAsB,EACtB,aAAwB,EACxB,iBAAoC;IAExC,CAAC;CACJ"}
|
|
@@ -4,8 +4,8 @@ import { Squad } from "../../squad/squad.js";
|
|
|
4
4
|
* A mission that gets dispatched once, and once the squad decides to disband, the mission is disbanded.
|
|
5
5
|
*/
|
|
6
6
|
export class OneTimeMission extends Mission {
|
|
7
|
-
constructor(uniqueName, priority, behaviourFactory) {
|
|
8
|
-
super(uniqueName, priority);
|
|
7
|
+
constructor(uniqueName, priority, behaviourFactory, logger) {
|
|
8
|
+
super(uniqueName, priority, logger);
|
|
9
9
|
this.behaviourFactory = behaviourFactory;
|
|
10
10
|
this.hadSquad = false;
|
|
11
11
|
}
|
|
@@ -24,3 +24,4 @@ export class OneTimeMission extends Mission {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
+
//# sourceMappingURL=oneTimeMission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneTimeMission.js","sourceRoot":"","sources":["../../../../../src/bot/logic/mission/missions/oneTimeMission.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAiB,cAAc,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAM7C;;GAEG;AACH,MAAM,OAAgB,cAA8B,SAAQ,OAAU;IAGlE,YAAY,UAAkB,EAAE,QAAgB,EAAU,gBAAsC,EAAE,MAAmB;QACjH,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QADkB,qBAAgB,GAAhB,gBAAgB,CAAsB;QAFxF,aAAQ,GAAG,KAAK,CAAC;IAIzB,CAAC;IAED,UAAU,CAAC,OAAgB,EAAE,UAAsB,EAAE,cAA8B;QAC/E,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;aACxF;iBAAM;gBACH,OAAO,cAAc,EAAE,CAAC;aAC3B;SACJ;aAAM;YACH,OAAO,IAAI,EAAE,CAAC;SACjB;IACL,CAAC;CACJ"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { OneTimeMission } from "./oneTimeMission.js";
|
|
2
2
|
import { RetreatSquad } from "../../squad/behaviours/retreatSquad.js";
|
|
3
3
|
export class RetreatMission extends OneTimeMission {
|
|
4
|
-
constructor(uniqueName, priority, retreatToPoint, unitIds) {
|
|
5
|
-
super(uniqueName, priority, () => new RetreatSquad(unitIds, retreatToPoint));
|
|
4
|
+
constructor(uniqueName, priority, retreatToPoint, unitIds, logger) {
|
|
5
|
+
super(uniqueName, priority, () => new RetreatSquad(unitIds, retreatToPoint), logger);
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
+
//# sourceMappingURL=retreatMission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retreatMission.js","sourceRoot":"","sources":["../../../../../src/bot/logic/mission/missions/retreatMission.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAGtE,MAAM,OAAO,cAAe,SAAQ,cAAc;IAC9C,YAAY,UAAkB,EAAE,QAAgB,EAAE,cAAuB,EAAE,OAAiB,EAAE,MAAmB;QAC7G,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IACzF,CAAC;CACJ"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { ScoutingSquad } from "../../squad/behaviours/scoutingSquad.js";
|
|
2
2
|
import { OneTimeMission } from "./oneTimeMission.js";
|
|
3
3
|
import { AttackMission } from "./attackMission.js";
|
|
4
|
-
import { getUnseenStartingLocations } from "../../common/scout.js";
|
|
5
4
|
/**
|
|
6
5
|
* A mission that tries to scout around the map with a cheap, fast unit (usually attack dogs)
|
|
7
6
|
*/
|
|
8
7
|
export class ScoutingMission extends OneTimeMission {
|
|
9
|
-
constructor(uniqueName, priority) {
|
|
10
|
-
super(uniqueName, priority, () => new ScoutingSquad());
|
|
8
|
+
constructor(uniqueName, priority, logger) {
|
|
9
|
+
super(uniqueName, priority, () => new ScoutingSquad(), logger);
|
|
11
10
|
}
|
|
12
11
|
}
|
|
13
12
|
const SCOUT_COOLDOWN_TICKS = 300;
|
|
@@ -18,21 +17,21 @@ export class ScoutingMissionFactory {
|
|
|
18
17
|
getName() {
|
|
19
18
|
return "ScoutingMissionFactory";
|
|
20
19
|
}
|
|
21
|
-
maybeCreateMissions(gameApi, playerData, matchAwareness, missionController) {
|
|
20
|
+
maybeCreateMissions(gameApi, playerData, matchAwareness, missionController, logger) {
|
|
22
21
|
if (gameApi.getCurrentTick() < this.lastScoutAt + SCOUT_COOLDOWN_TICKS) {
|
|
23
22
|
return;
|
|
24
23
|
}
|
|
25
|
-
|
|
26
|
-
if (candidatePoints.length === 0) {
|
|
24
|
+
if (!matchAwareness.getScoutingManager().hasScoutTargets()) {
|
|
27
25
|
return;
|
|
28
26
|
}
|
|
29
|
-
if (!missionController.addMission(new ScoutingMission("globalScout", 100))) {
|
|
27
|
+
if (!missionController.addMission(new ScoutingMission("globalScout", 100, logger))) {
|
|
30
28
|
this.lastScoutAt = gameApi.getCurrentTick();
|
|
31
29
|
}
|
|
32
30
|
}
|
|
33
|
-
onMissionFailed(gameApi, playerData, matchAwareness, failedMission, failureReason, missionController) {
|
|
31
|
+
onMissionFailed(gameApi, playerData, matchAwareness, failedMission, failureReason, missionController, logger) {
|
|
34
32
|
if (failedMission instanceof AttackMission) {
|
|
35
|
-
missionController.addMission(new ScoutingMission("globalScout", 100));
|
|
33
|
+
missionController.addMission(new ScoutingMission("globalScout", 100, logger));
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
36
|
}
|
|
37
|
+
//# sourceMappingURL=scoutingMission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoutingMission.js","sourceRoot":"","sources":["../../../../../src/bot/logic/mission/missions/scoutingMission.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,cAAc;IAC/C,YAAY,UAAkB,EAAE,QAAgB,EAC5C,MAAmB;QACnB,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,aAAa,EAAE,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;CACJ;AAED,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,MAAM,OAAO,sBAAsB;IAC/B,YAAoB,cAAsB,CAAC,oBAAoB;QAA3C,gBAAW,GAAX,WAAW,CAAgC;IAAG,CAAC;IAEnE,OAAO;QACH,OAAO,wBAAwB,CAAC;IACpC,CAAC;IAED,mBAAmB,CACf,OAAgB,EAChB,UAAsB,EACtB,cAA8B,EAC9B,iBAAoC,EACpC,MAAmB;QAEnB,IAAI,OAAO,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,WAAW,GAAG,oBAAoB,EAAE;YACpE,OAAO;SACV;QACD,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,eAAe,EAAE,EAAE;YACxD,OAAO;SACV;QACD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE;YAChF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;SAC/C;IACL,CAAC;IAED,eAAe,CACX,OAAgB,EAChB,UAAsB,EACtB,cAA8B,EAC9B,aAAsB,EACtB,aAAwB,EACxB,iBAAoC,EACpC,MAAmB;QAEnB,IAAI,aAAa,YAAY,aAAa,EAAE;YACxC,iBAAiB,CAAC,UAAU,CAAC,IAAI,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;SACjF;IACL,CAAC;CACJ"}
|
|
@@ -1,75 +1,45 @@
|
|
|
1
1
|
import _ from "lodash";
|
|
2
|
-
import {
|
|
2
|
+
import { ObjectType, OrderType, } from "@chronodivide/game-api";
|
|
3
3
|
import { grabCombatants, noop } from "../squadBehaviour.js";
|
|
4
|
-
import { getDistanceBetweenPoints } from "../../map/map.js";
|
|
5
|
-
|
|
6
|
-
const
|
|
4
|
+
import { getDistanceBetweenPoints, getDistanceBetweenUnits } from "../../map/map.js";
|
|
5
|
+
// If no enemies are seen in a circle IDLE_CHECK_RADIUS*radius for IDLE_COOLDOWN_TICKS ticks, the mission is disbanded.
|
|
6
|
+
const IDLE_CHECK_RADIUS_RATIO = 2;
|
|
7
|
+
const IDLE_COOLDOWN_TICKS = 15 * 30;
|
|
8
|
+
const TARGET_UPDATE_INTERVAL_TICKS = 4;
|
|
7
9
|
const GRAB_INTERVAL_TICKS = 10;
|
|
8
10
|
const GRAB_RADIUS = 30;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const MIN_GATHER_RADIUS = 5;
|
|
12
|
-
const GATHER_RATIO = 10;
|
|
13
|
-
var SquadState;
|
|
14
|
-
(function (SquadState) {
|
|
15
|
-
SquadState[SquadState["Gathering"] = 0] = "Gathering";
|
|
16
|
-
SquadState[SquadState["Attacking"] = 1] = "Attacking";
|
|
17
|
-
})(SquadState || (SquadState = {}));
|
|
18
|
-
export class AttackOrDefenceSquad {
|
|
19
|
-
constructor(rallyArea, targetArea, radius) {
|
|
11
|
+
export class AttackSquad {
|
|
12
|
+
constructor(rallyArea, attackArea, radius) {
|
|
20
13
|
this.rallyArea = rallyArea;
|
|
21
|
-
this.
|
|
14
|
+
this.attackArea = attackArea;
|
|
22
15
|
this.radius = radius;
|
|
16
|
+
this.lastIdleCheck = null;
|
|
23
17
|
this.lastGrab = null;
|
|
24
18
|
this.lastCommand = null;
|
|
25
|
-
this.state = SquadState.Gathering;
|
|
26
19
|
}
|
|
27
|
-
setAttackArea(
|
|
28
|
-
this.
|
|
20
|
+
setAttackArea(attackArea) {
|
|
21
|
+
this.attackArea = attackArea;
|
|
29
22
|
}
|
|
30
23
|
onAiUpdate(gameApi, actionsApi, playerData, squad, matchAwareness) {
|
|
31
24
|
if (!this.lastCommand || gameApi.getCurrentTick() > this.lastCommand + TARGET_UPDATE_INTERVAL_TICKS) {
|
|
32
|
-
this.lastCommand = gameApi.getCurrentTick();
|
|
33
|
-
const centerOfMass = squad.getCenterOfMass();
|
|
34
|
-
const maxDistance = squad.getMaxDistanceToCenterOfMass();
|
|
35
25
|
const units = squad.getUnitsMatching(gameApi, (r) => r.rules.isSelectableCombatant);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
manageMoveMicro(actionsApi,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
this.state = SquadState.Attacking;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
const targetPoint = this.targetArea || playerData.startLocation;
|
|
57
|
-
for (const unit of units) {
|
|
58
|
-
if (unit.isIdle) {
|
|
59
|
-
const { rx: x, ry: y } = unit.tile;
|
|
60
|
-
const range = unit.primaryWeapon?.maxRange ?? unit.secondaryWeapon?.maxRange ?? 5;
|
|
61
|
-
const nearbyHostiles = matchAwareness.getHostilesNearPoint(x, y, range * 2);
|
|
62
|
-
const closest = _.minBy(nearbyHostiles, ({ x: hX, y: hY }) => getDistanceBetweenPoints({ x, y }, { x: hX, y: hY }));
|
|
63
|
-
const closestUnit = closest ? gameApi.getUnitData(closest.unitId) ?? null : null;
|
|
64
|
-
if (closestUnit) {
|
|
65
|
-
manageAttackMicro(actionsApi, unit, closestUnit);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
manageMoveMicro(actionsApi, unit, targetPoint);
|
|
69
|
-
}
|
|
26
|
+
const attackPoint = this.attackArea || playerData.startLocation;
|
|
27
|
+
for (const attacker of units) {
|
|
28
|
+
if (attacker.isIdle) {
|
|
29
|
+
const { rx: x, ry: y } = attacker.tile;
|
|
30
|
+
const range = attacker.primaryWeapon?.maxRange ?? attacker.secondaryWeapon?.maxRange ?? 5;
|
|
31
|
+
const nearbyHostiles = matchAwareness.getHostilesInRadius2(x, y, range * 2);
|
|
32
|
+
const closest = _.minBy(nearbyHostiles, ({ x: hX, y: hY }) => getDistanceBetweenPoints({ x, y }, { x: hX, y: hY }));
|
|
33
|
+
const closestUnit = closest ? gameApi.getUnitData(closest.unitId) ?? null : null;
|
|
34
|
+
if (closestUnit) {
|
|
35
|
+
this.manageAttackMicro(actionsApi, attacker, closestUnit);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.manageMoveMicro(actionsApi, attacker, attackPoint);
|
|
70
39
|
}
|
|
71
40
|
}
|
|
72
41
|
}
|
|
42
|
+
this.lastCommand = gameApi.getCurrentTick();
|
|
73
43
|
}
|
|
74
44
|
if (!this.lastGrab || gameApi.getCurrentTick() > this.lastGrab + GRAB_INTERVAL_TICKS) {
|
|
75
45
|
this.lastGrab = gameApi.getCurrentTick();
|
|
@@ -79,4 +49,41 @@ export class AttackOrDefenceSquad {
|
|
|
79
49
|
return noop();
|
|
80
50
|
}
|
|
81
51
|
}
|
|
52
|
+
// Micro methods
|
|
53
|
+
manageMoveMicro(actionsApi, attacker, attackPoint) {
|
|
54
|
+
if (attacker.name === "E1") {
|
|
55
|
+
if (attacker.canMove === false) {
|
|
56
|
+
actionsApi.orderUnits([attacker.id], OrderType.DeploySelected);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
actionsApi.orderUnits([attacker.id], OrderType.AttackMove, attackPoint.x, attackPoint.y);
|
|
60
|
+
}
|
|
61
|
+
manageAttackMicro(actionsApi, attacker, target) {
|
|
62
|
+
const distance = getDistanceBetweenUnits(attacker, target);
|
|
63
|
+
if (attacker.name === "E1") {
|
|
64
|
+
// Para (deployed weapon) range is 5.
|
|
65
|
+
const deployedWeaponRange = attacker.secondaryWeapon?.maxRange || 5;
|
|
66
|
+
actionsApi.orderUnits([attacker.id], OrderType.DeploySelected);
|
|
67
|
+
//console.dir({distance, attacker: attacker.name, canMove: attacker.canMove, primaryMaxRange: attacker.primaryWeapon?.maxRange, secondaryMaxRange: attacker.secondaryWeapon?.maxRange})
|
|
68
|
+
if (attacker.canMove && distance <= deployedWeaponRange * 0.8) {
|
|
69
|
+
actionsApi.orderUnits([attacker.id], OrderType.DeploySelected);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
else if (!attacker.canMove && distance > deployedWeaponRange) {
|
|
73
|
+
actionsApi.orderUnits([attacker.id], OrderType.DeploySelected);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
let targetData = target;
|
|
78
|
+
let orderType = OrderType.AttackMove;
|
|
79
|
+
const primaryWeaponRange = attacker.primaryWeapon?.maxRange || 5;
|
|
80
|
+
if (targetData?.type == ObjectType.Building && distance < primaryWeaponRange * 0.8) {
|
|
81
|
+
orderType = OrderType.Attack;
|
|
82
|
+
}
|
|
83
|
+
else if (targetData?.rules.canDisguise) {
|
|
84
|
+
// Special case for mirage tank/spy as otherwise they just sit next to it.
|
|
85
|
+
orderType = OrderType.Attack;
|
|
86
|
+
}
|
|
87
|
+
actionsApi.orderUnits([attacker.id], orderType, target.id);
|
|
88
|
+
}
|
|
82
89
|
}
|
|
@@ -35,8 +35,8 @@ export class CombatSquad {
|
|
|
35
35
|
setAttackArea(targetArea) {
|
|
36
36
|
this.targetArea = targetArea;
|
|
37
37
|
}
|
|
38
|
-
onAiUpdate(gameApi, actionsApi, playerData, squad, matchAwareness) {
|
|
39
|
-
if (!this.lastCommand || gameApi.getCurrentTick() > this.lastCommand + TARGET_UPDATE_INTERVAL_TICKS) {
|
|
38
|
+
onAiUpdate(gameApi, actionsApi, playerData, squad, matchAwareness, logger) {
|
|
39
|
+
if (squad.getUnitIds().length > 0 && (!this.lastCommand || gameApi.getCurrentTick() > this.lastCommand + TARGET_UPDATE_INTERVAL_TICKS)) {
|
|
40
40
|
this.lastCommand = gameApi.getCurrentTick();
|
|
41
41
|
const centerOfMass = squad.getCenterOfMass();
|
|
42
42
|
const maxDistance = squad.getMaxDistanceToCenterOfMass();
|
|
@@ -57,6 +57,7 @@ export class CombatSquad {
|
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
59
|
else {
|
|
60
|
+
logger(`CombatSquad ${squad.getName()} switching back to attack mode (${maxDistance})`);
|
|
60
61
|
this.state = SquadState.Attacking;
|
|
61
62
|
}
|
|
62
63
|
}
|
|
@@ -68,6 +69,7 @@ export class CombatSquad {
|
|
|
68
69
|
gameApi.mapApi.getTile(centerOfMass.x, centerOfMass.y) !== undefined &&
|
|
69
70
|
maxDistance > requiredGatherRadius) {
|
|
70
71
|
// Switch back to gather mode
|
|
72
|
+
logger(`CombatSquad ${squad.getName()} switching back to gather (${maxDistance})`);
|
|
71
73
|
this.state = SquadState.Gathering;
|
|
72
74
|
return noop();
|
|
73
75
|
}
|
|
@@ -97,3 +99,4 @@ export class CombatSquad {
|
|
|
97
99
|
}
|
|
98
100
|
}
|
|
99
101
|
}
|
|
102
|
+
//# sourceMappingURL=combatSquad.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combatSquad.js","sourceRoot":"","sources":["../../../../../src/bot/logic/squad/behaviours/combatSquad.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../../src/bot/logic/squad/behaviours/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,WAAW,EAAE,UAAU,EAAE,SAAS,EAAW,UAAU,EAAY,MAAM,wBAAwB,CAAC;AACvH,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAAC,UAAsB,EAAE,QAAkB,EAAE,WAAoB;IAC5F,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;QACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,QAAQ,CAAC;QAC3D,IAAI,UAAU,EAAE;YACZ,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;SAClE;KACJ;IACD,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAsB,EAAE,QAAkB,EAAE,MAAgB;IAC1F,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE;QACxB,qCAAqC;QACrC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,eAAe,EAAE,QAAQ,IAAI,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,QAAQ,CAAC;QAC3D,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,mBAAmB,IAAI,QAAQ,CAAC,WAAW,KAAK,WAAW,CAAC,SAAS,CAAC,EAAE;YACpG,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;YAC/D,OAAO;SACV;aAAM,IAAI,UAAU,IAAI,QAAQ,GAAG,mBAAmB,EAAE;YACrD,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;YAC/D,OAAO;SACV;KACJ;IACD,IAAI,UAAU,GAAG,MAAM,CAAC;IACxB,IAAI,SAAS,GAAc,SAAS,CAAC,MAAM,CAAC;IAC5C,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,IAAI,CAAC,CAAC;IACjE,IAAI,UAAU,EAAE,IAAI,IAAI,UAAU,CAAC,QAAQ,IAAI,QAAQ,GAAG,kBAAkB,GAAG,GAAG,EAAE;QAChF,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;KAChC;SAAM,IAAI,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE;QACtC,0EAA0E;QAC1E,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;KAChC;IACD,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC"}
|