Merge pull request #15 from jrc13245/main

pull request
This commit is contained in:
Torio
2025-11-11 07:03:56 -05:00
committed by GitHub
3 changed files with 86 additions and 3 deletions
+55
View File
@@ -793,6 +793,45 @@ function CleveRoids.ValidatePlayerDebuff(args)
return CleveRoids.ValidateAura("player", args, false)
end
function CleveRoids.ValidateWeaponImbue(slot, imbueName)
-- Check if weapon has enchant
local hasMainEnchant, mainExpiration, mainCharges, hasOffEnchant, offExpiration, offCharges = GetWeaponEnchantInfo()
local hasEnchant = (slot == "mh" and hasMainEnchant) or (slot == "oh" and hasOffEnchant)
if not hasEnchant then return false end
-- If no specific imbue requested, just return enchant exists
if not imbueName or imbueName == "" then return true end
-- Create tooltip scanner if needed
if not CleveRoidsTooltip then
CreateFrame("GameTooltip", "CleveRoidsTooltip", nil, "GameTooltipTemplate")
end
-- Scan weapon tooltip
CleveRoidsTooltip:SetOwner(UIParent, "ANCHOR_NONE")
CleveRoidsTooltip:ClearLines()
CleveRoidsTooltip:SetInventoryItem("player", slot == "mh" and 16 or 17)
-- Look for green text (temporary enchant)
for i = 1, CleveRoidsTooltip:NumLines() do
local text = _G["CleveRoidsTooltipTextLeft"..i]
if text then
local line = text:GetText()
local r, g, b = text:GetTextColor()
-- Green text indicates temporary enchant
if line and g > 0.8 and r < 0.2 and b < 0.2 then
-- Normalize and compare
line = string.lower(line)
imbueName = string.lower(string.gsub(imbueName, "_", " "))
return string.find(line, imbueName, 1, true) ~= nil
end
end
end
return false
end
-- TODO: Look into https://github.com/Stanzilla/WoWUIBugs/issues/47 if needed
function CleveRoids.GetCooldown(name, ignoreGCD)
if not name then return 0 end
@@ -1907,5 +1946,21 @@ CleveRoids.Keywords = {
mybuffcount = function(conditionals)
return And(conditionals.mybuffcount,function (v) return CleveRoids.ValidatePlayerAuraCount(v.bigger, v.amount) end)
end,
mhimbue = function(conditionals)
return CleveRoids.ValidateWeaponImbue("mh", conditionals.value)
end,
nomhimbue = function(conditionals)
return not CleveRoids.ValidateWeaponImbue("mh", conditionals.value)
end,
ohimbue = function(conditionals)
return CleveRoids.ValidateWeaponImbue("oh", conditionals.value)
end,
noohimbue = function(conditionals)
return not CleveRoids.ValidateWeaponImbue("oh", conditionals.value)
end
}
+30 -3
View File
@@ -192,6 +192,36 @@ function CleveRoids.ClearSlot(slots, slot)
slots[slot] = nil
end
-- Local helper for 1.12.1: safely get action button info via tooltip
function CleveRoids.GetActionButtonInfo(slot)
if not CleveRoidsActionTooltip then
CreateFrame("GameTooltip", "CleveRoidsActionTooltip", UIParent, "GameTooltipTemplate")
end
local tooltip = CleveRoidsActionTooltip
tooltip:SetOwner(UIParent, "ANCHOR_NONE")
tooltip:ClearLines()
tooltip:SetAction(slot)
local name, rank
local text = _G["CleveRoidsActionTooltipTextLeft1"]
if text then name = text:GetText() end
local text2 = _G["CleveRoidsActionTooltipTextLeft2"]
if text2 then
local maybeRank = text2:GetText()
-- Rank lines usually start with "Rank"
if maybeRank and string.find(maybeRank, "Rank") then
rank = maybeRank
end
end
-- Determine if it's an item or spell based on texture (heuristic)
local tex = GetActionTexture(slot)
local actionType = tex and "SPELL" or "ITEM"
return actionType, tex, name, rank
end
function CleveRoids.IndexActionSlot(slot)
if not HasAction(slot) then
CleveRoids.Actions[slot] = nil
@@ -202,7 +232,6 @@ function CleveRoids.IndexActionSlot(slot)
if name then
local reactiveName = CleveRoids.reactiveSpells[name] and name
local actionSlotName = name..(rank and ("("..rank..")") or "")
if reactiveName then
if not CleveRoids.reactiveSlots[reactiveName] then
CleveRoids.reactiveSlots[reactiveName] = slot
@@ -211,7 +240,6 @@ function CleveRoids.IndexActionSlot(slot)
elseif not reactiveName then
CleveRoids.ClearSlot(CleveRoids.reactiveSlots, slot)
end
if actionType == "SPELL" or actionType == "ITEM" then
if not CleveRoids.actionSlots[actionSlotName] then
CleveRoids.actionSlots[actionSlotName] = slot
@@ -220,7 +248,6 @@ function CleveRoids.IndexActionSlot(slot)
end
end
end
CleveRoids.TestForActiveAction(CleveRoids.GetAction(slot))
CleveRoids.SendEventForAction(slot, "ACTIONBAR_SLOT_CHANGED", slot)
end
+1
View File
@@ -326,6 +326,7 @@ The system includes pre-configured durations for 329+ debuffs across all classes
| mybuffcount | [mybuffcount:>=X]<br/>[mybuffcount:<=X] | | | If the player has more or less auras present than X.|
| queuedspell | [queuedspell]<br/>[queuedspell:X] | | * | if the player has any or a specific spell queued with nampower. |
| onswingpending | [onswingpending] | | * | If the player has a on swing spell pending.|
| mhimbue/ohimbue | [mhimbue:Flametongue]<br/>[ohimbue] | | * | If the player has weapon imbue on their mh/oh.|
### Unit Based
### The default @unitid is usually @target if you don't specify one