55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
// usernames are all lowercase, we compare with to lower
|
|
var USERNAME_WHITELIST = ['chrisinajar', 'ho0ber', 'fractaloop', 'n7-anthony', 'overra', 'tyrel', 'fervens'];
|
|
|
|
module.exports = {
|
|
findEnemy: findEnemy,
|
|
run: run
|
|
};
|
|
|
|
/*
|
|
var target = findEnemy(creep);
|
|
*/
|
|
function findEnemy (creep) {
|
|
var targets = creep.room.find(FIND_HOSTILE_CREEPS, {
|
|
filter: (c) => {
|
|
return (USERNAME_WHITELIST.indexOf(c.owner.username.toLowerCase()) === -1);
|
|
}
|
|
});
|
|
if (!targets.length) {
|
|
return creep.room.controller;
|
|
}
|
|
return creep.pos.findClosestByPath(targets);
|
|
}
|
|
|
|
function run (creep) {
|
|
var target = findEnemy(creep);
|
|
if (!target) {
|
|
target = findWall(creep);
|
|
// getDirectionTo
|
|
if (!creep.pos.isNearTo(target)) {
|
|
return creep.moveTo(target);
|
|
} else {
|
|
creep.attack(target);
|
|
}
|
|
var direction = creep.pos.getDirectionTo(target);
|
|
creep.memory.wallDirection = direction;
|
|
} else {
|
|
creep.moveTo(target);
|
|
creep.attack(target);
|
|
}
|
|
}
|
|
|
|
function findWall (creep) {
|
|
var targets = creep.room.find(FIND_STRUCTURES, {
|
|
filter: function(object) {
|
|
if (object.my) {
|
|
return false;
|
|
}
|
|
if (object.structureType !== STRUCTURE_TOWER && object.structureType !== STRUCTURE_WALL) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
});
|
|
return creep.pos.findClosestByPath(targets);
|
|
} |