unit userscript;


var
	CraftArmorScrStorage : IInterface;
	CraftArmorMultScrStorage : IInterface;
	LegendArmorScrStorage : IInterface;
	DuplArmorScrStorage : IInterface;
	CraftWeaponScrStorage : IInterface;
	LegendWeaponScrStorage : IInterface;
	DuplWeaponScrStorage : IInterface;
	StorageQuest : IInterface;
	BCKeyword : IInterface;
	BCWKeyword : IInterface;
	ACFile : IInterface;

function Process(e: IInterface): integer;
var
	tst, CurrentFile, TemplArmList, SelectedConstr, NewKeywordElement, WeaponElement, ScriptElement, NewConstr, ListOfProperties, ConditionElement, ConstructTemper, ConditionElement2, ConstrList, CheckingConst, CurrentArmor, CopiedArmor, CraftArmor, AD1, AD2, AD3, AD4, AD5, AD6, AD7, AD8 : IInterface;
	SavedCraftArmor, SavedAD1, SavedAD2, SavedAD3, SavedAD4, SavedAD5, SavedAD6, SavedAD7, SavedAD8 : IInterface;
	SavedCraftArmorRecipe, SavedAD1TempRecire, SavedAD2TempRecire, SavedAD3TempRecire, SavedAD4TempRecire, SavedAD5TempRecire, SavedAD6TempRecire, SavedAD7TempRecire, SavedAD8TempRecire : IInterface;
	NewCraftRecipe, NewTemperRecipe : IInterface;
	WinningCurrentArmor : IInterface;
	OrigArmorTemperRecipe, TempArmor, OrigArmor, KeywordElement : IInterface;
	entry, entries : IInterface;
	i, i2, i3, i4, i5, i6, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17 : integer;
	AlreadyProcessed, HasScripts, HasCondition, HasCraftArmor, BadConditions : boolean;
	s : string;
	TempData, ACData, PathedData : TStringList;
	
