@screeps/engine
Version:
This is a module for Screeps standalone server. See [main repository](https://github.com/screeps/screeps) for more info.
53 lines (45 loc) • 1.75 kB
JavaScript
const _ = require('lodash'),
utils = require('../../../../utils'),
driver = utils.getDriver(),
C = driver.constants,
fakeRuntime = require('../../../common/fake-runtime');
module.exports = function(creep, scope) {
const {roomObjects} = scope;
const intents = {
list: {},
set(id, name, data) {
this.list[id] = this.list[id] || {};
this.list[id][name] = data;
}
};
const creeps = [], invaders = [], healers = [], hostiles = [], defenders = [], fortifications = [];
_.forEach(roomObjects, function(object){
if(!object.spawning && object.type == 'creep' || object.type == 'powerCreep') {
creeps.push(object);
if(creep.user == object.user) {
invaders.push(object);
if(fakeRuntime.hasActiveBodyparts(object, C.HEAL)) {
healers.push(object);
}
} else {
if(object.user != 3) {
hostiles.push(object);
if(_.some(object.body, i => (i.hits > 0) && (i.type == C.ATTACK) || (i.type == C.RANGED_ATTACK))) {
defenders.push(object);
}
}
}
}
if(object.type==C.STRUCTURE_RAMPART || object.type==C.STRUCTURE_WALL) {
fortifications.push(object);
}
});
const context = {scope, intents, roomObjects, creeps, invaders, healers, hostiles, defenders, fortifications};
if(_.some(creep.body, {type: C.HEAL})) {
require('./healer')(creep, context);
} else {
require('./findAttack')(creep, context);
}
require('./shootAtWill')(creep, context);
return intents.list;
};