Quantcast

Some changes to the inspect frame... seems functional

Repooc [03-18-14 - 01:20]
Some changes to the inspect frame... seems functional
Filename
ElvUI_SLE/modules/characterframe/communication.lua
ElvUI_SLE/modules/characterframe/inspectframe.lua
diff --git a/ElvUI_SLE/modules/characterframe/communication.lua b/ElvUI_SLE/modules/characterframe/communication.lua
index 647748c..8ff27a1 100644
--- a/ElvUI_SLE/modules/characterframe/communication.lua
+++ b/ElvUI_SLE/modules/characterframe/communication.lua
@@ -83,6 +83,7 @@ if not AISM then
 	}
 	AISM.DataTypeTable = {
 		['PLI'] = 'PlayerInfo',
+		['GLD'] = 'GuildInfo',
 		['PF1'] = 'Profession',
 		['PF2'] = 'Profession',
 		['ASP'] = 'ActiveSpec',
@@ -442,12 +443,21 @@ if not AISM then
 	AISM.Updater:RegisterEvent('COMBAT_LOG_EVENT_UNFILTERED')

 	--<< Player Info >>--
-	function AISM:GetPlayerInfoString(TableToSave)
+	function AISM:SettingInspectData(TableToSave)
 		local guildName, guildRankName = GetGuildInfo('player')

 		TableToSave.PlayerInfo = playerName..'_'..UnitPVPName('player')..'/'..playerRealm..'/'..UnitLevel('player')..'/'..playerClass..'/'..playerClassID..'/'..playerRace..'/'..playerRaceID..'/'..playerSex..(guildName and '/'..guildName..'/'..guildRankName or '')
+
+		if IsInGuild() then
+			TableToSave.GuildInfo = GetGuildLevel()..'/'..GetNumGuildMembers()
+
+			for _, DataString in ipairs({ GetGuildLogoInfo(UnitID) }) do
+				TableToSave.GuildInfo = TableToSave.GuildInfo..'/'..DataString
+			end
+		end
 	end
-
+
+
 	function AISM:SendData(InputData, Prefix, Channel, WhisperTarget)
 		Channel = Channel or IsInGroup(LE_PARTY_CATEGORY_INSTANCE) and 'INSTANCE_CHAT' or string.upper(self.CurrentGroupMode)
 		Prefix = Prefix or 'AISM'
@@ -495,6 +505,10 @@ if not AISM then
 		if InputData.PlayerInfo then
 			Data[#Data + 1] = 'PLI:'..InputData.PlayerInfo
 		end
+
+		if InputData.GuildInfo then
+			Data[#Data + 1] = 'GLD:'..InputData.GuildInfo
+		end

 		local DataString = ''
 		local stringLength = 0
@@ -554,7 +568,6 @@ if not AISM then

 	local LastSendGroupType = 'NoGroup'
 	local LastSendInstanceType = 'field'
-	local asdf
 	AISM:SetScript('OnUpdate', function(self, elapsed)
 		if not self.Initialize then
 			SendAddonMessage('AISM', 'AISM_Initialize', 'WHISPER', playerName)
@@ -592,13 +605,14 @@ if not AISM then
 				end

 				if self.needSendDataGroup and self.Updater.SpecUpdated and self.Updater.GlyphUpdated and self.Updater.GearUpdated then
+					print('??')
 					self.SendDataGroupUpdated = self.SendDataGroupUpdated - elapsed

 					if self.SendDataGroupUpdated < 0 then
 						self.SendDataGroupUpdated = self.SendMessageDelay

 						self:SendData(self.PlayerData_ShortString)
-						print('센드데이터')
+						print('센드??터')
 						self.needSendDataGroup = nil
 					end
 				end
@@ -611,13 +625,13 @@ if not AISM then
 					self.SendDataGuildUpdated = self.SendMessageDelay

 					SendAddonMessage('AISM', 'AISM_GUILD_RegistME', 'GUILD')
-					print('길드에 AISM_GUILD_RegistME 전송')
+					print('길드? AISM_GUILD_RegistME 전송')
 					self.needSendDataGuild = nil
 				end
 			end

 			if self.needSendDataGroup == nil and self.needSendDataGuild == nil then
-				print('종료')
+				print('??')
 				self:Hide() -- close function
 			end
 		end
@@ -660,7 +674,7 @@ if not AISM then

 			if needplayerName == playerName and needplayerRealm == playerRealm then
 				local DataToSend = E:CopyTable({}, self.PlayerData)
-				self:GetPlayerInfoString(DataToSend)
+				self:SettingInspectData(DataToSend)

 				self:SendData(DataToSend, Prefix, Channel, Sender)
 			end
@@ -776,6 +790,14 @@ if not AISM then
 							TableToSave.GenderID = stringTable[8]
 							TableToSave.guildName = stringTable[9]
 							TableToSave.guildRankName = stringTable[10]
+						elseif self.DataTypeTable[DataType] == 'GuildInfo' then
+							TableToSave.guildLevel = stringTable[1]
+							TableToSave.guildNumMembers = stringTable[2]
+
+							for i = 3, #stringTable do
+								TableToSave.guildEmblem = TableToSave.guildEmblem or {}
+								TableToSave.guildEmblem[i - 2] = stringTable[i]
+							end
 						end
 					end
 				end
diff --git a/ElvUI_SLE/modules/characterframe/inspectframe.lua b/ElvUI_SLE/modules/characterframe/inspectframe.lua
index b875fd9..aa3864a 100644
--- a/ElvUI_SLE/modules/characterframe/inspectframe.lua
+++ b/ElvUI_SLE/modules/characterframe/inspectframe.lua
@@ -1,11 +1,11 @@
 local E, L, V, P, G, _  = unpack(ElvUI)
-local KI = E:NewModule('KnightFrame_Inspect', 'AceEvent-3.0')
 local AISM = _G['Armory_InspectSupportModule']
+local IFO = E:NewModule('InspectFrameOptions', 'AceEvent-3.0')

 --------------------------------------------------------------------------------
 --<< KnightFrame : Upgrade Inspect Frame like Wow-Armory					>>--
 --------------------------------------------------------------------------------
-local f = CreateFrame('Frame', 'KnightInspect', E.UIParent)
+local KI = CreateFrame('Frame', 'KnightInspect', E.UIParent)
 local ENI = _G['EnhancedNotifyInspectFrame'] or { ['CancelInspect'] = function() end, }
 local C = SLArmoryConstants

@@ -24,7 +24,7 @@ local Default_NotifyInspect
 local Default_InspectUnit

 --<< Key Table >>--
-KI.PageList = { ['Character'] = 'CHARACTER', ['Info'] = 'INFO', ['Spec'] = 'TALENTS', ['PvP'] = 'PVP' }
+KI.PageList = { ['Character'] = 'CHARACTER', ['Info'] = 'INFO', ['Spec'] = 'TALENTS' }
 KI.InfoPageCategoryList = { 'Profession', 'PvP', 'Guild' }
 KI.ModelList = {
 	['Human'] = { ['RaceID'] = 1, [2] = { ['x'] = 0.02, ['y'] = -0.025, ['z'] = -0.6 }, [3] = { ['x'] = -0.01, ['y'] = -0.08, ['z'] = -0.6 } },
@@ -69,41 +69,41 @@ end

 function KI:ChangePage(buttonName)
 	for pageType in pairs(self.PageList) do
-		if f[pageType] then
+		if self[pageType] then
 			if buttonName == pageType..'Button' then
-				f[pageType]:Show()
+				self[pageType]:Show()
 			else
-				f[pageType]:Hide()
+				self[pageType]:Hide()
 			end
 		end
 	end

-	f.MainHandSlot:ClearAllPoints()
-	f.SecondaryHandSlot:ClearAllPoints()
+	self.MainHandSlot:ClearAllPoints()
+	self.SecondaryHandSlot:ClearAllPoints()
 	if buttonName == 'CharacterButton' then
 		for _, slotName in pairs(C.GearList) do
-			f[slotName].ItemLevel:Hide()
+			self[slotName].ItemLevel:Hide()
 		end
-		f.Model:Point('TOPRIGHT', self.HandsSlot)
-		f.MainHandSlot:Point('BOTTOMRIGHT', f.BP, 'TOP', -2, SPACING)
-		f.SecondaryHandSlot:Point('BOTTOMLEFT', f.BP, 'TOP', 2, SPACING)
+		self.Model:Point('TOPRIGHT', self.HandsSlot)
+		self.MainHandSlot:Point('BOTTOMRIGHT', self.BP, 'TOP', -2, SPACING)
+		self.SecondaryHandSlot:Point('BOTTOMLEFT', self.BP, 'TOP', 2, SPACING)
 	else
 		for _, slotName in pairs(C.GearList) do
-			f[slotName].ItemLevel:Show()
+			self[slotName].ItemLevel:Show()
 		end
-		f.Model:Point('TOPRIGHT', UIParent, 'BOTTOMLEFT')
-		f.MainHandSlot:Point('BOTTOMLEFT', f.BP, 'TOPLEFT', 1, SPACING)
-		f.SecondaryHandSlot:Point('BOTTOMRIGHT', f.BP, 'TOPRIGHT', -1, SPACING)
+		self.Model:Point('TOPRIGHT', UIParent, 'BOTTOMLEFT')
+		self.MainHandSlot:Point('BOTTOMLEFT', self.BP, 'TOPLEFT', 1, SPACING)
+		self.SecondaryHandSlot:Point('BOTTOMRIGHT', self.BP, 'TOPRIGHT', -1, SPACING)
 	end
 end

 KI.EquipmentSlot_OnEnter = function(self)
-	--if KI.CurrentInspectData.Gear[self.SlotName].ItemLink then
 	if self.Link then
 		GameTooltip:SetOwner(self, 'ANCHOR_RIGHT')
 		GameTooltip:SetHyperlink(self.Link)
-		--GameTooltip:SetHyperlink(KI.CurrentInspectData.Gear[self.SlotName].ItemLink)
-
+
+		--ITEM_SOULBOUND
+
 		local CurrentLineText, SetName
 		for i = 1, GameTooltip:NumLines() do
 			CurrentLineText = _G['GameTooltipTextLeft'..i]:GetText()
@@ -138,6 +138,7 @@ KI.EquipmentSlot_OnEnter = function(self)

 					_G['GameTooltipTextLeft'..i]:SetText(string.gsub(CurrentLineText, ' %(%d/', ' %('..SetCount..'/', 1))
 				end
+
 				break
 			end
 		end
@@ -407,7 +408,7 @@ function KI:CreateInspectFrame()

 			local endx, endy, z, x, y
 			if button == 'LeftButton' then
-				f.Model:SetScript('OnUpdate', function(self)
+				KI.Model:SetScript('OnUpdate', function(self)
 					endx, endy = GetCursorPosition()

 					self.rotation = (endx - self.startx) / 34 + self:GetFacing()
@@ -415,7 +416,7 @@ function KI:CreateInspectFrame()
 					self.startx, self.starty = GetCursorPosition()
 				end)
 			elseif button == 'RightButton' then
-				f.Model:SetScript('OnUpdate', function(self)
+				KI.Model:SetScript('OnUpdate', function(self)
 					endx, endy = GetCursorPosition()

 					z, x, y = self:GetPosition(z, x, y)
@@ -529,7 +530,7 @@ function KI:CreateInspectFrame()
 					Slot['Socket'..i].Socket:SetFrameLevel(CoreFrameLevel + 4)
 					Slot['Socket'..i].Socket:SetScript('OnEnter', C.CommonScript.GemSocket_OnEnter)
 					Slot['Socket'..i].Socket:SetScript('OnLeave', C.CommonScript.OnLeave)
-					Slot['Socket'..i].Socket:SetScript('OnClick', GemSocket_OnClick)
+					Slot['Socket'..i].Socket:SetScript('OnClick', self.GemSocket_OnClick)

 					Slot['Socket'..i].Texture = Slot['Socket'..i].Socket:CreateTexture(nil, 'OVERLAY')
 					Slot['Socket'..i].Texture:SetTexCoord(.1, .9, .1, .9)
@@ -572,6 +573,9 @@ function KI:CreateInspectFrame()
 		self.Trinket0Slot:Point('BOTTOMRIGHT', self.Trinket1Slot, 'TOPRIGHT', 0, SPACING)
 		self.Trinket1Slot:Point('RIGHT', self.BP, -1, 0)
 		self.Trinket1Slot:Point('BOTTOM', self.SecondaryHandSlot, 'TOP', 0, SPACING)
+
+		-- ItemLevel
+		C.Toolkit.TextSetting(self.Character, nil, { ['Tag'] = 'AverageItemLevel', ['FontSize'] = 12, }, 'TOP', self.Model)
 	end

 	self.Model:Point('TOPLEFT', self.HeadSlot)
@@ -606,62 +610,62 @@ function KI:CreateInspectFrame()
 		self.Info.Page:Point('TOPRIGHT', self.Info, -1, 0)
 		self.Info.Page:Height(600)

-		local g
+		local f
 		for _, CategoryType in pairs(KI.InfoPageCategoryList) do
-			g = CreateFrame('ScrollFrame', nil, self.Info.Page)
-			g:SetBackdrop({
+			f = CreateFrame('ScrollFrame', nil, self.Info.Page)
+			f:SetBackdrop({
 				bgFile = E.media.blankTex,
 				edgeFile = E.media.blankTex,
 				tile = false, tileSize = 0, edgeSize = E.mult,
 				insets = { left = 0, right = 0, top = 0, bottom = 0}
 			})
-			g:SetBackdropColor(.08, .08, .08, .8)
-			g:SetBackdropBorderColor(0, 0, 0)
-			g:Point('LEFT', self.Info.Page)
-			g:Point('RIGHT', self.Info.Page)
-			g:Height(INFO_TAB_SIZE + SPACING * 2)
-
-			g.IconSlot = CreateFrame('Frame', nil, g)
-			g.IconSlot:Size(INFO_TAB_SIZE)
-			g.IconSlot:SetBackdrop({
+			f:SetBackdropColor(.08, .08, .08, .8)
+			f:SetBackdropBorderColor(0, 0, 0)
+			f:Point('LEFT', self.Info.Page)
+			f:Point('RIGHT', self.Info.Page)
+			f:Height(INFO_TAB_SIZE + SPACING * 2)
+
+			f.IconSlot = CreateFrame('Frame', nil, f)
+			f.IconSlot:Size(INFO_TAB_SIZE)
+			f.IconSlot:SetBackdrop({
 				bgFile = E.media.blankTex,
 				edgeFile = E.media.blankTex,
 				tile = false, tileSize = 0, edgeSize = E.mult,
 				insets = { left = 0, right = 0, top = 0, bottom = 0}
 			})
-			g.IconSlot:Point('TOPLEFT', g, SPACING, -SPACING)
-			g.Icon = g.IconSlot:CreateTexture(nil, 'OVERLAY')
-			g.Icon:SetTexCoord(unpack(E.TexCoords))
-			g.Icon:SetInside()
-
-			g.Tab = CreateFrame('Frame', nil, g)
-			g.Tab:Point('TOPLEFT', g.IconSlot, 'TOPRIGHT', 1, 0)
-			g.Tab:Point('BOTTOMRIGHT', g, 'TOPRIGHT', -SPACING, -(SPACING + INFO_TAB_SIZE))
-			g.Tab:SetBackdrop({
+			f.IconSlot:Point('TOPLEFT', f, SPACING, -SPACING)
+			f.Icon = f.IconSlot:CreateTexture(nil, 'OVERLAY')
+			f.Icon:SetTexCoord(unpack(E.TexCoords))
+			f.Icon:SetInside()
+
+			f.Tab = CreateFrame('Frame', nil, f)
+			f.Tab:Point('TOPLEFT', f.IconSlot, 'TOPRIGHT', 1, 0)
+			f.Tab:Point('BOTTOMRIGHT', f, 'TOPRIGHT', -SPACING, -(SPACING + INFO_TAB_SIZE))
+			f.Tab:SetBackdrop({
 				bgFile = E.media.normTex,
 				edgeFile = E.media.blankTex,
 				tile = false, tileSize = 0, edgeSize = E.mult,
 				insets = { left = 0, right = 0, top = 0, bottom = 0}
 			})

-			g.Tooltip = CreateFrame('Button', nil, g)
-			g.Tooltip:Point('TOPLEFT', g.Icon)
-			g.Tooltip:Point('BOTTOMRIGHT', g.Tab)
-			g.Tooltip:SetFrameLevel(CoreFrameLevel + 4)
-			g.Tooltip:SetScript('OnClick', KI.Category_OnClick)
+			f.Tooltip = CreateFrame('Button', nil, f)
+			f.Tooltip:Point('TOPLEFT', f.Icon)
+			f.Tooltip:Point('BOTTOMRIGHT', f.Tab)
+			f.Tooltip:SetFrameLevel(CoreFrameLevel + 4)
+			f.Tooltip:SetScript('OnClick', KI.Category_OnClick)

-			C.Toolkit.TextSetting(g.Tab, CategoryType, { ['FontSize'] = 10 }, 'LEFT', 6, 1)
+			C.Toolkit.TextSetting(f.Tab, CategoryType, { ['FontSize'] = 10 }, 'LEFT', 6, 1)

-			g.Page = CreateFrame('Frame', nil, g)
-			g:SetScrollChild(g.Page)
-			g.Page:SetFrameLevel(CoreFrameLevel + 2)
-			g.Page:Point('TOPLEFT', g.Icon, 'BOTTOMLEFT', 0, -SPACING)
-			g.Page:Point('BOTTOMRIGHT', g, -SPACING, SPACING)
+			f.Page = CreateFrame('Frame', nil, f)
+			f:SetScrollChild(f.Page)
+			f.Page:SetFrameLevel(CoreFrameLevel + 2)
+			f.Page:Point('TOPLEFT', f.Icon, 'BOTTOMLEFT', 0, -SPACING)
+			f.Page:Point('BOTTOMRIGHT', f, -SPACING, SPACING)

-			self.Info[CategoryType] = g
+			self.Info[CategoryType] = f
 		end

-		do --Profession Part
+		do -- Profession Part
 			self.Info.Profession.CategoryHeight = INFO_TAB_SIZE + 34 + SPACING * 3
 			self.Info.Profession.Icon:SetTexture(GetSpellTexture(110396))

@@ -807,8 +811,8 @@ function KI:CreateInspectFrame()
 				self.Spec['Spec'..i].Icon = CreateFrame('Frame', nil, self.Spec['Spec'..i].Tab)
 				self.Spec['Spec'..i].Icon:Size(27, 26)
 				self.Spec['Spec'..i].Icon:SetBackdrop({
-					bgFile = E['media'].blankTex,
-					edgeFile = E['media'].blankTex,
+					bgFile = E.media.blankTex,
+					edgeFile = E.media.blankTex,
 					tile = false, tileSize = 0, edgeSize = E.mult,
 					insets = { left = 0, right = 0, top = 0, bottom = 0}
 				})
@@ -853,7 +857,7 @@ function KI:CreateInspectFrame()
 			})
 			self.Spec['TalentTier'..i]:SetBackdropColor(.08, .08, .08)
 			self.Spec['TalentTier'..i]:SetBackdropBorderColor(0, 0, 0)
-			self.Spec['TalentTier'..i]:SetFrameLevel(CoreFrameLevel + 1)
+			self.Spec['TalentTier'..i]:SetFrameLevel(CoreFrameLevel + 2)
 			self.Spec['TalentTier'..i]:Size(352, TALENT_SLOT_SIZE + SPACING * 2)

 			for k = 1, NUM_TALENT_COLUMNS do
@@ -864,7 +868,7 @@ function KI:CreateInspectFrame()
 					tile = false, tileSize = 0, edgeSize = E.mult,
 					insets = { left = 0, right = 0, top = 0, bottom = 0}
 				})
-				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetFrameLevel(CoreFrameLevel + 2)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetFrameLevel(CoreFrameLevel + 3)
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:Size(114, TALENT_SLOT_SIZE)
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon = CreateFrame('Frame', nil, self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)])
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon:Size(20)
@@ -882,12 +886,12 @@ function KI:CreateInspectFrame()
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].text:Point('BOTTOMLEFT', self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon, 'BOTTOMRIGHT', SPACING, -SPACING)
 				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].text:Point('RIGHT', -SPACING, 0)

-				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].tooltip = CreateFrame('Button', nil, self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)])
-				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].tooltip:SetFrameLevel(CoreFrameLevel + 3)
-				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].tooltip:SetInside()
-				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].tooltip:SetScript('OnClick', self.OnClick)
-				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].tooltip:SetScript('OnEnter', C.CommonScript.OnEnter)
-				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].tooltip:SetScript('OnLeave', C.CommonScript.OnLeave)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip = CreateFrame('Button', nil, self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)])
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip:SetFrameLevel(CoreFrameLevel + 4)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip:SetInside()
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip:SetScript('OnClick', self.OnClick)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip:SetScript('OnEnter', C.CommonScript.OnEnter)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Tooltip:SetScript('OnLeave', C.CommonScript.OnLeave)
 			end

 			self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + 1)]:Point('RIGHT', self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + 2)], 'LEFT', -2, 0)
