UNPKG

@screeps/engine

Version:

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

40 lines (29 loc) 1.15 kB
var _ = require('lodash'), utils = require('../../../utils'), driver = utils.getDriver(), C = driver.constants; module.exports = function(object, intent, {roomObjects, bulk, bulkUsers, roomController, stats, gameTime}) { if(object.type != 'powerSpawn' || !object.store) return; if(!utils.checkStructureAgainstController(object, roomObjects, roomController)) { return; } var amount = 1; var effect = _.find(object.effects, {power: C.PWR_OPERATE_POWER}); if(effect && effect.endTime >= gameTime) { amount = Math.min(object.store.power, amount + C.POWER_INFO[C.PWR_OPERATE_POWER].effect[effect.level-1]); } if(object.store.power < amount || object.store.energy < amount * C.POWER_SPAWN_ENERGY_RATIO) { return; } object.store.power -= amount; object.store.energy -= amount * C.POWER_SPAWN_ENERGY_RATIO; stats.inc('powerProcessed', object.user, amount); bulk.update(object, { store: { energy: object.store.energy, power: object.store.power }}); if(bulkUsers.inc) { bulkUsers.inc(object.user, 'power', amount); } };