Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.80 KB | None | 0 0
  1. var roleHarvester = {
  2.  
  3. PickSource: function(creep){
  4. Sources = creep.room.find(FIND_SOURCES);
  5. },
  6. /** @param {Creep} creep **/
  7.  
  8. run: function(creep) {
  9. var misc = require('misc');
  10. var TargetSource = Game.getObjectById(creep.memory.source);
  11. if (creep.body.length == 4 && creep.room.energyAvailable == creep.room.energyCapacityAvailable && creep.room.energyCapacityAvailable > 500)
  12. {
  13. console.log('killing temporary harvester');
  14.  
  15. creep.suicide();
  16. return true;
  17. }
  18. if (!TargetSource)
  19. {
  20. creep.say('search');
  21. var Sources = creep.room.find(FIND_SOURCES);
  22. var CounterArray = [] ;
  23. var x = 0
  24. while (x < Sources.length)
  25. {
  26. CounterArray.push(0);
  27. x++
  28. }
  29. x=0;
  30. if (Sources.length > 1)
  31. {
  32. var SourceArray = creep.room.Harvesters();
  33. for (var name in SourceArray)
  34. {
  35. CounterArray[Sources.indexOf(Game.getObjectById(SourceArray[name].memory.source))]++;
  36. }
  37. var BestCount = 10;
  38. while (x < CounterArray.length)
  39. {
  40. var BestTracker;
  41. if (CounterArray[x] < BestCount)
  42. {
  43. BestCount = CounterArray[x];
  44. BestTracker = Sources[x];
  45. }
  46.  
  47. x++;
  48. }
  49. creep.memory.source = BestTracker.id;
  50. TargetSource = BestTracker;
  51. }
  52. else
  53. {
  54. creep.memory.source = Sources[0].id;
  55. TargetSource = Sources[0];
  56. }
  57.  
  58. }
  59. var LinkFound;
  60. var NearestContainer = creep.pos.NearestDropOff();
  61. if (!NearestContainer && !creep.room.storage)
  62. {
  63. //NearestContainer = creep.pos.findClosestByRange(FIND_STRUCTURES, {filter: { structureType: STRUCTURE_CONTAINER}})
  64. }
  65. if (!NearestContainer && creep.room.storage)
  66. {
  67. NearestContainer = creep.pos.findClosestByRange(FIND_STRUCTURES, {filter : {structureType: STRUCTURE_STORAGE}});
  68. }
  69. if (!NearestContainer)
  70. {
  71. NearestContainer = creep.room.spawn();
  72. LinkFound = false;
  73. }
  74. else
  75. {
  76. LinkFound = true;
  77. }
  78. if(creep.memory.Restock)
  79. {
  80. if (_.sum(creep.carry) == creep.carryCapacity)
  81. {
  82. creep.memory.Restock = false;
  83. return;
  84. }
  85. var targets = creep.room.find(FIND_DROPPED_RESOURCES);
  86. if(targets.length)
  87. {
  88. if (creep.pos.getRangeTo(targets[0]) < 5)
  89. {
  90. creep.moveTo(targets[0]);
  91. creep.pickup(targets[0]);
  92. return;
  93. }
  94.  
  95. }
  96. var source = TargetSource ;
  97. if(creep.harvest(source) == ERR_NOT_IN_RANGE) {
  98. creep.room.visual.line(creep.pos,TargetSource.pos,{color: 'green'});
  99. creep.moveTo(source);
  100. }
  101. }
  102. else
  103. {
  104. if (creep.pos.x == 41 && creep.pos.y == 9 && creep.pos.roomName == 'E64N23')
  105. {
  106. creep.move(BOTTOM);
  107. return;
  108. }
  109. if (creep.carry.energy == 0)
  110. {
  111. creep.memory.Restock = true;
  112. }
  113. var Result = creep.transfer(NearestContainer, RESOURCE_ENERGY);
  114. if (LinkFound == true)
  115. {
  116. creep.room.visual.line(creep.pos,NearestContainer.pos,{color: 'blue'});
  117. }
  118. if (LinkFound == false)
  119. {
  120. var extensions = creep.room.find(FIND_MY_STRUCTURES, {filter: { structureType: STRUCTURE_EXTENSION}});
  121. var x = 0;
  122. var intFullCounter = 0;
  123. while (x < extensions.length)
  124. {
  125. if (extensions[x].energy < extensions[x].energyCapacity)
  126. {
  127. var Result = creep.transfer(extensions[x],RESOURCE_ENERGY);
  128. if (Result == ERR_NOT_IN_RANGE)
  129. {
  130. creep.room.visual.line(creep.pos,extensions[x],{color: 'blue'});
  131. creep.moveTo(extensions[x]);
  132. creep.say('HME');
  133. return;
  134. }
  135. if (Result == OK)
  136. {
  137. console.log('Pillbot - Harvester dropping off energy to extension in room' + creep.room.name);
  138. break;
  139. }
  140. }
  141. else
  142. {
  143. intFullCounter++;
  144. }
  145. x++;
  146. }
  147. if (intFullCounter == extensions.length)
  148. {
  149. var result = ERR_FULL;
  150. }
  151.  
  152. if (result == ERR_FULL)
  153. {
  154. var Target = creep.room.spawn();
  155. if (Target.energy < 300)
  156. {
  157. var result = creep.transfer(Target,RESOURCE_ENERGY);
  158. if (result == ERR_NOT_IN_RANGE)
  159. {
  160. creep.room.visual.line(creep.pos,Target.pos,{color: 'blue'});
  161. creep.moveTo(Target);
  162. creep.say('HMS');
  163. }
  164. }
  165. else
  166. {
  167. creep.moveTo(Target);
  168. }
  169.  
  170. }
  171. return;
  172. }
  173. if(Result == ERR_NOT_IN_RANGE) {
  174. creep.moveTo(NearestContainer);
  175. creep.say('Container');
  176. }
  177.  
  178.  
  179.  
  180. if (Result == OK)
  181. {
  182. console.log('Pillbot - Worker dropping off energy');
  183. }
  184. }
  185. }
  186. };
  187.  
  188. module.exports = roleHarvester;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement