Files
screeps/ai_main.js
2022-04-15 14:27:00 +02:00

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 }
});
}
}
}
}
}
};