@@ -233,9 +233,6 @@ class Cyberpunk2077Game(BasicGame):
233233
234234 def init (self , organizer : mobase .IOrganizer ) -> bool :
235235 super ().init (organizer )
236- print ("init" )
237- print (f"{ self .gameDirectory ().absolutePath ()= } " )
238- print (f"{ self ._gamePath = } " )
239236 self ._register_feature (BasicLocalSavegames (self ))
240237 self ._register_feature (
241238 BasicGameSaveGameInfo (
@@ -259,6 +256,7 @@ def init(self, organizer: mobase.IOrganizer) -> bool:
259256 ),
260257 )
261258 organizer .onAboutToRun (self ._onAboutToRun )
259+ organizer .onFinishedRun (self ._onFinishedRun )
262260 organizer .onPluginSettingChanged (self ._on_settings_changed )
263261 organizer .modList ().onModInstalled (self ._check_disable_crashreporter )
264262 organizer .onUserInterfaceInitialized (self ._on_user_interface_initialized )
@@ -431,6 +429,11 @@ def settings(self) -> list[mobase.PluginSetting]:
431429 ),
432430 True ,
433431 ),
432+ mobase .PluginSetting (
433+ "crash_message" ,
434+ ("Show a crash message as replacement of disabled CrashReporter" ),
435+ True ,
436+ ),
434437 mobase .PluginSetting (
435438 "show_rootbuilder_conversion" ,
436439 (
@@ -524,6 +527,34 @@ def _onAboutToRun(self, app_path_str: str, wd: QDir, args: str) -> bool:
524527 self ._modlist_files .update_modlist ("archive" )
525528 return True
526529
530+ def _onFinishedRun (self , path : str , exit_code : int ) -> None :
531+ if not self ._get_setting ("crash_message" ):
532+ return
533+ if path .endswith (self .binaryName ()) and exit_code > 0 :
534+ crash_message = QMessageBox (
535+ QMessageBox .Icon .Critical ,
536+ "Cyberpunk Crashed" ,
537+ textwrap .dedent (
538+ f"""
539+ Cyberpunk crashed. Tips:
540+ - disable mods (create backup of modlist or use new profile)
541+ - clear overwrite or delete at least overwrite/r6/cache (to keep mod settings)
542+ - check log files of CET/redscript/RED4ext (in overwrite)
543+ - read [FAQ & Troubleshooting]({ self .GameSupportURL } #faq--troubleshooting)
544+ """
545+ ),
546+ QMessageBox .StandardButton .Ok ,
547+ self ._parentWidget ,
548+ )
549+ crash_message .setTextFormat (Qt .TextFormat .MarkdownText )
550+ hide_cb = QCheckBox ("&Do not show again*" , crash_message )
551+ hide_cb .setToolTip (f"Settings/Plugins/{ self .name ()} /crash_message" )
552+ crash_message .setCheckBox (hide_cb )
553+ crash_message .open ( # type: ignore
554+ lambda : hide_cb .isChecked ()
555+ and self ._set_setting ("crash_message" , False )
556+ )
557+
527558 def _check_redmod_result (self , result : tuple [bool , int ]) -> bool :
528559 if result == (True , 0 ):
529560 return True
0 commit comments