Compare commits

...

20 Commits

Author SHA1 Message Date
b467af21c0 Fix CC and Invuln not showing immediately
This is the same fix as was applied to RollTheBones in commit 46883e355b but I failed to audit the rest of the mod for places where this was possible. This one was reported over on the Curse addon page comments.
2022-10-31 23:36:38 -05:00
acc400de6e Fix error on Classic with Hide Party
I neglected to test the new party-hide implementation on pre-10.0. It was not fully implemented. This implementation is from Pitbull4 and is more complicated than I need, but certainly does the job and allows for some future usage if needed.

Fixes wowace ticket #330
2022-10-30 23:21:31 -05:00
cac0deeb3c Update license with current year 2022-10-28 22:48:37 -05:00
e951d40b12 Don't package file just meant to help packager 2022-10-28 22:48:31 -05:00
46883e355b Fix RollTheBones not showing immediately when cast
I guess UNIT_AURA now provides a third argument that it wasn't before. So instead of relying on a third argument, just override the event name to something we control and key off that for avoiding updates.
2022-10-28 22:44:38 -05:00
004df582ef Update changelog 2022-10-27 20:34:19 -05:00
b8cf6e90b0 Fix error on 10.0
I guess this frame is gone. I don't remember why this was necessary.
2022-10-27 20:32:47 -05:00
d0c06c7b55 Add sponsor file 2022-10-27 09:09:50 -05:00
8858459b10 Disable Runes Hide Blizzard option
This is no longer functional in 10.0 and I can't find an easy replacement, so I'm removing the functionality for 10.0+ for now. The entire player frame can still be hidden, which also hides the runes, so I don't feel like this is super critical to have.

Fixes #26
2022-10-27 08:56:53 -05:00
86e40187a2 Update Party hide feature for 10.0 compatibility 2022-10-25 22:42:46 -05:00
62bcc17ed6 Increase TOC to 10.0 2022-10-25 21:43:46 -05:00
52c9b51e8d Temp fix for error in 10.0
I need to find the new way to disable party frames, but this gets the addon loaded for now.
2022-10-25 21:43:13 -05:00
aa03a0b332 Add support for max power changing
Evokers can spec into an additional Essence, so we need to handle the power counter increasing/decreasing. This was a fundamental change to the class power counter, so I'm sure something else broke somewhere. A casual glance at other classes/specs seems fine, though...
2022-10-25 21:43:05 -05:00
3017b5dd18 Rename Anima Charged to Charged
Charged combo points are still a thing, but they're no longer called "Anima-charged" or relate to Kyrian.
2022-10-25 21:42:32 -05:00
1f54f7d41d Use new player castbar frame name 2022-10-25 21:42:13 -05:00
5b73d3b35f Update to correct LibDogTag url 2022-10-04 22:36:41 -05:00
decb0017f3 Update changelog 2022-10-04 22:33:35 -05:00
a32b75bf44 Update to latest packager example 2022-09-22 11:01:21 -05:00
6c506579be Add Wago packaging support 2022-09-22 10:46:11 -05:00
701fb1373f Fix Runes disappearing for DK on Wrath
MaxPower events fire, but I guess only Legion+ actually returns rune counts from this function. On Wrath it always returns 0, so the CheckMaxNumRunes logic was hiding all runes.
2022-09-20 14:27:31 -05:00
22 changed files with 258 additions and 79 deletions

View File

@ -23,6 +23,7 @@ jobs:
env: env:
CF_API_KEY: ${{ secrets.CF_API_KEY }} CF_API_KEY: ${{ secrets.CF_API_KEY }}
WOWI_API_TOKEN: ${{ secrets.WOWI_API_TOKEN }} WOWI_API_TOKEN: ${{ secrets.WOWI_API_TOKEN }}
WAGO_API_TOKEN: ${{ secrets.WAGO_API_TOKEN }}
GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }} # "GITHUB_TOKEN" is a secret always provided to the workflow 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_" # for your own token, the name cannot start with "GITHUB_"
@ -31,25 +32,27 @@ jobs:
# we first have to clone the AddOn project, this is a required step # we first have to clone the AddOn project, this is a required step
- name: Clone project - name: Clone project
uses: actions/checkout@v1 uses: actions/checkout@v3
with:
fetch-depth: 0 # gets git history for changelogs
# once cloned, we just run the GitHub Action for the packager project # once cloned, we just run the GitHub Action for the packager project
- name: Package and release - name: Package and release
uses: BigWigsMods/packager@master uses: BigWigsMods/packager@v2
# another example where we supply additional arguments, this example is specifically to release # another example where we supply additional arguments, this example is specifically to release
# for the Classic version of the game # for the Classic version of the game
- name: Package and release for Classic - name: Package and release for Classic
uses: BigWigsMods/packager@master uses: BigWigsMods/packager@v2
with: with:
args: -g classic -w 0 args: -g classic -w 0
- name: Package and release for TBC - name: Package and release for TBC
uses: BigWigsMods/packager@master uses: BigWigsMods/packager@v2
with: with:
args: -g bcc -w 0 args: -g bcc -w 0
- name: Package and release for Wrath - name: Package and release for Wrath
uses: BigWigsMods/packager@master uses: BigWigsMods/packager@v2
with: with:
args: -g wrath -w 0 args: -g wrath -w 0

