anchor.diff:         Abandon;
          TaskDone:=true;
        end;
  -  7: SetActionStay(5,ua_Walk);
  +  7: SetActionStay(5,ua_Walk); //wait a bit inside
     8: if not fToHouse.IsDestroyed then
        begin
  +       TKMUnitSerf(fUnit).TakeResource(TKMUnitSerf(fUnit).Carry);
          fToHouse.ResAddToIn(TKMUnitSerf(fUnit).Carry);
  -       TKMUnitSerf(fUnit).TakeResource(TKMUnitSerf(fUnit).Carry);
          fPlayers.Player[byte(GetOwner)].DeliverList.GaveDemand(fDeliverID);
          fPlayers.Player[byte(GetOwner)].DeliverList.AbandonDelivery(fDeliverID);
   
          //Now look for another delivery from inside this house
          NewDelivery := TKMUnitSerf(fUnit).GetActionFromQueue(fToHouse);
          if NewDelivery <> nil then
  -       begin
  -         //Take this new delivery
  +       begin //Take this new delivery
            NewDelivery.Phase := 2; //Skip to resource-taking part of the new task
            TKMUnitSerf(fUnit).SetNewDelivery(NewDelivery);
            Self.Free; //After setting new unit task we should free self. Note do not set TaskDone:=true as this will affect the new task
  
positive.code:     0..4:;
      5: SetActionWalk(fUnit,fToHouse.GetEntrance,ua_Walk,false); //Any tile next to entrance will do
      6: begin
           fToHouse.ResAddToBuild(TKMUnitSerf(fUnit).Carry);
           TKMUnitSerf(fUnit).TakeResource(TKMUnitSerf(fUnit).Carry);
           fPlayers.Player[byte(GetOwner)].DeliverList.GaveDemand(fDeliverID);
           fPlayers.Player[byte(GetOwner)].DeliverList.AbandonDelivery(fDeliverID);
           SetActionStay(1,ua_Walk);
  
negative.code:        TKMUnitSerf(fUnit).GiveResource(fResourceType);
         fPlayers.Player[byte(GetOwner)].DeliverList.TakenOffer(fDeliverID);
       end else begin
         Abandon;
         TaskDone := true;
         fLog.AssertToLog(false,'Resource''s gone..');
       end;
       SetActionStay(5,ua_Walk); //Wait a moment inside
  