anchor.diff:    if NeedWalkBackToRoad then
     begin
       case fPhase2 of
  -      0:  begin
  -            fUnit.SetActionStay(4, uaWalk);
  -            fUnit.Thought := thQuest;
  -          end;
  -      1:  begin
  +  //No need to think if need go back to road
  +  //No need 2 phases here, but let's keep old code for a while
  +//      0:  begin
  +//            fUnit.SetActionStay(1, uaWalk);
  +////            fUnit.Thought := thQuest;
  +//          end;
  +      0,1:  begin
               fUnit.SetActionWalkToRoad(uaWalk, 0, tpWalkRoad,
                                 [gTerrain.GetRoadConnectID(fPointBelowToHouse), gTerrain.GetRoadConnectID(fPointBelowFromHouse)]);
               fUnit.Thought := thNone;
               fPhase := 5;
             end;
       end;
  -    Inc(fPhase2);
  +    fPhase2 := 10;
       Exit;
     end;
   
  
positive.code:     //Check if we already reach destination, no need to check anymore.
      //Also there is possibility when connected path (not diagonal) to house was cut and we have only diagonal path
      //then its possible, that fPointBelowToHouse Connect Area will have only 1 tile, that means its WalkConnect will be 0
      //then no need actually need to go to raod
      if fUnit.CurrPosition = fToHouse.PointBelowEntrance then
        Exit(False);
  
  
negative.code:   Result := trTaskContinues;
  
    //Check if need walk back to road
    //that could happen, when serf was pushd out of road or if he left offer house not onto road
    //Used only if we walk from house to other house or construction site
    NeedWalkBackToRoad := (((fDeliverKind = dkToHouse) and ((fPhase - 1) in [4,5])) //Phase 4 could be if we just left Offer House
                            or (((fPhase - 1) in [4,5,6]) and (fDeliverKind = dkToConstruction))) //Phase 4 could be if we just left Offer House
                          and NeedGoToRoad();
  
    if not NeedWalkBackToRoad then
  