View File

@ -37,15 +37,18 @@ externals:
libs/AceLocale-3.0: libs/AceLocale-3.0:
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceLocale-3.0 url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceLocale-3.0
tag: latest tag: latest
libs/AceHook-3.0:
url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceHook-3.0
tag: latest
libs/LibRangeCheck-2.0: libs/LibRangeCheck-2.0:
url: https://github.com/WeakAuras/LibRangeCheck-2.0/ url: https://github.com/WeakAuras/LibRangeCheck-2.0/
libs/LibSharedMedia-3.0: libs/LibSharedMedia-3.0:
url: svn://svn.wowace.com/wow/libsharedmedia-3-0/mainline/trunk url: svn://svn.wowace.com/wow/libsharedmedia-3-0/mainline/trunk
tag: latest tag: latest
libs/LibDogTag-3.0: libs/LibDogTag-3.0:
url: git://git.wowace.com/wow/libdogtag-3-0/mainline.git url: https://github.com/parnic/LibDogTag-3.0
libs/LibDogTag-Unit-3.0: libs/LibDogTag-Unit-3.0:
url: git://git.wowace.com/wow/libdogtag-unit-3-0/mainline.git url: https://github.com/parnic/LibDogTag-Unit-3.0
libs/LibDBIcon-1.0: libs/LibDBIcon-1.0:
url: svn://svn.wowace.com/wow/libdbicon-1-0/mainline/trunk/LibDBIcon-1.0 url: svn://svn.wowace.com/wow/libdbicon-1-0/mainline/trunk/LibDBIcon-1.0
libs/LibDualSpec-1.0: libs/LibDualSpec-1.0:
@ -65,6 +68,8 @@ tools-used:
ignore: ignore:
- readme.md - readme.md
- FUNDING.yml
- this_version.md
manual-changelog: this_version.md manual-changelog: this_version.md

3
FUNDING.yml Normal file
View File

@ -0,0 +1,3 @@
github: parnic
ko_fi: parnic
custom: "https://www.paypal.me/parnic"

View File

