mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 22:51:53 -05:00
Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
087c64ee6a
|
|||
077f381adb
|
|||
a5be2996da
|
|||
22f473b54d
|
|||
e7f95cbcb6
|
|||
5c19d7f89c
|
|||
f01d6495f8
|
|||
34ecd95e4f
|
|||
564919e0c6
|
|||
a18144aec0
|
45
.github/workflows/release.yml
vendored
Normal file
45
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# description of this workflow, can be anything you want
|
||||||
|
name: Package and release
|
||||||
|
|
||||||
|
# we need to let GitHub know _when_ we want to release, typically only when we create a new tag.
|
||||||
|
# this will target only tags, and not all pushes to the master branch.
|
||||||
|
# this part can be heavily customized to your liking, like targeting only tags that match a certain word,
|
||||||
|
# other branches or even pullrequests.
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '**'
|
||||||
|
|
||||||
|
# a workflow is built up as jobs, and within these jobs are steps
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
# "release" is a job, you can name it anything you want
|
||||||
|
release:
|
||||||
|
|
||||||
|
# we can run our steps on pretty much anything, but the "ubuntu-latest" image is a safe bet
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
# specify the environment variables used by the packager, matching the secrets from the project on GitHub
|
||||||
|
env:
|
||||||
|
CF_API_KEY: ${{ secrets.CF_API_KEY }}
|
||||||
|
WOWI_API_TOKEN: ${{ secrets.WOWI_API_TOKEN }}
|
||||||
|
GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }} # "GITHUB_TOKEN" is a secret always provided to the workflow
|
||||||
|
# for your own token, the name cannot start with "GITHUB_"
|
||||||
|
|
||||||
|
# "steps" holds a list of all the steps needed to package and release our AddOn
|
||||||
|
steps:
|
||||||
|
|
||||||
|
# we first have to clone the AddOn project, this is a required step
|
||||||
|
- name: Clone project
|
||||||
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
# once cloned, we just run the GitHub Action for the packager project
|
||||||
|
- name: Package and release
|
||||||
|
uses: BigWigsMods/packager@master
|
||||||
|
|
||||||
|
# another example where we supply additional arguments, this example is specifically to release
|
||||||
|
# for the Classic version of the game
|
||||||
|
- name: Package and release for Classic
|
||||||
|
uses: BigWigsMods/packager@master
|
||||||
|
with:
|
||||||
|
args: -g 1.13.5 -w 0
|
@ -415,7 +415,7 @@ do
|
|||||||
type='range',
|
type='range',
|
||||||
name = L["Bar vertical offset"],
|
name = L["Bar vertical offset"],
|
||||||
desc = L["Adjust the vertical placement of this bar"],
|
desc = L["Adjust the vertical placement of this bar"],
|
||||||
min = -400,
|
min = -600,
|
||||||
max = 600,
|
max = 600,
|
||||||
step = 1,
|
step = 1,
|
||||||
get = function()
|
get = function()
|
||||||
@ -436,7 +436,7 @@ do
|
|||||||
type='range',
|
type='range',
|
||||||
name = L["Bar horizontal adjust"],
|
name = L["Bar horizontal adjust"],
|
||||||
desc = L["This is a per-pixel horizontal adjustment. You should probably use the 'offset' setting above as it is designed to snap bars together. This may be used in the case of a horizontal bar needing to be positioned outside the normal bar locations."],
|
desc = L["This is a per-pixel horizontal adjustment. You should probably use the 'offset' setting above as it is designed to snap bars together. This may be used in the case of a horizontal bar needing to be positioned outside the normal bar locations."],
|
||||||
min = -400,
|
min = -600,
|
||||||
max = 600,
|
max = 600,
|
||||||
step = 1,
|
step = 1,
|
||||||
get = function()
|
get = function()
|
||||||
@ -1040,7 +1040,7 @@ end
|
|||||||
|
|
||||||
-- Creates the actual bar
|
-- Creates the actual bar
|
||||||
function IceBarElement.prototype:CreateBar()
|
function IceBarElement.prototype:CreateBar()
|
||||||
self.barFrame = self:BarFactory(self.barFrame, "LOW", "ARTWORK")
|
self.barFrame = self:BarFactory(self.barFrame, "LOW", "ARTWORK", "Bar")
|
||||||
self:SetBarCoord(self.barFrame)
|
self:SetBarCoord(self.barFrame)
|
||||||
|
|
||||||
self.barFrame.bar:SetBlendMode(self.settings.barBlendMode)
|
self.barFrame.bar:SetBlendMode(self.settings.barBlendMode)
|
||||||
@ -1050,9 +1050,9 @@ end
|
|||||||
|
|
||||||
-- Returns a barFrame & barFrame.bar
|
-- Returns a barFrame & barFrame.bar
|
||||||
-- Rokiyo: Currently keeping old behaviour of running through bar creation on every Redraw, but I'm not convinced we need to.
|
-- Rokiyo: Currently keeping old behaviour of running through bar creation on every Redraw, but I'm not convinced we need to.
|
||||||
function IceBarElement.prototype:BarFactory(barFrame, frameStrata, textureLayer)
|
function IceBarElement.prototype:BarFactory(barFrame, frameStrata, textureLayer, nameSuffix)
|
||||||
if not (barFrame) then
|
if not (barFrame) then
|
||||||
barFrame = CreateFrame("Frame", nil, self.frame)
|
barFrame = CreateFrame("Frame", "IceHUD_"..self.elementName.."_"..(nameSuffix or "Bar"), self.frame)
|
||||||
end
|
end
|
||||||
|
|
||||||
barFrame:SetFrameStrata(frameStrata and frameStrata or "LOW")
|
barFrame:SetFrameStrata(frameStrata and frameStrata or "LOW")
|
||||||
@ -1584,7 +1584,7 @@ function IceBarElement.prototype:CreateMarker(idx)
|
|||||||
self.Markers[idx] = nil
|
self.Markers[idx] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
self.Markers[idx] = self:BarFactory(self.Markers[idx], "MEDIUM", "OVERLAY")
|
self.Markers[idx] = self:BarFactory(self.Markers[idx], "MEDIUM", "OVERLAY", "Marker"..idx)
|
||||||
|
|
||||||
local color = self.moduleSettings.markers[idx].color
|
local color = self.moduleSettings.markers[idx].color
|
||||||
self.Markers[idx].bar:SetVertexColor(color.r, color.g, color.b, self.alpha)
|
self.Markers[idx].bar:SetVertexColor(color.r, color.g, color.b, self.alpha)
|
||||||
|
@ -69,7 +69,7 @@ function IceElement.prototype:Create(parent)
|
|||||||
|
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
if not self.masterFrame then
|
if not self.masterFrame then
|
||||||
self.masterFrame = CreateFrame("Frame", nil, self.parent)
|
self.masterFrame = CreateFrame("Frame", "IceHUD_Element_"..self.elementName, self.parent)
|
||||||
self.masterFrame:SetFrameStrata("MEDIUM")
|
self.masterFrame:SetFrameStrata("MEDIUM")
|
||||||
end
|
end
|
||||||
self:CreateFrame()
|
self:CreateFrame()
|
||||||
|
15
IceHUD.lua
15
IceHUD.lua
@ -259,6 +259,10 @@ function IceHUD:NotifyOptionsChange()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function IceHUD:OnEnable(isFirst)
|
function IceHUD:OnEnable(isFirst)
|
||||||
|
-- if isFirst then
|
||||||
|
self:SetDebugging(self.IceCore:GetDebug())
|
||||||
|
self.debugFrame = ChatFrame1
|
||||||
|
-- end
|
||||||
self:Debug("IceHUD:OnEnable()")
|
self:Debug("IceHUD:OnEnable()")
|
||||||
|
|
||||||
if self.db.profile.enable then
|
if self.db.profile.enable then
|
||||||
@ -274,11 +278,6 @@ function IceHUD:OnEnable(isFirst)
|
|||||||
--@debug@
|
--@debug@
|
||||||
IceHUD_Options:OnLoad()
|
IceHUD_Options:OnLoad()
|
||||||
--@end-debug@
|
--@end-debug@
|
||||||
|
|
||||||
-- if isFirst then
|
|
||||||
self:SetDebugging(self.IceCore:GetDebug())
|
|
||||||
self.debugFrame = ChatFrame1
|
|
||||||
-- end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- add settings changes/updates here so that existing users don't lose their settings
|
-- add settings changes/updates here so that existing users don't lose their settings
|
||||||
@ -367,7 +366,11 @@ function IceHUD:Debug(...)
|
|||||||
for n=1,select('#', ...) do
|
for n=1,select('#', ...) do
|
||||||
msg = msg .. tostring(select(n, ...)) .. " "
|
msg = msg .. tostring(select(n, ...)) .. " "
|
||||||
end
|
end
|
||||||
self.debugFrame:AddMessage(msg)
|
if self.debugFrame then
|
||||||
|
self.debugFrame:AddMessage(msg)
|
||||||
|
else
|
||||||
|
print(msg)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
## Interface: 80300
|
#@retail@
|
||||||
|
## Interface: 90001
|
||||||
|
#@end-retail@
|
||||||
|
#@non-retail@
|
||||||
|
# ## Interface: 11305
|
||||||
|
#@end-non-retail@
|
||||||
## Author: Parnic, originally created by Iceroth
|
## Author: Parnic, originally created by Iceroth
|
||||||
## Name: IceHUD
|
## Name: IceHUD
|
||||||
## Title: IceHUD |cff7fff7f-Ace3-|r
|
## Title: IceHUD |cff7fff7f-Ace3-|r
|
||||||
@ -8,8 +13,8 @@
|
|||||||
## 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-2.0, LibDualSpec-1.0, LibDBIcon-1.0, AceGUI-3.0-SharedMediaWidgets
|
||||||
## X-Category: HUDs
|
## X-Category: HUDs
|
||||||
## X-Website: https://www.wowace.com/projects/ice-hud
|
## X-Website: https://www.wowace.com/projects/ice-hud
|
||||||
|
## X-Curse-Project-ID: 5394
|
||||||
## X-WoWI-ID: 8149
|
## X-WoWI-ID: 8149
|
||||||
## X-Compatible-With: 11302
|
|
||||||
|
|
||||||
#@no-lib-strip@
|
#@no-lib-strip@
|
||||||
# Libraries
|
# Libraries
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
## Interface: 80300
|
## Interface: 90001
|
||||||
## Title: IceHUD |cff7fff7f-Options-|r
|
## Title: IceHUD |cff7fff7f-Options-|r
|
||||||
## Author: Parnic
|
## Author: Parnic
|
||||||
## Version: @project-version@
|
## Version: @project-version@
|
||||||
|
@ -171,7 +171,7 @@ end
|
|||||||
-- Creates the low amount warning frame
|
-- Creates the low amount warning frame
|
||||||
function IceUnitBar.prototype:CreateFlashFrame()
|
function IceUnitBar.prototype:CreateFlashFrame()
|
||||||
if not (self.flashFrame) then
|
if not (self.flashFrame) then
|
||||||
self.flashFrame = CreateFrame("Frame", nil, self.frame)
|
self.flashFrame = CreateFrame("Frame", "IceHUD_"..self.elementName.."_Flash", self.frame)
|
||||||
end
|
end
|
||||||
|
|
||||||
self.flashFrame:SetFrameStrata("BACKGROUND")
|
self.flashFrame:SetFrameStrata("BACKGROUND")
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
v1.13.0:
|
||||||
|
- Made compatible with 9.0
|
||||||
|
- Improved frame naming/debuggability
|
||||||
|
- Updated TOC for 9.0
|
||||||
|
|
||||||
v1.12.15:
|
v1.12.15:
|
||||||
- (Classic) Fixed reported issue with the Threat bar throwing errors sometimes.
|
- (Classic) Fixed reported issue with the Threat bar throwing errors sometimes.
|
||||||
|
|
||||||
|
@ -398,7 +398,7 @@ end
|
|||||||
|
|
||||||
function CastBar.prototype:CreateLagBar()
|
function CastBar.prototype:CreateLagBar()
|
||||||
if self.lagBar == nil then
|
if self.lagBar == nil then
|
||||||
self.lagBar = self:BarFactory(self.lagBar, "LOW", "OVERLAY")
|
self.lagBar = self:BarFactory(self.lagBar, "LOW", "OVERLAY", "Lag")
|
||||||
end
|
end
|
||||||
|
|
||||||
local r, g, b = self:GetColor("CastLag")
|
local r, g, b = self:GetColor("CastLag")
|
||||||
|
@ -122,7 +122,7 @@ function IceCustomCount.prototype:GetOptions()
|
|||||||
self.moduleSettings.vpos = v
|
self.moduleSettings.vpos = v
|
||||||
self:Redraw()
|
self:Redraw()
|
||||||
end,
|
end,
|
||||||
min = -400,
|
min = -700,
|
||||||
max = 700,
|
max = 700,
|
||||||
step = 1,
|
step = 1,
|
||||||
disabled = function()
|
disabled = function()
|
||||||
|
@ -107,7 +107,7 @@ function EclipseBar.prototype:CreateFrame()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function EclipseBar.prototype:CreateSolarBar()
|
function EclipseBar.prototype:CreateSolarBar()
|
||||||
self.solarBar = self:BarFactory(self.solarBar,"BACKGROUND", "ARTWORK")
|
self.solarBar = self:BarFactory(self.solarBar,"BACKGROUND", "ARTWORK", "Solar")
|
||||||
self:SetBarCoord(self.solarBar, 0.5, true)
|
self:SetBarCoord(self.solarBar, 0.5, true)
|
||||||
|
|
||||||
self.solarBar.bar:SetVertexColor(self:GetColor("EclipseSolar", 1))
|
self.solarBar.bar:SetVertexColor(self:GetColor("EclipseSolar", 1))
|
||||||
|
@ -255,7 +255,7 @@ function GlobalCoolDown.prototype:CreateFrame()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function GlobalCoolDown.prototype:CreateLagBar()
|
function GlobalCoolDown.prototype:CreateLagBar()
|
||||||
self.lagBar = self:BarFactory(self.lagBar, "LOW", "OVERLAY")
|
self.lagBar = self:BarFactory(self.lagBar, "LOW", "OVERLAY", "Lag")
|
||||||
|
|
||||||
local r, g, b = self:GetColor("CastLag")
|
local r, g, b = self:GetColor("CastLag")
|
||||||
if (self.settings.backgroundToggle) then
|
if (self.settings.backgroundToggle) then
|
||||||
|
@ -32,7 +32,7 @@ function HolyPower.prototype:init()
|
|||||||
self.numericColor = "HolyPowerNumeric"
|
self.numericColor = "HolyPowerNumeric"
|
||||||
self.unitPower = SPELL_POWER_HOLY_POWER
|
self.unitPower = SPELL_POWER_HOLY_POWER
|
||||||
self.minLevel = PALADINPOWERBAR_SHOW_LEVEL
|
self.minLevel = PALADINPOWERBAR_SHOW_LEVEL
|
||||||
if IceHUD.WowVer >= 70000 then
|
if IceHUD.WowVer >= 70000 and IceHUD.WowVer < 90000 then
|
||||||
self.requiredSpec = SPEC_PALADIN_RETRIBUTION
|
self.requiredSpec = SPEC_PALADIN_RETRIBUTION
|
||||||
end
|
end
|
||||||
self.bTreatEmptyAsFull = true
|
self.bTreatEmptyAsFull = true
|
||||||
|
@ -280,8 +280,8 @@ function MirrorBarHandler.prototype:GetOptions()
|
|||||||
type='range',
|
type='range',
|
||||||
name = L["Bar vertical offset"],
|
name = L["Bar vertical offset"],
|
||||||
desc = L["Adjust the vertical placement of this bar"],
|
desc = L["Adjust the vertical placement of this bar"],
|
||||||
min = -400,
|
min = -600,
|
||||||
max = 400,
|
max = 600,
|
||||||
step = 1,
|
step = 1,
|
||||||
get = function()
|
get = function()
|
||||||
return self.moduleSettings.barVerticalOffset
|
return self.moduleSettings.barVerticalOffset
|
||||||
|
@ -49,7 +49,9 @@ function PetHealth.prototype:Enable(core)
|
|||||||
self:RegisterEvent("UNIT_PET", "CheckPet");
|
self:RegisterEvent("UNIT_PET", "CheckPet");
|
||||||
|
|
||||||
self:RegisterEvent("UNIT_HEALTH", "UpdateEvent")
|
self:RegisterEvent("UNIT_HEALTH", "UpdateEvent")
|
||||||
self:RegisterEvent("UNIT_HEALTH_FREQUENT", "UpdateEvent")
|
if IceHUD.WowVer < 90000 then
|
||||||
|
self:RegisterEvent("UNIT_HEALTH_FREQUENT", "UpdateEvent")
|
||||||
|
end
|
||||||
self:RegisterEvent("UNIT_MAXHEALTH", "UpdateEvent")
|
self:RegisterEvent("UNIT_MAXHEALTH", "UpdateEvent")
|
||||||
|
|
||||||
if UnitHasVehicleUI then
|
if UnitHasVehicleUI then
|
||||||
|
@ -68,7 +68,9 @@ function PlayerHealth.prototype:Enable(core)
|
|||||||
PlayerHealth.super.prototype.Enable(self, core)
|
PlayerHealth.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
self:RegisterEvent("UNIT_HEALTH", "UpdateEvent")
|
self:RegisterEvent("UNIT_HEALTH", "UpdateEvent")
|
||||||
self:RegisterEvent("UNIT_HEALTH_FREQUENT", "UpdateEvent")
|
if IceHUD.WowVer < 90000 then
|
||||||
|
self:RegisterEvent("UNIT_HEALTH_FREQUENT", "UpdateEvent")
|
||||||
|
end
|
||||||
self:RegisterEvent("UNIT_MAXHEALTH", "UpdateEvent")
|
self:RegisterEvent("UNIT_MAXHEALTH", "UpdateEvent")
|
||||||
|
|
||||||
self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld")
|
self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld")
|
||||||
@ -934,7 +936,7 @@ function PlayerHealth.prototype:CreateBackground(redraw)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function PlayerHealth.prototype:CreateHealBar()
|
function PlayerHealth.prototype:CreateHealBar()
|
||||||
self.healFrame = self:BarFactory(self.healFrame, "LOW","BACKGROUND")
|
self.healFrame = self:BarFactory(self.healFrame, "LOW","BACKGROUND", "Heal")
|
||||||
|
|
||||||
self.healFrame.bar:SetVertexColor(self:GetColor("PlayerHealthHealAmount", self.alpha * self.moduleSettings.healAlpha))
|
self.healFrame.bar:SetVertexColor(self:GetColor("PlayerHealthHealAmount", self.alpha * self.moduleSettings.healAlpha))
|
||||||
|
|
||||||
@ -946,7 +948,7 @@ function PlayerHealth.prototype:CreateHealBar()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function PlayerHealth.prototype:CreateAbsorbBar()
|
function PlayerHealth.prototype:CreateAbsorbBar()
|
||||||
self.absorbFrame = self:BarFactory(self.absorbFrame, "LOW","BACKGROUND")
|
self.absorbFrame = self:BarFactory(self.absorbFrame, "LOW","BACKGROUND", "Absorb")
|
||||||
|
|
||||||
self.absorbFrame.bar:SetVertexColor(self:GetColor("PlayerHealthAbsorbAmount", self.alpha * self.moduleSettings.absorbAlpha))
|
self.absorbFrame.bar:SetVertexColor(self:GetColor("PlayerHealthAbsorbAmount", self.alpha * self.moduleSettings.absorbAlpha))
|
||||||
|
|
||||||
|
@ -9,6 +9,8 @@ local maxComboPoints = 5
|
|||||||
local rtbEndTime = 0
|
local rtbEndTime = 0
|
||||||
local rtbDuration = 0
|
local rtbDuration = 0
|
||||||
local rtbCount = 0
|
local rtbCount = 0
|
||||||
|
local sixComboPointsTalentID = 19240
|
||||||
|
local behaviorDependsOnComboPoints = IceHUD.WowVer < 90000
|
||||||
|
|
||||||
local CurrMaxRtBDuration = 0
|
local CurrMaxRtBDuration = 0
|
||||||
local PotentialRtBDuration = 0
|
local PotentialRtBDuration = 0
|
||||||
@ -33,12 +35,14 @@ function RollTheBones.prototype:init()
|
|||||||
self.moduleSettings.shouldAnimate = false
|
self.moduleSettings.shouldAnimate = false
|
||||||
|
|
||||||
self:SetDefaultColor("RollTheBones", 1, 0.6, 0.2)
|
self:SetDefaultColor("RollTheBones", 1, 0.6, 0.2)
|
||||||
self:SetDefaultColor("RollTheBones2", 0.75, 1, 0.2)
|
if behaviorDependsOnComboPoints then
|
||||||
self:SetDefaultColor("RollTheBones3", 0.4, 1, 0.2)
|
self:SetDefaultColor("RollTheBones2", 0.75, 1, 0.2)
|
||||||
self:SetDefaultColor("RollTheBones4", 0.4, 1, 0.2)
|
self:SetDefaultColor("RollTheBones3", 0.4, 1, 0.2)
|
||||||
self:SetDefaultColor("RollTheBones5", 0.1, 1, 0.7)
|
self:SetDefaultColor("RollTheBones4", 0.4, 1, 0.2)
|
||||||
self:SetDefaultColor("RollTheBones6", 0.1, 1, 0.7)
|
self:SetDefaultColor("RollTheBones5", 0.1, 1, 0.7)
|
||||||
self:SetDefaultColor("RollTheBonesPotential", 1, 1, 1)
|
self:SetDefaultColor("RollTheBones6", 0.1, 1, 0.7)
|
||||||
|
self:SetDefaultColor("RollTheBonesPotential", 1, 1, 1)
|
||||||
|
end
|
||||||
|
|
||||||
self.bTreatEmptyAsFull = true
|
self.bTreatEmptyAsFull = true
|
||||||
end
|
end
|
||||||
@ -50,7 +54,10 @@ function RollTheBones.prototype:Enable(core)
|
|||||||
RollTheBones.super.prototype.Enable(self, core)
|
RollTheBones.super.prototype.Enable(self, core)
|
||||||
|
|
||||||
self:RegisterEvent("UNIT_AURA", "UpdateRollTheBones")
|
self:RegisterEvent("UNIT_AURA", "UpdateRollTheBones")
|
||||||
self:RegisterEvent(IceHUD.UnitPowerEvent, "ComboPointsChanged")
|
|
||||||
|
if behaviorDependsOnComboPoints then
|
||||||
|
self:RegisterEvent(IceHUD.UnitPowerEvent, "ComboPointsChanged")
|
||||||
|
end
|
||||||
|
|
||||||
if not self.moduleSettings.alwaysFullAlpha then
|
if not self.moduleSettings.alwaysFullAlpha then
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
@ -106,41 +113,60 @@ function RollTheBones.prototype:GetOptions()
|
|||||||
opts["textSettings"].args["upperTextString"]["desc"] = "The text to display under this bar. # will be replaced with the number of Roll the Bones seconds remaining."
|
opts["textSettings"].args["upperTextString"]["desc"] = "The text to display under this bar. # will be replaced with the number of Roll the Bones seconds remaining."
|
||||||
opts["textSettings"].args["upperTextString"].hidden = false
|
opts["textSettings"].args["upperTextString"].hidden = false
|
||||||
|
|
||||||
opts["showAsPercentOfMax"] =
|
if behaviorDependsOnComboPoints then
|
||||||
{
|
opts["showAsPercentOfMax"] =
|
||||||
type = 'toggle',
|
{
|
||||||
name = L["Show bar as % of maximum"],
|
type = 'toggle',
|
||||||
desc = L["If this is checked, then the RtB buff time shows as a percent of the maximum attainable (taking set bonuses and talents into account). Otherwise, the bar always goes from full to empty when applying RtB no matter the duration."],
|
name = L["Show bar as % of maximum"],
|
||||||
get = function()
|
desc = L["If this is checked, then the RtB buff time shows as a percent of the maximum attainable (taking set bonuses and talents into account). Otherwise, the bar always goes from full to empty when applying RtB no matter the duration."],
|
||||||
return self.moduleSettings.showAsPercentOfMax
|
get = function()
|
||||||
end,
|
return self.moduleSettings.showAsPercentOfMax
|
||||||
set = function(info, v)
|
end,
|
||||||
self.moduleSettings.showAsPercentOfMax = v
|
set = function(info, v)
|
||||||
end,
|
self.moduleSettings.showAsPercentOfMax = v
|
||||||
disabled = function()
|
end,
|
||||||
return not self.moduleSettings.enabled
|
disabled = function()
|
||||||
end
|
return not self.moduleSettings.enabled
|
||||||
}
|
end
|
||||||
|
}
|
||||||
|
|
||||||
opts["durationAlpha"] =
|
opts["durationAlpha"] =
|
||||||
{
|
{
|
||||||
type = "range",
|
type = "range",
|
||||||
name = L["Potential RtB time bar alpha"],
|
name = L["Potential RtB time bar alpha"],
|
||||||
desc = L["What alpha value to use for the bar that displays how long your RtB will last if you activate it. (This gets multiplied by the bar's current alpha to stay in line with the bar on top of it)"],
|
desc = L["What alpha value to use for the bar that displays how long your RtB will last if you activate it. (This gets multiplied by the bar's current alpha to stay in line with the bar on top of it)"],
|
||||||
min = 0,
|
min = 0,
|
||||||
max = 100,
|
max = 100,
|
||||||
step = 5,
|
step = 5,
|
||||||
get = function()
|
get = function()
|
||||||
return self.moduleSettings.durationAlpha * 100
|
return self.moduleSettings.durationAlpha * 100
|
||||||
end,
|
end,
|
||||||
set = function(info, v)
|
set = function(info, v)
|
||||||
self.moduleSettings.durationAlpha = v / 100.0
|
self.moduleSettings.durationAlpha = v / 100.0
|
||||||
self:Redraw()
|
self:Redraw()
|
||||||
end,
|
end,
|
||||||
disabled = function()
|
disabled = function()
|
||||||
return not self.moduleSettings.enabled
|
return not self.moduleSettings.enabled
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
opts["bUseMultipleBuffColors"] =
|
||||||
|
{
|
||||||
|
type = 'toggle',
|
||||||
|
name = L["Use multiple buff colors"],
|
||||||
|
desc = L["If this is checked, then the bar uses different colors depending on how many RtB buffs you have"],
|
||||||
|
get = function()
|
||||||
|
return self.moduleSettings.bUseMultipleBuffColors
|
||||||
|
end,
|
||||||
|
set = function(info, v)
|
||||||
|
self.moduleSettings.bUseMultipleBuffColors = v
|
||||||
|
self:Redraw()
|
||||||
|
end,
|
||||||
|
disabled = function()
|
||||||
|
return not self.moduleSettings.enabled
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
opts["bShowWithNoTarget"] =
|
opts["bShowWithNoTarget"] =
|
||||||
{
|
{
|
||||||
@ -159,23 +185,6 @@ function RollTheBones.prototype:GetOptions()
|
|||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
opts["bUseMultipleBuffColors"] =
|
|
||||||
{
|
|
||||||
type = 'toggle',
|
|
||||||
name = L["Use multiple buff colors"],
|
|
||||||
desc = L["If this is checked, then the bar uses different colors depending on how many RtB buffs you have"],
|
|
||||||
get = function()
|
|
||||||
return self.moduleSettings.bUseMultipleBuffColors
|
|
||||||
end,
|
|
||||||
set = function(info, v)
|
|
||||||
self.moduleSettings.bUseMultipleBuffColors = v
|
|
||||||
self:Redraw()
|
|
||||||
end,
|
|
||||||
disabled = function()
|
|
||||||
return not self.moduleSettings.enabled
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
return opts
|
return opts
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -186,7 +195,11 @@ function RollTheBones.prototype:CreateFrame()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function RollTheBones.prototype:CreateDurationBar()
|
function RollTheBones.prototype:CreateDurationBar()
|
||||||
self.durationFrame = self:BarFactory(self.durationFrame, "BACKGROUND","ARTWORK")
|
if not behaviorDependsOnComboPoints then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
self.durationFrame = self:BarFactory(self.durationFrame, "BACKGROUND","ARTWORK", "Duration")
|
||||||
|
|
||||||
-- Rokiyo: Do we need to call this here?
|
-- Rokiyo: Do we need to call this here?
|
||||||
self.CurrScale = 0
|
self.CurrScale = 0
|
||||||
@ -204,7 +217,9 @@ end
|
|||||||
function RollTheBones.prototype:RotateHorizontal()
|
function RollTheBones.prototype:RotateHorizontal()
|
||||||
RollTheBones.super.prototype.RotateHorizontal(self)
|
RollTheBones.super.prototype.RotateHorizontal(self)
|
||||||
|
|
||||||
self:RotateFrame(self.durationFrame)
|
if self.durationFrame then
|
||||||
|
self:RotateFrame(self.durationFrame)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function RollTheBones.prototype:ResetRotation()
|
function RollTheBones.prototype:ResetRotation()
|
||||||
@ -308,7 +323,7 @@ function RollTheBones.prototype:UpdateRollTheBones(event, unit, fromUpdate)
|
|||||||
if not remaining then
|
if not remaining then
|
||||||
remaining = rtbEndTime - now
|
remaining = rtbEndTime - now
|
||||||
end
|
end
|
||||||
local denominator = (self.moduleSettings.showAsPercentOfMax and CurrMaxRtBDuration or rtbDuration)
|
local denominator = ((self.moduleSettings.showAsPercentOfMax and behaviorDependsOnComboPoints) and CurrMaxRtBDuration or rtbDuration)
|
||||||
self:UpdateBar(denominator ~= 0 and remaining / denominator or 0, self:GetColorName(rtbCount))
|
self:UpdateBar(denominator ~= 0 and remaining / denominator or 0, self:GetColorName(rtbCount))
|
||||||
else
|
else
|
||||||
self:UpdateBar(0, "RollTheBones")
|
self:UpdateBar(0, "RollTheBones")
|
||||||
@ -326,13 +341,13 @@ function RollTheBones.prototype:UpdateRollTheBones(event, unit, fromUpdate)
|
|||||||
|
|
||||||
-- somewhat redundant, but we also need to check potential remaining time
|
-- somewhat redundant, but we also need to check potential remaining time
|
||||||
if (remaining ~= nil) or PotentialRtBDuration > 0 then
|
if (remaining ~= nil) or PotentialRtBDuration > 0 then
|
||||||
local potText = " (" .. PotentialRtBDuration .. ")"
|
local potText = behaviorDependsOnComboPoints and " (" .. PotentialRtBDuration .. ")" or ""
|
||||||
self:SetBottomText1(self.moduleSettings.upperText .. tostring(floor(remaining or 0)) .. (self.moduleSettings.durationAlpha ~= 0 and potText or ""))
|
self:SetBottomText1(self.moduleSettings.upperText .. tostring(floor(remaining or 0)) .. (self.moduleSettings.durationAlpha ~= 0 and potText or ""))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function RollTheBones.prototype:GetColorName(count)
|
function RollTheBones.prototype:GetColorName(count)
|
||||||
if self.moduleSettings.bUseMultipleBuffColors and count >= 2 then
|
if behaviorDependsOnComboPoints and self.moduleSettings.bUseMultipleBuffColors and count >= 2 then
|
||||||
return "RollTheBones"..count
|
return "RollTheBones"..count
|
||||||
else
|
else
|
||||||
return "RollTheBones"
|
return "RollTheBones"
|
||||||
@ -352,13 +367,17 @@ function RollTheBones.prototype:TargetChanged()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function RollTheBones.prototype:UpdateDurationBar(event, unit)
|
function RollTheBones.prototype:UpdateDurationBar(event, unit)
|
||||||
|
if not self.durationFrame then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
if unit and unit ~= self.unit then
|
if unit and unit ~= self.unit then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local points = RTBGetComboPoints(self.unit)
|
local points = RTBGetComboPoints(self.unit)
|
||||||
-- check for Deeper Stratagem
|
-- check for Deeper Stratagem
|
||||||
local _, _, _, DeeperStratagem = GetTalentInfo(3, 1, 1)
|
local _, _, _, DeeperStratagem = GetTalentInfoByID(sixComboPointsTalentID, GetActiveSpecGroup())
|
||||||
|
|
||||||
if DeeperStratagem then
|
if DeeperStratagem then
|
||||||
-- first, set the cached upper limit of RtB duration
|
-- first, set the cached upper limit of RtB duration
|
||||||
|
@ -20,6 +20,7 @@ local impSndBonusPerRank = 0.25
|
|||||||
local maxComboPoints = 5
|
local maxComboPoints = 5
|
||||||
local sndEndTime = 0
|
local sndEndTime = 0
|
||||||
local sndDuration = 0
|
local sndDuration = 0
|
||||||
|
local sixComboPointsTalentID = 19240
|
||||||
|
|
||||||
local CurrMaxSnDDuration = 0
|
local CurrMaxSnDDuration = 0
|
||||||
local PotentialSnDDuration = 0
|
local PotentialSnDDuration = 0
|
||||||
@ -66,6 +67,11 @@ function SliceAndDice.prototype:Enable(core)
|
|||||||
self:RegisterEvent(IceHUD.UnitPowerEvent, "ComboPointsChanged")
|
self:RegisterEvent(IceHUD.UnitPowerEvent, "ComboPointsChanged")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if IceHUD.WowVer >= 70000 then
|
||||||
|
self:RegisterEvent("PLAYER_TALENT_UPDATE", "CheckMaxComboPoints")
|
||||||
|
self:CheckMaxComboPoints()
|
||||||
|
end
|
||||||
|
|
||||||
if not self.moduleSettings.alwaysFullAlpha then
|
if not self.moduleSettings.alwaysFullAlpha then
|
||||||
self:Show(false)
|
self:Show(false)
|
||||||
else
|
else
|
||||||
@ -75,6 +81,11 @@ function SliceAndDice.prototype:Enable(core)
|
|||||||
self:SetBottomText1("")
|
self:SetBottomText1("")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function SliceAndDice.prototype:CheckMaxComboPoints()
|
||||||
|
local talentID, name, texture, selected, available, spellID, unknown, row, column, known, grantedByAura = GetTalentInfoByID(sixComboPointsTalentID, GetActiveSpecGroup())
|
||||||
|
maxComboPoints = selected and 6 or 5
|
||||||
|
end
|
||||||
|
|
||||||
function SliceAndDice.prototype:Disable(core)
|
function SliceAndDice.prototype:Disable(core)
|
||||||
SliceAndDice.super.prototype.Disable(self, core)
|
SliceAndDice.super.prototype.Disable(self, core)
|
||||||
end
|
end
|
||||||
@ -182,7 +193,7 @@ function SliceAndDice.prototype:CreateFrame()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function SliceAndDice.prototype:CreateDurationBar()
|
function SliceAndDice.prototype:CreateDurationBar()
|
||||||
self.durationFrame = self:BarFactory(self.durationFrame, "BACKGROUND","ARTWORK")
|
self.durationFrame = self:BarFactory(self.durationFrame, "BACKGROUND","ARTWORK", "Duration")
|
||||||
|
|
||||||
-- Rokiyo: Do we need to call this here?
|
-- Rokiyo: Do we need to call this here?
|
||||||
self.CurrScale = 0
|
self.CurrScale = 0
|
||||||
@ -270,6 +281,10 @@ local function HasSpell(id)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function ShouldHide()
|
local function ShouldHide()
|
||||||
|
if IceHUD.WowVer >= 90000 then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
return --[[(IceHUD.WowVer < 70000 or not IsSpellKnown(193316)) and]] not IsPlayerSpell(5171) -- IsSpellKnown returns incorrect info for SnD in 7.0
|
return --[[(IceHUD.WowVer < 70000 or not IsSpellKnown(193316)) and]] not IsPlayerSpell(5171) -- IsSpellKnown returns incorrect info for SnD in 7.0
|
||||||
-- commented code is here in case we decide we'd like to use this module for Roll the Bones.
|
-- commented code is here in case we decide we'd like to use this module for Roll the Bones.
|
||||||
-- if we do, though, the "active" check gets way more complicated since it can activate any number of 6 different abilities
|
-- if we do, though, the "active" check gets way more complicated since it can activate any number of 6 different abilities
|
||||||
|
@ -137,7 +137,7 @@ function StaggerBar.prototype:CreateFrame()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function StaggerBar.prototype:CreateTimerBar()
|
function StaggerBar.prototype:CreateTimerBar()
|
||||||
self.timerFrame = self:BarFactory(self.timerFrame, "MEDIUM","ARTWORK")
|
self.timerFrame = self:BarFactory(self.timerFrame, "MEDIUM","ARTWORK", "Timer")
|
||||||
|
|
||||||
self.CurrScale = 0
|
self.CurrScale = 0
|
||||||
|
|
||||||
|
@ -231,7 +231,7 @@ end
|
|||||||
|
|
||||||
-- create the aggro range indicator bar
|
-- create the aggro range indicator bar
|
||||||
function IceThreat.prototype:CreateAggroBar()
|
function IceThreat.prototype:CreateAggroBar()
|
||||||
self.aggroBar = self:BarFactory(self.aggroBar, "BACKGROUND","ARTWORK")
|
self.aggroBar = self:BarFactory(self.aggroBar, "BACKGROUND","ARTWORK", "Aggro")
|
||||||
|
|
||||||
local r, g, b = self:GetColor("ThreatPullAggro")
|
local r, g, b = self:GetColor("ThreatPullAggro")
|
||||||
if (self.settings.backgroundToggle) then
|
if (self.settings.backgroundToggle) then
|
||||||
@ -243,7 +243,7 @@ function IceThreat.prototype:CreateAggroBar()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function IceThreat.prototype:CreateSecondThreatBar()
|
function IceThreat.prototype:CreateSecondThreatBar()
|
||||||
self.secondThreatBar = self:BarFactory(self.secondThreatBar, "MEDIUM", "OVERLAY")
|
self.secondThreatBar = self:BarFactory(self.secondThreatBar, "MEDIUM", "OVERLAY", "SecondThreat")
|
||||||
|
|
||||||
self.secondThreatBar.bar:SetVertexColor(self:GetColor("ThreatSecondPlace", self.alpha * self.moduleSettings.secondPlaceThreatAlpha))
|
self.secondThreatBar.bar:SetVertexColor(self:GetColor("ThreatSecondPlace", self.alpha * self.moduleSettings.secondPlaceThreatAlpha))
|
||||||
|
|
||||||
|
25
readme.md
25
readme.md
@ -1,11 +1,23 @@
|
|||||||
|
# IceHUD
|
||||||
|
|
||||||
|
## Shadowlands/9.0 note
|
||||||
|
|
||||||
|
Anyone wanting to try out my first attempt at 9.0 compatibility is welcome to download the latest alpha build. I'm going to give this some time to percolate and wait for reports to come in before tagging it as a final build. I don't have a whole lot of time right now to work on the mod, so feedback is helpful.
|
||||||
|
|
||||||
|
Additionally, if you find this mod integral to your WoW experience, [a donation is very helpful](https://www.paypal.com/cgi-bin/webscr?return=https://www.github.com/parnic/ice-hud&cn=Add+special+instructions+to+the+addon+author()&business=icehud%40parnic.com&bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted&cancel_return=https://www.github.com/parnic/ice-hud&lc=US&item_name=IceHUD+(from+github.com)&cmd=_donations&rm=1&no_shipping=1¤cy_code=USD) to allow me to gauge how much time I need to put into this as well as maintain a WoW subscription to be able to develop the mod.
|
||||||
|
|
||||||
|
Thanks!
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
IceHUD is a highly configurable and customizable HUD addon in the spirit of DHUD, MetaHUD, and others designed to keep your focus in the center of the screen where your character is.
|
IceHUD is a highly configurable and customizable HUD addon in the spirit of DHUD, MetaHUD, and others designed to keep your focus in the center of the screen where your character is.
|
||||||
|
|
||||||
|
## **What it is**
|
||||||
|
|
||||||
### **What it is**
|
* Player and target health and mana bars, casting and mirror bars, pet health and mana bars, druid mana bar in forms, extensive target info, ToT display, and much more, in a vertically-oriented heads-up display.
|
||||||
* Player and target health and mana bars, casting and mirror bars, pet health and mana bars, druid mana bar in forms, extensive target info, ToT display, and much more
|
|
||||||
|
|
||||||
|
## **Short feature list**
|
||||||
|
|
||||||
### **Short feature list**
|
|
||||||
* Lots of different bar shapes and patterns to make the HUD look like you want
|
* Lots of different bar shapes and patterns to make the HUD look like you want
|
||||||
* Class-specific modules such as combo point counters, Slice'n'dice timers, druid mana trackers, Eclipse bar, Holy Power monitoring, Warlock shard tracking, and more
|
* Class-specific modules such as combo point counters, Slice'n'dice timers, druid mana trackers, Eclipse bar, Holy Power monitoring, Warlock shard tracking, and more
|
||||||
* Target-of-target bars, Crowd Control timers, Range Finders, Threat meters, and plenty of other helpful modules
|
* Target-of-target bars, Crowd Control timers, Range Finders, Threat meters, and plenty of other helpful modules
|
||||||
@ -15,13 +27,12 @@ IceHUD is a highly configurable and customizable HUD addon in the spirit of DHUD
|
|||||||
* Fully customizable bars and counters capable of tracking buff/debuff applications on any unit, spell/ability cooldowns, and the health/mana of any unit you specify. The custom health/mana bars will even work with crazy unit specifications like "focustargettargetfocustarget" if you want!
|
* Fully customizable bars and counters capable of tracking buff/debuff applications on any unit, spell/ability cooldowns, and the health/mana of any unit you specify. The custom health/mana bars will even work with crazy unit specifications like "focustargettargetfocustarget" if you want!
|
||||||
* Highly configurable (can totally re-arrange all bars, change text display, etc.)
|
* Highly configurable (can totally re-arrange all bars, change text display, etc.)
|
||||||
|
|
||||||
|
## **Slash commands**
|
||||||
|
|
||||||
### **Slash commands**
|
|
||||||
* /icehud - opens the configuration UI to tweak any setting
|
* /icehud - opens the configuration UI to tweak any setting
|
||||||
* /icehudCL - command-line access to tweak IceHUD settings (for use with macros, etc.)
|
* /icehudCL - command-line access to tweak IceHUD settings (for use with macros, etc.)
|
||||||
|
|
||||||
|
## **Frequently Asked Questions**
|
||||||
# **Frequently Asked Questions**
|
|
||||||
|
|
||||||
1. **How do I hide the default Blizzard player, target unit frames and party unit frames?**
|
1. **How do I hide the default Blizzard player, target unit frames and party unit frames?**
|
||||||
Type /icehud, expand the "Module Settings" section, click "Player Health" or "Target Health," and check "Hide Blizzard Frame" and/or "Hide Blizzard Party Frame". (NOTE: before version 1.3.7, the player/target unitframes were hidden by default. Follow the same steps to enable them if desired)
|
Type /icehud, expand the "Module Settings" section, click "Player Health" or "Target Health," and check "Hide Blizzard Frame" and/or "Hide Blizzard Party Frame". (NOTE: before version 1.3.7, the player/target unitframes were hidden by default. Follow the same steps to enable them if desired)
|
||||||
@ -80,5 +91,7 @@ IceHUD is a highly configurable and customizable HUD addon in the spirit of DHUD
|
|||||||
1. **Why is there no target castbar for Classic?**
|
1. **Why is there no target castbar for Classic?**
|
||||||
The Classic game client doesn't offer a reliable way to show castbars for anyone except the player. IceHUD doesn't support the type of inaccurate guessing at combat log details that would be required to get a semi-useful target castbar.
|
The Classic game client doesn't offer a reliable way to show castbars for anyone except the player. IceHUD doesn't support the type of inaccurate guessing at combat log details that would be required to get a semi-useful target castbar.
|
||||||
|
|
||||||
|
1. **Why do buff/debuff timers not work in Classic?**
|
||||||
|
The Classic game client doesn't provide this information to addons because it wasn't a feature when the game first released. You can install the LibClassicDurations addon to enable support, but it's a best guess and not completely accurate.
|
||||||
|
|
||||||
See [here](https://www.wowace.com/projects/ice-hud/issues/113) for a user-created guide to creating new IceHUD textures.
|
See [here](https://www.wowace.com/projects/ice-hud/issues/113) for a user-created guide to creating new IceHUD textures.
|
||||||
|
Reference in New Issue
Block a user