run: function (flag) { if (!Game.rooms[flag.pos.roomName]) return; //console.log("flagMineral run flag",flag); if (gf.isStructureTypeAtPos(flag.pos, STRUCTURE_EXTRACTOR)) { flag.memory.extractor = true; } if (flag.memory.extractor) { if ( roomBase.isMyRoom(flag.pos.roomName)) { flag.memory.linkerFrom = { room : flag.pos.roomName, distance : 0 }; flag.memory.porterFrom = { room : flag.pos.roomName, distance : 0 }; } else { console.log(roomBase.isNeutralRoom(flag.pos.roomName), "flagMineral flag", flag, JSON.stringify(flag.memory)); //var atPos = flag.pos.lookFor(LOOK_STRUCTURES); //var extractorFound = false; //for ( var i = 0 ; i < atPos.length ; i++ ){ // if (atPos.structureType == STRUCTURE_EXTRACTOR) // extractorFound = true; //} if ( roomBase.isNeutralRoom(flag.pos.roomName) && flag.memory.extractor ) { console.log("flagMineral flag extractor found", flag); flag.memory.linkerFrom = this.linkerSupplyRoom(flag); // flag.memory.porterFrom = this.porterSupplyRoom(flag); } } } },
draftNewPolicyId: function(oldPolicy) { if (this.readyAttackKeeper(oldPolicy)) { var insideKeeperRoom = roomBase.justInsideNextRoom( oldPolicy.flag.pos.roomName, oldPolicy.keeperRoom, oldPolicy.flag.pos); if (insideKeeperRoom) { oldPolicy.flag.setPosition(insideKeeperRoom); this.creepsMoveToFlag(currentPolicy) return policyFrameworks.policyKeeperSectorAttack(oldPolicy, true); } } return oldPolicy; },
TaskLinkerRepairDump.prototype.doTask = function(creep, task) { var flag = Game.flags[task.flagName]; var container = Game.getObjectById(flag.memory.mainDumpId); if (!container || container.structureType != STRUCTURE_CONTAINER ) { TaskFlexiLink.prototype.resetState(creep, task); } var timeOperating = Game.time - flag.memory.operator.ageStarted; var workParts = creep.getActiveBodyparts(WORK); var repairInterval; if (roomBase.isMyRoom(creep.room.name)) { repairInterval = 10 * workParts; } else { repairInterval = 2 * workParts; } if ( timeOperating % repairInterval == 0 ) { creep.repair(container); } else { TaskLinkerDump.prototype.doTask(creep, task); } };
module.exports.loop = function () { //profiler.wrap(function() { // console.log("************************ Start ", Game.time," *********************************"); PathFinder.use(true); ayrtepPad.top(); freememory.freeCreeps(); raceBase.moveCreeps(); buildingBase.moveBuildings(); policy.enactPolicies(); roomBase.examineRooms(); if (Game.time % gc.FLAG_UPDATE_RATE == 0 ){ flagBase.run(); } ayrtepPad.bottom(); console.log("************************ End ", Game.time, " *********************************"); // }) // profiler.wrap(function() };
run: function (flag) { // console.log(flag,"flagLink run",JSON.stringify(flag)); if (!flag.room || !flag.memory) return; if ( roomBase.isMyRoom(flag.pos.roomName)) { if (flag.room.storage) { if (flag.pos.inRangeTo(flag.room.storage, 2)) { flag.memory.isStorageLink = true; } else { flag.memory.isStorageLink = false; } } if (flag.room.terminal) { if (flag.pos.inRangeTo(flag.room.terminal, 2)) { flag.memory.isTerminalLink = true; } else { flag.memory.isTerminalLink = false; } } if (!flag.memory.isStorageLink) { var links = flag.room.find(FIND_MY_STRUCTURES, { filter: { structureType: STRUCTURE_LINK } }); // console.log(flag,"flag link list of links in room",links); for ( var i = 0 ; i < links.length ; i++ ) { var linkFlag = Game.flags[links[i].id]; // console.log(flag,"flag link in for i",i,"linkFlag",linkFlag); if (linkFlag && linkFlag.memory) { if (linkFlag.memory.isStorageLink ) { flag.memory.nextLinkId = linkFlag.name; break; } //else if( linkFlag.memory.isTerminalLink ) // flag.memory.nextLinkId = linkFlag.name; } } //for } // if (!flag.memory.isStorageLink) } // if ( roomBase.isMyRoom(flag.pos.roomName)) }