It might be either the TES3Merge or Habasi, but one of these 3 mods is causing all Rats and Mudcrabs to emit a "meow meow meow" sound when they die: These mods contain the string 'db_housecat' Clean Solstheim_Castle_v1.1.esp Ascadian_Rose_Cottage_ver1.0.esp ME Familiars.esp
I have a lot of other mods in the merge, but I narrowed the sound to "Sound\Cr\KO\db_housecat_land.wav" used by those plugins.
My order of merging: 1. MLOX on loose plugins 2. TES3Merge on loose plugins + base game ESMs 3. Jobasha merge leveled lists (MergedObjects not yet loaded) 4. Habasi merge loose plugins, MergedObjects and MergedLeveledLists
Update 1: I think the problem is more widespread, now there's a wasp that plays the Siltstrider moans on loop while flying, and dogs play a "muck/splat" sound on footsteps.
Update 2: I might be seeing the pattern here with these logs from Habasi: Processing plugin "\\?\D:\projects\morrowind\Loose_Files\mixer\Data Files\Real_wildlife_v2a.esp" SNDG with empty id(Creature_ID:"RW_stilt_a", Sound_ID:"Silt_2") was assigned id "RW_stilt_a0004" ... Processing plugin "\\?\D:\projects\morrowind\Loose_Files\mixer\Data Files\abotWhereAreAllBirdsGoing.esp" SNDG with empty id(Creature_ID:"ab01bird14", Sound_ID:"ab01bird14Sound") was assigned id "ab01bird140005" ... Processing plugin "\\?\D:\projects\morrowind\Loose_Files\mixer\Data Files\Clean Solstheim_Castle_v1.1.esp" SNDG with empty id(Creature_ID:"KO_DB_Cat_house", Sound_ID:"KO_Cat_2") was assigned id "KO_DB_Cat_house0007" ... Processing plugin "\\?\D:\projects\morrowind\Loose_Files\mixer\Data Files\ME Familiars.esp" SNDG with empty id(Creature_ID:"ZT_PetCat", Sound_ID:"ZT_PetQuietProxy") was assigned id "ZT_PetCat0000"
I think there's some kind of scrambling of sound generators that happens when this "SNDG with empty id" occurs. I've seen Birds and Bees make the Siltstrider sound, and various animals (Rats, Mudcrabs, Nix Hounds, etc.) make the housecat meowing sound, which these records seem to implicate.
However I've opened my current Morrowind.ini load order in MWEdit and searched "ab01bee01" (the creature once observed making Siltstrider noises) and when I play in the editor it makes the correct buzzing sound, so the mixup only seems to occur at run-time? Hmm...
I'd love to know how to do this too, otherwise have it as a new feature :-) (The help command doesn't mention anything from what I could tell) I'm trying to merge hollaajith's Weapon Overhaul with dumgeon's Price Balance, and it seems to be a one-or-the-other affair.
Also sometiems i noticed that habasi cleans duplicate dialogue refs. Does it just remove duplicates or are the merged dialogues being snipped in favor of whatver is latest
Log is written to "C:\Games\Morrowind\Data Files\habasi.log" Global list options: mode = keep Nothing to proceed: at least one --merge or --preset-* option is required
Doesn't seem to matter where i run the program from, it does nothing but make this log
That's expected behaviour. It doesn't crash, it exits correctly. There is no default action - it doesn't make sense :-) You should tell the program what to do by providing at least one --merge or --preset-* option(as it's written in program's log). For example, tell it to merge Morrowind.esm and Bloodmoon.esm into WeirdMergedPlugin.esp: habasi --merge WeirdMergedPlugin.esp Morrowind.esm Bloodmoon.esm
What? I'm having the same problem and this answer doesn't make any sense. How does one 'tell the program what to do' if it just closes instantly without allowing any input? Is there some kind of configuration file that needs to be set up before running? I'm sorry, I've reread the description and this thread 8 times now and I can't make sense of how this is meant to be installed and run, or why immediately exiting on startup without allowing input of any kind would ever be considered 'expected behavior'
Open a terminal / cmd prompt / PowerShell / whatever-your-OS-has in the folder the habasi binary is located and do habasi [whatever you're trying to do] If you try to double click it it won't work (because that's not how it's used).
Not sure if I'm doing something wrong, but I'm getting missing groundcover meshes everywhere after running "habasi -T" Edit: fixed of my own accord, didn't realize it created a meshes folder in my user directory!
I am curious though. Did it produce meshes folder in a directory different to the one where it placed plugins? Please tell me if that's the case. It'd be a bug if it placed plugins and meshes folder in different places.
Thank you, I will. I am tired of these dumb signature-based anti-viruses. Due to their flawed design they see viruses where there is none, though fail to see real viruses if those were not previously signatured :-D
Is there a compiled list, somewhere, of plugins that don't like being merged? I tried merging my LO today, and it just crashed on boot. Having a list to refer to would make merging 1 by 1 a lot more bearable with a 300 plugin list.
The program should not crash when merging load order(unless OpenMW team produced new field/format :-D ). Some mods made with OpenMW-CS would not be merged(omwscripts or some omwaddons with newly added fields that differ too much from TES3 format). Those should be automatically ignored though.
As for the vanilla engine experiments. Merging everything would require some additional steps I suppose. I imagine you'd have to(blind speculations here):
Change resulting file's type to esm and/or change name to Morrowind.esm.
Alternatively you may simply merge everything apart from Morrowind.esm. Use --skip-from-use-load-order like that: habasi -O --skip-from-use-load-order Morrowind.esm
Or merge everything except base morrowind files. I'd go this way: # Copy Morrowind.ini # Comment out Morrowind.esm, Tribunal.esm, Bloodmoon.esm # Provide copied config to habasi via --config option
First test, I excluded Morrowind.esm, Tribunal.esm, and Bloodmoon.esm, and converted the esp to esm with TES3CMD. Enabled the merge and disabled the merged files, ran the game, and it crashed without even trying to initialize. MWSE.log showed missing dependencies for various plugins, so I reenabled them and managed to reach initialization. Loading the merge resulted in various errors, all missing object references from the ones I saw before clicking yes to all, then it crashed, just like it did before I made this thread. I'll test some more in a bit, but I gotta lunch.
I suppose the problem should be with MWSE plugins. That means that full merge is not realistic with multiple MWSE-plugins that expect something by specific reference IDs. That's a pity.
You'd better make "targeted" merges(merging bunches of plugins that are not related to MWSE-plugins in any way). Option -w(short for --show-plugins) should help for preparing list of plugins for settings file.
That doesn't seem to be a perfect solution, either. I already tried merging my LGNPC and BCOM plugins into their own, respective merged files, yesterday. LGNPC seemed to work fine, but patches for it didn't. And BCOM might have a much bigger issue. I tried running it with the rest of the mod list and on it's own, only activating dependencies, and was hit with a slew of missing object references. In game, it doesn't look like anythings wrong visually, but getting those errors, well, idk what might break.
Something weird is happening then. Are you sure you don't try to merge something that's being patched by another plugin? That'd explain those missing references errors. I am sure that merging should not be a problem, though order or selection of plugins is :-)
Would you please explain what's not working with LGNPC and patches for it when merged? That'd be an isolated example. BCOM is a much harder beast with it's (almost) hundred of patches.
I hope I did the spoiler tag right. Anyway, I'm pretty certain none of them are patches. And plugins that patch BCOM files weren't enabled when running just BCOM + dependencies, but I still get those errors. LGNPC patch issue doesn't happen when running that on it's own, though. And now that I'm thinking about it, I think that was merged with a BCOM replacer of one of the LGNPC plugins. And now I'm not getting that error, so I don't know what that's about.
I just ran BCOM in isolation, LGNPC in isolation, and both together with nothing else but a quickstart plugin for easy testing and I got no errors from LGNPC, but I got 102 give or take "Object reference [refid] missing in master file" errors both times I ran BCOM. The cells the errors referred to were all over the map. The only BCOM patch I used was a replacer file for The Publicans, and that's just because the LGNPC patch I tested with was also for The Publicans, and even then I only used that patch when running both together.
Hey! You used that spoiler correctly :-) I've downloaded BCOM and repeated your command. Everything worked as expected: "Output plugin "BCOM.esp" was written. It contains reindexed references most likely, so new game is recommended. Combined plugin lists stats: input(26 plugins): 5877 processed(66519 instances), 393 removed(dup), 329 merged, 133 replaced output(1 plugin): 5089 total(66440 instances), 5022 unique, 67 mergeable(unique), 67 mergeable(total), 0.120s durationThe only problem I'd expect from this file is from the order of merged files. I hope that you sorted them correctly(PLOX etc).
Now please provide any missing reference ID and which plugin triggers it. Or look for it yourself with command like: tes3cmd dump *.esp --type cell --match objidx:7540 --list I think the problem you experience is due to the selection of the plugins to be merged in regard to the references IDs. The rule of thumb should be something like: "Merge from the end"/"Merge the tail" :-D Or "Avoid merging plugin that a lot of other plugins reference". Let me try to explain this approach:
Spoiler:
Show
Let's start with this synthetic example. Imagine you have this load order: (A) Morrowind.esm (B) Beautiful cities of Morrowind.ESP (C) BCoM_Khuul_Lighthouse_02.ESP (D) Much better Khuul(DEPEND ON C).esp
You may merge this completely and it should work. (M) Merged.esp = A + B + C + D
Then you add another mod (E) that'd depend on (A) in most cases. Reference IDs in (M) may have changed so you'll see an error. Now either merge everything together again or prefer not to merge (A). This way you are free to keep (E) as it is or merge it: (A) (M) Merged.esp = B + C + D (E) Another mod_1(DEPEND ON A) or (A) (M) Merged.esp = B + C + D + E
Then comes another mod (F) that depends on (A). Again we're free to either merge it or keep standalone. Everything's working because we opted out of merging (A) that everything around depends on. (A) (M) Merged.esp = B + C + D + E (F) Another mod_2(DEPEND ON A) or (A) (M) Merged.esp = B + C + D (E) (F) Another mod_2(DEPEND ON A) or (A) (M) Merged.esp = B + C + D + E + F
We may now just decide to have structure like that: (A) (M1) B + C + D (M2) E + F
And now you decide to add another patch (G) for BCOM (B). Reference IDs may have changed and you'll see an error. Now again you may either merge everything together or prefer not to merge (B). Again you are free to keep (G) as it is or merge it: (A) (B) (M) Merged.esp = C + D + E + F (G) Even better Khuul(DEPEND ON B).esp or (A) (B) (M) Merged.esp = C + D + E + F + G
Now I hope you may see the pattern. When (F) comes that rely on (B) you'll be free to either merge it or keep standalone, because everything would be working. (A) (B) (M) Merged.esp = C + D + E + F + G + F (F) Superior Khuul(DEPEND ON B).esp or (A) (B) (M) Merged.esp = C + D + E + F + G + F
More realistic example: Morrowind.esm Tribunal.esm Bloodmoon.esm Wares-base.esm Patch for Purists.esm Tamriel_Data.esm Wyrmhaven.esm TR_Mainland.esm OAAB_Data.esm Astrologians Guild.esp Sky_Main.esm Havish.esm Cyr_Main.esm RepopulatedMorrowind.ESM United-100.esp Solstheim Tomb of The Snow Prince.esm United-200.esp United-700.esp United-TNG-CONTENT.esp MergedLeveledLists.esp MergedLeveledLists - Delev.esp
United-700 contains something that doesn't have any dependencies, United-200 contains something that depends on SToTSP, United-100 contains other plugins. That's around 600 mods merged.
Let's find the exact reason why you see errors first. I suppose that following the rule afterward would make everything easier, e.g. to continue merging those 25 plugins but not merging "Beautiful cities of Morrowind.ESP".
I ran PLOX, yeah. you don't mess around when dealing with load order. I've been removing plugins from the merge command and remerging, like you said, and I'm down to only 3 missing reference errors, even though I'm loading the plugins in the same order they're listed in the merge command. It seems to me, inexperienced as I am, that Habasi either isn't bringing those referenced objects forward into the merge or is not renumbering the references to match. It's entirely possible that I'm doing something wrong, but the only thing I can think of is that plugins in the command should be listed from highest priority to lowest (I have them listed lowest to highest). This is my current test LO and Habasi command, the merge is loaded last, and the unmerged are in the same order as they are in the command:
Hey there! I sent you personal message few days ago. I'm going to repeat it here In case you haven't seen it.
Spoiler:
Show
Hello there! Our thread on comments section becomes too long :-)
Please send me problematic/missing refids(references IDs) from your log. Those "Object reference [refid] missing in master file" messages. These IDs should help to find the root cause.
I've tried merging everything as you instructed. Everything looks good. I didn't like absense of Patch for Purists and pretty old version of CREL(instead of recent updated for 2024), but that should not matter(PfP is not listed as required on BCOM page). I've found small bug(recently introduced due to rust version update) for comparing plugins with reference having negative zero, but that's it :-) I've rechecked many things inside the program - everything looks good to me.
I am eager to find the cause of the errors. The thing that's missing for debug is the list of reference IDs from errors :-)
Hi, I'm trying to run habasi -O command through MO2, but I'm having issues. I'm starting the command line through MO2 and I've used habasi -m before and that worked fine, but with -O it gives the error: Found game configuration file "../Morrowind.ini" Failed to get load order
Caused by: 0: Failed to find Morrowind's archive 1: Archive "Tribunal.bsa" not found at expected location "\\?\C:\Spiele\Mod Organizer 2\Instances\Morrowind\profiles\Default\Data Files\Tribunal.bsa" Fix the problem or add "--ignore-important-errors"(may rarely cause unexpected behaviour) to ignore So, it seems that it looks in the profile folder from MO2 for the plugins, because that is where the ini is located. A workaround is to disable "Use profile-specific Game INI files", but I wonder if there is a different way to do this.
Hello, Pherim! I'll gladly try to make it work with "profile-specific game ini files". I'd need your help though.
Spoiler:
Show
That's what roughly happens from the program view point: 0. Program starts. 1. Looks for game configuration file. 2. (from log) Found game configuration file "../Morrowind.ini". The program now has 2 paths of the config file: relative: "..\Morrowind.ini" absolute: "C:\Spiele\Mod Organizer 2\Instances\Morrowind\profiles\Default\Morrowind.ini" 3. Started reading game configuration file line by line, found line ~ "GameFile1=Tribunal.esm" 4. Checked for "Data Files" dir at the same directory where Morrowind.ini is: data_files: "C:\Spiele\Mod Organizer 2\Instances\Morrowind\profiles\Default\Data Files" 5. Appended archive name from (3.) to data_files: archive: "C:\Spiele\Mod Organizer 2\Instances\Morrowind\profiles\Default\Data Files\Tribunal.esm" 6. Checked for it's existance and failed: (from log) Failed to find Morrowind's archive (from log) Archive "Tribunal.bsa" not found at expected location "\\?\C:\Spiele\Mod Organizer 2\Instances\Morrowind\profiles\Default\Data Files\Tribunal.bsa"
The logic is pretty simple. And works for "classic" Morrowind files locations. "Profile-specific" is different though.
1. Please check the "ModOrganizer-to-OpenMw" way. I suppose it should work. 2. I may add another option to the program to provide your custom "Data Files" dir(if there is one). This way (4.) would have different path and other steps would proceed successfully. Will this new option help?
That idea(second option) was a wild guess. Existance of "Data Files" in "...\profiles\Default" makes me doubt it would work. Resulting "openmw.cfg"(from ModOrganizer-to-OpenMW) for both non-profiled and profiled would really be helpful in future. This way it'd be clear how MO2 profiles operate.
I am going to prepare new distinct testing build with the new option introduced.
I've added a new option --force-base-dir(-B) that may be used in addition to --use-load-order(-u). It's made to look for plugins in current directory by default or any other directory provided with --base-dir(-b). Following examples illustrate this option usage(and do exactly the same thing, produce "out.esp" based on load order and look for plugins in "another_dir" folder):
Short options: habasi -m out.esp -uBb another_dir
Long options: habasi --merge out.esp --use-load-order --force-base-dir --base-dir "another_dir"
Per list options: habasi -m "out.esp, use_load_order, force_base_dir, base_dir:another_dir"
Per list options(alternative): habasi -m out.esp use_load_order force_base_dir base_dir:another_dir
Per list options(alternative, also working): habasi -m out.esp use-load-order force-base-dir base-dir:another_dir
Settings file configuration with per list options: merge = [["out.esp", "use_load_order", "force_base_dir", "base_dir:another_dir"]]
Settings file configuration with global options: merge = [["out.esp"]] base_dir = "another_dir" use_load_order = true force_base_dir = true
What do you mean? There is no "Data Files" in the profile folder, the program just looks there for it.
I've just discovered that new option "--force-base-dir" doesn't work with "-O" profile. I am ashamed. I've spent a considerable amount of time to make the changes and test with all the options, but I've completely forgot that "-O" profile is a bit "hacky"(and missed it from your first comment, thus focusing entirely on "--use-load-order"). I'll try to upload fixed version soon.
Version 0.3.5 should work in your case with "custom" plugins directory and "-O". Please let me know whether it solves the initial issue. Example command would be: habasi -OBb "another_dir"
May be following command would work if MO2 places you into the plugin's directory on profile load: habasi -OB
Here you are :-D It should work though I have no device to test it. Consider using -P option if you encounter out of memory errors on a 32-bit device(it'd be hard to reach memory limit IMO). Jobasha's page has an instruction how to use such program on Android: Description tab -> Files section -> Android section.
Hello! I'm having some difficulty getting Habasi to generate a "MergedLoadOrderGrass.esp". When I run -O it only generates a "MergedLoadOrder.esp". I used the MW Mesh Generator to generate grass for some modded landscapes, which produced some .esp files. I've tried running Habasi with those .esp's enabled and with them disabled in the config, neither generated the merged grass .esp.
I've also tried running -g and --grass (with and without the --config command), which just gives me a "Nothing to proceed: at least one --merge or --preset-* option is required" (not entirely sure what the -g command does, but I figured it couldn't hurt?).
Apologies if there's an obvious fix (my CS knowledge is rudimentary and 99% theoretical), and thank you for your work in creating this program :)
1. Log file should contain the reason for -O not working as expected. I suspect something's wrong with load order. Do those plugins behave as they should in game? Also "-g" is simply a short name of "--grass" option. 2. The "manual" way should always work whatever the problem is with -O. You were right to fallback to it, though missed a bit :-) You may do everything explained further with the config file(I think it's more handy), but let's make it with command line switches for clarity.
Spoiler:
Show
In this example I have folder "grass_plugins" that contains "1.esp, 2.esp, 3.esp". These 3 files are simply renamed Remiros' Groudncover. I want to produce "MergedGrass.esp". The command would be(one of the possible commands). Here I pass --merge option, there I have "<Name of result>, <mode>, <base_dir_to_look_for_plugins>, ... names of plugins to merge ...": ./habasi --merge "MergedGrass.esp, grass, base_dir:grass_plugins, 1.esp, 2.esp, 3.esp" Log is written to "/home/alvazir/__OMW/sbox/Data Files/habasi.log" 23 records were excluded from "MergedGrass.esp" due to "grass" mode and interior cell(check log or add -vv to get list) 1 record was excluded from "MergedGrass.esp" due to "grass" mode and empty cell(check log or add -vv to get list) Output plugin "MergedGrass.esp" was written Combined plugin lists stats: input(3 plugins): 447 processed(300809 instances), 7 merged output(1 plugin): 416 total(300809 instances), 416 unique, 24 excluded, 0.422s duration
Alternative command would be without base_dir(a bit more lengthy): ./habasi --merge "MergedGrass.esp, grass, grass_plugins/1.esp, grass_plugins/2.esp, grass_plugins/3.esp"
1. The plugins behave just fine in game, I haven't had any issues (aside from grass clipping/floating in some spots). The only thing in the log I could find that may be an error is a "Failed to find "hidden" OpenMW-CS data path". I'm not using OpenMW- I generated an openmw.cfg using ModOrganizer-to-OpenMW and have been using that for the --config file. 2. That's a bit beside the point though, because your advice worked like a charm! Situating the grass esps and using that command didn't yield any errors, aside from noting 2 empty cells.
The program is a command-line utility, so I suppose it would look like "terminal window opened and closed" if you simply double-click on it in Windows.
99 comments
These mods contain the string 'db_housecat'
Clean Solstheim_Castle_v1.1.esp
Ascadian_Rose_Cottage_ver1.0.esp
ME Familiars.esp
I have a lot of other mods in the merge, but I narrowed the sound to "Sound\Cr\KO\db_housecat_land.wav" used by those plugins.
My order of merging:
1. MLOX on loose plugins
2. TES3Merge on loose plugins + base game ESMs
3. Jobasha merge leveled lists (MergedObjects not yet loaded)
4. Habasi merge loose plugins, MergedObjects and MergedLeveledLists
Update 1: I think the problem is more widespread, now there's a wasp that plays the Siltstrider moans on loop while flying, and dogs play a "muck/splat" sound on footsteps.
Update 2:
I might be seeing the pattern here with these logs from Habasi:
Processing plugin "\\?\D:\projects\morrowind\Loose_Files\mixer\Data Files\Real_wildlife_v2a.esp"
SNDG with empty id(Creature_ID:"RW_stilt_a", Sound_ID:"Silt_2") was assigned id "RW_stilt_a0004"
...
Processing plugin "\\?\D:\projects\morrowind\Loose_Files\mixer\Data Files\abotWhereAreAllBirdsGoing.esp"
SNDG with empty id(Creature_ID:"ab01bird14", Sound_ID:"ab01bird14Sound") was assigned id "ab01bird140005"
...
Processing plugin "\\?\D:\projects\morrowind\Loose_Files\mixer\Data Files\Clean Solstheim_Castle_v1.1.esp"
SNDG with empty id(Creature_ID:"KO_DB_Cat_house", Sound_ID:"KO_Cat_2") was assigned id "KO_DB_Cat_house0007"
...
Processing plugin "\\?\D:\projects\morrowind\Loose_Files\mixer\Data Files\ME Familiars.esp"
SNDG with empty id(Creature_ID:"ZT_PetCat", Sound_ID:"ZT_PetQuietProxy") was assigned id "ZT_PetCat0000"
I think there's some kind of scrambling of sound generators that happens when this "SNDG with empty id" occurs. I've seen Birds and Bees make the Siltstrider sound, and various animals (Rats, Mudcrabs, Nix Hounds, etc.) make the housecat meowing sound, which these records seem to implicate.
However I've opened my current Morrowind.ini load order in MWEdit and searched "ab01bee01" (the creature once observed making Siltstrider noises) and when I play in the editor it makes the correct buzzing sound, so the mixup only seems to occur at run-time? Hmm...
Also another thing: is there an exact log of what cells were merged? Is there an option to get a deeper log
(The help command doesn't mention anything from what I could tell)
I'm trying to merge hollaajith's Weapon Overhaul with dumgeon's Price Balance, and it seems to be a one-or-the-other affair.
Log is written to "C:\Games\Morrowind\Data Files\habasi.log"
Global list options: mode = keep
Nothing to proceed: at least one --merge or --preset-* option is required
Doesn't seem to matter where i run the program from, it does nothing but make this log
habasi --merge WeirdMergedPlugin.esp Morrowind.esm Bloodmoon.esm
cmd /k <your path to habasi.exe>
pause>nul
Open a terminal / cmd prompt / PowerShell / whatever-your-OS-has in the folder the habasi binary is located and do
habasi [whatever you're trying to do]
If you try to double click it it won't work (because that's not how it's used).
Edit: fixed of my own accord, didn't realize it created a meshes folder in my user directory!
I am curious though. Did it produce meshes folder in a directory different to the one where it placed plugins? Please tell me if that's the case. It'd be a bug if it placed plugins and meshes folder in different places.
The program should not crash when merging load order(unless OpenMW team produced new field/format :-D ). Some mods made with OpenMW-CS would not be merged(omwscripts or some omwaddons with newly added fields that differ too much from TES3 format). Those should be automatically ignored though.
As for the vanilla engine experiments. Merging everything would require some additional steps I suppose. I imagine you'd have to(blind speculations here):
habasi -O --skip-from-use-load-order Morrowind.esm
# Copy Morrowind.ini
# Comment out Morrowind.esm, Tribunal.esm, Bloodmoon.esm
# Provide copied config to habasi via --config option
habasi -O -c Morrowind_copy.ini
You'd better make "targeted" merges(merging bunches of plugins that are not related to MWSE-plugins in any way). Option -w(short for --show-plugins) should help for preparing list of plugins for settings file.
Would you please explain what's not working with LGNPC and patches for it when merged? That'd be an isolated example. BCOM is a much harder beast with it's (almost) hundred of patches.
habasi -m BCOM.esp "Beautiful cities of Morrowind.ESP" BCOM_pathgrid_reset.ESP BCoM_AldRuhn_Outdoor_Merchants.ESP "BCOM - Taller Lighthouse.ESP" BCOM_Vivec_Bustling_Arena.ESP "BCOM_Suran Expansion.ESP" "BCoM - Atmospheric_Arena.ESP" BCoM_Caldera_MG_Basement.ESP BCoM_Atmospheric_Plazas.ESP BCOM_Canal_02.ESP BCoM_Concept_Art_Husk_Urshilaku.ESP BCOM_Decorated_Cantons.ESP BCoM_Eight_Plates_Quest_Addon.ESP BCoM_FQ_Bridges.esp BCoM_Imperial_Gaehouse_Buckmoth.ESP BCOM_Izi_Hlaalu_plaza.ESP BCoM_Imperial_Gaehouse_MoonMoth.ESP BCoM_Imperial_Gatehouse_Pelagiad.ESP BCoM_More_Logical_Census_Office.ESP BCoM_Khuul_Lighthouse_02.ESP BCoM_Marketplace_addon_ver_3.esp "Interior exterior flag reset_Atmospheric Arena.ESP" "Interior exterior flag reset_Atmospheric Plazas.ESP" BCOM_rotating_planets_GG.ESP BCOM_Stavs_MGO.ESP BCOM_Tribal_Erabenimsun.ESP
I hope I did the spoiler tag right. Anyway, I'm pretty certain none of them are patches. And plugins that patch BCOM files weren't enabled when running just BCOM + dependencies, but I still get those errors.
LGNPC patch issue doesn't happen when running that on it's own, though. And now that I'm thinking about it, I think that was merged with a BCOM replacer of one of the LGNPC plugins. And now I'm not getting that error, so I don't know what that's about.
I just ran BCOM in isolation, LGNPC in isolation, and both together with nothing else but a quickstart plugin for easy testing and I got no errors from LGNPC, but I got 102 give or take "Object reference [refid] missing in master file" errors both times I ran BCOM. The cells the errors referred to were all over the map. The only BCOM patch I used was a replacer file for The Publicans, and that's just because the LGNPC patch I tested with was also for The Publicans, and even then I only used that patch when running both together.
"Output plugin "BCOM.esp" was written. It contains reindexed references most likely, so new game is recommended.
The only problem I'd expect from this file is from the order of merged files. I hope that you sorted them correctly(PLOX etc).Combined plugin lists stats:
input(26 plugins): 5877 processed(66519 instances), 393 removed(dup), 329 merged, 133 replaced
output(1 plugin): 5089 total(66440 instances), 5022 unique, 67 mergeable(unique), 67 mergeable(total), 0.120s duration
Now please provide any missing reference ID and which plugin triggers it. Or look for it yourself with command like:
tes3cmd dump *.esp --type cell --match objidx:7540 --list
I think the problem you experience is due to the selection of the plugins to be merged in regard to the references IDs. The rule of thumb should be something like: "Merge from the end"/"Merge the tail" :-D Or "Avoid merging plugin that a lot of other plugins reference". Let me try to explain this approach:
Let's start with this synthetic example. Imagine you have this load order:
(A) Morrowind.esm
(B) Beautiful cities of Morrowind.ESP
(C) BCoM_Khuul_Lighthouse_02.ESP
(D) Much better Khuul(DEPEND ON C).esp
You may merge this completely and it should work.
(M) Merged.esp = A + B + C + D
Then you add another mod (E) that'd depend on (A) in most cases. Reference IDs in (M) may have changed so you'll see an error. Now either merge everything together again or prefer not to merge (A). This way you are free to keep (E) as it is or merge it:
(A)
(M) Merged.esp = B + C + D
(E) Another mod_1(DEPEND ON A)
or
(A)
(M) Merged.esp = B + C + D + E
Then comes another mod (F) that depends on (A). Again we're free to either merge it or keep standalone. Everything's working because we opted out of merging (A) that everything around depends on.
(A)
(M) Merged.esp = B + C + D + E
(F) Another mod_2(DEPEND ON A)
or
(A)
(M) Merged.esp = B + C + D
(E)
(F) Another mod_2(DEPEND ON A)
or
(A)
(M) Merged.esp = B + C + D + E + F
We may now just decide to have structure like that:
(A)
(M1) B + C + D
(M2) E + F
And now you decide to add another patch (G) for BCOM (B). Reference IDs may have changed and you'll see an error. Now again you may either merge everything together or prefer not to merge (B). Again you are free to keep (G) as it is or merge it:
(A)
(B)
(M) Merged.esp = C + D + E + F
(G) Even better Khuul(DEPEND ON B).esp
or
(A)
(B)
(M) Merged.esp = C + D + E + F + G
Now I hope you may see the pattern. When (F) comes that rely on (B) you'll be free to either merge it or keep standalone, because everything would be working.
(A)
(B)
(M) Merged.esp = C + D + E + F + G + F
(F) Superior Khuul(DEPEND ON B).esp
or
(A)
(B)
(M) Merged.esp = C + D + E + F + G + F
More realistic example:
Morrowind.esm
Tribunal.esm
Bloodmoon.esm
Wares-base.esm
Patch for Purists.esm
Tamriel_Data.esm
Wyrmhaven.esm
TR_Mainland.esm
OAAB_Data.esm
Astrologians Guild.esp
Sky_Main.esm
Havish.esm
Cyr_Main.esm
RepopulatedMorrowind.ESM
United-100.esp
Solstheim Tomb of The Snow Prince.esm
United-200.esp
United-700.esp
United-TNG-CONTENT.esp
MergedLeveledLists.esp
MergedLeveledLists - Delev.esp
United-700 contains something that doesn't have any dependencies, United-200 contains something that depends on SToTSP, United-100 contains other plugins. That's around 600 mods merged.
Let's find the exact reason why you see errors first. I suppose that following the rule afterward would make everything easier, e.g. to continue merging those 25 plugins but not merging "Beautiful cities of Morrowind.ESP".
I've been removing plugins from the merge command and remerging, like you said, and I'm down to only 3 missing reference errors, even though I'm loading the plugins in the same order they're listed in the merge command. It seems to me, inexperienced as I am, that Habasi either isn't bringing those referenced objects forward into the merge or is not renumbering the references to match. It's entirely possible that I'm doing something wrong, but the only thing I can think of is that plugins in the command should be listed from highest priority to lowest (I have them listed lowest to highest).
This is my current test LO and Habasi command, the merge is loaded last, and the unmerged are in the same order as they are in the command:
Morrowind.esm
Tribunal.esm
Bloodmoon.esm
OAAB_Data.esm
Tamriel_Data.esm
CREL_Vanilla_v3.1.esp
Beautiful cities of Morrowind.ESP
BCOM_pathgrid_reset.ESP
BCoM_AldRuhn_Outdoor_Merchants.ESP
BCOM - Taller Lighthouse.ESP
BCOM.esp
Command:
habasi -m BCOM.esp BCOM_Vivec_Bustling_Arena.ESP "BCOM_Suran Expansion.ESP" "BCoM - Atmospheric_Arena.ESP" BCoM_Caldera_MG_Basement.ESP BCoM_Atmospheric_Plazas.ESP BCOM_Canal_02.ESP BCoM_Concept_Art_Husk_Urshilaku.ESP BCOM_Decorated_Cantons.ESP BCoM_Eight_Plates_Quest_Addon.ESP BCoM_FQ_Bridges.esp BCoM_Imperial_Gaehouse_Buckmoth.ESP BCOM_Izi_Hlaalu_plaza.ESP BCoM_Imperial_Gaehouse_MoonMoth.ESP BCoM_Imperial_Gatehouse_Pelagiad.ESP BCoM_More_Logical_Census_Office.ESP BCoM_Khuul_Lighthouse_02.ESP BCoM_Marketplace_addon_ver_3.esp "Interior exterior flag reset_Atmospheric Arena.ESP" "Interior exterior flag reset_Atmospheric Plazas.ESP" BCOM_rotating_planets_GG.ESP BCOM_Stavs_MGO.ESP BCOM_Tribal_Erabenimsun.ESP
Hello there! Our thread on comments section becomes too long :-)
Please send me problematic/missing refids(references IDs) from your log. Those "Object reference [refid] missing in master file" messages. These IDs should help to find the root cause.
I've tried merging everything as you instructed. Everything looks good. I didn't like absense of Patch for Purists and pretty old version of
CREL(instead of recent updated for 2024), but that should not matter(PfP is not listed as required on BCOM page). I've found small bug(recently introduced due to rust version update) for comparing plugins with reference having negative zero, but that's it :-) I've rechecked many things inside the program - everything looks good to me.
I am eager to find the cause of the errors. The thing that's missing for debug is the list of reference IDs from errors :-)
So, it seems that it looks in the profile folder from MO2 for the plugins, because that is where the ini is located. A workaround is to disable "Use profile-specific Game INI files", but I wonder if there is a different way to do this.Found game configuration file "../Morrowind.ini"
Failed to get load order
Caused by:
0: Failed to find Morrowind's archive
1: Archive "Tribunal.bsa" not found at expected location "\\?\C:\Spiele\Mod Organizer 2\Instances\Morrowind\profiles\Default\Data Files\Tribunal.bsa"
Fix the problem or add "--ignore-important-errors"(may rarely cause unexpected behaviour) to ignore
That's what roughly happens from the program view point:
0. Program starts.
1. Looks for game configuration file.
2. (from log) Found game configuration file "../Morrowind.ini". The program now has 2 paths of the config file:
relative: "..\Morrowind.ini"
absolute: "C:\Spiele\Mod Organizer 2\Instances\Morrowind\profiles\Default\Morrowind.ini"
3. Started reading game configuration file line by line, found line ~ "GameFile1=Tribunal.esm"
4. Checked for "Data Files" dir at the same directory where Morrowind.ini is:
data_files: "C:\Spiele\Mod Organizer 2\Instances\Morrowind\profiles\Default\Data Files"
5. Appended archive name from (3.) to data_files:
archive: "C:\Spiele\Mod Organizer 2\Instances\Morrowind\profiles\Default\Data Files\Tribunal.esm"
6. Checked for it's existance and failed:
(from log) Failed to find Morrowind's archive
(from log) Archive "Tribunal.bsa" not found at expected location "\\?\C:\Spiele\Mod Organizer 2\Instances\Morrowind\profiles\Default\Data Files\Tribunal.bsa"
The logic is pretty simple. And works for "classic" Morrowind files locations. "Profile-specific" is different though.
1. Please check the "ModOrganizer-to-OpenMw" way. I suppose it should work.
2. I may add another option to the program to provide your custom "Data Files" dir(if there is one). This way (4.) would have different path and other steps would proceed successfully. Will this new option help?
I am going to prepare new distinct testing build with the new option introduced.
habasi -m out.esp -uBb another_dir
habasi --merge out.esp --use-load-order --force-base-dir --base-dir "another_dir"
habasi -m "out.esp, use_load_order, force_base_dir, base_dir:another_dir"
habasi -m out.esp use_load_order force_base_dir base_dir:another_dir
habasi -m out.esp use-load-order force-base-dir base-dir:another_dir
merge = [["out.esp", "use_load_order", "force_base_dir", "base_dir:another_dir"]]
merge = [["out.esp"]]
base_dir = "another_dir"
use_load_order = true
force_base_dir = true
habasi -OBb "another_dir"
May be following command would work if MO2 places you into the plugin's directory on profile load:
habasi -OB
I've also tried running -g and --grass (with and without the --config command), which just gives me a "Nothing to proceed: at least one --merge or --preset-* option is required" (not entirely sure what the -g command does, but I figured it couldn't hurt?).
Apologies if there's an obvious fix (my CS knowledge is rudimentary and 99% theoretical), and thank you for your work in creating this program :)
1. Log file should contain the reason for -O not working as expected. I suspect something's wrong with load order. Do those plugins behave as they should in game? Also "-g" is simply a short name of "--grass" option.
2. The "manual" way should always work whatever the problem is with -O. You were right to fallback to it, though missed a bit :-) You may do everything explained further with the config file(I think it's more handy), but let's make it with command line switches for clarity.
In this example I have folder "grass_plugins" that contains "1.esp, 2.esp, 3.esp". These 3 files are simply renamed Remiros' Groudncover. I want to produce "MergedGrass.esp". The command would be(one of the possible commands). Here I pass --merge option, there I have "<Name of result>, <mode>, <base_dir_to_look_for_plugins>, ... names of plugins to merge ...":
./habasi --merge "MergedGrass.esp, grass, base_dir:grass_plugins, 1.esp, 2.esp, 3.esp"
Log is written to "/home/alvazir/__OMW/sbox/Data Files/habasi.log"
23 records were excluded from "MergedGrass.esp" due to "grass" mode and interior cell(check log or add -vv to get list)
1 record was excluded from "MergedGrass.esp" due to "grass" mode and empty cell(check log or add -vv to get list)
Output plugin "MergedGrass.esp" was written
Combined plugin lists stats:
input(3 plugins): 447 processed(300809 instances), 7 merged
output(1 plugin): 416 total(300809 instances), 416 unique, 24 excluded, 0.422s duration
Alternative command would be without base_dir(a bit more lengthy):
./habasi --merge "MergedGrass.esp, grass, grass_plugins/1.esp, grass_plugins/2.esp, grass_plugins/3.esp"
2. That's a bit beside the point though, because your advice worked like a charm! Situating the grass esps and using that command didn't yield any errors, aside from noting 2 empty cells.
Thank you so much for your help! :)
The program is a command-line utility, so I suppose it would look like "terminal window opened and closed" if you simply double-click on it in Windows.