begin
	TempData := TStringList.Create;
	TempData.Sorted := True;
	TempData.Duplicates := dupIgnore;
	ACData := TStringList.Create;
	ACData.Sorted := True;
	ACData.Duplicates := dupIgnore;
	PathedData := TStringList.Create;
	PathedData.Sorted := True;
	PathedData.Duplicates := dupIgnore;
	CurrentFile := GetFile(e);
	if not Assigned(CraftArmorScrStorage) then begin
		for i := 0 to FileCount - 1 do begin
			AddMessage(GetFileName(FileByIndex(i)));
			if GetFileName(FileByIndex(i)) = 'LRG Advanced Crafting.esm' then begin
				ACFile := FileByIndex(i);
				TemplArmList := GroupBySignature(FileByIndex(i), 'ARMO');
				for i2 := 0 to ElementCount(TemplArmList) - 1 do begin
					if GetElementNativeValues(ElementByIndex(TemplArmList, i2), 'EDID') = '_BC_CraftedArmorScriptStorage' then begin
						CraftArmorScrStorage := ElementByIndex(TemplArmList, i2);
					end;
					if GetElementNativeValues(ElementByIndex(TemplArmList, i2), 'EDID') = '_BC_LegendaryArmorScriptStorage' then begin
						LegendArmorScrStorage := ElementByIndex(TemplArmList, i2);
					end;
					if GetElementNativeValues(ElementByIndex(TemplArmList, i2), 'EDID') = '_BC_DuplArmorScriptStorage' then begin
						DuplArmorScrStorage := ElementByIndex(TemplArmList, i2);
					end;
					if GetElementNativeValues(ElementByIndex(TemplArmList, i2), 'EDID') = '_BC_CraftedArmorMultScriptStorage' then begin
						CraftArmorMultScrStorage := ElementByIndex(TemplArmList, i2);
					end;
				end;
				TemplArmList := GroupBySignature(FileByIndex(i), 'WEAP');
				for i2 := 0 to ElementCount(TemplArmList) - 1 do begin
					if GetElementNativeValues(ElementByIndex(TemplArmList, i2), 'EDID') = '_BC_CraftedWeaponScriptStorage' then begin
						CraftWeaponScrStorage := ElementByIndex(TemplArmList, i2);
					end;
					if GetElementNativeValues(ElementByIndex(TemplArmList, i2), 'EDID') = '_BC_LegendaryWeaponScriptStorage' then begin
						LegendWeaponScrStorage := ElementByIndex(TemplArmList, i2);
					end;
					if GetElementNativeValues(ElementByIndex(TemplArmList, i2), 'EDID') = '_BC_DuplWeaponScriptStorage' then begin
						DuplWeaponScrStorage := ElementByIndex(TemplArmList, i2);
					end;
				end;
				TemplArmList := GroupBySignature(FileByIndex(i), 'KYWD');
				for i2 := 0 to ElementCount(TemplArmList) - 1 do begin
					if GetElementNativeValues(ElementByIndex(TemplArmList, i2), 'EDID') = '_BC_Armor' then begin
						BCKeyword := ElementByIndex(TemplArmList, i2);
					end;
					if GetElementNativeValues(ElementByIndex(TemplArmList, i2), 'EDID') = '_BC_Weapon' then begin
						BCWKeyword := ElementByIndex(TemplArmList, i2);
					end;
				end;
				TemplArmList := GroupBySignature(FileByIndex(i), 'QUST');
				for i2 := 0 to ElementCount(TemplArmList) - 1 do begin
					if GetElementNativeValues(ElementByIndex(TemplArmList, i2), 'EDID') = '_BC_StorageQuest' then begin
						StorageQuest := ElementByIndex(TemplArmList, i2);
					end;
				end;
			end;
		end;
	end;
	
	if GetFileName(CurrentFile) <> 'LRG Advanced Crafting.esm' then begin
		AddMasterIfMissing(CurrentFile, 'LRG Advanced Crafting.esm');
	end;
	
	AddMessage('Saving AC Data(ARMO)...');
	TemplArmList := GroupBySignature(ACFile, 'ARMO');
	for i4 := 0 to ElementCount(TemplArmList) - 1 do begin
		TempArmor := ElementByIndex(TemplArmList, i4);
		AlreadyProcessed := False;
		KeywordElement := ElementBySignature(TempArmor, 'KWDA');
		for i5 := 0 to ElementCount(KeywordElement) - 1 do begin
			if GetElementNativeValues(LinksTo(ElementByIndex(KeywordElement, i5)), 'EDID') = '_BC_Armor' then begin
				if (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_ArmorScr') OR (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_ArmorScr') then begin
					entries := ElementByPath(TempArmor, 'VMAD\Scripts');
					entry := ElementByIndex(entries, 0);
					entry := ElementByName(entry, 'Properties');
					entry := ElementByIndex(entry, 8);
					entry := ElementByPath(entry, 'Value\Object Union\Object v2\FormID');
					OrigArmor := LinksTo(entry);
					ACData.AddObject(EditorID(OrigArmor) + 'CraftedArmor', TempArmor);
					ACData.AddObject(EditorID(OrigArmor) + 'OrigArmor', OrigArmor);
				end;
				if (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_DuplicateArmorScr') OR (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_DuplicateArmorScr') OR (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_LegendaryArmorScr') OR (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_LegendaryArmorScr') then begin
					entries := ElementByPath(TempArmor, 'VMAD\Scripts');
					entry := ElementByIndex(entries, 0);
					entry := ElementByName(entry, 'Properties');
					entry := ElementByIndex(entry, 0);
					entry := ElementByPath(entry, 'Value\Object Union\Object v2\FormID');
					OrigArmor := LinksTo(entry);
					if GetElementNativeValues(OrigArmor, 'EDID') + '_1' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD1', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_2' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD2', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_3' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD3', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_4' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD4', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_5' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD5', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_6' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD6', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_7' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD7', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_8' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD8', TempArmor);
					end;
				end;
			end;
		end;
	end;
	
	AddMessage('Saving AC Data(WEAP)...');
	TemplArmList := GroupBySignature(ACFile, 'WEAP');
	for i4 := 0 to ElementCount(TemplArmList) - 1 do begin
		TempArmor := ElementByIndex(TemplArmList, i4);
		AlreadyProcessed := False;
		KeywordElement := ElementBySignature(TempArmor, 'KWDA');
		for i5 := 0 to ElementCount(KeywordElement) - 1 do begin
			if GetElementNativeValues(LinksTo(ElementByIndex(KeywordElement, i5)), 'EDID') = '_BC_Weapon' then begin
				if (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_WeaponScr') OR (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_WeaponScr') then begin
					entries := ElementByPath(TempArmor, 'VMAD\Scripts');
					entry := ElementByIndex(entries, 0);
					entry := ElementByName(entry, 'Properties');
					entry := ElementByIndex(entry, 8);
					entry := ElementByPath(entry, 'Value\Object Union\Object v2\FormID');
					OrigArmor := LinksTo(entry);
					ACData.AddObject(EditorID(OrigArmor) + 'CraftedArmor', TempArmor);
					ACData.AddObject('OrigArmor', OrigArmor);
				end;
				if (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_DuplicateWeaponScr') OR (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_DuplicateWeaponScr') OR (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_LegendaryWeaponScr') OR (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_LegendaryWeaponScr') then begin
					entries := ElementByPath(TempArmor, 'VMAD\Scripts');
					entry := ElementByIndex(entries, 0);
					entry := ElementByName(entry, 'Properties');
					entry := ElementByIndex(entry, 0);
					entry := ElementByPath(entry, 'Value\Object Union\Object v2\FormID');
					OrigArmor := LinksTo(entry);
					if GetElementNativeValues(OrigArmor, 'EDID') + '_1' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD1', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_2' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD2', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_3' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD3', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_4' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD4', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_5' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD5', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_6' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD6', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_7' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD7', TempArmor);
					end;
					if GetElementNativeValues(OrigArmor, 'EDID') + '_8' = GetElementNativeValues(TempArmor, 'EDID') then begin
						ACData.AddObject(EditorID(OrigArmor) + 'AD8', TempArmor);
					end;
				end;
			end;
		end;
	end;
	
	AddMessage('Begin pathing...');
	ConstrList := GroupBySignature(CurrentFile, 'COBJ');
	i12 := ElementCount(ConstrList) - 1;
	i4 := 0;
	for i4 := 0 to ElementCount(ConstrList) - 1 do begin
		SelectedConstr := ElementByIndex(ConstrList, i4);
		if (GetEditValue(ElementByPath(SelectedConstr, 'BNAM')) = 'CraftingSmithingSkyforge [KYWD:000F46CE]') OR (GetEditValue(ElementByPath(SelectedConstr, 'BNAM')) = 'CraftingSmithingForge [KYWD:00088105]') then begin
			CurrentArmor := WinningOverride(LinksTo(ElementByPath(SelectedConstr, 'CNAM')));
			AddMessage('Winning File: ' + GetFileName(GetFile(CurrentArmor)));
			AddMessage('Armor: ' + Name(CurrentArmor) + ' / (' + IntToStr(i4) + ' out of ' + IntToStr(i12) + ')');
			AddMessage('Recipe: ' + Name(SelectedConstr));
			HasCraftArmor := False;
			AlreadyProcessed := False;
			if (Signature(CurrentArmor) <> 'ARMO') AND (Signature(CurrentArmor) <> 'WEAP') then begin
				AddMessage(Name(CurrentArmor) + ' Skipping - Not a weapon or armor');
				AlreadyProcessed := True;
			end;
			if (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_DuplicateArmorScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_DuplicateArmorScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 3), 'ScriptName') = '_BC_DuplicateArmorScr') then begin
				AddMessage(Name(CurrentArmor) + ' Skipping - Has _BC_DuplicateArmorScr');
				AlreadyProcessed := True;
			end;
			if (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_ArmorScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_ArmorScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 3), 'ScriptName') = '_BC_ArmorScr') then begin
				AddMessage(Name(CurrentArmor) + ' Skipping - Has _BC_ArmorScr');
				AlreadyProcessed := True;
			end;
			if (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_LegendaryArmorScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_LegendaryArmorScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 3), 'ScriptName') = '_BC_LegendaryArmorScr') then begin
				AddMessage(Name(CurrentArmor) + ' Skipping - Has _BC_LegendaryArmorScr');
				AlreadyProcessed := True;
			end;
			if (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_DuplicateWeaponScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_DuplicateWeaponScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 3), 'ScriptName') = '_BC_DuplicateWeaponScr') then begin
				AddMessage(Name(CurrentArmor) + ' Skipping - Has _BC_DuplicateWeaponScr');
				AlreadyProcessed := True;
			end;
			if (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_WeaponScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_WeaponScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 3), 'ScriptName') = '_BC_WeaponScr') then begin
				AddMessage(Name(CurrentArmor) + ' Skipping - Has _BC_WeaponScr');
				AlreadyProcessed := True;
			end;
			if (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_LegendaryWeaponScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 1), 'ScriptName') = '_BC_LegendaryWeaponScr') or (GetElementNativeValues(ElementByIndex(ElementByPath(CurrentArmor, 'VMAD\Scripts'), 3), 'ScriptName') = '_BC_LegendaryWeaponScr') then begin
				AddMessage(Name(CurrentArmor) + ' Skipping - Has _BC_LegendaryWeaponScr');
				AlreadyProcessed := True;
			end;
			
			ConditionElement2 := ElementByName(SelectedConstr, 'Conditions');
			for i6 := 0 to ElementCount(ConditionElement2) - 1 do begin
				if GetElementEditValues(ElementByIndex(ConditionElement2, i6), 'CTDA\Quest') = Name(StorageQuest) then begin
					AddMessage(Name(CurrentArmor) + ' Skipping - Has Condition');
					AlreadyProcessed := True;
				end;
			end;
			if AlreadyProcessed = False then begin
				HasCraftArmor := False;
				SavedAD1 := nil;
				SavedAD2 := nil;
				SavedAD3 := nil;
				SavedAD4 := nil;
				SavedAD5 := nil;
				SavedAD6 := nil;
				SavedAD7 := nil;
				SavedAD8 := nil;
				if Signature(CurrentArmor) = 'ARMO' then begin
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'CraftedArmor');
					if i13 <> -1 then begin
						HasCraftArmor := True;
						SavedCraftArmor := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found Crafting Armor: ' + Name(SavedCraftArmor));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD1');
					if i13 <> -1 then begin
						SavedAD1 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD1: ' + Name(SavedAD1));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD2');
					if i13 <> -1 then begin
						SavedAD2 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD2: ' + Name(SavedAD2));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD3');
					if i13 <> -1 then begin
						SavedAD3 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD3: ' + Name(SavedAD3));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD4');
					if i13 <> -1 then begin
						SavedAD4 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD4: ' + Name(SavedAD4));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD5');
					if i13 <> -1 then begin
						SavedAD5 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD5: ' + Name(SavedAD5));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD6');
					if i13 <> -1 then begin
						SavedAD6 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD6: ' + Name(SavedAD6));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD7');
					if i13 <> -1 then begin
						SavedAD7 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD7: ' + Name(SavedAD7));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD8');
					if i13 <> -1 then begin
						SavedAD8 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD8: ' + Name(SavedAD8));
					end;
				end;
				if Signature(CurrentArmor) = 'WEAP' then begin
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'CraftedArmor');
					if i13 <> -1 then begin
						HasCraftArmor := True;
						SavedCraftArmor := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found Crafting Armor: ' + Name(SavedCraftArmor));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD1');
					if i13 <> -1 then begin
						SavedAD1 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD1: ' + Name(SavedAD1));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD2');
					if i13 <> -1 then begin
						SavedAD2 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD2: ' + Name(SavedAD2));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD3');
					if i13 <> -1 then begin
						SavedAD3 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD3: ' + Name(SavedAD3));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD4');
					if i13 <> -1 then begin
						SavedAD4 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD4: ' + Name(SavedAD4));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD5');
					if i13 <> -1 then begin
						SavedAD5 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD5: ' + Name(SavedAD5));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD6');
					if i13 <> -1 then begin
						SavedAD6 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD6: ' + Name(SavedAD6));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD7');
					if i13 <> -1 then begin
						SavedAD7 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD7: ' + Name(SavedAD7));
					end;
					i13 := 0;
					i13 := ACData.IndexOf(EditorID(CurrentArmor) + 'AD8');
					if i13 <> -1 then begin
						SavedAD8 := ObjectToElement(ACData.Objects[i13]);
						AddMessage('Found AD8: ' + Name(SavedAD8));
					end;
				end;
				if HasCraftArmor = True then begin
					for i8 := 0 to ReferencedByCount(SavedCraftArmor) - 1 do begin
						if Signature(ReferencedByIndex(SavedCraftArmor, i8)) = 'COBJ' then begin
							if (GetElementNativeValues(LinksTo(ElementByPath(ReferencedByIndex(SavedCraftArmor, i8), 'CNAM')), 'EDID')) = (GetElementEditValues(SavedCraftArmor, 'EDID')) then begin
								if GetFileName(GetFile(ReferencedByIndex(SavedCraftArmor, i8))) = GetFileName(ACFile) then begin
									SavedCraftArmorRecipe := ReferencedByIndex(SavedCraftArmor, i8);
									AddMessage('found craft armor recipe')
								end;
							end;
						end;
					end;
					for i9 := 0 to ReferencedByCount(SavedAD1) - 1 do begin
						if Signature(ReferencedByIndex(SavedAD1, i9)) = 'COBJ' then begin
							if (GetElementNativeValues(LinksTo(ElementByPath(ReferencedByIndex(SavedAD1, i9), 'CNAM')), 'EDID')) = (GetElementEditValues(SavedAD1, 'EDID')) then begin
								if (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD1, i9), 'BNAM')) = 'CraftingSmithingArmorTable [KYWD:000ADB78]') OR (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD1, i9), 'BNAM')) = 'CraftingSmithingSharpeningWheel [KYWD:00088108]') then begin
									if GetFileName(GetFile(ReferencedByIndex(SavedAD1, i9))) = GetFileName(ACFile) then begin
										SavedAD1TempRecire := ReferencedByIndex(SavedAD1, i9);
										AddMessage('Found Saved recipe 1');
									end;
								end;
							end;
						end;
					end;
					for i9 := 0 to ReferencedByCount(SavedAD2) - 1 do begin
						if Signature(ReferencedByIndex(SavedAD2, i9)) = 'COBJ' then begin
							if (GetElementNativeValues(LinksTo(ElementByPath(ReferencedByIndex(SavedAD2, i9), 'CNAM')), 'EDID')) = (GetElementEditValues(SavedAD2, 'EDID')) then begin
								if (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD2, i9), 'BNAM')) = 'CraftingSmithingArmorTable [KYWD:000ADB78]') OR (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD2, i9), 'BNAM')) = 'CraftingSmithingSharpeningWheel [KYWD:00088108]') then begin
									if GetFileName(GetFile(ReferencedByIndex(SavedAD2, i9))) = GetFileName(ACFile) then begin
										SavedAD2TempRecire := ReferencedByIndex(SavedAD2, i9);
										AddMessage('Found Saved recipe 2');
									end;
								end;
							end;
						end;
					end;
					for i9 := 0 to ReferencedByCount(SavedAD3) - 1 do begin
						if Signature(ReferencedByIndex(SavedAD3, i9)) = 'COBJ' then begin
							if (GetElementNativeValues(LinksTo(ElementByPath(ReferencedByIndex(SavedAD3, i9), 'CNAM')), 'EDID')) = (GetElementEditValues(SavedAD3, 'EDID')) then begin
								if (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD3, i9), 'BNAM')) = 'CraftingSmithingArmorTable [KYWD:000ADB78]') OR (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD3, i9), 'BNAM')) = 'CraftingSmithingSharpeningWheel [KYWD:00088108]') then begin
									if GetFileName(GetFile(ReferencedByIndex(SavedAD3, i9))) = GetFileName(ACFile) then begin
										SavedAD3TempRecire := ReferencedByIndex(SavedAD3, i9);
										AddMessage('Found Saved recipe 3');
									end;
								end;
							end;
						end;
					end;
					for i9 := 0 to ReferencedByCount(SavedAD4) - 1 do begin
						if Signature(ReferencedByIndex(SavedAD4, i9)) = 'COBJ' then begin
							if (GetElementNativeValues(LinksTo(ElementByPath(ReferencedByIndex(SavedAD4, i9), 'CNAM')), 'EDID')) = (GetElementEditValues(SavedAD4, 'EDID')) then begin
								if (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD4, i9), 'BNAM')) = 'CraftingSmithingArmorTable [KYWD:000ADB78]') OR (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD4, i9), 'BNAM')) = 'CraftingSmithingSharpeningWheel [KYWD:00088108]') then begin
									if GetFileName(GetFile(ReferencedByIndex(SavedAD4, i9))) = GetFileName(ACFile) then begin
										SavedAD4TempRecire := ReferencedByIndex(SavedAD4, i9);
										AddMessage('Found Saved recipe 4');
									end;
								end;
							end;
						end;
					end;
					for i9 := 0 to ReferencedByCount(SavedAD5) - 1 do begin
						if Signature(ReferencedByIndex(SavedAD5, i9)) = 'COBJ' then begin
							if (GetElementNativeValues(LinksTo(ElementByPath(ReferencedByIndex(SavedAD5, i9), 'CNAM')), 'EDID')) = (GetElementEditValues(SavedAD5, 'EDID')) then begin
								if (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD5, i9), 'BNAM')) = 'CraftingSmithingArmorTable [KYWD:000ADB78]') OR (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD5, i9), 'BNAM')) = 'CraftingSmithingSharpeningWheel [KYWD:00088108]') then begin
									if GetFileName(GetFile(ReferencedByIndex(SavedAD5, i9))) = GetFileName(ACFile) then begin
										SavedAD5TempRecire := ReferencedByIndex(SavedAD5, i9);
										AddMessage('Found Saved recipe 5');
									end;
								end;
							end;
						end;
					end;
					for i9 := 0 to ReferencedByCount(SavedAD6) - 1 do begin
						if Signature(ReferencedByIndex(SavedAD6, i9)) = 'COBJ' then begin
							if (GetElementNativeValues(LinksTo(ElementByPath(ReferencedByIndex(SavedAD6, i9), 'CNAM')), 'EDID')) = (GetElementEditValues(SavedAD6, 'EDID')) then begin
								if (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD6, i9), 'BNAM')) = 'CraftingSmithingArmorTable [KYWD:000ADB78]') OR (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD6, i9), 'BNAM')) = 'CraftingSmithingSharpeningWheel [KYWD:00088108]') then begin
									if GetFileName(GetFile(ReferencedByIndex(SavedAD6, i9))) = GetFileName(ACFile) then begin
										SavedAD6TempRecire := ReferencedByIndex(SavedAD6, i9);
										AddMessage('Found Saved recipe 6');
									end;
								end;
							end;
						end;
					end;
					for i9 := 0 to ReferencedByCount(SavedAD7) - 1 do begin
						if Signature(ReferencedByIndex(SavedAD7, i9)) = 'COBJ' then begin
							if (GetElementNativeValues(LinksTo(ElementByPath(ReferencedByIndex(SavedAD7, i9), 'CNAM')), 'EDID')) = (GetElementEditValues(SavedAD7, 'EDID')) then begin
								if (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD7, i9), 'BNAM')) = 'CraftingSmithingArmorTable [KYWD:000ADB78]') OR (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD7, i9), 'BNAM')) = 'CraftingSmithingSharpeningWheel [KYWD:00088108]') then begin
									if GetFileName(GetFile(ReferencedByIndex(SavedAD7, i9))) = GetFileName(ACFile) then begin
										SavedAD7TempRecire := ReferencedByIndex(SavedAD7, i9);
										AddMessage('Found Saved recipe 7');
									end;
								end;
							end;
						end;
					end;
					for i9 := 0 to ReferencedByCount(SavedAD8) - 1 do begin
						if Signature(ReferencedByIndex(SavedAD8, i9)) = 'COBJ' then begin
							if (GetElementNativeValues(LinksTo(ElementByPath(ReferencedByIndex(SavedAD8, i9), 'CNAM')), 'EDID')) = (GetElementEditValues(SavedAD8, 'EDID')) then begin
								if (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD8, i9), 'BNAM')) = 'CraftingSmithingArmorTable [KYWD:000ADB78]') OR (GetEditValue(ElementByPath(ReferencedByIndex(SavedAD8, i9), 'BNAM')) = 'CraftingSmithingSharpeningWheel [KYWD:00088108]') then begin
									if GetFileName(GetFile(ReferencedByIndex(SavedAD8, i9))) = GetFileName(ACFile) then begin
										SavedAD8TempRecire := ReferencedByIndex(SavedAD8, i9);
										AddMessage('Found Saved recipe 8');
									end;
								end;
							end;
						end;
					end;
				end;
				if HasCraftArmor = True then begin
					AddMessage(Name(CurrentArmor) + ' HasCraftArmor');
				end;
				if HasCraftArmor = False then begin
					CraftArmor := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
					s := GetElementNativeValues(CraftArmor, 'EDID');
					SetElementNativeValues(CraftArmor, 'EDID', s + '_Crafted');
					NewKeywordElement := ElementAssign(ElementBySignature(CraftArmor, 'KWDA'), HighInteger, nil, False);
					SetEditValue(NewKeywordElement, Name(BCKeyword));
					Add(CraftArmor, 'VMAD', True);
					if Signature(CraftArmor) = 'ARMO' then begin
						if GetElementNativeValues(SelectedConstr, 'NAM1') = 1 then begin
							ElementAssign(ElementByPath(CraftArmor, 'VMAD'), LowInteger, ElementByPath(CraftArmorScrStorage, 'VMAD'), False);
						end;
						if GetElementNativeValues(SelectedConstr, 'NAM1') > 1 then begin
							AddMessage('NAM1 2');
							ElementAssign(ElementByPath(CraftArmor, 'VMAD'), LowInteger, ElementByPath(CraftArmorMultScrStorage, 'VMAD'), False);
						end;
					end;
					if Signature(CraftArmor) = 'WEAP' then begin
						ElementAssign(ElementByPath(CraftArmor, 'VMAD'), LowInteger, ElementByPath(CraftWeaponScrStorage, 'VMAD'), False);
					end;
				end;
				
				if HasCraftArmor = True then begin
					WinningCurrentArmor := WinningOverride(CurrentArmor);
					i13 := 0;
					i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'CraftedArmor');
					if i13 <> -1 then begin
						CraftArmor := wbCopyElementToFile(SavedCraftArmor, CurrentFile, True, True);
						PathedData.AddObject(EditorID(CurrentArmor) + 'GetCraftArmorFromOrig', CraftArmor);
						AddMessage('has craft armor, has dupl');
					end;
					if i13 = -1 then begin
						AddMessage('has craft armor, no dupl');
						CraftArmor := wbCopyElementToFile(SavedCraftArmor, CurrentFile, False, True);
						PathedData.AddObject(EditorID(CurrentArmor) + 'GetCraftArmorFromOrig', CraftArmor);
						TempData.Add(GetElementEditValues(CraftArmor, 'EDID') + '_Crafted');
						TempData.AddObject(EditorID(CurrentArmor) + 'CraftedArmor', CraftArmor);
					end;
					for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
						for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
							ElementAssign(ElementByIndex(ElementByIndex(CraftArmor, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
						end;
					end;
					Add(CraftArmor, 'VMAD', True);
					if Signature(CurrentArmor) = 'ARMO' then begin
						if GetElementNativeValues(SelectedConstr, 'NAM1') = 1 then begin
							ElementAssign(ElementByPath(CraftArmor, 'VMAD'), LowInteger, ElementByPath(CraftArmorScrStorage, 'VMAD'), False);
						end;
						if GetElementNativeValues(SelectedConstr, 'NAM1') > 1 then begin
							AddMessage('NAM1 2');
							ElementAssign(ElementByPath(CraftArmor, 'VMAD'), LowInteger, ElementByPath(CraftArmorMultScrStorage, 'VMAD'), False);
						end;
					end;
					if Signature(CurrentArmor) = 'WEAP' then begin
						ElementAssign(ElementByPath(CraftArmor, 'VMAD'), LowInteger, ElementByPath(CraftWeaponScrStorage, 'VMAD'), False);
					end;
					
				end;
				
				if Signature(CurrentArmor) = 'ARMO' then begin 
					if not Assigned(SavedAD1) then begin
						AddMessage('not assigned');
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD1');
						if i13 = -1 then begin
							AD1 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD1, 'EDID');
							SetElementNativeValues(AD1, 'EDID', s + '_1');
							s := GetElementNativeValues(AD1, 'FULL');
							SetElementNativeValues(AD1, 'FULL', s + ' (Awful)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD1, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							SetElementNativeValues(AD1, 'DNAM', (Round(GetElementNativeValues(AD1, 'DNAM') / 2.5)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD1', AD1);
						end;
						if i13 <> -1 then begin
							AD1 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD1) then begin
						AddMessage('assigned');
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD1');
						if i13 = -1 then begin
							AD1 := wbCopyElementToFile(SavedAD1, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD1FromOrig', AD1);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD1, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD1, 'VMAD'), LowInteger, ElementByPath(SavedAD1, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD1', AD1);
						end;
						if i13 <> -1 then begin
							AD1 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD1FromOrig', AD1);
						end;
					end;
					
					if not Assigned(SavedAD2) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD2');
						if i13 = -1 then begin
							AD2 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD2, 'EDID');
							SetElementNativeValues(AD2, 'EDID', s + '_2');
							s := GetElementNativeValues(AD2, 'FULL');
							SetElementNativeValues(AD2, 'FULL', s + ' (Bad)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD2, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							SetElementNativeValues(AD2, 'DNAM', (Round(GetElementNativeValues(AD2, 'DNAM') / 1.8)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD2', AD2);
						end;
						if i13 <> -1 then begin
							AD2 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD2) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD2');
						if i13 = -1 then begin
							AD2 := wbCopyElementToFile(SavedAD2, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD2FromOrig', AD2);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD2, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD2, 'VMAD'), LowInteger, ElementByPath(SavedAD2, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD2', AD2);
						end;
						if i13 <> -1 then begin
							AD2 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD2FromOrig', AD2);
						end;
					end;
					
					if not Assigned(SavedAD3) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD3');
						if i13 = -1 then begin
							AD3 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD3, 'EDID');
							SetElementNativeValues(AD3, 'EDID', s + '_3');
							s := GetElementNativeValues(AD3, 'FULL');
							SetElementNativeValues(AD3, 'FULL', s + ' (Decent)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD3, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							SetElementNativeValues(AD3, 'DNAM', (Round(GetElementNativeValues(AD3, 'DNAM') / 1.3)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD3', AD3);
						end;
						if i13 <> -1 then begin
							AD3 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD3) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD3');
						if i13 = -1 then begin
							AD3 := wbCopyElementToFile(SavedAD3, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD3FromOrig', AD3);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD3, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD3, 'VMAD'), LowInteger, ElementByPath(SavedAD3, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD3', AD3);
						end;
						if i13 <> -1 then begin
							AD3 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD3FromOrig', AD3);
						end;
					end;
					
					if not Assigned(SavedAD4) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD4');
						if i13 = -1 then begin
							AD4 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD4, 'EDID');
							SetElementNativeValues(AD4, 'EDID', s + '_4');
							s := GetElementNativeValues(AD4, 'FULL');
							SetElementNativeValues(AD4, 'FULL', s + ' (Normal)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD4, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							SetElementNativeValues(AD4, 'DNAM', (Round(GetElementNativeValues(AD4, 'DNAM') / 1)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD4', AD4);
						end;
						if i13 <> -1 then begin
							AD4 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD4) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD4');
						if i13 = -1 then begin
							AD4 := wbCopyElementToFile(SavedAD4, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD4FromOrig', AD4);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD4, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD4, 'VMAD'), LowInteger, ElementByPath(SavedAD4, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD4', AD4);
						end;
						if i13 <> -1 then begin
							AD4 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD4FromOrig', AD4);
						end;
					end;
					
					if not Assigned(SavedAD5) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD5');
						if i13 = -1 then begin
							AD5 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD5, 'EDID');
							SetElementNativeValues(AD5, 'EDID', s + '_5');
							s := GetElementNativeValues(AD5, 'FULL');
							SetElementNativeValues(AD5, 'FULL', s + ' (Good)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD5, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							SetElementNativeValues(AD5, 'DNAM', (Round(GetElementNativeValues(AD5, 'DNAM') * 1.2)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD5', AD5);
						end;
						if i13 <> -1 then begin
							AD5 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD5) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD5');
						if i13 = -1 then begin
							AD5 := wbCopyElementToFile(SavedAD5, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD5FromOrig', AD5);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD5, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD5, 'VMAD'), LowInteger, ElementByPath(SavedAD5, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD5', AD5);
						end;
						if i13 <> -1 then begin
							AD5 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD5FromOrig', AD5);
						end;
					end;
					
					if not Assigned(SavedAD6) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD6');
						if i13 = -1 then begin
							AD6 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD6, 'EDID');
							SetElementNativeValues(AD6, 'EDID', s + '_6');
							s := GetElementNativeValues(AD6, 'FULL');
							SetElementNativeValues(AD6, 'FULL', s + ' (Outstanding)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD6, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							SetElementNativeValues(AD6, 'DNAM', (Round(GetElementNativeValues(AD6, 'DNAM') * 1.4)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD6', AD6);
						end;
						if i13 <> -1 then begin
							AD6 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD6) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD6');
						if i13 = -1 then begin
							AD6 := wbCopyElementToFile(SavedAD6, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD6FromOrig', AD6);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD6, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD6, 'VMAD'), LowInteger, ElementByPath(SavedAD6, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD6', AD6);
						end;
						if i13 <> -1 then begin
							AD6 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD6FromOrig', AD6);
						end;
					end;
					
					if not Assigned(SavedAD7) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD7');
						if i13 = -1 then begin
							AD7 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD7, 'EDID');
							SetElementNativeValues(AD7, 'EDID', s + '_7');
							s := GetElementNativeValues(AD7, 'FULL');
							SetElementNativeValues(AD7, 'FULL', s + ' (Excellent)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD7, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							SetElementNativeValues(AD7, 'DNAM', (Round(GetElementNativeValues(AD7, 'DNAM') * 1.6)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD7', AD7);
						end;
						if i13 <> -1 then begin
							AD7 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD7) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD7');
						if i13 = -1 then begin
							AD7 := wbCopyElementToFile(SavedAD7, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD7FromOrig', AD7);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD7, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD7, 'VMAD'), LowInteger, ElementByPath(SavedAD7, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD7', AD7);
						end;
						if i13 <> -1 then begin
							AD7 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD7FromOrig', AD7);
						end;
					end;
					
					if not Assigned(SavedAD8) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD8');
						if i13 = -1 then begin
							AD8 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD8, 'EDID');
							SetElementNativeValues(AD8, 'EDID', s + '_8');
							s := GetElementNativeValues(AD8, 'FULL');
							SetElementNativeValues(AD8, 'FULL', s + ' (Legendary)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD8, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							SetElementNativeValues(AD8, 'DNAM', (Round(GetElementNativeValues(AD8, 'DNAM') * 2.0)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD8', AD8);
						end;
						if i13 <> -1 then begin
							AD8 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD8) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD8');
						if i13 = -1 then begin
							AD8 := wbCopyElementToFile(SavedAD8, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD8FromOrig', AD8);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD8, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD8, 'VMAD'), LowInteger, ElementByPath(SavedAD8, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD8', AD8);
						end;
						if i13 <> -1 then begin
							AD8 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD8FromOrig', AD8);
						end;
					end;
					
				end;
				if Signature(CurrentArmor) = 'WEAP' then begin
					if not Assigned(SavedAD1) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD1');
						if i13 = -1 then begin
							AD1 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD1, 'EDID');
							SetElementNativeValues(AD1, 'EDID', s + '_1');
							s := GetElementNativeValues(AD1, 'FULL');
							SetElementNativeValues(AD1, 'FULL', s + ' (Awful)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD1, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							WeaponElement := ElementBySignature(AD1, 'DATA');
							SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 2.5)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD1', AD1);
						end;
						if i13 <> -1 then begin
							AD1 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD1) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD1');
						if i13 = -1 then begin
							AD1 := wbCopyElementToFile(SavedAD1, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD1FromOrig', AD1);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD1, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD1, 'VMAD'), LowInteger, ElementByPath(SavedAD1, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD1', AD1);
						end;
						if i13 <> -1 then begin
							AD1 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD1FromOrig', AD1);
						end;
					end;
					
					if not Assigned(SavedAD2) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD2');
						if i13 = -1 then begin
							AD2 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD2, 'EDID');
							SetElementNativeValues(AD2, 'EDID', s + '_2');
							s := GetElementNativeValues(AD2, 'FULL');
							SetElementNativeValues(AD2, 'FULL', s + ' (Bad)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD2, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							WeaponElement := ElementBySignature(AD2, 'DATA');
							SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 1.8)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD2', AD2);
						end;
						if i13 <> -1 then begin
							AD2 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD2) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD2');
						if i13 = -1 then begin
							AD2 := wbCopyElementToFile(SavedAD2, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD2FromOrig', AD2);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD2, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD2, 'VMAD'), LowInteger, ElementByPath(SavedAD2, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD2', AD2);
						end;
						if i13 <> -1 then begin
							AD2 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD2FromOrig', AD2);
						end;
					end;
					
					if not Assigned(SavedAD3) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD3');
						if i13 = -1 then begin
							AD3 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD3, 'EDID');
							SetElementNativeValues(AD3, 'EDID', s + '_3');
							s := GetElementNativeValues(AD3, 'FULL');
							SetElementNativeValues(AD3, 'FULL', s + ' (Decent)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD3, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							WeaponElement := ElementBySignature(AD3, 'DATA');
							SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 1.3)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD3', AD3);
						end;
						if i13 <> -1 then begin
							AD3 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD3) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD3');
						if i13 = -1 then begin
							AD3 := wbCopyElementToFile(SavedAD3, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD3FromOrig', AD3);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD3, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD3, 'VMAD'), LowInteger, ElementByPath(SavedAD3, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD3', AD3);
						end;
						if i13 <> -1 then begin
							AD3 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD3FromOrig', AD3);
						end;
					end;
					
					if not Assigned(SavedAD4) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD4');
						if i13 = -1 then begin
							AD4 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD4, 'EDID');
							SetElementNativeValues(AD4, 'EDID', s + '_4');
							s := GetElementNativeValues(AD4, 'FULL');
							SetElementNativeValues(AD4, 'FULL', s + ' (Normal)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD4, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							WeaponElement := ElementBySignature(AD4, 'DATA');
							SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 1)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD4', AD4);
						end;
						if i13 <> -1 then begin
							AD4 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD4) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD4');
						if i13 = -1 then begin
							AD4 := wbCopyElementToFile(SavedAD4, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD4FromOrig', AD4);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD4, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD4, 'VMAD'), LowInteger, ElementByPath(SavedAD4, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD4', AD4);
						end;
						if i13 <> -1 then begin
							AD4 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD4FromOrig', AD4);
						end;
					end;
					
					
					if not Assigned(SavedAD5) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD5');
						if i13 = -1 then begin
							AD5 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD5, 'EDID');
							SetElementNativeValues(AD5, 'EDID', s + '_5');
							s := GetElementNativeValues(AD5, 'FULL');
							SetElementNativeValues(AD5, 'FULL', s + ' (Good)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD5, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							WeaponElement := ElementBySignature(AD5, 'DATA');
							SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 1.2)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD5', AD5);
						end;
						if i13 <> -1 then begin
							AD5 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD5) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD5');
						if i13 = -1 then begin
							AD5 := wbCopyElementToFile(SavedAD5, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD5FromOrig', AD5);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD5, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD5, 'VMAD'), LowInteger, ElementByPath(SavedAD5, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD5', AD5);
						end;
						if i13 <> -1 then begin
							AD5 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD5FromOrig', AD5);
						end;
					end;
					
					if not Assigned(SavedAD6) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD6');
						if i13 = -1 then begin
							AD6 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD6, 'EDID');
							SetElementNativeValues(AD6, 'EDID', s + '_6');
							s := GetElementNativeValues(AD6, 'FULL');
							SetElementNativeValues(AD6, 'FULL', s + ' (Outstanding)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD6, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							WeaponElement := ElementBySignature(AD6, 'DATA');
							SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 1.4)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD6', AD6);
						end;
						if i13 <> -1 then begin
							AD6 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD6) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD6');
						if i13 = -1 then begin
							AD6 := wbCopyElementToFile(SavedAD6, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD6FromOrig', AD6);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD6, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD6, 'VMAD'), LowInteger, ElementByPath(SavedAD6, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD6', AD6);
						end;
						if i13 <> -1 then begin
							AD6 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD6FromOrig', AD6);
						end;
					end;
					
					if not Assigned(SavedAD7) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD7');
						if i13 = -1 then begin
							AD7 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD7, 'EDID');
							SetElementNativeValues(AD7, 'EDID', s + '_7');
							s := GetElementNativeValues(AD7, 'FULL');
							SetElementNativeValues(AD7, 'FULL', s + ' (Excellent)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD7, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							WeaponElement := ElementBySignature(AD7, 'DATA');
							SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 1.6)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD7', AD7);
						end;
						if i13 <> -1 then begin
							AD7 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD7) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD7');
						if i13 = -1 then begin
							AD7 := wbCopyElementToFile(SavedAD7, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD7FromOrig', AD7);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD7, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD7, 'VMAD'), LowInteger, ElementByPath(SavedAD7, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD7', AD7);
						end;
						if i13 <> -1 then begin
							AD7 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD7FromOrig', AD7);
						end;
					end;
					
					if not Assigned(SavedAD8) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD8');
						if i13 = -1 then begin
							AD8 := wbCopyElementToFile(CurrentArmor, CurrentFile, True, True);
							s := GetElementNativeValues(AD8, 'EDID');
							SetElementNativeValues(AD8, 'EDID', s + '_8');
							s := GetElementNativeValues(AD8, 'FULL');
							SetElementNativeValues(AD8, 'FULL', s + ' (Legendary)');
							NewKeywordElement := ElementAssign(ElementBySignature(AD8, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							WeaponElement := ElementBySignature(AD8, 'DATA');
							SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 2.0)));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD8', AD8);
						end;
						if i13 <> -1 then begin
							AD8 := ObjectToElement(TempData.Objects[i13]);
						end;
					end;
					if Assigned(SavedAD8) then begin
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD8');
						if i13 = -1 then begin
							AD8 := wbCopyElementToFile(SavedAD8, CurrentFile, False, True);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD8FromOrig', AD8);
							for i10 := 0 to ElementCount(CurrentArmor) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(CurrentArmor, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(AD8, i10), i11), LowInteger, ElementByIndex(ElementByIndex(CurrentArmor, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByPath(AD8, 'VMAD'), LowInteger, ElementByPath(SavedAD8, 'VMAD'), false);
							TempData.AddObject(EditorID(CurrentArmor) + 'AD8', AD8);
						end;
						if i13 <> -1 then begin
							AD8 := ObjectToElement(TempData.Objects[i13]);
							PathedData.AddObject(EditorID(CurrentArmor) + 'GetAD8FromOrig', AD8);
						end;
					end;
				end;
				
				HasScripts := False;
				if ElementExists(CurrentArmor, 'VMAD') then begin
					HasScripts := True;
					AddMessage('Has Script');
				end;
				if HasScripts = True then begin
					if HasCraftArmor = False then begin
						if Signature(CraftArmor) = 'ARMO' then begin
							Add(AD1, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD1, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplArmorScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD1));
							
							Add(AD2, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD2, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplArmorScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD2));
							
							Add(AD3, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD3, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplArmorScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD3));
							
							Add(AD4, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD4, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplArmorScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD4));
							
							Add(AD5, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD5, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplArmorScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD5));
							
							Add(AD6, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD6, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplArmorScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD6));
							
							Add(AD7, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD7, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplArmorScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD7));
							
							Add(AD8, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD8, 'VMAD\Scripts'), HighInteger, ElementByPath(LegendArmorScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD8));
						end;
						if Signature(CraftArmor) = 'WEAP' then begin
							Add(AD1, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD1, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD1));
							
							Add(AD2, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD2, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD2));
							
							Add(AD3, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD3, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD3));
							
							Add(AD4, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD4, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD4));
							
							Add(AD5, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD5, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD5));
							
							Add(AD6, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD6, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD6));
							
							Add(AD7, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD7, 'VMAD\Scripts'), HighInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD7));
							
							Add(AD8, 'VMAD', True);
							ScriptElement := ElementAssign(ElementByPath(AD8, 'VMAD\Scripts'), HighInteger, ElementByPath(LegendWeaponScrStorage, 'VMAD\Scripts\Script'), false);
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ScriptElement, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD8));
						end;
					end;
				end;
				
				if HasScripts = False then begin
					if HasCraftArmor = False then begin
						if Signature(CraftArmor) = 'ARMO' then begin
							Add(AD1, 'VMAD', True);
							ElementAssign(ElementByPath(AD1, 'VMAD'), LowInteger, ElementByPath(DuplArmorScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD1, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD1));
							
							Add(AD2, 'VMAD', True);
							ElementAssign(ElementByPath(AD2, 'VMAD'), LowInteger, ElementByPath(DuplArmorScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD2, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD2));
							
							Add(AD3, 'VMAD', True);
							ElementAssign(ElementByPath(AD3, 'VMAD'), LowInteger, ElementByPath(DuplArmorScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD3, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD3));
							
							Add(AD4, 'VMAD', True);
							ElementAssign(ElementByPath(AD4, 'VMAD'), LowInteger, ElementByPath(DuplArmorScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD4, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD4));
							
							Add(AD5, 'VMAD', True);
							ElementAssign(ElementByPath(AD5, 'VMAD'), LowInteger, ElementByPath(DuplArmorScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD5, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD5));
							
							Add(AD6, 'VMAD', True);
							ElementAssign(ElementByPath(AD6, 'VMAD'), LowInteger, ElementByPath(DuplArmorScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD6, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD6));
							
							Add(AD7, 'VMAD', True);
							ElementAssign(ElementByPath(AD7, 'VMAD'), LowInteger, ElementByPath(DuplArmorScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD7, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD7));
							
							Add(AD8, 'VMAD', True);
							ElementAssign(ElementByPath(AD8, 'VMAD'), LowInteger, ElementByPath(LegendArmorScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD8, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD8));
						end;
						if Signature(CraftArmor) = 'WEAP' then begin
							Add(AD1, 'VMAD', True);
							ElementAssign(ElementByPath(AD1, 'VMAD'), LowInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD1, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD1));
							
							Add(AD2, 'VMAD', True);
							ElementAssign(ElementByPath(AD2, 'VMAD'), LowInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD2, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD2));
							
							Add(AD3, 'VMAD', True);
							ElementAssign(ElementByPath(AD3, 'VMAD'), LowInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD3, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD3));
							
							Add(AD4, 'VMAD', True);
							ElementAssign(ElementByPath(AD4, 'VMAD'), LowInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD4, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD4));
							
							Add(AD5, 'VMAD', True);
							ElementAssign(ElementByPath(AD5, 'VMAD'), LowInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD5, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD5));
							
							Add(AD6, 'VMAD', True);
							ElementAssign(ElementByPath(AD6, 'VMAD'), LowInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD6, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD6));
							
							Add(AD7, 'VMAD', True);
							ElementAssign(ElementByPath(AD7, 'VMAD'), LowInteger, ElementByPath(DuplWeaponScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD7, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD7));
							
							Add(AD8, 'VMAD', True);
							ElementAssign(ElementByPath(AD8, 'VMAD'), LowInteger, ElementByPath(LegendWeaponScrStorage, 'VMAD'), False);
							ListOfProperties := ElementByIndex(ElementByPath(AD8, 'VMAD\Scripts'), 0);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD8));
						end;
					end;
				end;
				
				ScriptElement := ElementByPath(CraftArmor, 'VMAD');
				ListOfProperties := ElementByIndex(ElementByPath(CraftArmor, 'VMAD\Scripts'), 0);
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 0), 'Value\Object Union\Object v2\FormID', Name(AD1));
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 1), 'Value\Object Union\Object v2\FormID', Name(AD2));
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 2), 'Value\Object Union\Object v2\FormID', Name(AD3));
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 3), 'Value\Object Union\Object v2\FormID', Name(AD4));
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 4), 'Value\Object Union\Object v2\FormID', Name(AD5));
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 5), 'Value\Object Union\Object v2\FormID', Name(AD6));
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 6), 'Value\Object Union\Object v2\FormID', Name(AD7));
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 7), 'Value\Object Union\Object v2\FormID', Name(AD8));
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 8), 'Value\Object Union\Object v2\FormID', Name(CurrentArmor));
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 10), 'Value\Object Union\Object v2\FormID', Name(CraftArmor));
				SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 11), 'Value\Int32', GetElementEditValues(SelectedConstr, 'NAM1'));
				
				if HasCraftArmor = True then begin
					if (GetElementNativeValues(WinningOverride(LinksTo(ElementByPath(SelectedConstr, 'CNAM'))), 'EDID')) = (GetElementEditValues(WinningOverride(CurrentArmor), 'EDID')) then begin
						if (GetEditValue(ElementByPath(SelectedConstr, 'BNAM')) = 'CraftingSmithingSkyforge [KYWD:000F46CE]') OR (GetEditValue(ElementByPath(SelectedConstr, 'BNAM')) = 'CraftingSmithingForge [KYWD:00088105]') then begin
							i13 := -1;
							i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'CraftArmorRec');
							if i13 = -1 then begin
								AddMessage('no saved dupl');
								NewConstr := wbCopyElementToFile(SavedCraftArmorRecipe, CurrentFile, False, true);
								s := GetElementNativeValues(SelectedConstr, 'EDID');
								SetElementNativeValues(NewConstr, 'EDID', s + '_Crafted');
								TempData.AddObject(EditorID(CurrentArmor) + 'CraftArmorRec', NewConstr);
							end;
							if i13 <> -1 then begin
								AddMessage('has saved dupl');
								NewConstr := wbCopyElementToFile(SavedCraftArmorRecipe, CurrentFile, True, true);
								s := GetElementNativeValues(SelectedConstr, 'EDID');
								SetElementNativeValues(NewConstr, 'EDID', s + '_Crafted');
								TempData.AddObject(EditorID(CurrentArmor) + 'CraftArmorRec', NewConstr);
							end;
							for i10 := 0 to ElementCount(SelectedConstr) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(SelectedConstr, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(NewConstr, i10), i11), LowInteger, ElementByIndex(ElementByIndex(SelectedConstr, i10), i11), false);
								end;
							end;
							ElementAssign(ElementByName(NewConstr, 'Conditions'), LowInteger, ElementByName(SelectedConstr, 'Conditions') ,false);
							ElementAssign(ElementByName(NewConstr, 'Items'), LowInteger, ElementByName(SelectedConstr, 'Items') ,false);
							SetElementEditValues(NewConstr, 'CNAM', GetEditValue(CraftArmor));
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 9), 'Value\Object Union\Object v2\FormID', Name(NewConstr));
							
							if ElementExists(NewConstr, 'Conditions') then begin
								ConditionElement2 := ElementByName(NewConstr, 'Conditions');
								HasCondition := False;
								for i6 := 0 to ElementCount(ConditionElement2) - 1 do begin
									if GetElementEditValues(ElementByIndex(ConditionElement2, i6), 'CTDA\Quest') = Name(StorageQuest) then begin
										HasCondition := True;
										SetElementEditValues(ElementByIndex(ConditionElement2, i6), 'CTDA\Comparison Value', 0.0);
									end;
								end;
								if HasCondition = False then begin
									ConditionElement := ElementAssign(ConditionElement2, HighInteger, nil, False);
									SetElementEditValues(ConditionElement, 'CTDA\Comparison Value', 0.0);
									SetElementEditValues(ConditionElement, 'CTDA\Type', 10000000);
									SetElementEditValues(ConditionElement, 'CTDA\Function', 'GetVMQuestVariable');
									SetElementEditValues(ConditionElement, 'CTDA\Quest', Name(StorageQuest));
									SetElementEditValues(ConditionElement, 'CTDA\Variable Name', '::UseOrig_var');
									SetElementEditValues(ConditionElement, 'CTDA\Run On', 'Subject');
