37 lines
1.5 KiB
JavaScript
37 lines
1.5 KiB
JavaScript
module.exports = {
|
|
begin(creep){
|
|
const jobMemory = creep.memory.job;
|
|
if(!jobMemory.harvesting) creep.memory.job.harvesting = false;
|
|
if(!jobMemory.counter) creep.memory.job.counter = 0;
|
|
},
|
|
|
|
tick(creep){
|
|
const jobMemory = creep.memory.job;
|
|
if(jobMemory.harvesting){
|
|
const source = creep.pos.findClosestByRange(FIND_SOURCES);
|
|
if(creep.pos.isNearTo(source)) creep.harvest(source);
|
|
else creep.moveTo(source);
|
|
if(!creep.store.getFreeCapacity(RESOURCE_ENERGY)) jobMemory.harvesting = false;
|
|
} else{
|
|
var target;
|
|
switch (jobMemory.counter%3) {
|
|
case 0: target = creep.room.controller; break;
|
|
case 1: target = creep.pos.findClosestByRange(FIND_MY_STRUCTURES, {filter:{structureType:STRUCTURE_SPAWN}}); break;
|
|
case 2: target = creep.pos.findClosestByRange(FIND_MY_CONSTRUCTION_SITES); break;
|
|
}
|
|
|
|
if(creep.pos.isNearTo(target)) {
|
|
switch (jobMemory.counter%3) {
|
|
case 0: creep.upgradeController(target); break;
|
|
case 1: creep.transfer(target, RESOURCE_ENERGY); break;
|
|
case 2: creep.build(target); break;
|
|
}
|
|
}
|
|
else creep.moveTo(target);
|
|
if(!creep.store.getUsedCapacity(RESOURCE_ENERGY)) {
|
|
jobMemory.harvesting = true;
|
|
creep.memory.job.counter += 1;
|
|
}
|
|
}
|
|
}
|
|
} |