const path = require('path') module.exports = { run(creep) { let status = change_status() switch (status) { case 'harvester': creep.say('hv') harvester_job(creep) break case 'picker': creep.say('pc') picker_job(creep) break } } } function harvester_job(creep) { if (creep.carry.energy < creep.carryCapacity) { let working_target_id = creep.working_target_id; let working_target = Game.getObjectById(working_target_id); if (creep.harvest(working_target) == ERR_NOT_IN_RANGE) { creep.moveTo(working_target); path.visualPath(creep.pos, working_target.pos); } } else { if (creep.transfer(Game.spawns['Spawn1'], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) { creep.moveTo(Game.spawns['Spawn1']); path.visualPath(creep.pos, Game.spawns['Spawn1'].pos); } } } function picker_job(creep) { if (Game.spawns['Spawn1'].store.getFreeCapacity(RESOURCE_ENERGY) == 0) { creep.say('SB') return } let working_target_id = creep.working_target_id; if (!working_target_id) { creep.say('SB') } let working_target = Game.getObjectById(working_target_id); let Re_code = creep.harvest(working_target); if (Re_code == ERR_NOT_IN_RANGE) { creep.moveTo(working_target); } else { if (OK == Re_code) { creep.harvest(working_target); creep.drop(RESOURCE_ENERGY); } } } function change_status() { if (_(Game.creeps).filter({ memory: { role: 'transfer' } }).size() > 0) { return 'picker' } else { return 'harvester' } }