UNPKG

@screeps/engine

Version:

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

75 lines (60 loc) 3.07 kB
'use strict'; var _ = require('lodash'), utils = require('../../../utils'), driver = utils.getDriver(), C = driver.constants; module.exports = function (object, roomObjects, roomTerrain, bulk, bulkUsers, roomController, gameTime, roomInfo, users) { if (!object || object.type != 'controller') return; if (object.reservation && (gameTime >= object.reservation.endTime - 1 || object.user)) { bulk.update(object, { reservation: null }); } if (!object.user) { return; } driver.addRoomToUser(object.room, users[object.user], bulkUsers); if (object._upgradeBlocked) { bulk.update(object, { upgradeBlocked: object._upgradeBlocked }); delete object._upgradeBlocked; } if (!object.downgradeTime || object.tutorial) { bulk.update(object, { downgradeTime: gameTime + C.CONTROLLER_DOWNGRADE[object.level] + 1 }); return; } if (object._upgraded) { bulk.update(object, { downgradeTime: Math.min(object.downgradeTime + C.CONTROLLER_DOWNGRADE_RESTORE + 1, gameTime + C.CONTROLLER_DOWNGRADE[object.level] + 1) }); return; } if (gameTime == object.downgradeTime - 3000) { driver.sendNotification(object.user, 'Attention! Your Controller in room ' + object.room + ' will be downgraded to level ' + (object.level - 1) + ' in 3000 ticks (~2 hours)! Upgrade it to prevent losing of this room. <a href=\'http://support.screeps.com/hc/en-us/articles/203086021-Territory-control\'>Learn more</a>'); } if (gameTime >= object.downgradeTime - 1) { object.level--; driver.sendNotification(object.user, 'Your Controller in room ' + object.room + ' has been downgraded to level ' + object.level + ' due to absence of upgrading activity!'); if (object.level == 0) { driver.removeRoomFromUser(object.room, users[object.user], bulkUsers); object.progress = 0; object.user = null; object.downgradeTime = null; object.upgradeBlocked = null; object.safeMode = null; object.safeModeAvailable = 0; object.safeModeCooldown = roomInfo.novice > Date.now() ? null : gameTime + C.SAFE_MODE_COOLDOWN; } else { object.downgradeTime = gameTime + C.CONTROLLER_DOWNGRADE[object.level] + 1; object.progress += Math.round(C.CONTROLLER_LEVELS[object.level] * 0.9); object.safeModeAvailable = 0; object.safeModeCooldown = roomInfo.novice > Date.now() ? null : gameTime + C.SAFE_MODE_COOLDOWN; } bulk.update(object, { downgradeTime: object.downgradeTime, level: object.level, progress: object.progress, user: object.user, upgradeBlocked: object.upgradeBlocked, safeMode: object.safeMode, safeModeCooldown: object.safeModeCooldown, safeModeAvailable: object.safeModeAvailable }); } }; //# sourceMappingURL=../../../sourcemaps/processor/intents/controllers/tick.js.map