anchor.diff:      end;
     end;
   
  -  //@Rey: I found it might be helpful to also attach the fSaveFile (savegame from which the game was loaded and crashed)
  -
     if fParams.IsReplay or (fGamePlayInterface.UIMode = umReplay) then //In case game mode was altered or loaded with logical error
  -  begin
       //For replays attach only replay save files
  -    AttachFile(ChangeFileExt(ExeDir + fSaveFile, EXT_SAVE_BASE_DOT));
  -    AttachFile(ChangeFileExt(ExeDir + fSaveFile, EXT_SAVE_REPLAY_DOT));
  -    AttachFile(ChangeFileExt(ExeDir + fSaveFile, EXT_SAVE_MAIN_DOT));
  -//    AttachFile(ChangeFileExt(ExeDir + fSaveFile, EXT_SAVE_MAIN_TXT_DOT)); //todo: Debug. remove before release
  -    AttachFile(ChangeFileExt(ExeDir + fSaveFile, EXT_SAVE_MP_LOCAL_DOT));
  -  end
  +    AttachLoadedFile(False)
     else
     if not fParams.IsMapEditor then // no need autosaves for MapEd error...
  +  begin
       //For other game modes attach last autosaves
       for I := 1 to Min(gGameSettings.AutosaveCount, AUTOSAVE_ATTACH_TO_CRASHREPORT_MAX) do //Add autosaves
       begin
         // Attach only autosaves 1, 3 and 5. Usually we don't really need all 5 saves
         if (I mod 2) = 0 then Continue;
   
  +      AttachFile(SaveName('autosave' + Int2Fix(I, 2), EXT_SAVE_MAIN, fParams.IsMultiPlayerOrSpec));
  +      AttachFile(SaveName('autosave' + Int2Fix(I, 2), EXT_SAVE_BASE, fParams.IsMultiPlayerOrSpec));
         AttachFile(SaveName('autosave' + Int2Fix(I, 2), EXT_SAVE_REPLAY, fParams.IsMultiPlayerOrSpec));
  -      AttachFile(SaveName('autosave' + Int2Fix(I, 2), EXT_SAVE_BASE, fParams.IsMultiPlayerOrSpec));
  -      AttachFile(SaveName('autosave' + Int2Fix(I, 2), EXT_SAVE_MAIN, fParams.IsMultiPlayerOrSpec));
  -//      AttachFile(SaveName('autosave' + Int2Fix(I, 2), EXT_SAVE_MAIN_TXT, fParams.IsMultiPlayerOrSpec)); //todo: Debug. remove before release
         AttachFile(SaveName('autosave' + Int2Fix(I, 2), EXT_SAVE_MP_LOCAL, fParams.IsMultiPlayerOrSpec));
         AttachFile(SaveName('autosave' + Int2Fix(I, 2), EXT_SAVE_RNG_LOG, fParams.IsMultiPlayerOrSpec));
       end;
  +
  +    // It could be usefull to attach loaded file, to check what was wrong there
  +    AttachLoadedFile(True); // Also attach RNG file
  +  end;
   
     gLog.AddTime('Crash report created');
   end;
  
positive.code: 
      property Scripting: TKMScripting read fScripting;
      property Params: TKMGameParams read fParams;
      property SaveFile: UnicodeString read fSaveFile;
  
      procedure AddScriptSoundRemoveRequest(aScriptSoundUID: Integer; aHandID: TKMHandID);
      function GetScriptSoundFile(const aSound: AnsiString; aAudioFormat: TKMAudioFormat): UnicodeString;
  
negative.code:       gGameSettings.MenuSPSaveFileName := aSaveName;
  
      //Remember which savegame to try to restart (if game was not saved before)
      fLastSaveFileRel := ExtractRelativePath(ExeDir, fullPath);
  
      newSaveName := SaveName(aSaveName, EXT_SAVE_BASE, fParams.IsMultiplayer);
      //Copy basesave so we have a starting point for replay
      if fParams.IsReplay then
      begin
        loadFrom := ExeDir + fLoadFromFileRel;
        //Game was saved from replay (.bas file)
        if FileExists(loadFrom) then
          KMCopyFileAsync(loadFrom, newSaveName, True, aSaveWorkerThread);
      end else
        //Normally saved game
        {$IFDEF PARALLEL_RUNNER}
  