UNPKG

@screeps/engine

Version:

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

63 lines (54 loc) 2.31 kB
'use strict'; var _ = require('lodash'), utils = require('../../../utils'), driver = utils.getDriver(), C = driver.constants; module.exports = function (object, { roomObjects, bulkObjects, bulkUsersPowerCreeps, gameTime }) { let tombstone = { type: 'tombstone', room: object.room, x: object.x, y: object.y, user: object.user, deathTime: gameTime, decayTime: gameTime + C.TOMBSTONE_DECAY_POWER_CREEP, store: {}, powerCreepId: "" + object._id, powerCreepName: object.name, powerCreepTicksToLive: object.ageTime - gameTime, powerCreepClassName: object.className, powerCreepLevel: object.level, powerCreepPowers: _.mapValues(object.powers, i => ({ level: i.level })), powerCreepSaying: object.actionLog && object.actionLog.say && object.actionLog.say.isPublic ? object.actionLog.say.message : undefined }; let container = _.find(roomObjects, { type: 'container', x: object.x, y: object.y }); if (container) { container.store = container.store || {}; } if (object.store) { _.forEach(object.store, (amount, resourceType) => { if (amount <= 0) { return; } if (container && container.hits > 0) { const targetTotal = utils.calcResources(container); const toContainerAmount = Math.min(amount, container.storeCapacity - targetTotal); if (toContainerAmount > 0) { container.store[resourceType] = (container.store[resourceType] || 0) + toContainerAmount; bulkObjects.update(container, { store: { [resourceType]: container.store[resourceType] } }); amount -= toContainerAmount; } } if (amount > 0) { tombstone.store[resourceType] = (tombstone.store[resourceType] || 0) + amount; } }); } bulkObjects.insert(tombstone); bulkObjects.remove(object._id); bulkUsersPowerCreeps.update(object._id, { shard: null, spawnCooldownTime: Date.now() + C.POWER_CREEP_SPAWN_COOLDOWN }); }; //# sourceMappingURL=../../../sourcemaps/processor/global-intents/power/_diePowerCreep.js.map