Jump to content

Vortex symlink not pointing to the right folder


ZJohnAsZ

Recommended Posts

When you have the Unofficial Patch installed and try to use the Vortex App to install mods, it won't deploy the mods to the right folder and I couldn't find a way to change it in vortex.

Usually, it would work with most games, but in the case of Bloodlines, when you tell Vortex where your "...\VtMB" folder is, the App takes in consideration that it has to Install mods in "...\VtMB\Vampire" folder. When you have the Unofficial Patch installed, the mods have to be put in "...\VtMB\Unofficial_Patch".

I found this that could probably help in fixing the issue, but since I am not a coder, I'm not sure what to exactly change.

...\Program Files\Black Tree Gaming Ltd\Vortex\resources\app.asar.unpacked\bundledPlugins\game-vtmbloodlines\info.json

const Promise = require('bluebird');
const path = require('path');
const winapi = require('winapi-bindings');
const { fs, util } = require('vortex-api');

const GAME_ID = 'vampirebloodlines';
const STEAM_ID = 2600;
const GOG_ID = 1207659240;

function readRegistryKey(hive, key, name) {
try {
const instPath = winapi.RegGetValue(hive, key, name);
if (!instPath) {
throw new Error('empty registry key');
}
return Promise.resolve(instPath.value);
} catch (err) {
return Promise.resolve(undefined);
}
}

function requiresLauncher(gamePath) {
// VtM Bloodlines does not seem to have any steam specific files within
// the game's discovery path... Attempt to launch via Steam if
// we're able to retrieve the game's information via the Steam wrapper
return util.steam.findByAppId(STEAM_ID.toString())
.then(game => Promise.resolve({ launcher: 'steam' }))
.catch(err => Promise.resolve(undefined));
}

function findGame() {
return util.steam.findByAppId(STEAM_ID.toString())
.then(game => game.gamePath)
.catch(() => readRegistryKey('HKEY_LOCAL_MACHINE',
`SOFTWARE\\WOW6432Node\\GOG.com\\Games\\${GOG_ID}`,
'PATH'))
.catch(() => readRegistryKey('HKEY_LOCAL_MACHINE',
`SOFTWARE\\GOG.com\\Games\\${GOG_ID}`,
'PATH'))
}

function prepareForModding(discovery) {
return fs.ensureDirWritableAsync(path.join(discovery.path, 'Vampire'), () => Promise.resolve());
}

function getUnofficialModPath() {
const state = _API.store.getState();
const discovery = util.getSafe(state, ['settings', 'gameMode', 'discovered', GAME_ID], undefined);
return path.join(discovery.path, 'Unofficial_Patch');
}

function isUPModType(instructions) {
return fs.statAsync(getUnofficialModPath())
.then(() => Promise.resolve(true))
.catch(() => Promise.resolve(false));
}

function main(context) {
_API = context.api;
context.registerGame({
id: GAME_ID,
name: 'Vampire the Masquerade\tBloodlines',
logo: 'gameart.jpg',
mergeMods: true,
queryPath: findGame,
requiresLauncher,
queryModPath: () => 'Vampire',
executable: () => 'Vampire.exe',
requiredFiles: [],
environment: {
SteamAPPId: STEAM_ID.toString(),
},
details: {
steamAppId: STEAM_ID,
},
setup: prepareForModding,
});

// The "unofficial patch" mod modifies the mods folder. GoG seems to include
// this by default ?
context.registerModType('vtmb-up-modtype', 25,
(gameId) => gameId === GAME_ID, () => getUnofficialModPath(),
(instructions) => isUPModType(instructions));
}

module.exports = {
default: main
};

Could I fix the issue by editing this file?

Edit: I am sorry, I just realized I can't delete my other post that I made in the wrong section of the forum.

Link to comment
Share on other sites

These parts here look like they're supposed to be finding the Unofficial Patch folder


function getUnofficialModPath() {
const state = _API.store.getState();
const discovery = util.getSafe(state, ['settings', 'gameMode', 'discovered', GAME_ID], undefined);
return path.join(discovery.path, 'Unofficial_Patch');
}

function isUPModType(instructions) {
return fs.statAsync(getUnofficialModPath())
.then(() => Promise.resolve(true))
.catch(() => Promise.resolve(false));
}



// The "unofficial patch" mod modifies the mods folder. GoG seems to include
// this by default ?
context.registerModType('vtmb-up-modtype', 25,
(gameId) => gameId === GAME_ID, () => getUnofficialModPath(),
(instructions) => isUPModType(instructions));
}

 

That first one looks to be doing a search and returns if the unofficial patch folder exists and where it is

 

The next question is, Should VtmB use Symlink or Hardlink?

Link to comment
Share on other sites

Thank you for your response. Yes I figured this part could have something to do with the Unofficial_Patch folder, but it seems like there is something to be changed or missing, because it doesn't work when I Install, deploy and enable the mods.
As for Symlink or Hardlink, I always thought that the only difference between the 2 is that one would be installed directly in the game folder and the other anywhere and simulate symbolically that it is in the right folder.

Link to comment
Share on other sites

Thank you for your response. Yes I figured this part could have something to do with the Unofficial_Patch folder, but it seems like there is something to be changed or missing, because it doesn't work when I Install, deploy and enable the mods.

As for Symlink or Hardlink, I always thought that the only difference between the 2 is that one would be installed directly in the game folder and the other anywhere and simulate symbolically that it is in the right folder.

 

 

Hardlink installs the mods in the Mod Staging Folder and creates a link from the Mod Staging folder to the Games Data folder, which makes it look the like mod is installed directly to the games data folder, even though it's not

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...