-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrole.powerFarmer.js
39 lines (33 loc) · 1.2 KB
/
role.powerFarmer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const movement = require("helper.movement");
const spawnHelper = require("helper.spawning");
module.exports = {
name: "powerFarmer",
parts: spawnHelper.makeParts(20, MOVE, 20, ATTACK),
run: function(creep) {
if(creep.room.name !== creep.memory.target) {
movement.moveToRoom(creep, creep.memory.target);
return;
}
let target = creep.pos.findClosestByRange(FIND_STRUCTURES,
{ filter: (s) => s.structureType == STRUCTURE_POWER_BANK });
if(target) {
this.attackBank(creep, target);
} else {
this.clearPath(creep);
}
},
attackBank: function(creep, target) {
let returnDamage = POWER_BANK_HIT_BACK * ATTACK_POWER * creep.getActiveBodyparts(ATTACK);
if(returnDamage >= creep.hits) return;
if(creep.attack(target) == ERR_NOT_IN_RANGE) {
creep.goTo(target);
}
},
clearPath: function(creep) {
let resources = creep.room.find(FIND_DROPPED_RESOURCES);
if(resources.length === 0) return;
creep.fleeFrom(resources, 4);
}
};
const profiler = require("screeps-profiler");
profiler.registerObject(module.exports, 'powerFarmer');