var roleDispatcher = require('role.dispatcher'); var creepCounts = {"harvester" : 3, "builder" : 1, "upgrader" : 2, "repairer" : 1}; module.exports.loop = function () { for(var name in Memory.creeps) { if(!Game.creeps[name]) { delete Memory.creeps[name]; } } for(const [role, count] of Object.entries(creepCounts)){ var roleCreeps = _.filter(Game.creeps, (creep) => creep.memory.role == role); if(roleCreeps.length < count && !Game.spawns['Moscow'].spawning) { var newName = role + Game.time; Game.spawns['Moscow'].spawnCreep([WORK,CARRY,MOVE], newName, {memory: {role: role}}); break; } } if(Game.spawns['Moscow'].spawning) { var spawningCreep = Game.creeps[Game.spawns['Moscow'].spawning.name]; Game.spawns['Moscow'].room.visual.text( '🛠️' + spawningCreep.memory.role, Game.spawns['Moscow'].pos.x + 1, Game.spawns['Moscow'].pos.y, {align: 'left', opacity: 0.8}); } for(var name in Game.creeps) { var creep = Game.creeps[name]; roleDispatcher.runRole(creep); } }