@@ -1093,8 +1097,10 @@ function KI:CreateInspectFrame()
 							return true
 						end
 					end, TableIndex, true)
+					print('전송')
 					SendAddonMessage('AISM_Inspect', 'AISM_DataRequestForInspecting:'..Name..'-'..Realm, SendChannel, TableIndex)
 				elseif Unit then
+					print('직접 살펴보기')
 					KI.InspectUnit(Unit)
 				end
 			end
@@ -1146,7 +1152,7 @@ KI.INSPECT_READY = function(InspectedUnitGUID)
 	local CurrentSetItem = {}
 	local Slot, SlotTexture, SlotLink, CheckSpace, colorR, colorG, colorB, tooltipText, TransmogrifiedItem, SetName, SetItemCount, SetItemMax, SetOptionCount
 	for _, SlotName in pairs(C.GearList) do
-		Slot = f[SlotName]
+		Slot = KI[SlotName]
 		KI.CurrentInspectData.Gear[SlotName] = {}

 		SlotTexture = GetInventoryItemTexture(UnitID, Slot.ID)
@@ -1159,17 +1165,17 @@ KI.INSPECT_READY = function(InspectedUnitGUID)
 			else
 				KI.CurrentInspectData.Gear[SlotName].ItemLink = SlotLink

-				f.ScanTTForInspecting:ClearLines()
+				KI.ScanTTForInspecting:ClearLines()
 				for i = 1, 10 do
 					_G['KnightInspectScanTT_ITexture'..i]:SetTexture(nil)
 				end
