2020-11-09 19:31:39 -06:00
|
|
|
let Phase1 = {
|
|
|
|
run: function(room) {
|
2022-04-27 00:51:11 -05:00
|
|
|
let myroom=Game.rooms[room]
|
2020-11-09 19:31:39 -06:00
|
|
|
require('assignsources').tick(room)
|
2022-05-06 16:48:12 -05:00
|
|
|
creepcounts = _.countBy(myroom.find(FIND_MY_CREEPS), c => c.memory.role)
|
|
|
|
myroom.memory.creepcounts=creepcounts
|
|
|
|
myroom.memory.movercount=creepcounts["mover"]
|
2022-05-09 17:03:22 -05:00
|
|
|
let links=myroom.find(FIND_STRUCTURES, {filter: (s) =>{return ( s.structureType==STRUCTURE_LINK)}})
|
2022-04-28 14:21:40 -05:00
|
|
|
if(Game.time % 10 === 0){
|
2020-11-09 19:31:39 -06:00
|
|
|
//console.log('processing spawn')
|
2022-04-27 00:51:11 -05:00
|
|
|
|
|
|
|
let myspawns = myroom.find(FIND_MY_SPAWNS)
|
2022-05-06 16:48:12 -05:00
|
|
|
|
2020-11-09 19:31:39 -06:00
|
|
|
if(myspawns.length>0){
|
|
|
|
let myspawn = myspawns[0]
|
2022-04-27 00:51:11 -05:00
|
|
|
let creepcount = myroom.find(FIND_MY_CREEPS).length
|
2022-05-06 16:48:12 -05:00
|
|
|
|
2022-04-27 00:51:11 -05:00
|
|
|
let workerrolename = 'phase' + myroom.memory.phase +'worker'
|
|
|
|
let sources = myroom.find(FIND_SOURCES )
|
|
|
|
if(myroom.controller.ticksToDowngrade < CONTROLLER_DOWNGRADE[myroom.controller.level] * .2 ){
|
|
|
|
myroom.memory.NeedsRecharge=1
|
|
|
|
console.log(room + " needs Recharge " + myroom.memory.NeedsRecharge)
|
2020-11-09 19:31:39 -06:00
|
|
|
}
|
2022-04-27 00:51:11 -05:00
|
|
|
if(myroom.controller.ticksToDowngrade > CONTROLLER_DOWNGRADE[myroom.controller.level]*.8){
|
|
|
|
myroom.memory.NeedsRecharge=0
|
2020-11-09 19:31:39 -06:00
|
|
|
}
|
2022-04-27 00:51:11 -05:00
|
|
|
if(Game.flags.debug && Game.flags.debug.room == myroom){
|
2020-11-09 19:31:39 -06:00
|
|
|
console.log(room)
|
|
|
|
console.log(workerrolename)
|
|
|
|
console.log(creepcounts[workerrolename])
|
2022-04-27 00:51:11 -05:00
|
|
|
console.log(myroom.energyAvailable + " of " + myroom.energyCapacityAvailable)
|
2020-11-09 19:31:39 -06:00
|
|
|
}
|
2022-05-06 16:48:12 -05:00
|
|
|
if((myroom.memory.minablepositions >= 3 ||myroom.memory.minablepositions==undefined) && (creepcounts["mover"] == 0 || creepcounts["mover"]==undefined) ){
|
2022-04-27 00:51:11 -05:00
|
|
|
if((((creepcounts[workerrolename]< (myroom.memory.minablepositions + 1) || creepcounts[workerrolename]==undefined) && myroom.energyAvailable >= myroom.energyCapacityAvailable) ) || ((creepcounts[workerrolename]==0 || creepcounts[workerrolename]==undefined ) && myroom.energyAvailable>100)) {
|
2020-11-14 02:42:45 -06:00
|
|
|
console.log('Spawning worker in ' + room)
|
|
|
|
require('proc.spawning').spawnworker(room)
|
|
|
|
}
|
2022-05-06 16:48:12 -05:00
|
|
|
} else {
|
|
|
|
if((((creepcounts['sourceminer']< myroom.find(FIND_SOURCES).length) || creepcounts['sourceminer']==undefined) ) || ((creepcounts['sourceminer']==0 || creepcounts['sourceminer']==undefined ) && myroom.energyAvailable>100)) {
|
2020-11-14 02:42:45 -06:00
|
|
|
console.log('Spawning sourceminer in ' + room)
|
|
|
|
require('proc.spawning').spawnsourceminer(room)
|
|
|
|
}
|
2022-04-27 00:51:11 -05:00
|
|
|
if((((creepcounts[workerrolename]< (myroom.memory.minablepositions+1) || creepcounts[workerrolename]==undefined) && myroom.energyAvailable >= myroom.energyCapacityAvailable) ) || ((creepcounts[workerrolename]==0 || creepcounts[workerrolename]==undefined ) && myroom.energyAvailable>100)) {
|
2020-11-15 22:42:28 -06:00
|
|
|
console.log('Spawning worker in ' + room)
|
|
|
|
require('proc.spawning').spawnworker(room)
|
|
|
|
}
|
2020-11-09 19:31:39 -06:00
|
|
|
}
|
2022-04-27 00:51:11 -05:00
|
|
|
if((myroom.storage || myroom.terminal) && (creepcounts["mover"] < 2 || creepcounts["mover"]==undefined)){
|
2020-11-14 01:18:05 -06:00
|
|
|
console.log("Spawning Mover in " + room)
|
2020-11-09 19:31:39 -06:00
|
|
|
require('proc.spawning').spawnmover(room)
|
|
|
|
}
|
2022-05-04 08:30:12 -05:00
|
|
|
if(((myroom.storage || myroom.terminal) && myroom.StructureExtractor) && (creepcounts["mineralmover"] < 1 || creepcounts["mineralmover"]==undefined)){
|
2022-04-28 14:21:40 -05:00
|
|
|
console.log("Spawning MineralMover in " + room)
|
|
|
|
require('proc.spawning').spawnmineralmover(room)
|
|
|
|
}
|
2022-04-27 00:51:11 -05:00
|
|
|
if((myroom.find(FIND_MY_STRUCTURES, {filter: {structureType: STRUCTURE_EXTRACTOR}}).length > 0)&&(creepcounts["miner"] < myroom.memory.mineralminablepositions || creepcounts["miner"]==undefined)&&(myroom.energyAvailable >= myroom.energyCapacityAvailable)){
|
|
|
|
if(myroom.find(FIND_MINERALS)[0].ticksToRegeneration == undefined || myroom.find(FIND_MINERALS)[0].ticksToRegeneration < 1000 ){
|
2020-11-17 10:30:13 -06:00
|
|
|
console.log("Spawning Miner in " + room)
|
|
|
|
require('proc.spawning').spawnminer(room)
|
2022-04-27 00:51:11 -05:00
|
|
|
} else { if(Game.flags.debug && Game.flags.debug.room == myroom){console.log("Not spawning miner in " + room + ", waiting for regen")}}
|
2020-11-14 01:18:05 -06:00
|
|
|
}
|
2022-04-28 14:21:40 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if(Game.time % 4 === 0){
|
|
|
|
if(myroom.find(FIND_MY_STRUCTURES, {filter: {structureType: STRUCTURE_TERMINAL}}).length > 0){
|
|
|
|
//console.log("starting market check for room " + room)
|
|
|
|
try{
|
|
|
|
if(myroom.terminal){
|
|
|
|
///console.log("1")
|
|
|
|
if(myroom.terminal.store.getUsedCapacity() == 0) {
|
|
|
|
//console.log("terminal is empty")
|
|
|
|
}else{
|
2022-05-04 08:30:12 -05:00
|
|
|
if(myroom.terminal.store.getUsedCapacity('energy') > 100000){
|
2022-04-28 14:21:40 -05:00
|
|
|
console.log("Starting market loop for "+ myroom)
|
|
|
|
for(mat in myroom.terminal.store){
|
|
|
|
let availtosell=0
|
|
|
|
//console.log(mat)
|
|
|
|
if(mat == 'energy'){
|
|
|
|
try{
|
|
|
|
availtosell = myroom.terminal.store.getUsedCapacity(mat) - 200000
|
|
|
|
} catch {
|
|
|
|
//console.log("error getting energy")
|
|
|
|
availtosell=0
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
try{
|
|
|
|
//console.log("2")
|
|
|
|
availtosell = myroom.terminal.store.getUsedCapacity(mat)
|
|
|
|
} catch {
|
|
|
|
//console.log("Couldn't get available " + mat)
|
|
|
|
availtosell=0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(availtosell){
|
|
|
|
//console.log(availtosell)
|
|
|
|
if(availtosell > 20000){
|
|
|
|
//console.log("processing market")
|
|
|
|
require('proc.market').sellEnergy(room,mat)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-04-27 00:02:31 -05:00
|
|
|
}
|
2022-04-28 14:21:40 -05:00
|
|
|
}catch(e){
|
|
|
|
console.log("Myroom" + myroom)
|
|
|
|
console.log(e)
|
2022-04-26 23:51:44 -05:00
|
|
|
}
|
2020-11-09 19:31:39 -06:00
|
|
|
}
|
|
|
|
}
|
2022-05-09 17:03:22 -05:00
|
|
|
/*
|
|
|
|
if(links!=null && links!=undefined){
|
|
|
|
if(links.length>1){
|
|
|
|
console.log('1')
|
|
|
|
let sourcelink=links[0]
|
|
|
|
let destlinks
|
|
|
|
try{
|
|
|
|
for(let idx in links.length){
|
|
|
|
link = links[idx]
|
|
|
|
console.log('2')
|
|
|
|
console.log(link.id)
|
|
|
|
console.log(sourcelink.id)
|
|
|
|
link.store.getUsedCapacity('energy')
|
|
|
|
sourcelink.store.getUsedCapacity('energy')
|
|
|
|
if(link.store.getUsedCapacity('energy') > sourcelink.store.getUsedCapacity('energy')){
|
|
|
|
console.log("2.1")
|
|
|
|
destlinks += sourcelink
|
|
|
|
sourcelink=link
|
|
|
|
} else if (link.store.getUsedCapacity('energy') == sourcelink.store.getUsedCapacity('energy')){
|
|
|
|
console.log('2.2')
|
|
|
|
}
|
|
|
|
idx++
|
|
|
|
}
|
|
|
|
for(let destlink in destlinks){
|
|
|
|
if(destlink != undefined && destlink != null){
|
|
|
|
if(destlink.store.getUsedCapacity() < destlink.store.getCapacity()){
|
|
|
|
console.log('3')
|
|
|
|
sourcelink.transferEnergy(destlink)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch(e){
|
|
|
|
console.log(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
2022-04-27 00:51:11 -05:00
|
|
|
if(myroom.controller.level>2){ }
|
2020-11-09 19:31:39 -06:00
|
|
|
}
|
|
|
|
};
|
|
|
|
module.exports = Phase1;
|