anchor.diff:  end;
   
   
  +function TKMCampaign.GetDefaultMissionTitle(aIndex: Byte): UnicodeString;
  +begin
  +  if fMapsInfo[aIndex].MissionName <> '' then
  +    Result := fMapsInfo[aIndex].MissionName
  +  else
  +    //Have nothing - use default mission name
  +    //Otherwise just Append (by default MissionName is empty anyway)
  +    Result := Format(gResTexts[TX_GAME_MISSION], [aIndex+1]) + fMapsInfo[aIndex].MissionName;
  +end;
  +
  +
   function TKMCampaign.GetCampaignMissionTitle(aIndex: Byte): UnicodeString;
   begin
     //We have template for mission name in 3:
  
positive.code:     fMapsInfo: TKMCampaignMapDataArray;
  
      fMapsProgressData: TKMCampaignMapProgressDataArray; //Map data, saved in campaign progress
      procedure SetUnlockedMap(aValue: Byte);
      procedure SetMapCount(aValue: Byte);
  
  
negative.code:     try
        TextMission.LoadLocale(GetMissionFile(I, '.%s.libx'));
        if TextMission.HasText(MISSION_NAME_LIBX_ID) then
          fMapsInfo[I].MissionName := StringReplace(TextMission[MISSION_NAME_LIBX_ID], '|', ' ', [rfReplaceAll]); //Replace | with space
      finally
        FreeAndNil(TextMission);
      end;
  