anchor.diff:    begin
       if (aIdx >= Count) then
         Exit;
  -    //Plans[aIdx].Exhausted := True;
  +    gHands[fOwner].AI.CityManagement.Builder.UnLockHouseLoc(aHT, Plans[aIdx].Loc);
       Count := Count - 1;
       Plans[aIdx] := Plans[Count];
     end;
  
positive.code: 
  
  procedure TKMCityPlanner.MarkAsExhausted(aHT: THouseType; aLoc: TKMPoint);
  var
    I: Integer;
  begin
    for I := 0 to PlannedHouses[aHT].Count - 1 do
      if KMSamePoint(fPlannedHouses[aHT].Plans[I].Loc,aLoc) then
      begin
        fPlannedHouses[aHT].Plans[I].Exhausted := True;
        break;
      end;
  end;
  
  
  
negative.code:       begin
          Bid := - GA_PLANNER_FindPlaceForWoodcutter_DistFromForest * KMDistanceAbs(aCenter, Loc)
                 + DistCrit(ht_Woodcutters, Loc)
                 + SnapCrit(ht_Woodcutters, Loc)
                 - Byte(gAIFields.Influences.AvoidBuilding[Loc.Y, Loc.X] >= AVOID_BUILDING_COAL_TILE) * 1000; // Try not to place woodcutter into full forest or coal tile
          if (Bid > BestBid) then
          begin
            BestBid := Bid;
  