Compare commits

...

31 Commits

Author SHA1 Message Date
36c8f02fc2 Show focus raw value as top number when DogTags are disabled 2020-06-19 14:07:38 -05:00
db7d797eb2 Fixed various class power indicators using the wrong alpha sometimes 2020-05-30 15:25:02 -05:00
a9cf5d5b2c Updated changelog 2020-05-27 11:26:18 -05:00
81d8ffeae1 Fixed issue of Runes alpha being wrong after a teleport with a target 2020-05-23 15:55:31 -05:00
d9c3de0a5e Drycode attempt to fix reported issue 278
This should only happen on a Classic client with LibClassicCasterino installed and a specific type of spell event fires
2020-05-22 10:17:18 -05:00
efdad59911 Updated changelog 2020-01-14 20:16:08 -06:00
b8e8b41ae7 Updated TOC 2020-01-14 20:14:34 -06:00
261be76d90 Fixed Rage showing on a scale of 0-1000 instead of 0-100 w/o DogTags on
Added a note about why this is happening for the next time I need to mess with it. I am fairly certain there is code in IceHUD that's already dealing with the 0-1000 scale and handling it, so I don't want to disrupt stuff without having enough testing.
2020-01-11 22:31:34 -06:00
55fbfbdf1c Fixed TargetMana value not showing in the proper color w/ DogTags off 2020-01-11 22:18:38 -06:00
e6077ab39f Updated FAQ 2020-01-07 19:46:20 -06:00
abf3c0d514 Updated changelog for release 2019-12-13 16:24:45 -06:00
b1e746bec9 Guard against missing GetTotemInfo API 2019-12-10 16:56:38 -06:00
659de89d0c Fixed player cast error for users without LibCasterCasterino installed 2019-11-30 10:49:37 -06:00
da79bb35c8 Updated changelog 2019-11-29 19:09:47 -06:00
b40829abbb add TargetCast support in Classic (#8)
This change adds support for using LibCasterCasterino to get your
target's casting info to enable the TargetCast module. It's not as
clean as the newer retail native calls but works well enough for
most interrupts.

Note: because LibCasterCasterino is using combat log events to get
casting info if a spell cast starts and is immediately cancelled or
interrupted the log may not get updated and the cast bar will zombie
complete.

LibCasterCasterino can be found at:

https://github.com/rgd87/LibClassicCasterino
2019-09-28 22:58:39 -05:00
7dfc05aa91 Fixed fallout from disabling GCD module
Fixes wowace ticket 253
2019-09-26 15:38:42 -05:00
a0d05ebf94 Updated changelog 2019-09-26 11:19:18 -05:00
b5b5c31791 Only use combo modules in Classic for Rogues and Druids 2019-09-22 14:24:02 -05:00
5c66970d8f GCD doesn't function in Classic 2019-09-19 22:09:16 -05:00
4fbb70ebc0 Updated changelog for release 2019-09-10 23:16:18 -05:00
9cfa00227f Fixed indentation to match the rest of the file (spaces/tabs) 2019-09-10 23:16:08 -05:00
9b90694912 add missing unit parameter on SpellCastFailed (#5) 2019-09-06 18:12:39 -05:00
67f79736d8 Preparing for release 2019-09-05 21:39:10 -05:00
dc98e5b521 Updated changelog 2019-09-04 17:56:29 -05:00
94506cc591 Merge remote-tracking branch 'github/master' 2019-09-04 17:52:07 -05:00
09d9a9c6f7 Add cooldowns support on target buffs/debuffs (#4)
* Add cooldowns support on target buffs/debuffs

Duration and expiration times are not set on target buffs/debuffs
when using UnitAura. This change looks up the spellID in
LibClassicDurations and sets the duration and expiry using that
source.

This change enables the cooldown sweep that allows OmniCC to properly
display the countdown of time remaining on the buff/debuff.

Note that this only adds the cooldown on buff/debuffs applied
to the target by the player.

* set LibStub to silently fail if library is missing

Support for cooldown durations on Classic WoW is provided by
LibClassicDurations, which comes with the ClassicAuraDurations
addon. This change prevents IceHUD throwing an error if the
library is missing.
2019-09-04 17:50:33 -05:00
8b7ce521ff Merge pull request #3 from TwentyOneZ/master
RealMobHealth addon compatibility
2019-09-03 17:34:51 -05:00
26fd86134b RealMobHealth addon compatibility
It will only work with DogTags disabled. Otherwise it will respect the DogTag (which doesn't support the RealMobHealth info).
2019-09-03 16:03:38 -03:00
e4d8bae185 Only allow custom bars to track players in Classic 2019-09-03 10:17:03 -05:00
2d42116f8d Updated changelog 2019-08-30 10:41:14 -05:00
a7d1629ed3 Fixed error in Classic when changing profiles 2019-08-29 11:53:27 -05:00
22 changed files with 288 additions and 94 deletions

View File

@ -23,6 +23,21 @@ if IceHUD.WowClassic then
UnitChannelInfo = ChannelInfo
end
-- Fulzamoth 2019-09-27 : Use LibClassicCasterino if it's there so we can use TargetCast
-- module in Classic WoW
if IceHUD.WowClassic then
LibClassicCasterino = LibStub("LibClassicCasterino", true)
if LibClassicCasterino then
UnitCastingInfo = function(unit)
return LibClassicCasterino:UnitCastingInfo(unit)
end
UnitChannelInfo = function(unit)
return LibClassicCasterino:UnitChannelInfo(unit)
end
end
end
-- end Fulzamoth change
local AuraIconWidth = 20
local AuraIconHeight = 20
@ -46,21 +61,55 @@ end
function IceCastBar.prototype:Enable(core)
IceCastBar.super.prototype.Enable(self, core)
self:RegisterEvent("UNIT_SPELLCAST_SENT", "SpellCastSent") -- "player", spell, rank, target
self:RegisterEvent("CURRENT_SPELL_CAST_CHANGED", "SpellCastChanged")
self:RegisterEvent("UNIT_SPELLCAST_START", "SpellCastStart") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_STOP", "SpellCastStop") -- unit, spell, rank
-- Fulzamoth 2019-09-27 : LibClassicCasterino support
-- Setup callback to the library, and route events to
-- IceHUD's handler functions.
if LibClassicCasterino then
local CastbarEventHandler = function(event, ...) -- unitTarget, castGUID, spellID
if (event == "UNIT_SPELLCAST_START") then
return IceCastBar.prototype.SpellCastStart(self, event, ...)
elseif (event == "UNIT_SPELLCAST_DELAYED") then
return IceCastBar.prototype.SpellCastDelayed(self, event, ...)
elseif (event == "UNIT_SPELLCAST_STOP") then
return IceCastBar.prototype.SpellCastStop(self, event, ...)
elseif (event == "UNIT_SPELLCAST_FAILED") then
return IceCastBar.prototype.SpellCastFailed(self, event, ...)
elseif (event == "UNIT_SPELLCAST_INTERRUPTED") then
return IceCastBar.prototype.SpellCastInterrupted(self, event, ...)
elseif (event == "UNIT_SPELLCAST_CHANNEL_START") then
return IceCastBar.prototype.SpellCastChannelStart(self, event, ...)
elseif (event == "UNIT_SPELLCAST_CHANNEL_UPDATE") then
return IceCastBar.prototype.SpellCastChannelUpdate(self, event, ...)
elseif (event == "UNIT_SPELLCAST_CHANNEL_STOP") then
return IceCastBar.prototype.SpellCastChannelStop(self, event, ...)
end
end
LibClassicCasterino.RegisterCallback(self,"UNIT_SPELLCAST_START", CastbarEventHandler)
LibClassicCasterino.RegisterCallback(self,"UNIT_SPELLCAST_DELAYED", CastbarEventHandler) -- only for player
LibClassicCasterino.RegisterCallback(self,"UNIT_SPELLCAST_STOP", CastbarEventHandler)
LibClassicCasterino.RegisterCallback(self,"UNIT_SPELLCAST_FAILED", CastbarEventHandler)
LibClassicCasterino.RegisterCallback(self,"UNIT_SPELLCAST_INTERRUPTED", CastbarEventHandler)
LibClassicCasterino.RegisterCallback(self,"UNIT_SPELLCAST_CHANNEL_START", CastbarEventHandler)
LibClassicCasterino.RegisterCallback(self,"UNIT_SPELLCAST_CHANNEL_UPDATE", CastbarEventHandler) -- only for player
LibClassicCasterino.RegisterCallback(self,"UNIT_SPELLCAST_CHANNEL_STOP", CastbarEventHandler)
else -- No LibClassicCasterino, or we're not on Classic, so use IceHUD's normal event handlers.
self:RegisterEvent("UNIT_SPELLCAST_FAILED", "SpellCastFailed") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED", "SpellCastInterrupted") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_SENT", "SpellCastSent") -- "player", spell, rank, target
self:RegisterEvent("CURRENT_SPELL_CAST_CHANGED", "SpellCastChanged")
self:RegisterEvent("UNIT_SPELLCAST_START", "SpellCastStart") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_STOP", "SpellCastStop") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_DELAYED", "SpellCastDelayed") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED", "SpellCastSucceeded") -- "player", spell, rank
self:RegisterEvent("UNIT_SPELLCAST_FAILED", "SpellCastFailed") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED", "SpellCastInterrupted") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START", "SpellCastChannelStart") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_UPDATE", "SpellCastChannelUpdate") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP", "SpellCastChannelStop") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_DELAYED", "SpellCastDelayed") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED", "SpellCastSucceeded") -- "player", spell, rank
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START", "SpellCastChannelStart") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_UPDATE", "SpellCastChannelUpdate") -- unit, spell, rank
self:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP", "SpellCastChannelStop") -- unit, spell, rank
end
self:Show(false)
end
@ -371,8 +420,11 @@ function IceCastBar.prototype:StartBar(action, message)
end
end
if not spell then
return
-- Fulzamoth 2019-09-27 : LibClassicCasterino won't return spell info on target's failed or interrupted cast
if LibClassicCasterino and not spell then
self:StopBar()
elseif not spell then
return
end
if icon ~= nil then
@ -398,7 +450,7 @@ function IceCastBar.prototype:StartBar(action, message)
self.actionDuration = 1 -- instants/failures
end
if not (message) then
if not (message) and spell then
self.actionMessage = spell .. (self.moduleSettings.showSpellRank and self:GetShortRank(rank) or "")
end
@ -470,7 +522,7 @@ function IceCastBar.prototype:SpellCastStop(event, unit, castGuid, spellId)
end
function IceCastBar.prototype:SpellCastFailed(event, castGuid, spellId)
function IceCastBar.prototype:SpellCastFailed(event, unit, castGuid, spellId)
if (unit ~= self.unit) then return end
IceHUD:Debug("SpellCastFailed", unit, castGuid, spellId)

View File

@ -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

View File

@ -1,4 +1,4 @@
## Interface: 80200
## Interface: 80300
## Author: Parnic, originally created by Iceroth
## Name: IceHUD
## Title: IceHUD |cff7fff7f-Ace3-|r

View File

@ -1,4 +1,4 @@
## Interface: 80200
## Interface: 80300
## Title: IceHUD |cff7fff7f-Options-|r
## Author: Parnic
## Version: @project-version@

View File

@ -86,7 +86,10 @@ This is a side effect of the animation API that I'm co-opting to force a rotatio
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.]]
The Classic game client doesn't offer a reliable way to show castbars for anyone except the player. You can install the LibCasterCasterino addon to enable support, but it's a best guess and not at all accurate.
|cff9999ff20. Why do buff/debuff timers not work in Classic?|r
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 at all accurate.]]
}
}
},

View File

@ -19,9 +19,10 @@ IceUnitBar.prototype.hasPet = nil
IceUnitBar.prototype.noFlash = nil
local SPELL_POWER_INSANITY = SPELL_POWER_INSANITY
local SPELL_POWER_INSANITY, SPELL_POWER_RAGE = SPELL_POWER_INSANITY, SPELL_POWER_RAGE
if IceHUD.WowVer >= 80000 or IceHUD.WowClassic then
SPELL_POWER_INSANITY = Enum.PowerType.Insanity
SPELL_POWER_RAGE = Enum.PowerType.Rage
end
-- Constructor --
@ -230,8 +231,14 @@ function IceUnitBar.prototype:Update()
self.maxHealth = UnitHealthMax(self.unit)
self.healthPercentage = self.maxHealth ~= 0 and (self.health/self.maxHealth) or 0
-- note that UnitPowerType returns 2 arguments and UnitPower[Max] accepts a third argument to get the values on a different scale
-- so this technically doesn't get us the answer we want most of the time. too risky to change at this point, though.
self.mana = UnitPower(self.unit, UnitPowerType(self.unit))
self.maxMana = UnitPowerMax(self.unit, UnitPowerType(self.unit))
if UnitPowerType(self.unit) == SPELL_POWER_RAGE and self.maxMana == 1000 then
self.mana = IceHUD:MathRound(self.mana / 10)
self.maxMana = IceHUD:MathRound(self.maxMana / 10)
end
if IceHUD.WowVer >= 70300 and UnitPowerType(self.unit) == SPELL_POWER_INSANITY then
self.mana = IceHUD:MathRound(self.mana / 100)
self.maxMana = IceHUD:MathRound(self.maxMana / 100)

