Quantcast

BOMB : Time remain 10

Arstraea [03-11-15 - 10:16]
BOMB : Time remain 10
-----------------------------------
Adapting SLE's changes and some modifying, cleaning.
Filename
ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua
ElvUI_SLE/modules/Armory/Constants.lua
ElvUI_SLE/modules/Armory/Media/Textures/Gradation.tga
ElvUI_SLE/modules/Armory/Media/Textures/Warning-Small.blp
diff --git a/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua b/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua
index b451d9e..4c6cd15 100644
--- a/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua
+++ b/ElvUI_SLE/modules/Armory/CharacterArmory/CharacterArmory.lua
@@ -207,8 +207,9 @@ function CA:Setup_CharacterArmory()

 	--<< Background >>--
 	self.BG = self:CreateTexture(nil, 'OVERLAY')
-	self.BG:SetInside()
-	self.BG:SetTexture(KF.db.Modules.Armory.Character.BackgroundImage)
+	self.BG:SetPoint('TOPLEFT', self, -7, -20)
+	self.BG:SetPoint('BOTTOMRIGHT', self, 7, 2)
+	self:UpdateCharacterBG()

 	--<< Change Model Frame's frameLevel >>--
 	CharacterModelFrame:SetFrameLevel(self:GetFrameLevel() + 2)
@@ -237,24 +238,53 @@ function CA:Setup_CharacterArmory()
 		-- Gradation
 		Slot.Gradation = Slot:CreateTexture(nil, 'OVERLAY')
 		Slot.Gradation:SetInside()
-		Slot.Gradation:SetTexture('Interface\\AddOns\\ElvUI_KnightFrame\\Media\\Graphics\\Gradation')
+		Slot.Gradation:SetTexture('Interface\\AddOns\\ElvUI_SLE\\modules\\Armory\\Media\\Textures\\Gradation')
 		if Slot.Direction == 'LEFT' then
 			Slot.Gradation:SetTexCoord(0, 1, 0, 1)
 		else
 			Slot.Gradation:SetTexCoord(1, 0, 0, 1)
 		end

+		if not KF.db.Modules.Armory.Character.Gradation.DisplayGradation then
+			Slot.Gradation:Hide()
+		end
+
 		if SlotName ~= 'ShirtSlot' and SlotName ~= 'TabardSlot' then
 			-- Item Level
