UNPKG

@screeps/engine

Version:

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

47 lines (37 loc) 1.8 kB
'use strict'; var _ = require('lodash'), utils = require('../../../utils'), driver = utils.getDriver(), C = driver.constants; module.exports = function (object, roomObjects, bulk, stats, dropRate) { if (dropRate === undefined) { dropRate = C.CREEP_CORPSE_RATE; } bulk.remove(object._id); delete roomObjects[object._id]; if (dropRate > 0 && !object.userSummoned) { var lifeTime = _.any(object.body, { type: C.CLAIM }) ? C.CREEP_CLAIM_LIFE_TIME : C.CREEP_LIFE_TIME; var bodyResources = { energy: utils.calcCreepCost(object.body) * dropRate * object._ticksToLive / lifeTime }; object.body.forEach(function (i) { if (i.boost) { bodyResources[i.boost] = bodyResources[i.boost] || 0; bodyResources[i.boost] += C.LAB_BOOST_MINERAL * dropRate * object._ticksToLive / lifeTime; bodyResources.energy += C.LAB_BOOST_ENERGY * dropRate * object._ticksToLive / lifeTime; } }); _.forEach(bodyResources, function (amount, resourceType) { if (amount > 0) { require('./_create-energy')(object.x, object.y, object.room, Math.floor(amount), roomObjects, bulk, resourceType, object.dropToContainer); } }); C.RESOURCES_ALL.forEach(function (resourceType) { if (object[resourceType] > 0) { require('./_create-energy')(object.x, object.y, object.room, object[resourceType], roomObjects, bulk, resourceType, object.dropToContainer); } }); } if (stats && object.user != '3' && object.user != '2') { stats.inc('creepsLost', object.user, object.body.length); } }; //# sourceMappingURL=../../../sourcemaps/processor/intents/creeps/_die.js.map