//									SetElementEditValues(ConditionElement, 'CTDA\Unused', 00000000);
									SetElementEditValues(ConditionElement, 'CTDA\Parameter #3', -1);
									SetElementEditValues(ConditionElement, 'CIS2', '::UseOrig_var');
								end;
							end;
							if not ElementExists(NewConstr, 'Conditions') then begin
								ConditionElement := Add(NewConstr, 'Conditions', True);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Comparison Value', 0.0);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Type', 10000000);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Function', 'GetVMQuestVariable');
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Quest', Name(StorageQuest));
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Variable Name', '::UseOrig_var');
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Run On', 'Subject');
//								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Unused', 00000000);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Parameter #3', -1);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CIS2', '::UseOrig_var');
							end;
									
							if ElementExists(SelectedConstr, 'Conditions') then begin
								ConditionElement2 := ElementByName(SelectedConstr, 'Conditions');
								HasCondition := False;
								for i6 := 0 to ElementCount(ConditionElement2) - 1 do begin
									if GetElementEditValues(ElementByIndex(ConditionElement2, i6), 'CTDA\Quest') = Name(StorageQuest) then begin
										HasCondition := True;
									end;
								end;
								if HasCondition = False then begin
									ConditionElement := ElementAssign(ConditionElement2, HighInteger, nil, False);
									SetElementEditValues(ConditionElement, 'CTDA\Comparison Value', 1.0);
									SetElementEditValues(ConditionElement, 'CTDA\Type', 10000000);
									SetElementEditValues(ConditionElement, 'CTDA\Function', 'GetVMQuestVariable');
									SetElementEditValues(ConditionElement, 'CTDA\Quest', Name(StorageQuest));
									SetElementEditValues(ConditionElement, 'CTDA\Variable Name', '::UseOrig_var');
									SetElementEditValues(ConditionElement, 'CTDA\Run On', 'Subject');
