anchor.diff:    const
       CHANCES: array[TGroupType] of array[TGroupType] of Single = (
       // gt_Melee gt_AntiHorse gt_Ranged gt_Mounted
  -          (1,       0.5,         0.5,      2   ), // gt_Melee
  -          (0.5,     1,           1,        0.5 ), // gt_AntiHorse
  -          (2,       1,           0.5,      3   ), // gt_Ranged
  -          (0.5,     3,           0.5,      1   )  // gt_Mounted
  +      (1,       0.5,         0.5,      2   ), // gt_Melee
  +      (0.5,     1,           1,        0.5 ), // gt_AntiHorse
  +      (2,       1,           0.5,      3   ), // gt_Ranged
  +      (0.5,     3,           0.5,      1   )  // gt_Mounted
       );
     var
       GT: TGroupType;
  
positive.code: end;
  
  
  procedure TNavMeshPathFinding.ReturnRoute(out aDistance: Word; out aRoutePointArray: TKMPointArray);
  const
    USED_PENALIZATION = 40;
  var
    Count: Word;
    N, FinalN: TNavMeshNode;
  
negative.code:     function MovementCost(aFrom, aTo: Word; var aSPoint, aEPoint: TKMPoint): Longword;
      function EstimateToFinish(aIdx: Word): Word;
  
      function InitPolygonRoute(aStart, aEnd: Word; out aDistance: Word; out aRoutePolygonArray: TKMWordArray): Boolean;
      function InitRoute(aStart, aEnd: TKMPoint; out aDistance: Word; out aRoutePointArray: TKMPointArray): Boolean;
      function MakeRoute(): Boolean;
      procedure ReturnPolygonRoute(out aDistance: Word; out aRoutePolygonArray: TKMWordArray);
      procedure ReturnRoute(out aDistance: Word; out aRoutePointArray: TKMPointArray);
    public
      constructor Create();
      destructor Destroy(); override;
  
  
      //function WalkableDistance(aStart, aEnd: TKMPoint; out aDistance: Word): Boolean;
      function ShortestPolygonRoute(aStart, aEnd: Word; out aDistance: Word; out aRoutePolygonArray: TKMWordArray): Boolean;
      function ShortestRoute(aStart, aEnd: TKMPoint; out aDistance: Word; out aRoutePointArray: TKMPointArray): Boolean;
      function AvoidTrafficRoute(aOwner: TKMHandIndex; aStart, aEnd: TKMPoint; out aDistance: Word; out aRoutePointArray: TKMPointArray): Boolean;
      function AvoidEnemyRoute(aOwner: TKMHandIndex; aGroup: TGroupType; aStart, aEnd: TKMPoint; out aDistance: Word; out aRoutePointArray: TKMPointArray): Boolean;
  