View File

@ -1,3 +1,45 @@
v1.12.13:
- Fixed various class power indicators using the wrong alpha visibility if the player teleported (like with a Hearthstone) when they had a target selected.
- Show Hunter Focus top text as the raw Focus amount instead of a 0-100 scale with DogTags off.
v1.12.12:
- (Classic) Fixed an error when certain spell events fire (like turning in Arathi Basin tokens) with LibClassicCasterino installed.
- Fixed Death Knight Runes using the wrong alpha visibility if the player teleported (like with a Hearthstone) when they had a target selected.
v1.12.11:
- Fixed TargetMana value not showing in the proper color with DogTags off
- Fixed Rage showing on a scale of 0-1000 instead of 0-100 with DogTags off
- Updated TOC for 8.3
v1.12.10:
- (Classic) Temporarily(?) disabled the Totems module as the GetTotemInfo() API was removed.
v1.12.9:
- (Classic) Fixed error in player cast bar if the user didn't have LibClassicCasterino installed.
v1.12.8:
- (Classic) Fixed TargetCast bar to work for users with the LibClassicCasterino library installed. (thanks, Fulzamoth!)
v1.12.7:
- (Classic) Fixed fallout from disabling GCD module (errors in castbar).
v1.12.6:
- (Classic) Disabled Combo modules for non-Rogues/-Druids. They were sometimes showing for other class abilities for some reason.
v1.12.5:
- (Classic) Disabled GCD module as the Classic client doesn't support tracking GCD.
- (Classic) Packaged new LibDogTag-Unit to pick up Happiness tag fixes.
v1.12.4:
- Fixed spellcast failure events on the castbar not being handled properly. (thanks, Fulzamoth!)
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.

View File

@ -439,7 +439,9 @@ function CastBar.prototype:SpellCastStart(event, unit, castGuid, spellId)
end
self:UpdateLagBar()
self.nextLagUpdate = GetTime() + (select(2, GetSpellCooldown(IceHUD.GlobalCoolDown:GetSpellId())) / 2)
if IceHUD.GlobalCoolDown then
self.nextLagUpdate = GetTime() + (select(2, GetSpellCooldown(IceHUD.GlobalCoolDown:GetSpellId())) / 2)
end
end
@ -464,7 +466,9 @@ function CastBar.prototype:SpellCastSucceeded(event, unit, castGuid, spellId)
end
self:UpdateLagBar()
self.nextLagUpdate = GetTime() + (select(2, GetSpellCooldown(IceHUD.GlobalCoolDown:GetSpellId())) / 2)
if IceHUD.GlobalCoolDown then
self.nextLagUpdate = GetTime() + (select(2, GetSpellCooldown(IceHUD.GlobalCoolDown:GetSpellId())) / 2)
end
end

View File

@ -467,7 +467,7 @@ function IceClassPowerCounter.prototype:DisplayCounter()
self:RegisterEvent(IceHUD.UnitPowerEvent, "UpdateRunePower")
self:RegisterEvent("UNIT_DISPLAYPOWER", "UpdateRunePower")
self:RegisterEvent("PLAYER_ENTERING_WORLD", "UpdateRunePower")
self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld")
if (self.moduleSettings.hideBlizz) then
self:HideBlizz()
@ -484,6 +484,11 @@ function IceClassPowerCounter.prototype:Disable(core)
end
end
function IceClassPowerCounter.prototype:EnteringWorld()
self:TargetChanged()
self:UpdateRunePower()
end
function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
if event and (event == IceHUD.UnitPowerEvent or event == "UNIT_POWER_FREQUENT") and arg1 ~= "player" and arg1 ~= "vehicle" then
return

