forked from shryme/Screeps
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhealer.js
More file actions
37 lines (32 loc) · 1.39 KB
/
Copy pathhealer.js
File metadata and controls
37 lines (32 loc) · 1.39 KB
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
module.exports = function (creep) {
var target;
if (creep.memory.targetRole)
target = creep.pos.findClosest(Game.MY_CREEPS, {filter: function(object) {return object.hits < object.hitsMax && object.id !== creep.id && object.memory.role !== 'source_destroyer' && object.memory.role === creep.memory.targetRole;} });
else
target = creep.pos.findClosest(Game.MY_CREEPS, {filter: function(object)
{return object.hits < object.hitsMax && object.id !== creep.id && object.memory.role !== 'source_destroyer' && object.memory.role !== 'source_harvester' && object.memory.role !== 'source_healer' && object.memory.role !== 'source_carrier';} });
if (target) {
//If the healer have no more working healer module, stays at flag
if (creep.getActiveBodyparts(Game.HEAL) == 0 && Game.flags.Flag1 !== undefined)
target = Game.flags.Flag1;
else {
creep.moveTo(target);
var range = creep.pos.getRangeTo(target);
if (range > 1)
creep.rangedHeal(target);
else
creep.heal(target);
}
}
else {
//If there is no one to heal, find the closest creep and follow it
var tm
if (creep.memory.targetRole)
tm = creep.pos.findClosest(Game.MY_CREEPS, {filter: function(object) {return object.memory.role === creep.memory.targetRole} });
else
tm = creep.pos.findClosest(Game.MY_CREEPS, {filter: function(object) {return object.memory.role === 'guard'} });
if (tm) {
creep.moveTo(tm);
}
}
}