Skip to content

Commit a306b9e

Browse files
committed
- Added initial support for Oblivion Remastered.
- Original plugin list is now restored after undeploying a profile.
1 parent 8b63ce1 commit a306b9e

File tree

8 files changed

+124
-14
lines changed

8 files changed

+124
-14
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Stellar Mod Loader
22

3-
Stellar is a mod manager for Windows and Linux that supports games including Fallout, Skyrim, and Starfield. Formerly known as Starfield Mod Loader.
3+
Stellar is a mod manager for Windows and Linux that supports games including Fallout, Oblivion, Skyrim, and Starfield. Formerly known as Starfield Mod Loader.
44

55
# Features
66

@@ -26,6 +26,7 @@ Releases can be found here:
2626
Stellar currently has built-in support the following games:
2727

2828
* **Elder Scrolls IV: Oblivion**
29+
* **Elder Scrolls IV: Oblivion Remastered**
2930
* **Elder Scrolls V: Skyrim LE**
3031
* **Elder Scrolls V: Skyrim SE**
3132
* **Elder Scrolls V: Skyrim VR**

game-db.json

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,109 @@
9292
"Oblivion.ini": "; The following section has been added automatically by Starfield Mod Loader. Place any additional changes after this section.\r\n[Archive]\r\nSArchiveList=Invalidation.bsa, Oblivion - Meshes.bsa, Oblivion - Textures - Compressed.bsa, Oblivion - Sounds.bsa, Oblivion - Voices1.bsa, Oblivion - Voices2.bsa, Oblivion - Misc.bsa\r\n\r\n"
9393
}
9494
},
95+
"elder_scrolls_oblivion_remastered": {
96+
"title": "Elder Scrolls: Oblivion Remastered",
97+
"bkgColor": "#bd4219",
98+
"fgColor": "#fefef4",
99+
"installations": [
100+
{
101+
"steamId": ["2623190"],
102+
"rootDir": "%PROGRAMFILES%\\Steam\\steamapps\\common\\Oblivion Remastered",
103+
"modDir": "OblivionRemastered\\Content\\Dev\\ObvData\\Data",
104+
"pluginListPath": "OblivionRemastered\\Content\\Dev\\ObvData\\Data\\Plugins.txt",
105+
"configFilePath": "%USERPROFILE%\\Documents\\My Games\\Oblivion Remastered\\Saved\\Config\\Windows",
106+
"saveFolderPath": "%USERPROFILE%\\Documents\\My Games\\Oblivion Remastered\\Saved\\SaveGames"
107+
},
108+
{
109+
"steamId": ["2623190"],
110+
"rootDir": "%PROGRAMFILES(X86)%\\Steam\\steamapps\\common\\Oblivion Remastered",
111+
"modDir": "OblivionRemastered\\Content\\Dev\\ObvData\\Data",
112+
"pluginListPath": "OblivionRemastered\\Content\\Dev\\ObvData\\Data\\Plugins.txt",
113+
"configFilePath": "%USERPROFILE%\\Documents\\My Games\\Oblivion Remastered\\Saved\\Config\\Windows",
114+
"saveFolderPath": "%USERPROFILE%\\Documents\\My Games\\Oblivion Remastered\\Saved\\SaveGames"
115+
},
116+
{
117+
"rootDir": "C:\\XboxGames\\Oblivion Remastered\\Content",
118+
"modDir": "OblivionRemastered\\Content\\Dev\\ObvData\\Data",
119+
"pluginListPath": "OblivionRemastered\\Content\\Dev\\ObvData\\Data\\Plugins.txt",
120+
"configFilePath": "%USERPROFILE%\\Documents\\My Games\\Oblivion Remastered\\Saved\\Config\\Windows",
121+
"saveFolderPath": "%USERPROFILE%\\Documents\\My Games\\Oblivion Remastered\\Saved\\SaveGames"
122+
},
123+
{
124+
"steamId": ["2623190"],
125+
"rootDir": "~/.local/share/Steam/steamapps/common/Oblivion Remastered",
126+
"modDir": "OblivionRemastered/Content/Dev/ObvData/Data",
127+
"pluginListPath": "OblivionRemastered/Content/Dev/ObvData/Data/Plugins.txt",
128+
"configFilePath": "$/pfx/drive_c/users/steamuser/Documents/My Games/Oblivion Remastered/Saved/Config/Windows",
129+
"saveFolderPath": "$/pfx/drive_c/users/steamuser/Documents/My Games/Oblivion Remastered/Saved/SaveGames"
130+
}
131+
],
132+
"gameBinary": ["OblivionRemastered.exe"],
133+
"pluginListType": "Gamebryo",
134+
"pluginFormats": ["esm", "esp"],
135+
"saveFormats": ["sav"],
136+
"pinnedPlugins": [
137+
{
138+
"plugin": "Oblivion.esm",
139+
"required": true
140+
}
141+
],
142+
"requireExternalPlugins": true,
143+
"gameConfigFiles": [
144+
"AltarGameUserSetting.ini",
145+
"AltarImageCalibration.ini",
146+
"Altar.ini",
147+
"AltarWindows.ini",
148+
"Bridge.ini",
149+
"CommonUI.ini",
150+
"Compat.ini",
151+
"ConcertSyncCore.ini",
152+
"ConsoleVariables.ini",
153+
"ControlRig.ini",
154+
"DatasmithContent.ini",
155+
"DatasmithImporter.ini",
156+
"DeformerGraph.ini",
157+
"DeviceProfiles.ini",
158+
"EditorScriptingUtilities.ini",
159+
"Engine.ini",
160+
"EnhancedInput.ini",
161+
"FullBodyIK.ini",
162+
"Game.ini",
163+
"GameplayTags.ini",
164+
"GameUserSettings.ini",
165+
"GLTFExporter.ini",
166+
"HairStrands.ini",
167+
"Hardware.ini",
168+
"HoudiniNiagara.ini",
169+
"IKRig.ini",
170+
"Input.ini",
171+
"InstallBundle.ini",
172+
"Interchange.ini",
173+
"LiveLink.ini",
174+
"Metasound.ini",
175+
"ModelViewViewModel.ini",
176+
"MovieRenderPipeline.ini",
177+
"NiagaraFluids.ini",
178+
"Niagara.ini",
179+
"OnlineSubsystemEOS.ini",
180+
"Paper2D.ini",
181+
"QMPSettings.ini",
182+
"RuntimeOptions.ini",
183+
"Scalability.ini",
184+
"StructUtils.ini",
185+
"Synthesis.ini",
186+
"ToolPresets.ini",
187+
"TraceUtilities.ini",
188+
"VariantManagerContent.ini",
189+
"VirtuosEditorAutomationTesting.ini",
190+
"Wwise.ini"
191+
],
192+
"resources": {
193+
"mods": {
194+
"elder_scrolls_oblivion_remastered/Invalidation.bsa": "Invalidation.bsa"
195+
}
196+
}
197+
},
95198
"elder_scrolls_skyrim_le": {
96199
"title": "Elder Scrolls: Skyrim LE",
97200
"bkgColor": "#222222",

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"author": "Mychal Thompson <mychal.r.thompson@gmail.com>",
44
"repository": "https://github.com/lVlyke/stellar-mod-loader",
55
"license": "GPL-3.0",
6-
"version": "0.12.0",
6+
"version": "0.12.1",
77
"main": "electron.js",
88
"scripts": {
99
"app:build-dist-debug": "npm run build && npm run package",
95 Bytes
Binary file not shown.

src/app/components/profile-actions/profile-actions.component.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@
141141

142142
<!-- Profile folders menu -->
143143
<ng-template #profileFoldersMenu cdkPortal>
144-
<mat-card class="mat-elevation-z3">
144+
<mat-card class="mat-elevation-z3 card-scroll">
145145
<mat-card-content>
146146
<mat-action-list>
147147
@for (folderEntry of profileFolderKeys; track folderEntry[0]) {
@@ -157,7 +157,7 @@
157157

158158
<!-- Game folders menu -->
159159
<ng-template #gameFoldersMenu cdkPortal>
160-
<mat-card class="mat-elevation-z3">
160+
<mat-card class="mat-elevation-z3 card-scroll">
161161
<mat-card-content>
162162
<mat-action-list>
163163
@for (folderEntry of gameFolderKeys; track folderEntry[0]) {
@@ -173,7 +173,7 @@
173173

174174
<!-- Game config file menu popup -->
175175
<ng-template #gameConfigFileMenu cdkPortal>
176-
<mat-card class="mat-elevation-z3">
176+
<mat-card class="mat-elevation-z3 card-scroll">
177177
<mat-card-content>
178178
<mat-action-list>
179179
@for (gameConfigFileName of gameDetails!.gameConfigFiles; track gameConfigFileName) {
@@ -191,7 +191,7 @@
191191

192192
<!-- Game actions button popup -->
193193
<ng-template #gameActionsMenu cdkPortal>
194-
<mat-card class="mat-elevation-z3 game-actions-popup">
194+
<mat-card class="mat-elevation-z3 game-actions-popup card-scroll">
195195
<mat-card-content>
196196
<mat-action-list>
197197
<!-- Default actions -->

src/electron.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3423,16 +3423,15 @@ class ElectronLoader {
34233423
const pluginListPath = profile.gameInstallation.pluginListPath ? path.resolve(this.#expandPath(profile.gameInstallation.pluginListPath)) : undefined;
34243424

34253425
if (pluginListPath) {
3426-
fs.mkdirpSync(path.dirname(pluginListPath));
3426+
const pluginListDir = path.dirname(pluginListPath);
3427+
fs.mkdirpSync(pluginListDir);
34273428

34283429
// Backup any existing plugins file
34293430
if (fs.existsSync(pluginListPath)) {
3430-
let backupFile = `${pluginListPath}.sml_bak`;
3431-
while (fs.existsSync(backupFile)) {
3432-
backupFile += `_${this.#currentDateTimeAsFileName()}`;
3433-
}
3431+
const backupDir = path.join(pluginListDir, ElectronLoader.DEPLOY_EXT_BACKUP_DIR);
34343432

3435-
fs.copyFileSync(pluginListPath, backupFile);
3433+
fs.mkdirpSync(backupDir);
3434+
fs.copyFileSync(pluginListPath, path.join(backupDir, path.parse(pluginListPath).base));
34363435
}
34373436

34383437
// Write the plugin list
@@ -3732,6 +3731,7 @@ class ElectronLoader {
37323731
path.join(gameRootDir, ElectronLoader.DEPLOY_EXT_BACKUP_DIR),
37333732
... profile.gameInstallation.configFilePath ? [path.join(profile.gameInstallation.configFilePath, ElectronLoader.DEPLOY_EXT_BACKUP_DIR)] : [],
37343733
... profile.gameInstallation.saveFolderPath ? [path.join(path.dirname(profile.gameInstallation.saveFolderPath), ElectronLoader.DEPLOY_EXT_BACKUP_DIR)] : [],
3734+
... profile.gameInstallation.pluginListPath ? [path.join(path.dirname(profile.gameInstallation.pluginListPath), ElectronLoader.DEPLOY_EXT_BACKUP_DIR)] : [],
37353735
... customSteamCompatRoot ? [path.join(customSteamCompatRoot, ElectronLoader.DEPLOY_EXT_BACKUP_DIR)] : [],
37363736
]);
37373737

src/styles/layout/_mat-overrides.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
@mixin declare() {
22

3+
mat-card.card-scroll {
4+
mat-card-content {
5+
overflow: auto;
6+
}
7+
}
8+
39
mat-checkbox {
410

511
.mdc-label {

0 commit comments

Comments
 (0)