diff --git a/legendary/core.py b/legendary/core.py index 70d487b..f6b591b 100644 --- a/legendary/core.py +++ b/legendary/core.py @@ -312,7 +312,8 @@ class LegendaryCore: old_manifest_data = f.read() old_manifest = self.load_manfiest(old_manifest_data) elif not disable_patching and not force and self.is_installed(game.app_name): - if old_bytes := self.lgd.get_manifest(game.app_name): + igame = self.get_installed_game(game.app_name) + if old_bytes := self.lgd.get_manifest(game.app_name, igame.version): old_manifest = self.load_manfiest(old_bytes) base_urls = list(game.base_urls) # copy list for manipulation diff --git a/legendary/lfs/lgndry.py b/legendary/lfs/lgndry.py index 8a3a8f3..c49c59b 100644 --- a/legendary/lfs/lgndry.py +++ b/legendary/lfs/lgndry.py @@ -116,8 +116,15 @@ class LGDLFS: open(os.path.join(self.path, 'assets.json'), 'w'), indent=2, sort_keys=True) - def get_manifest(self, app_name): - manifest_file = os.path.join(self.path, 'manifests', f'{app_name}.manifest') + def get_manifest(self, app_name, version=''): + if not version: + manifest_file = os.path.join(self.path, 'manifests', f'{app_name}.manifest') + else: + # if a version is specified load it from the versioned directory + fname = clean_filename(f'{app_name}_{version}') + manifest_file = os.path.join(self.path, 'manifests', 'old', + f'{fname}.manifest') + if os.path.exists(manifest_file): return open(manifest_file, 'rb').read() else: