DLC modding has been a valuable system for modding the Mass Effect games for the past several years. It allows mod developers to create a self-contained mod that can be easily added and removed from the game, all contained with a single DLC folder. While they are not the perfect solution for modding, they have been a great benefit to our scene.
For Legendary Edition, we’ve had support for DLC mods in LE2 and LE3 for a few weeks, and many mods have been created already that use this system. The same can’t be said for LE1, which until today did not have DLC mod support. There are several reasons this took longer to get shipped out the door, which I’d like to explain a bit. I’d also like to explain the limitations we have on DLC mods for LE1. The July 21st update (7.0.3, Build 121) of ME3Tweaks Mod Manager supports generating and installing LE1 DLC mods.
What composes a DLC mod?
DLC mods include a variety of content; strings (contained in TLKs), packages, movie files, config file updates (.ini, .bin), Table of Contents (TOC), conditionals, among other things. In the original trilogy, DLC modules were ‘mounted’ for use all at the same time at the main menu. The DLC would be parsed, overrides would take effect, and files that needed to be loaded into memory would immediately do so (as startup packages).
In Legendary Edition, this has changed slightly. DLC for LE2 is loaded and mounted before the splash screen even appears; in LE3 the DLC appears to be read but not mounted until the main menu has completed (e.g. loading a save). This has side effects, such as being able to put certain files into DLC that would not work in the original trilogy. The flipside of this half-loaded state is files that load before full mount cannot use certain things like TLK from the same DLC they load from.
The mounting step of DLC registers the startup packages, loads the TLKs, merges the configuration changes, loads the 2DA tables, etc.
What’s different in LE1?
LE1 is based on the PS3 port of Mass Effect from 2011. Pinnacle Station was lost already at this point, so it seems Edge of Reality (the porting studio for the PS3 version) moved Bring Down the Sky into the main game directory (CookedPS3) and gutted most of the DLC system; the game no longer looks for AutoLoad.ini files, it uses a single hardcoded path. Additionally, some features such as DotU were also gutted, even though they still appear in the AutoLoad.ini for Bring Down The Sky. The DotU system told the engine to look for unrealscript classes in the specified files and load them into memory.
In the original game, there was no override system; ambiguous packages defaulted to the first package found, which was always the basegame one. The game used a primitive version of what would later become the TOC file, known as FileIndex.txt, which listed game package files. We worked around this by just making the game never see the basegame version if a DLC version existed; we invented our own DLC mount priority system. This was achieved through updating the FileIndex file to remove the basegame entries and use our DLC ones instead. We ported this over to LE1 to allow for overrides, but instead of FileIndex it now uses TOC.
With significant engineering effort from multiple parties, we also enabled DLC mount, by hijacking the AutoLoad.ini parsing function to also parse our own AutoLoad.ini files, so DLCs in LE1 can load things like 2DA, TLK, and startup packages through the ‘GlobalPackage1/2/3…’ system. Combining the TOC and AutoLoad workarounds, we have a mostly working DLC system.
One upside of the new implementation of TOC is that we can now override movies. In ME1, FileIndex did include movie files, and as such, the game always preferred the original file it found. With TOC, movie files are included, so we can override them now.
What’s the catch?
Sadly, since there was no DLC system for the PS3 port of ME1, there was no need to include the ini merge system, and it was stripped out. This means you can’t update items you see in Coalesced.bin for LE1 like you can in LE2 and LE3. It is possible to restore this feature, but it would likely require significantly more effort than was already put in for AutoLoad.ini support, and if it does come about, it will not be for several months.
This can be semi worked around by using the merge mod format in ME3Tweaks Mod Manager, and disabling the config flag of the property you are updating. Due to the complexity of stacking mods, you won’t be able to install new structs or array items, which is a known weakness I’m looking to find a solution for in the near future. The long term ideal solution would be to allow the changes to be merged from DLC mods.
The LE1 DLC system missing ini merge will be a potential issue for some mods, and right now there is not a 100% workaround for it without replacing the basegame coalesced file, which is widely incompatible with other mods. Hopefully this can be remedied, but for now, you can ship DLC mods for LE1.