-				f.ScanTTForInspecting:SetInventoryItem(UnitID, Slot.ID)
+				KI.ScanTTForInspecting:SetInventoryItem(UnitID, Slot.ID)

 				TransmogrifiedItem = nil
 				checkSpace = 2
 				SetOptionCount = 1

-				for i = 1, f.ScanTTForInspecting:NumLines() do
+				for i = 1, KI.ScanTTForInspecting:NumLines() do
 					tooltipText = _G['KnightInspectScanTT_ITextLeft'..i]:GetText()

 					if not TransmogrifiedItem and tooltipText:match(C.TransmogrifiedKey) then
@@ -1193,7 +1199,7 @@ KI.INSPECT_READY = function(InspectedUnitGUID)
 						else
 							CurrentSetItem[SetName] = {}

-							for k = 1, f.ScanTTForInspecting:NumLines() do
+							for k = 1, KI.ScanTTForInspecting:NumLines() do
 								tooltipText = _G['KnightInspectScanTT_ITextLeft'..(i+k)]:GetText()

 								if tooltipText == ' ' then
@@ -1275,6 +1281,7 @@ KI.InspectUnit = function(UnitID)

 		return
 	elseif not UnitIsVisible(UnitID) then
+
 		return
 	else
 		UnitID = NotifyInspect(UnitID, true) or UnitID
@@ -1346,7 +1353,7 @@ function KI:InspectFrame_DataSetting(DataTable)
 		-- Setting except shirt and tabard
 		for _, slotName in pairs(self.GearUpdated or C.GearList) do
 			if slotName ~= 'ShirtSlot' and slotName ~= 'TabardSlot' then
-				Slot = f[slotName]
+				Slot = self[slotName]

 				do --<< Clear Setting >>--
 					ErrorDetected, TrueItemLevel, IsEnchanted, ItemUpgradeID, ItemTexture, r, g, b = nil, nil, nil, nil, nil, 0, 0, 0
@@ -1485,10 +1492,6 @@ function KI:InspectFrame_DataSetting(DataTable)
 							if ItemUpgradeID == '0' then
 								ItemUpgradeID = nil
 							else
-								if not C.ItemUpgrade[ItemUpgradeID] then
-									print('New Upgrade ID |cffceff00['..ItemUpgradeID..']|r : |cffceff00'..(TrueItemLevel - BasicItemLevel))
-								end
-
 								ItemUpgradeID = TrueItemLevel - BasicItemLevel
 							end
 						end
@@ -1536,8 +1539,8 @@ function KI:InspectFrame_DataSetting(DataTable)
 								Slot.SocketWarning.Message = L['Missing Buckle']

 								Slot.SocketWarning:SetScript('OnClick', function(self)
-
 									local itemName, itemLink
+
 									if TrueItemLevel < 300 then
 										itemName, itemLink = GetItemInfo(41611)
 									elseif TrueItemLevel < 417 then
@@ -1587,7 +1590,7 @@ function KI:InspectFrame_DataSetting(DataTable)
 		end

 		for _, slotName in pairs({ 'ShirtSlot', 'TabardSlot' }) do
-			Slot = f[slotName]
+			Slot = self[slotName]
 			ItemRarity, ItemTexture, r, g, b = nil, nil, 0, 0, 0

 			Slot.Link = DataTable.Gear[slotName].ItemLink
@@ -1597,11 +1600,12 @@ function KI:InspectFrame_DataSetting(DataTable)
 				r, g, b = GetItemQualityColor(ItemRarity)
 			end

-			Slot.Texture:SetTexture(ItemTexture or f[slotName].EmptyTexture)
+			Slot.Texture:SetTexture(ItemTexture or self[slotName].EmptyTexture)
 			Slot:SetBackdropBorderColor(r, g, b)
 		end

 		self.SetItem = E:CopyTable({}, KI.CurrentInspectData.SetItem)
+		self.Character.AverageItemLevel:SetText(C.Toolkit.Color_Value(STAT_AVERAGE_ITEM_LEVEL)..' : '..format('%.2f', ItemTotal / ItemCount))
 	end

 	if needUpdate then
@@ -1640,34 +1644,34 @@ function KI:InspectFrame_DataSetting(DataTable)
 	end

 	do --<< Information Page Setting >>--
-		if DataTable.guildName then
+		if DataTable.guildName and DataTable.guildLevel and DataTable.guildNumMembers then
 			self.Info.Guild:Show()
-			SetSmallGuildTabardTextures(nil, self.Info.Guild.Emblem, self.Info.Guild.BG, self.Info.Guild.Border, DataTable.guildEmblem)
 			self.Info.Guild.Page.Name:SetText('|cff2eb7e4'..DataTable.guildName)
-			self.Info.Guild.Page.LevelMembers:SetText('|cff77c0ff'..DataTable.guildLevel..'|r '..LEVEL..' / '..format(INSPECT_GUILD_NUM_MEMBERS:gsub('%%d', '%%s'), '|cff77c0ff'..DataTable.guildNumMembers..'|r'))
+			self.Info.Guild.Page.LevelMembers:SetText('|cff77c0ff'..DataTable.guildLevel..'|r '..LEVEL..(DataTable.guildNumMembers > 0 and ' / '..format(INSPECT_GUILD_NUM_MEMBERS:gsub('%%d', '%%s'), '|cff77c0ff'..DataTable.guildNumMembers..'|r ') or ''))
+			SetSmallGuildTabardTextures('player', self.Info.Guild.Emblem, self.Info.Guild.BG, self.Info.Guild.Border, DataTable.guildEmblem)
 		else
 			self.Info.Guild:Hide()
 		end
 	end

-	do --<< Specialization Setting >>--
+	do --<< Specialization Page Setting >>--
 		local SpecGroup, Name, Color, Texture, SpecRole

 		if DataTable.Specialization.ActiveSpec then
 			SpecGroup = DataTable.Specialization.ActiveSpec

 			for i = 2, MAX_TALENT_GROUPS do
-				f.Spec['Spec'..i]:Show()
+				self.Spec['Spec'..i]:Show()
 			end
 		else
 			SpecGroup = 1

 			for i = 2, MAX_TALENT_GROUPS do
-				f.Spec['Spec'..i]:Hide()
+				self.Spec['Spec'..i]:Hide()
 			end
 		end

-		f.SpecIcon:SetTexture('Interface\\ICONS\\INV_Misc_QuestionMark.blp')
+		self.SpecIcon:SetTexture('Interface\\ICONS\\INV_Misc_QuestionMark.blp')
 		for i = 1, MAX_TALENT_GROUPS do
 			Color = '|cff808080'

@@ -1681,7 +1685,7 @@ function KI:InspectFrame_DataSetting(DataTable)

 					if i == SpecGroup then
 						Color = C.ClassRole[DataTable.Class][Name].Color
-						f.SpecIcon:SetTexture(Texture)
+						self.SpecIcon:SetTexture(Texture)
 					end

 					Name = (SpecRole == 'Tank' and '|TInterface\\AddOns\\ElvUI\\media\\textures\\tank.tga:16:16:-3:0|t' or SpecRole == 'Healer' and '|TInterface\\AddOns\\ElvUI\\media\\textures\\healer.tga:16:16:-3:-1|t' or '|TInterface\\AddOns\\ElvUI\\media\\textures\\dps.tga:16:16:-2:-1|t')..Name
@@ -1693,52 +1697,52 @@ function KI:InspectFrame_DataSetting(DataTable)
 				Name = '|cff808080'..L['No Specialization']
 			end

-			f.Spec['Spec'..i].Tab.text:SetText(Color..Name)
-			f.Spec['Spec'..i].Texture:SetTexture(Texture)
-			f.Spec['Spec'..i].Texture:SetDesaturated(i ~= SpecGroup)
+			self.Spec['Spec'..i].Tab.text:SetText(Color..Name)
+			self.Spec['Spec'..i].Texture:SetTexture(Texture)
+			self.Spec['Spec'..i].Texture:SetDesaturated(i ~= SpecGroup)
 		end

 		-- Talents
 		for i = 1, NUM_TALENT_COLUMNS * MAX_NUM_TALENT_TIERS do
 			Name, Texture = GetTalentInfo(i, true, nil, nil, DataTable.ClassID)

-			f.Spec['Talent'..i].Icon.Texture:SetTexture(Texture)
-			f.Spec['Talent'..i].text:SetText(Name)
-			f.Spec['Talent'..i].tooltip.Link = GetTalentLink(i, true, DataTable.ClassID)
+			self.Spec['Talent'..i].Icon.Texture:SetTexture(Texture)
+			self.Spec['Talent'..i].text:SetText(Name)
+			self.Spec['Talent'..i].Tooltip.Link = GetTalentLink(i, true, DataTable.ClassID)
 		end
 	end

 	do --<< Model and Frame Setting When InspectUnit Changed >>--
 		if DataTable.UnitID and UnitIsVisible(DataTable.UnitID) then
-			f.Model:SetUnit(DataTable.UnitID)
+			self.Model:SetUnit(DataTable.UnitID)
 		else
-			f.Model:SetCustomRace(self.ModelList[DataTable.RaceID].RaceID, DataTable.GenderID - 2)
-			f.Model:TryOn(HeadSlotItem)
-			f.Model:TryOn(BackSlotItem)
-			f.Model:UndressSlot(self.HeadSlot.ID)
-			f.Model:UndressSlot(self.BackSlot.ID)
-			f.Model:Undress()
+			self.Model:SetCustomRace(self.ModelList[DataTable.RaceID].RaceID, DataTable.GenderID - 2)
+			self.Model:TryOn(HeadSlotItem)
+			self.Model:TryOn(BackSlotItem)
+			self.Model:UndressSlot(self.HeadSlot.ID)
+			self.Model:UndressSlot(self.BackSlot.ID)
+			self.Model:Undress()

 			for _, slotName in pairs(C.GearList) do
 				if DataTable.Gear[slotName].ItemLink then
 					if type(DataTable.Gear[slotName].Transmogrify) == 'number' then
-						f.Model:TryOn(DataTable.Gear[slotName].Transmogrify)
-					else
-						f.Model:TryOn(DataTable.Gear[slotName].ItemLink)
+						self.Model:TryOn(DataTable.Gear[slotName].Transmogrify)
+					elseif not (DataTable.Gear[slotName].Transmogrify and DataTable.Gear[slotName].Transmogrify == 'NotDisplayed') then
+						self.Model:TryOn(DataTable.Gear[slotName].ItemLink)
 					end
 				end
 			end
 		end

 		if not (self.LastDataSetting and self.LastDataSetting == DataTable.Name..(DataTable.Realm and '-'..DataTable.Realm or '')) then
-			f.Model:SetPosition(self.ModelList[DataTable.RaceID][DataTable.GenderID] and self.ModelList[DataTable.RaceID][DataTable.GenderID].z or 0, self.ModelList[DataTable.RaceID][DataTable.GenderID] and self.ModelList[DataTable.RaceID][DataTable.GenderID].x or 0, self.ModelList[DataTable.RaceID][DataTable.GenderID] and self.ModelList[DataTable.RaceID][DataTable.GenderID].y or 0)
-			f.Model:SetFacing(-5.67)
-			f.Model:SetPortraitZoom(1)
-			f.Model:SetPortraitZoom(0)
+			self.Model:SetPosition(self.ModelList[DataTable.RaceID][DataTable.GenderID] and self.ModelList[DataTable.RaceID][DataTable.GenderID].z or 0, self.ModelList[DataTable.RaceID][DataTable.GenderID] and self.ModelList[DataTable.RaceID][DataTable.GenderID].x or 0, self.ModelList[DataTable.RaceID][DataTable.GenderID] and self.ModelList[DataTable.RaceID][DataTable.GenderID].y or 0)
+			self.Model:SetFacing(-5.67)
+			self.Model:SetPortraitZoom(1)
+			self.Model:SetPortraitZoom(0)

 			self:ChangePage('CharacterButton')
-			f.ClassIconSlot:SetBackdropBorderColor(RAID_CLASS_COLORS[DataTable.Class].r, RAID_CLASS_COLORS[DataTable.Class].g, RAID_CLASS_COLORS[DataTable.Class].b)
-			f.SpecIconSlot:SetBackdropBorderColor(RAID_CLASS_COLORS[DataTable.Class].r, RAID_CLASS_COLORS[DataTable.Class].g, RAID_CLASS_COLORS[DataTable.Class].b)
+			self.ClassIconSlot:SetBackdropBorderColor(RAID_CLASS_COLORS[DataTable.Class].r, RAID_CLASS_COLORS[DataTable.Class].g, RAID_CLASS_COLORS[DataTable.Class].b)
+			self.SpecIconSlot:SetBackdropBorderColor(RAID_CLASS_COLORS[DataTable.Class].r, RAID_CLASS_COLORS[DataTable.Class].g, RAID_CLASS_COLORS[DataTable.Class].b)

 			self:ToggleSpecializationTab(DataTable.Specialization.ActiveSpec or 1, DataTable)
 		elseif not (self.LastActiveSpec and self.LastActiveSpec == (DataTable.Specialization.ActiveSpec or 1)) then
@@ -1755,47 +1759,47 @@ function KI:ToggleSpecializationTab(Group, DataTable)

 	for i = 1, MAX_TALENT_GROUPS do
 		if i == Group then
-			f.Spec['Spec'..i].BottomLeftBorder:Show()
-			f.Spec['Spec'..i].BottomRightBorder:Show()
-			f.Spec['Spec'..i].Tab:SetFrameLevel(CoreFrameLevel + 3)
-			f.Spec['Spec'..i].Tab.text:Point('BOTTOMRIGHT', 0, -10)
+			self.Spec['Spec'..i].BottomLeftBorder:Show()
+			self.Spec['Spec'..i].BottomRightBorder:Show()
+			self.Spec['Spec'..i].Tab:SetFrameLevel(CoreFrameLevel + 3)
+			self.Spec['Spec'..i].Tab.text:Point('BOTTOMRIGHT', 0, -10)
 		else
-			f.Spec['Spec'..i].BottomLeftBorder:Hide()
-			f.Spec['Spec'..i].BottomRightBorder:Hide()
-			f.Spec['Spec'..i].Tab:SetFrameLevel(CoreFrameLevel + 2)
-			f.Spec['Spec'..i].Tab.text:Point('BOTTOMRIGHT', 0, 0)
+			self.Spec['Spec'..i].BottomLeftBorder:Hide()
+			self.Spec['Spec'..i].BottomRightBorder:Hide()
+			self.Spec['Spec'..i].Tab:SetFrameLevel(CoreFrameLevel + 2)
+			self.Spec['Spec'..i].Tab.text:Point('BOTTOMRIGHT', 0, 0)
 		end
 	end

 	if Group == self.LastActiveSpec then
 		r, g, b = RAID_CLASS_COLORS[DataTable.Class].r, RAID_CLASS_COLORS[DataTable.Class].g, RAID_CLASS_COLORS[DataTable.Class].b
 	else
-		r, g, b = 0.4, 0.4, 0.4
+		r, g, b = .4, .4, .4
 	end

-	f.Spec.BottomBorder:SetTexture(r, g, b)
-	f.Spec.LeftBorder:SetTexture(r, g, b)
-	f.Spec.RightBorder:SetTexture(r, g, b)
+	self.Spec.BottomBorder:SetTexture(r, g, b)
+	self.Spec.LeftBorder:SetTexture(r, g, b)
+	self.Spec.RightBorder:SetTexture(r, g, b)

 	local LevelTable = CLASS_TALENT_LEVELS[DataTable.Class] or CLASS_TALENT_LEVELS.DEFAULT
 	for i = 1, MAX_NUM_TALENT_TIERS do
 		for k = 1, NUM_TALENT_COLUMNS do
 			if DataTable.Specialization[Group]['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)] then
-				f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetBackdropColor(r, g, b, .3)
-				f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetBackdropBorderColor(r, g, b)
-				f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon:SetBackdropBorderColor(r, g, b)
-				f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon.Texture:SetDesaturated(0)
-				f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].text:SetTextColor(1, 1, 1)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetBackdropColor(r, g, b, .3)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetBackdropBorderColor(r, g, b)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon:SetBackdropBorderColor(r, g, b)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon.Texture:SetDesaturated(0)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].text:SetTextColor(1, 1, 1)
 			else
