anchor.diff:    finally
       stm.Free;
     end;
  -  //TODO: TTerrainManager.LoadConfig
  +  FPatternConfig.ConvertConfig;
   end;
   
   procedure TTerrainManager.LoadTerrainGraphics;
  
positive.code:   Result := GetGroupConfig(TERRAIN_GROUPS[ATerrain]);
  end;
  
  { TTransitions }
  
  constructor TTransitions.Create;
  begin
    inherited Create(TTransition);
  end;
  
  { TTransition }
  
  constructor TTransition.Create(ACollection: TCollection);
  begin
    inherited Create(ACollection);
    FData := TStringList.Create;
  end;
  
  destructor TTransition.Destroy;
  begin
    FData.Free;
    inherited Destroy;
  end;
  
  function TTransition.GetData: TStrings;
  begin
    Result := FData;
  end;
  
  procedure TTransition.SetID(AValue: string);
  begin
    if FID = AValue then Exit;
    FID := AValue;
  end;
  
  procedure TTransition.SetMapping(AValue: string);
  begin
    if FMapping = AValue then Exit;
    FMapping := AValue;
  end;
  
  procedure TTransition.SetMinPoints(AValue: integer);
  begin
    if FMinPoints = AValue then Exit;
    FMinPoints := AValue;
  
negative.code:   v.min:=min;
  end;
  
  { TWeightedRule }
  
  constructor TWeightedRule.Create;
  begin
    points := 0;
    name := '';
  end;
  
  function TWeightedRule.IsStandartRule: boolean;
  begin
    Result := (name = RULE_ANY)
      or (name = RULE_DIRT)
      or (name = RULE_NATIVE)
      or (name = RULE_SAND)
      or (name = RULE_TRANSITION);
  end;
  
  { TTerrainPatternConfig }
  
  procedure TTerrainPatternConfig.ConvertConfig;
  begin
    FDirt.Loaded;
    FNormal.Loaded;
    FRock.Loaded;
    FSand.Loaded;
    FWater.Loaded;
  end;
  
  constructor TTerrainPatternConfig.Create;
  begin
    FDirt := TPatterns.Create;
    FNormal := TPatterns.Create;
    FRock := TPatterns.Create;
    FSand := TPatterns.Create;
    FWater := TPatterns.Create;
  end;
  
  destructor TTerrainPatternConfig.Destroy;
  