@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
JavaScript
;
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