-				f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetBackdropColor(.1, .1, .1)
-				f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetBackdropBorderColor(0, 0, 0)
-				f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon:SetBackdropBorderColor(0, 0, 0)
-				f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon.Texture:SetDesaturated(1)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetBackdropColor(.1, .1, .1)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)]:SetBackdropBorderColor(0, 0, 0)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon:SetBackdropBorderColor(0, 0, 0)
+				self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].Icon.Texture:SetDesaturated(1)

 				if DataTable.Level < LevelTable[i] then
-					f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].text:SetTextColor(.7, .3, .3)
+					self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].text:SetTextColor(.7, .3, .3)
 				else
-					f.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].text:SetTextColor(.5, .5, .5)
+					self.Spec['Talent'..((i - 1) * NUM_TALENT_COLUMNS + k)].text:SetTextColor(.5, .5, .5)
 				end
 			end
 		end
@@ -1805,23 +1809,23 @@ function KI:ToggleSpecializationTab(Group, DataTable)
 	for i = 1, NUM_GLYPH_SLOTS do
 		Name, _, Texture = GetSpellInfo(DataTable.Glyph[Group]['Glyph'..i..'SpellID'])

-		f.Spec['Glyph'..i].text:SetJustifyH('LEFT')
-		f.Spec['Glyph'..i].text:SetText(Name)
-		f.Spec['Glyph'..i].Icon.Texture:SetTexture(Texture)
-		f.Spec['Glyph'..i].Tooltip.Link = DataTable.Glyph[Group]['Glyph'..i..'ID'] ~= 0 and GetGlyphLinkByID(DataTable.Glyph[Group]['Glyph'..i..'ID'])
+		self.Spec['Glyph'..i].text:SetJustifyH('LEFT')
+		self.Spec['Glyph'..i].text:SetText(Name)
+		self.Spec['Glyph'..i].Icon.Texture:SetTexture(Texture)
+		self.Spec['Glyph'..i].Tooltip.Link = DataTable.Glyph[Group]['Glyph'..i..'ID'] ~= 0 and GetGlyphLinkByID(DataTable.Glyph[Group]['Glyph'..i..'ID'])

 		if DataTable.Glyph[Group]['Glyph'..i..'SpellID'] ~= 0 then