-			KF:TextSetting(Slot, nil, { Tag = 'ItemLevel', FontSize = 10, directionH = Slot.Direction }, 'TOP'..Slot.Direction, _G['Character'..SlotName], 'TOP'..(Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT'), Slot.Direction == 'LEFT' and 2 or -2, -1)
+			KF:TextSetting(Slot, nil, { Tag = 'ItemLevel',
+				Font = E.db.sle.Armory.Character.Level.Font,
+				FontSize = E.db.sle.Armory.Character.Level.FontSize,
+				FontStyle = E.db.sle.Armory.Character.Level.FontStyle,
+				directionH = Slot.Direction
+			}, 'TOP'..Slot.Direction, _G['Character'..SlotName], 'TOP'..(Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT'), Slot.Direction == 'LEFT' and 2 or -2, -1)
+
+			if not E.db.sle.Armory.Character.Level.DisplayLevel then
+				Slot.ItemLevel:Hide()
+			end

 			-- Enchantment Name
-			KF:TextSetting(Slot, nil, { Tag = 'ItemEnchant', FontSize = 8, directionH = Slot.Direction }, Slot.Direction, _G['Character'..SlotName], Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT', Slot.Direction == 'LEFT' and 2 or -2, 1)
+			KF:TextSetting(Slot, nil, { Tag = 'ItemEnchant',
+				Font = E.db.sle.Armory.Character.Enchant.Font,
+				FontSize = E.db.sle.Armory.Character.Enchant.FontSize,
+				FontStyle = E.db.sle.Armory.Character.Enchant.FontStyle,
+				directionH = Slot.Direction
+			}, Slot.Direction, _G['Character'..SlotName], Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT', Slot.Direction == 'LEFT' and 2 or -2, 1)
+
+			if E.db.sle.Armory.Character.DisplayWhenMouseoverOnly then
+				Slot.ItemEnchant:SetDrawLayer('HIGHLIGHT')
+			else
+				Slot.ItemEnchant:SetDrawLayer('OVERLAY')
+			end
+
+			if not E.db.sle.Armory.Character.Enchant.DisplayEnchant then
+				Slot.ItemEnchant:Hide()
+			end
+
 			Slot.EnchantWarning = CreateFrame('Button', nil, Slot)
-			Slot.EnchantWarning:Size(12)
+			Slot.EnchantWarning:Size(E.db.sle.Armory.Character.ItemEnchant.WarningSize)
 			Slot.EnchantWarning.Texture = Slot.EnchantWarning:CreateTexture(nil, 'OVERLAY')
 			Slot.EnchantWarning.Texture:SetInside()
-			Slot.EnchantWarning.Texture:SetTexture('Interface\\AddOns\\ElvUI_KnightFrame\\Media\\Graphics\\Warning-Small')
+			Slot.EnchantWarning.Texture:SetTexture('Interface\\AddOns\\ElvUI_SLE\\modules\\Armory\\Media\\Textures\\Warning-Small')
 			Slot.EnchantWarning:Point(Slot.Direction, Slot.ItemEnchant, Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT', Slot.Direction == 'LEFT' and 3 or -3, 0)
 			Slot.EnchantWarning:SetScript('OnEnter', self.OnEnter)
 			Slot.EnchantWarning:SetScript('OnLeave', self.OnLeave)
@@ -265,7 +295,7 @@ function CA:Setup_CharacterArmory()
 			-- Gem Socket
 			for i = 1, MAX_NUM_SOCKETS do
 				Slot['Socket'..i] = CreateFrame('Frame', nil, Slot)
-				Slot['Socket'..i]:Size(12)
+				Slot['Socket'..i]:Size(E.db.sle.Armory.Character.ItemGem.SocketSize)
 				Slot['Socket'..i]:SetBackdrop({
 					bgFile = E.media.blankTex,
 					edgeFile = E.media.blankTex,
@@ -302,11 +332,11 @@ function CA:Setup_CharacterArmory()
 			Slot.Socket3:Point(Slot.Direction, Slot.Socket2, Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT', Slot.Direction == 'LEFT' and 1 or -1, 0)

 			Slot.SocketWarning = CreateFrame('Button', nil, Slot)
-			Slot.SocketWarning:Size(12)
+			Slot.SocketWarning:Size(E.db.sle.Armory.Character.ItemEnchant.WarningSize)
 			Slot.SocketWarning:RegisterForClicks('AnyUp')
 			Slot.SocketWarning.Texture = Slot.SocketWarning:CreateTexture(nil, 'OVERLAY')
 			Slot.SocketWarning.Texture:SetInside()
-			Slot.SocketWarning.Texture:SetTexture('Interface\\AddOns\\ElvUI_KnightFrame\\Media\\Graphics\\Warning-Small')
+			Slot.SocketWarning.Texture:SetTexture('Interface\\AddOns\\ElvUI_SLE\\modules\\Armory\\Media\\Textures\\Warning-Small')
 			Slot.SocketWarning:SetScript('OnEnter', self.OnEnter)
 			Slot.SocketWarning:SetScript('OnLeave', self.OnLeave)

@@ -322,7 +352,7 @@ function CA:Setup_CharacterArmory()

 				Slot.TransmogrifyAnchor.Texture = Slot.TransmogrifyAnchor:CreateTexture(nil, 'OVERLAY')
 				Slot.TransmogrifyAnchor.Texture:SetInside()
-				Slot.TransmogrifyAnchor.Texture:SetTexture('Interface\\AddOns\\ElvUI_KnightFrame\\Media\\Graphics\\Anchor')
+				Slot.TransmogrifyAnchor.Texture:SetTexture('Interface\\AddOns\\ElvUI_SLE\\modules\\Armory\\Media\\Textures\\Anchor')
 				Slot.TransmogrifyAnchor.Texture:SetVertexColor(1, .5, 1)

 				if Slot.Direction == 'LEFT' then
@@ -412,7 +442,7 @@ function CA:Update_Gear()
 	if Prof2 and Info.Armory_Constants.ProfessionList[Prof2] then self.PlayerProfession[(Info.Armory_Constants.ProfessionList[Prof2].Key)] = Prof2_Level end
 	]]
 	local ErrorDetected, NeedUpdate, NeedUpdateList, R, G, B
-	local Slot, ItemLink, ItemData, ItemRarity, BasicItemLevel, TrueItemLevel, ItemUpgradeID, ItemTexture, IsEnchanted, UsableEffect, CurrentLineText, GemID, GemCount_Default, GemCount_Enable, GemCount_Now, GemCount, IsTransmogrified, TransmogrifyItemID
+	local Slot, ItemLink, ItemData, ItemRarity, BasicItemLevel, TrueItemLevel, ItemUpgradeID, ItemType, ItemTexture, IsEnchanted, UsableEffect, CurrentLineText, GemID, GemCount_Default, GemCount_Enable, GemCount_Now, GemCount, IsTransmogrified, TransmogrifyItemID

 	for _, SlotName in pairs(self.GearUpdated or Info.Armory_Constants.GearList) do
 		if not (SlotName == 'ShirtSlot' or SlotName == 'TabardSlot') then
@@ -420,7 +450,7 @@ function CA:Update_Gear()
 			ItemLink = GetInventoryItemLink('player', Slot.ID)

 			do --<< Clear Setting >>--
-				NeedUpdate, ErrorDetected, TrueItemLevel, IsEnchanted, UsableEffect, ItemUpgradeID, ItemTexture = nil, nil, nil, nil, nil, nil, nil
+				NeedUpdate, ErrorDetected, TrueItemLevel, IsEnchanted, UsableEffect, ItemUpgradeID, ItemType, ItemTexture = nil, nil, nil, nil, nil, nil, nil, nil

 				Slot.ItemLevel:SetText(nil)
 				Slot.ItemEnchant:SetText(nil)
@@ -498,9 +528,12 @@ function CA:Update_Gear()
 							end

 							if ItemTexture or GemID then
-								Slot['Socket'..i]:Show()
+								if E.db.sle.Armory.Character.Gem.DisplaySocket then
+									Slot['Socket'..i]:Show()
+									Slot.SocketWarning:Point(Slot.Direction, Slot['Socket'..i], (Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT'), Slot.Direction == 'LEFT' and 3 or -3, 0)
+								end
+
 								GemCount_Now = GemCount_Now + 1
-								Slot.SocketWarning:Point(Slot.Direction, Slot['Socket'..i], (Slot.Direction == 'LEFT' and 'RIGHT' or 'LEFT'), Slot.Direction == 'LEFT' and 3 or -3, 0)

 								if GemID then
 									GemCount = GemCount + 1
@@ -523,7 +556,7 @@ function CA:Update_Gear()
 						end
 					end

-					_, _, ItemRarity, BasicItemLevel, _, _, _, _, _, ItemTexture = GetItemInfo(ItemLink)
+					_, _, ItemRarity, BasicItemLevel, _, _, _, _, ItemType, ItemTexture = GetItemInfo(ItemLink)
 					R, G, B = GetItemQualityColor(ItemRarity)

 					ItemUpgradeID = ItemLink:match(':(%d+)\124h%[')
@@ -537,16 +570,24 @@ function CA:Update_Gear()
 						elseif CurrentLineText:find(Info.Armory_Constants.ItemLevelKey) then
 							TrueItemLevel = tonumber(CurrentLineText:match(Info.Armory_Constants.ItemLevelKey))
 						elseif CurrentLineText:find(Info.Armory_Constants.EnchantKey) then
-							CurrentLineText = CurrentLineText:match(Info.Armory_Constants.EnchantKey) -- Get enchant string
-							CurrentLineText = gsub(CurrentLineText, ITEM_MOD_AGILITY_SHORT, AGI)
-							CurrentLineText = gsub(CurrentLineText, ITEM_MOD_SPIRIT_SHORT, SPI)
-							CurrentLineText = gsub(CurrentLineText, ITEM_MOD_STAMINA_SHORT, STA)
-							CurrentLineText = gsub(CurrentLineText, ITEM_MOD_STRENGTH_SHORT, STR)
-							CurrentLineText = gsub(CurrentLineText, ITEM_MOD_INTELLECT_SHORT, INT)
-							CurrentLineText = gsub(CurrentLineText, ITEM_MOD_CRIT_RATING_SHORT, CRIT_ABBR) -- Critical is too long
-							CurrentLineText = gsub(CurrentLineText, ' + ', '+') -- Remove space
-
-							Slot.ItemEnchant:SetText('|cffceff00'..CurrentLineText)
+							if E.db.sle.Armory.Character.Enchant.DisplayEnchant then
+								CurrentLineText = CurrentLineText:match(Info.Armory_Constants.EnchantKey) -- Get enchant string
+								CurrentLineText = gsub(CurrentLineText, ITEM_MOD_AGILITY_SHORT, AGI)
+								CurrentLineText = gsub(CurrentLineText, ITEM_MOD_SPIRIT_SHORT, SPI)
+								CurrentLineText = gsub(CurrentLineText, ITEM_MOD_STAMINA_SHORT, STA)
+								CurrentLineText = gsub(CurrentLineText, ITEM_MOD_STRENGTH_SHORT, STR)
+								CurrentLineText = gsub(CurrentLineText, ITEM_MOD_INTELLECT_SHORT, INT)
+								CurrentLineText = gsub(CurrentLineText, ITEM_MOD_CRIT_RATING_SHORT, CRIT_ABBR) -- Critical is too long
+								CurrentLineText = gsub(CurrentLineText, ' + ', '+') -- Remove space
+
+								if L.Armory_ReplaceEnchantString and type(L.Armory_ReplaceEnchantString) == 'table' then
+									for Old, New in pairs(L.Armory_ReplaceEnchantString) do
+										CurrentLineText = gsub(CurrentLineText, Old, New)
+									end
+								end
+
+								Slot.ItemEnchant:SetText('|cffceff00'..CurrentLineText)
+							end

 							IsEnchanted = true
 						elseif CurrentLineText:find(ITEM_SPELL_TRIGGER_ONUSE) then
@@ -567,8 +608,8 @@ function CA:Update_Gear()
 						Slot.ItemLevel:SetText((not TrueItemLevel or BasicItemLevel == TrueItemLevel) and BasicItemLevel or (Slot.Direction == 'LEFT' and TrueItemLevel or '')..(ItemUpgradeID and (Slot.Direction == 'LEFT' and ' ' or '')..(Info.Armory_Constants.UpgradeColor[ItemUpgradeID] or '|cffaaaaaa')..'(+'..ItemUpgradeID..')|r'..(Slot.Direction == 'RIGHT' and ' ' or '') or '')..(Slot.Direction == 'RIGHT' and TrueItemLevel or ''))
 					end

-					if KF.db.Modules.Armory.Character.NoticeMissing ~= false then
-						if not IsEnchanted and Info.Armory_Constants.EnchantableSlots[SlotName] then
+					if E.db.sle.Armory.Character.NoticeMissing ~= false then
+						if not IsEnchanted and Info.Armory_Constants.EnchantableSlots[SlotName] and not (SlotName ~= 'SecondaryHandSlot' and ItemType ~= 'INVTYPE_WEAPON' and ItemType ~= 'INVTYPE_WEAPONOFFHAND' and ItemType ~= 'INVTYPE_RANGEDRIGHT') then
 							ErrorDetected = true
 							Slot.EnchantWarning:Show()
 							Slot.ItemEnchant:SetText('|cffff0000'..L['Not Enchanted'])
@@ -593,7 +634,7 @@ function CA:Update_Gear()
 					end

 					--[[ Check Error
-					if KF.db.Modules.Armory.Character.NoticeMissing ~= false then
+					if E.db.sle.Armory.Character.NoticeMissing ~= false then
 						if (not IsEnchanted and Info.Armory_Constants.EnchantableSlots[SlotName]) or ((SlotName == 'Finger0Slot' or SlotName == 'Finger1Slot') and self.PlayerProfession.Enchanting and self.PlayerProfession.Enchanting >= 550 and not IsEnchanted) then
 							ErrorDetected = true
 							Slot.EnchantWarning:Show()
@@ -684,10 +725,10 @@ function CA:Update_Gear()
 			end

 			-- Change Gradation
-			if ErrorDetected and KF.db.Modules.Armory.Character.NoticeMissing ~= false then
+			if ErrorDetected and E.db.sle.Armory.Character.NoticeMissing ~= false then
 				Slot.Gradation:SetVertexColor(1, 0, 0)
 			else
-				Slot.Gradation:SetVertexColor(unpack(KF.db.Modules.Armory.Character.GradationColor))
+				Slot.Gradation:SetVertexColor(unpack(E.db.sle.Armory.Character.Gradation.Color))
 			end

 			if NeedUpdate then
@@ -708,92 +749,70 @@ function CA:Update_Gear()
 end


-KF.Modules[#KF.Modules + 1] = 'CharacterArmory'
-KF.Modules.CharacterArmory = function(RemoveOrder)
-	if not RemoveOrder and KF.db.Enable ~= false and KF.db.Modules.Armory and KF.db.Modules.Armory.Character and KF.db.Modules.Armory.Character.Enable ~= false then
-		Info.CharacterArmory_Activate = true
-
-		-- Setting frame
-		CharacterFrame:SetHeight(444)
-
-		-- Move right equipment slots
-		CharacterHandsSlot:SetPoint('TOPRIGHT', CharacterFrameInsetRight, 'TOPLEFT', -4, -2)
-
-		-- Move bottom equipment slots
-		CharacterMainHandSlot:SetPoint('BOTTOMLEFT', PaperDollItemsFrame, 'BOTTOMLEFT', 185, 14)
-
-		if CA.Setup_CharacterArmory then
-			CA:Setup_CharacterArmory()
-		else
-			CA:Show()
-		end
-		CA:CharacterArmory_DataSetting()
-
-		-- Model Frame
-		CharacterModelFrame:ClearAllPoints()
-		CharacterModelFrame:SetPoint('TOPLEFT', CharacterHeadSlot)
-		CharacterModelFrame:SetPoint('RIGHT', CharacterHandsSlot)
-		CharacterModelFrame:SetPoint('BOTTOM', CharacterMainHandSlot)
-		CharacterModelFrame.BackgroundTopLeft:Hide()
-		CharacterModelFrame.BackgroundTopRight:Hide()
-		CharacterModelFrame.BackgroundBotLeft:Hide()
-		CharacterModelFrame.BackgroundBotRight:Hide()
-
-		if PaperDollFrame:IsShown() then
-			CharacterFrame:SetWidth(CharacterFrame.Expanded and 650 or 448)
-			CharacterFrameInsetRight:SetPoint('TOPLEFT', CharacterFrameInset, 'TOPRIGHT', 110, 0)
-			CharacterFrameExpandButton:SetPoint('BOTTOMRIGHT', CharacterFrameInsetRight, 'BOTTOMLEFT', 0, 1)
-		end
-
-		-- Run KnightArmory
-		CA:RegisterEvent('SOCKET_INFO_SUCCESS')
-		CA:RegisterEvent('PLAYER_EQUIPMENT_CHANGED')
-		CA:RegisterEvent('UNIT_INVENTORY_CHANGED')
-		CA:RegisterEvent('ITEM_UPGRADE_MASTER_UPDATE')
-		CA:RegisterEvent('TRANSMOGRIFY_UPDATE')
-		CA:RegisterEvent('COMBAT_LOG_EVENT_UNFILTERED')
-		CA:RegisterEvent('UPDATE_INVENTORY_DURABILITY')
-		CA:RegisterEvent('PLAYER_ENTERING_WORLD')
-
-		--[[
-		KF_KnightArmory.CheckButton:Show()
-		KF_KnightArmory_NoticeMissing:EnableMouse(true)
-		KF_KnightArmory_NoticeMissing.text:SetTextColor(1, 1, 1)
-		KF_KnightArmory_NoticeMissing.CheckButton:SetTexture('Interface\\Buttons\\UI-CheckBox-Check')
-		]]
-	elseif Info.CharacterArmory_Activate then
-		Info.CharacterArmory_Activate = nil
-
-		-- Setting frame to default
-		CharacterFrame:SetHeight(424)
-		CharacterFrame:SetWidth(PaperDollFrame:IsShown() and CharacterFrame.Expanded and CHARACTERFRAME_EXPANDED_WIDTH or PANEL_DEFAULT_WIDTH)
-		CharacterFrameInsetRight:SetPoint(unpack(InsetDefaultPoint))
-		CharacterFrameExpandButton:SetPoint(unpack(ExpandButtonDefaultPoint))
-
-		-- Move rightside equipment slots to default position
-		CharacterHandsSlot:SetPoint('TOPRIGHT', CharacterFrameInset, 'TOPRIGHT', -4, -2)
-
-		-- Move bottom equipment slots to default position
-		CharacterMainHandSlot:SetPoint('BOTTOMLEFT', PaperDollItemsFrame, 'BOTTOMLEFT', 130, 16)
-
-		-- Model Frame
-		CharacterModelFrame:ClearAllPoints()
-		CharacterModelFrame:Size(231, 320)
-		CharacterModelFrame:SetPoint('TOPLEFT', PaperDollFrame, 'TOPLEFT', 52, -66)
-		CharacterModelFrame.BackgroundTopLeft:Show()
-		CharacterModelFrame.BackgroundTopRight:Show()
-		CharacterModelFrame.BackgroundBotLeft:Show()
-		CharacterModelFrame.BackgroundBotRight:Show()
-
-		-- Turn off ArmoryFrame
-		CA:Hide()
-		CA:UnregisterAllEvents()
-
-		--[[
-		KF_KnightArmory.CheckButton:Hide()
-		KF_KnightArmory_NoticeMissing:EnableMouse(false)
-		KF_KnightArmory_NoticeMissing.text:SetTextColor(0.31, 0.31, 0.31)
-		KF_KnightArmory_NoticeMissing.CheckButton:SetTexture('Interface\\Buttons\\UI-CheckBox-Check-Disabled')
-		]]
+function CA:UpdateCharacterBG()
+	if E.db.sle.Armory.Character.Background.SelectedBG == 'HIDE' then
+		self.BG:SetTexture(nil)
+	elseif E.db.sle.Armory.Character.Background.SelectedBG == 'CUSTOM' then
+		self.BG:SetTexture(E.db.sle.Armory.Character.Background.CustomAddress)
+	else
+		self.BG:SetTexture('Interface\\AddOns\\ElvUI_SLE\\modules\\Armory\\Media\\Textures'..E.db.sle.Armory.Character.Background.SelectedBG)
 	end
+end
+
+
+function CA:StartArmoryFrame()
+	-- Setting frame
+	CharacterFrame:SetWidth(CharacterFrame.Expanded and 650 or 444)
+	CharacterFrameInsetRight:SetPoint('TOPLEFT', CharacterFrameInset, 'TOPRIGHT', 110, 0)
+	CharacterFrameExpandButton:SetPoint('BOTTOMRIGHT', CharacterFrameInsetRight, 'BOTTOMLEFT', -3, 7)
+
+	-- Move right equipment slots
+	CharacterHandsSlot:SetPoint('TOPRIGHT', CharacterFrameInsetRight, 'TOPLEFT', -4, -2)
+
+	-- Move bottom equipment slots
+	CharacterMainHandSlot:SetPoint('BOTTOMLEFT', PaperDollItemsFrame, 'BOTTOMLEFT', 181, 14)
+
+	-- Model Frame
+	CharacterModelFrame:ClearAllPoints()
+	CharacterModelFrame:SetPoint('TOPLEFT', CharacterHeadSlot)
+	CharacterModelFrame:SetPoint('RIGHT', CharacterHandsSlot)
+	CharacterModelFrame:SetPoint('BOTTOM', CharacterMainHandSlot)
+	CharacterModelFrame.BackgroundTopLeft:Hide()
+	CharacterModelFrame.BackgroundTopRight:Hide()
+	CharacterModelFrame.BackgroundBotLeft:Hide()
+	CharacterModelFrame.BackgroundBotRight:Hide()
+
+	-- Character Control Frame
+	CharacterModelFrameControlFrame:ClearAllPoints()
+	CharacterModelFrameControlFrame:SetPoint('BOTTOM', CharacterModelFrame, 'BOTTOM', -1.5, 1)
+
+	if CA.Setup_CharacterArmory then
+		CA:Setup_CharacterArmory()
+	else
+		CA:Show()
+	end
+	CA:CharacterArmory_DataSetting()
+
+	-- Run SLE CharacterArmoryMode
+	CA:RegisterEvent('SOCKET_INFO_SUCCESS')
+	CA:RegisterEvent('PLAYER_EQUIPMENT_CHANGED')
+	CA:RegisterEvent('UNIT_INVENTORY_CHANGED')
+	CA:RegisterEvent('ITEM_UPGRADE_MASTER_UPDATE')
+	CA:RegisterEvent('TRANSMOGRIFY_UPDATE')
+	CA:RegisterEvent('COMBAT_LOG_EVENT_UNFILTERED')
+	CA:RegisterEvent('UPDATE_INVENTORY_DURABILITY')
+	CA:RegisterEvent('PLAYER_ENTERING_WORLD')
+
+	-- For frame resizing
+	--[[CA.ChangeCharacterFrameWidth:SetParent(PaperDollFrame)
+	if PaperDollFrame:IsVisible() then
+		CA.ChangeCharacterFrameWidth:Show()
+		CharacterFrame:SetWidth(CharacterFrameInsetRight:IsShown() and 650 or 448)
+	end]]
+end
+
+function CFO:Initialize()
+	if not E.db.sle.Armory.Character.Enable then return end
+
+	CA:StartArmoryFrame()
 end
\ No newline at end of file
diff --git a/ElvUI_SLE/modules/Armory/Constants.lua b/ElvUI_SLE/modules/Armory/Constants.lua
index 04ea495..c56f982 100644
--- a/ElvUI_SLE/modules/Armory/Constants.lua
+++ b/ElvUI_SLE/modules/Armory/Constants.lua
@@ -14,7 +14,7 @@ Info.Armory_Constants = {
 	},

 	EnchantableSlots = {
-		NeckSlot = true, BackSlot = true, Finger0Slot = true, Finger1Slot = true, MainHandSlot = true
+		NeckSlot = true, BackSlot = true, Finger0Slot = true, Finger1Slot = true, MainHandSlot = true, SecondaryHandSlot = true
 	},

 	UpgradeColor = {
diff --git a/ElvUI_SLE/modules/Armory/Media/Textures/Gradation.tga b/ElvUI_SLE/modules/Armory/Media/Textures/Gradation.tga
new file mode 100644
index 0000000..422ce5a
Binary files /dev/null and b/ElvUI_SLE/modules/Armory/Media/Textures/Gradation.tga differ
diff --git a/ElvUI_SLE/modules/Armory/Media/Textures/Warning-Small.blp b/ElvUI_SLE/modules/Armory/Media/Textures/Warning-Small.blp
new file mode 100644
index 0000000..e0817d3
Binary files /dev/null and b/ElvUI_SLE/modules/Armory/Media/Textures/Warning-Small.blp differ