tutorial-10-final_test/main.mjs

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);
}
}
}