anchor.diff:  
   				    Byte(btGrassSand1),Byte(btGrassSand2),Byte(btGrassSand3),Byte(btSand):
                 TilesPartsArr.Obj[Y,X] := GetObjectFromMix(omDesert);
  -
  -				    Byte(btStone):
  -              TilesPartsArr.Obj[Y,X] := GetObjectFromMix(omGrass);
   
               Byte(btGold),Byte(btEgold):
                 begin
  
positive.code:   //10,15,0,0,0,10,5,0,15,15,20,20,10,5,btGrassSand1,btGrassSand2,btGrassSand3,btSand,btStone,btGold,btEgold,btIron,btEIron,btDark);
  
    HeightVariance: array [0..len_BIOME-1] of Byte = (
      10,10,5,5,3,5,10,10,10,10,15,15,0,5,10,10,15,20,10,20,20,0,0,0
    );
    HNST: array[0..len_BIOME-1,0..len_BIOME-1] of Byte = ( // Hide Non-Smooth Transition (height fix)
      (0,0,0,2,3,5,2,5,1,5,5,5,5,3,1,4,3,4,0,0,0,0,0,0),
      (0,0,0,2,3,5,2,5,1,5,5,5,5,3,1,4,3,4,0,0,0,0,0,0),
      (0,0,0,2,0,5,2,3,2,5,5,5,5,2,1,2,3,4,0,0,0,0,0,0),
      (2,2,2,0,3,5,0,1,2,5,5,5,5,3,3,3,4,5,0,0,0,0,0,0),
      (3,3,0,3,0,5,3,3,3,3,5,5,5,3,3,3,3,3,0,0,0,0,0,0),
      (5,5,5,5,5,0,2,0,0,5,5,5,5,4,4,4,4,4,0,0,0,0,0,0),
      (2,2,2,0,3,2,0,0,0,5,5,5,5,5,5,5,5,3,0,0,0,0,0,0),
      (5,5,3,1,3,0,0,0,5,5,5,5,5,4,4,4,4,3,0,0,0,0,0,0),
      (1,1,2,2,3,0,0,5,0,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0),
      (5,5,5,5,3,5,5,5,5,0,5,5,5,5,5,5,5,5,0,0,0,0,0,0),
      (5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,0,0,0,0,0,0),
      (5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,0,0,0,0,0,0),
      (5,5,5,5,5,5,5,5,5,5,5,5,0,3,3,3,3,3,0,0,0,0,0,0),
      (3,3,2,3,3,4,5,4,5,5,5,5,3,0,0,0,0,0,0,0,0,0,0,0),
      (1,1,1,3,3,4,5,4,5,5,5,5,3,0,0,0,0,0,0,0,0,0,0,0),
      (4,4,2,3,3,4,5,4,5,5,5,5,3,0,0,0,0,0,0,0,0,0,0,0),
      (3,3,3,4,3,4,5,4,5,5,5,5,3,0,0,0,0,0,0,0,0,0,0,0),
      (4,4,4,5,3,4,3,3,5,5,5,5,3,0,0,0,0,0,0,0,0,0,0,0),
      (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
      (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,100,0),
      (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,100,0),
      (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,100,0,0,0),
      (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,100,0,0,0),
      (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
    );
    DECREASE_HEIGHT_SET: set of Byte = [Byte(btWater),Byte(btWetland),Byte(btSwamp)];
    CHANGE_HEIGHT_SET: set of Byte = [Byte(btBigGrass), Byte(btGrassGround), Byte(btTreeGrass), Byte(btGroundSnow), Byte(btSnow1), Byte(btSnow2), Byte(btGrassSand2), Byte(btSand)];
  
negative.code:   function GetObjectFromMix(const ObjMixType: TObjectMix): Byte;
    var
      rnd: Single;
      K: TObjects;
      Output: Byte;
    begin
      Output := 255; // no object
      rnd := fRNG.Random();
      for K := Low(TObjects) to High(TObjects) do
        if rnd < ObjectMix[ ObjMixType , K ] then
        begin
          Output := GetObject(K);
          break;
        end;
      Result := Output;
  