libloot
libloot copied to clipboard
Sort plugins closer to their masters
Proposal: Any mod that has a non-ESM master should be placed as close to it's master as possible.
Reasoning: There are several advantages to this. When it comes to patches, I have detailed why proper patch placement is immediately after the last of its masters here, with an example of how not placing them that way can cause errors: https://www.nexusmods.com/skyrimspecialedition/articles/625
I initially thought to request this only for conflict resolution patches, and identify those as mods with two or more non-vanilla masters, but it occurs to me that the principle holds even for non-patch mods that have only a single non-vanilla, non USSEP master. Take a mod like Enhanced Blood Textures. If you choose all the options in the installer, you'll get a host of sub-plugins (like "no screen blood"), all of which have a main EBT plugin as a master. Currently, LOOT will litter these sub-plugins all over the list, which is terrible from an organizational perspective, makes it impossible to synchronize installation and plugin order, and leads to possible conflicts with intervening mods that change the same record being overridden by a sub-plugin of EBT but not EBT itself. With my proposal, all the EBT plugins will be grouped together nice and neatly in the plugin list, which wouldn't just prevent conflicts, it would also just look better and be easier to review and adjust their position all together as a single unit, since they really should be considered and treated as such.
Or take ACE (Armor and Clothing Extension), which has one master, WACCF (Weapons, Armor, Clothing and Clutter Fixes). The author - any author really - would certainly design these with the assumption that ACE would immediately overwrite WACCF in every shared record. An intervening mod C between the two that shared a record with them would be only partially overwritten by ACE, while possibly also partially overwriting WACCF in some other regard. This can only cause havoc. With ACE naturally placed immediately after WACCF, the combination will be either wholly overwritten by Mod C, or Mod C will wholly ovewrite WACCF+ACE, but there should generally exist no good circumstance in which any mod (other than patches for WACCF) should come between WACCF and ACE, partially overwriting one and being partially overwritten by the other. This is also a good example of why a patch for WACCF and some other Mod X should come immediately after WACCF, as placing that patch below ACE will revert ACE's intentional changes back to WACCF's values in any shared record.
Note that in my methodology below, I'm going to treat this as if it should only apply to masters without the ESM flag checked, but it may be better to just exclude the vanilla ESMs and USSEP. I'm still trying to decide if there ARE any pros or cons in regards to whether it should just be vanilla ESMs and USSEP excluded, or all ESMs excluded. For now I'll just say all ESMs since it makes the below more readable. Please treat the words "ESP master" below to mean "non-ESM flagged" masters.
Methodology:
Pass 1: Go through all plugins and count the number of ESP masters each plugin has. Pass 2: Apply LOOT's sorting algorithm only to mods with zero ESP masters. Pass 3: Insert into the result of Pass 2 all mods with 1 ESP master, placing them immediately after its master or as close to it as strict metadata allows. Pass 4: Insert into the result of Pass 3 all mods with 2 ESP masters, placing them immediately after the last of its masters or as close to it as strict metadata allows. Pass X: Insert into the result of Pass X all mods with X-1 ESP masters, placing them immediately after the last of its masters or as close to it as strict metadata allows.
Steps 3-X are really all one step, the point being to order all base mods with no masters first, then insert mods with 1 master, then insert mods and patches with 2 masters, etc. till you're done.
By "strict metadata" I mean specific "Mod X must come after Mod Y" ordering, not just "Group B must come after Group A" ordering. If this turns out not to work for all mods that have only one master, I won't mind this proposal being reduced to only applying to actual conflict patches (2 or more masters), which should always be possible. I just decided to propose this for all mods with any masters until we can find a solid reason not to and because it might actually be easier to implement this way.
Possible complications and solutions:
Problem A) What if Mod A has a master B which itself has more masters than A does. This could be handled in two ways:
- During pass 1, build an expanded master list, where if Mod A has a master B, and master B itself has masters C and D, then C and D are also counted as masters of Mod A for the purpose of determining which pass it should be inserted in.
- Probably easier, if the current pass is attempting to insert a plugin whose master hasn't itself been inserted yet, simply skip Mod A in that current pass. Eventually master B will be inserted, and any mod A that was skipped can then be inserted in a later pass.
Problem B) How do you order patches that would be inserted into the same position via this method?
Take mods A, B and C. There exist patches for A-B, for B-C, and for A-C. My method would result in this:
1: Mod A 2: Mod B 3: Patch A-B 4: Mod C ?: Patch A-C ?: Patch B-C
Those last two patches would be inserted in the same pass, and placed after C because that's the lower of their masters. How should they be ordered? Answer: They should be ordered by the position of their other master. Since Mod A should come before Mod B, then patch A-C should come before patch B-C.
Please throw me any questions or arguments you have against this, I've given a lot of thought to it for a year now and I plan to monitor this request. To be honest, that LOOT doesn't do this is the only reason I have not used LOOT for actual ordering until now... so far I just use it to advise me of required patches. If it did this, I would be very likely to adopt and recommend its ordering highly.
Additional note: IF it is decided that this idea would only generally be applied to mods with 2 or more masters - in other words, just compatibility patches - then I would suggest that the only masters that should be ignored when counting masters to determine if a plugin is a patch are the vanilla masters. Even USSEP should be counted to determine if a mod is a patch in that circumstance. It's possible that a mod might have dependency on USSEP and have another master and not be a patch, but I think those would be significantly rarer than actual patches for USSEP (I publish over a dozen myself). and I still wouldn't see the harm in applying this ordering logic to those few instances anyway.
For reference this is the sorting for a large load order with the current masterlist
Click to view picture
--- 0 0 Skyrim.esm
1 1 Update.esm
2 2 Dawnguard.esm
3 3 HearthFires.esm
4 4 Dragonborn.esm
254 FE 0 UHDAP - en0.esp
254 FE 1 UHDAP - en1.esp
254 FE 2 UHDAP - en2.esp
254 FE 3 UHDAP - en3.esp
254 FE 4 UHDAP - en4.esp
254 FE 5 UHDAP - MusicHQ.esp
5 5 Unofficial Skyrim Special Edition Patch.esp
6 6 BSAssets.esm
7 7 BSHeartland.esm
8 8 MajesticMountains_Landscape.esm
9 9 BS_DLC_patch.esp
10 a Campfire.esm
11 b FISS.esp
12 c Wyrmstooth.esp
254 FE 6 LSFX-SSE-Audiosettings.esp
13 d RelightingSkyrim_SSE.esp
14 e UnlimitedBookshelves.esp
15 f Audio Overhaul Skyrim.esp
16 10 Book Covers Skyrim.esp
17 11 Immersive Sounds - Compendium.esp
18 12 Landscape Fixes For Grass Mods.esp
19 13 Prometheus_No_snow_Under_the_roof.esp
20 14 Cutting Room Floor.esp
21 15 dD - Enhanced Blood Main.esp
22 16 Weapons Armor Clothing & Clutter Fixes.esp
23 17 MoonAndStar_MAS.esp
24 18 SMIM-SE-Merged-All.esp
25 19 EmbersHD.esp
26 1a Shadowmarks.esp
27 1b Gildergreen Regrown.esp
254 FE 7 SkyUI_SE.esp
254 FE 8 SRG Enhanced Trees Activator.esp
28 1c Veydosebrom - Grasses and Groundcover.esp
254 FE 9 UIExtensions.esp
29 1d AddItemMenuSE.esp
30 1e AHZmoreHUD.esp
31 1f AmazingFollowerTweaks.esp
254 FE a aMidianBorn Book of Silence.esp
32 20 Andromeda - Unique Standing Stones of Skyrim.esp
33 21 Animallica.esp
34 22 Relationship Dialogue Overhaul.esp
254 FE b Unique Region Names.esp
35 23 Castle Volkihar Rebuilt.esp
36 24 JKs Skyrim.esp
37 25 Undriel_QuaintRavenRock.esp
38 26 Ashbound.esp
39 27 Better Dynamic Snow.esp
40 28 TrueStormsSE.esp
41 29 Obsidian Weathers.esp
42 2a skyBirds_SSE.esp
43 2b BirdsOfSkyrim_SSE.esp
254 FE c Particle Patch for ENB SSE.esp
44 2c SLO_StoneWalls.esp
45 2d Thunderchild - Epic Shout Package.esp
46 2e moonpath.esp
47 2f JRMoonpathtoElsweyrPatch.esp
48 30 Point The Way.esp
49 31 Holidays.esp
50 32 Rorikstead.esp
51 33 JKs Skyrim_Rorikstead_Patch.esp
52 34 JKs Skyrim_Holidays_Patch.esp
254 FE d Particle Patch - RLS Patch.esp
53 35 BirdsAndFlocks_SSE.esp
54 36 MajesticMountains.esp
254 FE e Undriel_QuaintRavenRock Ashbound.esp
55 37 ZIA_Complete Pack_V4.esp
56 38 Wintersun - Faiths of Skyrim.esp
57 39 BetterDynamicSnow_PATCH.esp
58 3a SkyrimSewers.esp
59 3b Skyrim Better Roads and Bridges - All In One - Merged.esp
60 3c Run For Your Lives.esp
61 3d Tel Mithryn.esp
62 3e Keld-Nar.esp
63 3f Dolmen Ruins.esp
64 40 Darkwater Crossing.esp
65 41 Dawnstar.esp
66 42 Serana Dialogue Edit.esp
67 43 Inigo.esp
254 FE f Tel Mithryn Ashbound.esp
68 44 Skaal Village.esp
69 45 JKs Skyrim_Dawnstar_Patch.esp
70 46 Bring Out Your Dead.esp
254 FE 10 NSUTR_bugfixes.esp
254 FE 11 NSUTR_groundsnow_mesh_fixes.esp
71 47 JKs Skyrim_Dawnstar_BOYD_NSUTR_Patch.esp
72 48 Shor's Stone.esp
73 49 Atlas Legendary OCS.esp
254 FE 12 Better Dynamic Snow - NSUTR Patch.esp
254 FE 13 Landscape For Grass Mods JK'S Skyrim.esp
74 4a Ivarstead.esp
75 4b JKs Skyrim_BOYD_Patch.esp
76 4c FarmhouseChimneys.esp
77 4d JKs Skyrim_Ivarstead_Patch.esp
78 4e Provincial Courier Service.esp
79 4f frozenintime.esp
80 50 Helarchen Creek.esp
81 51 Kynesgrove.esp
82 52 Telengard.esp
83 53 Whistling Mine.esp
84 54 Soljund's Sinkhole.esp
85 55 Karthwasten.esp
86 56 JKs Skyrim_Skaal Village_Patch.esp
254 FE 14 Landscape Fixes For Grass mods - Cutting Room Floor Locations.esp
87 57 Dragon Bridge.esp
88 58 JKs Skyrim_Dragon Bridge_Patch.esp
89 59 ForgottenCity.esp
254 FE 15 Relighting Skyrim - JK's Skyrim Patch.esp
90 5a JKs Skyrim_Cutting Room Floor_Patch.esp
91 5b WheelsOfLull.esp
254 FE 16 No Snow Under The Roof - CRF Patch.esp
254 FE 17 Landscape For Grass Mods - Moon and Star PATCH.esp
92 5c Summermyst - Enchantments of Skyrim.esp
93 5d Lore Weapon Expansion.esp
94 5e Skyshards.esp
254 FE 18 BosmerArmorMATY743.esp
95 5f WarmongerArmory_DLC.esp
96 60 WarmongerArmory_Vanilla.esp
97 61 WarmongerArmory_LeveledList.esp
254 FE 19 WACCF Warmonger Armory Patch.esp
98 62 CommonClothes.esp
99 63 Guard Dialogue Overhaul.esp
100 64 Unique Uniques.esp
254 FE 1a WACCF Unique Uniques Patch.esp
254 FE 1b ZIA_WACCF_Patch.esp
254 FE 1c Qw_WACCF_AOS Patch.esp
254 FE 1d Qw_WACCF_CRF Patch.esp
254 FE 1e Audio Overhaul Skyrim - CRF Patch.esp
254 FE 1f Quaint Raven Rock - USSEP Patch.esp
101 65 Lucien.esp
254 FE 20 NSUTR_improvements.esp
102 66 The Paarthurnax Dilemma.esp
103 67 Darkend.esp
254 FE 21 Audio Overhaul Skyrim - Darkend Patch.esp
254 FE 22 Audio Overhaul Skyrim - Enhanced Blood Patch.esp
254 FE 23 Audio Overhaul Skyrim - GDO Patch.esp
254 FE 24 Audio Overhaul Skyrim - Immersive Sounds Patch.esp
254 FE 25 Improved Traps.esp
254 FE 26 Audio Overhaul Skyrim - Improved Traps Patch.esp
254 FE 27 Audio Overhaul Skyrim - Thunderchild Patch.esp
254 FE 28 Audio Overhaul Skyrim - Unique Uniques Patch.esp
254 FE 29 Audio Overhaul Skyrim - Unique Uniques & WACCF Patch.esp
254 FE 2a BDS - MM Patch.esp
254 FE 2b Unique Region Names - CRF Patch.esp
104 68 FarmhouseChimneysArthmoorVillagesMerged.esp
105 69 DeathIsHighlyOverrated.esp
254 FE 2c Landscape For Grass Mods - Arthmoor's Dragon Bridge PATCH.esp
254 FE 2d Landscape For Grass Mods -Provincial Courier PATCH.esp
254 FE 2e Landscape For Grass Mods Arthmoor's Shor's Stone PATCH.esp
254 FE 2f Helarchen Creek - No Snow Under the Roof.esp
106 6a Tel Mithryn Prison.esp
254 FE 30 Relighting Skyrim - Quaint Raven Rock Patch.esp
254 FE 31 NSUTR - USSEP Patch.esp
254 FE 32 Unique Region Names - Inigo Patch.esp
107 6b FarmhouseChimneysHelarchen+MaS.esp
254 FE 33 Landscape For Grass Mods - Arthmoor's Rorikstead PATCH.esp
254 FE 34 Unique Region Names - MAS Patch.esp
254 FE 35 Whistling Mine - No Snow Under the Roof.esp
254 FE 36 Forgotten City - USSEP Patch.esp
108 6c VioLens SE.esp
254 FE 37 Qw_BeyondSkyrimBruma_USSEP Hotfix Patch.esp
254 FE 38 Unique Region Names - Keld-Nar Patch.esp
254 FE 39 JKs Skyrim_skyBirds_Patch.esp
109 6d JKs Skyrim_Thunderchild_Patch.esp
254 FE 3a JKs Skyrim_Unique Region Names_Patch.esp
254 FE 3b Obsidian Weathers - RLS Patch.esp
254 FE 3c SkyBeRoads - USSEP Patch.esp
254 FE 3d Unique Region Names - BDS Patch.esp
254 FE 3e Unique Region Names - BS Bruma Patch.esp
254 FE 3f Unique Region Names - Helarchen Creek Patch.esp
254 FE 40 Unique Region Names - Dragon Bridge Patch.esp
254 FE 41 Inigo - USSEP Patch.esp
254 FE 42 JKs Skyrim_Birds Of Skyrim_Patch.esp
254 FE 43 JKs Skyrim_Farmhouse Chimneys_Patch.esp
254 FE 44 JKs Skyrim_Ivarstead_Holidays_Patch.esp
254 FE 45 JKs Skyrim_Obsidian Weathers_Patch.esp
254 FE 46 SLO Stone Walls - skyBirds Patch.esp
254 FE 47 Unique Region Names - BOYD Patch.esp
254 FE 48 Unique Region Names - Kynesgrove Patch.esp
254 FE 49 Unique Region Names - Provincial Courier Service Patch.esp
254 FE 4a Bent Pines.esp
254 FE 4b Better Dynamic Ash.esp
254 FE 4c Better Dynamic Snow - Correction Patch.esp
254 FE 4d Better Dynamic Snow - NSUTR & CRF Patch.esp
254 FE 4e BetterDynamicSnow_BEYOND_SKYRIM.esp
254 FE 4f BetterShapedWeaponsLW-XB.esp
254 FE 50 BlendedRoads.esp
254 FE 51 BlendedRoads - SMIM Patch.esp
110 6e Brigandage.esp
254 FE 52 BS Bruma - Majestic Mountains Patch.esp
111 6f BS Bruma - Undeath Patch.esp
254 FE 53 BS Bruma - VioLens Patch.esp
254 FE 54 Darkend - Hotfix.esp
254 FE 55 Darkwater Crossing - Inigo Patch.esp
254 FE 56 DivinePunishmentForArrowsToTheKnee.esp
254 FE 57 EBT - skyBirds Patch.esp
254 FE 58 EmbersHD - Campfire Patch.esp
254 FE 59 EmbersHD - Forges.esp
254 FE 5a EmbersHD - Lava Craters.esp
254 FE 5b Ultimate HD Fire Effects.esp
254 FE 5c EmbersHD - UHDFE Patch.esp
112 70 JRMoonpathBrumaPatch.esp
254 FE 5d ESO Skyshards - BSBruma.esp
254 FE 5e ESO Skyshards - Wyrmstooth.esp
254 FE 5f ETHEREAL CLOUDS.esp
113 71 Extended Encounters.esp
114 72 Extended UI.esp
254 FE 60 Fences of Skyrim.esp
115 73 Footprints.esp
254 FE 61 Frankly HD Stormcloaks and Guards.esp
116 74 FranklyHDImperialArmorsAndWeapons.esp
254 FE 62 frozenintime - Snow Textures.esp
254 FE 63 HD Road Signs.esp
117 75 PrvtI_HeavyArmory.esp
254 FE 64 Heavy Armory - USSEP Patch.esp
254 FE 65 High Poly Ferns.esp
254 FE 66 High Poly Project.esp
254 FE 67 Holidays - USSEP Patch.esp
254 FE 68 Holidays - USSEP & JKs Skyrim Patch.esp
254 FE 69 RDO - iAFT Patch.esp
254 FE 6a iAFT - USSEP Patch.esp
254 FE 6b RDO - CRF + USSEP Patch.esp
254 FE 6c iAFT - DLC Patch.esp
118 76 iHUD.esp
254 FE 6d Qw_ISC_USSEP Patch.esp
254 FE 6e Qw_WACCF_ISC Patch.esp
254 FE 6f Immersive Sounds - DLC Patch.esp
254 FE 70 Immersive Sounds - Enhanced Blood Patch.esp
254 FE 71 Immersive Sounds - Option - Classic RPG Healing.esp
254 FE 72 Immersive Sounds - Option - Demonic Draugr.esp
254 FE 73 Immersive Sounds - Option - Dungeon Ambiance.esp
254 FE 74 Immersive Sounds - Option - Firebolt Alternate.esp
254 FE 75 Immersive Sounds - Option - Sensible Storm Atronachs.esp
254 FE 76 Immersive Sounds - Option - Well-Mannered Wolves.esp
254 FE 77 Indistinguishable VANILLA Billboards.esp
254 FE 78 Inigo - CRF Patch.esp
254 FE 79 Inigo - RLS Patch.esp
254 FE 7a JRBrumaPatch.esp
254 FE 7b JRCRFPatch.esp
254 FE 7c JRDwarvenMudcrabPatch.esp
119 77 Lucien-MoonandStar-Patch.esp
120 78 Lucien-Moonpath-Patch.esp
121 79 LupineWerewolfPerkExpansion.esp
254 FE 7d MajesticMountains_LOD.esp
254 FE 7e MajesticMountains_SMIM.esp
254 FE 7f Mining Makes Noise.esp
122 7a mintylightningmod.esp
123 7b MoonAndStar_ImmersionPatch.esp
254 FE 80 Noble Skyrim.esp
254 FE 81 Noble Skyrim - SMIM Patch.esp
254 FE 82 Nordic Snow.esp
254 FE 83 Obsidian Weathers MCM.esp
254 FE 84 Obsidian_TS_Patch_Spectral.esp
254 FE 85 Obsidian_TS_AOS_Patch.esp
254 FE 86 Particle Patch - DIHO Patch.esp
254 FE 87 Particle Patch - Birds and Flocks Patch.esp
254 FE 88 Qw_RelightingSkyrim_CRF Patch.esp
254 FE 89 Particle Patch - Skyrim Sewers Patch.esp
254 FE 8a Particle Patch - Skyshards Patch.esp
254 FE 8b Particle Patch - Thunderchild Patch.esp
254 FE 8c Particle Patch - Wintersun Patch.esp
254 FE 8d PELTAPALOOZA.esp
254 FE 8e Perk Points at Skill Levels 50-75-100.esp
124 7c Potions.esp
254 FE 8f Potions Patch.esp
254 FE 90 Qw_AOS_USSEP Patch.esp
254 FE 91 Qw_BookCoversSkyrim_CRF Patch.esp
254 FE 92 RUSTIC SOULGEMS - Unsorted.esp
254 FE 93 Qw_RusticSoulgemsUnsorted_ISC Patch.esp
254 FE 94 Qw_WACCF_BSHeartland Patch.esp
254 FE 95 RaceMenu.esp
254 FE 96 RDO - Castle Volkihar Rebuilt Patch.esp
254 FE 97 RDO - iAFT & USSEP Patch.esp
254 FE 98 RDO - Serana Dialogue Edit Patch.esp
254 FE 99 Relighting Skyrim - Birds and Flocks Patch.esp
254 FE 9a Relighting Skyrim - Castle Volkihar Rebuilt Patch.esp
254 FE 9b Relighting Skyrim - Tel Mithryn Patch.esp
254 FE 9c RLS - Wintersun Patch.esp
254 FE 9d RUGNAROK.esp
254 FE 9e RUSTIC ARMOR AND WEAPONS.esp
254 FE 9f RUSTIC AZURA'S STAR.esp
254 FE a0 RUSTIC CLOTHING.esp
254 FE a1 RUSTIC DAEDRA.esp
254 FE a2 RUSTIC DEATH HOUND AND GARGOYLE.esp
254 FE a3 RUSTIC ELDERSCROLL.esp
254 FE a4 RUSTIC FROSTBITE SPIDER.esp
254 FE a5 RUSTIC SPRIGGAN.esp
254 FE a6 RUSTIC SPRIGGAN EFFECTS.esp
254 FE a7 RUSTIC WINDOWS.esp
254 FE a8 SkyHUD - iHUD Patch.esp
254 FE a9 Skyland.esp
254 FE aa Skyland - Blended Roads Patch.esp
254 FE ab Skyrim 3D Gildergreen.esp
254 FE ac Skyrim Realistic Overhaul - Part 1.esp
254 FE ad Skyrim Realistic Overhaul - Part 2.esp
254 FE ae Skyrim Realistic Overhaul - Part 3.esp
254 FE af Skyrim Realistic Overhaul - Update.esp
254 FE b0 SkyrimIsWindy.esp
254 FE b1 SkyrimIsWindy - EVT patch.esp
254 FE b2 SMIM-Bruma-Patch.esp
254 FE b3 Smooth Sky Mesh.esp
254 FE b4 Symphonies Of Skyrim.esp
254 FE b5 Symphonies of Skyrim - BS Bruma Patch.esp
254 FE b6 Symphonies of Skyrim - UHDAP Patch.esp
254 FE b7 Thief skills rebalance for Ordinator.esp
254 FE b8 Thunderchild - USSEP Patch.esp
254 FE b9 Thundering Shouts.esp
254 FE ba TravelRobes.esp
125 7d Tribunal Robes for SSE.esp
254 FE bb TrueStorms_MintyLightning_Patch.esp
254 FE bc Ultimate HD Candle Flames.esp
254 FE bd Unique Region Names - Darkwater Crossing Patch.esp
254 FE be Unique Region Names - Rorikstead Patch.esp
254 FE bf Unique Region Names - Tel Mithryn Prison Patch.esp
254 FE c0 Unique Region Names - Telengard Patch.esp
254 FE c1 Unlimited Bookshelves - AOS Patch.esp
254 FE c2 Unlimited Bookshelves - CRF Patch.esp
254 FE c3 Unlimited Bookshelves - iAFT Patch.esp
254 FE c4 Unlimited Bookshelves - ISC & WACCF Patch.esp
254 FE c5 Unlimited Bookshelves - ISC Patch.esp
254 FE c6 Unlimited Bookshelves - WACCF & AOS Patch.esp
254 FE c7 Unlimited Bookshelves - WACCF & Unique Uniques Patch.esp
254 FE c8 Unlimited Bookshelves - WACCF Patch.esp
254 FE c9 Unlimited Bookshelves - XxA_PxX Patch.esp
126 7e Visible Favorited Gear.esp
254 FE ca WACCF - Frankly HD Imperials Patch.esp
254 FE cb WACCF - iAFT Patch.esp
254 FE cc WACCF Heavy Armory Patch.esp
254 FE cd Warmonger Armory - CRF Patch.esp
254 FE ce Warmonger Armory - Tel Mithryn Prison Patch.esp
254 FE cf WGT.esp
254 FE d0 WheelsOfLull - Forgotten City - Bruma Patch.esp
254 FE d1 WheelsOfLull Patch - Assets.esp
254 FE d2 Wintersun - BCS Patch.esp
254 FE d3 Wintersun - USSEP Patch.esp
127 7f WondersofWeather.esp
254 FE d4 WyrmstoothThunderchildPatch.esp
254 FE d5 ZIA - CRF Patch.esp
254 FE d6 ZIA - ISC & WACCF Patch.esp
254 FE d7 ZIA - Unlimited Bookshelves & CRF Patch.esp
254 FE d8 ZIA - Unlimited Bookshelves & ISC & WACCF.esp
254 FE d9 ZIA - Unlimited Bookshelves & WACCF Patch.esp
254 FE da ZIA - Unlimited Bookshelves Patch.esp
254 FE db ZIA - WACCF & AOS Patch.esp
128 80 Imperious - Races of Skyrim.esp
129 81 Ordinator - Perks of Skyrim.esp
254 FE dc Unique Region Names - Ordinator Patch.esp
130 82 Apocalypse - Magic of Skyrim.esp
131 83 Apocalypse - Ordinator Compatibility Patch.esp
254 FE dd Ordinator - Beyond Skyrim Bruma Patch.esp
254 FE de Qw_Ordinator_AOS Patch.esp
132 84 Sacrosanct - Vampires of Skyrim.esp
133 85 Wildcat - Combat of Skyrim.esp
134 86 J42_ArmorRatingRedux.esp
135 87 Alternate Start - Live Another Life.esp
254 FE df Unique Region Names - Alternate Start Patch.esp
136 88 FarmhouseChimneysLAL+CRF.esp
254 FE e0 Landscape Fixes For Grass mods - Alternate start Locations.esp
254 FE e1 Particle Patch - Alternate Start Patch.esp
254 FE e2 RDO - Alternate Start Patch.esp
137 89 Open Cities Skyrim.esp
254 FE e3 Audio Overhaul Skyrim - Obsidian Weathers & OSC Patch.esp
254 FE e4 Audio Overhaul Skyrim - Open Cities Patch.esp
254 FE e5 Open Cities Skyrim - Holidays.esp
138 8a JKs Skyrim_Open Cities_Patch.esp
254 FE e6 OCS + Skyrim Sewers.esp
254 FE e7 JKs Skyrim_Open Cities_Holidays_Patch.esp
254 FE e8 Unique Region Names - OCS Patch.esp
254 FE e9 Unique Region Names - OCS & Skyrim Sewers Patch.esp
254 FE ea Unique Region Names - JK's Skyrim & OCS & Holidays.esp
254 FE eb JKs Skyrim_Open Cities_CRF_Patch.esp
254 FE ec Obsidian Weathers - OCS Patch.esp
254 FE ed Particle Patch - OCS Patch.esp
254 FE ee OCS + CRF.esp
254 FE ef OCS + MAS.esp
254 FE f0 Particle Patch - OCS & CRF Patch.esp
254 FE f1 Relighting Skyrim - OCS Patch.esp
254 FE f2 SMIM - Open Cities Patch.esp
139 8b RealisticWaterTwo.esp
254 FE f3 Unique Region Names - RWT Patch.esp
254 FE f4 RealisticWaterTwo - Waves.esp
254 FE f5 Unique Region Names - RWT Waves Patch.esp
254 FE f6 RealisticWaterTwo - Open Cities.esp
254 FE f7 JKs Skyrim_RWT_Patch.esp
254 FE f8 RealisticWaterTwo - Ashbound Patch.esp
254 FE f9 RealisticWaterTwo - Quaint Raven Rock Patch.esp
254 FE fa Unique Region Names - RWT & OCS Patch.esp
254 FE fb Unique Region Names - RWT & MAS Patch.esp
254 FE fc Final Patch.esp
254 FE fd Holidays - RWT Patch.esp
254 FE fe Particle Patch - RWT Patch.esp
254 FE ff RealisticWaterTwo - Beyond Skyrim Bruma.esp
254 FE 100 RealisticWaterTwo - Option - Extended Ambiance.esp
254 FE 101 RealisticWaterTwo - Telengard Patch.esp
254 FE 102 RealisticWaterTwo - Wyrmstooth.esp
254 FE 103 RealisticWaterTwo - Waves - Wyrmstooth.esp
254 FE 104 Unique Region Names - CRF & RWT Patch.esp
254 FE 105 Unique Region Names - RWT & Ashbound Patch.esp
254 FE 106 Sum_WACCF_Patch.esp
140 8c Bashed Patch, 0.esp
254 FE 107 Modern Brawl Bug Fix.esp
Some initial thoughts on this:
Trying to load plugins as close as possible to their masters seems like a generally good idea, it's a more specific expression of the "load plugins as early as possible" idea. There are plenty of exceptions, e.g. map mods, but LOOT already handles such cases through groups and load after metadata.
I'm not sure why this idea would need to exclude ESMs or a subset of them. Could you elaborate? I'd prefer a solution that doesn't require special-casing.
I don't think it's useful to try to distinguish patches from other plugins based on the number of masters they have: I've come across plenty of patches with only one non-official master (even a few with none) and plenty of non-patches with more than one non-official master. I can see some utility in treating patches differently, but I doubt the identification heuristic would be accurate enough to be worth it.
As for methodology: how do you see the close-to-masters constraint fitting in with the existing constraints, i.e. which should it take priority over, which should override it, which does it sit equally with? See https://loot-api.readthedocs.io/en/latest/api/sorting.html for an overview of the current process, if that helps.
That's all for now, because I have bugs to fix.
Well, I don't see any point in counting the official masters, given that all mods can have all of them or just Skyrim.esm, and how many they have doesn't seem relevant to where they should be loaded.
USSEP is also a mod that lots and lots of other mods can have as a dependency that doesn't seem relevant to positioning. Let's say RW2 had it as a dependency just because it used some fixed asset in it... would that mean it should load higher? I don't think so. I see USSEP as pretty much an extension of the vanilla masters for these purposes... just as I would see YUP as an extension of the official FNV masters.
The idea of excluding all ESMs was in fact just a way to see if the above could be accomplished without special-casing.
If there's general agreement that this should work for all other masters and there's no reason to treat patches differently, which I agree with, I don't see a point in arguing for the idea of using number of masters to identify them.
As for the constraints, specific mod A must come after some other mod B rules should definitely take precedence... and late loading group is pretty important... but beyond that I can't see any other group constraint that seems more important.
Actually, it just occurred to me - I may have WAY overthought the methodology. Presuming LOOT is already smart enough to not place a plugin above its master, and I believe it already is.... can't we get the entire desired behavior by just treating any plugin with a non-vanilla (and maybe non-fixpack) master as an Early Loader?