Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module.exports = {
- // a function to run the logic for this role
- run: function(creep) {
- // if creep is bringing energy to a structure but has no energy left
- if (creep.memory.working == true && creep.carry.energy == 0) {
- // switch state
- creep.memory.working = false;
- }
- // if creep is harvesting energy but is full
- else if (creep.memory.working == false && creep.carry.energy == creep.carryCapacity) {
- // switch state
- creep.memory.working = true;
- }
- // if creep is supposed to transfer energy to a structure
- if (creep.memory.working == true) {
- // if in home room
- if (creep.room.name == creep.memory.home) {
- // find closest spawn, extension or tower which is not full
- var structure = creep.pos.findClosestByPath(FIND_MY_STRUCTURES, {
- // the second argument for findClosestByPath is an object which takes
- // a property called filter which can be a function
- // we use the arrow operator to define it
- filter: (s) => (s.structureType == STRUCTURE_SPAWN
- || s.structureType == STRUCTURE_EXTENSION
- || s.structureType == STRUCTURE_TOWER)
- && s.energy < s.energyCapacity
- });
- // if we found one
- if (structure != undefined) {
- // try to transfer energy, if it is not in range
- if (creep.transfer(structure, RESOURCE_ENERGY) == ERR_NOT_IN_RANGE) {
- // move towards it
- creep.moveTo(structure);
- }
- }
- }
- else {
- if (creep.room.name == Game.rooms.W10N23) {
- var homeW10N23 = creep.room.findExitTo(creep.memory.home);
- creep.moveTo(creep.pos.findClosestByRange(homeW10N23));
- }
- else if (creep.room.name == Game.Rooms.W10N22) {
- var homeW10N22 = creep.room.findExitTo(Game.rooms.W10N23);
- creep.moveTo(creep.pos.findClosestByRange(homeW10N22));
- }
- else if (creep.room.name == Game.Rooms.W11N22) {
- var homeW11N22 = creep.room.findExitTo(Game.rooms.W10N22);
- creep.moveTo(creep.pos.findClosestByRange(homeW11N22));
- }
- else {
- console.log("I am lost" + creep.room.name);
- }
- }
- }
- else {
- if (creep.room.name == creep.memory.target) {
- var source = creep.room.find(FIND_SOURCES)[creep.memory.sourceIndex];
- if (creep.harvest(source) == ERR_NOT_IN_RANGE) {
- creep.moveTo(source);
- }
- }
- else {
- if (creep.room.name == creep.memory.home) {
- var workW10N23 = creep.room.findExitTo(Game.rooms.W10N23);
- creep.moveTo(creep.pos.findClosestByRange(workW10N23));
- }
- else if (creep.room.name == Game.Rooms.W10N23) {
- var workW10N22 = creep.room.findExitTo(Game.rooms.W10N22);
- creep.moveTo(creep.pos.findClosestByRange(workW10N22));
- }
- else if (creep.room.name == Game.rooms.W10N22) {
- var target = creep.room.findExitTo(creep.memory.target);
- creep.moveTo(creep.pos.findClosestByRange(target));
- }
- else {
- console.log("I am lost" + creep.room.name);
- }
- }
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement