62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
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'
|
|
}
|
|
} |