@screeps/engine
Version:
This is a module for Screeps standalone server. See [main repository](https://github.com/screeps/screeps) for more info.
61 lines (51 loc) • 1.82 kB
JavaScript
;
const _ = require('lodash'),
utils = require('../../../utils'),
driver = utils.getDriver(),
C = driver.constants;
module.exports = function (object, scope, attackType) {
const gameTime = scope.gameTime,
bulk = scope.bulk,
roomObjects = scope.roomObjects;
if (object.type == 'spawn' && object.spawning) {
const spawning = _.find(roomObjects, { user: object.user, name: object.spawning.name });
if (spawning) {
bulk.remove(spawning._id);
delete roomObjects[spawning._id];
}
}
if (object.type == 'invaderCore') {
require('../invader-core/destroy')(object, scope);
}
if (!attackType || attackType != C.EVENT_ATTACK_TYPE_NUKE) {
const ruin = {
type: 'ruin',
room: object.room,
x: object.x,
y: object.y,
structure: {
id: object._id.toString(),
type: object.type,
hits: 0,
hitsMax: object.hitsMax,
user: object.user
},
destroyTime: gameTime,
decayTime: gameTime + (C.RUIN_DECAY_STRUCTURES[object.type] || C.RUIN_DECAY)
};
if (object.user) {
ruin.user = object.user;
}
ruin.store = object.store || {};
if (object.effects) {
const collapseEffect = _.find(object.effects, { effect: C.EFFECT_COLLAPSE_TIMER });
if (collapseEffect) {
ruin.decayTime = _.max([ruin.decayTime, collapseEffect.endTime]);
}
}
bulk.insert(ruin);
}
bulk.remove(object._id);
delete roomObjects[object._id];
};
//# sourceMappingURL=../../../sourcemaps/processor/intents/structures/_destroy.js.map