Merge pull request #60 from AssemblerManiac/master

AM [08-31-18 - 16:50]
Merge pull request #60 from AssemblerManiac/master

-- basic tweaks & 3 new motifs for missing chap popup
-- delete char now working properly
-- 2 more motifs added (welkynar and dremora)


still to do, but can wait a bit: re-scan guild bank/backpack after closing guild bank window; maybe check out the code that watches when stuff transfers, but it's been hit or miss most of the time (sometimes it works, other times, not so much)
Filename
IIfA/IIfA.lua
IIfA/IIfA.txt
IIfA/IIfABackpack.lua
IIfA/IIfADataCollection.lua
IIfA/IIfAMenu.lua
IIfA/IIfASettingsAdapter.lua
IIfA/IIfATooltip.lua
IIfA/libs/LibCustomTitles/LibCustomTitles.lua
diff --git a/IIfA/IIfA.lua b/IIfA/IIfA.lua
index dc92d80..713e592 100644
--- a/IIfA/IIfA.lua
+++ b/IIfA/IIfA.lua
@@ -15,7 +15,7 @@ if IIfA == nil then IIfA = {} end
 --local IIfA = IIfA

 IIfA.name 				= "Inventory Insight"
-IIfA.version 			= "3.18"
+IIfA.version 			= "3.19"
 IIfA.author 			= "AssemblerManiac & manavortex"
 IIfA.defaultAlertSound 	= nil
 IIfA.colorHandler 		= nil
@@ -26,6 +26,7 @@ IIfA.bFilterOnSetName 	= false
 IIfA.searchFilter 		= ""
 IIfA.trackedHouses		= {}
 IIfA.EMPTY_STRING		= ""
+IIfA.BagSlotInfo		= {}		-- 8-4-18 AM - make sure the table exists in case something tries to reference it before it's created.

 local LMP = LibStub("LibMediaProvider-1.0")
 local BACKPACK = ZO_PlayerInventoryBackpack
@@ -485,9 +486,9 @@ function IIfA:ScanCurrentCharacterAndBank()

 	IIfA:ScanBank()
 	IIfA:ScanCurrentCharacter()
-	zo_callLater(function()
-		IIfA:MakeBSI()
-	end, 5000)
+--	zo_callLater(function()
+--		IIfA:MakeBSI()
+--	end, 5000)
 end

 function IIfA:MakeBSI()
diff --git a/IIfA/IIfA.txt b/IIfA/IIfA.txt
index c86ab24..f1f1517 100644
--- a/IIfA/IIfA.txt
+++ b/IIfA/IIfA.txt
@@ -1,14 +1,13 @@
 ## Title: Inventory Insight
 ## Author: manavortex, AssemblerManiac
-## Version: 3.18
-## APIVersion: 100023 100024
+## Version: 3.19
+## APIVersion: 100024 100025
 ## SavedVariables: IIfA_Settings IIfA_Data
 ## OptionalDependsOn: libFilters pChat FCOItemSaver

 libs\LibStub\LibStub.lua
 libs\LibAsync\LibAsync.lua
 libs\LibCustomTitles\LibCustomTitles.lua
-libs\LibScroll\LibScroll.lua
 libs\LibMediaProvider-1.0\LibMediaProvider-1.0.lua
 libs\LibAddonMenu-2.0\LibAddonMenu-2.0.lua
 libs\LibAddonMenu-2.0\controls\panel.lua
@@ -26,8 +25,6 @@ libs\LibAddonMenu-2.0\controls\texture.lua
 libs\LibAddonMenu-2.0\controls\iconpicker.lua
 libs\LibAddonMenu-2.0\controls\divider.lua
 libs\LibCustomMenu\LibCustomMenu.lua
-libs\LibAsync\LibAsync.lua
-

 IIfA_Preload.lua

diff --git a/IIfA/IIfABackpack.lua b/IIfA/IIfABackpack.lua
index ec06de8..85ce979 100644
--- a/IIfA/IIfABackpack.lua
+++ b/IIfA/IIfABackpack.lua
@@ -599,21 +599,20 @@ function IIfA:CreateInventoryScroll()
 end

 function IIfA:GetCharacterList()
