reserveBoosts: function(room, body, boostAction, replaceWithToughs) { //console.log("reserveBoosts",boostAction); var boostLabs = []; var labs = room.find(FIND_STRUCTURES, { filter: function(l) { var flag = Game.flags[l.id]; if (!flag) return false; return l.structureType == STRUCTURE_LAB && flag.secondaryColor != COLOR_WHITE && l.mineralAmount > LAB_BOOST_MINERAL* gc.BOOST_RESERVE && l.energy > LAB_BOOST_ENERGY * gc.BOOST_RESERVE; } }); if (labs.length > 0 && body) { var newBody = body.slice(0); var actionsAdded = []; //console.log(newBody,"reserveBoosts",labs); for ( var i = 0 ; i < labs.length ; i++ ) { var flag = Game.flags[labs[i].id]; var resource = labColours.resource(flag.color, flag.secondaryColor); var maxBoosts = Math.floor(Math.min(labs[i].mineralAmount/LAB_BOOST_MINERAL, labs[i].energy/LAB_BOOST_ENERGY)); var boostPart = _.findKey(BOOSTS,resource); var action = _.findKey( BOOSTS[boostPart][resource] ); var multiplyer = BOOSTS[boostPart][resource][action]; //console.log(flag,"flag maxBoosts",maxBoosts,"resource",resource,"boostPart", // boostPart,"action",action,"multiplyer",multiplyer); if (boostAction.indexOf(action) != -1 && body.indexOf(boostPart) != -1) { var numParts = gf.countValues(body, boostPart); var partsBoosted = Math.min(maxBoosts, numParts - Math.ceil(numParts/multiplyer)); //console.log("numParts",numParts,"partsBoosted",partsBoosted); if ( actionsAdded.indexOf(action) == -1 ) { for ( var j = 0 ; j < partsBoosted ; j++ ) { var index = newBody.indexOf(boostPart); //console.log(j,"in for index",index,"newBody",newBody) ; newBody.splice(index,1); } } actionsAdded.push(action); boostLabs.push(labs[i].id); } // if } // for if (boostLabs.length > 0) { return { body : newBody, boostLabs : boostLabs }; } } if (replaceWithToughs && body && newBody) { var toughs = body.length - newBody.length; for ( var k = 0 ; k < toughs ; k++ ) { newBody.unshift(TOUGH); } } }
move: function(terminal) { for ( var flagName in Game.flags) { if (Game.flags[flagName].memory.type == gc.FLAG_LAB && Game.flags[flagName].secondaryColor == COLOR_WHITE && Game.flags[flagName].color != COLOR_WHITE) { var resourceId = labColours.resource(Game.flags[flagName].color, COLOR_WHITE); //console.log(terminal,"fond lab resource",resourceId,terminal.store[resourceId]); if (terminal.store[resourceId] > 5000) { var lab = Game.getObjectById(flagName); if (lab.mineralAmount < gc.LAB_REFILL_MINERAL_THRESHOLD) { // console.log(terminal,"fond lab resource",resourceId,"has resouce",terminal.store[resourceId]); if (!this.roomHasResource(lab.room, resourceId) && this.roomHasTerminalWithSpace(lab.room)) { var result = terminal.send(resourceId, gc.TERMINAL_TERMINAL_SEND_AMOUNT, lab.room.name); console.log(terminal,"send resourceId",resourceId,"result",result); } } } } } },