mirror of
https://github.com/parnic/ice-hud.git
synced 2025-06-16 22:51:53 -05:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
67f79736d8
|
|||
dc98e5b521
|
|||
94506cc591
|
|||
09d9a9c6f7 | |||
8b7ce521ff | |||
26fd86134b | |||
e4d8bae185
|
|||
2d42116f8d
|
|||
a7d1629ed3
|
|||
070d66eca3
|
|||
a0c5b97ccb
|
|||
3e56595709
|
|||
c016b0ccc0
|
12
IceCore.lua
12
IceCore.lua
@ -520,10 +520,14 @@ function IceCore.prototype:Disable(userToggle)
|
||||
end
|
||||
end
|
||||
|
||||
self.IceHUDFrame:UnregisterEvent("PET_BATTLE_OPENING_START")
|
||||
self.IceHUDFrame:UnregisterEvent("PET_BATTLE_OVER")
|
||||
self.IceHUDFrame:UnregisterEvent("BARBER_SHOP_OPEN")
|
||||
self.IceHUDFrame:UnregisterEvent("BARBER_SHOP_CLOSE")
|
||||
if UnitCanPetBattle then
|
||||
self.IceHUDFrame:UnregisterEvent("PET_BATTLE_OPENING_START")
|
||||
self.IceHUDFrame:UnregisterEvent("PET_BATTLE_OVER")
|
||||
end
|
||||
if GetBarberShopStyleInfo then
|
||||
self.IceHUDFrame:UnregisterEvent("BARBER_SHOP_OPEN")
|
||||
self.IceHUDFrame:UnregisterEvent("BARBER_SHOP_CLOSE")
|
||||
end
|
||||
self.IceHUDFrame:SetScript("OnEvent", nil)
|
||||
|
||||
self.enabled = false
|
||||
|
@ -83,7 +83,10 @@ If you have |cff42ffffDogTags|r enabled, you can open the Text Settings for the
|
||||
This is a side effect of the animation API that I'm co-opting to force a rotation without having to provide duplicates of every bar texture in the mod. Any bar moving sufficiently quickly and updating rapidly will cause this. |cff9999ffIceHUD|r is intended to be a vertically-oriented mod, so the rotation feature is there for people who are willing to accept the side effects that come with it. My suggestion is to use one of the many horizontally-oriented bar mods out there if you're wanting horizontal bars. |cff42ffffQuartz|r is a good castbar replacement that you can use and disable |cff9999ffIceHUD|r's built-in castbar, for example.
|
||||
|
||||
|cff9999ff18. How do I get rid of the bars that showed up beneath the player in the 7.0 patch?|r
|
||||
Blizzard added a "Personal Resource Display" feature in the 7.0 game client. You can disable it in the Game options -> Interface -> Names -> Personal Resource Display.]]
|
||||
Blizzard added a "Personal Resource Display" feature in the 7.0 game client. You can disable it in the Game options -> Interface -> Names -> Personal Resource Display.
|
||||
|
||||
|cff9999ff19. Why is there no target castbar for Classic?|r
|
||||
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.]]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -128,7 +128,7 @@ end
|
||||
function IceStackCounter_Enable(frame)
|
||||
frame:RegisterEvent("UNIT_AURA", "UpdateCustomCount")
|
||||
frame:RegisterEvent("UNIT_PET", "UpdateCustomCount")
|
||||
if IceHUD.WowVer < 80000 then
|
||||
if IceHUD.WowVer < 80000 and not IceHUD.WowClassic then
|
||||
frame:RegisterEvent("PLAYER_PET_CHANGED", "UpdateCustomCount")
|
||||
end
|
||||
if FocusUnit then
|
||||
|
@ -1,5 +1,17 @@
|
||||
v1.12.0-alpha:
|
||||
- WoW Classic compatibility
|
||||
v1.12.3:
|
||||
- (Classic) Added support for RealMobHealth on the TargetHealth module when DogTags are disabled. (thanks, TwentyOneZ!)
|
||||
- (Classic) Added support for LibClassicDurations on the TargetInfo module to show (de)buff durations when the lib is installed. (thanks, Fulzamoth!)
|
||||
|
||||
v1.12.2:
|
||||
- (Classic) Fixed error when changing profiles or disabling IceHUD
|
||||
|
||||
v1.12.1:
|
||||
- (Classic) Fixed energy ticker resetting when spending energy.
|
||||
- (Classic) Fixed stack counters throwing errors and generally not functioning.
|
||||
- (Classic) Disabled target and target-of-target castbars. Added a note to the FAQ as to why.
|
||||
|
||||
v1.12.0:
|
||||
- Initial WoW Classic compatibility
|
||||
|
||||
v1.11.11:
|
||||
- Updated TOC to 8.2
|
||||
|
@ -81,6 +81,10 @@ function IceCustomBar.prototype:Disable(core)
|
||||
end
|
||||
|
||||
function IceCustomBar.prototype:GetUnitToTrack()
|
||||
if IceHUD.WowClassic then
|
||||
return "player"
|
||||
end
|
||||
|
||||
if self.moduleSettings.myUnit == "other" then
|
||||
if self.moduleSettings.customUnit ~= nil and self.moduleSettings.customUnit ~= "" then
|
||||
return self.moduleSettings.customUnit
|
||||
@ -258,51 +262,53 @@ function IceCustomBar.prototype:GetOptions()
|
||||
order = 30.3,
|
||||
}
|
||||
|
||||
opts["unitToTrack"] = {
|
||||
type = 'select',
|
||||
values = validUnits,
|
||||
name = L["Unit to track"],
|
||||
desc = L["Select which unit that this bar should be looking for buffs/debuffs on"],
|
||||
get = function(info)
|
||||
return IceHUD:GetSelectValue(info, self.moduleSettings.myUnit)
|
||||
end,
|
||||
set = function(info, v)
|
||||
self.moduleSettings.myUnit = info.option.values[v]
|
||||
self.unit = self:GetUnitToTrack()
|
||||
self:RegisterFontStrings()
|
||||
self:ConditionalSubscribe()
|
||||
self:Redraw()
|
||||
self:UpdateCustomBar(self.unit)
|
||||
IceHUD:NotifyOptionsChange()
|
||||
end,
|
||||
disabled = function()
|
||||
return not self.moduleSettings.enabled
|
||||
end,
|
||||
order = 30.4,
|
||||
}
|
||||
if not IceHUD.WowClassic then
|
||||
opts["unitToTrack"] = {
|
||||
type = 'select',
|
||||
values = validUnits,
|
||||
name = L["Unit to track"],
|
||||
desc = L["Select which unit that this bar should be looking for buffs/debuffs on"],
|
||||
get = function(info)
|
||||
return IceHUD:GetSelectValue(info, self.moduleSettings.myUnit)
|
||||
end,
|
||||
set = function(info, v)
|
||||
self.moduleSettings.myUnit = info.option.values[v]
|
||||
self.unit = self:GetUnitToTrack()
|
||||
self:RegisterFontStrings()
|
||||
self:ConditionalSubscribe()
|
||||
self:Redraw()
|
||||
self:UpdateCustomBar(self.unit)
|
||||
IceHUD:NotifyOptionsChange()
|
||||
end,
|
||||
disabled = function()
|
||||
return not self.moduleSettings.enabled
|
||||
end,
|
||||
order = 30.4,
|
||||
}
|
||||
|
||||
opts["customUnitToTrack"] = {
|
||||
type = 'input',
|
||||
name = L["Custom unit"],
|
||||
desc = L["Any valid unit id such as: party1, raid14, targettarget, etc. Not guaranteed to work with all unit ids.\n\nRemember to press ENTER after filling out this box with the name you want or it will not save."],
|
||||
get = function()
|
||||
return self.moduleSettings.customUnit
|
||||
end,
|
||||
set = function(info, v)
|
||||
self.moduleSettings.customUnit = v
|
||||
self.unit = self:GetUnitToTrack()
|
||||
self:RegisterFontStrings()
|
||||
self:ConditionalSubscribe()
|
||||
self:Redraw()
|
||||
self:UpdateCustomBar(self.unit)
|
||||
IceHUD:NotifyOptionsChange()
|
||||
end,
|
||||
hidden = function()
|
||||
return self.moduleSettings.myUnit ~= "other"
|
||||
end,
|
||||
usage = "<what custom unit to track when unitToTrack is set to 'other'>",
|
||||
order = 30.45,
|
||||
}
|
||||
opts["customUnitToTrack"] = {
|
||||
type = 'input',
|
||||
name = L["Custom unit"],
|
||||
desc = L["Any valid unit id such as: party1, raid14, targettarget, etc. Not guaranteed to work with all unit ids.\n\nRemember to press ENTER after filling out this box with the name you want or it will not save."],
|
||||
get = function()
|
||||
return self.moduleSettings.customUnit
|
||||
end,
|
||||
set = function(info, v)
|
||||
self.moduleSettings.customUnit = v
|
||||
self.unit = self:GetUnitToTrack()
|
||||
self:RegisterFontStrings()
|
||||
self:ConditionalSubscribe()
|
||||
self:Redraw()
|
||||
self:UpdateCustomBar(self.unit)
|
||||
IceHUD:NotifyOptionsChange()
|
||||
end,
|
||||
hidden = function()
|
||||
return self.moduleSettings.myUnit ~= "other"
|
||||
end,
|
||||
usage = "<what custom unit to track when unitToTrack is set to 'other'>",
|
||||
order = 30.45,
|
||||
}
|
||||
end
|
||||
|
||||
opts["buffOrDebuff"] = {
|
||||
type = 'select',
|
||||
|
@ -1,12 +1,6 @@
|
||||
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
|
||||
local FocusCast = IceCore_CreateClass(IceCastBar)
|
||||
|
||||
local UnitCastingInfo, UnitChannelInfo = UnitCastingInfo, UnitChannelInfo
|
||||
if IceHUD.WowClassic then
|
||||
UnitCastingInfo = CastingInfo
|
||||
UnitChannelInfo = ChannelInfo
|
||||
end
|
||||
|
||||
-- Constructor --
|
||||
function FocusCast.prototype:init()
|
||||
FocusCast.super.prototype.init(self, "FocusCast")
|
||||
|
@ -419,17 +419,17 @@ function PlayerMana.prototype:UpdateEnergy(event, unit)
|
||||
return
|
||||
end
|
||||
|
||||
self.previousEnergy = UnitPower(self.unit, UnitPowerType(self.unit))
|
||||
if IceHUD.WowVer < 40000 then
|
||||
self:Update(unit)
|
||||
end
|
||||
|
||||
if self:ShouldUseTicker() and
|
||||
((not (self.previousEnergy) or (self.previousEnergy <= UnitPower(self.unit, UnitPowerType(self.unit)))) and
|
||||
((not (self.previousEnergy) or (self.previousEnergy < UnitPower(self.unit, UnitPowerType(self.unit)))) and
|
||||
(self.moduleSettings.tickerEnabled) and self.manaType == SPELL_POWER_ENERGY) then
|
||||
self.tickStart = GetTime()
|
||||
self.tickerFrame:Show()
|
||||
end
|
||||
|
||||
self.previousEnergy = UnitPower(self.unit, UnitPowerType(self.unit))
|
||||
if IceHUD.WowVer < 40000 then
|
||||
self:Update(unit)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
@ -3,12 +3,6 @@ local TargetCast = IceCore_CreateClass(IceCastBar)
|
||||
|
||||
TargetCast.prototype.notInterruptible = false
|
||||
|
||||
local UnitCastingInfo, UnitChannelInfo = UnitCastingInfo, UnitChannelInfo
|
||||
if IceHUD.WowClassic then
|
||||
UnitCastingInfo = CastingInfo
|
||||
UnitChannelInfo = ChannelInfo
|
||||
end
|
||||
|
||||
-- Constructor --
|
||||
function TargetCast.prototype:init()
|
||||
TargetCast.super.prototype.init(self, "TargetCast")
|
||||
@ -90,20 +84,24 @@ function TargetCast.prototype:TargetChanged(unit)
|
||||
return
|
||||
end
|
||||
|
||||
local spell = UnitCastingInfo(self.unit)
|
||||
local notInterruptible = select((IceHUD.WowVer < 80000 and not IceHUD.WowClassic) and 9 or 8, UnitCastingInfo(self.unit))
|
||||
if spell then
|
||||
self.notInterruptible = notInterruptibleCast
|
||||
self:StartBar(IceCastBar.Actions.Cast)
|
||||
return
|
||||
if UnitCastingInfo then
|
||||
local spell = UnitCastingInfo(self.unit)
|
||||
local notInterruptible = select((IceHUD.WowVer < 80000 and not IceHUD.WowClassic) and 9 or 8, UnitCastingInfo(self.unit))
|
||||
if spell then
|
||||
self.notInterruptible = notInterruptibleCast
|
||||
self:StartBar(IceCastBar.Actions.Cast)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local channel = UnitChannelInfo(self.unit)
|
||||
notInterruptible = select((IceHUD.WowVer < 80000 and not IceHUD.WowClassic) and 8 or 7, UnitChannelInfo(self.unit))
|
||||
if channel then
|
||||
self.notInterruptible = notInterruptibleChannel
|
||||
self:StartBar(IceCastBar.Actions.Channel)
|
||||
return
|
||||
if UnitChannelInfo then
|
||||
local channel = UnitChannelInfo(self.unit)
|
||||
notInterruptible = select((IceHUD.WowVer < 80000 and not IceHUD.WowClassic) and 8 or 7, UnitChannelInfo(self.unit))
|
||||
if channel then
|
||||
self.notInterruptible = notInterruptibleChannel
|
||||
self:StartBar(IceCastBar.Actions.Channel)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
self:StopBar()
|
||||
@ -177,15 +175,18 @@ function TargetCast.prototype:GetOptions()
|
||||
end
|
||||
|
||||
function TargetCast.prototype:StartBar(action, message)
|
||||
local spell = UnitCastingInfo(self.unit)
|
||||
local notInterruptible = select(IceHUD.WowVer < 80000 and 9 or 8, UnitCastingInfo(self.unit))
|
||||
if not spell then
|
||||
local spell, notInterruptible
|
||||
if UnitCastingInfo then
|
||||
spell = UnitCastingInfo(self.unit)
|
||||
notInterruptible = select(IceHUD.WowVer < 80000 and 9 or 8, UnitCastingInfo(self.unit))
|
||||
end
|
||||
if UnitChannelInfo and not spell then
|
||||
spell = UnitChannelInfo(self.unit)
|
||||
notInterruptible = select(IceHUD.WowVer < 80000 and 8 or 7, UnitChannelInfo(self.unit))
|
||||
end
|
||||
|
||||
if not spell then
|
||||
return
|
||||
if not spell then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
self.notInterruptible = notInterruptible
|
||||
@ -197,4 +198,6 @@ end
|
||||
|
||||
|
||||
-- Load us up
|
||||
IceHUD.TargetCast = TargetCast:new()
|
||||
if not IceHUD.WowClassic then
|
||||
IceHUD.TargetCast = TargetCast:new()
|
||||
end
|
||||
|
@ -842,21 +842,46 @@ function IceTargetHealth.prototype:Update(unit)
|
||||
|
||||
self:UpdateBar(self.healthPercentage, self.color)
|
||||
|
||||
if not IceHUD.IceCore:ShouldUseDogTags() and self.frame:IsVisible() then
|
||||
self:SetBottomText1(math.floor(self.healthPercentage * 100))
|
||||
if IsAddOnLoaded("RealMobHealth") then
|
||||
if not IceHUD.IceCore:ShouldUseDogTags() and self.frame:IsVisible() then
|
||||
self:SetBottomText1(math.floor(self.healthPercentage * 100))
|
||||
|
||||
if self.moduleSettings.abbreviateHealth then
|
||||
self.health = self:Round(self.health)
|
||||
self.maxHealth = self:Round(self.maxHealth)
|
||||
end
|
||||
if self.moduleSettings.abbreviateHealth then
|
||||
if RealMobHealth.UnitHasHealthData(unit) then
|
||||
self.health, self.maxHealth = RealMobHealth.GetUnitHealth(unit)
|
||||
end
|
||||
self.health = self:Round(self.health)
|
||||
self.maxHealth = self:Round(self.maxHealth)
|
||||
end
|
||||
|
||||
if (self.maxHealth ~= 100) then
|
||||
self:SetBottomText2(self:GetFormattedText(self.health, self.maxHealth), self.color)
|
||||
else
|
||||
self:SetBottomText2()
|
||||
if RealMobHealth.UnitHasHealthData(unit) or (self.maxHealth ~= 100) then
|
||||
if RealMobHealth.UnitHasHealthData(unit) then
|
||||
self.health, self.maxHealth = RealMobHealth.GetUnitHealth(unit)
|
||||
self:SetBottomText2(self:GetFormattedText(self.health, self.maxHealth), self.color)
|
||||
else
|
||||
self:SetBottomText2(self:GetFormattedText(self.health, self.maxHealth), self.color)
|
||||
end
|
||||
else
|
||||
self:SetBottomText2()
|
||||
end
|
||||
end
|
||||
else
|
||||
if not IceHUD.IceCore:ShouldUseDogTags() and self.frame:IsVisible() then
|
||||
self:SetBottomText1(math.floor(self.healthPercentage * 100))
|
||||
|
||||
if self.moduleSettings.abbreviateHealth then
|
||||
self.health = self:Round(self.health)
|
||||
self.maxHealth = self:Round(self.maxHealth)
|
||||
end
|
||||
|
||||
if (self.maxHealth ~= 100) then
|
||||
self:SetBottomText2(self:GetFormattedText(self.health, self.maxHealth), self.color)
|
||||
else
|
||||
self:SetBottomText2()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
self:CheckPvP()
|
||||
self:CheckPartyRole()
|
||||
self:SetIconAlpha()
|
||||
|
@ -12,6 +12,10 @@ local internal = "internal"
|
||||
|
||||
local ValidAnchors = { "TOPLEFT", "TOPRIGHT", "BOTTOMLEFT", "BOTTOMRIGHT", "CENTER" }
|
||||
|
||||
---- Fulzamoth - 2019-09-04 : support for cooldowns on target buffs/debuffs (classic)
|
||||
local LibClassicDurations = LibStub("LibClassicDurations", 1)
|
||||
---- end change by Fulzamoth
|
||||
|
||||
IceTargetInfo.prototype.unit = "target"
|
||||
|
||||
IceTargetInfo.prototype.buffSize = nil
|
||||
@ -1410,11 +1414,31 @@ function IceTargetInfo.prototype:UpdateBuffType(aura)
|
||||
if self.moduleSettings.auras[aura].show then
|
||||
for i = 1, IceCore.BuffLimit do
|
||||
local name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable
|
||||
if IceHUD.WowVer < 80000 and not IceHUD.WowClassic then
|
||||
|
||||
---- Fulzamoth - 2019-09-04 : support for cooldowns on target buffs/debuffs (classic)
|
||||
local spellID
|
||||
---- end change by Fulzamoth
|
||||
|
||||
if IceHUD.WowVer < 80000 and not IceHUD.WowClassic then
|
||||
name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable = UnitAura(self.unit, i, reaction .. (filter and "|PLAYER" or ""))
|
||||
else
|
||||
name, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable = UnitAura(self.unit, i, reaction .. (filter and "|PLAYER" or ""))
|
||||
end
|
||||
|
||||
---- 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 = 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)
|
||||
-- 3. set the duration if we found one.
|
||||
if classicDuration then
|
||||
duration = classicDuration
|
||||
expirationTime = classicExpirationTime
|
||||
end
|
||||
end
|
||||
---- end change by Fulzamoth
|
||||
|
||||
end
|
||||
local isFromMe = (unitCaster == "player")
|
||||
|
||||
if not icon and IceHUD.IceCore:IsInConfigMode() and UnitExists(self.unit) then
|
||||
|
@ -4,12 +4,6 @@ TargetTargetCast.prototype.scheduledEvent = nil
|
||||
|
||||
local SelfDisplayModeOptions = {"Hide", "Normal"}
|
||||
|
||||
local UnitCastingInfo, UnitChannelInfo = UnitCastingInfo, UnitChannelInfo
|
||||
if IceHUD.WowClassic then
|
||||
UnitCastingInfo = CastingInfo
|
||||
UnitChannelInfo = ChannelInfo
|
||||
end
|
||||
|
||||
-- Constructor --
|
||||
function TargetTargetCast.prototype:init()
|
||||
TargetTargetCast.super.prototype.init(self, "TargetTargetCast")
|
||||
@ -64,16 +58,20 @@ function TargetTargetCast.prototype:UpdateTargetTarget()
|
||||
return
|
||||
end
|
||||
|
||||
local spell = UnitCastingInfo(self.unit)
|
||||
if (spell) then
|
||||
self:StartBar(IceCastBar.Actions.Cast)
|
||||
return
|
||||
if UnitCastingInfo then
|
||||
local spell = UnitCastingInfo(self.unit)
|
||||
if spell then
|
||||
self:StartBar(IceCastBar.Actions.Cast)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local channel = UnitChannelInfo(self.unit)
|
||||
if (channel) then
|
||||
self:StartBar(IceCastBar.Actions.Channel)
|
||||
return
|
||||
if UnitChannelInfo then
|
||||
local channel = UnitChannelInfo(self.unit)
|
||||
if channel then
|
||||
self:StartBar(IceCastBar.Actions.Channel)
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
self:StopBar()
|
||||
@ -150,4 +148,6 @@ end
|
||||
|
||||
|
||||
-- Load us up
|
||||
IceHUD.TargetTargetCast = TargetTargetCast:new()
|
||||
if not IceHUD.WowClassic then
|
||||
IceHUD.TargetTargetCast = TargetTargetCast:new()
|
||||
end
|
||||
|
@ -77,5 +77,8 @@ IceHUD is a highly configurable and customizable HUD addon in the spirit of DHUD
|
||||
1. **How do I get rid of the bars that showed up beneath the player in the 7.0 patch?**
|
||||
Blizzard added a "Personal Resource Display" feature in the 7.0 game client. You can disable it in the Game options -> Interface -> Names -> Personal Resource Display.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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