diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..46f2258
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,40 @@
+{
+ "Lua.runtime.version": "Lua 5.1",
+ "Lua.runtime.builtin": {
+ "basic": "disable",
+ "debug": "disable",
+ "io": "disable",
+ "math": "disable",
+ "os": "disable",
+ "package": "disable",
+ "string": "disable",
+ "table": "disable",
+ "utf8": "disable"
+ },
+ "Lua.workspace.library": [
+ "~\\.vscode\\extensions\\ketho.wow-api-0.21.0\\Annotations\\Core"
+ ],
+ "Lua.diagnostics.globals": [
+ "Clamp",
+ "LOW",
+ "HIGH",
+ "Settings",
+ "SELECTED_CHAT_FRAME",
+ "DEFAULT_CHAT_FRAME",
+ "ACCEPT",
+ "CANCEL",
+ "SlashCmdList",
+ "hash_SlashCmdList",
+ "CLOSE",
+ "FONT_COLOR_CODE_CLOSE",
+ "SetDesaturation",
+ "ColorPickerFrame",
+ "NOT_BOUND",
+ "CHARACTER_SPECIFIC_KEYBINDINGS",
+ "ChatFrame_OpenChat",
+ "UIErrorsFrame",
+ "SOUNDKIT",
+ "GameTooltip_Hide"
+ ],
+ "Lua.type.weakUnionCheck": true
+}
\ No newline at end of file
diff --git a/AutoBarButton.lua b/AutoBarButton.lua
index 6658ba2..1df4be0 100644
--- a/AutoBarButton.lua
+++ b/AutoBarButton.lua
@@ -2781,4 +2781,22 @@ else
end
end
+ local AutoBarButtonKnowledge = AceOO.Class(AutoBarButton)
+ AutoBar.Class["AutoBarButtonKnowledge"] = AutoBarButtonKnowledge
+
+ function AutoBarButtonKnowledge.prototype:init(parentBar, buttonDB)
+ AutoBarButtonKnowledge.super.prototype.init(self, parentBar, buttonDB)
+
+ self:AddCategory("Knowledge")
+ end
+
+ local AutoBarButtonCrests = AceOO.Class(AutoBarButton)
+ AutoBar.Class["AutoBarButtonCrests"] = AutoBarButtonCrests
+
+ function AutoBarButtonCrests.prototype:init(parentBar, buttonDB)
+ AutoBarButtonCrests.super.prototype.init(self, parentBar, buttonDB)
+
+ self:AddCategory("Crests")
+ end
+
end
diff --git a/AutoBarDB.lua b/AutoBarDB.lua
index 1297f38..81f8d52 100644
--- a/AutoBarDB.lua
+++ b/AutoBarDB.lua
@@ -809,6 +809,28 @@ function AutoBar:InitializeDefaults()
}
end
+ if (not AutoBarDB2.account.buttonList["AutoBarButtonKnowledge"]) then
+ AutoBarDB2.account.buttonList["AutoBarButtonKnowledge"] = {
+ buttonKey = "AutoBarButtonKnowledge",
+ buttonClass = "AutoBarButtonKnowledge",
+ barKey = "AutoBarClassBarExtras",
+ defaultButtonIndex = "*",
+ enabled = true,
+ arrangeOnUse = true,
+ }
+ end
+
+ if (not AutoBarDB2.account.buttonList["AutoBarButtonCrests"]) then
+ AutoBarDB2.account.buttonList["AutoBarButtonCrests"] = {
+ buttonKey = "AutoBarButtonCrests",
+ buttonClass = "AutoBarButtonCrests",
+ barKey = "AutoBarClassBarExtras",
+ defaultButtonIndex = "*",
+ enabled = true,
+ arrangeOnUse = true,
+ }
+ end
+
-- if (not AutoBarDB2.account.buttonList["AutoBarButtonToyBox"]) then
-- AutoBarDB2.account.buttonList["AutoBarButtonToyBox"] = {
-- buttonKey = "AutoBarButtonToyBox",
diff --git a/Bindings.xml b/Bindings.xml
index f3f540d..2019060 100644
--- a/Bindings.xml
+++ b/Bindings.xml
@@ -39,6 +39,8 @@
+
+
diff --git a/Core.lua b/Core.lua
index fd786f7..bdfb432 100644
--- a/Core.lua
+++ b/Core.lua
@@ -160,7 +160,7 @@ function AutoBar:InitializeZero()
AutoBar.frame:RegisterEvent("BAG_UPDATE")
AutoBar.frame:RegisterEvent("BAG_UPDATE_DELAYED")
AutoBar.frame:RegisterEvent("PLAYER_EQUIPMENT_CHANGED")
- AutoBar.frame:RegisterEvent("LEARNED_SPELL_IN_TAB")
+ -- AutoBar.frame:RegisterEvent("LEARNED_SPELL_IN_TAB")
AutoBar.frame:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", "player")
if(AutoBarDB2.settings.handle_spell_changed) then
diff --git a/locale/Locale-enUS.lua b/locale/Locale-enUS.lua
index 82b6c7a..d542089 100644
--- a/locale/Locale-enUS.lua
+++ b/locale/Locale-enUS.lua
@@ -239,6 +239,8 @@ if (GetLocale() == "enUS") then
["AutoBarButtonTrinket2"] = "Trinket 2",
["AutoBarButtonWater"] = "Water",
["AutoBarButtonWaterBuff"] = "Water Buff",
+ ["AutoBarButtonKnowledge"] = "Knowledge",
+ ["AutoBarButtonCrests"] = "Crests",
["AutoBarButtonBear"] = "Bear",
diff --git a/retail/ABCategoryData_retail.lua b/retail/ABCategoryData_retail.lua
index 5ed06a9..82f3002 100644
--- a/retail/ABCategoryData_retail.lua
+++ b/retail/ABCategoryData_retail.lua
@@ -575,5 +575,170 @@ function AB.InitializeCategories()
"SHAMAN", code.get_spell_name_by_name("Ghost Wolf"),
})
+ -- Knowledge Items Category
+ local KNOWLEDGE_ITEMS = {
+ -- Add your knowledge item IDs here, one per line
+ -- Example:
+ -- 192131, -- Item Name
+ 192131, -- Valdrakken Weapon Chain
+ 192132, -- Draconium Blade Sharpener
+ 193891, -- Experimental Substance
+ 193897, -- Reawakened Catalyst
+ 193898, -- Umbral Bone Needle
+ 193899, -- Primalweave Spindle
+ 193900, -- Prismatic Focusing Shard
+ 193901, -- Primal Dust
+ 193902, -- Eroded Titan Gizmo
+ 193903, -- Watcher Power Core
+ 193904, -- Phoenix Feather Quill
+ 193905, -- Iskaaran Trading Ledger
+ 193907, -- Chipped Tyrstone
+ 193909, -- Ancient Gem Fragments
+ 193910, -- Molted Dragon Scales
+ 193913, -- Preserved Animal Parts
+ 194039, -- Heated Ore Sample
+ 194062, -- Unyielding Stone Chunk
+ 198837, -- Curious Hide Scraps
+ 198963, -- Decaying Phlegm
+ 198964, -- Elementious Splinter
+ 198965, -- Primeval Earth Fragment
+ 198966, -- Molten Globule
+ 198967, -- Primordial Aether
+ 198968, -- Primalist Charm
+ 198969, -- Keeper's Mark
+ 198970, -- Infinitely Attachable Pair o' Docks
+ 198971, -- Curious Djaradin Rune
+ 198972, -- Draconic Glamour
+ 198973, -- Incandescent Curio
+ 198974, -- Elegantly Engraved Embellishment
+ 198975, -- Ossified Hide
+ 198976, -- Exceedingly Soft Skin
+ 198977, -- Ohn'arhan Weave
+ 198978, -- Stupidly Effective Stitchery
+ 200677, -- Dreambloom Petal
+ 200678, -- Dreambloom
+ 201300, -- Iridescent Ore Fragments
+ 201301, -- Iridescent Ore
+ 201356, -- Glimmer of Fire
+ 201357, -- Glimmer of Frost
+ 201358, -- Glimmer of Air
+ 201359, -- Glimmer of Earth
+ 202011, -- Elementally-Charged Stone
+ 202014, -- Infused Pollen
+ 222552, -- Algari Treatise on Herbalism
+ 222621, -- Algari Treatise on Engineering
+ 224007, -- Uses for Leftover Husks (How to Take Them Apart)
+ 224023, -- Herbal Embalming Techniques
+ 224024, -- Theories of Bodily Transmutation, Chapter 8
+ 224036, -- And That's A Web-Wrap!
+ 224038, -- Smithing After Saronite
+ 224050, -- Web Sparkles: Pretty and Powerful
+ 224052, -- Clocks, Gears, Sprockets, and Legs
+ 224053, -- Eight Views on Defense against Hostile Runes
+ 224054, -- Emergent Crystals of the Surface-Dwellers
+ 224055, -- A Rocky Start
+ 224056, -- Uses for Leftover Husks (After You Take Them Apart)
+ 224264, -- Deepgrove Petal
+ 224265, -- Deepgrove Rose
+ 224583, -- Slab of Slate
+ 224584, -- Erosion-Polished Slate
+ 224780, -- Toughened Tempest Pelt
+ 224781, -- Abyssal Fur
+ 227407, -- Faded Blacksmith's Diagrams
+ 225234, -- Alchemical Sediment
+ 227408, -- Faded Scribe's Runic Drawings
+ 227409, -- Faded Alchemist's Research
+ 227410, -- Faded Tailor's Diagrams
+ 227411, -- Faded Enchanter's Research
+ 227412, -- Faded Engineer's Scribblings
+ 227413, -- Faded Jeweler's Illustrations
+ 227414, -- Faded Leatherworker's Diagrams
+ 227415, -- Faded Herbalist's Notes
+ 227416, -- Faded Miner's Notes
+ 227417, -- Faded Skinner's Notes
+ 227418, -- Exceptional Blacksmith's Diagrams
+ 227419, -- Exceptional Scribe's Runic Drawings
+ 227420, -- Exceptional Alchemist's Research
+ 227421, -- Exceptional Tailor's Diagrams
+ 227422, -- Exceptional Enchanter's Research
+ 227423, -- Exceptional Engineer's Scribblings
+ 227424, -- Exceptional Jeweler's Illustrations
+ 227425, -- Exceptional Leatherworker's Diagrams
+ 227426, -- Exceptional Herbalist's Notes
+ 227427, -- Exceptional Miner's Notes
+ 227428, -- Exceptional Skinner's Notes
+ 227429, -- Pristine Blacksmith's Diagrams
+ 227430, -- Pristine Scribe's Runic Drawings
+ 227431, -- Pristine Alchemist's Research
+ 227432, -- Pristine Tailor's Diagrams
+ 227433, -- Pristine Enchanter's Research
+ 227434, -- Pristine Engineer's Scribblings
+ 227435, -- Pristine Jeweler's Illustrations
+ 227436, -- Pristine Leatherworker's Diagrams
+ 227437, -- Pristine Herbalist's Notes
+ 227438, -- Pristine Miner's Notes
+ 227439, -- Pristine Skinner's Notes
+ 227659, -- Fleeting Arcane Manifestation
+ 227661, -- Gleaming Telluric Crystal
+ 227662, -- Shimmering Dust
+ 228738, -- Flicker of Tailoring Knowledge
+ 228739, -- Glimmer of Tailoring Knowledge
+ 224835, -- Deepgrove Roots
+ 232499, -- Undermine Treatise on Alchemy
+ 232500, -- Undermine Treatise on Blacksmithing
+ 232501, -- Undermine Treatise on Enchanting
+ 232502, -- Undermine Treatise on Tailoring
+ 232503, -- Undermine Treatise on Herbalism
+ 232504, -- Undermine Treatise on Jewelcrafting
+ 232505, -- Undermine Treatise on Leatherworking
+ 232506, -- Undermine Treatise on Skinning
+ 232507, -- Undermine Treatise on Engineering
+ 232508, -- Undermine Treatise on Inscription
+ 232509, -- Undermine Treatise on Mining
+ 235855, -- Ethereal Tome of Tailoring Knowledge
+ 235856, -- Ethereal Tome of Skinning Knowledge
+ 235857, -- Ethereal Tome of Mining Knowledge
+ 235858, -- Ethereal Tome of Leatherworking Knowledge
+ 235859, -- Ethereal Tome of Jewelcrafting Knowledge
+ 235860, -- Ethereal Tome of Inscription Knowledge
+ 235861, -- Ethereal Tome of Herbalism Knowledge
+ 235862, -- Ethereal Tome of Engineering Knowledge
+ 235863, -- Ethereal Tome of Enchanting Knowledge
+ 235864, -- Ethereal Tome of Blacksmithing Knowledge
+ 235865, -- Ethereal Tome of Alchemy Knowledge
+ }
+
+ AB.KnowledgeCategory = CreateFromMixins(AB.CategoryClass)
+ local KnowledgeCategory = AB.KnowledgeCategory
+
+ function KnowledgeCategory:new()
+ local obj = CreateFromMixins(self)
+ obj:init("Knowledge", "Interface\\Icons\\INV_Misc_Book_08")
+ obj.items = KNOWLEDGE_ITEMS
+ return obj
+ end
+
+ AutoBarCategoryList["Knowledge"] = KnowledgeCategory:new()
+
+ -- Crests Category
+ local CRESTS_ITEMS = {
+ -- Add your crest item IDs here, one per line
+ -- Example:
+ -- 240931, -- Item Name
+ 240931, -- Triumphant Satchel of Carved Ethereal Crests
+ }
+
+ AB.CrestsCategory = CreateFromMixins(AB.CategoryClass)
+ local CrestsCategory = AB.CrestsCategory
+
+ function CrestsCategory:new()
+ local obj = CreateFromMixins(self)
+ obj:init("Crests", "Interface\\Icons\\INV_10_gearupgrade_awakenedseal")
+ obj.items = CRESTS_ITEMS
+ return obj
+ end
+
+ AutoBarCategoryList["Crests"] = CrestsCategory:new()
+
end