-	local charInventories = {}
+	local charList = {}
 	for i=1, GetNumCharacters() do
 		local charName, _, _, _, _, _, _, _ = GetCharacterInfo(i)
 		charName = charName:sub(1, charName:find("%^") - 1)
-		if (nil == charInventories[charName]) then
-			table.insert(charInventories, charName)
+		if (nil == charList[charName]) then
+			table.insert(charList, charName)
 		end
 	end
-	return charInventories
+	return charList
 end

 function IIfA:GetAccountInventoryList()
 	local accountInventories = IIfA.dropdownLocNames

-
 -- get character names, will present in same order as character selection screen
 	for idx, charName in ipairs(IIfA:GetCharacterList()) do
 		if (nil == accountInventories[charName]) then
@@ -939,7 +938,14 @@ function IIfA:FMC(control, WhoSeesIt)
 		[55] = 2097,	-- Dreadhorn
 		[56] = 2044,	-- Apostle
 		[57] = 2045,	-- Ebonshadow
+		[58] = 2190,	-- Fang Lair
+		[59] = 2189,	-- Scalecaller
 		[60] = 2120,	-- Worm Cult
+		[61] = 2186, 	-- Psijic
+		[62] = 2187,	-- Sapiarch
+		[63] = 2188,	-- Dremora
+		[64] = 2285,	-- Pyandonean
+		[67] = 2319,	-- Welkynar
 		}

 --		local i, a
diff --git a/IIfA/IIfADataCollection.lua b/IIfA/IIfADataCollection.lua
index c34b239..4c63ed3 100644
--- a/IIfA/IIfADataCollection.lua
+++ b/IIfA/IIfADataCollection.lua
@@ -35,9 +35,11 @@ end
 function IIfA:DeleteCharacterData(name)
 	if (name) then
 		--delete selected character
-		for characterName, character in pairs(IIfA.data.accountCharacters) do
+		for characterName, charId in pairs(IIfA.CharNameToId) do
 			if(characterName == name) then
-				IIfA.data.accountCharacters[name] = nil
+--d("Deleting char " .. name .. ", Id=" .. charId)
+				IIfA.CharNameToId[name] = nil
+				IIfA.CharIdToName[charId] = nil
 			end
 		end
 	end
@@ -125,12 +127,6 @@ function IIfA:CollectGuildBank(curGuild)
 end

 function IIfA:ScanCurrentCharacter()
-
-	local playerName = GetUnitName('player')
-
-	IIfA.data.accountCharacters 			= IIfA.data.accountCharacters or {}
-	IIfA.data.accountCharacters[playerName] = IIfA.data.accountCharacters[playerName] or {}
-
 	IIfA:ClearLocationData(IIfA.currentCharacterId)

 	if not IIfA:IsCharacterEquipIgnored() then
diff --git a/IIfA/IIfAMenu.lua b/IIfA/IIfAMenu.lua
index 0a5e6cc..71a521c 100644
--- a/IIfA/IIfAMenu.lua
+++ b/IIfA/IIfAMenu.lua
@@ -6,20 +6,6 @@ local LMP = LibStub("LibMediaProvider-1.0")

 local id, guildName, deleteHouse, restoreHouse, name

-local function getCharacterInventories()
-
-	local accountInventories = {}
-
-	if nil ~= IIfA:GetCharacterList() then
-		for characterName, character in pairs(IIfA:GetCharacterList()) do
-			d("inserting " .. characterName)
-			table.insert(accountInventories, characterName)
-		end
-	end
-
-	return accountInventories
-end
-
 local function getGuildBanks()
 	local guildBanks = {}
 	if(IIfA.data.guildBanks) then
diff --git a/IIfA/IIfASettingsAdapter.lua b/IIfA/IIfASettingsAdapter.lua
index 3e913c9..9001864 100644
--- a/IIfA/IIfASettingsAdapter.lua
+++ b/IIfA/IIfASettingsAdapter.lua
@@ -36,10 +36,6 @@ function IIfA:IgnoreCharacterEquip(value)
 	IIfA:RefreshInventoryScroll()
 end

