Jump to content

[WIP] Mator Smash


Mator

Recommended Posts

Mator Smash has been updated to v0.0.5.0.

You can download the new version here.

 

v0.0.5.0

- Added code so you can now toggle multiple nodes in the tree using the space bar.

- Fixed Treat As Single Entity never being triggered because children nodes were always disabled and couldn't be toggle without removing the flag.

- Fixed chain nodes linking nodes at different levels, which also led to access violations when trying to remove the links.

- Failed smashed patch status now retains after smashing completes.

- Smashing is now cancelable.

- Now storing element definition type information in setting trees.  NOTE: Elements in old setting trees will have the "Unknown" type.  You'll need to rebuild your settings to get type information.

- Made prune nodes option more user friendly and added an auto-prune option to the popup menu for fast and simple pruning.
- Fixed bug with deleting a smash setting not removing it from disk.  They now get sent to the recycle bin when deleted.

- Fixed issue with processing records when they were set to not be processed in the setting (which created ITPOs).

- Distinguishes between arrays better.  Unsorted dtArray elements will now be treated as arrays, as intended.

- Removes ITPOs after smashing.

Link to comment
Share on other sites

Problem when attempting to to run version 0.0.7

 

wpUaCih.jpg

 

Version 0.0.6 work without problems.

 

eh... that's odd.

 

EDIT: Should have fixed in just a moment.

Link to comment
Share on other sites

Executable is smaller by ~1/3 (compared to the previous version) so version 0.0.7 is building with Runtime packages ?

 

EDIT

Thank you also for video tutorial Well Done.

Link to comment
Share on other sites

Starts without a problem now, thanks for your prompt response.

 

Does it have any significance?

BLMNha5.jpg

 

No, the backend for smash isn't built yet.

Link to comment
Share on other sites

  • 3 weeks later...

Thank you for the video, I wasn't really sure which direction to go with this stand alone until I watched it.  I did have a little issue with the patch I was trying to make.  Game settings don't seem to get smashed at all when making a patch using these smash settings.  Is there something wrong with how I have them set? 

 

I also get a pop up every time (100%) I exit Mator Smash that says; Runtime error 217 at 0057C2F0.  The program doesn't crash or anything while I'm using it, or after I close it (Mator Smash has stopped responding/working, etc).  Just that runtime box.

Link to comment
Share on other sites

There is nothing to patch with GMST afaik, they're a single entry. Thus, Smash would just copy the winning override. Except if trying to smash the editorID as well, but it wouldn't make sense.

Link to comment
Share on other sites

Kesta is right.  There's no reason to smash game settings.  The rule of one is sufficient for handling them.

 

Runtime error is probably because it's an older version and there has been a lot of work done lately on cleaning up smash.  I remember getting it a couple dozen dev builds ago, but I think it's fixed now.  It wasn't bad anyways.

Link to comment
Share on other sites

There is nothing to patch with GMST afaik, they're a single entry. Thus, Smash would just copy the winning override. Except if trying to smash the editorID as well, but it wouldn't make sense.

 

 

Kesta is right.  There's no reason to smash game settings.  The rule of one is sufficient for handling them.

 

Runtime error is probably because it's an older version and there has been a lot of work done lately on cleaning up smash.  I remember getting it a couple dozen dev builds ago, but I think it's fixed now.  It wasn't bad anyways.

 

Makes perfect sense.  I'm not sure why I thought it would just take multiple GMST records (not fall dmg, sandbox cylinder, etc) and put them all into one esp.  I've been using Merge Plugins Standalone a lot lately so maybe it's just burned into my brain.  Thanks for clearing that up.

Link to comment
Share on other sites

Makes perfect sense.  I'm not sure why I thought it would just take multiple GMST records (not fall dmg, sandbox cylinder, etc) and put them all into one esp.  I've been using Merge Plugins Standalone a lot lately so maybe it's just burned into my brain.  Thanks for clearing that up.

 

Sure thing Nate.  :)

Link to comment
Share on other sites

Thanks for your effort building this!

(And all your other tools. They make a huge difference.)

 

I'm doing some simple tests and get a consistent error.
I suspect I'm doing something very dumb, but I can't figure out what it is. 
I didn't find any reference to the same error in this forum.
"Failed to patch c, Floating point division by zero"
I am using MO, and I believe I've set up Mator Smash appropriately.
I've tried a wide variety of plugins, and a minimal load order. The plugin content doesn't seem to matter.

 

My apologies if this has been covered elsewhere and I didn't find it.

 