@ -284,6 +284,8 @@ function IceCore.prototype:Enable(userToggle)
self.IceHUDFrame:RegisterEvent("ZONE_CHANGED") self.IceHUDFrame:RegisterEvent("ZONE_CHANGED")
end end
self.IceHUDFrame:RegisterEvent("UNIT_AURA") self.IceHUDFrame:RegisterEvent("UNIT_AURA")
self.IceHUDFrame:RegisterEvent("PLAYER_REGEN_ENABLED", IceHUD.PLAYER_REGEN_ENABLED)
self.IceHUDFrame:RegisterEvent("PLAYER_REGEN_DISABLED", IceHUD.PLAYER_REGEN_DISABLED)
self.IceHUDFrame:SetScript("OnEvent", function(self, event, ...) self.IceHUDFrame:SetScript("OnEvent", function(self, event, ...)
if (event == "PET_BATTLE_OPENING_START") then if (event == "PET_BATTLE_OPENING_START") then
if IceHUD.IceCore.settings.bHideDuringPetBattles then if IceHUD.IceCore.settings.bHideDuringPetBattles then

View File

@ -1,5 +1,5 @@
local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false) local L = LibStub("AceLocale-3.0"):GetLocale("IceHUD", false)
IceHUD = LibStub("AceAddon-3.0"):NewAddon("IceHUD", "AceConsole-3.0") IceHUD = LibStub("AceAddon-3.0"):NewAddon("IceHUD", "AceConsole-3.0", "AceHook-3.0")
local IceHUD = IceHUD local IceHUD = IceHUD
@ -963,3 +963,53 @@ UIDropDownMenu_Initialize(IceHUD_UnitFrame_DropDown, function()
UnitPopup_ShowMenu(IceHUD_UnitFrame_DropDown, menu, IceHUD.DropdownUnit, nil, id) UnitPopup_ShowMenu(IceHUD_UnitFrame_DropDown, menu, IceHUD.DropdownUnit, nil, id)
end end
end, "MENU", nil) end, "MENU", nil)
function IceHUD:OutOfCombatWrapper(func)
return function(...)
return IceHUD:RunOnLeaveCombat(func, ...)
end
end
do
local in_combat = false
local in_lockdown = false
local actions_to_perform = {}
local pool = setmetatable({}, {__mode='k'})
function IceHUD:PLAYER_REGEN_ENABLED()
in_combat = false
in_lockdown = false
for i, t in ipairs(actions_to_perform) do
t.f(unpack(t, 1, t.n))
actions_to_perform[i] = nil
wipe(t)
pool[t] = true
end
end
function IceHUD:PLAYER_REGEN_DISABLED()
in_combat = true
end
function IceHUD:RunOnLeaveCombat(func, ...)
if not in_combat then
-- out of combat, call right away and return
func(...)
return
end
if not in_lockdown then
in_lockdown = InCombatLockdown() -- still in PLAYER_REGEN_DISABLED
if not in_lockdown then
func(...)
return
end
end
local t = next(pool) or {}
pool[t] = nil
t.f = func
local n = select('#', ...)
t.n = n
for i = 1, n do
t[i] = select(i, ...)
end
actions_to_perform[#actions_to_perform+1] = t
end
end

View File

@ -1,5 +1,5 @@
## Interface: 90207 ## Interface: 100000
## Interface-Retail: 90207 ## Interface-Retail: 100000
## Interface-Classic: 11403 ## Interface-Classic: 11403
## Interface-BCC: 20504 ## Interface-BCC: 20504
## Interface-Wrath: 30400 ## Interface-Wrath: 30400
@ -19,6 +19,7 @@
## X-Website: https://www.wowace.com/projects/ice-hud ## X-Website: https://www.wowace.com/projects/ice-hud
## X-Curse-Project-ID: 5394 ## X-Curse-Project-ID: 5394
## X-WoWI-ID: 8149 ## X-WoWI-ID: 8149
## X-Wago-ID: 5bGolJN0
#@no-lib-strip@ #@no-lib-strip@
# Libraries # Libraries

View File

@ -1,5 +1,5 @@
## Interface: 90207 ## Interface: 100000
## Interface-Retail: 90207 ## Interface-Retail: 100000
## Interface-Classic: 11403 ## Interface-Classic: 11403
## Interface-BCC: 20504 ## Interface-BCC: 20504
## Interface-Wrath: 30400 ## Interface-Wrath: 30400

View File

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2021 parnic Copyright (c) 2021-2022 parnic
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -1,5 +1,26 @@
# Changelog # Changelog
v1.14.2:
- Fix CC and Invuln modules not showing immediately when they should.
v1.14.1:
- Fix Hide Party feature on pre-10.0 clients.
v1.14.0:
- 10.0 compatibility
- Renamed Anima Charged combo points to Charged, and removed specific references to Kyrian.
v1.13.17.3:
- Packaged latest LibDogTag-Unit to work around crash in Wrath Classic client.
v1.13.17.2:
- Fixed Runes disappearing for Death Knights on Wrath Classic when using the dual spec feature.
v1.13.17.1: v1.13.17.1:
- Fixed Priests hanging on login on the retail client. - Fixed Priests hanging on login on the retail client.

View File

@ -11,6 +11,7 @@
<Include file="libs\AceConsole-3.0\AceConsole-3.0.xml"/> <Include file="libs\AceConsole-3.0\AceConsole-3.0.xml"/>
<Include file="libs\AceAddon-3.0\AceAddon-3.0.xml"/> <Include file="libs\AceAddon-3.0\AceAddon-3.0.xml"/>
<Include file="libs\AceLocale-3.0\AceLocale-3.0.xml"/> <Include file="libs\AceLocale-3.0\AceLocale-3.0.xml"/>
<Include file="libs\AceHook-3.0\AceHook-3.0.xml"/>
<Include file="libs\LibDogTag-3.0\lib.xml"/> <Include file="libs\LibDogTag-3.0\lib.xml"/>
<Include file="libs\LibDogTag-Unit-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-2.0\LibRangeCheck-2.0.lua"/>

View File

@ -3,6 +3,11 @@ local CastBar = IceCore_CreateClass(IceCastBar)
local IceHUD = _G.IceHUD local IceHUD = _G.IceHUD
local CastingBarFrame = CastingBarFrame
if not CastingBarFrame then
CastingBarFrame = PlayerCastingBarFrame
end
CastBar.prototype.spellCastSent = nil CastBar.prototype.spellCastSent = nil
-- Constructor -- -- Constructor --

View File

@ -468,6 +468,9 @@ function IceClassPowerCounter.prototype:DisplayCounter()
self:RegisterEvent(IceHUD.UnitPowerEvent, "UpdateRunePower") self:RegisterEvent(IceHUD.UnitPowerEvent, "UpdateRunePower")
self:RegisterEvent("UNIT_DISPLAYPOWER", "UpdateRunePower") self:RegisterEvent("UNIT_DISPLAYPOWER", "UpdateRunePower")
self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld") self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld")
if IceHUD.EventExistsUnitMaxPower then
self:RegisterEvent("UNIT_MAXPOWER", "UpdateRunePower")
end
if (self.moduleSettings.hideBlizz) then if (self.moduleSettings.hideBlizz) then
self:HideBlizz() self:HideBlizz()
@ -497,8 +500,22 @@ function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
if IceHUD.WowVer >= 70000 then if IceHUD.WowVer >= 70000 then
local numMax = UnitPowerMax(self.unit, self.unitPower) local numMax = UnitPowerMax(self.unit, self.unitPower)
if numMax ~= self.numRunes then if numMax ~= self.numRunes then
local oldMax = self.numRunes
self.numRunes = numMax self.numRunes = numMax
self:CreateFrame() self:CreateFrame()
self:SetDisplayMode()
for i=self.numRunes+1, oldMax do
if self.frame.graphical[i] then
self.frame.graphical[i]:Hide()
end
end
for i=oldMax+1, self.numRunes do
if self:GetRuneMode() ~= "Numeric" then
self.frame.graphical[i]:Show()
end
self:HideRune(i)
end
end end
end end
@ -567,11 +584,7 @@ function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
end end
end end
else else
if self.moduleSettings.inactiveDisplayMode == "Darkened" then self:HideRune(i)
self.frame.graphical[i].rune:SetVertexColor(0, 0, 0)
elseif self.moduleSettings.inactiveDisplayMode == "Hidden" then
self.frame.graphical[i]:Hide()
end
end end
end end
end end
@ -592,6 +605,19 @@ function IceClassPowerCounter.prototype:UpdateRunePower(event, arg1, arg2)
end end
end end
function IceClassPowerCounter.prototype:HideRune(i)
if self:GetRuneMode() == "Numeric" then
self.frame.graphical[i].Hide()
return
end
if self.moduleSettings.inactiveDisplayMode == "Darkened" then
self.frame.graphical[i].rune:SetVertexColor(0, 0, 0)
elseif self.moduleSettings.inactiveDisplayMode == "Hidden" then
self.frame.graphical[i]:Hide()
end
end
function IceClassPowerCounter.prototype:StartRunesFullAnimation() function IceClassPowerCounter.prototype:StartRunesFullAnimation()
if not self.AnimUpdate then if not self.AnimUpdate then
self.AnimUpdate = function() self:UpdateRuneAnimation() end self.AnimUpdate = function() self:UpdateRuneAnimation() end
@ -717,6 +743,9 @@ function IceClassPowerCounter.prototype:CreateRuneFrame()
for i=1, self.numRunes do for i=1, self.numRunes do
self:CreateRune(i) self:CreateRune(i)
end end
for i=self.numRunes+1, #self.frame.graphical do
self.frame.graphical[i]:Hide()
end
end end
function IceClassPowerCounter.prototype:CreateRune(i) function IceClassPowerCounter.prototype:CreateRune(i)
@ -758,7 +787,13 @@ function IceClassPowerCounter.prototype:CreateRune(i)
end end
end end
function IceClassPowerCounter.prototype:SetupNewRune(rune)
end
function IceClassPowerCounter.prototype:SetupRuneTexture(rune) function IceClassPowerCounter.prototype:SetupRuneTexture(rune)
if rune > #self.runeCoords then
self:SetupNewRune(rune)
end
if not rune or rune < 1 or rune > #self.runeCoords then if not rune or rune < 1 or rune > #self.runeCoords then
return return
end end