-function IIfA:GetCharacterList()
-	return IIfA.data.accountCharacters
-end
-
 function IIfA:GetIgnoredCharacterList()
 	local ret = {}
 	local wasAdded = {}
diff --git a/IIfA/IIfATooltip.lua b/IIfA/IIfATooltip.lua
index 9d58c86..6c6d361 100644
--- a/IIfA/IIfATooltip.lua
+++ b/IIfA/IIfATooltip.lua
@@ -138,8 +138,8 @@ IIfA.racialTextures = {
 	[74] 	= { styleName = zo_strformat("<<1>>", GetItemStyleName(74)), styleTexture = getTex(IIfA.EMPTY_STRING)}, 	-- Dremora
 	[75] 	= { styleName = zo_strformat("<<1>>", GetItemStyleName(75)), styleTexture = getTex(IIfA.EMPTY_STRING)}, 	-- Pyandonean
 	[76] 	= { styleName = zo_strformat("<<1>>", GetItemStyleName(76)), styleTexture = getTex(IIfA.EMPTY_STRING)}, 	-- Divine Prosecution
-	[77] 	= { styleName = zo_strformat("<<1>>", GetItemStyleName(77)), styleTexture = getTex(IIfA.EMPTY_STRING)}, -- Unused
-	[78] 	= { styleName = zo_strformat("<<1>>", GetItemStyleName(78)), styleTexture = getTex(IIfA.EMPTY_STRING)}, -- Unused
+	[77] 	= { styleName = zo_strformat("<<1>>", GetItemStyleName(77)), styleTexture = getTex(IIfA.EMPTY_STRING)}, 	-- Huntsman
+	[78] 	= { styleName = zo_strformat("<<1>>", GetItemStyleName(78)), styleTexture = getTex(IIfA.EMPTY_STRING)}, 	-- Silver Dawn
 	[79] 	= { styleName = zo_strformat("<<1>>", GetItemStyleName(79)), styleTexture = getTex(IIfA.EMPTY_STRING)}, -- Unused
 }

diff --git a/IIfA/libs/LibCustomTitles/LibCustomTitles.lua b/IIfA/libs/LibCustomTitles/LibCustomTitles.lua
index bf76cf8..441c396 100644
--- a/IIfA/libs/LibCustomTitles/LibCustomTitles.lua
+++ b/IIfA/libs/LibCustomTitles/LibCustomTitles.lua
@@ -1,7 +1,7 @@
 --[[
 Author: Ayantir
 Filename: LibCustomTitles.lua
-Version: 11
+Version: 20
 ]]--

 --[[
@@ -30,7 +30,7 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/legalcode
 ]]--

 local libLoaded
-local LIB_NAME, VERSION = "LibCustomTitles", 11
+local LIB_NAME, VERSION = "LibCustomTitles", 20
 local LibCustomTitles, oldminor = LibStub:NewLibrary(LIB_NAME, VERSION)
 if not LibCustomTitles then return end

@@ -128,13 +128,31 @@ function LibCustomTitles:Init()
 			en = "Fancy Man of Cornwood",
 		},

-		["@manavortex"] = { -- EU v10
+		["@manavortex"] = { -- EU v10 (v12 changes)
 			["Vivicah Telvanni"] = {
 				ov = {en = "Master Wizard", fr = "Maître mage", de = "Meisterin der Zauberei"},
 				en = "Archmagister",
 				fr = "Archimage",
 				de = "Erzmagister",
 			},
+			["Sugar-Paws Underfoot"] = {
+				ov = true,
+				en = "Favorite Apprentice",
+				fr = "Apprenti préféré",
+				de = "Lieblingslehrling",
+			},
+			["Ravani Indoril"] = {
+				ov = true,
+				en = "Warden",
+				fr = "Sentinelle",
+				de = "Aufseher",
+			},
+			["Telvanni Ravani Varo"] = {
+				ov = true,
+				en = "Warden",
+				fr = "Sentinelle",
+				de = "Aufseher",
+			},
 		},

 		["@Valorin"] = { -- EU v10
@@ -144,15 +162,27 @@ function LibCustomTitles:Init()
 				fr = "Lame Ethérée",
 				de = "Ätherklinge",
 			},
+			["Nathyn Varo"] = {
+				ov = true,
+				en = "Warden",
+				fr = "Sentinelle",
+				de = "Aufseher",
+			},
 		},

