/* ########################### # 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 } }); } } } } } };