View File

@ -553,4 +553,7 @@ end
-- Load us up
IceHUD.ComboPoints = ComboPoints:new()
local _, class = UnitClass("player")
if not IceHUD.WowClassic or class == "ROGUE" or class == "DRUID" then
IceHUD.ComboPoints = ComboPoints:new()
end

View File

@ -135,4 +135,7 @@ function ComboPointsBar.prototype:Update()
self:UpdateComboPoints()
end
IceHUD.ComboPointsBar = ComboPointsBar:new()
local _, class = UnitClass("player")
if not IceHUD.WowClassic or class == "ROGUE" or class == "DRUID" then
IceHUD.ComboPointsBar = ComboPointsBar:new()
end

View File

@ -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',

View File

@ -291,4 +291,6 @@ function GlobalCoolDown.prototype:GetSpellId()
end
-- Load us up
IceHUD.GlobalCoolDown = GlobalCoolDown:new()
if not IceHUD.WowClassic then
IceHUD.GlobalCoolDown = GlobalCoolDown:new()
end

View File

@ -387,7 +387,7 @@ function PlayerMana.prototype:Update(unit, powertype)
if not IceHUD.IceCore:ShouldUseDogTags() then
-- extra hack for whiny rogues (are there other kind?)
local displayPercentage = self.manaPercentage
if (self.manaType == SPELL_POWER_ENERGY) then
if self.manaType == SPELL_POWER_ENERGY or self.manaType == SPELL_POWER_FOCUS then
displayPercentage = self.mana
else
displayPercentage = math.floor(displayPercentage * 100)

View File

@ -282,7 +282,7 @@ function Runes.prototype:Enable(core)
if IceHUD.WowVer >= 70300 then
self:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED", "UpdateRuneColors")
end
self:RegisterEvent("PLAYER_ENTERING_WORLD", "ResetRuneAvailability")
self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld")
self:RegisterEvent("UNIT_MAXPOWER", "CheckMaxNumRunes")
if (self.moduleSettings.hideBlizz) then
@ -290,6 +290,11 @@ function Runes.prototype:Enable(core)
end
end
function Runes.prototype:EnteringWorld()
self:TargetChanged()
self:ResetRuneAvailability()
end
function Runes.prototype:Disable(core)
Runes.super.prototype.Disable(self, core)

