@@ -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