38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
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);
|
|
}
|
|
}
|