anchor.diff:  begin
     if IsAtLeastAB() then
     begin
  -    cnt := ifthen(IsAtLeastAB(),18,17);
  +    cnt := ifthen(IsAtLeastSoD(),18,17);
   
       ReadBitmask(FMap.AllowedArtifacts, cnt, ARTIFACT_QUANTITY, @FMapEnv.lm.ArtifactIndexToString, true);
     end;
  
positive.code: var
    cnt: Integer;
  begin
  
    cnt := ifthen(IsAtLeastAB(),20,16);
  
    ReadBitmask(FMap.AllowedHeroes, cnt, HERO_QUANTITY, @FMapEnv.lm.HeroIndexToString, False);
  
negative.code:   end;
  end;
  
  function TMapReaderH3m.ReadID1(ACallback: TIdToString; AIDRandom: TCustomID): AnsiString;
  var
    index: TCustomID;
  begin
  