Advertisement
purplemonday

Untitled

Oct 20th, 2016
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.85 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.  
  44. },
  45.  
  46. run :function (creep)
  47. {
  48. var search_units = _.filter(Game.creeps, (creep2) => creep2.memory.roomPID == creep.memory.roomPID && creep2.memory.group == creep.memory.group);
  49.  
  50.  
  51. if (creep.memory.groupsize== undefined || creep.memory.groupsize != search_units.length)
  52. {
  53. creep.memory.groupsize = search_units.length
  54. for (sss in search_units)
  55. {
  56. delete search_units[sss].memory.instance
  57. }
  58. }
  59.  
  60. group_postion = Game.flags[config[creep.memory.roomPID]["spawn"][creep.memory.group]["run_arg"]["flag"]]
  61. group_sensor = Game.flags[config[creep.memory.roomPID]["spawn"][creep.memory.group]["run_arg"]["flag_sensor"]]
  62. if (creep.memory.instance == undefined)
  63. {
  64.  
  65.  
  66. //creep.memory.instance= search_units.length
  67. var am = 0
  68. var search_units = _.filter(Game.creeps, (creep2) => creep2.memory.roomPID == creep.memory.roomPID && creep2.memory.group == creep.memory.group);
  69. for (var fo in search_units)
  70. {
  71. var search = _.filter(Game.creeps, (creep2) => creep2.memory.roomPID == creep.memory.roomPID && creep2.memory.group == creep.memory.group && creep2.memory.instance == am );
  72. if (search.length < 1)
  73. {
  74. creep.memory.instance = am
  75. break
  76. }
  77. am++
  78.  
  79. }
  80. if (creep.memory.instance == undefined) creep.memory.instance = search_units.length
  81. //Math.sqrt(x)
  82.  
  83.  
  84.  
  85. }
  86.  
  87.  
  88.  
  89.  
  90.  
  91. // are we assigned to this room?
  92. if (creep.pos.roomName == group_postion.pos.roomName)
  93. {
  94. //konsole.log("we are here")
  95. //creep.moveTo(this.get_idle_postion(creep,group_postion.pos))
  96. var targets = group_sensor.pos.findInRange(FIND_HOSTILE_CREEPS, 10)
  97.  
  98. if (targets.length > 0)
  99. {
  100. // make sure we always focus the closest to the group pos
  101.  
  102.  
  103. var target = group_postion.pos.findClosestByRange(targets)
  104. // konsole.log("attacking :"+target.owner.username +creep.hits+" "+ (creep.hitsMax*0.8))
  105.  
  106. // my_state
  107.  
  108. if (creep.hits < (creep.hitsMax*0.7))
  109. {
  110. if (creep.pos.inRangeTo(target,4)) creep.moveTo(this.get_idle_postion(creep,group_postion.pos))
  111. creep.rangedAttack(hostile)
  112. creep.heal(creep)
  113. creep.say("LOW")
  114.  
  115. } else {
  116. // attacking
  117. // konsole.log("attack")
  118. if (creep.pos.inRangeTo(target,2))
  119. {
  120. creep.say("TOCLOSE")
  121. creep.rangedAttack(target)
  122. creep.moveTo(group_postion.pos)
  123. creep.heal(creep)
  124. } else if (creep.pos.inRangeTo(target,3)){
  125. creep.say("dmg")
  126. // konsole.log("perfect range")
  127. creep.rangedAttack(target)
  128. creep.heal(creep)
  129. } else if (creep.hits > (creep.hitsMax*0.7)) {
  130.  
  131.  
  132. var search_units = _.filter(Game.creeps, (creep2) => creep2.memory.roomPID == creep.memory.roomPID && creep2.memory.group == creep.memory.group);
  133. 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));
  134. //konsole.log("attacker "+search_rdy.length +" "+ search_units.length)
  135. if (search_rdy.length > search_units.length*0.7)
  136. {
  137. creep.say("advance")
  138. creep.moveTo(target)
  139. creep.rangedAttack(target)
  140. creep.heal(creep)
  141. } else {
  142. creep.say("assist")
  143.  
  144. var heal_targets = creep.room.find(FIND_MY_CREEPS, {filter: (creeps) =>{return ( creeps.hits < creeps.hitsMax) }})
  145. //var repair = creep.pos.findInRange(heal_targets, 3)
  146. var repair = target .pos.findClosestByRange( heal_targets)
  147. if (repair.name == creep.name)
  148. {
  149. creep.heal(creep)
  150. creep.say("HELP")
  151. } else {
  152. creep.say(heal_targets.length+repair.name)
  153. creep.rangedHeal(repair)
  154. }
  155.  
  156. }
  157. } else {
  158. creep.heal(creep)
  159. creep.say("??")
  160. }
  161.  
  162.  
  163. }
  164.  
  165.  
  166.  
  167. } else {
  168. creep.say("idle")
  169. creep.moveTo(this.get_idle_postion(creep,group_postion.pos))
  170. var target = creep.room.find(FIND_MY_CREEPS, {filter: (creeps) =>{return ( creeps.hits < creeps.hitsMax) }})
  171.  
  172. //var repair = creep.pos.findInRange(target, 10)
  173. if (target.length>0)
  174. {
  175. var repair = creep.pos.findClosestByRange(target)
  176. if (creep.pos.findInRange(repair, 3)) creep.moveTo(repair)
  177. creep.rangedHeal(repair)
  178. } else {
  179. creep.heal()
  180. }
  181. }
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188. } else {
  189. creep.heal()
  190. // im not in my room so move, but do fire back at enemy's
  191. var targets = creep.pos.findInRange(FIND_HOSTILE_CREEPS, 3)
  192. if (targets.length>0)
  193. {
  194.  
  195.  
  196. target = creep.pos.findClosestByRange(targets)
  197. creep.rangedAttack(target)
  198.  
  199. } else {
  200.  
  201. }
  202. creep.moveTo(this.get_idle_postion(creep,group_postion.pos))
  203. }
  204.  
  205.  
  206. }
  207.  
  208.  
  209.  
  210.  
  211. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement