old source files of 2018-2020.
This commit is contained in:
92
job_harvester.js
Normal file
92
job_harvester.js
Normal file
@@ -0,0 +1,92 @@
|
||||
|
||||
/* ###########################################
|
||||
# Mine energy and do all fundamental jobs #
|
||||
###########################################*/
|
||||
|
||||
module.exports = {
|
||||
do: function(creep){
|
||||
//memory setup
|
||||
if(creep.memory.harvesting == undefined) creep.memory.harvesting = true;
|
||||
if(creep.memory.counter == undefined) creep.memory.counter = 0;
|
||||
if(creep.memory.target == undefined) creep.memory.target = null;
|
||||
|
||||
if (creep.memory.harvesting){
|
||||
var source = Game.getObjectById(creep.memory.source_id);
|
||||
var result = creep.harvest(source);
|
||||
if (result == ERR_NOT_IN_RANGE){
|
||||
creep.moveTo(source);
|
||||
}
|
||||
if (result == ERR_NOT_ENOUGH_RESOURCES || creep.store.getFreeCapacity(RESOURCE_ENERGY) == 0){
|
||||
creep.memory.harvesting = false;
|
||||
creep.memory.target = null;
|
||||
}
|
||||
} else {
|
||||
if(creep.memory.target == null){
|
||||
switch(creep.memory.counter%10){
|
||||
case 0: // upgrading
|
||||
creep.memory.target = creep.room.controller.id;
|
||||
break;
|
||||
case 1: // suppling
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
creep.memory.target = creep.pos.findClosestByRange(FIND_MY_STRUCTURES,{
|
||||
filter:(s) => ( s.structureType == STRUCTURE_SPAWN || s.structureType == STRUCTURE_EXTENSION ) && s.store.getFreeCapacity(RESOURCE_ENERGY) > 0});
|
||||
if(creep.memory.target != null) creep.memory.target = creep.memory.target.id;
|
||||
else creep.memory.counter += 1;
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
creep.memory.target = creep.pos.findClosestByRange(FIND_CONSTRUCTION_SITES);
|
||||
if(creep.memory.target != null) creep.memory.target = creep.memory.target.id;
|
||||
else creep.memory.counter += 1;
|
||||
break;
|
||||
case 9: // repairing (no walls or ramparts)
|
||||
creep.memory.target = creep.pos.findClosestByRange(FIND_STRUCTURES,{
|
||||
filter:(s) => ( s.structureType != STRUCTURE_WALL && s.structureType != STRUCTURE_RAMPART) && s.hits < s.hitsMax});
|
||||
if(creep.memory.target != null) creep.memory.target = creep.memory.target.id;
|
||||
else creep.memory.counter += 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var target = Game.getObjectById(creep.memory.target);
|
||||
var response = OK;
|
||||
switch(creep.memory.counter%10){
|
||||
case 0:
|
||||
response = creep.transfer(target, RESOURCE_ENERGY);
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
response = creep.transfer(target, RESOURCE_ENERGY);
|
||||
if(target != null && target.store.getFreeCapacity(RESOURCE_ENERGY) == 0) creep.memory.target = null;
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
response = creep.build(target);
|
||||
if(target != null && target.progress == target.progressTotal) creep.memory.target = null;
|
||||
break;
|
||||
case 9:
|
||||
response = creep.repair(target);
|
||||
if(target != null && target.hits == target.hitsMax) creep.memory.target = null;
|
||||
break;
|
||||
}
|
||||
if(response == ERR_NOT_IN_RANGE){
|
||||
creep.moveTo(target);
|
||||
} else if(response == ERR_FULL || response == ERR_INVALID_TARGET){
|
||||
creep.memory.target = null;
|
||||
}
|
||||
if (creep.store.getUsedCapacity(RESOURCE_ENERGY) == 0){
|
||||
creep.memory.harvesting = true;
|
||||
creep.memory.target = null;
|
||||
creep.memory.counter += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user