You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.7 KiB
60 lines
1.7 KiB
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
|
|
}
|
|
|