initial commit, tutorial level scripts
This commit is contained in:
Vendored
+33
@@ -0,0 +1,33 @@
|
||||
{
|
||||
// Place your scripts workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
|
||||
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
|
||||
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
|
||||
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
|
||||
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
|
||||
// Placeholders with the same ids are connected.
|
||||
// Example:
|
||||
// "Print to console": {
|
||||
// "scope": "javascript,typescript",
|
||||
// "prefix": "log",
|
||||
// "body": [
|
||||
// "console.log('$1');",
|
||||
// "$2"
|
||||
// ],
|
||||
// "description": "Log output to console"
|
||||
// }
|
||||
"New-module-export": {
|
||||
"prefix": "newModuleExport",
|
||||
"body": [
|
||||
"var ${1:moduleName} = {",
|
||||
"",
|
||||
"/** @param {Creep} creep **/",
|
||||
"\trun: function(creep) {",
|
||||
"\t\t$0",
|
||||
"\t}",
|
||||
"};",
|
||||
"",
|
||||
"module.exports = ${1:moduleName}"
|
||||
],
|
||||
"description": "New module for Screeps"
|
||||
}
|
||||
}
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"typeRoots" : ["./types/index.d.ts"]
|
||||
}
|
||||
}
|
||||
Vendored
+5
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"globalDependencies": {
|
||||
"screeps": "github:screepers/typed-screeps/blob/master/dist/index.d.ts"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
1714502084601
|
||||
ed58037af2462c9
|
||||
@@ -0,0 +1,11 @@
|
||||
var roleHarvester = require('role.harvester');
|
||||
|
||||
module.exports.loop = function () {
|
||||
|
||||
for(var name in Game.creeps) {
|
||||
var creep = Game.creeps[name];
|
||||
roleHarvester.run(creep);
|
||||
}
|
||||
}
|
||||
|
||||
//save external
|
||||
@@ -0,0 +1,19 @@
|
||||
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]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(creep.transfer(Game.spawns['Spawn1'], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(Game.spawns['Spawn1']);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = roleHarvester;
|
||||
@@ -0,0 +1,15 @@
|
||||
var roleHarvester = require('role.harvester');
|
||||
var roleUpgrader = require('role.upgrader');
|
||||
|
||||
module.exports.loop = function () {
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
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]);
|
||||
}
|
||||
}
|
||||
else if(Game.spawns['Spawn1'].energy < Game.spawns['Spawn1'].energyCapacity) {
|
||||
if(creep.transfer(Game.spawns['Spawn1'], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(Game.spawns['Spawn1']);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = roleHarvester;
|
||||
@@ -0,0 +1,19 @@
|
||||
var roleUpgrader = {
|
||||
|
||||
/** @param {Creep} creep **/
|
||||
run: function (creep) {
|
||||
if (creep.store[RESOURCE_ENERGY] == 0) {
|
||||
var sources = creep.room.find(FIND_SOURCES);
|
||||
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(sources[0]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(creep.room.controller);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = roleUpgrader;
|
||||
@@ -0,0 +1,24 @@
|
||||
var roleHarvester = require('role.harvester');
|
||||
var roleBuilder = require('role.builder');
|
||||
|
||||
var lastEneCheck = Date.now();
|
||||
|
||||
module.exports.loop = function () {
|
||||
|
||||
for(var name in Game.rooms) {
|
||||
if(Date.now() - lastEneCheck > 5000) {
|
||||
console.log('Room "'+name+'" has '+Game.rooms[name].energyAvailable+' energy');
|
||||
lastEneCheck = Date.now();
|
||||
}
|
||||
}
|
||||
|
||||
for(var name in Game.creeps) {
|
||||
var creep = Game.creeps[name];
|
||||
if(creep.memory.role == 'harvester') {
|
||||
roleHarvester.run(creep);
|
||||
}
|
||||
if(creep.memory.role == 'builder') {
|
||||
roleBuilder.run(creep);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
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;
|
||||
@@ -0,0 +1,27 @@
|
||||
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.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;
|
||||
@@ -0,0 +1,41 @@
|
||||
var roleHarvester = require('role.harvester');
|
||||
var roleUpgrader = require('role.upgrader');
|
||||
|
||||
module.exports.loop = function () {
|
||||
|
||||
for(var name in Memory.creeps) {
|
||||
if(!Game.creeps[name]) {
|
||||
delete Memory.creeps[name];
|
||||
console.log('Clearing non-existing creep memory:', name);
|
||||
}
|
||||
}
|
||||
|
||||
var harvesters = _.filter(Game.creeps, (creep) => creep.memory.role == 'harvester');
|
||||
console.log('Harvesters: ' + harvesters.length);
|
||||
|
||||
if(harvesters.length < 2) {
|
||||
var newName = 'Harvester' + Game.time;
|
||||
console.log('Spawning new harvester: ' + newName);
|
||||
Game.spawns['Spawn1'].spawnCreep([WORK,CARRY,MOVE], newName,
|
||||
{memory: {role: 'harvester'}});
|
||||
}
|
||||
|
||||
if(Game.spawns['Spawn1'].spawning) {
|
||||
var spawningCreep = Game.creeps[Game.spawns['Spawn1'].spawning.name];
|
||||
Game.spawns['Spawn1'].room.visual.text(
|
||||
'🛠️' + spawningCreep.memory.role,
|
||||
Game.spawns['Spawn1'].pos.x + 1,
|
||||
Game.spawns['Spawn1'].pos.y,
|
||||
{align: 'left', opacity: 0.8});
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
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.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;
|
||||
@@ -0,0 +1,19 @@
|
||||
var roleUpgrader = {
|
||||
|
||||
/** @param {Creep} creep **/
|
||||
run: function (creep) {
|
||||
if (creep.store[RESOURCE_ENERGY] == 0) {
|
||||
var sources = creep.room.find(FIND_SOURCES);
|
||||
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(sources[0]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(creep.room.controller);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = roleUpgrader;
|
||||
@@ -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('f84398b5d228975dd105a0ca');
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -0,0 +1,2 @@
|
||||
1714505785927
|
||||
ed58037af2462c9
|
||||
@@ -0,0 +1,97 @@
|
||||
var roleHarvester = require('role.harvester');
|
||||
var roleUpgrader = require('role.upgrader');
|
||||
var roleBuilder = require('role.builder');
|
||||
|
||||
var lastLog = Date.now();
|
||||
var creepDefinitions = {
|
||||
"harvester": {
|
||||
"minCount": 2,
|
||||
"variants": {
|
||||
"normal": [WORK, CARRY, MOVE],
|
||||
"big": [WORK, WORK, CARRY, CARRY, MOVE, MOVE, MOVE]
|
||||
}
|
||||
},
|
||||
"builder": {
|
||||
"minCount": 2,
|
||||
"variants": {
|
||||
"normal": [WORK, CARRY, MOVE],
|
||||
"big": [WORK, WORK, CARRY, CARRY, MOVE, MOVE, MOVE]
|
||||
}
|
||||
},
|
||||
"upgrader": {
|
||||
"minCount": 2,
|
||||
"variants": {
|
||||
"normal": [WORK, CARRY, MOVE],
|
||||
"big": [WORK, WORK, CARRY, CARRY, MOVE, MOVE, MOVE]
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var editing = false;
|
||||
module.exports.loop = function () {
|
||||
if (editing) return;
|
||||
|
||||
// var tower = Game.getObjectById('f84398b5d228975dd105a0ca');
|
||||
// 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 Memory.creeps) {
|
||||
if (!Game.creeps[name]) {
|
||||
delete Memory.creeps[name];
|
||||
console.log('Clearing non-existing creep memory:', name);
|
||||
}
|
||||
}
|
||||
|
||||
console.log();
|
||||
for (const role in creepDefinitions) {
|
||||
if (Object.hasOwnProperty.call(creepDefinitions, role)) {
|
||||
const creep = creepDefinitions[role];
|
||||
|
||||
let creeps = _.filter(Game.creeps, (creep) => creep.memory.role == role);
|
||||
|
||||
console.log(role[0].toUpperCase() + role.slice(1) + ' count: ' + creeps.length);
|
||||
|
||||
if (creeps.length < creep.minCount) {
|
||||
let newName = role[0].toUpperCase() + role.slice(1) + Game.time;
|
||||
|
||||
console.log('Trying to spawn new ' + role + ': ' + newName);
|
||||
|
||||
Game.spawns.Spawn1.spawnCreep(creep.variants.big, newName, { memory: { role: role } });
|
||||
Game.spawns['Spawn1'].spawnCreep(creep.variants.normal, newName, { memory: { role: role } });
|
||||
|
||||
if (Game.spawns['Spawn1'].spawning != null) {
|
||||
Game.spawns['Spawn1'].room.visual.text(
|
||||
'🛠️' + Game.spawns['Spawn1'].spawning.name,
|
||||
Game.spawns['Spawn1'].pos.x + 1,
|
||||
Game.spawns['Spawn1'].pos.y,
|
||||
{ align: 'left', opacity: 0.8 }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var name in Game.creeps) {
|
||||
let 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);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": "."
|
||||
}
|
||||
],
|
||||
"settings": {
|
||||
"autoSnippet.snippets": [
|
||||
{
|
||||
"language": "javascript",
|
||||
"snippet": "New-module-export",
|
||||
}
|
||||
],
|
||||
"cSpell.words": [
|
||||
"Upgrader",
|
||||
"upgraders"
|
||||
],
|
||||
"files.autoSave": "off"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
var roleHarvester = require('role.harvester');
|
||||
|
||||
module.exports.loop = function () {
|
||||
|
||||
for(var name in Game.creeps) {
|
||||
var creep = Game.creeps[name];
|
||||
roleHarvester.run(creep);
|
||||
}
|
||||
}
|
||||
|
||||
//save external
|
||||
@@ -0,0 +1,19 @@
|
||||
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]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(creep.transfer(Game.spawns['Spawn1'], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(Game.spawns['Spawn1']);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = roleHarvester;
|
||||
@@ -0,0 +1,15 @@
|
||||
var roleHarvester = require('role.harvester');
|
||||
var roleUpgrader = require('role.upgrader');
|
||||
|
||||
module.exports.loop = function () {
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
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]);
|
||||
}
|
||||
}
|
||||
else if(Game.spawns['Spawn1'].energy < Game.spawns['Spawn1'].energyCapacity) {
|
||||
if(creep.transfer(Game.spawns['Spawn1'], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(Game.spawns['Spawn1']);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = roleHarvester;
|
||||
@@ -0,0 +1,19 @@
|
||||
var roleUpgrader = {
|
||||
|
||||
/** @param {Creep} creep **/
|
||||
run: function (creep) {
|
||||
if (creep.store[RESOURCE_ENERGY] == 0) {
|
||||
var sources = creep.room.find(FIND_SOURCES);
|
||||
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(sources[0]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(creep.room.controller);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = roleUpgrader;
|
||||
@@ -0,0 +1,24 @@
|
||||
var roleHarvester = require('role.harvester');
|
||||
var roleBuilder = require('role.builder');
|
||||
|
||||
var lastEneCheck = Date.now();
|
||||
|
||||
module.exports.loop = function () {
|
||||
|
||||
for(var name in Game.rooms) {
|
||||
if(Date.now() - lastEneCheck > 5000) {
|
||||
console.log('Room "'+name+'" has '+Game.rooms[name].energyAvailable+' energy');
|
||||
lastEneCheck = Date.now();
|
||||
}
|
||||
}
|
||||
|
||||
for(var name in Game.creeps) {
|
||||
var creep = Game.creeps[name];
|
||||
if(creep.memory.role == 'harvester') {
|
||||
roleHarvester.run(creep);
|
||||
}
|
||||
if(creep.memory.role == 'builder') {
|
||||
roleBuilder.run(creep);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
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;
|
||||
@@ -0,0 +1,27 @@
|
||||
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.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;
|
||||
@@ -0,0 +1,34 @@
|
||||
var roleHarvester = require('role.harvester');
|
||||
var roleUpgrader = require('role.upgrader');
|
||||
|
||||
module.exports.loop = function () {
|
||||
|
||||
var harvesters = _.filter(Game.creeps, (creep) => creep.memory.role == 'harvester');
|
||||
console.log('Harvesters: ' + harvesters.length);
|
||||
|
||||
if(harvesters.length < 2) {
|
||||
var newName = 'Harvester' + Game.time;
|
||||
console.log('Spawning new harvester: ' + newName);
|
||||
Game.spawns['Spawn1'].spawnCreep([WORK,CARRY,MOVE], newName,
|
||||
{memory: {role: 'harvester'}});
|
||||
}
|
||||
|
||||
if(Game.spawns['Spawn1'].spawning) {
|
||||
var spawningCreep = Game.creeps[Game.spawns['Spawn1'].spawning.name];
|
||||
Game.spawns['Spawn1'].room.visual.text(
|
||||
'🛠️' + spawningCreep.memory.role,
|
||||
Game.spawns['Spawn1'].pos.x + 1,
|
||||
Game.spawns['Spawn1'].pos.y,
|
||||
{align: 'left', opacity: 0.8});
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
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.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;
|
||||
@@ -0,0 +1,19 @@
|
||||
var roleUpgrader = {
|
||||
|
||||
/** @param {Creep} creep **/
|
||||
run: function (creep) {
|
||||
if (creep.store[RESOURCE_ENERGY] == 0) {
|
||||
var sources = creep.room.find(FIND_SOURCES);
|
||||
if (creep.harvest(sources[0]) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(sources[0]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (creep.upgradeController(creep.room.controller) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(creep.room.controller);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = roleUpgrader;
|
||||
@@ -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('f84398b5d228975dd105a0ca');
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
+1436
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
1714467840807
|
||||
654c2f1fa252f08788012439
|
||||
@@ -0,0 +1,3 @@
|
||||
module.exports.loop = function () {
|
||||
// Your code goes here
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
module.exports.loop = function () {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
var roleHarvester = require('role.harvester');
|
||||
|
||||
module.exports.loop = function () {
|
||||
|
||||
for(var name in Game.creeps) {
|
||||
var creep = Game.creeps[name];
|
||||
if(creep.memory.role == 'harvester') {
|
||||
roleHarvester.run(creep);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
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]);
|
||||
}
|
||||
}
|
||||
else if(Game.spawns['Spawn1'].energy < Game.spawns['Spawn1'].energyCapacity) {
|
||||
if(creep.transfer(Game.spawns['Spawn1'], RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
|
||||
creep.moveTo(Game.spawns['Spawn1']);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = roleHarvester;
|
||||
Vendored
+5777
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user