//									SetElementEditValues(ConditionElement, 'CTDA\Unused', 00000000);
									SetElementEditValues(ConditionElement, 'CTDA\Parameter #3', -1);
									SetElementEditValues(ConditionElement, 'CIS2', '::UseOrig_var');
								end;
							end;
							if not ElementExists(SelectedConstr, 'Conditions') then begin
								ConditionElement := Add(SelectedConstr, 'Conditions', True);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Comparison Value', 1.0);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Type', 10000000);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Function', 'GetVMQuestVariable');
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Quest', Name(StorageQuest));
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Variable Name', '::UseOrig_var');
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Run On', 'Subject');
//								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Unused', 00000000);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Parameter #3', -1);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CIS2', '::UseOrig_var');
							end;
							ConstructTemper := wbCopyElementToFile(SavedAD1TempRecire, CurrentFile, False, True);
							for i10 := 0 to ElementCount(ConstructTemper) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(ConstructTemper, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(ConstructTemper, i10), i11), LowInteger, ElementByIndex(ElementByIndex(SavedAD1TempRecire, i10), i11), false);
								end;
							end;
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD1));
							
							ConstructTemper := wbCopyElementToFile(SavedAD2TempRecire, CurrentFile, False, True);
							for i10 := 0 to ElementCount(ConstructTemper) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(ConstructTemper, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(ConstructTemper, i10), i11), LowInteger, ElementByIndex(ElementByIndex(SavedAD2TempRecire, i10), i11), false);
								end;
							end;
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD2));
							
							ConstructTemper := wbCopyElementToFile(SavedAD3TempRecire, CurrentFile, False, True);
							for i10 := 0 to ElementCount(ConstructTemper) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(ConstructTemper, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(ConstructTemper, i10), i11), LowInteger, ElementByIndex(ElementByIndex(SavedAD3TempRecire, i10), i11), false);
								end;
							end;
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD3));
							
							ConstructTemper := wbCopyElementToFile(SavedAD4TempRecire, CurrentFile, False, True);
							for i10 := 0 to ElementCount(ConstructTemper) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(ConstructTemper, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(ConstructTemper, i10), i11), LowInteger, ElementByIndex(ElementByIndex(SavedAD4TempRecire, i10), i11), false);
								end;
							end;
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD4));
							
							ConstructTemper := wbCopyElementToFile(SavedAD5TempRecire, CurrentFile, False, True);
							for i10 := 0 to ElementCount(ConstructTemper) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(ConstructTemper, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(ConstructTemper, i10), i11), LowInteger, ElementByIndex(ElementByIndex(SavedAD5TempRecire, i10), i11), false);
								end;
							end;
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD5));
							
							ConstructTemper := wbCopyElementToFile(SavedAD6TempRecire, CurrentFile, False, True);
							for i10 := 0 to ElementCount(ConstructTemper) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(ConstructTemper, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(ConstructTemper, i10), i11), LowInteger, ElementByIndex(ElementByIndex(SavedAD6TempRecire, i10), i11), false);
								end;
							end;
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD6));
							
							ConstructTemper := wbCopyElementToFile(SavedAD7TempRecire, CurrentFile, False, True);
							for i10 := 0 to ElementCount(ConstructTemper) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(ConstructTemper, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(ConstructTemper, i10), i11), LowInteger, ElementByIndex(ElementByIndex(SavedAD7TempRecire, i10), i11), false);
								end;
							end;
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD7));
							
							ConstructTemper := wbCopyElementToFile(SavedAD8TempRecire, CurrentFile, False, True);
							for i10 := 0 to ElementCount(ConstructTemper) - 1 do begin
								for i11 := 0 to ElementCount(ElementByIndex(ConstructTemper, i10)) - 1 do begin
									ElementAssign(ElementByIndex(ElementByIndex(ConstructTemper, i10), i11), LowInteger, ElementByIndex(ElementByIndex(SavedAD8TempRecire, i10), i11), false);
								end;
							end;
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD8));
							
						end;
					end;
					
					
					
				end;
				
				if HasCraftArmor = False then begin
					if (GetElementNativeValues(LinksTo(ElementByPath(SelectedConstr, 'CNAM')), 'EDID')) = (GetElementEditValues(CurrentArmor, 'EDID')) then begin
						
						if (GetEditValue(ElementByPath(SelectedConstr, 'BNAM')) = 'CraftingSmithingSkyforge [KYWD:000F46CE]') OR (GetEditValue(ElementByPath(SelectedConstr, 'BNAM')) = 'CraftingSmithingForge [KYWD:00088105]') then begin
							NewConstr := wbCopyElementToFile(SelectedConstr, CurrentFile, True, True);
							SetElementEditValues(ElementByIndex(ElementByIndex(ListOfProperties, 2), 9), 'Value\Object Union\Object v2\FormID', Name(NewConstr));
							s := GetElementNativeValues(NewConstr, 'EDID');
							SetElementNativeValues(NewConstr, 'EDID', s + '_Crafted');
							SetElementEditValues(NewConstr, 'CNAM', GetEditValue(CraftArmor));
							if ElementExists(NewConstr, 'Conditions') then begin
								ConditionElement2 := ElementByName(NewConstr, 'Conditions');
								HasCondition := False;
								for i6 := 0 to ElementCount(ConditionElement2) - 1 do begin
									if GetElementEditValues(ElementByIndex(ConditionElement2, i6), 'CTDA\Quest') = Name(StorageQuest) then begin
										HasCondition := True;
									end;
								end;
								ConditionElement := ElementAssign(ConditionElement2, HighInteger, nil, False);
								SetElementEditValues(ConditionElement, 'CTDA\Comparison Value', 0.0);
								SetElementEditValues(ConditionElement, 'CTDA\Type', 10000000);
								SetElementEditValues(ConditionElement, 'CTDA\Function', 'GetVMQuestVariable');
								SetElementEditValues(ConditionElement, 'CTDA\Quest', Name(StorageQuest));
								SetElementEditValues(ConditionElement, 'CTDA\Variable Name', '::UseOrig_var');
								SetElementEditValues(ConditionElement, 'CTDA\Run On', 'Subject');