-			f.Spec['Glyph'..i]:SetBackdropColor(r, g, b, .3)
-			f.Spec['Glyph'..i]:SetBackdropBorderColor(r, g, b)
-			f.Spec['Glyph'..i].Icon:SetBackdropBorderColor(r, g, b)
+			self.Spec['Glyph'..i]:SetBackdropColor(r, g, b, .3)
+			self.Spec['Glyph'..i]:SetBackdropBorderColor(r, g, b)
+			self.Spec['Glyph'..i].Icon:SetBackdropBorderColor(r, g, b)
 		else
-			f.Spec['Glyph'..i]:SetBackdropColor(.1, .1, .1)
-			f.Spec['Glyph'..i]:SetBackdropBorderColor(0, 0, 0)
-			f.Spec['Glyph'..i].Icon:SetBackdropBorderColor(0, 0, 0)
+			self.Spec['Glyph'..i]:SetBackdropColor(.1, .1, .1)
+			self.Spec['Glyph'..i]:SetBackdropBorderColor(0, 0, 0)
+			self.Spec['Glyph'..i].Icon:SetBackdropBorderColor(0, 0, 0)

-			if f.Spec['Glyph'..i].NeedLevel > DataTable.Level then
-				f.Spec['Glyph'..i].text:SetJustifyH('CENTER')
-				f.Spec['Glyph'..i].text:SetText(E:RGBToHex(.7, .3, .3)..f.Spec['Glyph'..i].NeedLevel..' '..LEVEL)
+			if self.Spec['Glyph'..i].NeedLevel > DataTable.Level then
+				self.Spec['Glyph'..i].text:SetJustifyH('CENTER')
+				self.Spec['Glyph'..i].text:SetText(E:RGBToHex(.7, .3, .3)..self.Spec['Glyph'..i].NeedLevel..' '..LEVEL)
 			end
 		end
 	end
