anchor.diff:      FreeAndNil(fTask);
     fHome.HasOwner := False;
     gHands.CleanUpHousePointer(fHome);
  +end;
  +
  +
  +procedure TKMSettledUnit.Paint(aTickLag: Single);
  +var
  +  Act: TKMUnitActionType;
  +  XPaintPos, YPaintPos: Single;
  +  ID: Integer;
  +begin
  +  inherited;
  +  if not fVisible then exit;
  +  if fAction = nil then exit;
  +  Act := fAction.fType;
  +
  +  XPaintPos := fPositionF.X + UNIT_OFF_X + GetSlide(axX);
  +  YPaintPos := fPositionF.Y + UNIT_OFF_Y + GetSlide(axY);
  +
  +  ID := fUID * Byte(not (fAction.fType in [uaDie, uaEat]));
  +
  +  case fAction.fType of
  +    uaWalk:
  +      begin
  +        gRenderPool.AddUnit(fType, ID, uaWalk, Direction, AnimStep, XPaintPos, YPaintPos, gHands[fOwner].GameFlagColor, true);
  +        if gRes.Units[fType].SupportsAction(uaWalkArm) then
  +          gRenderPool.AddUnit(fType, ID, uaWalkArm, Direction, AnimStep, XPaintPos, YPaintPos, gHands[fOwner].GameFlagColor, false);
  +      end;
  +    uaWork..uaEat:
  +        gRenderPool.AddUnit(fType, ID, Act, Direction, AnimStep, XPaintPos, YPaintPos, gHands[fOwner].GameFlagColor, true);
  +    uaWalkArm .. uaWalkBooty2:
  +      begin
  +        gRenderPool.AddUnit(fType, ID, uaWalk, Direction, AnimStep, XPaintPos, YPaintPos, gHands[fOwner].GameFlagColor, true);
  +        gRenderPool.AddUnit(fType, ID, Act, Direction, AnimStep, XPaintPos, YPaintPos, gHands[fOwner].GameFlagColor, false);
  +      end;
  +  end;
  +
  +  if fThought <> thNone then
  +    gRenderPool.AddUnitThought(fType, Act, Direction, fThought, XPaintPos, YPaintPos);
   end;
   
   
  
positive.code:     procedure ProceedHouseClosedForWorker;
    public
      function UpdateState: Boolean; override;
    end;
  
    //This is a common class for all units, who can work in house
  
negative.code: 
  
  { TKMUnitCitizen }
  function TKMUnitCitizen.CanWorkAt(aLoc: TKMPoint; aGatheringScript: TKMGatheringScript): Boolean;
  var
    I: Integer;
  