-
Notifications
You must be signed in to change notification settings - Fork 0
/
role.scout.js
72 lines (66 loc) · 2.09 KB
/
role.scout.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
let styles = require("styles")
module.exports = class {
constructor(creep){
this.creep = creep
}
find(){
let result = _.reduce(Game.creeps, function(scout, creep, key) {
if(creep.memory.role == "scout"){
scout.push(creep)
}
return scout
}, [])
return result
}
wanted(){
let rooms = _.values(Game.rooms)[0].adjacentRooms()
return _.unique(rooms).length
}
run(){
let self = this
this.creep.memory.target = ""
if(!this.creep.memory.target){
for(let adjacent of this.creep.room.adjacentRooms()){
let assigned = _.filter(_.values(Game.creeps), function(creep){
return creep.memory.target == adjacent.target
})
if(assigned.length == 0 ){
self.creep.memory.target = adjacent.target
self.creep.memory.home = adjacent.source
break
}
}
}
if(this.creep.room.name != this.creep.memory.target && this.creep.room.name != this.creep.memory.home){
let room = Game.rooms[this.creep.memory.home]
if(!room.controller){
//console.log("No controller in room " + room.name)
return
}
this.creep.moveTo(room.controller.pos)
return
}
if(this.creep.room.name != this.creep.memory.target){
let room = Game.rooms[this.creep.memory.home]
let exitDir = room.findExitTo(this.creep.memory.target)
let exit = this.creep.pos.findClosestByPath(exitDir)
this.moveTo(exit)
}
if(this.creep.room.name == this.creep.memory.target){
let room = Game.rooms[this.creep.memory.target]
let controllers =_.filter(_.values(Game.rooms), function(r){ return (r.controller && r.controller.my) })
if(Game.gcl > controllers.length){
if(this.creep.claimController(room.controller) == ERR_NOT_IN_RANGE){
this.creep.moveTo(room.controller)
}
} else {
if(this.creep.reserveController(room.controller) == ERR_NOT_IN_RANGE){
this.creep.moveTo(room.controller)
}
}
}
}
moveTo(dest){
this.creep.moveTo(dest, {visualizePathStyle: styles.prio})
}
}