@@ -1833,68 +1837,43 @@ function KI:ToggleSpecializationTab(Group, DataTable)
 			r, g, b = .3, .3, .3
 		end

-		f.Spec['Spec'..i].TopBorder:SetTexture(r, g, b)
-		f.Spec['Spec'..i].LeftBorder:SetTexture(r, g, b)
-		f.Spec['Spec'..i].RightBorder:SetTexture(r, g, b)
-		f.Spec['Spec'..i].BottomLeftBorder:SetTexture(r, g, b)
-		f.Spec['Spec'..i].BottomRightBorder:SetTexture(r, g, b)
-		f.Spec['Spec'..i].Icon:SetBackdropBorderColor(r, g, b)
+		self.Spec['Spec'..i].TopBorder:SetTexture(r, g, b)
+		self.Spec['Spec'..i].LeftBorder:SetTexture(r, g, b)
+		self.Spec['Spec'..i].RightBorder:SetTexture(r, g, b)
+		self.Spec['Spec'..i].BottomLeftBorder:SetTexture(r, g, b)
+		self.Spec['Spec'..i].BottomRightBorder:SetTexture(r, g, b)
+		self.Spec['Spec'..i].Icon:SetBackdropBorderColor(r, g, b)
 	end
 end

 UnitPopupButtons.KnightInspect = { ['text'] = L['KnightInspect'], ['dist'] = 0, }

