Advertisement
CentralS

Untitled

Jan 31st, 2020
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.57 KB | None | 0 0
  1. "use strict";
  2.  
  3. const roleHarvester = require('role.harvester');
  4. const roleBuilder = require('role.builder');
  5. const roleRepairer = require('role.repairer');
  6. const roleGetter = require('role.getter');
  7. const roleFiller = require('role.filler');
  8. const roleDistantHarvester = require('role.distantHarvester');
  9. const roleAttacker = require('role.attacker');
  10. const roleClaimer = require('role.claimer');
  11. const roleUpgrader = require('./role.upgrader');
  12.  
  13. const shared = require('shared');
  14. const rolesRoom = require('roles');
  15.  
  16. // if (rolesRoom.rooms[i].distantHarvester) {
  17. // createRoles[rolesRoom.rooms[i].name].distantHarvester.quantity = rolesRoom.rooms[i].distantHarvester.quantity;
  18. // createRoles[rolesRoom.rooms[i].name].distantHarvester.goRoom = rolesRoom.rooms[i].distantHarvester.goRoom;
  19. // }
  20. module.exports.loop = function () {
  21.  
  22. const createRoles = {};
  23.  
  24. for (const i in rolesRoom.rooms) {
  25. createRoles[rolesRoom.rooms[i].name] = rolesRoom.levels[rolesRoom.rooms[i].level];
  26. }
  27.  
  28. // const roles = createRoles;
  29. const roles = rolesRoom.role;
  30. // console.log(roles['E59S58']['upgrader'].currentQuantity)
  31. // console.log(JSON.stringify(roles))
  32. // подсчитываем количество крипов в руме
  33. for (const spawnRoom in roles) {
  34. for (const roleName in roles[spawnRoom]) {
  35. roles[spawnRoom][roleName].currentQuantity = 0;
  36. }
  37. }
  38. // console.log(JSON.stringify(roles))
  39. // console.log(roles['E59S58']['upgrader'].currentQuantity)
  40. for (const i in Game.creeps) {
  41. const creep = Game.creeps[i];
  42. roles[creep.memory.spawnRoom][creep.memory.role].currentQuantity += 1;
  43.  
  44. // console.log(creep.memory.spawnRoom)
  45. // // console.log(creep.memory.role)
  46. // console.log(roles[creep.memory.spawnRoom][creep.memory.role].currentQuantity)
  47. // console.log(creep)
  48. if (creep.memory.spawnRoom === 'E59S58' && creep.memory.role === 'upgrader') {
  49. // console.log(creep.memory.spawnRoom)
  50. // console.log(creep.memory.role)
  51. // console.log(creep)
  52. // console.log(roles['E59S58']['upgrader'].currentQuantity)
  53. }
  54. }
  55. console.log(roles['E59S58']['upgrader'].currentQuantity)
  56. // console.log(JSON.stringify(roles))
  57. // console.log(JSON.stringify(rolesRoom.role))
  58. // трансфер энергии между линками
  59. for (const spawnRoom in roles) {
  60. if (roles.hasOwnProperty(spawnRoom)) {
  61. const controller = Game.rooms[spawnRoom].find(FIND_STRUCTURES, {
  62. filter: function (object) {
  63. if (object.structureType === 'controller') {
  64. return true;
  65. }
  66. }
  67. })[0];
  68. const linkController = Game.rooms[spawnRoom].find(FIND_STRUCTURES, {
  69. filter: function (object) {
  70. if (object.structureType === 'link') {
  71. return (shared.getDistance(object.pos.x, controller.pos.x) < 4 && shared.getDistance(object.pos.y, controller.pos.y) < 4);
  72. }
  73. }
  74. })[0];
  75.  
  76. if (linkController) {
  77. Game.rooms[spawnRoom].find(FIND_STRUCTURES, {
  78. filter: (object) => {
  79. if (object.structureType === 'link' && object !== linkController) {
  80. object.transferEnergy(linkController);
  81. }
  82. }
  83. });
  84. }
  85. }
  86. }
  87.  
  88. // атака башни
  89. for (const spawnRoom in roles) {
  90. if (roles.hasOwnProperty(spawnRoom)) {
  91. let towers = Game.rooms[spawnRoom].find(
  92. FIND_MY_STRUCTURES, {filter: {structureType: STRUCTURE_TOWER}});
  93.  
  94. towers.map(tower => {
  95.  
  96. if (tower) {
  97. const closestHostile = tower.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
  98. if (closestHostile) {
  99. tower.attack(closestHostile);
  100. } else {
  101. const closestDamagedWall = tower.pos.findClosestByRange(STRUCTURE_WALL, {
  102. filter: (structure) => structure.hits < 100
  103. });
  104.  
  105. const closestDamagedRampart = tower.pos.findClosestByRange(STRUCTURE_RAMPART, {
  106. filter: (structuere) => structure.hits < 1
  107. });
  108.  
  109.  
  110. const closestDamagedStructure = tower.pos.findClosestByRange(FIND_STRUCTURES, {
  111. filter: (structure) => {
  112. return structure.structureType !== 'constructedWall' && structure.hits < structure.hitsMax
  113. }
  114. });
  115.  
  116. if (closestDamagedWall) {
  117. tower.repair(closestDamagedWall);
  118. }
  119.  
  120. if (closestDamagedRampart) {
  121. tower.repair(closestDamagedRampart);
  122. }
  123.  
  124. if (closestDamagedStructure) {
  125. tower.repair(closestDamagedStructure)
  126. }
  127. }
  128. }
  129. })
  130. }
  131. }
  132.  
  133. // спаун крипов
  134. for (const spawnRoom in roles) {
  135. if (roles.hasOwnProperty(spawnRoom)) {
  136. for (const roleName in roles[spawnRoom]) {
  137. if (roles[spawnRoom].hasOwnProperty(roleName) && roles[spawnRoom][roleName] && roles[spawnRoom][roleName].currentQuantity < roles[spawnRoom][roleName].quantity) {
  138.  
  139. let arrCreeps = [];
  140. for (const value in Game.creeps) {
  141. if (Game.creeps.hasOwnProperty(value)) {
  142. const creep = Game.creeps[value];
  143. if (creep.memory.role === roleName && creep.memory.spawnRoom === spawnRoom) {
  144. arrCreeps.push(creep.memory.numberCreep);
  145. }
  146. }
  147. }
  148. let numberCreep = shared.getNextNumber(arrCreeps);
  149.  
  150. let strength = [];
  151. if (roleName === 'harvester') {
  152. Game.rooms[spawnRoom].energyAvailable <= 300 ? strength = roles[spawnRoom][roleName].strength : strength = roles[spawnRoom].bigHarvester.strength;
  153. } else {
  154. strength = roles[spawnRoom][roleName].strength;
  155. }
  156. const creepName = roleName[0].toUpperCase() + roleName.substring(1) + numberCreep + `(${spawnRoom})`;
  157.  
  158. let spawn = {};
  159. Game.rooms[spawnRoom].find(FIND_STRUCTURES, {
  160. filter: (object) => {
  161. if (object.structureType === 'spawn') {
  162. spawn = object;
  163. }
  164. }
  165. });
  166.  
  167. const memory = {
  168. role: roleName,
  169. working: false,
  170. spawnName: spawn.name,
  171. spawnRoom,
  172. numberCreep
  173. };
  174. if (roles[spawnRoom][roleName].goRoom) {
  175. memory.goRoom = roles[spawnRoom][roleName].goRoom;
  176. }
  177. if (spawn.name !== undefined) {
  178. spawn.spawnCreep(
  179. strength,
  180. creepName, {
  181. memory
  182. }
  183. );
  184. }
  185. }
  186. }
  187. }
  188. }
  189.  
  190. for (const value in Game.creeps) {
  191. if (Game.creeps.hasOwnProperty(value)) {
  192. const creep = Game.creeps[value];
  193.  
  194. if (creep.memory.role === 'harvester') {
  195. roleHarvester.run(creep);
  196. }
  197. if (creep.memory.role === 'filler') {
  198. roleFiller.run(creep);
  199. }
  200. if (creep.memory.role === 'getter') {
  201. roleGetter.run(creep);
  202. }
  203. if (creep.memory.role === 'upgrader') {
  204. roleUpgrader.run(creep);
  205. }
  206. if (creep.memory.role === 'builder') {
  207. roleBuilder.run(creep);
  208. }
  209. if (creep.memory.role === 'repairer') {
  210. roleRepairer.run(creep);
  211. }
  212. if (creep.memory.role === 'distantHarvester') {
  213. roleDistantHarvester.run(creep);
  214. }
  215. if (creep.memory.role === 'attacker') {
  216. roleAttacker.run(creep);
  217. }
  218. if (creep.memory.role === 'claimer') {
  219. roleClaimer.run(creep);
  220. }
  221. }
  222. }
  223.  
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement