Added streltsy

This commit is contained in:
ObeseTermite 2025-06-03 21:10:14 -07:00
parent 1130525e0a
commit bb03c6d884
7 changed files with 66 additions and 28 deletions

13
main.js
View file

@ -1,6 +1,5 @@
var roleDispatcher = require('role.dispatcher'); var roleDispatcher = require('role.dispatcher');
var creepCounts = {"harvester" : 3, "builder" : 1, "upgrader" : 2, "repairer" : 1};
module.exports.loop = function () { module.exports.loop = function () {
@ -9,17 +8,9 @@ module.exports.loop = function () {
delete Memory.creeps[name]; delete Memory.creeps[name];
} }
} }
roleDispatcher.spawnCreeps(Game.spawns['Moscow']);
for(const [role, count] of Object.entries(creepCounts)){
var roleCreeps = _.filter(Game.creeps, (creep) => creep.memory.role == role);
if(roleCreeps.length < count && !Game.spawns['Moscow'].spawning) {
var newName = role + Game.time;
Game.spawns['Moscow'].spawnCreep([WORK,CARRY,MOVE], newName,
{memory: {role: role}});
break;
}
}
if(Game.spawns['Moscow'].spawning) { if(Game.spawns['Moscow'].spawning) {
var spawningCreep = Game.creeps[Game.spawns['Moscow'].spawning.name]; var spawningCreep = Game.creeps[Game.spawns['Moscow'].spawning.name];

View file

@ -1,6 +1,11 @@
var energyUtils = require('utils.energy'); var energyUtils = require('utils.energy');
const body = [
WORK, CARRY, MOVE
];
var roleBuilder = { var roleBuilder = {
body,
/** @param {Creep} creep **/ /** @param {Creep} creep **/
run: function(creep) { run: function(creep) {
@ -26,4 +31,4 @@ var roleBuilder = {
} }
}; };
module.exports = roleBuilder; module.exports = roleBuilder;

View file

@ -2,12 +2,22 @@ var roleHarvester = require('role.harvester');
var roleUpgrader = require('role.upgrader'); var roleUpgrader = require('role.upgrader');
var roleBuilder = require('role.builder'); var roleBuilder = require('role.builder');
var roleRepairer = require('role.repairer'); var roleRepairer = require('role.repairer');
var roleGuard = require('role.guard');
const roleMap = { const roleMap = {
harvester: roleHarvester, harvester: roleHarvester,
upgrader: roleUpgrader, upgrader: roleUpgrader,
builder: roleBuilder, builder: roleBuilder,
repairer: roleRepairer repairer: roleRepairer,
streltsy: roleGuard
};
var creepCounts = {
"harvester" : 3,
"builder" : 1,
"upgrader" : 2,
"repairer" : 1,
"streltsy" : 2
}; };
function runRole(creep){ function runRole(creep){
@ -16,8 +26,22 @@ function runRole(creep){
if(role && typeof role.run === 'function'){ if(role && typeof role.run === 'function'){
role.run(creep); role.run(creep);
} else { } else {
console.log('Unknown or underfied role: ' + creep.memory.role); console.log('Unknown or undefined role: ' + creep.memory.role);
} }
} }
module.exports = { runRole }; function spawnCreeps(spawn){
for(const [role, count] of Object.entries(creepCounts)){
var roleCreeps = _.filter(Game.creeps, (creep) => creep.memory.role == role);
if(roleCreeps.length < count && !spawn.spawning) {
var newName = role + Game.time;
console.log(spawn.spawnCreep(roleMap[role].body, newName,
{memory: {role: role}}));
break;
}
}
}
module.exports = { runRole, spawnCreeps, creepCounts};

View file

@ -1,21 +1,24 @@
var energyUtils = require('utils.energy'); var energyUtils = require('utils.energy');
var roleHarvester = { const body = [
MOVE, RANGED_ATTACK
];
var roleGuard = {
body,
/** @param {Creep} creep **/ /** @param {Creep} creep **/
run: function(creep) { run: function(creep) {
if(creep.store.getFreeCapacity() > 0) { const target = creep.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
var sources = creep.room.find(FIND_SOURCES); if(target) {
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) { if(creep.rangedAttack(target) == ERR_NOT_IN_RANGE) {
creep.moveTo(sources[0], {visualizePathStyle: {stroke: '#ffaa00'}}); creep.moveTo(target);
} }
} }
else { else {
if(!energyUtils.depositEnergy(creep)){ creep.moveTo(Game.flags.IdleArea);
creep.moveTo(Game.flags.IdleArea);
}
} }
} }
}; };
module.exports = roleHarvester; module.exports = roleGuard;

View file

@ -1,6 +1,11 @@
var energyUtils = require('utils.energy'); var energyUtils = require('utils.energy');
const body = [
WORK, CARRY, MOVE
];
var roleHarvester = { var roleHarvester = {
body,
/** @param {Creep} creep **/ /** @param {Creep} creep **/
run: function(creep) { run: function(creep) {

View file

@ -1,6 +1,11 @@
var energyUtils = require('utils.energy'); var energyUtils = require('utils.energy');
const body = [
WORK, CARRY, MOVE
];
var roleRepairer = { var roleRepairer = {
body,
/** @param {Creep} creep **/ /** @param {Creep} creep **/
run: function(creep) { run: function(creep) {
@ -33,4 +38,4 @@ var roleRepairer = {
} }
}; };
module.exports = roleRepairer; module.exports = roleRepairer;

View file

@ -1,4 +1,9 @@
const body = [
WORK, CARRY, MOVE
];
var roleUpgrader = { var roleUpgrader = {
body,
/** @param {Creep} creep **/ /** @param {Creep} creep **/
run: function(creep) { run: function(creep) {
@ -24,4 +29,4 @@ var roleUpgrader = {
} }
}; };
module.exports = roleUpgrader; module.exports = roleUpgrader;