View File

@ -21,7 +21,7 @@ function ComboPoints.prototype:init()
if AnticipationExists then if AnticipationExists then
self:SetDefaultColor("AnticipationPoints", 1, 0, 1) self:SetDefaultColor("AnticipationPoints", 1, 0, 1)
end end
self:SetDefaultColor("KyrianAnimaComboPoint", 0.3137254901960784, 0.3725490196078432, 1) self:SetDefaultColor("ChargedComboPoint", 0.3137254901960784, 0.3725490196078432, 1)
self.scalingEnabled = true self.scalingEnabled = true
end end
@ -222,16 +222,16 @@ function ComboPoints.prototype:GetOptions()
order = 35 order = 35
} }
opts["bShowAnimaCharged"] = { opts["bShowCharged"] = {
type = 'toggle', type = 'toggle',
width = 'double', width = 'double',
name = L["Show Anima-charged points"], name = L["Show Charged points"],
desc = L["Whether or not to color an anima-charged combo point a separate color. Set the KyrianAnimaComboPoint color to the color you would like it to be."], desc = L["Whether or not to color a charged combo point a separate color. Set the ChargedComboPoint color to the color you would like it to be."],
get = function() get = function()
return self.moduleSettings.bShowAnimaCharged return self.moduleSettings.bShowCharged
end, end,
set = function(info, v) set = function(info, v)
self.moduleSettings.bShowAnimaCharged = v self.moduleSettings.bShowCharged = v
self:UpdateChargedComboPoints() self:UpdateChargedComboPoints()
end, end,
disabled = function() disabled = function()
@ -261,7 +261,7 @@ function ComboPoints.prototype:GetDefaultSettings()
defaults["comboGap"] = 0 defaults["comboGap"] = 0
defaults["showAnticipation"] = true defaults["showAnticipation"] = true
defaults["bShowWithNoTarget"] = true defaults["bShowWithNoTarget"] = true
defaults["bShowAnimaCharged"] = true defaults["bShowCharged"] = true
return defaults return defaults
end end
@ -440,8 +440,8 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
g = g - ((1 / maxComboPoints)*i) g = g - ((1 / maxComboPoints)*i)
end end
if self.moduleSettings.bShowAnimaCharged and self:IsAnimaChargedPoint(i) then if self.moduleSettings.bShowCharged and self:IsChargedPoint(i) then
self.frame.graphical[i].texture:SetVertexColor(self:GetColor("KyrianAnimaComboPoint")) self.frame.graphical[i].texture:SetVertexColor(self:GetColor("ChargedComboPoint"))
else else
self.frame.graphical[i].texture:SetVertexColor(r, g, b) self.frame.graphical[i].texture:SetVertexColor(r, g, b)
end end
@ -489,7 +489,7 @@ function ComboPoints.prototype:CreateComboFrame(forceTextureUpdate)
end end
end end
function ComboPoints.prototype:IsAnimaChargedPoint(point) function ComboPoints.prototype:IsChargedPoint(point)
if not self.chargedPowerPoints then if not self.chargedPowerPoints then
return false return false
end end

View File

@ -142,7 +142,9 @@ function ComboPointsBar.prototype:UpdateComboPoints(...)
end end
self:SetBottomText1(points or "0") self:SetBottomText1(points or "0")
self:SetBottomText2(self.chargedPowerPointIndex) if self.chargedPowerPointIndex then
self:SetBottomText2(self.chargedPowerPointIndex)
end
end end
function ComboPointsBar.prototype:Update() function ComboPointsBar.prototype:Update()

View File

@ -10,6 +10,7 @@ PlayerHealth.prototype.absorbAmount = 0
local configMode = false local configMode = false
local HealComm local HealComm
local incomingHealAmt = 0 local incomingHealAmt = 0
local groupEvent = IceHUD.EventExistsGroupRosterUpdate and "GROUP_ROSTER_UPDATE" or "PARTY_MEMBERS_CHANGED"
-- Constructor -- -- Constructor --
function PlayerHealth.prototype:init() function PlayerHealth.prototype:init()
@ -81,11 +82,7 @@ function PlayerHealth.prototype:Enable(core)
self:RegisterEvent("PLAYER_REGEN_DISABLED", "CheckCombat") self:RegisterEvent("PLAYER_REGEN_DISABLED", "CheckCombat")
self:RegisterEvent("PARTY_LEADER_CHANGED", "CheckLeader") self:RegisterEvent("PARTY_LEADER_CHANGED", "CheckLeader")
if IceHUD.EventExistsGroupRosterUpdate then self:RegisterEvent(groupEvent, "CheckLeader")
self:RegisterEvent("GROUP_ROSTER_UPDATE", "CheckLeader")
else
self:RegisterEvent("PARTY_MEMBERS_CHANGED", "CheckLeader")
end
if GetLFGProposal then if GetLFGProposal then
self:RegisterEvent("LFG_PROPOSAL_UPDATE", "CheckPartyRole") self:RegisterEvent("LFG_PROPOSAL_UPDATE", "CheckPartyRole")
self:RegisterEvent("LFG_PROPOSAL_FAILED", "CheckPartyRole") self:RegisterEvent("LFG_PROPOSAL_FAILED", "CheckPartyRole")
@ -1421,43 +1418,78 @@ function PlayerHealth.prototype:HideBlizz()
PlayerFrame:SetParent(self.PlayerFrameParent) PlayerFrame:SetParent(self.PlayerFrameParent)
end end
local parents = {}
local hide_frame = IceHUD:OutOfCombatWrapper(function(self) self:Hide() end)
local function hook_frames(...)
for i = 1, select("#", ...) do
local frame = select(i, ...)
frame:UnregisterAllEvents()
if not IceHUD:IsHooked(frame, "OnShow") then
IceHUD:SecureHookScript(frame, "OnShow", hide_frame)
end
frame:Hide()
end
end
local function unhook_frame(frame)
if IceHUD:IsHooked(frame, "OnShow") then
IceHUD:Unhook(frame, "OnShow")
local parent = parents[frame]
if parent then
frame:SetParent(parent)
end
elseif IceHUD:IsHooked(frame, "Show") then
IceHUD:Unhook(frame, "Show")
IceHUD:Unhook(frame, "SetPoint")
end
end
local function unhook_frames(...)
for i = 1, select("#", ...) do
local frame = select(i, ...)
unhook_frame(frame)
local handler = frame:GetScript("OnLoad")
if handler then
handler(frame)
end
end
end
function PlayerHealth.prototype:HideBlizzardParty() function PlayerHealth.prototype:HideBlizzardParty()
if self.combat then if self.combat then
self.pendingBlizzardPartyHide = true self.pendingBlizzardPartyHide = true
return return
end end
-- Both Pitbull 4 and Xperl use these exact code, so we use it too. if PartyFrame then
for i = 1, MAX_PARTY_MEMBERS do PartyFrame:Hide()
local party = _G['PartyMemberFrame'..i] PartyFrame:UnregisterEvent(groupEvent)
party:UnregisterAllEvents() else
party:Hide() for i = 1, MAX_PARTY_MEMBERS do
party.Show = function() end local frame = _G["PartyMemberFrame" .. i]
frame:SetAttribute("statehidden", true)
hook_frames(frame)
end
UIParent:UnregisterEvent(groupEvent)
end end
UIParent:UnregisterEvent('RAID_ROSTER_UPDATE')
end end
function PlayerHealth.prototype:ShowBlizzardParty() function PlayerHealth.prototype:ShowBlizzardParty()
-- Both Pitbull 4 and Xperl use these exact code, so we use it too. if PartyFrame then
for i = 1, MAX_PARTY_MEMBERS do PartyFrame:Show()
local frame = _G["PartyMemberFrame"..i] PartyFrame:Layout()
if frame then PartyFrame:RegisterEvent(groupEvent)
frame.Show = nil else
frame:GetScript("OnLoad")(frame) for i = 1, MAX_PARTY_MEMBERS do
if IceHUD.WowVer >= 50000 then local frame = _G["PartyMemberFrame" .. i]
frame:GetScript("OnEvent")(frame, "GROUP_ROSTER_UPDATE") frame:SetAttribute("statehidden", nil)
else unhook_frames(frame)
frame:GetScript("OnEvent")(frame, "PARTY_MEMBERS_CHANGED") frame:GetScript("OnEvent")(frame, groupEvent)
end
PartyMemberFrame_UpdateMember(frame)
end end
UIParent:RegisterEvent(groupEvent)
end end
UIParent:RegisterEvent("RAID_ROSTER_UPDATE")
end end
--function PlayerHealth.prototype:ShowBlizzParty() --function PlayerHealth.prototype:ShowBlizzParty()

View File

@ -115,7 +115,9 @@ end
function PlayerInfo.prototype:ShowBlizz() function PlayerInfo.prototype:ShowBlizz()
BuffFrame:Show() BuffFrame:Show()
TemporaryEnchantFrame:Show() if TemporaryEnchantFrame then
TemporaryEnchantFrame:Show()
end
BuffFrame:GetScript("OnLoad")(BuffFrame) BuffFrame:GetScript("OnLoad")(BuffFrame)
end end
@ -123,7 +125,9 @@ end
function PlayerInfo.prototype:HideBlizz() function PlayerInfo.prototype:HideBlizz()
BuffFrame:Hide() BuffFrame:Hide()
TemporaryEnchantFrame:Hide() if TemporaryEnchantFrame then
TemporaryEnchantFrame:Hide()
end
BuffFrame:UnregisterAllEvents() BuffFrame:UnregisterAllEvents()
end end

View File

@ -274,7 +274,7 @@ end
function RollTheBones.prototype:MyOnUpdate() function RollTheBones.prototype:MyOnUpdate()
RollTheBones.super.prototype.MyOnUpdate(self) RollTheBones.super.prototype.MyOnUpdate(self)
if self.bUpdateRtb then if self.bUpdateRtb then
self:UpdateRollTheBones(nil, self.unit, true) self:UpdateRollTheBones("internal", self.unit)
end end
if self.target or self.moduleSettings.bShowWithNoTarget then if self.target or self.moduleSettings.bShowWithNoTarget then
self:UpdateDurationBar() self:UpdateDurationBar()
@ -296,13 +296,14 @@ local function ShouldHide()
return not HasSpell(193316) return not HasSpell(193316)
end end
function RollTheBones.prototype:UpdateRollTheBones(event, unit, fromUpdate) function RollTheBones.prototype:UpdateRollTheBones(event, unit)
if unit and unit ~= self.unit then if unit and unit ~= self.unit then
return return
end end
local now = GetTime() local now = GetTime()
local remaining = nil local remaining = nil
local fromUpdate = event == "internal"
if not fromUpdate then if not fromUpdate then
rtbDuration, remaining, rtbCount = self:GetBuffDuration(self.unit, RtBSet) rtbDuration, remaining, rtbCount = self:GetBuffDuration(self.unit, RtBSet)

View File

@ -3,6 +3,8 @@ local Runes = IceCore_CreateClass(IceElement)
local IceHUD = _G.IceHUD local IceHUD = _G.IceHUD
local RunesReturnedByMaxPower = IceHUD.WowVer >= 70000
local CooldownFrame_SetTimer = CooldownFrame_SetTimer local CooldownFrame_SetTimer = CooldownFrame_SetTimer
if CooldownFrame_Set then if CooldownFrame_Set then
CooldownFrame_SetTimer = CooldownFrame_Set CooldownFrame_SetTimer = CooldownFrame_Set
@ -132,6 +134,9 @@ function Runes.prototype:GetOptions()
disabled = function() disabled = function()
return not self.moduleSettings.enabled return not self.moduleSettings.enabled
end, end,
hidden = function()
return not PlayerFrame_HideVehicleTexture
end,
order = 32 order = 32
} }
@ -265,7 +270,7 @@ end
-- OVERRIDE -- OVERRIDE
function Runes.prototype:Enable(core) function Runes.prototype:Enable(core)
if IceHUD.WowVer >= 70000 then if RunesReturnedByMaxPower then
self.numRunes = UnitPowerMax("player", SPELL_POWER_RUNES) self.numRunes = UnitPowerMax("player", SPELL_POWER_RUNES)
end end
@ -283,7 +288,9 @@ function Runes.prototype:Enable(core)
self:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED", "UpdateRuneColors") self:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED", "UpdateRuneColors")
end end
self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld") self:RegisterEvent("PLAYER_ENTERING_WORLD", "EnteringWorld")
self:RegisterEvent("UNIT_MAXPOWER", "CheckMaxNumRunes") if RunesReturnedByMaxPower then
self:RegisterEvent("UNIT_MAXPOWER", "CheckMaxNumRunes")
end
if (self.moduleSettings.hideBlizz) then if (self.moduleSettings.hideBlizz) then
self:HideBlizz() self:HideBlizz()
@ -577,6 +584,10 @@ local function hook_playerframe()
end end
function Runes.prototype:HideBlizz() function Runes.prototype:HideBlizz()
if not PlayerFrame_HideVehicleTexture then
return
end
RuneFrame:Hide() RuneFrame:Hide()
RuneFrame:UnregisterAllEvents() RuneFrame:UnregisterAllEvents()