-		["@manorin"] = { -- EU v10
+		["@Manorin"] = { -- EU v10 (v12 fix)
 			["Foryn Telvanni"] = {
 				ov = {en = "Pact Hero", fr = "Héros du Pacte", de = "Held des Paktes"},
 				en = "Hero",
 				fr = "Héros",
 				de = "Helt",
 			},
+			["Serjo Vivicah Telvanni"] = {
+				ov = {en = "Master Wizard", fr = "Maître mage", de = "Meisterin der Zauberei"},
+				en = "Archmagister",
+				fr = "Archimage",
+				de = "Erzmagister",
+			},
 		},

 		["@Chivana"] = { -- EU v11
@@ -212,7 +242,245 @@ function LibCustomTitles:Init()
 				fr = "L'égaré",
 				de = "Der Verschollene",
 			},
-		},
+		},
+
+		["@Haunted1994"] = { -- v12
+			["Jah'rakal"] = {
+				ov = {en = "Veteran", fr = "Vétéran", de = "Veteran"},
+				en = "Troll Warlord",
+				fr = "Troll Warlord",
+				de = "Troll Warlord",
+			},
+		},
+
+		["@Vortexman11"] = { -- v12
+			["Ålaunus"] = {
+				ov = true,
+				en = "The Silent",
+				fr = "Le Discret",
+				de = "Die Stille",
+			},
+		},
+
+		["@Domardal"] = { -- v12
+			ov = true,
+			en = "Coco",
+			fr = "Coco",
+			de = "Coco",
+		},
+
+		["@RaddyBK"] = { -- v12
+			["Radolfus"] = {
+				ov = {en = "Major", fr = "Major", de = "Major"},
+				en = "The Elder Dragon",
+				fr = "Le Vieux Dragon",
+				de = "The Elder Dragon",
+			},
+			["RADOLFUS II"] = {
+				ov = {en = "Executioner", fr = "Exécuteur", de = "Henker"},
+				en = "The Elder Dragon",
+				fr = "Le Vieux Dragon",
+				de = "The Elder Dragon",
+			},
+		},
+
+		["@Dolgubon"] = { -- v12
+			["Relthion"] = {
+				ov = true,
+				en = "Undying",
+				fr = "L'immortel",
+				de = "Undying",
+			},
+		},
+
+		["@Sethize"] = { -- EU v12
+			["Nelvan Telvanni"] = {
+				ov = {en = "Master Wizard", fr = "Maître mage", de = "Meister der Zauberei"},
+				en = "Master",
+				fr = "Maître",
+				de = "Meister",
+			},
+		},
+
+		["@ScattyThePirate"] = { -- EU v13
+			["Teldryn Dreth"] = {
+				ov = true,
+				en = "Warden",
+				fr = "Sentinelle",
+				de = "Aufseher",
+			},
+			["Ralyn Telvanni"] = {
+				ov = true,
+				en = "Spellwright",
+				fr = "Tisseur de Sorts",
+				--de = "Meister",
+			},
+			["Shabar-Jo"] = {
+				ov = true,
+				en = "Tisseur de Sorts",
+				fr = "Spellwright",
+				--de = "Meister",
+			},
+			["Shurkul gro-Kharzog"] = {
+				ov = {en = "Fighters Guild Victor", fr = "Champion de la guilde des guerriers", de = "Sieger der Kriegergilde"},
+				en = "The Monster",
+				fr = "La Bête",
+				de = "Das Monster",
+			},
+			["Azuk gro-Shakh"] = {
+				ov = {en = "Fighters Guild Victor", fr = "Champion de la guilde des guerriers", de = "Sieger der Kriegergilde"},
+				en = "Windsinger",
+				fr = "Ténor des tempêtes",
+				--de = "Das Monster",
+			},
+			["Xal-Shei"] = {
+				ov = {en = "Fighters Guild Victor", fr = "Champion de la guilde des guerriers", de = "Sieger der Kriegergilde"},
+				en = "Swamp Knight",
+				fr = "Chevalier des Marais",
+				--de = "Das Monster",
+			},
+		},
+
+		["@ScattyTheWizard"] = { -- v13
+			["Marukh-do"] = {
+				ov = true,
+				en = "Privateer",
+				fr = "Corsaire",
+				--de = "Meister",
+			},
+		},
+
+		["@Karstyll"] = { -- v13
+			ov = true,
+			en = "Forsaken",
+			fr = "L'oublié",
+			de = "Die Verlassene",
+		},
+
+		["@Methuselah86"] = { -- v13
+			ov = true,
+			en = "Wabbajack Warrior",
+			fr = "Guerrier de Wabbajack",
+			--de = "Die Verlassene",
+		},
+
+		["@DaedricAdept"] = { -- v14
+			ov = {en = "Pact Hero", fr = "Héros du Pacte", de = "Held des Paktes"},
+			en = "Hand of Almalexia",
+			fr = "Main d'Almalexia",
+			--de = "Die Verlassene",
+		},
+
+		["@Cloudless"] = { -- v14
+			ov = true,
+			en = "Order of Doctrine",
+			fr = "Ordre de la Doctrine",
+			--de = "Die Verlassene",
+		},
+
+		["@Atomkern"] = { -- v13
+			ov = true,
+			en = "The Refrigerator",
+			fr = "Le glacé",
+			--de = "Die Verlassene",
+		},
+
+		["@Orizonta"] = { -- v13
+			ov = true,
+			en = "Manslayer",
+			fr = "Assassin",
+			--de = "Die Verlassene",
+		},
+
+		["@laksikus"] = { -- v13
+			ov = {en = "Veteran", fr = "Vétéran", de = "Veteran"},
+			en = "Sexy Zogger",
+			fr = "Zog-Zog",
+			--de = "Die Verlassene",
+		},
+
+		["@flyty"] = { -- v13
+			ov = true,
+			en = "Always Drunk",
+			fr = "Toujours bourré",
+			--de = "Die Verlassene",
+		},
+
+		["@Deltia"] = { -- v13
+			ov = {en = "Tyro", fr = "Première classe", de = "Tyro"},
+			en = "The Destroyer",
+			fr = "Le Destructeur",
+			--de = "Die Verlassene",
+		},
+
+		["@tannips"] = { -- v13
+			ov = true,
+			en = "Potentate",
+			fr = "Potentat",
+			--de = "Die Verlassene",
+		},
+
+		["@sioniann"] = { -- v13
+			["Uloth The Furious Blade"] = {
+				ov = true,
+				en = "Sinister Turkey",
+				fr = "Dindon Sinistre",
+				--de = "Meister",
+			},
+			["Enid an Gleana"] = {
+				ov = true,
+				en = "Fountain of Auridon",
+				fr = "Fontaine d'Auridia",
+				--de = "Meister",
+			},
+		},
+
+		["@HMS-Dragonfly"] = { -- v16
+			ov = true,
+			en = "Knight of Stendarr",
+			fr = "Chevalier de Stendarr",
+			--de = "Die Verlassene",
+		},
+
+		["@Faso"] = { -- v16
+			["Fasò"] = {
+				ov = true,
+				en = "Knights Radiant",
+			},
+		},
+
+		["@nifty2g"] = { -- v16
+			["Nifty Jong-Un"] = {
+				ov = true,
+				en = "Dawn of Anu",
+			},
+		},
+
+		["@Twirlz"] = { -- v17
+			["Yirel Virith"] = {
+				ov = true,
+				en = "Nightcaller",
+			},
+		},
+
+		["@Anceane"] = { -- v19
+			ov = true,
+			en = "Dark Emerald",
+			fr = "Emeraude Sombre",
+		},
+
+		["@Potato-Salad"] = { -- v19
+			ov = true,
+			en = "Seraphim of Azura",
+			fr = "Séraphin d'Azura",
+		},
+
+		["@blakeblox"] = { -- v19
+			["fyboba"] = {
+				ov = {en = "Tyro", fr = "Première classe", de = "Tyro"},
+				en = "Golden Lady",
+			},
+		},

 	}