old source files of 2018-2020.
This commit is contained in:
171
controller_spawns.js
Normal file
171
controller_spawns.js
Normal file
@@ -0,0 +1,171 @@
|
||||
|
||||
/* #####################################
|
||||
# Controls the way creeps are spawn #
|
||||
#####################################*/
|
||||
|
||||
var GLOBAL = require("GLOBAL_VARIABLES");
|
||||
|
||||
module.exports = {
|
||||
run: function(){
|
||||
for(var sp in Game.spawns){
|
||||
sp = Game.spawns[sp]
|
||||
// values
|
||||
var creep_count = 0
|
||||
for(var cr in Game.creeps){
|
||||
if(Game.creeps[cr].room.name == sp.room.name) creep_count += 1;
|
||||
}
|
||||
var source_count = 0;
|
||||
if(sp.memory.sources_ids != undefined) source_count = sp.memory.sources_ids.length;
|
||||
|
||||
|
||||
// Memory setup
|
||||
if(sp.memory.creep_iterate == undefined) sp.memory.creep_iterate = 0;
|
||||
|
||||
if(sp.memory.sources_ids == undefined){
|
||||
sp.memory.sources_ids = [];
|
||||
var sources = sp.room.find(FIND_SOURCES);
|
||||
for(var source in sources){
|
||||
source = sources[source];
|
||||
sp.memory.sources_ids.push(source.id);
|
||||
}
|
||||
source_count = sp.memory.sources_ids.length;
|
||||
}
|
||||
|
||||
if(sp.memory.containers_ids == undefined || sp.memory.containers_ids.length != source_count){
|
||||
sp.memory.containers_ids = [];
|
||||
var containers = sp.room.find(FIND_STRUCTURES, { filter:{ structureType: STRUCTURE_CONTAINER }});
|
||||
if(containers.length > 0){
|
||||
for(let i=0;i<containers.length;i+=1){
|
||||
sp.memory.containers_ids.push(containers[i].id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Different spawning configurations
|
||||
|
||||
// Add improved versions at top of if-else statement
|
||||
if(sp.memory.containers_ids.length >= source_count && sp.room.energyCapacityAvailable >= 550 && creep_count > source_count ){ // Miner method: Miners fille containers rest picks up from them
|
||||
// Check current creep_jobs
|
||||
var jobs = { miner: 0, supplier: 0, builder: 0, upgrader: 0, defender: 0};
|
||||
var container_id = sp.memory.containers_ids[0];
|
||||
for(var creep in Game.creeps){
|
||||
var creep = Game.creeps[creep];
|
||||
if(creep.room.name != sp.room.name) continue;
|
||||
switch (creep.memory.role) {
|
||||
case GLOBAL.JOB_MINER:
|
||||
jobs.miner += 1;
|
||||
for(let i=0;i<sp.memory.containers_ids.length;i++){
|
||||
if(creep.memory.container_id != sp.memory.containers_ids[i]) container_id = sp.memory.containers_ids[i];
|
||||
}
|
||||
break;
|
||||
case GLOBAL.JOB_SUPPLIER:
|
||||
jobs.supplier += creep.body.length;
|
||||
break;
|
||||
case GLOBAL.JOB_BUILDER:
|
||||
jobs.builder += creep.body.length;
|
||||
break;
|
||||
case GLOBAL.JOB_UPGRADER:
|
||||
jobs.upgrader += creep.body.length;
|
||||
break;
|
||||
case GLOBAL.JOB_DEFENDER:
|
||||
jobs.defender += 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(jobs.miner < source_count){
|
||||
if(sp.room.energyAvailable >= 550) create_miner(sp, container_id);
|
||||
}
|
||||
else if(jobs.supplier < source_count * 15 && sp.room.energyAvailable >= 300 && jobs.miner > 0) create_supplier(sp);
|
||||
else if(jobs.builder < source_count * 5 && sp.room.energyAvailable >= 300 && jobs.miner > 0) create_builder(sp);
|
||||
else if(jobs.upgrader < source_count * 5 && sp.room.energyAvailable >= 300 && jobs.miner > 0) create_upgrader(sp);
|
||||
else if(jobs.defender < 0 && sp.room.energyAvailable >= sp.room.energyCapacityAvailable*0.8 && jobs.miner > 0) create_defender(sp);
|
||||
} else { // Harvesting method: everybody mines own sources
|
||||
if (sp.room.find(FIND_MY_CREEPS).length < source_count * 5 && sp.room.energyAvailable >= 300){
|
||||
var source_id = sp.memory.sources_ids[sp.memory.creep_iterate % source_count];
|
||||
create_harvester(sp, source_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function create_harvester(sp, source_id){
|
||||
var body = [];
|
||||
for(let i=0;i<Math.floor(sp.room.energyAvailable/200);i++){
|
||||
body.push(WORK);
|
||||
body.push(CARRY);
|
||||
body.push(MOVE);
|
||||
}
|
||||
var name = "Harvy"+sp.memory.creep_iterate;
|
||||
sp.spawnCreep( body, name, { memory:
|
||||
{role: GLOBAL.JOB_HARVESTER, source_id: source_id}});
|
||||
sp.memory.creep_iterate += 1;
|
||||
}
|
||||
|
||||
function create_miner(sp, container_id){
|
||||
var body = [ WORK, WORK, WORK, WORK, WORK, MOVE ]; // (creep)5*work(2energy/tick)=10energy/tick -> (source)3000energy/300tick=10energy/tick
|
||||
var name = "Mindy"+sp.memory.creep_iterate;
|
||||
sp.spawnCreep( body, name, { memory:
|
||||
{role: GLOBAL.JOB_MINER, container_id: container_id}});
|
||||
sp.memory.creep_iterate += 1;
|
||||
}
|
||||
|
||||
function create_supplier(sp){
|
||||
var body = [WORK];
|
||||
|
||||
for(let i=0;i<Math.floor(sp.room.energyAvailable/100)-1 && i < 8;i++){ // as big as possible
|
||||
body.push(CARRY);
|
||||
body.push(MOVE);
|
||||
}
|
||||
var name = "Suppry"+sp.memory.creep_iterate;
|
||||
sp.spawnCreep( body, name, { memory:
|
||||
{role: GLOBAL.JOB_SUPPLIER}});
|
||||
sp.memory.creep_iterate += 1;
|
||||
}
|
||||
|
||||
function create_builder(sp){
|
||||
var body = [];
|
||||
|
||||
for(let i=0;i<Math.floor(sp.room.energyAvailable/200);i++){ // as big as possible
|
||||
body.push(CARRY);
|
||||
body.push(MOVE);
|
||||
body.push(WORK);
|
||||
}
|
||||
var name = "Bobby"+sp.memory.creep_iterate;
|
||||
sp.spawnCreep( body, name, { memory:
|
||||
{role: GLOBAL.JOB_BUILDER}});
|
||||
sp.memory.creep_iterate += 1;
|
||||
}
|
||||
|
||||
function create_upgrader(sp){
|
||||
var body = [];
|
||||
|
||||
for(let i=0;i<Math.floor(sp.room.energyAvailable/300);i++){ // as big as possible
|
||||
body.push(CARRY);
|
||||
body.push(MOVE);
|
||||
body.push(WORK);
|
||||
body.push(WORK);
|
||||
}
|
||||
var name = "Undy"+sp.memory.creep_iterate;
|
||||
sp.spawnCreep( body, name, { memory:
|
||||
{role: GLOBAL.JOB_UPGRADER}});
|
||||
sp.memory.creep_iterate += 1;
|
||||
}
|
||||
|
||||
function create_defender(sp){
|
||||
var body = [];
|
||||
|
||||
for(let i=0;i<Math.floor(sp.room.energyAvailable/150);i++){ // as big as possible
|
||||
body.push(TOUGH);
|
||||
body.push(TOUGH);
|
||||
body.push(ATTACK);
|
||||
body.push(MOVE);
|
||||
}
|
||||
var name = "Destroyer CODE"+sp.memory.creep_iterate;
|
||||
sp.spawnCreep( body, name, { memory:
|
||||
{role: GLOBAL.JOB_DEFENDER}});
|
||||
sp.memory.creep_iterate += 1;
|
||||
}
|
||||
Reference in New Issue
Block a user