mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 22:51:53 -05:00
Compare commits
32 Commits
v1.14.24
...
v1.15.0-al
Author | SHA1 | Date | |
---|---|---|---|
40efe6a551 | |||
f15dda769d | |||
9b063bed63 | |||
d451969177
|
|||
6c2e759f45 | |||
b0f7c776db | |||
c425206748 | |||
57ddf62f73 | |||
67cd7330ad | |||
5c344cfac1 | |||
681e1f7b55 | |||
038ea16642 | |||
12c509b133 | |||
2ae826654a | |||
acee3f4725
|
|||
2db6ddea57
|
|||
7e4a6ecab6
|
|||
af33ab9781
|
|||
c0262de622
|
|||
cfa86813a7
|
|||
c85c304eb6
|
|||
5321f7c64d
|
|||
6b2eb8d6e2
|
|||
c72b67235d
|
|||
140596b930
|
|||
6ddb056cdf
|
|||
8df330d3b4
|
|||
1f9a1a3100
|
|||
40a25a3315
|
|||
6cee8c738c
|
|||
40fc8187fd
|
|||
b32f090644 |
8
.github/workflows/release.yml
vendored
8
.github/workflows/release.yml
vendored
@ -32,7 +32,7 @@ jobs:
|
||||
|
||||
# we first have to clone the AddOn project, this is a required step
|
||||
- name: Clone project
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # gets git history for changelogs
|
||||
|
||||
@ -56,3 +56,9 @@ jobs:
|
||||
uses: BigWigsMods/packager@v2
|
||||
with:
|
||||
args: -g wrath -w 0
|
||||
|
||||
- name: Package and release for Cataclysm
|
||||
uses: BigWigsMods/packager@v2
|
||||
with:
|
||||
args: -g cata -w 0
|
||||
|
8
.pkgmeta
8
.pkgmeta
@ -40,8 +40,8 @@ externals:
|
||||
libs/AceHook-3.0:
|
||||
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceHook-3.0
|
||||
tag: latest
|
||||
libs/LibRangeCheck-2.0:
|
||||
url: https://github.com/WeakAuras/LibRangeCheck-2.0/
|
||||
libs/LibRangeCheck-3.0:
|
||||
url: https://github.com/WeakAuras/LibRangeCheck-3.0/
|
||||
libs/LibSharedMedia-3.0:
|
||||
url: svn://svn.wowace.com/wow/libsharedmedia-3-0/mainline/trunk
|
||||
tag: latest
|
||||
@ -57,11 +57,11 @@ externals:
|
||||
optional-dependencies:
|
||||
- libdogtag-3-0
|
||||
- libdogtag-unit-3-0
|
||||
- librangecheck-2-0
|
||||
- librangecheck-3-0
|
||||
|
||||
move-folders:
|
||||
IceHUD/IceHUD_Options: IceHUD_Options
|
||||
IceHUD/libs/LibRangeCheck-2.0/LibRangeCheck-2.0: IceHUD/libs/LibRangeCheck-2.0
|
||||
IceHUD/libs/LibRangeCheck-3.0/LibRangeCheck-3.0: IceHUD/libs/LibRangeCheck-3.0
|
||||
|
||||
tools-used:
|
||||
- libdatabroker-1-1
|
||||
|
@ -996,7 +996,7 @@ function IceBarElement.prototype:CreateBackground()
|
||||
self.frame = CreateFrame("Frame", "IceHUD_"..self.elementName, self.masterFrame)
|
||||
end
|
||||
|
||||
self.frame:SetFrameStrata("BACKGROUND")
|
||||
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame:SetWidth(self.settings.barWidth + (self.moduleSettings.widthModifier or 0))
|
||||
self.frame:SetHeight(self.settings.barHeight)
|
||||
|
||||
@ -1041,6 +1041,7 @@ end
|
||||
-- Creates the actual bar
|
||||
function IceBarElement.prototype:CreateBar()
|
||||
self.barFrame = self:BarFactory(self.barFrame, "LOW", "ARTWORK", "Bar")
|
||||
|
||||
self:SetBarCoord(self.barFrame)
|
||||
|
||||
self.barFrame.bar:SetBlendMode(self.settings.barBlendMode)
|
||||
@ -1055,7 +1056,7 @@ function IceBarElement.prototype:BarFactory(barFrame, frameStrata, textureLayer,
|
||||
barFrame = CreateFrame("Frame", "IceHUD_"..self.elementName.."_"..(nameSuffix or "Bar"), self.frame)
|
||||
end
|
||||
|
||||
barFrame:SetFrameStrata(frameStrata and frameStrata or "LOW")
|
||||
barFrame:SetFrameStrata(IceHUD.IceCore:DetermineStrata(frameStrata and frameStrata or "LOW"))
|
||||
barFrame:SetWidth(self.settings.barWidth + (self.moduleSettings.widthModifier or 0))
|
||||
barFrame:SetHeight(self.settings.barHeight)
|
||||
self:SetBarFramePoints(barFrame)
|
||||
|
@ -23,6 +23,25 @@ if not UnitCastingInfo then
|
||||
UnitChannelInfo = ChannelInfo
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(spellID)
|
||||
if not spellID then
|
||||
return nil
|
||||
end
|
||||
|
||||
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||
if spellInfo then
|
||||
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Fulzamoth 2019-09-27 : Use LibClassicCasterino if it's there so we can use TargetCast
|
||||
-- module in Classic WoW
|
||||
if IceHUD.WowClassic then
|
||||
@ -361,7 +380,7 @@ function IceCastBar.prototype:MyOnUpdate()
|
||||
|
||||
local timeString = self.moduleSettings.showCastTime and string.format("%.1fs ", remainingTime) or ""
|
||||
local empowerString = self.NumStages ~= nil and (L["Stage %d"]):format(self:GetCurrentStage()) or ""
|
||||
local line1 = timeString .. self.actionMessage
|
||||
local line1 = timeString .. (self.actionMessage or "")
|
||||
if self.moduleSettings.empowerStageTextDisplay == "TOPLINE" then
|
||||
line1 = line1 .. " " .. empowerString
|
||||
end
|
||||
@ -470,6 +489,10 @@ function IceCastBar.prototype:GetCurrentCastingColor()
|
||||
end
|
||||
|
||||
function IceCastBar.prototype:FlashBar(color, alpha, text, textColor)
|
||||
if self.moduleSettings.flashInstants == "Never" then
|
||||
return
|
||||
end
|
||||
|
||||
if alpha then
|
||||
self.frame:SetAlpha(alpha)
|
||||
end
|
||||
@ -697,11 +720,11 @@ function IceCastBar.prototype:SpellCastSucceeded(event, unit, castGuid, spellId)
|
||||
return
|
||||
end
|
||||
|
||||
local spell = GetSpellInfo(spellId)
|
||||
local spell = GetSpellName(spellId)
|
||||
|
||||
-- show after normal successfull cast
|
||||
if (self.action == IceCastBar.Actions.Cast) then
|
||||
self:StartBar(IceCastBar.Actions.Success, spell.. self:GetShortRank(rank), spellId)
|
||||
self:StartBar(IceCastBar.Actions.Success, spell, spellId)
|
||||
return
|
||||
end
|
||||
|
||||
@ -719,7 +742,7 @@ function IceCastBar.prototype:SpellCastSucceeded(event, unit, castGuid, spellId)
|
||||
return
|
||||
end
|
||||
|
||||
self:StartBar(IceCastBar.Actions.Success, spell.. self:GetShortRank(rank), spellId)
|
||||
self:StartBar(IceCastBar.Actions.Success, spell, spellId)
|
||||
end
|
||||
|
||||
|
||||
|
83
IceCore.lua
83
IceCore.lua
@ -19,6 +19,25 @@ end
|
||||
|
||||
local DogTag = LibStub("LibDogTag-3.0", true)
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(spellID)
|
||||
if not spellID then
|
||||
return nil
|
||||
end
|
||||
|
||||
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||
if spellInfo then
|
||||
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
IceCore = IceCore_CreateClass()
|
||||
|
||||
IceCore.Side = { Left = "LEFT", Right = "RIGHT" }
|
||||
@ -116,6 +135,8 @@ function IceCore.prototype:SetupDefaults()
|
||||
bHideInBarberShop = true,
|
||||
bHideDuringShellGame = true,
|
||||
bHideDuringCataloging = true,
|
||||
|
||||
addedStrata = 0,
|
||||
},
|
||||
global = {
|
||||
lastRunVersion = 0,
|
||||
@ -365,13 +386,13 @@ end
|
||||
|
||||
function IceCore.prototype:RedirectRemovedModules()
|
||||
local _, class = UnitClass("player")
|
||||
if class == "WARRIOR" and self.settings.modules["SunderCount"] and GetSpellInfo(SUNDER_SPELL_ID) and IceHUD.WowVer < 60000 then
|
||||
if class == "WARRIOR" and self.settings.modules["SunderCount"] and GetSpellName(SUNDER_SPELL_ID) and IceHUD.WowVer < 60000 then
|
||||
if self.settings.modules["SunderCount"].enabled or self.settings.modules["SunderCount"].enabled == nil then
|
||||
local bFound = false
|
||||
|
||||
for k,v in pairs(self.elements) do
|
||||
if v.moduleSettings.customBarType == "Counter" and v.moduleSettings.auraName
|
||||
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellInfo(SUNDER_SPELL_ID)) then
|
||||
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellName(SUNDER_SPELL_ID)) then
|
||||
bFound = true
|
||||
break
|
||||
end
|
||||
@ -394,7 +415,7 @@ function IceCore.prototype:RedirectRemovedModules()
|
||||
newCounter.moduleSettings.maxCount = 3
|
||||
newCounter.moduleSettings.auraTarget = "target"
|
||||
newCounter.moduleSettings.auraType = "debuff"
|
||||
newCounter.moduleSettings.auraName = GetSpellInfo(SUNDER_SPELL_ID)
|
||||
newCounter.moduleSettings.auraName = GetSpellName(SUNDER_SPELL_ID)
|
||||
newCounter:Enable()
|
||||
end
|
||||
end
|
||||
@ -402,12 +423,12 @@ function IceCore.prototype:RedirectRemovedModules()
|
||||
self.settings.modules["SunderCount"] = nil
|
||||
end
|
||||
|
||||
if class == "DRUID" and self.settings.modules["LacerateCount"] and GetSpellInfo(LACERATE_SPELL_ID) then
|
||||
if class == "DRUID" and self.settings.modules["LacerateCount"] and GetSpellName(LACERATE_SPELL_ID) then
|
||||
if self.settings.modules["LacerateCount"].enabled or self.settings.modules["LacerateCount"].enabled == nil then
|
||||
local bFound = false
|
||||
for k,v in pairs(self.elements) do
|
||||
if v.moduleSettings.customBarType == "Counter" and v.moduleSettings.auraName
|
||||
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellInfo(LACERATE_SPELL_ID)) then
|
||||
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellName(LACERATE_SPELL_ID)) then
|
||||
bFound = true
|
||||
break
|
||||
end
|
||||
@ -431,7 +452,7 @@ function IceCore.prototype:RedirectRemovedModules()
|
||||
newCounter.moduleSettings.maxCount = 3
|
||||
newCounter.moduleSettings.auraTarget = "target"
|
||||
newCounter.moduleSettings.auraType = "debuff"
|
||||
newCounter.moduleSettings.auraName = GetSpellInfo(LACERATE_SPELL_ID)
|
||||
newCounter.moduleSettings.auraName = GetSpellName(LACERATE_SPELL_ID)
|
||||
newCounter:Enable()
|
||||
end
|
||||
end
|
||||
@ -439,12 +460,12 @@ function IceCore.prototype:RedirectRemovedModules()
|
||||
self.settings.modules["LacerateCount"] = nil
|
||||
end
|
||||
|
||||
if class == "SHAMAN" and self.settings.modules["MaelstromCount"] and GetSpellInfo(MAELSTROM_SPELL_ID) then
|
||||
if class == "SHAMAN" and self.settings.modules["MaelstromCount"] and GetSpellName(MAELSTROM_SPELL_ID) then
|
||||
if self.settings.modules["MaelstromCount"].enabled or self.settings.modules["MaelstromCount"].enabled == nil then
|
||||
local bFound = false
|
||||
for k,v in pairs(self.elements) do
|
||||
if v.moduleSettings.customBarType == "Counter" and v.moduleSettings.auraName
|
||||
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellInfo(MAELSTROM_SPELL_ID)) then
|
||||
and string.upper(v.moduleSettings.auraName) == string.upper(GetSpellName(MAELSTROM_SPELL_ID)) then
|
||||
bFound = true
|
||||
break
|
||||
end
|
||||
@ -464,7 +485,7 @@ function IceCore.prototype:RedirectRemovedModules()
|
||||
newCounter.moduleSettings.countMode = self.settings.modules["MaelstromCount"].maelstromMode or newCounter.moduleSettings.countMode
|
||||
newCounter.moduleSettings.countGap = self.settings.modules["MaelstromCount"].maelstromGap or newCounter.moduleSettings.countGap
|
||||
newCounter.moduleSettings.gradient = self.settings.modules["MaelstromCount"].gradient or newCounter.moduleSettings.gradient
|
||||
newCounter.moduleSettings.auraName = GetSpellInfo(MAELSTROM_SPELL_ID)
|
||||
newCounter.moduleSettings.auraName = GetSpellName(MAELSTROM_SPELL_ID)
|
||||
newCounter:Enable()
|
||||
end
|
||||
end
|
||||
@ -610,7 +631,7 @@ function IceCore.prototype:IsEnabled()
|
||||
end
|
||||
|
||||
function IceCore.prototype:DrawFrame()
|
||||
self.IceHUDFrame:SetFrameStrata("BACKGROUND")
|
||||
self.IceHUDFrame:SetFrameStrata(self:DetermineStrata("BACKGROUND"))
|
||||
self.IceHUDFrame:SetWidth(self.settings.gap)
|
||||
self.IceHUDFrame:SetHeight(20)
|
||||
|
||||
@ -931,6 +952,48 @@ function IceCore.prototype:SetColor(color, r, g, b)
|
||||
self:Redraw()
|
||||
end
|
||||
|
||||
function IceCore.prototype:GetAddedStrata()
|
||||
return self.settings.addedStrata
|
||||
end
|
||||
|
||||
function IceCore.prototype:SetAddedStrata(value)
|
||||
self.settings.addedStrata = value
|
||||
end
|
||||
|
||||
-- Preventing ugly if-else blocks in module creations
|
||||
-- (but could probably itself be smarter/prettier)
|
||||
-- Frisbees/AddonWhiner
|
||||
function IceCore.prototype:DetermineStrata(baseStrata)
|
||||
if self.settings.addedStrata == 0 then
|
||||
return baseStrata
|
||||
end
|
||||
|
||||
if self.settings.addedStrata == 1 then
|
||||
if baseStrata == "BACKGROUND" then
|
||||
return "LOW"
|
||||
elseif baseStrata == "LOW" then
|
||||
return "MEDIUM"
|
||||
elseif baseStrata == "MEDIUM" then
|
||||
return "HIGH"
|
||||
elseif baseStrata == "HIGH" then
|
||||
return "DIALOG"
|
||||
end
|
||||
end
|
||||
|
||||
if self.settings.addedStrata == 2 then
|
||||
if baseStrata == "BACKGROUND" then
|
||||
return "MEDIUM"
|
||||
elseif baseStrata == "LOW" then
|
||||
return "HIGH"
|
||||
elseif baseStrata == "MEDIUM" then
|
||||
return "DIALOG"
|
||||
elseif baseStrata == "HIGH" then
|
||||
return "FULLSCREEN"
|
||||
end
|
||||
end
|
||||
|
||||
return baseStrata -- failsafe
|
||||
end
|
||||
|
||||
function IceCore.prototype:IsInConfigMode()
|
||||
return self.bConfigMode
|
||||
|
@ -74,7 +74,7 @@ function IceElement.prototype:Create(parent)
|
||||
self.parent = parent
|
||||
if not self.masterFrame then
|
||||
self.masterFrame = CreateFrame("Frame", "IceHUD_Element_"..self.elementName, self.parent)
|
||||
self.masterFrame:SetFrameStrata("MEDIUM")
|
||||
self.masterFrame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("MEDIUM"))
|
||||
end
|
||||
self:CreateFrame()
|
||||
self:Show(false)
|
||||
|
90
IceHUD.lua
90
IceHUD.lua
@ -11,6 +11,20 @@ local icon = LibStub("LibDBIcon-1.0", true)
|
||||
local pendingModuleLoads = {}
|
||||
local bReadyToRegisterModules = false
|
||||
|
||||
local LoadAddOn = C_AddOns and C_AddOns.LoadAddOn or LoadAddOn
|
||||
|
||||
IceHUD.UnitAura = UnitAura
|
||||
if not IceHUD.UnitAura then
|
||||
IceHUD.UnitAura = function(unitToken, index, filter)
|
||||
local auraData = C_UnitAuras.GetAuraDataByIndex(unitToken, index, filter)
|
||||
if not auraData then
|
||||
return nil
|
||||
end
|
||||
|
||||
return AuraUtil.UnpackAuraData(auraData)
|
||||
end
|
||||
end
|
||||
|
||||
IceHUD.CurrTagVersion = 3
|
||||
IceHUD.debugging = false
|
||||
|
||||
@ -20,10 +34,12 @@ if GetClassicExpansionLevel then
|
||||
IceHUD.WowClassic = GetClassicExpansionLevel() == 0
|
||||
IceHUD.WowClassicBC = GetClassicExpansionLevel() == 1
|
||||
IceHUD.WowClassicWrath = GetClassicExpansionLevel() == 2
|
||||
IceHUD.WowClassicCataclysm = GetClassicExpansionLevel() == 3
|
||||
else
|
||||
IceHUD.WowClassic = WOW_PROJECT_ID and WOW_PROJECT_ID == WOW_PROJECT_CLASSIC
|
||||
IceHUD.WowClassicBC = false
|
||||
IceHUD.WowClassicWrath = false
|
||||
IceHUD.WowClassicCataclysm = false
|
||||
if WOW_PROJECT_ID and WOW_PROJECT_ID == WOW_PROJECT_BURNING_CRUSADE_CLASSIC then
|
||||
if not LE_EXPANSION_LEVEL_CURRENT or LE_EXPANSION_LEVEL_CURRENT == LE_EXPANSION_BURNING_CRUSADE then
|
||||
IceHUD.WowClassicBC = true
|
||||
@ -32,10 +48,32 @@ else
|
||||
end
|
||||
elseif WOW_PROJECT_WRATH_CLASSIC and WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC then
|
||||
IceHUD.WowClassicWrath = true
|
||||
elseif WOW_PROJECT_CATACLYSM_CLASSIC and WOW_PROJECT_ID == WOW_PROJECT_CATACLYSM_CLASSIC then
|
||||
IceHUD.WowClassicCataclysm = true
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(spellID)
|
||||
if not spellID then
|
||||
return nil
|
||||
end
|
||||
|
||||
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||
if spellInfo then
|
||||
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
-- compatibility/feature flags
|
||||
IceHUD.CanShowTargetCasting = not IceHUD.WowClassic or LibClassicCasterino or (IceHUD.WowClassic and IceHUD.WowVer >= 11500)
|
||||
IceHUD.GetPlayerAuraBySpellID = _G["C_UnitAuras"] and C_UnitAuras.GetPlayerAuraBySpellID
|
||||
IceHUD.SpellFunctionsReturnRank = IceHUD.WowMain and IceHUD.WowVer < 80000
|
||||
IceHUD.EventExistsPlayerPetChanged = IceHUD.WowMain and IceHUD.WowVer < 80000
|
||||
@ -48,20 +86,20 @@ IceHUD.EventExistsUnitDynamicFlags = IceHUD.WowMain and IceHUD.WowVer < 80000
|
||||
IceHUD.EventExistsUnitHealthFrequent = not IceHUD.WowMain or (IceHUD.WowVer >= 40000 and IceHUD.WowVer < 90000)
|
||||
IceHUD.PerPowerEventsExist = IceHUD.WowMain and IceHUD.WowVer < 40000
|
||||
IceHUD.PerTargetComboPoints = IceHUD.WowVer < 60000
|
||||
IceHUD.CanTrackOtherUnitBuffs = not IceHUD.WowClassic
|
||||
IceHUD.CanTrackGCD = not IceHUD.WowClassic
|
||||
IceHUD.CanTrackOtherUnitBuffs = not IceHUD.WowClassic or IceHUD.WowVer >= 11500
|
||||
IceHUD.CanTrackGCD = not IceHUD.WowClassic or IceHUD.WowVer >= 11500
|
||||
IceHUD.GetSpellInfoReturnsFunnel = IceHUD.WowMain and IceHUD.WowVer < 60000
|
||||
IceHUD.CanHookDestroyTotem = IceHUD.WowClassic or IceHUD.WowClassicBC or IceHUD.WowClassicWrath
|
||||
IceHUD.CanHookDestroyTotem = IceHUD.WowClassic or IceHUD.WowClassicBC or IceHUD.WowClassicWrath or IceHUD.WowClassicCataclysm
|
||||
IceHUD.ShouldUpdateTargetHealthEveryTick = (IceHUD.WowClassic or IceHUD.WowClassicBC) and GetCVarBool("predictedHealth")
|
||||
IceHUD.UsesUIPanelButtonTemplate = IceHUD.WowVer >= 50000 or not IceHUD.WowMain
|
||||
IceHUD.EventExistsSpellcastInterruptible = IceHUD.WowVer >= 30200 and not IceHUD.WowClassicWrath
|
||||
IceHUD.DeathKnightUnholyFrostRunesSwapped = IceHUD.WowVer < 70300 and not IceHUD.WowClassicWrath
|
||||
IceHUD.DeathKnightUnholyFrostRunesSwapped = IceHUD.WowVer < 70300 and not IceHUD.WowClassicWrath and not IceHUD.WowClassicCataclysm
|
||||
IceHUD.SupportsHealPrediction = IceHUD.WowVer >= 40000 or IceHUD.WowClassicWrath
|
||||
IceHUD.UnitGroupRolesReturnsRoleString = IceHUD.WowVer >= 40000 or IceHUD.WowClassicWrath
|
||||
IceHUD.ShellGameSpellID = 271571
|
||||
IceHUD.HasShellGame = GetSpellInfo(IceHUD.ShellGameSpellID)
|
||||
IceHUD.HasShellGame = GetSpellName(IceHUD.ShellGameSpellID)
|
||||
IceHUD.CatalogingSpellIDs = {366290, 372817, 385025, 385635, 386070, 386504, 400043, 403115}
|
||||
IceHUD.HasCataloging = GetSpellInfo(366290)
|
||||
IceHUD.HasCataloging = GetSpellName(366290)
|
||||
|
||||
IceHUD.UnitPowerEvent = "UNIT_POWER_UPDATE"
|
||||
|
||||
@ -413,7 +451,12 @@ blizOptionsPanel.button:SetWidth(240)
|
||||
blizOptionsPanel.button:SetHeight(30)
|
||||
blizOptionsPanel.button:SetScript("OnClick", function(self) HideUIPanel(InterfaceOptionsFrame) HideUIPanel(GameMenuFrame) IceHUD:OpenConfig() end)
|
||||
blizOptionsPanel.button:SetPoint('TOPLEFT', blizOptionsPanel, 'TOPLEFT', 20, -20)
|
||||
if InterfaceOptions_AddCategory then
|
||||
InterfaceOptions_AddCategory(blizOptionsPanel)
|
||||
elseif Settings then
|
||||
local category = Settings.RegisterCanvasLayoutCategory(blizOptionsPanel, "IceHUD")
|
||||
Settings.RegisterAddOnCategory(category)
|
||||
end
|
||||
|
||||
function IceHUD:OpenConfig()
|
||||
if not ConfigDialog then return end
|
||||
@ -481,7 +524,7 @@ end
|
||||
|
||||
function IceHUD:GetAuraCount(auraType, unit, ability, onlyMine, matchByName)
|
||||
if not unit or not ability then
|
||||
return 0
|
||||
return 0, nil
|
||||
end
|
||||
|
||||
if unit == "main hand weapon" or unit == "off hand weapon" then
|
||||
@ -489,46 +532,46 @@ function IceHUD:GetAuraCount(auraType, unit, ability, onlyMine, matchByName)
|
||||
= GetWeaponEnchantInfo()
|
||||
|
||||
if unit == "main hand weapon" and hasMainHandEnchant then
|
||||
return mainHandCharges
|
||||
return mainHandCharges, nil
|
||||
elseif unit == "off hand weapon" and hasOffHandEnchant then
|
||||
return offHandCharges
|
||||
return offHandCharges, nil
|
||||
end
|
||||
|
||||
return 0
|
||||
return 0, nil
|
||||
end
|
||||
|
||||
-- Support for Spell IDs
|
||||
if (IceHUD.GetPlayerAuraBySpellID and tonumber(ability) ~= nil) then
|
||||
local aura = C_UnitAuras.GetPlayerAuraBySpellID(ability)
|
||||
if aura ~= nil then
|
||||
return aura.applications
|
||||
return aura.applications, nil
|
||||
else
|
||||
return 0
|
||||
return 0, nil
|
||||
end
|
||||
end
|
||||
|
||||
local i = 1
|
||||
local name, _, texture, applications
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
name, _, texture, applications = UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||
name, _, texture, applications = IceHUD.UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||
else
|
||||
name, texture, applications = UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||
name, texture, applications = IceHUD.UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||
end
|
||||
while name do
|
||||
if (not matchByName and string.match(texture:upper(), ability:upper()))
|
||||
or (matchByName and string.match(name:upper(), ability:upper())) then
|
||||
return applications
|
||||
return applications, i
|
||||
end
|
||||
|
||||
i = i + 1
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
name, _, texture, applications = UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||
name, _, texture, applications = IceHUD.UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||
else
|
||||
name, texture, applications = UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||
name, texture, applications = IceHUD.UnitAura(unit, i, auraType..(onlyMine and "|PLAYER" or ""))
|
||||
end
|
||||
end
|
||||
|
||||
return 0
|
||||
return 0, nil
|
||||
end
|
||||
|
||||
do
|
||||
@ -542,9 +585,9 @@ do
|
||||
local i = 1
|
||||
local name, _, texture, applications, _, _, _, _, _, _, auraID
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
name, _, texture, applications, _, _, _, _, _, _, auraID = UnitAura(unit, i, filter)
|
||||
name, _, texture, applications, _, _, _, _, _, _, auraID = IceHUD.UnitAura(unit, i, filter)
|
||||
else
|
||||
name, texture, applications, _, _, _, _, _, _, auraID = UnitAura(unit, i, filter)
|
||||
name, texture, applications, _, _, _, _, _, _, auraID = IceHUD.UnitAura(unit, i, filter)
|
||||
end
|
||||
while name do
|
||||
for i=1, #spellIDs do
|
||||
@ -556,9 +599,9 @@ do
|
||||
|
||||
i = i + 1
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
name, _, texture, applications, _, _, _, _, _, _, auraID = UnitAura(unit, i, filter)
|
||||
name, _, texture, applications, _, _, _, _, _, _, auraID = IceHUD.UnitAura(unit, i, filter)
|
||||
else
|
||||
name, texture, applications, _, _, _, _, _, _, auraID = UnitAura(unit, i, filter)
|
||||
name, texture, applications, _, _, _, _, _, _, auraID = IceHUD.UnitAura(unit, i, filter)
|
||||
end
|
||||
end
|
||||
|
||||
@ -967,6 +1010,8 @@ if UnitPopupFrames then
|
||||
end
|
||||
|
||||
IceHUD.DropdownUnit = nil
|
||||
-- todo: update for new UnitPopup_OpenMenu() API
|
||||
if UnitPopup_ShowMenu then
|
||||
UIDropDownMenu_Initialize(IceHUD_UnitFrame_DropDown, function()
|
||||
if not IceHUD.DropdownUnit then
|
||||
return
|
||||
@ -978,6 +1023,7 @@ UIDropDownMenu_Initialize(IceHUD_UnitFrame_DropDown, function()
|
||||
UnitPopup_ShowMenu(IceHUD_UnitFrame_DropDown, menu, IceHUD.DropdownUnit, nil, id)
|
||||
end
|
||||
end, "MENU", nil)
|
||||
end
|
||||
|
||||
function IceHUD:OutOfCombatWrapper(func)
|
||||
return function(...)
|
||||
|
11
IceHUD.toc
11
IceHUD.toc
@ -1,8 +1,9 @@
|
||||
## Interface: 100105
|
||||
## Interface-Retail: 100105
|
||||
## Interface-Classic: 11403
|
||||
## Interface: 100207
|
||||
## Interface-Retail: 100207
|
||||
## Interface-Classic: 11502
|
||||
## Interface-BCC: 20504
|
||||
## Interface-Wrath: 30402
|
||||
## Interface-Wrath: 30403
|
||||
## Interface-Cata: 40400
|
||||
## Author: Parnic, originally created by Iceroth
|
||||
## Name: IceHUD
|
||||
## Title: IceHUD |cff7fff7f-Ace3-|r
|
||||
@ -15,7 +16,7 @@
|
||||
#@end-non-debug@
|
||||
## SavedVariables: IceCoreDB
|
||||
## IconTexture: Interface\Icons\Spell_Frost_Frost
|
||||
## OptionalDeps: Ace3, LibSharedMedia-3.0, LibDogTag-3.0, LibDogTag-Unit-3.0, LibRangeCheck-2.0, LibDualSpec-1.0, LibDBIcon-1.0, AceGUI-3.0-SharedMediaWidgets
|
||||
## OptionalDeps: Ace3, LibSharedMedia-3.0, LibDogTag-3.0, LibDogTag-Unit-3.0, LibRangeCheck-3.0, LibDualSpec-1.0, LibDBIcon-1.0, AceGUI-3.0-SharedMediaWidgets
|
||||
## X-Category: HUDs
|
||||
## X-Website: https://www.wowace.com/projects/ice-hud
|
||||
## X-Curse-Project-ID: 5394
|
||||
|
@ -1,8 +1,9 @@
|
||||
## Interface: 100105
|
||||
## Interface-Retail: 100105
|
||||
## Interface-Classic: 11403
|
||||
## Interface: 100207
|
||||
## Interface-Retail: 100207
|
||||
## Interface-Classic: 11502
|
||||
## Interface-BCC: 20504
|
||||
## Interface-Wrath: 30402
|
||||
## Interface-Wrath: 30403
|
||||
## Interface-Cata: 40400
|
||||
## Title: IceHUD |cff7fff7f-Options-|r
|
||||
## Author: Parnic
|
||||
## Version: @project-version@
|
||||
|
@ -444,29 +444,26 @@ The Classic game client doesn't provide this information to addons because it wa
|
||||
hidden = not IceHUD.HasCataloging,
|
||||
order = 36,
|
||||
},
|
||||
|
||||
bIncreaseStrata = {
|
||||
type = 'range',
|
||||
name = L["Added strata"],
|
||||
desc = L["Push IceHUD modules to the foreground. Increase if other addons are covering IceHUD. Requires reload."],
|
||||
get = function()
|
||||
return IceHUD.IceCore:GetAddedStrata()
|
||||
end,
|
||||
set = function(info, v)
|
||||
IceHUD.IceCore:SetAddedStrata(v)
|
||||
end,
|
||||
min = 0,
|
||||
max = 2,
|
||||
step = 1,
|
||||
order = 37,
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
textSettings = {
|
||||
type = 'select',
|
||||
dialogControl = "LSM30_Font",
|
||||
name = L["Font"],
|
||||
desc = L["IceHUD Font"],
|
||||
order = 19,
|
||||
get = function(info)
|
||||
return IceHUD.IceCore:GetFontFamily()
|
||||
end,
|
||||
set = function(info, value)
|
||||
IceHUD.IceCore:SetFontFamily(value)
|
||||
end,
|
||||
disabled = function()
|
||||
return not IceHUD.IceCore:IsEnabled()
|
||||
end,
|
||||
values = AceGUIWidgetLSMlists.font,
|
||||
order = 94.75,
|
||||
},
|
||||
|
||||
barSettings = {
|
||||
type = 'group',
|
||||
name = L["Bar Settings"],
|
||||
@ -764,6 +761,26 @@ The Classic game client doesn't provide this information to addons because it wa
|
||||
}
|
||||
}
|
||||
|
||||
if AceGUIWidgetLSMlists then
|
||||
options.args.textSettings = {
|
||||
type = 'select',
|
||||
dialogControl = "LSM30_Font",
|
||||
name = L["Font"],
|
||||
desc = L["IceHUD Font"],
|
||||
get = function(info)
|
||||
return IceHUD.IceCore:GetFontFamily()
|
||||
end,
|
||||
set = function(info, value)
|
||||
IceHUD.IceCore:SetFontFamily(value)
|
||||
end,
|
||||
disabled = function()
|
||||
return not IceHUD.IceCore:IsEnabled()
|
||||
end,
|
||||
values = AceGUIWidgetLSMlists.font,
|
||||
order = 94.75,
|
||||
}
|
||||
end
|
||||
|
||||
IceHUD_Options.options = options
|
||||
|
||||
function IceHUD_Options:GenerateModuleOptions(firstLoad)
|
||||
|
@ -3,6 +3,21 @@ local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||
local validUnits = {"player", "target", "focus", "pet", "vehicle", "targettarget", "main hand weapon", "off hand weapon"}
|
||||
local buffOrDebuff = {"buff", "debuff", "charges", "spell count"}
|
||||
|
||||
local GetSpellCharges = GetSpellCharges
|
||||
if not GetSpellCharges and C_Spell then
|
||||
GetSpellCharges = function(spellID)
|
||||
local spellChargeInfo = C_Spell.GetSpellCharges(spellID)
|
||||
if spellChargeInfo then
|
||||
return spellChargeInfo.currentCharges, spellChargeInfo.maxCharges, spellChargeInfo.cooldownStartTime, spellChargeInfo.cooldownDuration, spellChargeInfo.chargeModRate
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellCount = GetSpellCount
|
||||
if not GetSpellCount and C_Spell then
|
||||
GetSpellCount = C_Spell.GetSpellCastCount
|
||||
end
|
||||
|
||||
-- OVERRIDE
|
||||
function IceStackCounter_GetOptions(frame, opts)
|
||||
opts["customHeader"] = {
|
||||
|
@ -179,7 +179,7 @@ function IceUnitBar.prototype:CreateFlashFrame()
|
||||
self.flashFrame = CreateFrame("Frame", "IceHUD_"..self.elementName.."_Flash", self.frame)
|
||||
end
|
||||
|
||||
self.flashFrame:SetFrameStrata("BACKGROUND")
|
||||
self.flashFrame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.flashFrame:SetWidth(self.settings.barWidth + (self.moduleSettings.widthModifier or 0))
|
||||
self.flashFrame:SetHeight(self.settings.barHeight)
|
||||
|
||||
|
77
changelog.md
77
changelog.md
@ -1,5 +1,82 @@
|
||||
# Changelog
|
||||
|
||||
v1.14.42:
|
||||
|
||||
- Fix Vengeance module in Cataclysm Classic
|
||||
|
||||
v1.14.41:
|
||||
|
||||
- Fix swapped DK runes in Cataclysm Classic
|
||||
- Possible fix for castbar flashing sometimes when set to "Never"
|
||||
- Fix IceHUD Vigor bar not showing up for some types of dragons such as the Algarian Stormrider
|
||||
|
||||
v1.14.40:
|
||||
|
||||
- Update TOC for Dragonflight to 10.2.7
|
||||
|
||||
v1.14.39:
|
||||
|
||||
- Support Cataclysm Classic 4.4.0
|
||||
|
||||
v1.14.38:
|
||||
|
||||
- Update TOCs
|
||||
|
||||
v1.14.37:
|
||||
|
||||
- Update LibRangeCheck version to address taint issues (wowace ticket #353)
|
||||
|
||||
v1.14.36:
|
||||
|
||||
- Really fix IceHUD stomping on other uses of the PowerBarContainer such as the Digging bar for the Archive event.
|
||||
|
||||
v1.14.35:
|
||||
|
||||
- Fix IceHUD stomping on other uses of the PowerBarContainer such as the Digging bar for the Archive event.
|
||||
|
||||
v1.14.34:
|
||||
|
||||
- Fix Vigor showing up sometimes when it shouldn't.
|
||||
|
||||
v1.14.33:
|
||||
|
||||
- Update TOC for Dragonflight to 10.2.5
|
||||
|
||||
v1.14.32:
|
||||
|
||||
- Enable GlobalCoolDown module in Classic Era 1.15.0+
|
||||
- Enable tracking target buffs/debuffs in Classic Era 1.15.0+
|
||||
|
||||
v1.14.31:
|
||||
|
||||
- Fix nil concatenation error (wowace ticket #351)
|
||||
|
||||
v1.14.30:
|
||||
|
||||
- Update Classic-era TOC for 1.15.0
|
||||
- Enable TargetCastBar module on Classic-era 1.15+
|
||||
|
||||
v1.14.29:
|
||||
|
||||
- Fix Stagger bar error for 10.2.0 (wowace ticket #348)
|
||||
|
||||
v1.14.28:
|
||||
|
||||
- Update TOC for Dragonflight to 10.2.0
|
||||
|
||||
v1.14.27:
|
||||
|
||||
- Update TOC for Dragonflight to 10.1.7
|
||||
|
||||
v1.14.26:
|
||||
|
||||
- Update TOC for classic-era to 1.14.4
|
||||
|
||||
v1.14.25:
|
||||
|
||||
- Fixed lua error that would appear when targetting webwrapped players in heroic alpha/beta titan rune dungeons.
|
||||
- Added ability to adjust strata globally.
|
||||
|
||||
v1.14.24:
|
||||
|
||||
- Fixed an error when targeting a player and right-clicking a module that should show a menu in 10.1.5.
|
||||
|
@ -14,7 +14,7 @@
|
||||
<Include file="libs\AceHook-3.0\AceHook-3.0.xml"/>
|
||||
<Include file="libs\LibDogTag-3.0\lib.xml"/>
|
||||
<Include file="libs\LibDogTag-Unit-3.0\lib.xml"/>
|
||||
<Script file="libs\LibRangeCheck-2.0\LibRangeCheck-2.0.lua"/>
|
||||
<Script file="libs\LibRangeCheck-3.0\LibRangeCheck-3.0.lua"/>
|
||||
<Include file="libs\LibSharedMedia-3.0\lib.xml"/>
|
||||
<Include file="libs\AceGUI-3.0-SharedMediaWidgets\widget.xml"/>
|
||||
<Script file="LibDataBroker-1.1.lua"/>
|
||||
|
@ -8,6 +8,21 @@ if not CastingBarFrame then
|
||||
CastingBarFrame = PlayerCastingBarFrame
|
||||
end
|
||||
|
||||
local IsSpellInRange = IsSpellInRange
|
||||
if not IsSpellInRange and C_Spell then
|
||||
IsSpellInRange = C_Spell.IsSpellInRange
|
||||
end
|
||||
|
||||
local GetSpellCooldown = GetSpellCooldown
|
||||
if not GetSpellCooldown and C_Spell then
|
||||
GetSpellCooldown = function(spellID)
|
||||
local spellCooldownInfo = C_Spell.GetSpellCooldown(spellID)
|
||||
if spellCooldownInfo then
|
||||
return spellCooldownInfo.startTime, spellCooldownInfo.duration, spellCooldownInfo.isEnabled, spellCooldownInfo.modRate
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
CastBar.prototype.spellCastSent = nil
|
||||
|
||||
-- Constructor --
|
||||
|
@ -731,7 +731,7 @@ end
|
||||
function IceClassPowerCounter.prototype:CreateFrame()
|
||||
IceClassPowerCounter.super.prototype.CreateFrame(self)
|
||||
|
||||
self.frame:SetFrameStrata("LOW")
|
||||
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||
self.frame:SetHeight(self.runeHeight)
|
||||
self.frame:ClearAllPoints()
|
||||
self.frame:SetPoint("TOP", self.parent, "BOTTOM", self.moduleSettings.hpos, self.moduleSettings.vpos)
|
||||
@ -807,7 +807,7 @@ function IceClassPowerCounter.prototype:CreateRune(i)
|
||||
-- create runes
|
||||
if (not self.frame.graphical[i]) then
|
||||
self.frame.graphical[i] = CreateFrame("Frame", nil, self.frame)
|
||||
self.frame.graphical[i]:SetFrameStrata("BACKGROUND")
|
||||
self.frame.graphical[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
|
||||
self.frame.graphical[i].rune = self.frame.graphical[i]:CreateTexture(nil, "BORDER")
|
||||
self.frame.graphical[i].rune:SetVertexColor(0, 0, 0)
|
||||
|
@ -3,8 +3,27 @@ local ComboPoints = IceCore_CreateClass(IceElement)
|
||||
|
||||
local IceHUD = _G.IceHUD
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(spellID)
|
||||
if not spellID then
|
||||
return nil
|
||||
end
|
||||
|
||||
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||
if spellInfo then
|
||||
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
local AnticipationSpellId = 114015
|
||||
local AnticipationExists = GetSpellInfo(AnticipationSpellId) and IceHUD.WowVer < 70000
|
||||
local AnticipationExists = GetSpellName(AnticipationSpellId) and IceHUD.WowVer < 70000
|
||||
|
||||
ComboPoints.prototype.comboSize = 20
|
||||
|
||||
@ -337,7 +356,7 @@ end
|
||||
function ComboPoints.prototype:CreateFrame()
|
||||
ComboPoints.super.prototype.CreateFrame(self)
|
||||
|
||||
self.frame:SetFrameStrata("BACKGROUND")
|
||||
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||
self.frame:SetWidth((self.comboSize - 5)*self:GetMaxComboPoints())
|
||||
self.frame:SetHeight(1)
|
||||
@ -396,7 +415,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
||||
end
|
||||
end
|
||||
|
||||
self.frame.graphicalBG[i]:SetFrameStrata("BACKGROUND")
|
||||
self.frame.graphicalBG[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame.graphicalBG[i]:SetWidth(self.comboSize)
|
||||
self.frame.graphicalBG[i]:SetHeight(self.comboSize)
|
||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||
@ -432,7 +451,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
||||
end
|
||||
end
|
||||
|
||||
self.frame.graphical[i]:SetFrameStrata("LOW")
|
||||
self.frame.graphical[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||
self.frame.graphical[i]:SetAllPoints(self.frame.graphicalBG[i])
|
||||
|
||||
local r, g, b = self:GetColor("ComboPoints")
|
||||
@ -471,7 +490,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
|
||||
end
|
||||
end
|
||||
|
||||
self.frame.graphicalAnt[i]:SetFrameStrata("LOW")
|
||||
self.frame.graphicalAnt[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||
self.frame.graphicalAnt[i]:SetFrameLevel(self.frame.graphical[i]:GetFrameLevel() + 1)
|
||||
self.frame.graphicalAnt[i]:SetWidth(math.floor(self.comboSize / 2))
|
||||
self.frame.graphicalAnt[i]:SetHeight(math.floor(self.comboSize / 2))
|
||||
@ -522,7 +541,7 @@ function ComboPoints.prototype:UpdateComboPoints(...)
|
||||
end
|
||||
|
||||
if AnticipationExists then
|
||||
_, _, _, anticipate = UnitAura("player", GetSpellInfo(AnticipationSpellId))
|
||||
_, _, _, anticipate = IceHUD.UnitAura("player", GetSpellName(AnticipationSpellId))
|
||||
else
|
||||
anticipate = 0
|
||||
end
|
||||
@ -593,9 +612,9 @@ do
|
||||
if UnitIsUnit(unit, "player") then
|
||||
local _, _, _, newAntStacks
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
_, _, _, newAntStacks = UnitAura("player", GetSpellInfo(AnticipationSpellId))
|
||||
_, _, _, newAntStacks = IceHUD.UnitAura("player", GetSpellName(AnticipationSpellId))
|
||||
else
|
||||
_, _, newAntStacks = UnitAura("player", GetSpellInfo(AnticipationSpellId))
|
||||
_, _, newAntStacks = IceHUD.UnitAura("player", GetSpellName(AnticipationSpellId))
|
||||
end
|
||||
if newAntStacks ~= antStacks then
|
||||
antStacks = newAntStacks
|
||||
|
@ -12,6 +12,19 @@ local AuraIconWidth = 20
|
||||
local AuraIconHeight = 20
|
||||
local displayModes = {NORMAL = L["When present"], ALWAYS = L["Always"], WHEN_TARGETING = L["Always, when targeting"], MISSING = L["When missing"]}
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(id)
|
||||
local info = C_Spell.GetSpellInfo(id)
|
||||
return info.name, nil, info.iconID
|
||||
end
|
||||
end
|
||||
|
||||
IceCustomBar.prototype.auraDuration = -1
|
||||
IceCustomBar.prototype.auraEndTime = -1
|
||||
IceCustomBar.prototype.bIsAura = false
|
||||
@ -686,9 +699,9 @@ function IceCustomBar.prototype:GetAuraDuration(unitName, buffName)
|
||||
local buffFilter = (isBuff and "HELPFUL" or "HARMFUL") .. (self.moduleSettings.trackOnlyMine and "|PLAYER" or "")
|
||||
local buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, buffFilter)
|
||||
buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, buffFilter)
|
||||
else
|
||||
buff, texture, count, type, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, buffFilter)
|
||||
buff, texture, count, type, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, buffFilter)
|
||||
end
|
||||
local isMine = unitCaster == "player"
|
||||
local mySpellId = tonumber(self.moduleSettings.buffToTrack)
|
||||
@ -716,9 +729,9 @@ function IceCustomBar.prototype:GetAuraDuration(unitName, buffName)
|
||||
i = i + 1;
|
||||
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, buffFilter)
|
||||
buff, rank, texture, count, type, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, buffFilter)
|
||||
else
|
||||
buff, texture, count, type, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, buffFilter)
|
||||
buff, texture, count, type, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, buffFilter)
|
||||
end
|
||||
isMine = unitCaster == "player"
|
||||
end
|
||||
@ -773,7 +786,7 @@ function IceCustomBar.prototype:UpdateCustomBar(unit, fromUpdate)
|
||||
self:GetAuraDuration(self.unit, self.moduleSettings.buffToTrack)
|
||||
else
|
||||
self.auraDuration, remaining, self.auraBuffCount, auraIcon, endTime =
|
||||
self:GetAuraDuration(self.unit, GetSpellInfo(self.moduleSettings.buffToTrack))
|
||||
self:GetAuraDuration(self.unit, GetSpellName(self.moduleSettings.buffToTrack))
|
||||
end
|
||||
|
||||
if endTime == 0 then
|
||||
|
@ -17,6 +17,44 @@ local COOLDOWN_TYPE_ITEM = 2
|
||||
|
||||
local localizedInventorySlotNames = {}
|
||||
|
||||
local IsSpellInRange = IsSpellInRange
|
||||
if not IsSpellInRange and C_Spell then
|
||||
IsSpellInRange = C_Spell.IsSpellInRange
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(id)
|
||||
local info = C_Spell.GetSpellInfo(id)
|
||||
return info.name, nil, info.iconID
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellCooldown = GetSpellCooldown
|
||||
if not GetSpellCooldown and C_Spell then
|
||||
GetSpellCooldown = function(spellID)
|
||||
local spellCooldownInfo = C_Spell.GetSpellCooldown(spellID)
|
||||
if spellCooldownInfo then
|
||||
return spellCooldownInfo.startTime, spellCooldownInfo.duration, spellCooldownInfo.isEnabled, spellCooldownInfo.modRate
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetItemInfo = GetItemInfo
|
||||
if not GetItemInfo and C_Item then
|
||||
GetItemInfo = C_Item.GetItemInfo
|
||||
end
|
||||
|
||||
local IsUsableSpell = IsUsableSpell
|
||||
if not IsUsableSpell and C_Spell then
|
||||
IsUsableSpell = C_Spell.IsSpellUsable
|
||||
end
|
||||
|
||||
IceCustomCDBar.prototype.cooldownDuration = 0
|
||||
IceCustomCDBar.prototype.cooldownEndTime = 0
|
||||
IceCustomCDBar.prototype.coolingDown = false
|
||||
@ -161,7 +199,7 @@ function IceCustomCDBar.prototype:GetDisplayText(fromValue)
|
||||
|
||||
if not self.moduleSettings.cooldownType or self.moduleSettings.cooldownType == COOLDOWN_TYPE_SPELL then
|
||||
if tonumber(fromValue) ~= nil then
|
||||
local spellName = GetSpellInfo(tonumber(fromValue))
|
||||
local spellName = GetSpellName(tonumber(fromValue))
|
||||
if spellName then
|
||||
v = spellName
|
||||
end
|
||||
@ -278,7 +316,7 @@ function IceCustomCDBar.prototype:GetOptions()
|
||||
set = function(info, v)
|
||||
local orig = v
|
||||
if tonumber(v) ~= nil then
|
||||
v = GetSpellInfo(tonumber(v))
|
||||
v = GetSpellName(tonumber(v))
|
||||
end
|
||||
if v == nil then
|
||||
v = orig
|
||||
|
@ -326,7 +326,7 @@ end
|
||||
function IceCustomCount.prototype:CreateFrame()
|
||||
IceCustomCount.super.prototype.CreateFrame(self)
|
||||
|
||||
self.frame:SetFrameStrata("BACKGROUND")
|
||||
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||
self.frame:SetWidth((self.countSize + self.moduleSettings.countGap)*IceStackCounter_GetMaxCount(self))
|
||||
self.frame:SetHeight(1)
|
||||
@ -382,7 +382,7 @@ function IceCustomCount.prototype:CreateCustomFrame(doTextureUpdate)
|
||||
end
|
||||
end
|
||||
|
||||
self.frame.graphicalBG[i]:SetFrameStrata("BACKGROUND")
|
||||
self.frame.graphicalBG[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame.graphicalBG[i]:SetWidth(self.countSize)
|
||||
self.frame.graphicalBG[i]:SetHeight(self.countSize)
|
||||
if self.moduleSettings.graphicalLayout == "Horizontal" then
|
||||
@ -416,7 +416,7 @@ function IceCustomCount.prototype:CreateCustomFrame(doTextureUpdate)
|
||||
end
|
||||
end
|
||||
|
||||
self.frame.graphical[i]:SetFrameStrata("BACKGROUND")
|
||||
self.frame.graphical[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame.graphical[i]:SetAllPoints(self.frame.graphicalBG[i])
|
||||
|
||||
self.frame.graphical[i]:Hide()
|
||||
|
@ -7,6 +7,14 @@ local AuraIconWidth = 20
|
||||
local AuraIconHeight = 20
|
||||
local DefaultAuraIcon = "Interface\\Icons\\Spell_Frost_Frost"
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(id)
|
||||
local info = C_Spell.GetSpellInfo(id)
|
||||
return info.name, nil, info.iconID
|
||||
end
|
||||
end
|
||||
|
||||
function IceCustomCounterBar.prototype:init()
|
||||
IceCustomCounterBar.super.prototype.init(self, "CustomCounterBar")
|
||||
|
||||
|
@ -11,7 +11,9 @@ local DragonridingBuffs = {
|
||||
}
|
||||
|
||||
local vigorWidgetSetID = 283
|
||||
local vigorWidgetID = 4460
|
||||
local vigorWidgetType = 24
|
||||
local defaultVigorWidgetID = 4460
|
||||
local vigorWidgetIDs = nil
|
||||
local knowsAlternateMountEnum = Enum and Enum.PowerType and Enum.PowerType.AlternateMount
|
||||
local unitPowerType = Enum and Enum.PowerType and Enum.PowerType.AlternateMount
|
||||
unitPowerType = unitPowerType or ALTERNATE_POWER_INDEX
|
||||
@ -38,6 +40,7 @@ function DragonridingVigor.prototype:Enable(core)
|
||||
end
|
||||
|
||||
DragonridingVigor.super.prototype.Enable(self, core)
|
||||
self:Show(false)
|
||||
|
||||
self:RegisterEvent("UNIT_AURA", "CheckShouldShow")
|
||||
self:RegisterEvent("UPDATE_UI_WIDGET", "UpdateVigorRecharge")
|
||||
@ -50,20 +53,45 @@ function DragonridingVigor.prototype:EnteringWorld()
|
||||
end
|
||||
|
||||
function DragonridingVigor.prototype:CheckShouldShow(event, unit, info)
|
||||
if unit ~= "player" then
|
||||
if not vigorWidgetIDs or #vigorWidgetIDs == 0 then
|
||||
self:PopulateVigorWidgetIDs()
|
||||
end
|
||||
|
||||
if unit ~= "player" or not vigorWidgetIDs then
|
||||
return
|
||||
end
|
||||
|
||||
if knowsAlternateMountEnum and UnitPowerMax(self.unit, unitPowerType) > 0 then
|
||||
self:Show(true)
|
||||
elseif IceHUD:HasAnyBuff("player", DragonridingBuffs) then
|
||||
self:Show(true)
|
||||
else
|
||||
local shown = false
|
||||
for i=1,#vigorWidgetIDs do
|
||||
local info = C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo(vigorWidgetIDs[i])
|
||||
if info and info.shownState ~= 0 then
|
||||
shown = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if not shown then
|
||||
self:Show(false)
|
||||
self.suppressHideBlizz = true
|
||||
if self.moduleSettings.hideBlizz then
|
||||
self:ShowBlizz()
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
self:Show(true)
|
||||
|
||||
-- if knowsAlternateMountEnum and UnitPowerMax(self.unit, unitPowerType) > 0 then
|
||||
-- self:Show(true)
|
||||
-- elseif not knowsAlternateMountEnum and IceHUD:HasAnyBuff("player", DragonridingBuffs) then
|
||||
-- self:Show(true)
|
||||
-- else
|
||||
-- self:Show(false)
|
||||
-- if self.moduleSettings.hideBlizz then
|
||||
-- self:ShowBlizz()
|
||||
-- end
|
||||
-- end
|
||||
end
|
||||
|
||||
function DragonridingVigor.prototype:UpdateRunePower(event, arg1, arg2)
|
||||
@ -71,13 +99,49 @@ function DragonridingVigor.prototype:UpdateRunePower(event, arg1, arg2)
|
||||
DragonridingVigor.super.prototype.UpdateRunePower(self, event, arg1, arg2)
|
||||
end
|
||||
|
||||
function DragonridingVigor.prototype:PopulateVigorWidgetIDs()
|
||||
local widgets = C_UIWidgetManager.GetAllWidgetsBySetID(vigorWidgetSetID)
|
||||
if not widgets then
|
||||
return
|
||||
end
|
||||
|
||||
for i=1,#widgets do
|
||||
if widgets[i].widgetType == vigorWidgetType then
|
||||
if not vigorWidgetIDs then
|
||||
vigorWidgetIDs = {}
|
||||
end
|
||||
|
||||
table.insert(vigorWidgetIDs, widgets[i].widgetID)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function DragonridingVigor.prototype:UpdateVigorRecharge(event, widget)
|
||||
if not vigorWidgetIDs or #vigorWidgetIDs == 0 then
|
||||
self:PopulateVigorWidgetIDs()
|
||||
end
|
||||
if not vigorWidgetIDs or #vigorWidgetIDs == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
self.partialReady = nil
|
||||
self.partialReadyPercent = nil
|
||||
if event ~= "internal" and (not widget or widget.widgetSetID ~= vigorWidgetSetID) then
|
||||
return
|
||||
end
|
||||
|
||||
local widgetID = defaultVigorWidgetID
|
||||
if widget then
|
||||
widgetID = widget.widgetID
|
||||
end
|
||||
|
||||
local info = C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo(widgetID)
|
||||
if not info then
|
||||
return
|
||||
end
|
||||
|
||||
self.suppressHideBlizz = not info or info.shownState == 0
|
||||
|
||||
if event ~= "internal" then
|
||||
if self.moduleSettings.hideBlizz then
|
||||
self:HideBlizz()
|
||||
@ -86,11 +150,6 @@ function DragonridingVigor.prototype:UpdateVigorRecharge(event, widget)
|
||||
end
|
||||
end
|
||||
|
||||
local info = C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo(vigorWidgetID)
|
||||
if not info then
|
||||
return
|
||||
end
|
||||
|
||||
if info.numFullFrames == info.numTotalFrames then
|
||||
return
|
||||
end
|
||||
@ -150,11 +209,21 @@ function DragonridingVigor.prototype:GetPartialRuneAtlas(rune)
|
||||
end
|
||||
|
||||
function DragonridingVigor.prototype:ShowBlizz()
|
||||
UIWidgetPowerBarContainerFrame:Show()
|
||||
local info = C_UIWidgetManager.GetFillUpFramesWidgetVisualizationInfo(defaultVigorWidgetID)
|
||||
if not info or info.shownState == 0 then
|
||||
return
|
||||
end
|
||||
UIWidgetPowerBarContainerFrame.widgetFrames[defaultVigorWidgetID]:Show()
|
||||
end
|
||||
|
||||
function DragonridingVigor.prototype:HideBlizz()
|
||||
UIWidgetPowerBarContainerFrame:Hide()
|
||||
if not UIWidgetPowerBarContainerFrame.widgetFrames or not UIWidgetPowerBarContainerFrame.widgetFrames[defaultVigorWidgetID] then
|
||||
return
|
||||
end
|
||||
|
||||
if not self.suppressHideBlizz then
|
||||
UIWidgetPowerBarContainerFrame.widgetFrames[defaultVigorWidgetID]:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
-- Load us up
|
||||
|
@ -422,9 +422,9 @@ end
|
||||
|
||||
function FocusHealth.prototype:UpdateRaidFocusIcon()
|
||||
if self.moduleSettings.raidIconOnTop then
|
||||
self.frame.raidIcon:SetFrameStrata("MEDIUM")
|
||||
self.frame.raidIcon:SetFrameStrata(IceHUD.IceCore:DetermineStrata("MEDIUM"))
|
||||
else
|
||||
self.frame.raidIcon:SetFrameStrata("LOW")
|
||||
self.frame.raidIcon:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||
end
|
||||
|
||||
if not (UnitExists(self.unit)) or not self.moduleSettings.showRaidIcon then
|
||||
|
@ -1,6 +1,29 @@
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||
local GlobalCoolDown = IceCore_CreateClass(IceBarElement)
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(id)
|
||||
local info = C_Spell.GetSpellInfo(id)
|
||||
return info.name, nil, info.iconID, info.castTime
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellCooldown = GetSpellCooldown
|
||||
if not GetSpellCooldown and C_Spell then
|
||||
GetSpellCooldown = function(spellID)
|
||||
local spellCooldownInfo = C_Spell.GetSpellCooldown(spellID)
|
||||
if spellCooldownInfo then
|
||||
return spellCooldownInfo.startTime, spellCooldownInfo.duration, spellCooldownInfo.isEnabled, spellCooldownInfo.modRate
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Constructor --
|
||||
function GlobalCoolDown.prototype:init()
|
||||
GlobalCoolDown.super.prototype.init(self, "GlobalCoolDown")
|
||||
@ -38,7 +61,7 @@ function GlobalCoolDown.prototype:Enable(core)
|
||||
|
||||
self:Show(false)
|
||||
|
||||
self.frame:SetFrameStrata("LOW")
|
||||
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||
|
||||
self.CDSpellId = self:GetSpellId()
|
||||
end
|
||||
@ -267,7 +290,7 @@ function GlobalCoolDown.prototype:CreateLagBar()
|
||||
end
|
||||
|
||||
function GlobalCoolDown.prototype:GetSpellId()
|
||||
if GetSpellInfo(61304) then
|
||||
if GetSpellName(61304) then
|
||||
return 61304
|
||||
else
|
||||
local defaultSpells
|
||||
@ -286,9 +309,15 @@ function GlobalCoolDown.prototype:GetSpellId()
|
||||
MONK=100780, -- jab
|
||||
}
|
||||
|
||||
if not GetSpellInfo(defaultSpells["PALADIN"]) then
|
||||
if not GetSpellName(defaultSpells["PALADIN"]) then
|
||||
defaultSpells["PALADIN"] = 635
|
||||
end
|
||||
if not GetSpellName(defaultSpells["MAGE"]) then
|
||||
defaultSpells["MAGE"] = 133
|
||||
end
|
||||
if not GetSpellName(defaultSpells["WARRIOR"]) then
|
||||
defaultSpells["WARRIOR"] = 6673
|
||||
end
|
||||
|
||||
local _, unitClass = UnitClass("player")
|
||||
return defaultSpells[unitClass]
|
||||
|
@ -475,7 +475,7 @@ function PlayerMana.prototype:CreateTickerFrame()
|
||||
self.tickerFrame = CreateFrame("Frame", nil, self.barFrame)
|
||||
end
|
||||
|
||||
self.tickerFrame:SetFrameStrata("BACKGROUND")
|
||||
self.tickerFrame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.tickerFrame:SetWidth(self.settings.barWidth)
|
||||
self.tickerFrame:SetHeight(self.settings.barHeight)
|
||||
|
||||
|
@ -11,7 +11,7 @@ function RangeCheck.prototype:init()
|
||||
|
||||
self.scalingEnabled = true
|
||||
|
||||
LibRange = LibStub("LibRangeCheck-2.0", true)
|
||||
LibRange = LibStub("LibRangeCheck-3.0", true)
|
||||
end
|
||||
|
||||
function RangeCheck.prototype:Enable(core)
|
||||
@ -126,7 +126,7 @@ function RangeCheck.prototype:CreateFrame(redraw)
|
||||
end
|
||||
|
||||
self.frame:SetScale(self.moduleSettings.scale)
|
||||
self.frame:SetFrameStrata("BACKGROUND")
|
||||
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame:SetWidth(200)
|
||||
self.frame:SetHeight(32)
|
||||
self.frame:ClearAllPoints()
|
||||
|
@ -4,6 +4,25 @@ local Resolve = IceCore_CreateClass(IceUnitBar)
|
||||
local RESOLVE_SPELL_ID = 158300
|
||||
local RESOLVE_MAX = 240
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(spellID)
|
||||
if not spellID then
|
||||
return nil
|
||||
end
|
||||
|
||||
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||
if spellInfo then
|
||||
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
Resolve.prototype.current = nil
|
||||
Resolve.prototype.max = RESOLVE_MAX
|
||||
|
||||
@ -49,14 +68,19 @@ end
|
||||
|
||||
-- scan the tooltip and extract the Resolve value
|
||||
do
|
||||
local spellName = GetSpellInfo(RESOLVE_SPELL_ID)
|
||||
local spellName = GetSpellName(RESOLVE_SPELL_ID)
|
||||
|
||||
function Resolve.prototype:UpdateCurrent(event, unit)
|
||||
if (unit and (unit ~= self.unit)) then
|
||||
return
|
||||
end
|
||||
|
||||
if UnitAura then
|
||||
self.current = select(IceHUD.SpellFunctionsReturnRank and 15 or 14, UnitAura(self.unit, spellName)) or 0
|
||||
else
|
||||
local auraInfo = C_UnitAuras.GetAuraDataBySpellName(self.unit, spellName)
|
||||
self.current = auraInfo and auraInfo.timeMod or 0
|
||||
end
|
||||
|
||||
self:Update()
|
||||
end
|
||||
@ -80,6 +104,6 @@ end
|
||||
-- Load for tanks only
|
||||
local _, unitClass = UnitClass("player")
|
||||
if (unitClass == "DEATHKNIGHT" or unitClass == "DRUID" or unitClass == "PALADIN" or unitClass == "WARRIOR" or unitClass == "MONK")
|
||||
and GetSpellInfo(RESOLVE_SPELL_ID) then
|
||||
and GetSpellName(RESOLVE_SPELL_ID) then
|
||||
IceHUD.Resolve = Resolve:new()
|
||||
end
|
||||
|
@ -26,6 +26,37 @@ if Enum and Enum.PowerType then
|
||||
SPELL_POWER_COMBO_POINTS = Enum.PowerType.ComboPoints
|
||||
end
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(spellID)
|
||||
if not spellID then
|
||||
return nil
|
||||
end
|
||||
|
||||
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||
if spellInfo then
|
||||
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
local UnitBuff = UnitBuff
|
||||
if not UnitBuff and C_UnitAuras and AuraUtil then
|
||||
UnitBuff = function(unitToken, index, filter)
|
||||
local auraData = C_UnitAuras.GetBuffDataByIndex(unitToken, index, filter)
|
||||
if not auraData then
|
||||
return nil
|
||||
end
|
||||
|
||||
return AuraUtil.UnpackAuraData(auraData)
|
||||
end
|
||||
end
|
||||
|
||||
-- Constructor --
|
||||
function RollTheBones.prototype:init()
|
||||
RollTheBones.super.prototype.init(self, "RollTheBones", "player")
|
||||
@ -288,8 +319,8 @@ end
|
||||
-- use this to figure out if Roll the Bones is available or not. neither IsSpellKnown nor IsPlayerSpell are correct for it
|
||||
-- when SnD is known, but this is.
|
||||
local function HasSpell(id)
|
||||
local spell = GetSpellInfo(id)
|
||||
return spell == GetSpellInfo(spell)
|
||||
local spell = GetSpellName(id)
|
||||
return spell == GetSpellName(spell)
|
||||
end
|
||||
|
||||
local function ShouldHide()
|
||||
|
@ -456,7 +456,7 @@ end
|
||||
function Runes.prototype:CreateFrame()
|
||||
Runes.super.prototype.CreateFrame(self)
|
||||
|
||||
self.frame:SetFrameStrata("BACKGROUND")
|
||||
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame:SetWidth(self.runeSize*self.numRunes)
|
||||
self.frame:SetHeight(1)
|
||||
self.frame:ClearAllPoints()
|
||||
@ -516,7 +516,7 @@ function Runes.prototype:CreateRune(i, type, name)
|
||||
self.frame.graphical[i].shine = self.frame.graphical[i]:CreateTexture(nil, "OVERLAY")
|
||||
end
|
||||
|
||||
self.frame.graphical[i]:SetFrameStrata("BACKGROUND")
|
||||
self.frame.graphical[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame.graphical[i]:SetWidth(self.runeSize)
|
||||
self.frame.graphical[i]:SetHeight(self.runeSize)
|
||||
|
||||
@ -546,7 +546,7 @@ function Runes.prototype:CreateRune(i, type, name)
|
||||
self.frame.graphical[i]:Hide()
|
||||
end
|
||||
|
||||
self.frame.graphical[i].cd:SetFrameStrata("BACKGROUND")
|
||||
self.frame.graphical[i].cd:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame.graphical[i].cd:SetFrameLevel(self.frame.graphical[i]:GetFrameLevel()+1)
|
||||
self.frame.graphical[i].cd:ClearAllPoints()
|
||||
self.frame.graphical[i].cd:SetAllPoints(self.frame.graphical[i])
|
||||
|
@ -53,6 +53,18 @@ if Enum and Enum.PowerType then
|
||||
SPELL_POWER_COMBO_POINTS = Enum.PowerType.ComboPoints
|
||||
end
|
||||
|
||||
local UnitBuff = UnitBuff
|
||||
if not UnitBuff and C_UnitAuras and AuraUtil then
|
||||
UnitBuff = function(unitToken, index, filter)
|
||||
local auraData = C_UnitAuras.GetBuffDataByIndex(unitToken, index, filter)
|
||||
if not auraData then
|
||||
return nil
|
||||
end
|
||||
|
||||
return AuraUtil.UnpackAuraData(auraData)
|
||||
end
|
||||
end
|
||||
|
||||
-- Constructor --
|
||||
function SliceAndDice.prototype:init()
|
||||
SliceAndDice.super.prototype.init(self, "SliceAndDice", "player")
|
||||
@ -294,13 +306,6 @@ local function SNDGetComboPoints(unit)
|
||||
end
|
||||
end
|
||||
|
||||
-- use this to figure out if Roll the Bones is available or not. neither IsSpellKnown nor IsPlayerSpell are correct for it
|
||||
-- when SnD is known, but this is.
|
||||
local function HasSpell(id)
|
||||
local spell = GetSpellInfo(id)
|
||||
return spell == GetSpellInfo(spell)
|
||||
end
|
||||
|
||||
local function ShouldHide()
|
||||
if IceHUD.WowVer >= 90000 or IceHUD.WowClassicBC or IceHUD.WowClassicWrath then
|
||||
return false
|
||||
|
@ -17,6 +17,43 @@ local staggerIds = {LightID, ModerateID, HeavyID}
|
||||
|
||||
local MinLevel = 10
|
||||
|
||||
local STAGGER_YELLOW_TRANSITION, STAGGER_RED_TRANSITION = STAGGER_YELLOW_TRANSITION, STAGGER_RED_TRANSITION
|
||||
if STAGGER_STATES then
|
||||
STAGGER_YELLOW_TRANSITION = STAGGER_STATES.YELLOW.threshold
|
||||
STAGGER_RED_TRANSITION = STAGGER_STATES.RED.threshold
|
||||
end
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(spellID)
|
||||
if not spellID then
|
||||
return nil
|
||||
end
|
||||
|
||||
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||
if spellInfo then
|
||||
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
local UnitDebuff = UnitDebuff
|
||||
if not UnitDebuff and C_UnitAuras and AuraUtil then
|
||||
UnitDebuff = function(unitToken, index, filter)
|
||||
local auraData = C_UnitAuras.GetDebuffDataByIndex(unitToken, index, filter)
|
||||
if not auraData then
|
||||
return nil
|
||||
end
|
||||
|
||||
return AuraUtil.UnpackAuraData(auraData)
|
||||
end
|
||||
end
|
||||
|
||||
StaggerBar.prototype.StaggerDuration = 0
|
||||
StaggerBar.prototype.StaggerEndTime = 0
|
||||
|
||||
@ -113,9 +150,9 @@ function StaggerBar.prototype:Enable(core)
|
||||
StaggerBar.super.prototype.Enable(self, core)
|
||||
|
||||
playerName = UnitName(self.unit)
|
||||
staggerNames[1] = GetSpellInfo(LightID)
|
||||
staggerNames[2] = GetSpellInfo(ModerateID)
|
||||
staggerNames[3] = GetSpellInfo(HeavyID)
|
||||
staggerNames[1] = GetSpellName(LightID)
|
||||
staggerNames[2] = GetSpellName(ModerateID)
|
||||
staggerNames[3] = GetSpellName(HeavyID)
|
||||
|
||||
self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
|
||||
self:RegisterEvent("PLAYER_ENTERING_WORLD")
|
||||
@ -190,8 +227,8 @@ function StaggerBar.prototype:GetDebuffInfo()
|
||||
if debuffID == LightID or debuffID == ModerateID or debuffID == HeavyID then
|
||||
local spellName = UnitDebuff(self.unit, i)
|
||||
|
||||
duration = select(IceHUD.SpellFunctionsReturnRank and 6 or 5, UnitAura(self.unit, spellName, "", "HARMFUL"))
|
||||
amount = select(IceHUD.SpellFunctionsReturnRank and 15 or 14, UnitAura(self.unit, spellName, "", "HARMFUL"))
|
||||
duration = select(IceHUD.SpellFunctionsReturnRank and 6 or 5, IceHUD.UnitAura(self.unit, spellName, "", "HARMFUL"))
|
||||
amount = select(IceHUD.SpellFunctionsReturnRank and 15 or 14, IceHUD.UnitAura(self.unit, spellName, "", "HARMFUL"))
|
||||
staggerLevel = (debuffID == LightID) and 1 or (debuffID == ModerateID) and 2 or 3
|
||||
|
||||
break
|
||||
|
@ -12,6 +12,25 @@ if GetNumGroupMembers then
|
||||
GetNumRaidMembers = GetNumGroupMembers
|
||||
end
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(spellID)
|
||||
if not spellID then
|
||||
return nil
|
||||
end
|
||||
|
||||
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||
if spellInfo then
|
||||
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
-- list of spell ID's for each CC type so we can avoid localization issues
|
||||
local StunCCList = {
|
||||
-- kidney shot
|
||||
@ -259,7 +278,7 @@ function TargetCC.prototype:PopulateSpellList(debuffListVar, ccList, ccName)
|
||||
local spellName
|
||||
|
||||
for i=1,#ccList do
|
||||
spellName = GetSpellInfo(ccList[i])
|
||||
spellName = GetSpellName(ccList[i])
|
||||
|
||||
if spellName and spellName ~= "" then
|
||||
debuffListVar[spellName] = ccName
|
||||
@ -349,9 +368,9 @@ function TargetCC.prototype:GetMaxDebuffDuration(unitName, debuffNames)
|
||||
local i = 1
|
||||
local debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, "HARMFUL")
|
||||
debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, "HARMFUL")
|
||||
else
|
||||
debuff, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, "HARMFUL")
|
||||
debuff, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, "HARMFUL")
|
||||
end
|
||||
local isMine = unitCaster == "player"
|
||||
local result = {nil, nil, nil}
|
||||
@ -373,9 +392,9 @@ function TargetCC.prototype:GetMaxDebuffDuration(unitName, debuffNames)
|
||||
i = i + 1;
|
||||
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, "HARMFUL")
|
||||
debuff, rank, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, "HARMFUL")
|
||||
else
|
||||
debuff, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = UnitAura(unitName, i, "HARMFUL")
|
||||
debuff, texture, count, debuffType, duration, endTime, unitCaster, _, _, spellId = IceHUD.UnitAura(unitName, i, "HARMFUL")
|
||||
end
|
||||
isMine = unitCaster == "player"
|
||||
end
|
||||
|
@ -204,6 +204,6 @@ end
|
||||
|
||||
-- Fulzamoth 2019-09-27 : load in Classic if LibClassicCasterino exists
|
||||
-- Load us up
|
||||
if not IceHUD.WowClassic or LibClassicCasterino then
|
||||
if IceHUD.CanShowTargetCasting then
|
||||
IceHUD.TargetCast = TargetCast:new()
|
||||
end
|
||||
|
@ -3,6 +3,11 @@ IceTargetHealth = IceCore_CreateClass(IceUnitBar)
|
||||
|
||||
local IceHUD = _G.IceHUD
|
||||
|
||||
local IsAddOnLoaded = IsAddOnLoaded
|
||||
if not IsAddOnLoaded and C_AddOns then
|
||||
IsAddOnLoaded = C_AddOns.IsAddOnLoaded
|
||||
end
|
||||
|
||||
IceTargetHealth.prototype.color = nil
|
||||
IceTargetHealth.prototype.determineColor = true
|
||||
IceTargetHealth.prototype.registerEvents = true
|
||||
@ -984,9 +989,9 @@ end
|
||||
|
||||
function IceTargetHealth.prototype:UpdateRaidTargetIcon()
|
||||
if self.moduleSettings.raidIconOnTop then
|
||||
self.frame.raidIcon:SetFrameStrata("MEDIUM")
|
||||
self.frame.raidIcon:SetFrameStrata(IceHUD.IceCore:DetermineStrata("MEDIUM"))
|
||||
else
|
||||
self.frame.raidIcon:SetFrameStrata("LOW")
|
||||
self.frame.raidIcon:SetFrameStrata(IceHUD.IceCore:DetermineStrata("LOW"))
|
||||
end
|
||||
|
||||
if not self.moduleSettings.showRaidIcon or (not UnitExists(self.unit) and (not self.configMode and not IceHUD.IceCore:IsInConfigMode())) then
|
||||
|
@ -1136,7 +1136,7 @@ do -- OVERRIDE: IceTargetInfo.prototype:CreateFrame(redraw)
|
||||
|
||||
self.frame:SetScale(self.moduleSettings.scale)
|
||||
|
||||
self.frame:SetFrameStrata("BACKGROUND")
|
||||
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame:SetWidth(self.width)
|
||||
self.frame:SetHeight(32)
|
||||
self.frame:ClearAllPoints()
|
||||
@ -1220,7 +1220,7 @@ function IceTargetInfo.prototype:CreateAuraFrame(aura, redraw)
|
||||
|
||||
if (not self.frame[auraFrame]) then
|
||||
self.frame[auraFrame] = CreateFrame("Frame", nil, self.frame)
|
||||
self.frame[auraFrame]:SetFrameStrata("BACKGROUND")
|
||||
self.frame[auraFrame]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame[auraFrame]:SetWidth(1)
|
||||
self.frame[auraFrame]:SetHeight(1)
|
||||
self.frame[auraFrame]:Show()
|
||||
@ -1244,7 +1244,7 @@ end
|
||||
do
|
||||
local function FrameFactory(frameType, parentFrame, inheritsFrame)
|
||||
local frame = CreateFrame(frameType, nil, parentFrame, inheritsFrame)
|
||||
frame:SetFrameStrata("BACKGROUND")
|
||||
frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
frame:ClearAllPoints()
|
||||
return frame
|
||||
end
|
||||
@ -1420,11 +1420,11 @@ function IceTargetInfo.prototype:UpdateBuffType(aura)
|
||||
---- end change by Fulzamoth
|
||||
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable = UnitAura(self.unit, i, reaction .. (filter and "|PLAYER" or ""))
|
||||
name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable = IceHUD.UnitAura(self.unit, i, reaction .. (filter and "|PLAYER" or ""))
|
||||
else
|
||||
---- Fulzamoth - 2019-09-04 : support for cooldowns on target buffs/debuffs (classic)
|
||||
-- 1. in addition to other info, get the spellID for for the (de)buff
|
||||
name, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, _, spellID = UnitAura(self.unit, i, reaction .. (filter and "|PLAYER" or ""))
|
||||
name, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, _, spellID = IceHUD.UnitAura(self.unit, i, reaction .. (filter and "|PLAYER" or ""))
|
||||
if duration == 0 and LibClassicDurations then
|
||||
-- 2. if no duration defined for the (de)buff, look up the spell in LibClassicDurations
|
||||
local classicDuration, classicExpirationTime = LibClassicDurations:GetAuraDurationByUnit(self.unit, spellID, caster)
|
||||
@ -1453,7 +1453,7 @@ function IceTargetInfo.prototype:UpdateBuffType(aura)
|
||||
end
|
||||
else
|
||||
self.frame[auraFrame].iconFrames[i]:Hide()
|
||||
buffData[aura][i] = nil
|
||||
table.remove(buffData[aura], i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -12,6 +12,25 @@ if GetNumGroupMembers then
|
||||
GetNumRaidMembers = GetNumGroupMembers
|
||||
end
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(spellID)
|
||||
if not spellID then
|
||||
return nil
|
||||
end
|
||||
|
||||
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||
if spellInfo then
|
||||
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
-- list of spell ID's for each CC type so we can avoid localization issues
|
||||
local InvulnList= {
|
||||
-- Anti-Magic Shell
|
||||
@ -76,7 +95,7 @@ function TargetInvuln.prototype:PopulateSpellList(buffListVar, ccList, ccName)
|
||||
local spellName
|
||||
|
||||
for i=1,#ccList do
|
||||
spellName = GetSpellInfo(ccList[i])
|
||||
spellName = GetSpellName(ccList[i])
|
||||
|
||||
if spellName and spellName ~= "" then
|
||||
buffListVar[spellName] = ccName
|
||||
@ -148,9 +167,9 @@ function TargetInvuln.prototype:GetMaxbuffDuration(unitName, buffNames)
|
||||
local i = 1
|
||||
local buff, rank, texture, count, buffType, duration, endTime, unitCaster
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
buff, rank, texture, count, buffType, duration, endTime, unitCaster = UnitAura(unitName, i, "HELPFUL")
|
||||
buff, rank, texture, count, buffType, duration, endTime, unitCaster = IceHUD.UnitAura(unitName, i, "HELPFUL")
|
||||
else
|
||||
buff, texture, count, buffType, duration, endTime, unitCaster = UnitAura(unitName, i, "HELPFUL")
|
||||
buff, texture, count, buffType, duration, endTime, unitCaster = IceHUD.UnitAura(unitName, i, "HELPFUL")
|
||||
end
|
||||
local isMine = unitCaster == "player"
|
||||
local result = {nil, nil, nil}
|
||||
@ -179,9 +198,9 @@ function TargetInvuln.prototype:GetMaxbuffDuration(unitName, buffNames)
|
||||
i = i + 1;
|
||||
|
||||
if IceHUD.SpellFunctionsReturnRank then
|
||||
buff, rank, texture, count, buffType, duration, endTime, unitCaster = UnitAura(unitName, i, "HELPFUL")
|
||||
buff, rank, texture, count, buffType, duration, endTime, unitCaster = IceHUD.UnitAura(unitName, i, "HELPFUL")
|
||||
else
|
||||
buff, texture, count, buffType, duration, endTime, unitCaster = UnitAura(unitName, i, "HELPFUL")
|
||||
buff, texture, count, buffType, duration, endTime, unitCaster = IceHUD.UnitAura(unitName, i, "HELPFUL")
|
||||
end
|
||||
isMine = unitCaster == "player"
|
||||
end
|
||||
|
@ -4,6 +4,18 @@ local DogTag = nil
|
||||
|
||||
local TargetOfTarget = IceCore_CreateClass(IceElement)
|
||||
|
||||
local UnitDebuff = UnitDebuff
|
||||
if not UnitDebuff and C_UnitAuras and AuraUtil then
|
||||
UnitDebuff = function(unitToken, index, filter)
|
||||
local auraData = C_UnitAuras.GetDebuffDataByIndex(unitToken, index, filter)
|
||||
if not auraData then
|
||||
return nil
|
||||
end
|
||||
|
||||
return AuraUtil.UnpackAuraData(auraData)
|
||||
end
|
||||
end
|
||||
|
||||
TargetOfTarget.prototype.stackedDebuffs = nil
|
||||
TargetOfTarget.prototype.buffSize = nil
|
||||
TargetOfTarget.prototype.height = nil
|
||||
@ -124,6 +136,7 @@ function TargetOfTarget.prototype:GetOptions()
|
||||
order = 34
|
||||
}
|
||||
|
||||
if AceGUIWidgetLSMlists then
|
||||
opts["texture"] = {
|
||||
type = 'select',
|
||||
dialogControl = "LSM30_Statusbar",
|
||||
@ -142,6 +155,7 @@ function TargetOfTarget.prototype:GetOptions()
|
||||
values = AceGUIWidgetLSMlists.statusbar,
|
||||
order = 35
|
||||
}
|
||||
end
|
||||
|
||||
opts["sizeToGap"] = {
|
||||
type = 'toggle',
|
||||
@ -314,7 +328,7 @@ function TargetOfTarget.prototype:CreateFrame()
|
||||
self.frame:SetAttribute("unit", self.unit)
|
||||
end
|
||||
|
||||
self.frame:SetFrameStrata("BACKGROUND")
|
||||
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
if self.moduleSettings.sizeToGap then
|
||||
self.frame:SetWidth(self.settings.gap)
|
||||
else
|
||||
@ -368,7 +382,7 @@ function TargetOfTarget.prototype:CreateBarFrame()
|
||||
|
||||
self.frame.bg:SetTexture(0,0,0)
|
||||
|
||||
self.frame.bar:SetFrameStrata("BACKGROUND")
|
||||
self.frame.bar:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
if self.moduleSettings.sizeToGap then
|
||||
self.frame.bg:SetWidth(self.settings.gap + 2)
|
||||
self.frame.bar:SetWidth(self.settings.gap)
|
||||
@ -410,7 +424,7 @@ function TargetOfTarget.prototype:CreateToTFrame()
|
||||
|
||||
self.frame.totName:SetHeight(self.moduleSettings.moduleHeight)
|
||||
self.frame.totName:SetJustifyH("LEFT")
|
||||
self.frame.totName:SetJustifyV("CENTER")
|
||||
self.frame.totName:SetJustifyV("MIDDLE")
|
||||
|
||||
self.frame.totName:SetPoint("LEFT", self.frame, "LEFT", 0, -1)
|
||||
self.frame.totName:Show()
|
||||
@ -422,7 +436,7 @@ function TargetOfTarget.prototype:CreateToTHPFrame()
|
||||
|
||||
self.frame.totHealth:SetHeight(self.moduleSettings.moduleHeight)
|
||||
self.frame.totHealth:SetJustifyH("RIGHT")
|
||||
self.frame.totHealth:SetJustifyV("CENTER")
|
||||
self.frame.totHealth:SetJustifyV("MIDDLE")
|
||||
|
||||
self.frame.totHealth:SetPoint("RIGHT", self.frame, "RIGHT", 0, 0)
|
||||
self.frame.totHealth:Show()
|
||||
@ -435,7 +449,7 @@ function TargetOfTarget.prototype:CreateDebuffFrame()
|
||||
end
|
||||
self.frame.debuffFrame = CreateFrame("Frame", nil, self.frame)
|
||||
|
||||
self.frame.debuffFrame:SetFrameStrata("BACKGROUND")
|
||||
self.frame.debuffFrame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame.debuffFrame:SetWidth(10)
|
||||
self.frame.debuffFrame:SetHeight(self.height)
|
||||
|
||||
@ -451,7 +465,7 @@ function TargetOfTarget.prototype:CreateIconFrames(parent)
|
||||
|
||||
for i = 1, IceCore.BuffLimit do
|
||||
buffs[i] = CreateFrame("Frame", nil, parent)
|
||||
buffs[i]:SetFrameStrata("BACKGROUND")
|
||||
buffs[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
buffs[i]:SetWidth(self.buffSize)
|
||||
buffs[i]:SetHeight(self.buffSize)
|
||||
buffs[i]:SetPoint("LEFT", (i-1) * self.buffSize + (i-1), 0)
|
||||
|
@ -30,6 +30,11 @@ if not UnitGroupRolesAssigned then
|
||||
end
|
||||
end
|
||||
|
||||
local GetItemInfo = GetItemInfo
|
||||
if not GetItemInfo and C_Item then
|
||||
GetItemInfo = C_Item.GetItemInfo
|
||||
end
|
||||
|
||||
local MAX_NUM_RAID_MEMBERS = 40
|
||||
local MAX_NUM_PARTY_MEMBERS = 5
|
||||
|
||||
|
@ -265,7 +265,7 @@ end
|
||||
function Totems.prototype:CreateFrame()
|
||||
Totems.super.prototype.CreateFrame(self)
|
||||
|
||||
self.frame:SetFrameStrata("BACKGROUND")
|
||||
self.frame:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame:SetWidth(self.totemSize*self.numTotems)
|
||||
self.frame:SetHeight(1)
|
||||
self.frame:ClearAllPoints()
|
||||
@ -349,7 +349,7 @@ function Totems.prototype:CreateTotem(i, name)
|
||||
self.frame.graphical[i].totem:SetAllPoints(self.frame.graphical[i])
|
||||
end
|
||||
|
||||
self.frame.graphical[i]:SetFrameStrata("BACKGROUND")
|
||||
self.frame.graphical[i]:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame.graphical[i]:SetWidth(self.totemSize)
|
||||
self.frame.graphical[i]:SetHeight(self.totemSize)
|
||||
|
||||
@ -380,7 +380,7 @@ function Totems.prototype:CreateTotem(i, name)
|
||||
end
|
||||
end
|
||||
|
||||
self.frame.graphical[i].cd:SetFrameStrata("BACKGROUND")
|
||||
self.frame.graphical[i].cd:SetFrameStrata(IceHUD.IceCore:DetermineStrata("BACKGROUND"))
|
||||
self.frame.graphical[i].cd:SetFrameLevel(self.frame.graphical[i]:GetFrameLevel()+1)
|
||||
self.frame.graphical[i].cd:ClearAllPoints()
|
||||
self.frame.graphical[i].cd:SetAllPoints(self.frame.graphical[i])
|
||||
|
@ -3,6 +3,25 @@ local Vengeance = IceCore_CreateClass(IceUnitBar)
|
||||
|
||||
local VENGEANCE_SPELL_ID = 93098
|
||||
|
||||
local GetSpellInfo = GetSpellInfo
|
||||
if not GetSpellInfo and C_Spell and C_Spell.GetSpellInfo then
|
||||
GetSpellInfo = function(spellID)
|
||||
if not spellID then
|
||||
return nil
|
||||
end
|
||||
|
||||
local spellInfo = C_Spell.GetSpellInfo(spellID)
|
||||
if spellInfo then
|
||||
return spellInfo.name, nil, spellInfo.iconID, spellInfo.castTime, spellInfo.minRange, spellInfo.maxRange, spellInfo.spellID, spellInfo.originalIconID
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local GetSpellName = GetSpellInfo
|
||||
if C_Spell and C_Spell.GetSpellName then
|
||||
GetSpellName = C_Spell.GetSpellName
|
||||
end
|
||||
|
||||
Vengeance.prototype.current = nil
|
||||
Vengeance.prototype.max = nil
|
||||
|
||||
@ -50,44 +69,26 @@ end
|
||||
-- scan the tooltip and extract the vengeance value
|
||||
do
|
||||
-- making these local as they're not used anywhere else
|
||||
local regions = {}
|
||||
local spellName = GetSpellInfo(VENGEANCE_SPELL_ID)
|
||||
local tooltipBuffer = CreateFrame("GameTooltip","tooltipBuffer",nil,"GameTooltipTemplate")
|
||||
tooltipBuffer:SetOwner(WorldFrame, "ANCHOR_NONE")
|
||||
|
||||
-- suggested by Antiarc as a way to repopulate the same table instead of repeatedly creating a new one
|
||||
local function makeTable(t, ...)
|
||||
wipe(t)
|
||||
for i = 1, select("#", ...) do
|
||||
t[i] = select(i, ...)
|
||||
end
|
||||
end
|
||||
local spellName = GetSpellName(VENGEANCE_SPELL_ID)
|
||||
|
||||
function Vengeance.prototype:UpdateCurrent(event, unit)
|
||||
if (unit and (unit ~= self.unit)) then
|
||||
return
|
||||
end
|
||||
|
||||
local name = UnitAura(self.unit, spellName)
|
||||
if name then
|
||||
-- Buff found, copy it into the buffer for scanning
|
||||
tooltipBuffer:ClearLines()
|
||||
tooltipBuffer:SetUnitBuff(self.unit, name)
|
||||
|
||||
-- Grab all regions, stuff em into our table
|
||||
makeTable(regions, tooltipBuffer:GetRegions())
|
||||
|
||||
-- Convert FontStrings to strings, replace anything else with ""
|
||||
for i=1, #regions do
|
||||
local region = regions[i]
|
||||
regions[i] = region:GetObjectType() == "FontString" and region:GetText() or ""
|
||||
if C_UnitAuras and C_UnitAuras.GetAuraDataBySpellName then
|
||||
local data = C_UnitAuras.GetAuraDataBySpellName(self.unit, spellName)
|
||||
if data and data.points and #data.points > 0 then
|
||||
self.current = (data and data.points and #data.points > 0) and data.points[1] or 0
|
||||
end
|
||||
|
||||
-- Find the number, save it
|
||||
self.current = tonumber(string.match(table.concat(regions),"%d+")) or 0
|
||||
else
|
||||
local _, idx = IceHUD:GetBuffCount(self.unit, spellName, true, true)
|
||||
if idx then
|
||||
self.current = select(17, IceHUD.UnitAura(self.unit, idx))
|
||||
else
|
||||
self.current = 0
|
||||
end
|
||||
end
|
||||
|
||||
self:Update()
|
||||
end
|
||||
|
@ -1,5 +1,82 @@
|
||||
# Changelog
|
||||
|
||||
v1.14.42:
|
||||
|
||||
- Fix Vengeance module in Cataclysm Classic
|
||||
|
||||
v1.14.41:
|
||||
|
||||
- Fix swapped DK runes in Cataclysm Classic
|
||||
- Possible fix for castbar flashing sometimes when set to "Never"
|
||||
- Fix IceHUD Vigor bar not showing up for some types of dragons such as the Algarian Stormrider
|
||||
|
||||
v1.14.40:
|
||||
|
||||
- Update TOC for Dragonflight to 10.2.7
|
||||
|
||||
v1.14.39:
|
||||
|
||||
- Support Cataclysm Classic 4.4.0
|
||||
|
||||
v1.14.38:
|
||||
|
||||
- Update TOCs
|
||||
|
||||
v1.14.37:
|
||||
|
||||
- Update LibRangeCheck version to address taint issues (wowace ticket #353)
|
||||
|
||||
v1.14.36:
|
||||
|
||||
- Really fix IceHUD stomping on other uses of the PowerBarContainer such as the Digging bar for the Archive event.
|
||||
|
||||
v1.14.35:
|
||||
|
||||
- Fix IceHUD stomping on other uses of the PowerBarContainer such as the Digging bar for the Archive event.
|
||||
|
||||
v1.14.34:
|
||||
|
||||
- Fix Vigor showing up sometimes when it shouldn't.
|
||||
|
||||
v1.14.33:
|
||||
|
||||
- Update TOC for Dragonflight to 10.2.5
|
||||
|
||||
v1.14.32:
|
||||
|
||||
- Enable GlobalCoolDown module in Classic Era 1.15.0+
|
||||
- Enable tracking target buffs/debuffs in Classic Era 1.15.0+
|
||||
|
||||
v1.14.31:
|
||||
|
||||
- Fix nil concatenation error (wowace ticket #351)
|
||||
|
||||
v1.14.30:
|
||||
|
||||
- Update Classic-era TOC for 1.15.0
|
||||
- Enable TargetCastBar module on Classic-era 1.15+
|
||||
|
||||
v1.14.29:
|
||||
|
||||
- Fix Stagger bar error for 10.2.0 (wowace ticket #348)
|
||||
|
||||
v1.14.28:
|
||||
|
||||
- Update TOC for Dragonflight to 10.2.0
|
||||
|
||||
v1.14.27:
|
||||
|
||||
- Update TOC for Dragonflight to 10.1.7
|
||||
|
||||
v1.14.26:
|
||||
|
||||
- Update TOC for classic-era to 1.14.4
|
||||
|
||||
v1.14.25:
|
||||
|
||||
- Fixed lua error that would appear when targetting webwrapped players in heroic alpha/beta titan rune dungeons.
|
||||
- Added ability to adjust strata globally.
|
||||
|
||||
v1.14.24:
|
||||
|
||||
- Fixed an error when targeting a player and right-clicking a module that should show a menu in 10.1.5.
|
||||
|
Reference in New Issue
Block a user