//								SetElementEditValues(ConditionElement, 'CTDA\Unused', 00000000);
								SetElementEditValues(ConditionElement, 'CTDA\Parameter #3', -1);
								SetElementEditValues(ConditionElement, 'CIS2', '::UseOrig_var');
							end;
							if not ElementExists(NewConstr, 'Conditions') then begin
								ConditionElement := Add(NewConstr, 'Conditions', True);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Comparison Value', 0.0);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Type', 10000000);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Function', 'GetVMQuestVariable');
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Quest', Name(StorageQuest));
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Variable Name', '::UseOrig_var');
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Run On', 'Subject');
//								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Unused', 00000000);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Parameter #3', -1);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CIS2', '::UseOrig_var');
							end;
							
							if ElementExists(SelectedConstr, 'Conditions') then begin
								ConditionElement2 := ElementByName(SelectedConstr, 'Conditions');
								HasCondition := False;
								for i6 := 0 to ElementCount(ConditionElement2) - 1 do begin
									if GetElementEditValues(ElementByIndex(ConditionElement2, i6), 'CTDA\Quest') = Name(StorageQuest) then begin
										HasCondition := True;
									end;
								end;
								if HasCondition = False then begin
									ConditionElement := ElementAssign(ConditionElement2, HighInteger, nil, False);
									SetElementEditValues(ConditionElement, 'CTDA\Comparison Value', 1.0);
									SetElementEditValues(ConditionElement, 'CTDA\Type', 10000000);
									SetElementEditValues(ConditionElement, 'CTDA\Function', 'GetVMQuestVariable');
									SetElementEditValues(ConditionElement, 'CTDA\Quest', Name(StorageQuest));
									SetElementEditValues(ConditionElement, 'CTDA\Variable Name', '::UseOrig_var');
									SetElementEditValues(ConditionElement, 'CTDA\Run On', 'Subject');
