UNPKG

@screeps/engine

Version:

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

55 lines (45 loc) 2.04 kB
'use strict'; var _ = require('lodash'), utils = require('../../../utils'), driver = utils.getDriver(), C = driver.constants; module.exports = function (object, scope) { const roomObjects = scope.roomObjects, bulk = scope.bulk, roomController = scope.roomController, energyAvailable = scope.energyAvailable, gameTime = scope.gameTime; if (!object || object.type != 'spawn') return; if (object.spawning) { const effect = _.find(object.effects, { power: C.PWR_DISRUPT_SPAWN }); if (effect && effect.endTime > gameTime) { bulk.update(object, { spawning: { spawnTime: 1 + object.spawning.spawnTime } }); } else { if (gameTime >= object.spawning.spawnTime - 1) { const spawningCreep = _.find(roomObjects, { type: 'creep', name: object.spawning.name, x: object.x, y: object.y }); const bornOk = require('./_born-creep')(object, spawningCreep, scope); if (bornOk) { bulk.update(object, { spawning: null }); } else { bulk.update(object, { spawning: { spawnTime: 1 + gameTime } }); } } } } if (!roomController || roomController.level < 1 || roomController.user != object.user) { return; } var spawns = _.filter(roomObjects, { type: 'spawn' }); if (spawns.length > C.CONTROLLER_STRUCTURES.spawn[roomController.level]) { spawns.sort(utils.comparatorDistance(roomController)); spawns = _.take(spawns, C.CONTROLLER_STRUCTURES.spawn[roomController.level]); if (!_.contains(spawns, object)) { return; } } if (!object.tutorial && energyAvailable < C.SPAWN_ENERGY_CAPACITY && object.store.energy < C.SPAWN_ENERGY_CAPACITY) { object.store.energy++; bulk.update(object, { store: { energy: object.store.energy } }); } }; //# sourceMappingURL=../../../sourcemaps/processor/intents/spawns/tick.js.map