UNPKG

@screeps/engine

Version:

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

58 lines (47 loc) 1.84 kB
'use strict'; var _ = require('lodash'), utils = require('../../../utils'), driver = utils.getDriver(), C = driver.constants; module.exports = function (object, intent, roomObjects, roomTerrain, bulk) { if (object.cooldown > 0) { return; } var lab1 = roomObjects[intent.lab1]; if (!lab1 || lab1.type != 'lab' || lab1.mineralAmount < C.LAB_REACTION_AMOUNT) { return; } if (Math.abs(lab1.x - object.x) > 2 || Math.abs(lab1.y - object.y) > 2) { return; } var lab2 = roomObjects[intent.lab2]; if (!lab2 || lab2.type != 'lab' || lab2.mineralAmount < C.LAB_REACTION_AMOUNT) { return; } if (Math.abs(lab2.x - object.x) > 2 || Math.abs(lab2.y - object.y) > 2) { return; } if (object.mineralAmount > object.mineralCapacity - C.LAB_REACTION_AMOUNT) { return; } if (!C.REACTIONS[lab1.mineralType][lab2.mineralType] || object.mineralType && object.mineralType != C.REACTIONS[lab1.mineralType][lab2.mineralType]) { return; } bulk.update(object, { mineralAmount: object.mineralAmount + C.LAB_REACTION_AMOUNT, cooldown: C.LAB_COOLDOWN }); if (!object.mineralType) { bulk.update(object, { mineralType: C.REACTIONS[lab1.mineralType][lab2.mineralType] }); } bulk.update(lab1, { mineralAmount: lab1.mineralAmount - C.LAB_REACTION_AMOUNT }); if (!lab1.mineralAmount) { bulk.update(lab1, { mineralType: null }); } bulk.update(lab2, { mineralAmount: lab2.mineralAmount - C.LAB_REACTION_AMOUNT }); if (!lab2.mineralAmount) { bulk.update(lab2, { mineralType: null }); } object.actionLog.runReaction = { x1: lab1.x, y1: lab1.y, x2: lab2.x, y2: lab2.y }; }; //# sourceMappingURL=../../../sourcemaps/processor/intents/labs/run-reaction.js.map