anchor.diff:      for I := 0 to Count - 1 do
       begin
         M.Write(Campaigns[I].ShortTitle);
  -      Campaigns[I].SaveProgress(M);
  +      M.Write(Campaigns[I].UnlockedMaps);
       end;
   
       M.SaveToFile(FileName);
  
positive.code: end;
  
  
  procedure TKMCampaign.LoadProgress(M: TKMemoryStream);
  begin
    M.Read(fUnlockedMaps);
  end;
  
  
  //Mission texts of original campaigns are available in all languages,
  //custom campaigns are unlikely to have more texts in more than 1-2 languages
  function TKMCampaign.MissionText(aIndex: byte): string;
  
negative.code:       ScriptPath: string;
      end;
      constructor Create(const aShortTitle: AnsiString; aMapCount: byte; aBackRX: TRXType; aBackID:word);
  
      property BackGroundPic: TPicID read fBackGroundPic;
      property MapCount: byte read fMapCount;
  