screeps-scripts/role.upgrader.js

43 lines
1.5 KiB
JavaScript

var roleUpgrader = {
/** @param {Creep} creep **/
run: function(creep) {
if(creep.memory.upgrading && creep.store[RESOURCE_ENERGY] == 0) {
creep.memory.upgrading = false;
creep.say('🔄 harvest');
}
if(!creep.memory.upgrading && creep.store.getFreeCapacity() == 0) {
creep.memory.upgrading = true;
creep.say('⚡ upgrade');
}
if(creep.memory.upgrading) {
if(creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
creep.moveTo(creep.room.controller, {visualizePathStyle: {stroke: '#ffffff'}});
}
}
else {
var targets = creep.room.find(FIND_STRUCTURES, {
filter: (structure) => {
return (structure.structureType == STRUCTURE_CONTAINER &&
structure.store.getUsedCapacity(RESOURCE_ENERGY)) > 0;
}
});
if(targets.length > 0) {
var t = creep.pos.findClosestByRange(targets)
if(creep.withdraw(t, RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
creep.moveTo(t, {visualizePathStyle: {stroke: '#ffffff'}});
}
} else {
var sources = creep.room.find(FIND_SOURCES);
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], {visualizePathStyle: {stroke: '#ffaa00'}});
}
}
}
}
};
module.exports = roleUpgrader;