nevrdid

findPath_static

Dec 14th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. var pathFind = {
  3.      
  4.     run : function (creep,Range){
  5.        
  6.        
  7.         if(creep.memory.actualPath){
  8.             if(creep.memory.actualPath.length){
  9.            
  10.                 if(creep.memory.PathSteep === 0){
  11.                     creep.memory.PathSteep +=1;
  12.                 }else{
  13.                     if(creep.pos != creep.memory.actualPath[creep.memory.PathSteep-1]){
  14.                         creep.memory.PathSteep +=1;
  15.                     }
  16.                     else{
  17.                         creep.memory.PathSteep -=1;
  18.                     }
  19.                 }
  20.                 return true;
  21.             }
  22.            
  23.         }
  24.            
  25.            
  26.         var Goal = Game.getObjectById(creep.memory.targetId);
  27.    
  28.         if(Goal === null){
  29.             return false;
  30.         }
  31.         else{
  32.             goal = Goal.pos;
  33.         };
  34.        
  35.         var ret = PathFinder.search(creep.pos, {pos : goal, range : Range},{
  36.                 plainCost: 2,
  37.                 swampCost: 10,
  38.              
  39.                 roomCallback: function(roomName) {
  40.        
  41.                     let room = Game.rooms[roomName];
  42.                     if (!room) return;
  43.                    
  44.                     let costs = new PathFinder.CostMatrix;
  45.            
  46.                     room.find(FIND_STRUCTURES).forEach(function(structure) {
  47.                         if (structure.structureType === STRUCTURE_ROAD) {
  48.                            
  49.                             costs.set(structure.pos.x, structure.pos.y, 1);
  50.                            
  51.                         } else if(structure.structureType !== STRUCTURE_CONTAINER &&
  52.                                  (structure.structureType !== STRUCTURE_RAMPART || !structure.my)) {
  53.                             costs.set(structure.pos.x, structure.pos.y, 0xff);
  54.                         }
  55.                     });
  56.            
  57.                     room.find(FIND_CREEPS).forEach(function(creep) {
  58.                       costs.set(creep.pos.x, creep.pos.y, 0xff);
  59.                 });
  60.        
  61.                 return costs;
  62.             },
  63.         });
  64.        
  65.         if(ret.path.length ){
  66.            
  67.             creep.memory.actualPath = ret.path;
  68.            
  69.             creep.memory.PathSteep = 0;
  70.        
  71.             return true;
  72.         }
  73.        
  74.        
  75.         return false;
  76.     }
  77.  };
  78.  
  79.  module.exports = pathFind;
Add Comment
Please, Sign In to add comment