Skip to content

Commit 5e21de8

Browse files
authored
Cyberpunk fixes for 2.5 (#141)
* Fix GOG rewards not loading, skipStartScreen=False See maximegmd/CyberEngineTweaks#663 * Add Cyberpunk setting reverse_archive_load_order and reverse_redmod_load_order True = load last mod (highest prio) first, which wins a conflict in Cyberpunk. By default (False), first one (lowest prio) is loaded first (not reversed in archive/pc/mod/modlist.txt). Makes fix #132 optional for backwards compatibility.
1 parent 975506f commit 5e21de8

1 file changed

Lines changed: 39 additions & 5 deletions

File tree

games/game_cyberpunk2077.py

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -328,12 +328,12 @@ def init(self, organizer: mobase.IOrganizer) -> bool:
328328
archive=ModListFile(
329329
Path("archive/pc/mod/modlist.txt"),
330330
"archive/pc/mod/*",
331-
reversed_priority=True,
331+
reversed_priority=bool(self._get_setting("reverse_archive_load_order")),
332332
),
333333
redmod=ModListFile(
334334
Path(self._redmod_deploy_path, "MO_REDmod_load_order.txt"),
335335
"mods/*/",
336-
reversed_priority=True,
336+
reversed_priority=bool(self._get_setting("reverse_redmod_load_order")),
337337
),
338338
)
339339
self._rootbuilder_settings = PluginDefaultSettings(
@@ -363,8 +363,23 @@ def apply_rootbuilder_settings_once(*args: Any):
363363
organizer.onUserInterfaceInitialized(apply_rootbuilder_settings_once)
364364
organizer.onPluginEnabled("RootBuilder", apply_rootbuilder_settings_once)
365365
organizer.onAboutToRun(self._onAboutToRun)
366+
367+
organizer.onPluginSettingChanged(self._on_settings_changed)
366368
return True
367369

370+
def _on_settings_changed(
371+
self,
372+
plugin_name: str,
373+
setting: str,
374+
old: mobase.MoVariant,
375+
new: mobase.MoVariant,
376+
):
377+
if self.name() == plugin_name:
378+
if setting == "reverse_archive_load_order":
379+
self._modlist_files["archive"].reversed_priority = bool(new)
380+
elif setting == "reverse_remod_load_order":
381+
self._modlist_files["redmod"].reversed_priority = bool(new)
382+
368383
def iniFiles(self):
369384
return ["UserSettings.json"]
370385

@@ -379,8 +394,11 @@ def settings(self) -> list[mobase.PluginSetting]:
379394
return [
380395
mobase.PluginSetting(
381396
"skipStartScreen",
382-
'Skips the "Breaching..." start screen on game launch',
383-
True,
397+
(
398+
'Skips the "Breaching..." start screen on game launch'
399+
" (can also skip loading of GOG rewards)"
400+
),
401+
False,
384402
),
385403
mobase.PluginSetting(
386404
"enforce_archive_load_order",
@@ -390,11 +408,28 @@ def settings(self) -> list[mobase.PluginSetting]:
390408
),
391409
False,
392410
),
411+
mobase.PluginSetting(
412+
"reverse_archive_load_order",
413+
(
414+
"Reverse MOs load order in"
415+
" <code>archive/pc/mod/modlist.txt</code>"
416+
" (first loaded mod wins = last one / highest prio in MO)"
417+
),
418+
False,
419+
),
393420
mobase.PluginSetting(
394421
"enforce_redmod_load_order",
395422
"Enforce the current load order on redmod deployment",
396423
True,
397424
),
425+
mobase.PluginSetting(
426+
"reverse_redmod_load_order",
427+
(
428+
"Reverse MOs load order on redmod deployment"
429+
" (first loaded mod wins = last one / highest prio in MO)"
430+
),
431+
False,
432+
),
398433
mobase.PluginSetting(
399434
"auto_deploy_redmod",
400435
"Deploy redmod before game launch if necessary",
@@ -487,7 +522,6 @@ def _onAboutToRun(self, app_path_str: str, wd: QDir, args: str) -> bool:
487522
qWarning("Aborting game launch.")
488523
return False # Auto deploy failed
489524
self._map_cache_files()
490-
return False
491525
if self._get_setting("enforce_archive_load_order"):
492526
self._modlist_files.update_modlist("archive")
493527
return True

0 commit comments

Comments
 (0)