anchor.diff:    private
       procedure CleanHousePointer(aFreeAndNilTask: Boolean = False);
     protected
  -    function InitiateActivity: TKMUnitTask; virtual; abstract;
  +    procedure TaskGetWork; virtual; abstract;
       function FindHome: Boolean;
       procedure ProceedHouseClosedForWorker;
     public
  
positive.code: 
    TKMUnitRecruit = class(TKMSettledUnit)
    protected
      function InitiateActivity: TKMUnitTask; override;
    public
    end;
  
    //Serf - transports all wares between houses
  
negative.code:       end else begin
  
          if not (fHome.HouseType in HOUSE_WORKSHOP)
          or (fHome.CheckResOut(wtAll) < MAX_WARES_OUT_WORKSHOP) then //Do not do anything if we have too many ready resources
            TaskGetWork; //Unit is at home, so go get a job
  
          if fTask = nil then //We didn't find any job to do - rest at home
            SetActionStay(Max(gResHouses[fHome.HouseType].WorkerRest,1)*10, uaWalk); //By default it's 0, don't scan that often
  