View File

@ -107,6 +107,7 @@ function ShardCounter.prototype:UpdateRunePower(event, arg1, arg2)
end
if event == "PLAYER_ENTERING_WORLD" and IceHUD.WowVer < 70000 then
self:TargetChanged()
self:UpdatePowerType(event)
end

View File

@ -157,6 +157,7 @@ function StaggerBar.prototype:UpdateShown()
end
function StaggerBar.prototype:PLAYER_ENTERING_WORLD()
self:TargetChanged()
self:UpdateStaggerBar()
end

View File

@ -65,7 +65,12 @@ function TargetCast.prototype:GetDefaultSettings()
settings["side"] = IceCore.Side.Right
settings["offset"] = 3
settings["flashInstants"] = "Never"
settings["flashFailures"] = "Never"
-- Fulzamoth 2019-09-27 : let the flash handler work if in Classic and LibClassicCasterino exists
if LibClassicCasterino then
settings["flashFailures"] = ""
else
settings["flashFailures"] = "Never"
end
settings["shouldAnimate"] = false
settings["hideAnimationSettings"] = true
settings["usesDogTagStrings"] = false
@ -197,7 +202,8 @@ end
-------------------------------------------------------------------------------
-- Fulzamoth 2019-09-27 : load in Classic if LibClassicCasterino exists
-- Load us up
if not IceHUD.WowClassic then
if not IceHUD.WowClassic or LibClassicCasterino then
IceHUD.TargetCast = TargetCast:new()
end

View File

@ -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()

View File

@ -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,10 +1414,27 @@ 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
---- 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 ""))
---- 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 ""))
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")

View File

@ -156,7 +156,7 @@ function IceTargetMana.prototype:Update(unit)
if not IceHUD.IceCore:ShouldUseDogTags() then
self:SetBottomText1(math.floor(self.manaPercentage * 100))
self:SetBottomText2(self:GetFormattedText(self.mana, self.maxMana), color)
self:SetBottomText2(self:GetFormattedText(self.mana, self.maxMana), self.color)
end
end

View File

@ -215,7 +215,7 @@ function Totems.prototype:Enable(core)
Totems.super.prototype.Enable(self, core)
self:RegisterEvent("PLAYER_TOTEM_UPDATE", "UpdateTotem");
self:RegisterEvent("PLAYER_ENTERING_WORLD", "ResetTotemAvailability");
self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld");
if self.moduleSettings.hideBlizz then
self:HideBlizz()
@ -230,6 +230,11 @@ function Totems.prototype:Disable(core)
end
end
function Totems.prototype:EnteringWorld()
self:TargetChanged()
self:ResetTotemAvailability()
end
function Totems.prototype:ResetTotemAvailability()
for i=1, self.numTotems do
self:UpdateTotem(nil, i)
@ -237,7 +242,7 @@ function Totems.prototype:ResetTotemAvailability()
end
function Totems.prototype:UpdateTotem(event, totem, ...)
if not totem or tonumber(totem) ~= totem or totem < 1 or totem > self.numTotems then
if not totem or tonumber(totem) ~= totem or totem < 1 or totem > self.numTotems or not GetTotemInfo then
return
end
local thisTotemName = self.totemNames[TOTEM_PRIORITIES[totem]]
@ -331,8 +336,7 @@ function Totems.prototype:CheckCombat()
end
function Totems.prototype:CreateTotem(i, name)
-- whiskey tango foxtrot?! apparently arenas can cause this? I can't test out the real cause myself, so putting in a stopgap for now
if not name then
if not name or not GetTotemInfo then
return
end
local haveTotem, name, startTime, duration, icon = GetTotemInfo(i)