-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspawns.js
More file actions
82 lines (73 loc) · 3.06 KB
/
Copy pathspawns.js
File metadata and controls
82 lines (73 loc) · 3.06 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
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
const configuration = require('configuration');
const config = new configuration.Config();
var spawns = {
run: function() {
// console.log('spawns.js');
var harvesters = _.filter(Game.creeps, (creep) => creep.memory.role == 'harvester');
var builders = _.filter(Game.creeps, (creep) => creep.memory.role == 'builder');
var upgraders = _.filter(Game.creeps, (creep) => creep.memory.role == 'upgrader');
var workers = _.filter(Game.creeps, (creep) => creep.memory.role == 'worker');
for(var name in Game.spawns) {
var spawn = Game.spawns[name];
//#region 续命
// 如果spawn没有在孵化,能量大于100, 且周围有需要续命的creep, 且配置文件中允许续命
if(!spawn.spawning && spawn.store.getUsedCapacity(RESOURCE_ENERGY) > 100) {
var dyingCreeps = spawn.pos.findInRange(FIND_MY_CREEPS, 2);
if(dyingCreeps.length > 0){
if(config.ifRenew){
for(creep in dyingCreeps){
if(dyingCreeps[creep].ticksToLive < 800){
spawn.renewCreep(dyingCreeps[creep]);
}
}
}
else{
for(creep in dyingCreeps){
if(dyingCreeps[creep].ticksToLive < 50){
spawn.recycleCreep(dyingCreeps[creep]);
}
}
}
}
}
//#endregion
//#region 可视化
if(spawn.spawning) { // 孵化过程可视化
var spawningCreep = Game.creeps[spawn.spawning.name];
spawn.room.visual.text(
'🛠️' + spawningCreep.memory.role + ' ' + spawningCreep.memory.type,
spawn.pos.x + 1,
spawn.pos.y,
{align: 'left', opacity: 0.8});
}
else{ // 未孵化时显示各个角色数量
spawn.room.visual.text(
'📦' + harvesters.length,
spawn.pos.x + 1,
spawn.pos.y - 1,
{align: 'left', opacity: 0.8}
);
spawn.room.visual.text(
'⚒️' + builders.length,
spawn.pos.x + 1,
spawn.pos.y,
{align: 'left', opacity: 0.8}
);
spawn.room.visual.text(
'⚡' + upgraders.length,
spawn.pos.x + 1,
spawn.pos.y + 1,
{align: 'left', opacity: 0.8}
);
spawn.room.visual.text(
'🧐' + workers.length,
spawn.pos.x + 1,
spawn.pos.y + 2,
{align: 'left', opacity: 0.8}
);
}
//#endregion
}
}
};
module.exports = spawns;