anchor.diff:  
   //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): AnsiString;
  +function TKMCampaign.MissionText(aIndex: Byte): UnicodeString;
   begin
     Result := fTextLib[10 + aIndex];
   end;
   
   
  -function TKMCampaign.BreifingAudioFile(aIndex: Byte; aLang: string): string;
  +function TKMCampaign.BreifingAudioFile(aIndex: Byte; aLang: AnsiString): string;
   begin
     Result := fPath + fShortTitle + Format('%.2d', [aIndex+1]) + PathDelim +
               fShortTitle + Format('%.2d', [aIndex+1]) + '.' + aLang + '.mp3';
  
positive.code: end;
  
  
  function TKMCampaign.CampaignTitle: string;
  begin
    Result := fTextLib[0];
  end;
  
  
  function TKMCampaign.CampaignDescription: string;
  begin
    Result := fTextLib[2];
  end;
  
negative.code: end;
  
  
  function TKMCampaign.MissionTitle(aIndex: Byte): UnicodeString;
  begin
    Result := Format(fTextLib[1], [aIndex+1]);
  end;
  