Full log for one sample run:

 

Building patch: c

Patch is using plugin: c.esp
Adding masters...
Masters added:
Skyrim.esm
RGMsAlchemistsCompendium.esp
TTYM - Think to Yourself Messages.esp

Actual masters:
Skyrim.esm
RGMsAlchemistsCompendium.esp
TTYM - Think to Yourself Messages.esp

Done adding masters

Processing files
Processing RGMsAlchemistsCompendium.esp
Processing TTYM - Think to Yourself Messages.esp

Smashing records
Failed to patch c, Floating point division by zero


All done!

Link to comment
Share on other sites

Thanks for your effort building this!

(And all your other tools. They make a huge difference.)

 

I'm doing some simple tests and get a consistent error.

I suspect I'm doing something very dumb, but I can't figure out what it is. 

I didn't find any reference to the same error in this forum.

"Failed to patch c, Floating point division by zero"

I am using MO, and I believe I've set up Mator Smash appropriately.

I've tried a wide variety of plugins, and a minimal load order. The plugin content doesn't seem to matter.

 

My apologies if this has been covered elsewhere and I didn't find it.

 

Full log for one sample run:

 

Building patch: c

Patch is using plugin: c.esp

Adding masters...

Masters added:

Skyrim.esm

RGMsAlchemistsCompendium.esp

TTYM - Think to Yourself Messages.esp

Actual masters:

Skyrim.esm

RGMsAlchemistsCompendium.esp

TTYM - Think to Yourself Messages.esp

Done adding masters

Processing files

Processing RGMsAlchemistsCompendium.esp

Processing TTYM - Think to Yourself Messages.esp

Smashing records

Failed to patch c, Floating point division by zero

All done!

 

I've kept at it and made a little progress.

I don't know specifically why I get that error, but in general, it's probably because I'm picking literally random plugins and the 'Automatic' setting. 

Like I said before, I was probably doing something dumb.

I've since picked a couple very small plugins with only weather records, made a custom setting that only merges the fog attributes, and I'm getting proper results.

Now I'm excited. :)

Link to comment
Share on other sites

I've kept at it and made a little progress.

I don't know specifically why I get that error, but in general, it's probably because I'm picking literally random plugins and the 'Automatic' setting. 

Like I said before, I was probably doing something dumb.

I've since picked a couple very small plugins with only weather records, made a custom setting that only merges the fog attributes, and I'm getting proper results.

Now I'm excited. :)

 

It was most likely a bug that was fixed in recent development, but I can try those exact plugins later on to make sure.

 

We're still in alpha, so there's a way to go still.  :)

Link to comment
Share on other sites

I've kept at it and made a little progress.

I don't know specifically why I get that error, but in general, it's probably because I'm picking literally random plugins and the 'Automatic' setting. 

Like I said before, I was probably doing something dumb.

I've since picked a couple very small plugins with only weather records, made a custom setting that only merges the fog attributes, and I'm getting proper results.

Now I'm excited. :)

 

 

It was most likely a bug that was fixed in recent development, but I can try those exact plugins later on to make sure.

 

We're still in alpha, so there's a way to go still.  :)

 

For what it's worth, I'm able to consistently duplicate this error message as well.  What's causing it (for me anyway) was not realizing I only had one esp assigned to the patch I was trying to build.  I had plenty of esps assigned to various smash setting, but having only 1 esp set to a patch will give you this error when trying to build the patch.

Link to comment
Share on other sites

For what it's worth, I'm able to consistently duplicate this error message as well.  What's causing it (for me anyway) was not realizing I only had one esp assigned to the patch I was trying to build.  I had plenty of esps assigned to various smash setting, but having only 1 esp set to a patch will give you this error when trying to build the patch.

 

Ah, I should not allow people to have build smashed patches with 1 or fewer ESPs.  Doesn't make sense to patch a single ESP anyways.

 

The error makes complete sense.  It's probably getting the number of plugins in the smashed patch, subtracting one, and dividing somewhere.  So with 1 plugin the result is division by 0.

Link to comment
Share on other sites

I have 0 esps to be patched, and I want them done now. :P

 

Unfortunately that would take infinite time, so you'll have to wait until the heat death of the universe.

 

Good day.

Link to comment
Share on other sites

  • 2 weeks later...

I can't extract the Archive of 0.0.7 after dowloading, theres nothing wrong with my 7-Zip and ALZip reports an unexpected end to the archive, suggesting the file is corrupted.

Can anyone confirm this.

 

