anchor.diff:    end;
   end;
   
  -function TMapReaderH3m.ReadID1(ACallback: TIdToString; AIDRandom: TCustomID
  -  ): AnsiString;
  +function TMapReaderH3m.ReadID1(ACallback: TIdToString; AIDRandom: TCustomID): AnsiString;
   var
     index: TCustomID;
   begin
  
positive.code: begin
    if IsAtLeastAB() then
    begin
      cnt := ifthen(IsAtLeastAB(),18,17);
  
      ReadBitmask(FMap.AllowedArtifacts, cnt, ARTIFACT_QUANTITY, @FMapEnv.lm.ArtifactIndexToString, true);
    end;
  
negative.code:   bit: UInt8;
    flag: Boolean;
    id: TCustomID;
  begin
    SetLength(ADest, 0);
    SetLength(ADest, ACount);
    real_count := 0;
    for byte_idx := 0 to AMaskSize - 1 do
    begin
      mask_byte := FSrc.ReadByte;
      for bit in [0..7] do
      begin
        flag := (mask_byte and (1 shl bit)) > 0;
  