-
Notifications
You must be signed in to change notification settings - Fork 3
/
role.dragon_killer.js
89 lines (89 loc) · 3.16 KB
/
role.dragon_killer.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
* Module code goes here. Use 'module.exports' to export things:
* module.exports = 'a thing';
*
* You can import it from another modules like this:
* var mod = require('role.dragon_team'); // -> 'a thing'
*/
var harvester = require('role.harvester');
var transfer2 = require('role.transfer2');
var move_to_room = require('helper.move_to_room2');
module.exports = {
killer:function(creep, from, to, kl){
creep.notifyWhenAttacked(false);
if (creep.room.name == from) {
move_to_room(creep, to);
} else {
var dragon = creep.pos.findInRange(FIND_HOSTILE_CREEPS, 4);
if (dragon[0] != undefined) {
if (creep.pos.isNearTo(dragon[0])) {
result = creep.attack(dragon[0])
} else {
creep.moveTo(dragon[0]);
}
} else {
if (creep.ticksToLive < 300) {
creep.suicide();
} else {
if (creep.hits < creep.hitsMax) {
creep.heal(creep);
} else {
creep.moveTo(Game.getObjectById(kl));
}
}
}
}
},
harvester:function(creep, from, to, kl, sr, x, y){
creep.notifyWhenAttacked(false);
if (creep.room.name == from) {
move_to_room(creep, to);
} else {
if (Game.getObjectById(kl).ticksToSpawn == undefined) {
// keeper
creep.moveTo(x, y);
} else {
if (Game.getObjectById(kl).ticksToSpawn < 15) {
creep.moveTo(x, y);
} else {
if (creep.harvest(Game.getObjectById(sr)) == ERR_NOT_IN_RANGE)
creep.moveTo(Game.getObjectById(sr))
}
}
}
},
carryer:function(creep, from, to, kl, x, y){
creep.notifyWhenAttacked(false);
if (creep.room.name == from) {
if (creep.carry.energy == 0) {
move_to_room(creep, to);
} else {
transfer2(creep, creep.room, creep.room.storage)
}
} else {
if (creep.carry.energy < creep.carryCapacity) {
if (Game.getObjectById(kl).ticksToSpawn == undefined) {
// keeper
creep.moveTo(x, y);
} else {
if (Game.getObjectById(kl).ticksToSpawn < 15) {
creep.moveTo(x, y);
} else {
var en = Game.getObjectById(kl).pos.findInRange(FIND_DROPPED_ENERGY, 5, {
filter:function(o) {
return o.energy > 100;
}
});
if (en[0] != undefined) {
if (creep.pickup(en[0]) == ERR_NOT_IN_RANGE) {
creep.moveTo(en[0]);
}
}
}
}
} else {
move_to_room(creep, from);
}
}
}
};