ThreeTen22 / skyrim-plugin-decoding-project

Automatically exported from code.google.com/p/skyrim-plugin-decoding-project
1 stars 0 forks source link

FNVEdit incorrectly saves plugins with duplicated top level group (as DeadMoney or HonestHearts). #177

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Open FNVEdit, select just DeadMoney.esm, click "ok".
2. Right click, select "Apply Filter for Cleaning". Wait for the filter to 
apply.
3. Right click on "DeadMoney.esm", select "Remove ITM".
3. Save the cleaned master.
4. Launch the game.

What is the expected output?
The cleaned esm/esp is still functional and do not cause the game to crash.

What do you see instead?
Fallout New Vegas crashes on launch. Replacing the "cleaned" master with the 
original, enables the game to run again.

What version of the product are you using? On what operating system?
r1254

Please provide any additional information below.
I have attached the log from cleaning. As you could see there, it tags multiple 
forms from DeadMoney.esm as ITMs and it deletes them. They can't be ITM, as 
they are introduced only by this esm (FormID 01XXXXXX). They may be empty, but 
certainly not ITMs.

Original issue reported on code.google.com by clampa...@gmail.com on 8 Dec 2014 at 11:18

Attachments:

GoogleCodeExporter commented 9 years ago
That's r1854 please ? :)

I don't have DeadMoney here to look at, but the temporary group in the cell are 
most likely removed because they are empty. That requires all references in 
those cells to be persistent, which is odd and not what I remember.

Original comment by HuguesLe...@gmail.com on 8 Dec 2014 at 12:28

GoogleCodeExporter commented 9 years ago
It turns out that the problem is a bit deeper than just tagging the non-ITM 
forms as ITM.

I tried just marking one form from the "DeadMoney.esm" and "HonestHearts.esm" 
as modified and saved afterwards. The two DLC masters will be broken by that 
re-save, without essentially modifying any content, except for the internal 
cleaning and merging of the GROUP forms performed by FNVEdit.

However, I was able to successfully clean the rest of DLC masters 
(OldWorldBlues.esm, LonesomeRoad.esm, GunRunnersArsenal.esm) and the game did 
not crash at startup.

Original comment by clampa...@gmail.com on 8 Dec 2014 at 12:48

GoogleCodeExporter commented 9 years ago
Sorry for the initial mistake, the version used is r1854 indeed.

Original comment by clampa...@gmail.com on 8 Dec 2014 at 12:49

GoogleCodeExporter commented 9 years ago
Concerning the cells from Dead Money they have indeed an empty temporary area 
and that's all, so based on xEdit current rules for cleaning, they are fair 
game to delete.

Original comment by HuguesLe...@gmail.com on 8 Dec 2014 at 8:47

GoogleCodeExporter commented 9 years ago
On the other hand I can confirm that simply editing the author of DeadMoney.esm 
and saving does produce a CTD on a 100% vanilla game. A fully cleaned version 
did not CTD but suffered from an infinite loading loop.

Original comment by HuguesLe...@gmail.com on 8 Dec 2014 at 8:56

GoogleCodeExporter commented 9 years ago
The first difference I see in a "saved" DeadMoney is that the first ALCH group 
(containing only 2 entries) seems to be missingfrom the save.

Also DeadMoney and HonestHearts are the two DLC with duplicated top level group.

Lastly if I activate the DeadMoney plugin in the GECK (using GeckPU) and save 
it without any modification, then modify that copy in FNVEdit, I don't have 
issue to load it then in GECK or in Game.
It looks to be an issue with merging groups.

Original comment by HuguesLe...@gmail.com on 8 Dec 2014 at 10:10

GoogleCodeExporter commented 9 years ago

Original comment by HuguesLe...@gmail.com on 8 Dec 2014 at 10:15

GoogleCodeExporter commented 9 years ago
Unchecking "Clamp FormIDs" option removes the issue!

But there is still another issue as Region 01013DA2 ends up with records from 
the non existent file 03 (original record used proper file 01 record).

Original comment by HuguesLe...@gmail.com on 8 Dec 2014 at 11:26

GoogleCodeExporter commented 9 years ago
It's not that easy. Simple edit and save works, but not cleaning.

Also the subRecords that had a bad index 03 I mentioned before are stripped 
from the save by the GECK when saving the ESM 

Original comment by HuguesLe...@gmail.com on 8 Dec 2014 at 11:42

GoogleCodeExporter commented 9 years ago
Issue is in TwbFile.Scan due, I think, to the optimization of speed/memory.

Previously (3.0.32), when scanning the file, the data for the group record was 
not already allocated in memory so changing the list of elements and setting 
modified to true was enough to rebuild the group's members array later on.
Now this array is allocated already so it needs to be flagged as 
InvalidateStorage, otherwise, if none of the elements gets changed later on, 
the initial version of the array is written back to disk.

Original comment by HuguesLe...@gmail.com on 9 Dec 2014 at 4:08

GoogleCodeExporter commented 9 years ago
Should be corrected by r1859

Original comment by HuguesLe...@gmail.com on 9 Dec 2014 at 11:57

GoogleCodeExporter commented 9 years ago
Thank you very much for the quick resolution. Is there a binary distro of r1859 
available? I had started putting together a new FoNV play through load order 
and I use FNVEdit extensively to soften the rough edges / merge the mods I am 
using.
Thus I can get back with feedback on any issues I encounter.

Original comment by clampa...@gmail.com on 10 Dec 2014 at 6:27

GoogleCodeExporter commented 9 years ago
Can you confirm it worked for you ?

Original comment by HuguesLe...@gmail.com on 15 Dec 2014 at 12:47

GoogleCodeExporter commented 9 years ago
Hello,
I can confirm that I have cleaned both masters and I was able to enter the game 
and start a new game. I haven't played Dead Money nor Honest Hearts, I am still 
at the "preparing" stage. It will take a week or two until I play the game to 
give play-feedback.

Original comment by clampa...@gmail.com on 15 Dec 2014 at 6:27