anchor.diff:      function CheckHeightPass(aLoc:TKMPoint; aPass:TPassability):boolean;
       procedure AddHouseRemainder(Loc:TKMPoint; aHouseType:THouseType; aBuildState:THouseBuildState);
   
  -    function FindField(aPosition:TKMPoint; aRadius:integer; aFieldType:TFieldType; aAgeFull:boolean; aAvoidLoc:TKMPoint; out FieldPoint:TKMPointDir):Boolean;
  -    function FindTree(aPosition:TKMPoint; aRadius:integer; aAvoidLoc:TKMPoint; out TreePoint: TKMPointDir):Boolean;
  -    function FindStone(aPosition:TKMPoint; aRadius:integer; aAvoidLoc:TKMPoint; out StonePoint: TKMPointDir):Boolean;
  -    function FindOre(aPosition:TKMPoint; Rt:TResourceType; out OrePoint: TKMPoint):Boolean;
  -    function FindPlaceForTree(aPosition:TKMPoint; aRadius:integer; aAvoidLoc:TKMPoint; out TreePlacePoint: TKMPointDir):Boolean;
  -    function FindFishWater(aPosition:TKMPoint; aRadius:integer; aAvoidLoc:TKMPoint; out FishPoint: TKMPointDir):Boolean;
  -    function CanFindFishingWater(aPosition:TKMPoint; aRadius:integer):boolean;
  -    function ChooseTreeToPlant(aPosition:TKMPoint):integer;
  -    procedure GetHouseMarks(aPosition:TKMPoint; aHouseType:THouseType; aList:TKMPointTagList);
  -
  -    function WaterHasFish(aPosition:TKMPoint):boolean;
  -    function CatchFish(aPosition:TKMPointDir; TestOnly:boolean=false):boolean;
  +    function FindField(aLoc:TKMPoint; aRadius:integer; aFieldType:TFieldType; aAgeFull:boolean; aAvoidLoc:TKMPoint; out FieldPoint:TKMPointDir):Boolean;
  +    function FindTree(aLoc:TKMPoint; aRadius:integer; aAvoidLoc:TKMPoint; out TreePoint: TKMPointDir):Boolean;
  +    function FindStone(aLoc:TKMPoint; aRadius:integer; aAvoidLoc:TKMPoint; out StonePoint: TKMPointDir):Boolean;
  +    function FindOre(aLoc:TKMPoint; Rt:TResourceType; out OrePoint: TKMPoint):Boolean;
  +    function FindPlaceForTree(aLoc:TKMPoint; aRadius:integer; aAvoidLoc:TKMPoint; out TreePlacePoint: TKMPointDir):Boolean;
  +    function FindFishWater(aLoc:TKMPoint; aRadius:integer; aAvoidLoc:TKMPoint; out FishPoint: TKMPointDir):Boolean;
  +    function CanFindFishingWater(aLoc:TKMPoint; aRadius:integer):boolean;
  +    function ChooseTreeToPlant(aLoc:TKMPoint):integer;
  +    procedure GetHouseMarks(aLoc:TKMPoint; aHouseType:THouseType; aList:TKMPointTagList);
  +
  +    function WaterHasFish(aLoc:TKMPoint):boolean;
  +    function CatchFish(aLoc:TKMPointDir; TestOnly:boolean=false):boolean;
   
       procedure SetTree(Loc:TKMPoint; ID:integer);
       procedure FallTree(Loc:TKMPoint);
  
positive.code:   //Only bother choosing direction if tree is valid, otherwise just exit with invalid
    if bTreeLoc then
    for i:=-1 to 0 do for k:=-1 to 0 do
      if ((i=0)and(k=0)) or Route_CanBeMade(aPosition,KMPoint(TreeLoc.X+k,TreeLoc.Y+i),CanWalk,0,false) then
        if (abs(MixLandHeight(TreeLoc.X+k,TreeLoc.Y+i)-Land[TreeLoc.Y,TreeLoc.X].Height) < Best) and
          ((i<>0)or(MixLandHeight(TreeLoc.X+k,TreeLoc.Y+i)-Land[TreeLoc.Y,TreeLoc.X].Height >= 0)) then
        begin
  
negative.code: end;
  
  
  function TTerrain.FindOre(aLoc:TKMPoint; Rt:TResourceType; out OrePoint: TKMPoint):Boolean;
  var i,k,RadLeft,RadRight,RadTop,RadBottom,R1,R2,R3,R4:integer; L:array[1..4]of TKMPointList;
  begin
    if not (Rt in [rt_IronOre, rt_GoldOre, rt_Coal]) then
      raise ELocError.Create('Wrong resource as Ore',aLoc);
  
    for i:=1 to 4 do L[i]:=TKMPointList.Create; //4 densities
  
  