View File

@ -277,7 +277,7 @@ end
function SliceAndDice.prototype:MyOnUpdate() function SliceAndDice.prototype:MyOnUpdate()
SliceAndDice.super.prototype.MyOnUpdate(self) SliceAndDice.super.prototype.MyOnUpdate(self)
if self.bUpdateSnd then if self.bUpdateSnd then
self:UpdateSliceAndDice(nil, self.unit, true) self:UpdateSliceAndDice("internal", self.unit)
end end
if self.target or self.moduleSettings.bShowWithNoTarget then if self.target or self.moduleSettings.bShowWithNoTarget then
self:UpdateDurationBar() self:UpdateDurationBar()
@ -312,13 +312,14 @@ local function ShouldHide()
-- with different durations -- with different durations
end end
function SliceAndDice.prototype:UpdateSliceAndDice(event, unit, fromUpdate) function SliceAndDice.prototype:UpdateSliceAndDice(event, unit)
if unit and unit ~= self.unit then if unit and unit ~= self.unit then
return return
end end
local now = GetTime() local now = GetTime()
local remaining = nil local remaining = nil
local fromUpdate = event == "internal"
if not fromUpdate or IceHUD.WowVer < 30000 then if not fromUpdate or IceHUD.WowVer < 30000 then
sndDuration, remaining = self:GetBuffDuration(self.unit, sndBuffName) sndDuration, remaining = self:GetBuffDuration(self.unit, sndBuffName)

