diff --git a/WeakAuras/GenericTrigger.lua b/WeakAuras/GenericTrigger.lua index 9037aa0..fce6d52 100644 --- a/WeakAuras/GenericTrigger.lua +++ b/WeakAuras/GenericTrigger.lua @@ -4597,6 +4597,10 @@ WeakAuras.CheckForItemEquipped = function(itemId, specificSlot) end end +Private.ExecEnv.IsEquippedItemType = function(itemType) + return IsEquippedItemType(Private.item_weapon_types[itemType] or '') +end + WeakAuras.GetCritChance = function() -- Based on what the wow paper doll does local spellCrit = 0 diff --git a/WeakAuras/Prototypes.lua b/WeakAuras/Prototypes.lua index 5b24438..d374287 100644 --- a/WeakAuras/Prototypes.lua +++ b/WeakAuras/Prototypes.lua @@ -1350,6 +1350,14 @@ Private.load_prototype = { events = { "UNIT_INVENTORY_CHANGED", "PLAYER_EQUIPMENT_CHANGED"}, only_exact = true, }, + { + name = "itemtypeequipped", + display = L["Item Type Equipped"], + type = "multiselect", + test = "Private.ExecEnv.IsEquippedItemType(%s or '')", + events = { "UNIT_INVENTORY_CHANGED", "PLAYER_EQUIPMENT_CHANGED"}, + values = "item_weapon_types" + }, } }; @@ -6500,6 +6508,33 @@ Private.event_prototypes = { automaticrequired = true, progressType = "none" }, + ["Item Type Equipped"] = { + type = "item", + events = { + ["events"] = { + "PLAYER_EQUIPMENT_CHANGED", + }, + ["unit_events"] = { + ["player"] = {"UNIT_INVENTORY_CHANGED"} + } + }, + internal_events = { "WA_DELAYED_PLAYER_ENTERING_WORLD", }, + force_events = "UNIT_INVENTORY_CHANGED", + name = L["Item Type Equipped"], + args = { + { + name = "itemTypeName", + display = L["Item Type"], + type = "multiselect", + values = "item_weapon_types", + required = true, + test = "Private.ExecEnv.IsEquippedItemType(%s)", + multiNoSingle = true + }, + }, + automaticrequired = true, + progressType = "none" + }, ["Equipment Set"] = { type = "item", events = { diff --git a/WeakAuras/Types.lua b/WeakAuras/Types.lua index fc4d813..59c3a6f 100644 --- a/WeakAuras/Types.lua +++ b/WeakAuras/Types.lua @@ -3672,6 +3672,38 @@ Private.noreset_swing_spells = { --35474 Drums of Panic DO reset the swing timer, do not add } +Private.item_weapon_types = {} +do + local weapon = { GetAuctionItemSubClasses(1) } + local armor = { GetAuctionItemSubClasses(2) } + + Private.item_weapon_types = { + [512] = weapon[1], -- One-Handed Axes + [513] = weapon[2], -- Two-Handed Axes + [514] = weapon[3], -- Bows + [515] = weapon[4], -- Guns + [516] = weapon[5], -- One-Handed Maces + [517] = weapon[6], -- Two-Handed Maces + [518] = weapon[7], -- Polearms + [519] = weapon[8], -- One-Handed Swords + [520] = weapon[9], -- Two-Handed Swords + -- [521] = nil, -- Warglaives + [522] = weapon[10], -- Staves + -- [523] = nil, -- Bear Claws + -- [524] = nil, -- Cat Claws + [525] = weapon[11], -- Fist Weapons + [526] = weapon[12], -- Misc + [527] = weapon[13], -- Daggers + [528] = weapon[14], -- Thrown + -- [529] = nil, -- Spears + [530] = weapon[15], -- Crossbows + [531] = weapon[16], -- Wands + [532] = weapon[17], -- Fishing Poles + [1030] = armor[6], -- Shields + } +end +WeakAuras.item_weapon_types = Private.item_weapon_types + WeakAuras.StopMotion = WeakAuras.StopMotion or {} WeakAuras.StopMotion.texture_types = WeakAuras.StopMotion.texture_types or {} WeakAuras.StopMotion.texture_data = WeakAuras.StopMotion.texture_data or {}