UNPKG

@screeps/engine

Version:

This is a module for Screeps standalone server. See [main repository](https://github.com/screeps/screeps) for more info.

34 lines (26 loc) 1.09 kB
var _ = require('lodash'), utils = require('../../../utils'), driver = utils.getDriver(), C = driver.constants; module.exports = function(object, intent, {bulk, gameTime}) { if(!/^(W|E)\d+(N|S)\d+$/.test(intent.targetRoomName)) { return; } if(!_.contains(C.RESOURCES_ALL, intent.resourceType)) { return; } if(!intent.amount || !object.store || !(object.store[intent.resourceType] >= intent.amount)) { return; } var range = utils.calcRoomsDistance(object.room, intent.targetRoomName, true); var cost = utils.calcTerminalEnergyCost(intent.amount, range); var effect = _.find(object.effects, {power: C.PWR_OPERATE_TERMINAL}); if(effect && effect.endTime >= gameTime) { cost = Math.ceil(cost * C.POWER_INFO[C.PWR_OPERATE_TERMINAL].effect[effect.level-1]); } if(intent.resourceType != C.RESOURCE_ENERGY && object.store.energy < cost || intent.resourceType == C.RESOURCE_ENERGY && object.store.energy < intent.amount + cost) { return; } bulk.update(object, {send: intent}); };