-function KI:ToggleKnightInspect()
---	if E.db.KnightFrame_Armory.Enable and not self.Activate then
-	if not KI.Activate then
-		Default_NotifyInspect = _G['NotifyInspect']
-		Default_InspectUnit = _G['InspectUnit']
-
-		if KI.CreateInspectFrame then
-			KI:CreateInspectFrame(KnightInspect)
-		end
-
-		_G['NotifyInspect'] = ENI.NotifyInspect or _G['NotifyInspect']
-		_G['InspectUnit'] = KI.InspectUnit
-
-		tinsert(UnitPopupMenus.FRIEND, 5, 'KnightInspect')
-		tinsert(UnitPopupMenus.GUILD, 5, 'KnightInspect')
-		tinsert(UnitPopupMenus.RAID, 12, 'KnightInspect')
-		tinsert(UnitPopupMenus.FOCUS, 5, 'KnightInspect')
-		for _, GroupType in pairs({ 'PLAYER', 'PARTY'}) do
-			for Index, MenuType in pairs(UnitPopupMenus[GroupType]) do
-				if MenuType == 'INSPECT' then
-					UnitPopupMenus[GroupType][Index] = 'KnightInspect'
-					break
-				end
-			end
-		end
-
-		KI.Activate = true
-	elseif KI.Activate then
-		_G['NotifyInspect'] = Default_NotifyInspect
-		_G['InspectUnit'] = Default_InspectUnit
-		Default_NotifyInspect = nil
-		Default_InspectUnit = nil
-
-		for _, GroupType in pairs({ 'PLAYER', 'FOCUS', 'PARTY', 'RAID', 'FRIEND', 'GUILD' }) do
-			for Index, MenuType in pairs(UnitPopupMenus[GroupType]) do
-				if MenuType == 'KnightInspect' then
-					if GroupType == 'PLAYER' or GroupType == 'Party' then
-						UnitPopupMenus[GroupType][Index] = 'INSPECT'
-					else
-						tremove(UnitPopupMenus[GroupType], Index)
-					end
-					break
-				end
+function IFO:Initialize()
+	-- if not E.private.sle.Armory.Inspect.Enable then return end
+
+	Default_NotifyInspect = _G['NotifyInspect']
+	Default_InspectUnit = _G['InspectUnit']
+
+	if KI.CreateInspectFrame then
+		KI:CreateInspectFrame()
+	end
+
+	_G['NotifyInspect'] = ENI.NotifyInspect or _G['NotifyInspect']
+	_G['InspectUnit'] = KI.InspectUnit
+
+	tinsert(UnitPopupMenus.FRIEND, 5, 'KnightInspect')
+	tinsert(UnitPopupMenus.GUILD, 5, 'KnightInspect')
+	tinsert(UnitPopupMenus.RAID, 12, 'KnightInspect')
+	tinsert(UnitPopupMenus.FOCUS, 5, 'KnightInspect')
+	for _, GroupType in pairs({ 'PLAYER', 'PARTY' }) do
+		for Index, MenuType in pairs(UnitPopupMenus[GroupType]) do
+			if MenuType == 'INSPECT' then
+				UnitPopupMenus[GroupType][Index] = 'KnightInspect'
+				break
 			end
 		end
-
-		KI.Activate = nil
 	end
+
+	KI.Activate = true
 end
-
-function KI:Initialize()
-	KI:ToggleKnightInspect()
-end
-E:RegisterModule(KI:GetName())
\ No newline at end of file
+E:RegisterModule(IFO:GetName())
\ No newline at end of file