module.exports.loop = function () { utils.extendClasses(); var actFuncs = actFuncs1.buildActFuncs(); // Always place this memory cleaning code at the very top of your main loop! for(var name in Memory.creeps) { if(!Game.creeps[name]) { delete Memory.creeps[name]; console.log('Clearing non-existing creep memory:', name); Memory.needSpawns = true; } } PathFinder.use(true); if(Game.cpu.bucket >= 100 ) { for(var name in Game.creeps) { var creep = Game.creeps[name]; //creep.say(creep.memory.role); actFuncs[creep.memory.role](creep); } } roleTower.run(); var link1 = Game.getObjectById('5786e9d39aab5859475b302d'); var link2 = Game.getObjectById('5786f27a7271ec6319f355b1'); if(link1.energy == link1.energyCapacity) link1.transferEnergy(link2); room1Spawn.run(); room2Spawn.run(); Memory.spawnFlag = spawnCode.run(); }
module.exports.loop = function () { statistics.run(); //remove dead creeps memory for(let i in Memory.creeps) { if(!Game.creeps[i]) { delete Memory.creeps[i]; } } Source.prototype.memory = undefined; for(let roomName in Game.rooms){//Loop through all rooms your creeps/structures are in var room = Game.rooms[roomName]; //Create roads from spawn to sources if(!room.memory.IsSetup){ constructionFun.setupNewBase(room); room.memory.IsSetup = 1; commonFun.createMap(room); } constructionFun.placeExtensions(room); var towers = room.find(FIND_STRUCTURES, { filter: (structure) => { return (structure.structureType == STRUCTURE_TOWER) }}); for(let i = 0; i<towers.length; i++ ){ roleTower.run(towers[i]); } if(!room.memory.MaxHarvesters){ room.memory.MaxHarvesters = 0; } if(!room.memory.sources){//If this room has no sources memory yet room.memory.sources = {}; //Add it var sources = room.find(FIND_SOURCES);//Find all sources in the current room for(var i in sources){ var source = sources[i]; source.memory = room.memory.sources[source.id] = {}; //Create a new empty memory object for this source //Now you can do anything you want to do with this source //for example you could add a worker counter: source.memory.workers = 0; source.memory.MaxWorkers = sourceFun.maxNumberOfWorkersForSource(source); room.memory.MaxHarvesters += sourceFun.maxNumberOfWorkersForSource(source); } }else{ //The memory already exists so lets add a shortcut to the sources its memory var sources = room.find(FIND_SOURCES);//Find all sources in the current room for(var i in sources){ var source = sources[i]; source.memory = room.memory.sources[source.id]; //Set the shortcut } } if(!room.memory.totalWorkers){ room.memory.totalWorkers = _.filter(Game.creeps); } else{ room.memory.totalWorkers = _.filter(Game.creeps); } } var harvesters = _.filter(Game.creeps, (creep) => creep.memory.role == 'harvester'); var upgraders = _.filter(Game.creeps, (creep) => creep.memory.role == 'upgrader'); var builders = _.filter(Game.creeps, (creep) => creep.memory.role == 'builder'); var transporter = _.filter(Game.creeps, (creep) => creep.memory.role == 'transporter'); var allWorkers = _.filter(Game.creeps); for(let spawnName in Game.spawns){ var spawn = Game.spawns[spawnName]; spawn.room.memory.spawnName = spawnName; var totalEnergyForRoom = 0; var extensions = spawn.room.find(FIND_STRUCTURES, { filter: (structure) => { return (structure.structureType == STRUCTURE_EXTENSION); } }); for(i=0; i<extensions.length; i++){ totalEnergyForRoom += extensions[i].energy; } if(harvesters.length < room.memory.MaxHarvesters && parseInt(spawn.energy + totalEnergyForRoom) >= spawnFun.costForCreep("harvester", spawn)){ //Game.spawns.TutTut.createCreep([WORK, WORK, CARRY, MOVE], "harvester-"+ new Date(), {role: 'harvester', workSource: undefined}); spawnFun.spawnHarvester(spawn) console.log("spawn harvester in: " + spawn); } else if(upgraders.length < 8 && harvesters.length >= room.memory.MaxHarvesters && parseInt(spawn.energy + totalEnergyForRoom) >= spawnFun.costForCreep("upgrader", spawn)){ //spawn.createCreep([WORK, CARRY, CARRY, MOVE], "upgrader-"+ new Date(), {role: 'upgrader'}); spawnFun.spawnUpgrader(spawn); console.log("spawn upgrader in: " + spawn); } else if(builders.length < 3 && harvesters.length >= room.memory.MaxHarvesters && parseInt(spawn.energy + totalEnergyForRoom) >= spawnFun.costForCreep("builder", spawn) && upgraders.length >= 6){ //spawn.createCreep([WORK, CARRY, CARRY, MOVE], "builder-"+ new Date(), {role: 'builder'}); spawnFun.spawnBuilder(spawn); console.log("spawn builder in: " + spawn); } else if(transporter.length < 1 && harvesters.length >= room.memory.MaxHarvesters && parseInt(spawn.energy + totalEnergyForRoom) >= spawnFun.costForCreep("transporter", spawn) && spawn.room.controller.level <= 3 && towers.length > 0){ //spawn.createCreep([WORK, CARRY, CARRY, MOVE], "builder-"+ new Date(), {role: 'builder'}); spawnFun.spawnTransporter(spawn); console.log("spawn transporter in: " + spawn); } } for(let name in Game.creeps) { var creep = Game.creeps[name]; if(creep.memory.role == 'harvester') { roleHarvester.run(creep); } if(creep.memory.role == 'upgrader') { roleUpgrader.run(creep); } if(creep.memory.role == 'builder') { roleBuilder.run(creep); } if(creep.memory.role == 'transporter') { roleTransporter.run(creep); } } }