Jump to content

[WIP] Mator Smash - The Conflict Resolution Revolution


matortheeternal

Recommended Posts

Yeah, I get how that works now - I learned that lesson from you earlier in this thread when trying, unsuccessfully, to forward vanilla acoustic records from LIAT (lively inns and taverns) into the Smash patch. (I still wish Smash offered that level of precise user control btw, but that's an entirely different discussion.)

 

This is different though - all the records listed in my error report contain custom settings from their respective mods, all of which conflict/overwrite the vanilla records contained in their masters.

 

I should mention again - even though the error list may appear long, there are relatively few errors compared to the large number of records being correctly forwarded to the smash patch by each of these mods.

 

I'll test your suggestion later to add XCAS & XCIM nodes to all the plugins for which I've applied smash settings.

But if that can change the smash outcome, can you help me understand why that would be the case?

 

I mean, my ELFX Enhancer, for example, has 6 masters: skyrim, update, dragonborn, dawnguard, ELFX, and College of Winterhold (the latter because I merged the College's ELFX patch with the Enhancer).

In order to trigger Smash to forward a record, isn't it enough that a conflict/overwrite exists between ELFXEnhancer and any single one of those masters? How does adding nodes to non-master plugins containing vanilla XCAS/XCLL/etc. records assist the smash process? And why would that be necessary for only a handful of records when the vast majority of others are already forwarding correctly without such an adjustment?

Edited by vlainstrike
Link to comment
Share on other sites

  • Replies 196
  • Created
  • Last Reply

Top Posters In This Topic

 

Quick question (hopefully): What smash settings should I use for Scarcity? Scarcity's description says to include it in a bashed patch but without any bash tags. Obviously, if I don't put tags and don't have any other settings for Scarcity's modules in creating a Smashed patch nothing will happen, it'll get skipped. I'm trying Smash.all, because I figure what could it hurt, but not sure if there's a more nuanced solution (I don't use smash.all for anything else).

 

I'm not sure. Does scarcity have a dynamic patcher/is it placing items via a papyrus script? I'd have to see the plugin myself to make a suggestion. I'll take a look...

 

So Scarcity modifies some globals, adds some new globals, and modifies a bunch of leveled lists. It applies globals to leveled lists and changes LVLD - Chance None.

 

Any smash setting which processes Leveled Lists and globals should be sufficient, so Smash.All should work. The minimum setting would be this:

 

Scarcity.json (right-click, save link as, put in Smash's settings\Skyrim folder)

 

 

{
    "records" : "GLOB,LVLI",
    "description" : "Smash setting for Scarcity - Less Loot Mod.",
    "tree" : {
        "records" : [{
                "t" : 1,
                "p" : 1,
                "n" : "GLOB - Global",
                "c" : [{
                        "t" : 2,
                        "n" : "EDID - Editor ID"
                    }, {
                        "t" : 3,
                        "n" : "FNAM - Type"
                    }, {
                        "t" : 5,
                        "p" : 1,
                        "n" : "FLTV - Value"
                    }
                ]
            }, {
                "t" : 1,
                "p" : 1,
                "n" : "LVLI - Leveled Item",
                "c" : [{
                        "t" : 2,
                        "n" : "EDID - Editor ID"
                    }, {
                        "t" : 6,
                        "n" : "OBND - Object Bounds",
                        "c" : [{
                                "t" : 3,
                                "n" : "X1"
                            }, {
                                "t" : 3,
                                "n" : "Y1"
                            }, {
                                "t" : 3,
                                "n" : "Z1"
                            }, {
                                "t" : 3,
                                "n" : "X2"
                            }, {
                                "t" : 3,
                                "n" : "Y2"
                            }, {
                                "t" : 3,
                                "n" : "Z2"
                            }
                        ]
                    }, {
                        "t" : 3,
                        "p" : 1,
                        "n" : "LVLD - Chance None"
                    }, {
                        "t" : 3,
                        "n" : "LVLF - Flags"
                    }, {
                        "t" : 3,
                        "p" : 1,
                        "n" : "LVLG - Global"
                    }, {
                        "t" : 3,
                        "n" : "LLCT - Count"
                    }, {
                        "t" : 8,
                        "n" : "Leveled List Entries",
                        "c" : [{
                                "t" : 6,
                                "n" : "Leveled List Entry",
                                "c" : [{
                                        "t" : 6,
                                        "n" : "LVLO - Base Data",
                                        "c" : [{
                                                "t" : 3,
                                                "n" : "Level"
                                            }, {
                                                "t" : 11,
                                                "n" : "Unknown"
                                            }, {
                                                "t" : 3,
                                                "n" : "Reference"
                                            }, {
                                                "t" : 3,
                                                "n" : "Count"
                                            }
                                        ]
                                    }, {
                                        "t" : 6,
                                        "n" : "COED - Extra Data",
                                        "c" : [{
                                                "t" : 3,
                                                "n" : "Owner"
                                            }, {
                                                "t" : 11,
                                                "n" : "Unused"
                                            }, {
                                                "t" : 3,
                                                "n" : "Global Variable"
                                            }, {
                                                "t" : 3,
                                                "n" : "Required Rank"
                                            }, {
                                                "t" : 5,
                                                "n" : "Item Condition"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "name" : "Scarcity",
    "hash" : "FF5E4FB6",
    "color" : 32768
}

Truncated version:

{
    "records" : "GLOB,LVLI",
    "description" : "Smash setting for Scarcity - Less Loot Mod.",
    "tree" : {
        "records" : [{
                "t" : 1,
                "p" : 1,
                "n" : "GLOB - Global",
                "c" : [{
                        "t" : 5,
                        "p" : 1,
                        "n" : "FLTV - Value"
                    }
                ]
            }, {
                "t" : 1,
                "p" : 1,
                "n" : "LVLI - Leveled Item",
                "c" : [{
                        "t" : 3,
                        "p" : 1,
                        "n" : "LVLD - Chance None"
                    }, {
                        "t" : 3,
                        "p" : 1,
                        "n" : "LVLG - Global"
                    }
                ]
            }
        ]
    },
    "name" : "Scarcity",
    "hash" : "FF5E4FB6",
    "color" : 32768
}

 

 

 

 

Excellent! Thank you. I have another thing where some records aren't being forwarded as expected but I'll do a new post for that.

Link to comment
Share on other sites

  • 2 weeks later...

Just saw Jawz mention this in his Relighting Skyrim SSE mod page...WOW! Thanks! I love it :)

 

I assume that when MS says plugins have been merged into a MS patch that those are esps that only change records. Since those record changes being forwarded into the MS patch are the esps are longer needed. Correct?

Link to comment
Share on other sites

When MS says it has merged plugins, it's completely unnecessary to use that particular plugin.

But you are wrong with the assumption that any records that has been forwarded from a set of plugins is unnecessary, many plugins get records forwarded into the smash patched .esp file. But they are still needed, as they are made masters for the smashed patch.

 

There will be a prompt informing you if which plugins have been made obsolete by the smash patched, in the progress window that pops up when you start building the smashed patch.

Edited by --JawZ--
Link to comment
Share on other sites

  • 2 weeks later...

Saw it mentioned to skip the official DLC esps but want to mention that Dawnguard adds an eclipse wind sound to most Regions that very few mods forward. I had to create a tag that smashes the sounds part of the region records and apply that to Dawnguard.esm for it to forward them since neither Sounds of Skyrim nor NVLA carry them forward (since Dawnguard isn't a master for either).

 

Also thanks so much for this tool.

Link to comment
Share on other sites

  • 2 weeks later...

I have a plugin that contains fixes for the vanilla game. If there are no plugins coming after it (overriding plugins) that change the same value I want the value of the plugin that contains the fix to win out. If I can get this done the smashed patch will be almost 100% correct. There are also some cases where the fix plugin adds some extra effects not existing in any other plugin, these should then be added to the smashed patch as well. How can I get this to work?

 

Also see the attached image.

Link to comment
Share on other sites

I have a plugin that contains fixes for the vanilla game. If there are no plugins coming after it (overriding plugins) that change the same value I want the value of the plugin that contains the fix to win out. If I can get this done the smashed patch will be almost 100% correct. There are also some cases where the fix plugin adds some extra effects not existing in any other plugin, these should then be added to the smashed patch as well. How can I get this to work?

 

Also see the attached image.

 

The Effects array is unsorted, which causes the autoset attributes to treat it as a single entity (meaning the last changed version of the subrecord is what's used). For your desired outcome you want to merge all copies of the subrecord, so you want to disable "Treat as Single Entity" on that node in the smash setting you're using.

 

Like this:

 

http://puu.sh/v4UOE.png

 

Note that while this may cause that value to be merged, it may introduce duplication of Effects. There is a reason it's defaulted to treat as single entity.

Link to comment
Share on other sites

 

I have a plugin that contains fixes for the vanilla game. If there are no plugins coming after it (overriding plugins) that change the same value I want the value of the plugin that contains the fix to win out. If I can get this done the smashed patch will be almost 100% correct. There are also some cases where the fix plugin adds some extra effects not existing in any other plugin, these should then be added to the smashed patch as well. How can I get this to work?

 

Also see the attached image.

 

The Effects array is unsorted, which causes the autoset attributes to treat it as a single entity (meaning the last changed version of the subrecord is what's used). For your desired outcome you want to merge all copies of the subrecord, so you want to disable "Treat as Single Entity" on that node in the smash setting you're using.

 

Like this:

 

...

 

Note that while this may cause that value to be merged, it may introduce duplication of Effects. There is a reason it's defaulted to treat as single entity.

 

 

Thanks. I finally understand how "Treat as single entity" should be used. Testing it out right now. I still have some questions.

  1. Did you add all those smash settings for the bash tags yourself or is there a way to get them automatically, and
  2. How can I do what I showed inside the image I included in my previous post?
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...