anchor.diff:      Output := gHands[fOwner].CanAddHousePlan(Loc, aHT);
       if Output then
       begin
  +      // Remove avoid building area around house plan in remove tree mode
  +      if fPlanner.PlannedHouses[aHT].Plans[HouseIdx].RemoveTreeInPlanProcedure then
  +        UnlockHouseLoc(aHT, fPlanner.PlannedHouses[aHT].Plans[HouseIdx].Loc);
  +
         // Update reservation status
  -      if fPlanner.PlannedHouses[aHT,HouseIdx].HouseReservation AND not aHouseReservation then
  -      begin
  -        fPlanner.PlannedHouses[aHT,HouseIdx].HouseReservation := False;
  +      if fPlanner.PlannedHouses[aHT].Plans[HouseIdx].HouseReservation AND not aHouseReservation then
  +      begin
  +        fPlanner.PlannedHouses[aHT].Plans[HouseIdx].HouseReservation := False;
           UnLockHouseLoc(aHT, Loc);
         end;
  -      gHands[fOwner].AddHousePlan(aHT, Loc); // Place house
  -      if not fPlanner.PlannedHouses[aHT,HouseIdx].HouseReservation then
  -      begin
  +
  +      // if house is not reserved (or will be reserved in this tick)
  +      if not fPlanner.PlannedHouses[aHT].Plans[HouseIdx].HouseReservation then
  +      begin
  +        gHands[fOwner].AddHousePlan(aHT, Loc); // Place house
           // Add road to node
           if fPlanner.GetRoadToHouse(aHT, HouseIdx, fBuildNodes[Node1Idx].FieldList, fBuildNodes[Node1Idx].FieldType) then
  -        begin
  -          LockNode(fBuildNodes[Node1Idx]);
  -          with fBuildNodes[Node1Idx] do
  +          //if aUnlockProcedure then
  +          //begin
  +          //  for I := 0 to fBuildNodes[Node1Idx].FieldList.Count - 1 do
  +          //    if gHands[fOwner].CanAddFieldPlan( fBuildNodes[Node1Idx].FieldList.Items[I], ft_Road ) then
  +          //      gHands[fOwner].BuildList.FieldworksList.AddField( fBuildNodes[Node1Idx].FieldList.Items[I], ft_Road );
  +          //end
  +          //else
  +          begin
  +            LockNode(fBuildNodes[Node1Idx]);
  +            with fBuildNodes[Node1Idx] do
  +            begin
  +              Active := True;
  +              RemoveTreesMode := False;
  +              ShortcutMode := False;
  +              MaxReqWorkers := 5 + Byte(aUnlockProcedure) * 20;
  +              RequiredWorkers := Min(MaxReqWorkers, FieldList.Count);
  +              CenterPoint := FieldList[0];
  +            end;
  +          end;
  +        // Add field to node (if is required [ht_Farm, ht_Wineyard])
  +        if fPlanner.GetFieldToHouse(aHT, HouseIdx, fBuildNodes[Node2Idx].FieldList, fBuildNodes[Node2Idx].FieldType) then
  +        begin
  +          LockNode(fBuildNodes[Node2Idx]);
  +          with fBuildNodes[Node2Idx] do
             begin
               Active := True;
               RemoveTreesMode := False;
  -            MaxReqWorkers := 5 + Byte(aUnlockProcedure) * 20;
  -            RequiredWorkers := Min(MaxReqWorkers, FieldList.Count);
  -            CenterPoint := FieldList[0];
  -          end;
  -        end;
  -        // Add field to node (if is required [ht_Farm, ht_Wineyard])
  -        if fPlanner.GetFieldToHouse(aHT, HouseIdx, fBuildNodes[Node2Idx].FieldList, fBuildNodes[Node2Idx].FieldType) then
  -        begin
  -          LockNode(fBuildNodes[Node2Idx]);
  -          with fBuildNodes[Node2Idx] do
  -          begin
  -            Active := True;
  -            RemoveTreesMode := False;
  +            ShortcutMode := False;
               MaxReqWorkers := 5 + Byte(aUnlockProcedure) * 20;
               RequiredWorkers := Min(MaxReqWorkers, FieldList.Count);
               CenterPoint := Loc;
             end;
           end;
  -      end;
  -      // Reserve house place
  -      if aHouseReservation then
  -      begin
  -        fPlanner.PlannedHouses[aHT,HouseIdx].HouseReservation := True;
  -        gHands[fOwner].RemHousePlan(Loc);
  -        LockHouseLoc(aHT, Loc);
  +        // Reserve house place
  +        if aHouseReservation then
  +        begin
  +          fPlanner.PlannedHouses[aHT].Plans[HouseIdx].HouseReservation := True;
  +          gHands[fOwner].RemHousePlan(Loc);
  +          LockHouseLoc(aHT, Loc);
  +        end;
         end;
       end
  -    else
  +    else if gAIFields.Eye.CanPlaceHouse(Loc, aHT, True) then
       begin
         // Remove tree procedure is already active
  -      if (fPlanner.PlannedHouses[aHT,HouseIdx].RemoveTreeInPlanProcedure) then
  +      if (fPlanner.PlannedHouses[aHT].Plans[HouseIdx].RemoveTreeInPlanProcedure) then
         begin
           // Wait till is tree removed
         end
  
positive.code:           // Check if is wine plan already placed
            if IsPlan(FieldList.Items[I], tlFieldWork, ft_Wine) then
            begin
            end
            // If we cannot remove tree by placing wineyard remove point from list
            else if not BuildField(I, ft_Wine) then
  
negative.code:               FieldList.Delete(I);
            end;
          end
          // Tree could be cut down
          else
          begin
            FieldList.Delete(I);
  