59 lines
3.2 KiB
JavaScript
59 lines
3.2 KiB
JavaScript
|
|
/* ###########################
|
|
# Cross room managment AI #
|
|
########################### */
|
|
|
|
var roles = require("roles");
|
|
|
|
module.exports = {
|
|
run: function () {
|
|
if (Memory.AImain == null) Memory.AImain = {};
|
|
if (Memory.AImain.MainHub == null) Memory.AImain.MainHub = "insert name"
|
|
for (var n_flag in Game.flags) {
|
|
var flag = Game.flags[n_flag];
|
|
if (flag.color == COLOR_YELLOW) {
|
|
if (flag.room != undefined && flag.room.find(FIND_MY_CREEPS).length != flag.room.find(FIND_CREEPS).length) {
|
|
Game.spawns[Memory.AImain.MainHub].spawnCreep([TOUGH, TOUGH, TOUGH, TOUGH, TOUGH, TOUGH, TOUGH, ATTACK, ATTACK, ATTACK, MOVE],
|
|
"Defender", { memory: { role: roles.ROLE_DEFENDER, flag: flag.name } });
|
|
break;
|
|
}
|
|
if (flag.room == undefined || (flag.room != undefined && (flag.room.controller.reservation == undefined || flag.room.controller.reservation.ticksToEnd < 4500))) {
|
|
if (Memory.AImain.MainHub != "insert name") Game.spawns[Memory.AImain.MainHub].spawnCreep([MOVE, CLAIM, CLAIM], "columbus: "+flag.name, { memory: { role: roles.ROLE_RESERVER, target: flag.name, home: Memory.AImain.MainHub } });
|
|
}
|
|
if (flag.room != undefined && flag.room.controller.reservation != undefined) {
|
|
var containers = flag.room.find(FIND_STRUCTURES, { filter: (s) => (s.structureType == STRUCTURE_CONTAINER) });
|
|
if (containers.length > 0) {
|
|
var has_miner = false;
|
|
var creeps = flag.room.find(FIND_CREEPS);
|
|
for (var cp in creeps) {
|
|
console.log(creeps[cp]);
|
|
var creep = creeps[cp];
|
|
if (creep.memory.role == roles.ROLE_MINER) {
|
|
has_miner = true;
|
|
}
|
|
}
|
|
if (!has_miner) {
|
|
Game.spawns[Memory.AImain.MainHub].spawnCreep([WORK, WORK, WORK, WORK, WORK, MOVE], "ForeignMiner", { memory: { role: roles.ROLE_MINER, container_id: containers[0].id } });
|
|
}
|
|
}
|
|
var harvs = flag.room.find(FIND_MY_CREEPS).length;
|
|
var source_id = flag.room.find(FIND_SOURCES)[0].id;
|
|
if (harvs < 4) {
|
|
var spawn = Game.spawns[Memory.AImain.MainHub];
|
|
var body = [];
|
|
for (let i = 0; i < Math.floor(spawn.room.energyAvailable / 200); i++) {
|
|
body.push(WORK);
|
|
body.push(CARRY);
|
|
body.push(MOVE);
|
|
}
|
|
var name = "ForeignHarvy" + spawn.memory.creep_iterate;
|
|
spawn.spawnCreep(body, name, {
|
|
memory:
|
|
{ role: roles.ROLE_RESERVED_HARVESTER, source_id: source_id }
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}; |