53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
import { getObjectsByPrototype } from '/game/utils';
|
|
import { Creep, StructureSpawn, Source } from '/game/prototypes';
|
|
import { MOVE, WORK, CARRY, ATTACK, RANGED_ATTACK, HEAL, TOUGH, ERR_NOT_IN_RANGE, RESOURCE_ENERGY } from '/game/constants';
|
|
import { } from '/arena';
|
|
|
|
var harvester = [];
|
|
var defender = [];
|
|
|
|
function harvest(creep) {
|
|
var mySpawn = getObjectsByPrototype(StructureSpawn)[0];
|
|
var source = getObjectsByPrototype(Source)[0];
|
|
if (creep.store.getFreeCapacity()) {
|
|
if (creep.harvest(source) == ERR_NOT_IN_RANGE) {
|
|
creep.moveTo(source);
|
|
}
|
|
} else {
|
|
if(creep.transfer(mySpawn, RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
|
creep.moveTo(mySpawn);
|
|
}
|
|
}
|
|
}
|
|
|
|
function defend(defending_creep) {
|
|
var enemyCreep = getObjectsByPrototype(Creep).find(creep => !creep.my);
|
|
if(defending_creep.attack(enemyCreep) == ERR_NOT_IN_RANGE) {
|
|
defending_creep.moveTo(enemyCreep);
|
|
}
|
|
}
|
|
|
|
export function loop() {
|
|
var mySpawn = getObjectsByPrototype(StructureSpawn)[0];
|
|
|
|
harvester.forEach(creep => {
|
|
harvest(creep);
|
|
});
|
|
|
|
defender.forEach(creep => {
|
|
defend(creep);
|
|
});
|
|
|
|
if (harvester.length < 4) {
|
|
var creep = mySpawn.spawnCreep([MOVE, CARRY, WORK, WORK, WORK]).object;
|
|
if (creep != undefined && creep != null) {
|
|
harvester.push(creep);
|
|
}
|
|
} else {
|
|
var creep = mySpawn.spawnCreep([MOVE, ATTACK, MOVE, ATTACK, MOVE, ATTACK]).object;
|
|
if (creep != undefined && creep != null) {
|
|
defender.push(creep);
|
|
}
|
|
}
|
|
|
|
} |