Nexus-Mods / Vortex

Vortex Development
GNU General Public License v3.0
888 stars 131 forks source link

Review: DmC: Devil May Cry #16092

Open mande806 opened 1 month ago

mande806 commented 1 month ago

Nexus Username

chinamicah

Extension URL

https://www.nexusmods.com/site/mods/967

Game URL

https://www.nexusmods.com/dmcdevilmaycry

Existing Extension URL

No response

New features

No response

Information

Packaging

Testing

If a task fails, contact the author to request changes before continuing.

When reviewed and passed, please complete the following tasks:

mande806 commented 1 month ago

DmC Collection I added to test with is located here: https://next.nexusmods.com/dmcdevilmaycry/collections/d6jiey

IDCs commented 1 month ago

Hi @mande806,

The code and the mods on the website suggest that TFC installer and TexMod are hard requirements; at the very least I think TFC installer should be automatically downloaded by the extension as it's hosted on the website. (even better if you can auto install TexMod as well)

Please see an example of how to do this below. (Snippet from our SMAPI downloader for Stardew Valley)

const modFiles = await api.ext.nexusGetModFiles(GAME_ID, SMAPI_MOD_ID);

    const fileTime = (input: any) => Number.parseInt(input.uploaded_time, 10);

    const file = modFiles
      .filter(file => file.category_id === 1)
      .sort((lhs, rhs) => fileTime(lhs) - fileTime(rhs))[0];

    if (file === undefined) {
      throw new util.ProcessCanceled('No SMAPI main file found');
    }

    const dlInfo = {
      game: GAME_ID,
      name: 'SMAPI',
    };

    const nxmUrl = `nxm://${GAME_ID}/mods/${SMAPI_MOD_ID}/files/${file.file_id}`;
    const dlId = await util.toPromise<string>(cb =>
      api.events.emit('start-download', [nxmUrl], dlInfo, undefined, cb, undefined, { allowInstall: false }));
    const modId = await util.toPromise<string>(cb =>
      api.events.emit('start-install-download', dlId, { allowAutoEnable: false }, cb));
    const profileId = selectors.lastActiveProfileForGame(api.getState(), GAME_ID);
    await actions.setModsEnabled(api, profileId, [modId], true, {
      allowAutoDeploy: false,
      installed: true,
    });

Tag me once that's done and I'll add your extension to the manifest.

IDCs commented 2 weeks ago

Stale extension reviews are closed within 2 weeks if no changes are made.

mande806 commented 1 week ago

Sorry for the slow response. I'm now working on an improved version. The main reason I didn't go the auto-install route with TexMod was that it seemed most of the nexus/vortex download APIs were premium-only, and that didn't seem like a very good choice for a default install. If I can get it to work without premium then I'll definitely add it in. Also, I'm talking to the TFC Installer people about adding a command line API, so depending on how that goes we may be able to add support for those mods in as well.

mande806 commented 1 week ago

The big issue with TFC Installer mods is they are essentially fancy binary patches. If we can get a command line API, Command line API is on their backlog now 🚀 then we can maybe add load-order support to improve that situation, but that will be a whole other big feature to tackle.

(Aside) I really wish everyone would just make DLC Addon mods instead. You can make those with TFC Installer/UPK Explorer as well, from what I read of the documentation. They're fully standalone and native to the game. No need for additional software or patching or anything else. Just more work on the modder's part editing INI files.