UNPKG

@screeps/engine

Version:

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

49 lines (38 loc) 1.76 kB
'use strict'; var _ = require('lodash'), utils = require('../../../utils'), driver = utils.getDriver(), C = driver.constants; module.exports = function (object, roomObjects, roomTerrain, bulk, bulkUsers, roomController, stats, energyAvailable) { if (!object || object.type != 'spawn') return; if (object.spawning) { object.spawning.remainingTime--; if (object.spawning.remainingTime <= 0) { var spawningCreep = _.find(roomObjects, { type: 'creep', name: object.spawning.name, x: object.x, y: object.y }); var bornOk = require('./_born-creep')(object, spawningCreep, roomObjects, roomTerrain, bulk, stats); if (bornOk) { bulk.update(object, { spawning: null }); } else { bulk.update(object, { spawning: { remainingTime: 0 } }); } } else { bulk.update(object, { spawning: { remainingTime: object.spawning.remainingTime } }); } } 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.energy < C.SPAWN_ENERGY_CAPACITY) { object.energy++; bulk.update(object, { energy: object.energy }); } }; //# sourceMappingURL=../../../sourcemaps/processor/intents/spawns/tick.js.map