View File

@ -375,11 +375,12 @@ end
function TargetCC.prototype:MyOnUpdate() function TargetCC.prototype:MyOnUpdate()
TargetCC.super.prototype.MyOnUpdate(self) TargetCC.super.prototype.MyOnUpdate(self)
self:UpdateTargetDebuffs(nil, self.unit, true) self:UpdateTargetDebuffs("internal", self.unit)
end end
function TargetCC.prototype:UpdateTargetDebuffs(event, unit, isUpdate) function TargetCC.prototype:UpdateTargetDebuffs(event, unit)
local name, duration, remaining local name, duration, remaining
local isUpdate = event == "internal"
if not isUpdate or not self.lastUpdateTime then if not isUpdate or not self.lastUpdateTime then
self.debuffName, self.debuffDuration, self.debuffRemaining = self:GetMaxDebuffDuration(self.unit, self.debuffList) self.debuffName, self.debuffDuration, self.debuffRemaining = self:GetMaxDebuffDuration(self.unit, self.debuffList)

View File

@ -191,11 +191,12 @@ end
function TargetInvuln.prototype:MyOnUpdate() function TargetInvuln.prototype:MyOnUpdate()
TargetInvuln.super.prototype.MyOnUpdate(self) TargetInvuln.super.prototype.MyOnUpdate(self)
self:UpdateTargetBuffs(nil, self.unit, true) self:UpdateTargetBuffs("internal", self.unit)
end end
function TargetInvuln.prototype:UpdateTargetBuffs(event, unit, isUpdate) function TargetInvuln.prototype:UpdateTargetBuffs(event, unit)
local name, duration, remaining local name, duration, remaining
local isUpdate = event == "internal"
if not isUpdate or not self.lastUpdateTime then if not isUpdate or not self.lastUpdateTime then
self.buffName, self.buffDuration, self.buffRemaining = self:GetMaxbuffDuration(self.unit, self.buffList) self.buffName, self.buffDuration, self.buffRemaining = self:GetMaxbuffDuration(self.unit, self.buffList)

View File

@ -1,14 +1,14 @@
# Changelog # Changelog
v1.13.17.1: v1.14.2:
- Fixed Priests hanging on login on the retail client. - Fix CC and Invuln modules not showing immediately when they should.
v1.13.17: v1.14.1:
- Internal maintainability updates. There are so many versions of the game now, updates need to be as easy and safe as possible. - Fix Hide Party feature on pre-10.0 clients.
- Improved reliability of Slice-n-Dice predicted length when changing talents.
- Improved various modules's ability to respond to the player's maximum power type changing (going from 5 max combo points to 6, for example). v1.14.0:
- Fixed invalid texture layers specified on a variety of textures (10.0 fix).
- Removed HolyPowerNumeric text from the configuration options of several modules that it didn't belong with. - 10.0 compatibility
- Fixed combo points in Classic Era clients. - Renamed Anima Charged combo points to Charged, and removed specific references to Kyrian.