UNPKG

@screeps/engine

Version:

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

52 lines (39 loc) 2.09 kB
'use strict'; var _ = require('lodash'), utils = require('../../../utils'), driver = utils.getDriver(), C = driver.constants; module.exports = function (object, intent, scope) { const gameTime = scope.gameTime, roomObjects = scope.roomObjects, roomController = scope.roomController, bulk = scope.bulk; if (!object || !object.store || !C.COMMODITIES[intent.resourceType] || !!C.COMMODITIES[intent.resourceType].level && object.level != C.COMMODITIES[intent.resourceType].level) { return; } if (!!object.cooldownTime && object.cooldownTime > gameTime) { return; } if (!utils.checkStructureAgainstController(object, roomObjects, roomController)) { return; } if (!!C.COMMODITIES[intent.resourceType].level && object.level > 0 && !_.some(object.effects, e => e.power == C.PWR_OPERATE_FACTORY && e.level == C.COMMODITIES[intent.resourceType].level && e.endTime >= gameTime)) { return; } if (_.some(_.keys(C.COMMODITIES[intent.resourceType].components), p => (object.store[p] || 0) < C.COMMODITIES[intent.resourceType].components[p])) { return; } const targetTotal = utils.calcResources(object); const componentsTotal = _.sum(C.COMMODITIES[intent.resourceType].components); if (targetTotal - componentsTotal + (C.COMMODITIES[intent.resourceType].amount || 1) > object.storeCapacity) { return; } for (let part in C.COMMODITIES[intent.resourceType].components) { object.store[part] = object.store[part] - C.COMMODITIES[intent.resourceType].components[part]; } object.store[intent.resourceType] = (object.store[intent.resourceType] || 0) + (C.COMMODITIES[intent.resourceType].amount || 1); bulk.update(object, { store: object.store }); object.actionLog.produce = { x: object.x, y: object.y, resourceType: intent.resourceType }; bulk.update(object, { cooldownTime: C.COMMODITIES[intent.resourceType].cooldown + gameTime }); }; //# sourceMappingURL=../../../sourcemaps/processor/intents/factories/produce.js.map