From 30b77a06eefa835f3808afbe93b69171dab2be6e Mon Sep 17 00:00:00 2001 From: Pezeee Date: Sun, 10 May 2026 23:39:39 +0400 Subject: [PATCH 1/2] Saints Row 3 support --- games/game_saintsrow3.py | 64 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 games/game_saintsrow3.py diff --git a/games/game_saintsrow3.py b/games/game_saintsrow3.py new file mode 100644 index 0000000..7cc6763 --- /dev/null +++ b/games/game_saintsrow3.py @@ -0,0 +1,64 @@ +from PyQt6.QtCore import QFileInfo + +import mobase + +from ..basic_features import BasicModDataChecker, GlobPatterns +from ..basic_game import BasicGame + + +class SaintsRow3Game(BasicGame): + Name = "Saints Row: The Third Support Plugin" + Author = "peezee" + Version = "1.0.0" + + GameName = "Saints Row: The Third" + GameShortName = "saintsrow3" + GameBinary = "SaintsRowTheThird.exe" + GameDataPath = "" + GameSteamId = 55230 + GameGogId = 1430740694 + #GameIniFiles = "display.ini" # Doesn't work for some reason + #GameNexusId = # No idea how to get it, most mods aren't on Nexus anyway + #GameSavesDirectory = #Need to get it from user-prefixed steam cloud directory + + def init(self, organizer: mobase.IOrganizer) -> bool: + super().init(organizer) + self._register_feature( + BasicModDataChecker( + GlobPatterns( + valid=[ + "*.xtbl", + "*.str2_pc", + "*.asm_pc", + "*.cvbm_pc", + "*.cmorph_pc", + "*.bnk_pc", + "*.gpeg_pc", + "*.cpeg_pc", + "*.le_strings", + "*.asi", + "packfiles", + "videos", + "*.txt" + ], + move={ + "*.vpp_pc": "packfiles/pc/cache/", + "*.bik": "videos/" + } + ) + ), + ) + return True + + def executables(self): + return [ + mobase.ExecutableInfo( + "Saints Row: The Third (DX11)", QFileInfo(self.gameDirectory(), "SaintsRowTheThird_DX11.exe") + ), + mobase.ExecutableInfo( + "Saints Row: The Third (DX9)", QFileInfo(self.gameDirectory(), "SaintsRowTheThird.exe") + ), + mobase.ExecutableInfo( + "Saints Row: The Third (Launcher)", QFileInfo(self.gameDirectory(), "game_launcher.exe") + ) + ] \ No newline at end of file From c3cad5cdcc062bb86c188eb26664228692e94ae2 Mon Sep 17 00:00:00 2001 From: Pezeee Date: Sun, 10 May 2026 23:55:08 +0400 Subject: [PATCH 2/2] linter --- games/game_saintsrow3.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/games/game_saintsrow3.py b/games/game_saintsrow3.py index 7cc6763..82926e6 100644 --- a/games/game_saintsrow3.py +++ b/games/game_saintsrow3.py @@ -17,10 +17,10 @@ class SaintsRow3Game(BasicGame): GameDataPath = "" GameSteamId = 55230 GameGogId = 1430740694 - #GameIniFiles = "display.ini" # Doesn't work for some reason - #GameNexusId = # No idea how to get it, most mods aren't on Nexus anyway - #GameSavesDirectory = #Need to get it from user-prefixed steam cloud directory - + # GameIniFiles = "display.ini" # Doesn't work for some reason + # GameNexusId = # No idea how to get it, most mods aren't on Nexus anyway + # GameSavesDirectory = # Need to get it from user-prefixed steam cloud directory + def init(self, organizer: mobase.IOrganizer) -> bool: super().init(organizer) self._register_feature( @@ -39,12 +39,9 @@ def init(self, organizer: mobase.IOrganizer) -> bool: "*.asi", "packfiles", "videos", - "*.txt" + "*.txt", ], - move={ - "*.vpp_pc": "packfiles/pc/cache/", - "*.bik": "videos/" - } + move={"*.vpp_pc": "packfiles/pc/cache/", "*.bik": "videos/"}, ) ), ) @@ -53,12 +50,15 @@ def init(self, organizer: mobase.IOrganizer) -> bool: def executables(self): return [ mobase.ExecutableInfo( - "Saints Row: The Third (DX11)", QFileInfo(self.gameDirectory(), "SaintsRowTheThird_DX11.exe") + "Saints Row: The Third (DX11)", + QFileInfo(self.gameDirectory(), "SaintsRowTheThird_DX11.exe"), ), mobase.ExecutableInfo( - "Saints Row: The Third (DX9)", QFileInfo(self.gameDirectory(), "SaintsRowTheThird.exe") + "Saints Row: The Third (DX9)", + QFileInfo(self.gameDirectory(), "SaintsRowTheThird.exe"), ), mobase.ExecutableInfo( - "Saints Row: The Third (Launcher)", QFileInfo(self.gameDirectory(), "game_launcher.exe") - ) - ] \ No newline at end of file + "Saints Row: The Third (Launcher)", + QFileInfo(self.gameDirectory(), "game_launcher.exe"), + ), + ]