//									SetElementEditValues(ConditionElement, 'CTDA\Unused', 00000000);
									SetElementEditValues(ConditionElement, 'CTDA\Parameter #3', -1);
									SetElementEditValues(ConditionElement, 'CIS2', '::UseOrig_var');
								end;
							end;
							if not ElementExists(SelectedConstr, 'Conditions') then begin
								ConditionElement := Add(SelectedConstr, 'Conditions', True);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Comparison Value', 1.0);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Type', 10000000);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Function', 'GetVMQuestVariable');
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Quest', Name(StorageQuest));
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Variable Name', '::UseOrig_var');
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Run On', 'Subject');
//								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Unused', 00000000);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CTDA\Parameter #3', -1);
								SetElementEditValues(ElementByIndex(ConditionElement, 0), 'CIS2', '::UseOrig_var');
							end;
						end;
						
						for i9 := 0 to ReferencedByCount(CurrentArmor) - 1 do begin
							if (GetEditValue(ElementByPath(ReferencedByIndex(CurrentArmor, i9), 'BNAM')) = 'CraftingSmithingArmorTable [KYWD:000ADB78]') OR (GetEditValue(ElementByPath(ReferencedByIndex(CurrentArmor, i9), 'BNAM')) = 'CraftingSmithingSharpeningWheel [KYWD:00088108]') then begin
								OrigArmorTemperRecipe := WinningOverride(ReferencedByIndex(CurrentArmor, i9));
								break;
							end;
						end;
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD1TR');
						if i13 = -1 then begin
							ConstructTemper := wbCopyElementToFile(OrigArmorTemperRecipe, CurrentFile, True, True);
							s := GetElementNativeValues(ConstructTemper, 'EDID');
							SetElementNativeValues(ConstructTemper, 'EDID', s + '_1');
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD1));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD1TR', ConstructTemper)
						end;
						
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD2TR');
						if i13 = -1 then begin
							ConstructTemper := wbCopyElementToFile(OrigArmorTemperRecipe, CurrentFile, True, True);
							s := GetElementNativeValues(ConstructTemper, 'EDID');
							SetElementNativeValues(ConstructTemper, 'EDID', s + '_2');
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD2));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD2TR', ConstructTemper)
						end;
						
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD3TR');
						if i13 = -1 then begin
							ConstructTemper := wbCopyElementToFile(OrigArmorTemperRecipe, CurrentFile, True, True);
							s := GetElementNativeValues(ConstructTemper, 'EDID');
							SetElementNativeValues(ConstructTemper, 'EDID', s + '_3');
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD3));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD3TR', ConstructTemper)
						end;
						
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD4TR');
						if i13 = -1 then begin
							ConstructTemper := wbCopyElementToFile(OrigArmorTemperRecipe, CurrentFile, True, True);
							s := GetElementNativeValues(ConstructTemper, 'EDID');
							SetElementNativeValues(ConstructTemper, 'EDID', s + '_4');
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD4));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD4TR', ConstructTemper)
						end;
						
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD5TR');
						if i13 = -1 then begin
							ConstructTemper := wbCopyElementToFile(OrigArmorTemperRecipe, CurrentFile, True, True);
							s := GetElementNativeValues(ConstructTemper, 'EDID');
							SetElementNativeValues(ConstructTemper, 'EDID', s + '_5');
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD5));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD5TR', ConstructTemper)
						end;
						
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD6TR');
						if i13 = -1 then begin
							ConstructTemper := wbCopyElementToFile(OrigArmorTemperRecipe, CurrentFile, True, True);
							s := GetElementNativeValues(ConstructTemper, 'EDID');
							SetElementNativeValues(ConstructTemper, 'EDID', s + '_6');
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD6));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD6TR', ConstructTemper)
						end;
						
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD7TR');
						if i13 = -1 then begin
							ConstructTemper := wbCopyElementToFile(OrigArmorTemperRecipe, CurrentFile, True, True);
							s := GetElementNativeValues(ConstructTemper, 'EDID');
							SetElementNativeValues(ConstructTemper, 'EDID', s + '_7');
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD7));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD7TR', ConstructTemper)
						end;
						
						i13 := TempData.IndexOf(EditorID(CurrentArmor) + 'AD8TR');
						if i13 = -1 then begin
							ConstructTemper := wbCopyElementToFile(OrigArmorTemperRecipe, CurrentFile, True, True);
							s := GetElementNativeValues(ConstructTemper, 'EDID');
							SetElementNativeValues(ConstructTemper, 'EDID', s + '_8');
							SetElementEditValues(ConstructTemper, 'CNAM', Name(AD8));
							TempData.AddObject(EditorID(CurrentArmor) + 'AD8TR', ConstructTemper)
						end;
						
					end;
				end;
				
				BadConditions := False;
				ConditionElement2 := ElementByName(NewConstr, 'Conditions');
				i14 := 0;
				for i14 := 0 to ElementCount(ConditionElement2) - 1 do begin
					i15 := GetElementEditValues(ElementByIndex(ConditionElement2, i14), 'CTDA\Type');
					i15 := (i15 / 10000);
					s := '';
					s := IntToStr(i15);
					if (i15 = 1) OR (i15 = 11) OR (i15 = 101) OR (i15 = 1001) OR (i15 = 10001) OR (i15 = 100001) OR (i15 = 1000001) then begin
						AddMessage('Conditions: ' + Name(NewConstr));
						BadConditions := True;
						break;
					end;
				end;
				i14 := 0;
				i15 := 0;
				if BadConditions = True then begin
					i14 := (ElementCount(ConditionElement2) - 1);
					while i14 > 0 do begin
						MoveUp(ElementByIndex(ConditionElement2, i14));
						i14 := (i14 - 1);
					end;
					ConditionElement2 := ElementByName(SelectedConstr, 'Conditions');
					i14 := (ElementCount(ConditionElement2) - 1);
					while i14 > 0 do begin
						MoveUp(ElementByIndex(ConditionElement2, i14));
						i14 := (i14 - 1);
					end;
					i16 := 0;
					i17 := 0;
					BadConditions := False;
					for i16 := 0 to ElementCount(ConditionElement2) - 1 do begin
						i17 := GetElementEditValues(ElementByIndex(ConditionElement2, i16), 'CTDA\Type');
						i17 := (i15 / 10000);
						s := '';
						s := IntToStr(i17);
						if (i17 = 1) OR (i17 = 11) OR (i17 = 101) OR (i17 = 1001) OR (i17 = 10001) OR (i17 = 100001) OR (i17 = 1000001) then begin
							AddMessage('Conditions: ' + Name(NewConstr));
							BadConditions := True;
							break;
						end;
					end;
					i16 := 0;
					i17 := 0;
					if BadConditions = True then begin
						i16 := (ElementCount(ConditionElement2) - 1);
						while i16 > 0 do begin
							MoveUp(ElementByIndex(ConditionElement2, i16));
							i16 := (i16 - 1);
						end;
						ConditionElement2 := ElementByName(SelectedConstr, 'Conditions');
						i16 := (ElementCount(ConditionElement2) - 1);
						while i16 > 0 do begin
							MoveUp(ElementByIndex(ConditionElement2, i16));
							i16 := (i16 - 1);
						end;
					end;
				end;
				
			end;			
		end;
	end;
	TemplArmList := GroupBySignature(ACFile, 'ARMO');
	for i4 := 0 to ElementCount(TemplArmList) - 1 do begin
		TempArmor := ElementByIndex(TemplArmList, i4);
		if (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_ArmorScr') OR (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_WeaponScr') then begin
			entries := ElementByPath(TempArmor, 'VMAD\Scripts');
			entry := ElementByIndex(entries, 0);
			entry := ElementByName(entry, 'Properties');
			entry := ElementByIndex(entry, 8);
			entry := ElementByPath(entry, 'Value\Object Union\Object v2\FormID');
			OrigArmor := LinksTo(entry);
			s := GetFileName(GetFile(WinningOverride(OrigArmor)));
			if (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'Skyrim.esm') AND (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'Update.esm') AND (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'Dawnguard.esm') AND (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'HeartFire.esm') AND (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'Dragonborn.esm') AND (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'LRG Advanced Crafting.esm') then begin
				i5 := 0;
				AddMessage(EditorID(OrigArmor) + 'Has Override');
				i5 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetCraftArmorFromOrig');
				if i5 <> -1 then begin
					CraftArmor := ObjectToElement(PathedData.Objects[i5]);
					if Signature(CraftArmor) = 'ARMO' then begin
						AddMessage('Existing: ' + Name(CraftArmor));
						ElementAssign(ElementByPath(CraftArmor, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
						ElementAssign(ElementByPath(CraftArmor, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
						ElementAssign(ElementByPath(CraftArmor, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
						ElementAssign(ElementByPath(CraftArmor, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
						NewKeywordElement := ElementAssign(ElementBySignature(CraftArmor, 'KWDA'), HighInteger, nil, False);
						SetEditValue(NewKeywordElement, Name(BCKeyword));
						ElementAssign(ElementByPath(CraftArmor, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
						ElementAssign(ElementByPath(CraftArmor, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
						ElementAssign(ElementByPath(CraftArmor, 'FULL'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'FULL'), False);
					end;
					i6 := 0;
					i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD1FromOrig');
					if i6 <> -1 then begin
						AD1 := ObjectToElement(PathedData.Objects[i6]);
						if Signature(AD1) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD1, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD1, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD1, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD1, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD1, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD1, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD1, 'FULL', s + ' (Awful)');
							SetElementNativeValues(AD1, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') / 2.5)));
						end;
					end;
					i6 := 0;
					i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD2FromOrig');
					if i6 <> -1 then begin
						AD2 := ObjectToElement(PathedData.Objects[i6]);
						if Signature(AD2) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD2, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD2, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD2, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD2, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD2, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD2, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD2, 'FULL', s + ' (Bad)');
							SetElementNativeValues(AD2, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') / 1.8)));
						end;
					end;
					i6 := 0;
					i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD3FromOrig');
					if i6 <> -1 then begin
						AD3 := ObjectToElement(PathedData.Objects[i6]);
						if Signature(AD3) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD3, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD3, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD3, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD3, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD3, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD3, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD3, 'FULL', s + ' (Decent)');
							SetElementNativeValues(AD3, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') / 1.3)));
						end;
					end;
					i6 := 0;
					i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD4FromOrig');
					if i6 <> -1 then begin
						AD4 := ObjectToElement(PathedData.Objects[i6]);
						if Signature(AD4) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD4, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD4, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD4, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD4, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD4, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD4, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD4, 'FULL', s + ' (Normal)');
							SetElementNativeValues(AD4, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') / 1)));
						end;
					end;
					i6 := 0;
					i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD5FromOrig');
					if i6 <> -1 then begin
						AD5 := ObjectToElement(PathedData.Objects[i6]);
						if Signature(AD5) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD5, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD5, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD5, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD5, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD5, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD5, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD5, 'FULL', s + ' (Good)');
							SetElementNativeValues(AD5, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') * 1.2)));
						end;
					end;
					i6 := 0;
					i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD6FromOrig');
					if i6 <> -1 then begin
						AD6 := ObjectToElement(PathedData.Objects[i6]);
						if Signature(AD6) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD6, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD6, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD6, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD6, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD6, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD6, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD6, 'FULL', s + ' (Outstanding)');
							SetElementNativeValues(AD6, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') * 1.4)));
						end;
					end;
					i6 := 0;
					i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD7FromOrig');
					if i6 <> -1 then begin
						AD7 := ObjectToElement(PathedData.Objects[i6]);
						if Signature(AD7) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD7, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD7, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD7, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD7, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD7, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD7, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD7, 'FULL', s + ' (Excellent)');
							SetElementNativeValues(AD7, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') * 1.6)));
						end;
					end;
					i6 := 0;
					i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD8FromOrig');
					if i6 <> -1 then begin
						AD8 := ObjectToElement(PathedData.Objects[i6]);
						if Signature(AD8) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD8, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD8, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD8, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD8, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD8, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD8, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD8, 'FULL', s + ' (Legendary)');
							SetElementNativeValues(AD8, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') * 2.0)));
						end;
					end;
				end;
				if i5 = -1 then begin
					i6 := 0;
					i6 := ACData.IndexOf(EditorID(OrigArmor) + 'CraftedArmor');
					if i6 <> -1 then begin
						CraftArmor := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
						if Signature(CraftArmor) = 'ARMO' then begin
							AddMessage('New copy: ' + Name(CraftArmor));
							ElementAssign(ElementByPath(CraftArmor, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(CraftArmor, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(CraftArmor, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(CraftArmor, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(CraftArmor, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(CraftArmor, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							ElementAssign(ElementByPath(CraftArmor, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
							ElementAssign(ElementByPath(CraftArmor, 'FULL'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'FULL'), False);
						end;
					end;
					i6 := 0;
					i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD1');
					if i6 <> -1 then begin
						AD1 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
						if Signature(AD1) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD1, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD1, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD1, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD1, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD1, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD1, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD1, 'FULL', s + ' (Awful)');
							SetElementNativeValues(AD1, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') / 2.5)));
						end;
					end;
					i6 := 0;
					i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD2');
					if i6 <> -1 then begin
						AD2 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
						if Signature(AD2) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD2, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD2, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD2, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD2, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD2, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD2, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD2, 'FULL', s + ' (Bad)');
							SetElementNativeValues(AD2, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') / 1.8)));
						end;
					end;
					i6 := 0;
					i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD3');
					if i6 <> -1 then begin
						AD3 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
						if Signature(AD3) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD3, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD3, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD3, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD3, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD3, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD3, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD3, 'FULL', s + ' (Decent)');
							SetElementNativeValues(AD3, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') / 1.3)));
						end;
					end;
					i6 := 0;
					i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD4');
					if i6 <> -1 then begin
						AD4 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
						if Signature(AD4) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD4, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD4, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD4, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD4, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD4, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD4, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD4, 'FULL', s + ' (Normal)');
							SetElementNativeValues(AD4, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') / 1)));
						end;
					end;
					i6 := 0;
					i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD5');
					if i6 <> -1 then begin
						AD5 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
						if Signature(AD5) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD5, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD5, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD5, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD5, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD5, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD5, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD5, 'FULL', s + ' (Good)');
							SetElementNativeValues(AD5, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') * 1.2)));
						end;
					end;
					i6 := 0;
					i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD6');
					if i6 <> -1 then begin
						AD6 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
						if Signature(AD6) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD6, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD6, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD6, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD6, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD6, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD6, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD6, 'FULL', s + ' (Outstanding)');
							SetElementNativeValues(AD6, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') * 1.4)));
						end;
					end;
					i6 := 0;
					i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD7');
					if i6 <> -1 then begin
						AD7 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
						if Signature(AD7) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD7, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD7, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD7, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD7, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD7, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD7, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD7, 'FULL', s + ' (Excellent)');
							SetElementNativeValues(AD7, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') * 1.6)));
						end;
					end;
					i6 := 0;
					i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD8');
					if i6 <> -1 then begin
						AD8 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
						if Signature(AD8) = 'ARMO' then begin
							ElementAssign(ElementByPath(AD8, 'Male World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Male World Model'), False);
							ElementAssign(ElementByPath(AD8, 'Female World Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Female World Model'), False);
							ElementAssign(ElementByPath(AD8, 'Armature'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Armature'), False);
							ElementAssign(ElementByPath(AD8, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(AD8, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCKeyword));
							ElementAssign(ElementByPath(AD8, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
							SetElementNativeValues(AD8, 'FULL', s + ' (Legendary)');
							SetElementNativeValues(AD8, 'DNAM', (Round(GetElementNativeValues(WinningOverride(OrigArmor), 'DNAM') * 2.0)));
						end;
					end;
				end;
			end;
		end;
	end;
	TemplArmList := GroupBySignature(ACFile, 'WEAP');
		for i4 := 0 to ElementCount(TemplArmList) - 1 do begin
			TempArmor := ElementByIndex(TemplArmList, i4);
			if (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_ArmorScr') OR (GetElementNativeValues(ElementByIndex(ElementByPath(TempArmor, 'VMAD\Scripts'), 0), 'ScriptName') = '_BC_WeaponScr') then begin
				entries := ElementByPath(TempArmor, 'VMAD\Scripts');
				entry := ElementByIndex(entries, 0);
				entry := ElementByName(entry, 'Properties');
				entry := ElementByIndex(entry, 8);
				entry := ElementByPath(entry, 'Value\Object Union\Object v2\FormID');
				OrigArmor := LinksTo(entry);
				s := GetFileName(GetFile(WinningOverride(OrigArmor)));
				if (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'Skyrim.esm') AND (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'Update.esm') AND (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'Dawnguard.esm') AND (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'HeartFire.esm') AND (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'Dragonborn.esm') AND (GetFileName(GetFile(WinningOverride(OrigArmor))) <> 'LRG Advanced Crafting.esm') then begin
					AddMessage(EditorID(OrigArmor) + 'Has Override');
					i5 := 0;
					i5 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetCraftArmorFromOrig');
					if i5 <> -1 then begin
						CraftArmor := ObjectToElement(PathedData.Objects[i5]);
						if Signature(CraftArmor) = 'WEAP' then begin
							AddMessage('Existing: ' + Name(CraftArmor));
							ElementAssign(ElementByPath(CraftArmor, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
							ElementAssign(ElementByPath(CraftArmor, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
							ElementAssign(ElementByPath(CraftArmor, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
							NewKeywordElement := ElementAssign(ElementBySignature(CraftArmor, 'KWDA'), HighInteger, nil, False);
							SetEditValue(NewKeywordElement, Name(BCWKeyword));
							ElementAssign(ElementByPath(CraftArmor, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
							ElementAssign(ElementByPath(CraftArmor, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
							ElementAssign(ElementByPath(CraftArmor, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
							ElementAssign(ElementByPath(CraftArmor, 'FULL'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'FULL'), False);
						end;
						i6 := 0;
						i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD1FromOrig');
						if i6 <> -1 then begin
							AD1 := ObjectToElement(PathedData.Objects[i6]);
							if Signature(AD1) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD1, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD1, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD1, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD1, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD1, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD1, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD1, 'FULL', s + ' (Awful)');
								ElementAssign(ElementByPath(AD1, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD1, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 2.5)));
							end;
						end;
						i6 := 0;
						i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD2FromOrig');
						if i6 <> -1 then begin
							AD2 := ObjectToElement(PathedData.Objects[i6]);
							if Signature(AD2) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD2, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD2, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD2, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD2, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD2, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD2, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD2, 'FULL', s + ' (Bad)');
								ElementAssign(ElementByPath(AD2, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD2, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 1.8)));
							end;
						end;
						i6 := 0;
						i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD3FromOrig');
						if i6 <> -1 then begin
							AD3 := ObjectToElement(PathedData.Objects[i6]);
							if Signature(AD3) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD3, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD3, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD3, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD3, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD3, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD3, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD3, 'FULL', s + ' (Decent)');
								ElementAssign(ElementByPath(AD3, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD3, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 1.3)));
							end;
						end;
						i6 := 0;
						i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD4FromOrig');
						if i6 <> -1 then begin
							AD4 := ObjectToElement(PathedData.Objects[i6]);
							if Signature(AD4) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD4, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD4, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD4, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD4, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD4, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD4, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD4, 'FULL', s + ' (Normal)');
								ElementAssign(ElementByPath(AD4, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD4, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 1)));
							end;
						end;
						i6 := 0;
						i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD5FromOrig');
						if i6 <> -1 then begin
							AD5 := ObjectToElement(PathedData.Objects[i6]);
							if Signature(AD5) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD5, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD5, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD5, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD5, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD5, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD5, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD5, 'FULL', s + ' (Good)');
								ElementAssign(ElementByPath(AD5, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD5, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 1.2)));
							end;
						end;
						i6 := 0;
						i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD6FromOrig');
						if i6 <> -1 then begin
							AD6 := ObjectToElement(PathedData.Objects[i6]);
							if Signature(AD6) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD6, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD6, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD6, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD6, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD6, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD6, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD6, 'FULL', s + ' (Outstanding)');
								ElementAssign(ElementByPath(AD6, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD6, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 1.4)));
							end;
						end;
						i6 := 0;
						i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD7FromOrig');
						if i6 <> -1 then begin
							AD7 := ObjectToElement(PathedData.Objects[i6]);
							if Signature(AD7) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD7, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD7, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD7, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD7, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD7, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD7, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD7, 'FULL', s + ' (Excellent)');
								ElementAssign(ElementByPath(AD7, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD7, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 1.6)));
							end;
						end;
						i6 := 0;
						i6 := PathedData.IndexOf(EditorID(OrigArmor) + 'GetAD8FromOrig');
						if i6 <> -1 then begin
							AD8 := ObjectToElement(PathedData.Objects[i6]);
							if Signature(AD8) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD8, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD8, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD8, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD8, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD8, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD8, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD8, 'FULL', s + ' (Legendary)');
								ElementAssign(ElementByPath(AD8, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD8, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 2.0)));
							end;
						end;
					end;
					if i5 = -1 then begin
						i6 := 0;
						i6 := ACData.IndexOf(EditorID(OrigArmor) + 'CraftedArmor');
						if i6 <> -1 then begin
							CraftArmor := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
							if Signature(CraftArmor) = 'WEAP' then begin
								AddMessage('New copy' + Name(CraftArmor));
								ElementAssign(ElementByPath(CraftArmor, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(CraftArmor, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(CraftArmor, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(CraftArmor, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(CraftArmor, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(CraftArmor, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								ElementAssign(ElementByPath(CraftArmor, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								ElementAssign(ElementByPath(CraftArmor, 'FULL'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'FULL'), False);
							end;
						end;
						i6 := 0;
						i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD1');
						if i6 <> -1 then begin
							AD1 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
							if Signature(AD1) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD1, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD1, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD1, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD1, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD1, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD1, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD1, 'FULL', s + ' (Awful)');
								ElementAssign(ElementByPath(AD1, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD1, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 2.5)));
							end;
						end;
						i6 := 0;
						i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD2');
						if i6 <> -1 then begin
							AD2 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
							if Signature(AD2) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD2, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD2, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD2, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD2, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD2, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD2, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD2, 'FULL', s + ' (Bad)');
								ElementAssign(ElementByPath(AD2, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD2, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 1.8)));
							end;
						end;
						i6 := 0;
						i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD3');
						if i6 <> -1 then begin
							AD3 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
							if Signature(AD3) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD3, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD3, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD3, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD3, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD3, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD3, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD3, 'FULL', s + ' (Decent)');
								ElementAssign(ElementByPath(AD3, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD3, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 1.3)));
							end;
						end;
						i6 := 0;
						i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD4');
						if i6 <> -1 then begin
							AD4 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
							if Signature(AD4) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD4, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD4, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD4, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD4, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD4, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD4, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD4, 'FULL', s + ' (Normal)');
								ElementAssign(ElementByPath(AD4, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD4, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) / 1)));
							end;
						end;
						i6 := 0;
						i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD5');
						if i6 <> -1 then begin
							AD5 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
							if Signature(AD5) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD5, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD5, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD5, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD5, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD5, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD5, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD5, 'FULL', s + ' (Good)');
								ElementAssign(ElementByPath(AD5, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD5, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 1.2)));
							end;
						end;
						i6 := 0;
						i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD6');
						if i6 <> -1 then begin
							AD6 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
							if Signature(AD6) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD6, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD6, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD6, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD6, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD6, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD6, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD6, 'FULL', s + ' (Outstanding)');
								ElementAssign(ElementByPath(AD6, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD6, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 1.4)));
							end;
						end;
						i6 := 0;
						i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD7');
						if i6 <> -1 then begin
							AD7 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
							if Signature(AD7) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD7, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD7, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD7, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD7, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD7, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD7, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD7, 'FULL', s + ' (Excellent)');
								ElementAssign(ElementByPath(AD7, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD7, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 1.6)));
							end;
						end;
						i6 := 0;
						i6 := ACData.IndexOf(EditorID(OrigArmor) + 'AD8');
						if i6 <> -1 then begin
							AD8 := wbCopyElementToFile(ObjectToElement(ACData.Objects[i6]), CurrentFile, false, true);
							if Signature(AD8) = 'WEAP' then begin
								ElementAssign(ElementByPath(AD8, 'Model'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'Model'), False);
								ElementAssign(ElementByPath(AD8, 'WNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'WNAM'), False);
								ElementAssign(ElementByPath(AD8, 'KWDA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'KWDA'), False);
								NewKeywordElement := ElementAssign(ElementBySignature(AD8, 'KWDA'), HighInteger, nil, False);
								SetEditValue(NewKeywordElement, Name(BCWKeyword));
								ElementAssign(ElementByPath(AD8, 'DATA'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DATA'), False);
								ElementAssign(ElementByPath(AD8, 'CRDT'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'CRDT'), False);
								s := GetElementNativeValues(WinningOverride(OrigArmor), 'FULL');
								SetElementNativeValues(AD8, 'FULL', s + ' (Legendary)');
								ElementAssign(ElementByPath(AD8, 'DNAM'), LowInteger, ElementByPath(WinningOverride(OrigArmor), 'DNAM'), False);
								WeaponElement := ElementBySignature(AD8, 'DATA');
								SetEditValue(ElementByIndex(WeaponElement, 2), (Round(GetEditValue(ElementByIndex(WeaponElement, 2)) * 2)));
							end;
						end;
					end;
				end;
			end;
		end;
end;

function Finalize: integer;
begin
end;

end.
