anchor.diff:    if (fTargetUnit <> nil) then
     begin
       FinPos := fTargetUnit.GetPosition;
  -    if PlanPath(ActPos, FinPos, True) then
  +    if PlanPath(ActPos, FinPos, True, False) then
         Group.OrderWalk(FinPos, True, wtokAISquad, FinalPosition.Dir)
       else if (fGroup.GroupType <> gt_Ranged) OR (fTargetChanged AND (fAttackTimeLimit < aTick)) then
       begin
  
positive.code:     INIT_THREAT = 1000000;
      SQR_CLOSE_COMBAT_DISTANCE_LIMIT = 12*12;
      MAX_SOLDIERS_VS_HOUSE = 12;
      ATTACK_WATCHTOWER_WITH_CLOSE_COMBAT_DIST = 5;
      SQR_MAX_CLOSE_COMBAT_VS_UNIT_DIST = 3*3;
    var
      Output: Boolean;
  
negative.code:         for K := 0 to Length(HA) - 1 do
            if (
                 (HA[K].HouseType <> htWatchTower)
                 OR ( KMDistanceSqr(AvailableSquads[GT].Squads[I].Position, HA[K].GetPosition) < SQR_ATTACK_WATCHTOWER_WITH_CLOSE_COMBAT_DIST)
               )
              AND (GroupAttackCnt[K] < MAX_SOLDIERS_VS_HOUSE) then
            begin
  