UNPKG

@screeps/engine

Version:

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

80 lines (68 loc) 2.83 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, gameTime, roomInfo) { if (roomInfo.novice && roomInfo.novice > Date.now() || roomInfo.respawnArea && roomInfo.respawnArea > Date.now()) { bulk.remove(object._id); delete roomObjects[object._id]; return; } if (gameTime == object.landTime - 1) { _.forEach(roomObjects, function (target) { if (!target) { return; } if (target.type == 'creep') { require('../creeps/_die')(target, roomObjects, bulk, stats, 0); } if (target.type == 'constructionSite' || target.type == 'energy') { bulk.remove(target._id); delete roomObjects[target._id]; } }); for (var dx = -2; dx <= 2; dx++) { var _loop = function _loop(dy) { var x = object.x + dx, y = object.y + dy, range = Math.max(Math.abs(dx), Math.abs(dy)), damage = range == 0 ? C.NUKE_DAMAGE[0] : C.NUKE_DAMAGE[2]; var objects = _.filter(roomObjects, { x: x, y: y }); var rampart = _.find(objects, { type: 'rampart' }); if (rampart) { var rampartHits = rampart.hits; _.pull(objects, rampart); require('../_damage')(object, rampart, damage, 'ranged', roomObjects, roomTerrain, bulk, roomController, stats, gameTime, roomInfo); damage -= rampartHits; } if (damage > 0) { objects.forEach(function (target) { require('../_damage')(object, target, damage, 'ranged', roomObjects, roomTerrain, bulk, roomController, stats, gameTime, roomInfo); }); } }; for (var dy = -2; dy <= 2; dy++) { _loop(dy); } } if (roomController) { if (roomController.safeMode > gameTime) { bulk.update(roomController, { safeMode: gameTime, safeModeCooldown: null }); } if (roomController.user) { bulk.update(roomController, { upgradeBlocked: gameTime + C.CONTROLLER_NUKE_BLOCKED_UPGRADE }); } } } if (gameTime >= object.landTime) { bulk.remove(object._id); delete roomObjects[object._id]; }; }; //# sourceMappingURL=../../../sourcemaps/processor/intents/nukes/tick.js.map