Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit CopyReferencedAsOverrides_CustomRecursive;
- procedure UpdateReferences(e: IInterface; ModLoadOrder: integer);
- var
- ref,rref : IInterface;
- i : integer;
- begin
- ref := LinksTo(e);
- if Assigned(ref) then begin
- if (GetLoadOrder(GetFile(ref)) <> ModLoadOrder) and (GetLoadOrder(GetFile(ref)) <> 0) then begin
- i := GetLoadOrderFormID(ref);
- i := (i and $FFFFFF) or (ModLoadOrder shl 24);
- try
- //AddMessage('Updating ref: ' + Path(e) + ' \ ' + GetEditValue(e));
- SetEditValue(e, IntToHex(i, 8));
- except
- on E: Exception do begin
- try
- //AddMessage('Copying ref as override: ' + GetEditValue(ref));
- rref := wbCopyElementToFile(ref, FileByLoadOrder(ModLoadOrder), False, True); // copy as override
- if CanContainFormIDs(rref) then
- for i := ElementCount(rref) downto 0 do
- UpdateReferences(ElementByIndex(rref, i), ModLoadOrder);
- except
- on E: Exception do begin
- AddMessage('Failed to copy: ' + FullPath(ref));
- end
- end;
- end
- end;
- end;
- end;
- if CanContainFormIDs(e) then
- for i := ElementCount(e) downto 0 do
- UpdateReferences(ElementByIndex(e, i), ModLoadOrder);
- end;
- function Process(e: IInterface): integer;
- var
- i, fid: integer;
- begin
- i := GetLoadOrder(GetFile(e));
- UpdateReferences(e, i);
- // not an override
- //if IsMaster(e) then
- //Exit;
- //AddMessage('Override to new record: ' + Name(e));
- //fid := GetLoadOrderFormID(e);
- //fid := (fid and $FFFFFF) or (i shl 24);
- //SetLoadOrderFormID(e, fid);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement