init
This commit is contained in:
commit
1524a5acfb
34
src/main.js
Normal file
34
src/main.js
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
var roleHarvester = require('role.harvester');
|
||||||
|
var roleUpgrader = require('role.upgrader');
|
||||||
|
var roleBuilder = require('role.builder');
|
||||||
|
|
||||||
|
module.exports.loop = function () {
|
||||||
|
|
||||||
|
var tower = Game.getObjectById('TOWER_ID');
|
||||||
|
if(tower) {
|
||||||
|
var closestDamagedStructure = tower.pos.findClosestByRange(FIND_STRUCTURES, {
|
||||||
|
filter: (structure) => structure.hits < structure.hitsMax
|
||||||
|
});
|
||||||
|
if(closestDamagedStructure) {
|
||||||
|
tower.repair(closestDamagedStructure);
|
||||||
|
}
|
||||||
|
|
||||||
|
var closestHostile = tower.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
|
||||||
|
if(closestHostile) {
|
||||||
|
tower.attack(closestHostile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var name in Game.creeps) {
|
||||||
|
var creep = Game.creeps[name];
|
||||||
|
if(creep.memory.role == 'harvester') {
|
||||||
|
roleHarvester.run(creep);
|
||||||
|
}
|
||||||
|
if(creep.memory.role == 'upgrader') {
|
||||||
|
roleUpgrader.run(creep);
|
||||||
|
}
|
||||||
|
if(creep.memory.role == 'builder') {
|
||||||
|
roleBuilder.run(creep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
32
src/role.builder.js
Normal file
32
src/role.builder.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
var roleBuilder = {
|
||||||
|
|
||||||
|
/** @param {Creep} creep **/
|
||||||
|
run: function(creep) {
|
||||||
|
|
||||||
|
if(creep.memory.building && creep.store[RESOURCE_ENERGY] == 0) {
|
||||||
|
creep.memory.building = false;
|
||||||
|
creep.say('🔄 harvest');
|
||||||
|
}
|
||||||
|
if(!creep.memory.building && creep.store.getFreeCapacity() == 0) {
|
||||||
|
creep.memory.building = true;
|
||||||
|
creep.say('🚧 build');
|
||||||
|
}
|
||||||
|
|
||||||
|
if(creep.memory.building) {
|
||||||
|
var targets = creep.room.find(FIND_CONSTRUCTION_SITES);
|
||||||
|
if(targets.length) {
|
||||||
|
if(creep.build(targets[0]) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(targets[0], {visualizePathStyle: {stroke: '#ffffff'}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var sources = creep.room.find(FIND_SOURCES);
|
||||||
|
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(sources[0], {visualizePathStyle: {stroke: '#ffaa00'}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = roleBuilder;
|
29
src/role.harvester.js
Normal file
29
src/role.harvester.js
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
var roleHarvester = {
|
||||||
|
|
||||||
|
/** @param {Creep} creep **/
|
||||||
|
run: function(creep) {
|
||||||
|
if(creep.store.getFreeCapacity() > 0) {
|
||||||
|
var sources = creep.room.find(FIND_SOURCES);
|
||||||
|
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(sources[0], {visualizePathStyle: {stroke: '#ffaa00'}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var targets = creep.room.find(FIND_STRUCTURES, {
|
||||||
|
filter: (structure) => {
|
||||||
|
return (structure.structureType == STRUCTURE_EXTENSION ||
|
||||||
|
structure.structureType == STRUCTURE_SPAWN ||
|
||||||
|
structure.structureType == STRUCTURE_TOWER) &&
|
||||||
|
structure.store.getFreeCapacity(RESOURCE_ENERGY) > 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if(targets.length > 0) {
|
||||||
|
if(creep.transfer(targets[0], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(targets[0], {visualizePathStyle: {stroke: '#ffffff'}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = roleHarvester;
|
29
src/role.upgrader.js
Normal file
29
src/role.upgrader.js
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
var roleUpgrader = {
|
||||||
|
|
||||||
|
/** @param {Creep} creep **/
|
||||||
|
run: function(creep) {
|
||||||
|
|
||||||
|
if(creep.memory.upgrading && creep.store[RESOURCE_ENERGY] == 0) {
|
||||||
|
creep.memory.upgrading = false;
|
||||||
|
creep.say('🔄 harvest');
|
||||||
|
}
|
||||||
|
if(!creep.memory.upgrading && creep.store.getFreeCapacity() == 0) {
|
||||||
|
creep.memory.upgrading = true;
|
||||||
|
creep.say('⚡ upgrade');
|
||||||
|
}
|
||||||
|
|
||||||
|
if(creep.memory.upgrading) {
|
||||||
|
if(creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(creep.room.controller, {visualizePathStyle: {stroke: '#ffffff'}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var sources = creep.room.find(FIND_SOURCES);
|
||||||
|
if(creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
|
||||||
|
creep.moveTo(sources[0], {visualizePathStyle: {stroke: '#ffaa00'}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = roleUpgrader;
|
Loading…
Reference in New Issue
Block a user