function(creep) { if (creep.energy === 0 || creep.memory.mode == "refill") { creep.memory.mode = "refill"; var spawn = creep.pos.findNearest(Game.MY_SPAWNS, { filter: function(spawn) { return spawn.energy > 0; } }); if (spawn) { creep.moveTo(spawn); if (spawn.transferEnergy(creep) == Game.ERR_FULL) creep.memory.mode = null; } else flag(creep); } else { var structure = creep.pos.findNearest(Game.STRUCTURES, { filter: function(structure) { return structure.hits < structure.hitsMax / 2; } }); /* should completely repair it then... */ if (structure) { creep.moveTo(structure); creep.repair(structure); } else flag(creep); } }
function(creep) { if (creep.energy === 0 || creep.memory.mode == "refill") { creep.memory.mode = "refill"; var spawn = creep.pos.findNearest(Game.MY_SPAWNS, { filter: function(spawn) { return spawn.energy > 0; } }); if (spawn) { creep.moveTo(spawn); if (spawn.transferEnergy(creep) == Game.ERR_FULL) creep.memory.mode = null; } else flag(creep); } else { var site = creep.pos.findNearest(Game.CONSTRUCTION_SITES); if (site) { creep.moveTo(site); creep.build(site); } else flag(creep); } }