-
Notifications
You must be signed in to change notification settings - Fork 0
/
role.builder.js
68 lines (64 loc) · 2.55 KB
/
role.builder.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
const BEHAVIOUR_NEAREST=0;
const BEHAVIOUR_FIRST=1;
var findEnergy = require('function.findEnergy');
var autoRenew = require('function.autoRenew');
var avoidRoads = require('function.avoidRoads');
var roleBuilder = {
/** @param {Creep} creep **/
run: function(creep) {
// if(creep.room.name!='W42N33'){
// creep.moveTo(new RoomPosition(22,22,'W42N33'));
// return -2;
// }
var target;
//if(creep.memory.behaviour==BEHAVIOUR_NEAREST){
target = creep.pos.findClosestByRange(FIND_CONSTRUCTION_SITES,
{filter:site => site.my});
// }
// else if(creep.memory.behaviour==BEHAVIOUR_FIRST){
// var targets = creep.room.find(FIND_CONSTRUCTION_SITES,
// {filter:site => site.owner.username=='iamgqr'});
// target=targets[0];
// }
if(!target) return -1;
if(creep.memory.working && creep.carry.energy == 0) {
creep.memory.working = false;
creep.say('🔄 harvest');
}
if(!creep.memory.working && creep.carry.energy == creep.carryCapacity) {
creep.memory.working = true;
creep.say('🚧 build');
}
if(creep.memory.working){
if(creep.build(target) == ERR_NOT_IN_RANGE) {
var reuse=6;
if(creep.pos.inRangeTo(target,6)) reuse=0;
creep.moveTo(target, {visualizePathStyle: {stroke: '#ccff33'},reusePath:reuse,range:3});
//38
}
else avoidRoads(creep);
/*
var target = creep.pos.findClosestByRange(FIND_CONSTRUCTION_SITES,{filter:site => site.owner.username=='iamgqr'});
if(target) {
if(creep.build(target) == ERR_NOT_IN_RANGE) {
creep.moveTo(target, {visualizePathStyle: {stroke: '#ccff33'}});
}
}else// return -1;
{
creep.moveTo(Game.getObjectById('59f1a05082100e1594f36846'), {visualizePathStyle: {stroke: '#ccff33'}});
}*/
}
else{
if(autoRenew(creep)) return;
if(findEnergy(creep)==0){
creep.moveTo(target, {visualizePathStyle: {stroke: '#ccff33'},range:3});
}
/*target=Game.getObjectById('5b798bf04602265638d1761b');
if(creep.withdraw(target,RESOURCE_ENERGY)==ERR_NOT_IN_RANGE){
creep.moveTo(target, {visualizePathStyle: {stroke: '#ffaa00'}});
}*/
}
return 0;
}
};
module.exports = roleBuilder;