-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtower.basics.js
72 lines (57 loc) · 3.35 KB
/
tower.basics.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
var roleDoctor = require('role.doctor');
var towerBasics = {
run: function(room) {
var towers = room.find(FIND_STRUCTURES, {
filter: (structure) => { return structure.structureType == STRUCTURE_TOWER }
})
// console.log('Towers: ' + towers.length)
// console.log('test1')
for (let index in towers) {
let tower = towers[index]
// console.log(tower);
var closestHostile = tower.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
let energyRatio = (tower.store.getUsedCapacity(RESOURCE_ENERGY) / tower.store.getCapacity(RESOURCE_ENERGY))
if(closestHostile) {
tower.attack(closestHostile);
} else if (energyRatio > 0.1){
var closestDamagedStructure = tower.pos.findClosestByRange(FIND_STRUCTURES, {
filter: roleDoctor.repairStructureFilter
});
var closestAbsoluteDamagedStructure = tower.pos.findClosestByRange(FIND_STRUCTURES, {
filter: (structure) => { return structure.hits < structure.hitsMax }
});
var closestVeryUrgentDamagedStructure = tower.pos.findClosestByRange(FIND_STRUCTURES, {
filter: (structure) => { return (structure.hits < 500) && (structure.hitsMax > 500)}
})
var closestUrgentDamagedStructure = tower.pos.findClosestByRange(FIND_STRUCTURES, {
filter: (structure) => {
return ((structure.hits < 10 * 1000) && structure.hitsMax > 10 * 1000) // ||
// (structure.hits / structure.hitsMax < 0.001)
}
})
var closestDamagedCreep = tower.pos.findClosestByRange(FIND_MY_CREEPS, {
filter: (creep) => { return creep.hits < creep.hitsMax }
})
// console.log('tower.basis: ' + closestDamagedStructure)
if (closestDamagedCreep) {
let repairCode = tower.repair(closestDamagedCreep)
// console.log('tower.basics: ' + tower + ' repair creep ' + closestDamagedCreep + ' returned: ' + repairCode)
} else if(closestVeryUrgentDamagedStructure){
let repairCode = tower.repair(closestVeryUrgentDamagedStructure)
} else if(closestUrgentDamagedStructure) {
let repairCode = tower.repair(closestUrgentDamagedStructure)
// console.log('tower.basics: ' + tower + ' repair urgent ' + closestUrgentDamagedStructure + ' returned: ' + repairCode)
} else if(closestDamagedStructure) {
let repairCode = tower.repair(closestDamagedStructure);
// console.log('tower.basics: ' + tower + ' repair just ' + closestDamagedStructure + ' returned: ' + repairCode)
} else if(closestAbsoluteDamagedStructure && (energyRatio > 0.5)) {
let repairCode = tower.repair(closestAbsoluteDamagedStructure)
// console.log('tower.basics: ' + tower + ' repair abs ' + closestAbsoluteDamagedStructure + ' returned: ' + repairCode)
} else {
console.log('tower.basics: ' + tower + ' is idle')
}
}
}
}
}
module.exports = towerBasics