{Edit} Ignore this, apparently my firefox is finishing the dowloads content, but never closing them out. not investigated why yet, posting that the problem was at my end came first.

Link to comment
Share on other sites

I'm using firefox myself and it download to my portable drive smoothly.  I usually know when the download is done when the blue down arrow flashes.

Link to comment
Share on other sites


I think I may have found a small bug, or I'm making another silly mistake. I tried to isolate it a little bit and wrote it up. I hope it helps.

 

When trying to merge Faction relationships between the unofficial patch and 'Watchtowers Reborn' (69290), mator smash mostly does the right thing. In the bandit faction, the two new relationships added by USLEEP, and the one added by watchtowers are all added to the smash patch. 

 

The problem is when mator smash tries to carry forward a change to the vanilla khajiit relationship. It seems to be carrying it forward to a different vanilla relationship (bandit ally). So, the khajiit relationship loses the downgrade from friend to nuetral from USLEEP, and the bandit ally relationship is incorrectly downgraded from ally to nuetral. 

 

Screenshots:


 

EDIT: It just occurred to me that the mator smash log might be useful. Duh. I added it to the dropbox folder.

Link to comment
Share on other sites

 

I think I may have found a small bug, or I'm making another silly mistake. I tried to isolate it a little bit and wrote it up. I hope it helps.
 
When trying to merge Faction relationships between the unofficial patch and 'Watchtowers Reborn' (69290), mator smash mostly does the right thing. In the bandit faction, the two new relationships added by USLEEP, and the one added by watchtowers are all added to the smash patch. 
 
The problem is when mator smash tries to carry forward a change to the vanilla khajiit relationship. It seems to be carrying it forward to a different vanilla relationship (bandit ally). So, the khajiit relationship loses the downgrade from friend to nuetral from USLEEP, and the bandit ally relationship is incorrectly downgraded from ally to nuetral. 
 
Screenshots:
 
EDIT: It just occurred to me that the mator smash log might be useful. Duh. I added it to the dropbox folder.

 

 

Thanks, this is very informative.

 

Unfortunately the smash log won't be very useful unless a bunch of debug options are enabled.  EDIT: Which you actually did, wow, awesome.

 

Right now I'm really not certain what's happening, but I can probably figure it out based on what you've provided.  Thank you!

 

EDIT 2: It appears that destination element determination is wrong.  The index is 1 short of what it should be.  I think just putting +1 in the relevant part of the code should fix the issue.

 

I figured this out thanks to the log with all the debug options on.  I noticed the following:

 

> Traversing element FACT \ Relations \ XNAM - Relation with key: 000E0CD9

> Source Element: BanditAllyFaction "Bandit Ally Faction" [FACT:000E0CD9];0;Ally

> Destination Element: dunFrostmereCryptEisaFaction [FACT:000D0025];0;Enemy

 

and

 

> Traversing element FACT \ Relations \ XNAM - Relation with key: 000EB091

> Source Element: KhajiitCaravanFaction [FACT:000EB091];0;Neutral

> Destination Element: BanditAllyFaction "Bandit Ally Faction" [FACT:000E0CD9];0;Ally

 

and then

 

> Found differing values: Neutral, Friend

 

Looking at the array in the screenshot of TES5Edit I noticed the order of the element was:

 

...

dunFrostmereCryptEisaFaction

BanditAllyFaction

KhajiitCaravanFaction

dunLinweFaction

...

So it became clear to me that smash was setting the value to the wrong element, though the comparison appears to be using the right element.

 

Without your extreme thoroughness I would not have been able to figure this out so quickly, thank you!

 

 

EDIT 3: Unfortunately it may not be as easy as adding 1 to the destination index, because that would probably break smash in other circumstances.  Because this is a sorted array I think it may be more correct to correct indexes as the smashing occurs.  It's possible that further up this array an item was added which shifted all the indexes below it.  No matter what it seems that the array representation that is stored at the beginning of the MergeArray procedure becomes incorrect at some point, the question is merely a matter of when.

 

EDIT 4: As I hypothesized, there was a faction added to the array further up that made the indices off.

 

me0VG.png

 

Now that I know this I can look at the code again and figure out why the destination array representation wasn't updated properly to take this new item into account.

 

EDIT 5: As expected, it is indeed because I didn't take the fact that the array is sorted into account when adding new elements in smash's internal representation of the array.  https://github.com/matortheeternal/smash/blob/master/frontend/msAlgorithm.pas#L258-L259 <-- This code will have to be altered to fix the problem.

 

 

-Mator

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...