raziel23x / skyrim-plugin-decoding-project

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

Deleting a base object does not remove records that reference it. #145

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Load a mod that defines a new base record.
2. Delete that record from the mod.
3. Note that every reference to it throughout the mod is now invalid because 
they are not removed.

What is the expected output?
Invalidated records should be deleted when their base object is deleted. The CK 
performs this automatically when a base object is deleted.

What do you see instead?
Invalid references are left behind, causing errors.

What version of the product are you using? On what operating system?
TES5Edit 3.0.31 revision 1403.

Please provide any additional information below.

Original issue reported on code.google.com by arthmoor on 20 Sep 2013 at 8:13

GoogleCodeExporter commented 9 years ago
Are you sure this is a good idea? Sure CK does it, but it has a different 
purpose compared to xEdit.
For example if I want to replace a base object for references (lets say replace 
STAT with TREE) I'll need to create a new object, find and replace in CK, 
delete the old one. And if there are thousands of refs, and also references in, 
for example, script properties, I doubt that even CK can handle it correctly.
While in TES5Edit I simply delete old base object and create a new one with the 
same FormID. Done. Fast and sweet.
I can write a script for base object deletion which will wipe all references 
too and include it in xEdit distribution, I think it is a better way.

Original comment by zila...@gmail.com on 20 Sep 2013 at 9:25

GoogleCodeExporter commented 9 years ago
There is also a problem of deleting refs that are referenced themselves in 
script properties, AI packages, conditions, etc. How does CK handle it? Does it 
clean up those links too?

Original comment by zila...@gmail.com on 20 Sep 2013 at 9:29

GoogleCodeExporter commented 9 years ago
Perhaps make it possible to choose whether or not you want to remove those 
records when deleting a base object?

Original comment by arthmoor on 21 Sep 2013 at 7:06

GoogleCodeExporter commented 9 years ago
Possible, but what about other dependencies like leveled lists, conditions, 
containers, inventories, packages, scripts, etc. Base objects can be referenced 
by anything, and covering all cases is out of xEdit scope, it is specific for 
each game.
Or you talking only about placed references in cells?

Original comment by zila...@gmail.com on 21 Sep 2013 at 8:25

GoogleCodeExporter commented 9 years ago
No, I was referring to all uses of a base record. Not much point in getting rid 
of them if you don't include all the ways they can be accessed.

Original comment by arthmoor on 21 Sep 2013 at 9:09

GoogleCodeExporter commented 9 years ago
One complication I can think of for Geck is that the source code of scripts 
would not be updated even if all object dependencies were to be updated.
If you add this feature, please make it optional.
When I remove a base object in xEdit, it's for when I have another object 
ready, and change it's formID to the removed object, so the references are 
updated and not broken. 

Original comment by rickerhk...@gmail.com on 22 Sep 2013 at 5:20

GoogleCodeExporter commented 9 years ago
Removing all the references is specific for each game, so I'll probably write a 
script for that. There are some (rarely or almost never used) code pieces for 
Oblivion in xEdit now left from Elminster, I don't want to add to that ballast 
:)

Original comment by zila...@gmail.com on 22 Sep 2013 at 5:37