Advertisement
Sharlikran

modgroups

Jul 29th, 2018
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.83 KB | None | 0 0
  1. For a modgroup the be activateable, the order of the mods in the load order and modgroup must match.
  2.  
  3. If a modgroup is active, what it essentially means is that for each record that is contained in more than one mod of the modgroup, only the last (in load order) is visible. That’s it. The invisible record versions simply don’t participate in the normal conflict detection mechanisms at all.
  4.  
  5. Defining a modgroup essentially says: “I’ve checked these mods, when loaded in that order, against each other, and for each record, any conflict that may exists between them has been successfully resolved in the winning record version.”
  6.  
  7. A modgroup does not perform any merge or make any changes to any mod. All it does it hide away version of records that you’ve stated (by defining the modgroup) that you’ve already checked them against each other and the hidden record is simply irrelevant.
  8.  
  9. What masters the individual mods have is totally irrelevant, I’m not sure why you listed that information. All that counts is that a modgroup says “if these mods are loaded together in that order, then the winning version of the record out of these has been verified to be ok, don’t worry about the versions from the other mods in the group”.
  10.  
  11. I’m not quite sure what you are trying to show with that screenshot, but it looks correct to me, that is:
  12.  
  13. [SnB Homemaker Patch] hides away record versions from Homemaker.esm if another version is contained in Snap'n Build.esm or Snap'n Build - Patches_HMM.esp, and it hiddes records from Snap'n Build.esm if there is another version in Snap'n Build - Patches_HMM.esp.
  14.  
  15. [SnB SK Patch] hides away record versions from SettlementKeywords.esm if another version is contained in Snap'n Build.esm or Snap'n Build - Patches_SK.esp, and it hiddes records from Snap'n Build.esm if there is another version in Snap'n Build - Patches_SK.esp.
  16.  
  17. In both cases the modgroup promising that between the mods in each group, the winning record is correctly resolving all conflicts (even if they would still be detected as conflicts by xEdit).
  18.  
  19. This now makes it a lot easier to see that there are conflicts between Snap'n Build - Patches_HMM and Snap'n Build - Patches_SK, which would normally be hard to notice because of all the other (meaningless) conflicts that the modgroup is now hidding.
  20.  
  21. It is clear from this that it is necessary to create a Snap'n Build - Patches_HMM_SK (or SK_HMM, I don't know enough to figure out what would be the better load order to minimize the number of records that the patch needs to fix) which resolves any outstanding conflicts between the two patches if they are both loaded.
  22.  
  23. Once that patch is created and verified to resolve all remaining conflicts, another modgroup can be created:
  24.  
  25. [SnB HMM SK Patch]
  26. Snap'n Build - Patches_SK.esp
  27. Snap'n Build - Patches_HMM.esp
  28. Snap'n Build - Patches_SK_HMM.esp
  29.  
  30. Which says that any records contained in more than one of these files do not conflict, and whatever record wins out of these 3 is the correct one.
  31.  
  32. That may actually not be exactly what you want, because if there are changes in the future, the above would hide conflicts between records in SK and HMM even if there is no record in SK_HMM that resolves the conflict, so you might be better served with this:
  33.  
  34. [SnB HMM SK Patch - SK]
  35. Snap'n Build - Patches_SK.esp
  36. -Snap'n Build - Patches_HMM.esp
  37. Snap'n Build - Patches_SK_HMM.esp
  38.  
  39. [SnB HMM SK Patch - HMM]
  40. -Snap'n Build - Patches_SK.esp
  41. Snap'n Build - Patches_HMM.esp
  42. Snap'n Build - Patches_SK_HMM.esp
  43.  
  44. The "-" means" "That mod must be present in that order, but records from it wont be hidden."
  45.  
  46. The result is that:
  47.  
  48. -If a record is present in SK_HMM and SK, the SK one will be hidden.
  49. -If a record is present in SK_HMM and HMM, the HMM one will be hidden.
  50.  
  51. (Which implies that a record that is present in all 3 will only show up once with it's SK_HMM version.)
  52.  
  53. But:
  54.  
  55. - If a record is present in SK and HMM, but NOT in SK_HMM, both the SK and HMM version will show and you can see if there is a conflict that needs to be resolved by creating a merged version in SK_HMM.
  56.  
  57. Even if you then later decide that any remaining cases where a record is contained in SK and HMM but not SK_HMM are correct, it's better to add a 3rd modgroup:
  58.  
  59. [SnB HMM SK Patch - SK/HMM]
  60. Snap'n Build - Patches_SK.esp
  61. Snap'n Build - Patches_HMM.esp
  62. -Snap'n Build - Patches_SK_HMM.esp
  63.  
  64. instead of going back to a modgroup with 3 modules, because the modgroups can be turned on and off individually.
  65.  
  66. The same applies to [SnB Homemaker Patch] and [SnB SK Patch], which should be split apart into two mod groups.
  67.  
  68. Now, this modgroup:
  69.  
  70. [Snap and Build]
  71. Snap'n Build.esm
  72. Snap'n Build - Bunker.esp
  73. Snap'n Build - Capsule.esp
  74. Snap'n Build - Greenhouse.esp
  75. Snap'n Build - Industrial.esp
  76. Snap'n Build - Real Estate.esp
  77.  
  78. Is probably not what you want. It says that all these files need to be loaded together and in that particular order for the modgroup to be activateable.
  79.  
  80. I don't know anything about that mod, but I would assume that the individual esp's are actually each optional and can be present or not.
  81.  
  82. One way to express that is to mark the files as optional:
  83.  
  84. [Snap and Build]
  85. Snap'n Build.esm
  86. +Snap'n Build - Bunker.esp
  87. +Snap'n Build - Capsule.esp
  88. +Snap'n Build - Greenhouse.esp
  89. +Snap'n Build - Industrial.esp
  90. +Snap'n Build - Real Estate.esp
  91.  
  92. But that might actually not really what you want either, because suppose there is a conflict between a record in, say Bunker and Industrial, that the version from Industrial is correct and the conflict shouldn't show.
  93.  
  94. It's more likely that what you really want is something like:
  95.  
  96. [Snap and Build - Bunker]
  97. Snap'n Build.esm
  98. Snap'n Build - Bunker.esp
  99.  
  100. [Snap and Build - Capsule]
  101. Snap'n Build.esm
  102. Snap'n Build - Capsule.esp
  103.  
  104. [Snap and Build - Greenhouse]
  105. Snap'n Build.esm
  106. Snap'n Build - Greenhouse.esp
  107.  
  108. [Snap and Build - Industrial]
  109. Snap'n Build.esm
  110. Snap'n Build - Industrial.esp
  111.  
  112. [Snap and Build - Real Estate]
  113. Snap'n Build.esm
  114. Snap'n Build - Real Estate.esp
  115.  
  116. Which will end up hiding records from Snap'n Build.esm if they are contained in one of the esp's. But if the same record is contained in multiple esp's, it will still go through normal conflict detection and you'll see if there is a problem.
  117.  
  118. One of the implications of the individual modgroups like that is that the order of the individual esp's is now no longer strictly defined by the modgroup. They could occur in any order following the esm.
  119.  
  120. With these individual modgroups, let's say again that there is some conflict showing up between Bunker and Industrial, but you've looked at it and decided that if Industrial is loaded after Bunker, the conflict is correctly resolved, you can then add a modgroup:
  121.  
  122. [Snap and Build - Bunker/Industrial]
  123. Snap'n Build - Bunker.esp
  124. Snap'n Build - Industrial.esp
  125.  
  126. which would hide that conflict away to.
  127.  
  128. In almost all circumstances, modgroups should only contain 2 mods, or if there are more, only have 2 mods that are not marked with a "-".
  129.  
  130. This way you minimize the chance of accidentially hiding away a real remaining conflict by accident.
  131.  
  132. Putting some modgroups into FO4Edit.modgroups is fine enough if you just want to use them for yourself, but modgroups are really designed to give mod authors the ability to distribute them with their mods, basically promising mod users: "I've checked these mods against each other and I am confident that there are no unresolved conflicts".
  133.  
  134. The way to do that is to include .modgroups files with the same name as the .esp or .esm in the download. xEdit will then read and process these modgroups IF the module of the same name is active in the load order.
  135.  
  136. So you could have a Snap'n Build - Patches_SK_HMM.modgroups file with the following contents:
  137.  
  138. [SnB HMM SK Patch - SK]
  139. Snap'n Build - Patches_SK.esp
  140. -Snap'n Build - Patches_HMM.esp
  141. Snap'n Build - Patches_SK_HMM.esp
  142.  
  143. [SnB HMM SK Patch - HMM]
  144. -Snap'n Build - Patches_SK.esp
  145. Snap'n Build - Patches_HMM.esp
  146. Snap'n Build - Patches_SK_HMM.esp
  147.  
  148. And place that in the mods folder together with Snap'n Build - Patches_SK_HMM.esp
  149.  
  150. xEdit will then load that modgroups file, if Snap'n Build - Patches_SK_HMM.esp is active in the list of loaded modules.
  151.  
  152.  
  153.  
  154. Now, the last issue then is the the promise in a modgroup really only applies to a specifics versions of the listed modules. That's especially important if some of the listed modules are from another mod author and aren't distributed in the same download.
  155.  
  156.  
  157.  
  158. Because of that, it is possible to restrict modgroups based on the CRC (same value that BOSS/LOOT is using). It would look like:
  159.  
  160.  
  161.  
  162. [SnB HMM SK Patch - SK]
  163.  
  164. Snap'n Build - Patches_SK.esp:12345678
  165.  
  166. -Snap'n Build - Patches_HMM.esp:A1B2C3D4,F9E8D7C6
  167.  
  168. Snap'n Build - Patches_SK_HMM.esp
  169.  
  170.  
  171.  
  172. That is, if a module is followed by a list of one or more CRC values, the modgroup is only available if the module has one of the listed CRCs.
  173.  
  174.  
  175.  
  176. That's pretty much everything important about modgroups.
  177.  
  178.  
  179.  
  180. The main point is that conflicts between different modules can be checked and resolved just a module or two at a time, and then when it is verified that there are no remaining actual conflicts between certain modules (even if they would show up in xEdit), they can be hidden away.
  181.  
  182.  
  183.  
  184. So if you have a complex load order with 100's of modules which shows up as 1000's of conflicts in xEdit that you could never ever sort out, you could instead start with just a module or two, resolve conflicts and define modgroups, then add another module, resolve conflicts and define modgroups and so on, in an interative process. Leaving you at the end with a load order with all conflicts resolved and no false positives showing in xEdit.
  185.  
  186.  
  187.  
  188. If you then later add another module into your load order, you will only see true conflicts that are actually caused by that one module, without them being hidden by 1000's of false positives.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement