const roleHarvester = require('./role.harvester') const roleRemoteHarvester = require('./role.remoteHarvester') const roleTransporter = require('./role.transporter') const roleBuilder = require('./role.builder') const roleUpgrader = require('./role.upgrader') const roleScout = require('./role.scout') const roleAttacker = require('./role.attacker') const roleRangedAttacker = require('./role.rangedAttacker') const roleHauler = require('./role.hauler') const roleHealer = require('./role.healer') const roleFiller = require('./role.filler') const roleReserver = require('./role.reserver') const {findWalkablePath} = require('./common') global.roleModules = [ roleHarvester, roleRemoteHarvester, roleBuilder, roleTransporter, roleUpgrader, roleScout, roleRangedAttacker, roleHauler, roleAttacker, roleHealer, roleFiller, roleReserver, ] global.ROLES = {} for (let mod of roleModules) { ROLES[mod.name] = mod } global.creepIsAttacker = creep => creep.getActiveBodyparts(ATTACK) + creep.getActiveBodyparts(RANGED_ATTACK) > 0 global.activeRemotes = ['E8S4', 'E8S5', 'E9S5', 'E8S3'] global.ALREADY_IN_ROOM = 'alreadyInRoom' global.MOVING = 'moving' global.moveToRoom = function (creep, targetRoom) { if (creep.pos.roomName === targetRoom) { return ALREADY_IN_ROOM } let target if (Game.rooms[targetRoom]) { target = Game.rooms[targetRoom].find(FIND_SOURCES) if (target.length > 0) { target = target[0] } } if (!target) { const exitDir = Game.map.findExit(creep.room, targetRoom); target = creep.pos.findClosestByRange(exitDir); } creep.moveByPath(findWalkablePath(creep.pos, target, {}).path); creep.say(targetRoom) return MOVING }