anchor.diff:  
   
   function TKMUnitWorker.UpdateState: Boolean;
  +var
  +  H: TKMHouseInn;
   begin
     Result := True; //Required for override compatibility
     if fCurrentAction = nil then
       raise ELocError.Create(gRes.Units[UnitType].GUIName + ' has no action at start of TKMUnitWorker.UpdateState', fCurrPosition);
     if inherited UpdateState then Exit;
   
  -  CheckCondition;
  -
  -  if (fThought = th_Build) and (fUnitTask = nil) then
  +  if fCondition < UNIT_MIN_CONDITION then
  +  begin
  +    H := gHands[fOwner].FindInn(fCurrPosition, Self);
  +    if H <> nil then
  +      fUnitTask := TKMTaskGoEat.Create(H, Self);
  +  end;
  +
  +  if (fThought = th_Build)and(fUnitTask = nil) then
       fThought := th_None; //Remove build thought if we are no longer doing anything
   
     //If we are still stuck on a house for some reason, get off it ASAP
  
positive.code: uses
    Classes, Math, SysUtils, KromUtils, Types,
    KM_CommonClasses, KM_Defaults, KM_Points, KM_CommonUtils,
    KM_Terrain, KM_ResHouses, KM_ResWares, KM_Houses, KM_HouseSchool, KM_HouseBarracks, KM_HouseInn;
  
  //Memo on directives:
  //Dynamic - declared and used (overriden) occasionally
  
negative.code:   OldThought := fThought;
    fThought := th_None;
  
    if fCondition < UNIT_MIN_CONDITION then
    begin
      H := gHands[fOwner].FindInn(fCurrPosition, Self);
      if H <> nil then
        fUnitTask := TKMTaskGoEat.Create(H, Self);
    end;
  
    //Only show quest thought if we have been idle since the last update (not HadTask)
    //and not thinking anything else (e.g. death)
  