Advertisement
purplemonday

Untitled

Nov 2nd, 2016
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.76 KB | None | 0 0
  1. /*
  2. * Module code goes here. Use 'module.exports' to export things:
  3. * module.exports.thing = 'a thing';
  4. *
  5. * You can import it from another modules like this:
  6. * var mod = require('creep.attacker');
  7. * mod.thing == 'a thing'; // true
  8. */
  9.  
  10.  
  11.  
  12.  
  13.  
  14. module.exports =
  15. {
  16.  
  17. get_idle_postion : function (creep,inpos)
  18. {
  19. var positions =[]
  20. var amount =_.filter(Game.creeps, (creep2) => creep2.memory.roomPID == creep.memory.roomPID && creep2.memory.group == creep.memory.group)
  21. var scale = Math.ceil(Math.sqrt(amount.length))
  22. //konsole.log("root = "+scale)
  23. var cycle = 0
  24. for (var y = inpos.y-scale; y < inpos.y+scale; y=y+2)
  25. {
  26. for (var x= inpos.x-scale; x< inpos.x+scale; x=x+2)
  27. {
  28.  
  29. //konsole.log(cycle+ " "+creep.memory.instance+" "+x+" "+y)
  30. if (cycle == creep.memory.instance)
  31. {
  32.  
  33. var p = new RoomPosition(x+Math.floor(scale/2), y+Math.floor(scale/2), inpos.roomName);
  34. //konsole.log(p)
  35. return p
  36. }
  37. //positions.push(pp)
  38.  
  39. cycle++
  40. }
  41. }
  42.  
  43. if (targets.length > 0)
  44. {
  45. // make sure we always focus the closest to the group pos
  46.  
  47.  
  48. var target = group_postion.pos.findClosestByRange(targets)
  49.  
  50. }
  51.  
  52. },
  53.  
  54. run :function (creep)
  55. {
  56.  
  57. function firenearest(creep)
  58. {
  59. var spawn = creep.room.find(FIND_STRUCTURES, {filter: (structure) => {return (structure.structureType == STRUCTURE_SPAWN)}})
  60. //// try moving to spaw
  61.  
  62.  
  63.  
  64. var targets = creep.pos.findInRange(FIND_HOSTILE_CREEPS, 100)
  65.  
  66. var spawns = creep.room
  67. allie = ["Sanyu","StreetLegal-GCC","Davaned","person3000","zGeneral","0mni"]
  68. var targets= creep.room.find(FIND_HOSTILE_CREEPS)
  69.  
  70. //console.log("in"+enemies)
  71. var enemies2 =[]
  72. for (e in targets)
  73. {
  74. isallie =0
  75. enemy_creep = targets[e]
  76. for (a in allie)
  77. {
  78. if (enemy_creep.owner.username ==allie [a]) isallie =1
  79. }
  80. if (isallie == 0) enemies2.push(enemy_creep)
  81. //
  82.  
  83. }
  84. targets = enemies2
  85. if (targets.length > 0)
  86. {
  87. // make sure we always focus the closest to the group pos
  88.  
  89.  
  90. var target = creep.pos.findClosestByRange(targets)
  91. creep.rangedAttack(target)
  92. //creep.rangedAttack(spawn[0])
  93. }
  94.  
  95. }
  96.  
  97. var search_units = _.filter(Game.creeps, (creep2) => creep2.memory.roomPID == creep.memory.roomPID && creep2.memory.group == creep.memory.group);
  98.  
  99.  
  100. if (creep.memory.groupsize== undefined || creep.memory.groupsize != search_units.length)
  101. {
  102. creep.memory.groupsize = search_units.length
  103. for (sss in search_units)
  104. {
  105. delete search_units[sss].memory.instance
  106. }
  107. }
  108.  
  109. group_postion = Game.flags[config[creep.memory.roomPID]["spawn"][creep.memory.group]["run_arg"]["flag"]]
  110. group_sensor = Game.flags[config[creep.memory.roomPID]["spawn"][creep.memory.group]["run_arg"]["flag_sensor"]]
  111. if (creep.memory.instance == undefined)
  112. {
  113.  
  114.  
  115. //creep.memory.instance= search_units.length
  116. var am = 0
  117. var search_units = _.filter(Game.creeps, (creep2) => creep2.memory.roomPID == creep.memory.roomPID && creep2.memory.group == creep.memory.group);
  118. for (var fo in search_units)
  119. {
  120. var search = _.filter(Game.creeps, (creep2) => creep2.memory.roomPID == creep.memory.roomPID && creep2.memory.group == creep.memory.group && creep2.memory.instance == am );
  121. if (search.length < 1)
  122. {
  123. creep.memory.instance = am
  124. break
  125. }
  126. am++
  127.  
  128. }
  129. if (creep.memory.instance == undefined) creep.memory.instance = search_units.length
  130. //Math.sqrt(x)
  131.  
  132.  
  133.  
  134. }
  135.  
  136.  
  137.  
  138.  
  139.  
  140. // are we assigned to this room?
  141. if (creep.pos.roomName == group_postion.pos.roomName )
  142. {
  143. //konsole.log("we are here")
  144.  
  145.  
  146.  
  147. // var spawn =
  148.  
  149. //creep.moveTo(this.get_idle_postion(creep,group_postion.pos))
  150.  
  151. if (creep.pos.roomName == group_sensor.pos.roomName )
  152. {
  153. var targets = group_sensor.pos.findInRange(FIND_HOSTILE_CREEPS, 10)
  154. } else {
  155. var targets = creep.pos.findInRange(FIND_HOSTILE_CREEPS, 10)
  156. if (creep.hits > (creep.hitsMax/2))
  157. creep.moveTo(group_sensor.pos)
  158. }
  159.  
  160. allie = ["Sanyu","StreetLegal-GCC","Davaned","person3000"]
  161. var targets= creep.room.find(FIND_HOSTILE_CREEPS)
  162. //console.log("in"+enemies)
  163. var enemies2 =[]
  164. for (e in targets)
  165. {
  166. isallie =0
  167. enemy_creep = targets[e]
  168. for (a in allie)
  169. {
  170. if (enemy_creep.owner.username ==allie [a]) isallie =1
  171. }
  172. if (isallie == 0) enemies2.push(enemy_creep)
  173. //
  174.  
  175. }
  176. targets = enemies2
  177. if (targets.length > 0)
  178. {
  179. // make sure we always focus the closest to the group pos
  180.  
  181.  
  182. var target = group_postion.pos.findClosestByRange(targets)
  183. // konsole.log("attacking :"+target.owner.username +creep.hits+" "+ (creep.hitsMax*0.8))
  184.  
  185. // my_state
  186.  
  187. if (creep.hits < (creep.hitsMax*0.7))
  188. {
  189. if (creep.pos.inRangeTo(target,4)) creep.moveTo(this.get_idle_postion(creep,group_postion.pos))
  190. firenearest(creep)
  191. creep.heal(creep)
  192. creep.say("LOW")
  193.  
  194. } else {
  195. // attacking
  196. // konsole.log("attack")
  197. if (creep.pos.inRangeTo(target,2))
  198. {
  199. creep.say("TOCLOSE")
  200. firenearest(creep)
  201. creep.moveTo(group_postion.pos)
  202. creep.heal(creep)
  203. } else if (creep.pos.inRangeTo(target,3)){
  204. creep.say("dmg")
  205. // konsole.log("perfect range")
  206. firenearest(creep)
  207. creep.heal(creep)
  208. } else if (creep.hits > (creep.hitsMax*0.7)) {
  209.  
  210.  
  211. var search_units = _.filter(Game.creeps, (creep2) => creep2.memory.roomPID == creep.memory.roomPID && creep2.memory.group == creep.memory.group);
  212. var search_rdy = _.filter(Game.creeps, (creep2) => creep2.memory.roomPID == creep.memory.roomPID && creep2.memory.group == creep.memory.group && creep2.hits > (creep2.hitsMax*0.8));
  213. //konsole.log("attacker "+search_rdy.length +" "+ search_units.length)
  214. if (search_rdy.length > search_units.length*0.7)
  215. {
  216. creep.say("advance")
  217. creep.moveTo(target)
  218. firenearest(creep)
  219. creep.heal(creep)
  220. } else {
  221. // creep.say("assist")
  222.  
  223. var heal_targets = creep.room.find(FIND_MY_CREEPS, {filter: (creeps) =>{return ( creeps.hits < creeps.hitsMax) }})
  224. //var repair = creep.pos.findInRange(heal_targets, 3)
  225. var repair = target .pos.findClosestByRange( heal_targets)
  226. if (repair != undefined && repair.length>0)
  227. {
  228. if (repair.name == creep.name)
  229. {
  230. creep.heal(creep)
  231. creep.say("HELP")
  232. } else {
  233. creep.say(heal_targets.length+repair.name)
  234. creep.rangedHeal(repair)
  235. }
  236. } else {
  237. creep.heal(creep)
  238. firenearest(creep)
  239. }
  240. }
  241. } else {
  242. creep.heal(creep)
  243. creep.say("??")
  244. }
  245.  
  246.  
  247. }
  248.  
  249.  
  250.  
  251. } else {
  252. creep.say("idle")
  253.  
  254.  
  255. if (creep.hits < (creep.hitsMax/2)) creep.moveTo(this.get_idle_postion(creep,group_postion.pos))
  256.  
  257.  
  258.  
  259. var target = creep.room.find(FIND_MY_CREEPS, {filter: (creeps) =>{return ( creeps.hits < creeps.hitsMax) }})
  260.  
  261. //var repair = creep.pos.findInRange(target, 10)
  262. if (target.length>0)
  263. {
  264. var repair = creep.pos.findClosestByRange(target)
  265. if (creep.pos.findInRange(repair, 3)) creep.moveTo(repair)
  266. creep.rangedHeal(repair)
  267. } else {
  268. creep.heal()
  269. }
  270. }
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277. } else {
  278. creep.heal(creep)
  279. firenearest(creep)
  280. // im not in my room so move, but do fire back at enemy's
  281. var targets = creep.pos.findInRange(FIND_HOSTILE_CREEPS, 3)
  282.  
  283. creep.moveTo(this.get_idle_postion(creep,group_postion.pos))
  284. }
  285.  
  286.  
  287. }
  288.  
  289.  
  290.  
  291.  
  292. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement