diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cf1460e..a9a91c1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,6 +23,10 @@ jobs: - uses: BigWigsMods/packager@master with: - args: -g 1.13.6 + args: -g classic + + - uses: BigWigsMods/packager@master + with: + args: -g bc - uses: BigWigsMods/packager@master diff --git a/BigDebuffs.lua b/BigDebuffs.lua index 0978623..08863d0 100755 --- a/BigDebuffs.lua +++ b/BigDebuffs.lua @@ -896,12 +896,15 @@ function BigDebuffs:OnEnable() self:RegisterEvent("NAME_PLATE_UNIT_ADDED") self:RegisterEvent("NAME_PLATE_UNIT_REMOVED") - if WOW_PROJECT_ID ~= WOW_PROJECT_CLASSIC then + if WOW_PROJECT_ID == WOW_PROJECT_MAINLINE then self:RegisterEvent("PLAYER_TALENT_UPDATE") - self:RegisterEvent("PLAYER_FOCUS_CHANGED") self:PLAYER_TALENT_UPDATE() end + if WOW_PROJECT_ID ~= WOW_PROJECT_CLASSIC then + self:RegisterEvent("PLAYER_FOCUS_CHANGED") + end + InsertTestDebuff(8122, "Magic") -- Psychic Scream InsertTestDebuff(408, nil) -- Kidney Shot InsertTestDebuff(1766, nil) -- Kick @@ -1071,7 +1074,7 @@ hooksecurefunc("CompactUnitFrame_UpdateAll", function(frame) end end) -if WOW_PROJECT_ID ~= WOW_PROJECT_CLASSIC then +if WOW_PROJECT_ID == WOW_PROJECT_MAINLINE then function BigDebuffs:PLAYER_TALENT_UPDATE() local specID = GetSpecializationInfo(GetSpecialization() or 1) self.specDispel = specID and self.specDispelTypes[specID] and self.specDispelTypes[specID] @@ -1304,183 +1307,7 @@ local function CompactUnitFrame_UtilSetDebuff(debuffFrame, unit, index, filter, debuffFrame:Show(); end -if WOW_PROJECT_ID == WOW_PROJECT_CLASSIC then - local Default_CompactUnitFrame_UtilIsPriorityDebuff = CompactUnitFrame_UtilIsPriorityDebuff - - local function CompactUnitFrame_UtilIsPriorityDebuff(...) - local _,_,_,_,_,_,_,_,_, spellId = UnitDebuff(...) - return BigDebuffs:IsPriorityDebuff(spellId) or Default_CompactUnitFrame_UtilIsPriorityDebuff(...) - end - - local Default_SpellGetVisibilityInfo = SpellGetVisibilityInfo - - local function CompactUnitFrame_UtilShouldDisplayBuff(unit, index, filter) - local name, icon, count, debuffType, duration, expirationTime, unitCaster, canStealOrPurge, _, spellId, canApplyAura = UnitBuff(unit, index, filter); - - local hasCustom, alwaysShowMine, showForMySpec = SpellGetVisibilityInfo(spellId, UnitAffectingCombat("player") and "RAID_INCOMBAT" or "RAID_OUTOFCOMBAT"); - - local showAllClassBuffs = BigDebuffs.db.profile.raidFrames.showAllClassBuffs and canApplyAura - - if ( hasCustom ) then - return showForMySpec or (alwaysShowMine and (showAllClassBuffs or unitCaster == "player" or unitCaster == "pet" or unitCaster == "vehicle")); - else - return (showAllClassBuffs or unitCaster == "player" or unitCaster == "pet" or unitCaster == "vehicle") and canApplyAura and not SpellIsSelfBuff(spellId); - end - end - - local function CompactUnitFrame_UtilShouldDisplayDebuff(unit, index, filter) - local name, icon, count, debuffType, duration, expirationTime, unitCaster, canStealOrPurge, _, spellId, canApplyAura, isBossAura = UnitDebuff(unit, index, filter); - - local hasCustom, alwaysShowMine, showForMySpec = SpellGetVisibilityInfo(spellId, UnitAffectingCombat("player") and "RAID_INCOMBAT" or "RAID_OUTOFCOMBAT"); - - local showAllClassBuffs = BigDebuffs.db.profile.raidFrames.showAllClassBuffs and canApplyAura - - if ( hasCustom ) then - return showForMySpec or (alwaysShowMine and (showAllClassBuffs or unitCaster == "player" or unitCaster == "pet" or unitCaster == "vehicle") ); --Would only be "mine" in the case of something like forbearance. - else - return true; - end - end - - hooksecurefunc("CompactUnitFrame_UpdateDebuffs", function(frame) - if ( not frame.debuffFrames or not frame.optionTable.displayDebuffs ) then - CompactUnitFrame_HideAllDebuffs(frame); - return; - end - - local index = 1; - local frameNum = 1; - local filter = nil; - local maxDebuffs = frame.maxDebuffs; - --Show both Boss buffs & debuffs in the debuff location - --First, we go through all the debuffs looking for any boss flagged ones. - while ( frameNum <= maxDebuffs ) do - local debuffName = UnitDebuff(frame.displayedUnit, index, filter); - if ( debuffName ) then - if ( CompactUnitFrame_UtilIsBossAura(frame.displayedUnit, index, filter, false) ) then - local debuffFrame = frame.debuffFrames[frameNum]; - CompactUnitFrame_UtilSetDebuff(debuffFrame, frame.displayedUnit, index, filter, true, false); - frameNum = frameNum + 1; - --Boss debuffs are about twice as big as normal debuffs, so display one less. - local bossDebuffScale = (debuffFrame.baseSize + BOSS_DEBUFF_SIZE_INCREASE)/debuffFrame.baseSize - maxDebuffs = maxDebuffs - (bossDebuffScale - 1); - end - else - break; - end - index = index + 1; - end - --Then we go through all the buffs looking for any boss flagged ones. - index = 1; - while ( frameNum <= maxDebuffs ) do - local debuffName = UnitBuff(frame.displayedUnit, index, filter); - if ( debuffName ) then - if ( CompactUnitFrame_UtilIsBossAura(frame.displayedUnit, index, filter, true) ) then - local debuffFrame = frame.debuffFrames[frameNum]; - CompactUnitFrame_UtilSetDebuff(debuffFrame, frame.displayedUnit, index, filter, true, true); - frameNum = frameNum + 1; - --Boss debuffs are about twice as big as normal debuffs, so display one less. - local bossDebuffScale = (debuffFrame.baseSize + BOSS_DEBUFF_SIZE_INCREASE)/debuffFrame.baseSize - maxDebuffs = maxDebuffs - (bossDebuffScale - 1); - end - else - break; - end - index = index + 1; - end - - --Now we go through the debuffs with a priority (e.g. Weakened Soul and Forbearance) - index = 1; - while ( frameNum <= maxDebuffs ) do - local debuffName = UnitDebuff(frame.displayedUnit, index, filter); - if ( debuffName ) then - if ( CompactUnitFrame_UtilIsPriorityDebuff(frame.displayedUnit, index, filter) ) then - local debuffFrame = frame.debuffFrames[frameNum]; - CompactUnitFrame_UtilSetDebuff(debuffFrame, frame.displayedUnit, index, filter, false, false); - frameNum = frameNum + 1; - end - else - break; - end - index = index + 1; - end - - if ( frame.optionTable.displayOnlyDispellableDebuffs ) then - filter = "RAID"; - end - - index = 1; - --Now, we display all normal debuffs. - if ( frame.optionTable.displayNonBossDebuffs ) then - while ( frameNum <= maxDebuffs ) do - local debuffName = UnitDebuff(frame.displayedUnit, index, filter); - if ( debuffName ) then - if ( CompactUnitFrame_UtilShouldDisplayDebuff(frame.displayedUnit, index, filter) and not CompactUnitFrame_UtilIsBossAura(frame.displayedUnit, index, filter, false) and - not CompactUnitFrame_UtilIsPriorityDebuff(frame.displayedUnit, index, filter)) then - local debuffFrame = frame.debuffFrames[frameNum]; - CompactUnitFrame_UtilSetDebuff(debuffFrame, frame.displayedUnit, index, filter, false, false); - frameNum = frameNum + 1; - end - else - break; - end - index = index + 1; - end - end - - for i=frameNum, frame.maxDebuffs do - local debuffFrame = frame.debuffFrames[i]; - debuffFrame:Hide(); - end - - BigDebuffs:ShowBigDebuffs(frame) - end) - - -- Show extra buffs - hooksecurefunc("CompactUnitFrame_UpdateBuffs", function(frame) - if ( not frame.buffFrames or not frame.optionTable.displayBuffs ) then - CompactUnitFrame_HideAllBuffs(frame); - return; - end - - if not UnitIsPlayer(frame.displayedUnit) then - return - end - - if (not BigDebuffs.db.profile.raidFrames.increaseBuffs) and - (not BigDebuffs.db.profile.raidFrames.showAllClassBuffs) - then - return - end - - local maxBuffs = BigDebuffs.db.profile.raidFrames.increaseBuffs and MAX_BUFFS or frame.maxBuffs - - local index = 1; - local frameNum = 1; - local filter = nil; - while ( frameNum <= maxBuffs ) do - local buffName = UnitBuff(frame.displayedUnit, index, filter); - if ( buffName ) then - if ( CompactUnitFrame_UtilShouldDisplayBuff(frame.displayedUnit, index, filter) and - not CompactUnitFrame_UtilIsBossAura(frame.displayedUnit, index, filter, true) ) - then - local buffFrame = frame.buffFrames[frameNum]; - if buffFrame then - CompactUnitFrame_UtilSetBuff(buffFrame, frame.displayedUnit, index, filter); - frameNum = frameNum + 1; - end - end - else - break; - end - index = index + 1; - end - for i=frameNum, maxBuffs do - local buffFrame = frame.buffFrames[i]; - if buffFrame then buffFrame:Hide() end - end - end) -else +if WOW_PROJECT_ID == WOW_PROJECT_MAINLINE then local Default_CompactUnitFrame_Util_IsPriorityDebuff = CompactUnitFrame_Util_IsPriorityDebuff local function CompactUnitFrame_Util_IsPriorityDebuff(...) local default = Default_CompactUnitFrame_Util_IsPriorityDebuff(...) @@ -1677,6 +1504,182 @@ else BigDebuffs:ShowBigDebuffs(frame) end) +else + local Default_CompactUnitFrame_UtilIsPriorityDebuff = CompactUnitFrame_UtilIsPriorityDebuff + + local function CompactUnitFrame_UtilIsPriorityDebuff(...) + local _,_,_,_,_,_,_,_,_, spellId = UnitDebuff(...) + return BigDebuffs:IsPriorityDebuff(spellId) or Default_CompactUnitFrame_UtilIsPriorityDebuff(...) + end + + local Default_SpellGetVisibilityInfo = SpellGetVisibilityInfo + + local function CompactUnitFrame_UtilShouldDisplayBuff(unit, index, filter) + local name, icon, count, debuffType, duration, expirationTime, unitCaster, canStealOrPurge, _, spellId, canApplyAura = UnitBuff(unit, index, filter); + + local hasCustom, alwaysShowMine, showForMySpec = SpellGetVisibilityInfo(spellId, UnitAffectingCombat("player") and "RAID_INCOMBAT" or "RAID_OUTOFCOMBAT"); + + local showAllClassBuffs = BigDebuffs.db.profile.raidFrames.showAllClassBuffs and canApplyAura + + if ( hasCustom ) then + return showForMySpec or (alwaysShowMine and (showAllClassBuffs or unitCaster == "player" or unitCaster == "pet" or unitCaster == "vehicle")); + else + return (showAllClassBuffs or unitCaster == "player" or unitCaster == "pet" or unitCaster == "vehicle") and canApplyAura and not SpellIsSelfBuff(spellId); + end + end + + local function CompactUnitFrame_UtilShouldDisplayDebuff(unit, index, filter) + local name, icon, count, debuffType, duration, expirationTime, unitCaster, canStealOrPurge, _, spellId, canApplyAura, isBossAura = UnitDebuff(unit, index, filter); + + local hasCustom, alwaysShowMine, showForMySpec = SpellGetVisibilityInfo(spellId, UnitAffectingCombat("player") and "RAID_INCOMBAT" or "RAID_OUTOFCOMBAT"); + + local showAllClassBuffs = BigDebuffs.db.profile.raidFrames.showAllClassBuffs and canApplyAura + + if ( hasCustom ) then + return showForMySpec or (alwaysShowMine and (showAllClassBuffs or unitCaster == "player" or unitCaster == "pet" or unitCaster == "vehicle") ); --Would only be "mine" in the case of something like forbearance. + else + return true; + end + end + + hooksecurefunc("CompactUnitFrame_UpdateDebuffs", function(frame) + if ( not frame.debuffFrames or not frame.optionTable.displayDebuffs ) then + CompactUnitFrame_HideAllDebuffs(frame); + return; + end + + local index = 1; + local frameNum = 1; + local filter = nil; + local maxDebuffs = frame.maxDebuffs; + --Show both Boss buffs & debuffs in the debuff location + --First, we go through all the debuffs looking for any boss flagged ones. + while ( frameNum <= maxDebuffs ) do + local debuffName = UnitDebuff(frame.displayedUnit, index, filter); + if ( debuffName ) then + if ( CompactUnitFrame_UtilIsBossAura(frame.displayedUnit, index, filter, false) ) then + local debuffFrame = frame.debuffFrames[frameNum]; + CompactUnitFrame_UtilSetDebuff(debuffFrame, frame.displayedUnit, index, filter, true, false); + frameNum = frameNum + 1; + --Boss debuffs are about twice as big as normal debuffs, so display one less. + local bossDebuffScale = (debuffFrame.baseSize + BOSS_DEBUFF_SIZE_INCREASE)/debuffFrame.baseSize + maxDebuffs = maxDebuffs - (bossDebuffScale - 1); + end + else + break; + end + index = index + 1; + end + --Then we go through all the buffs looking for any boss flagged ones. + index = 1; + while ( frameNum <= maxDebuffs ) do + local debuffName = UnitBuff(frame.displayedUnit, index, filter); + if ( debuffName ) then + if ( CompactUnitFrame_UtilIsBossAura(frame.displayedUnit, index, filter, true) ) then + local debuffFrame = frame.debuffFrames[frameNum]; + CompactUnitFrame_UtilSetDebuff(debuffFrame, frame.displayedUnit, index, filter, true, true); + frameNum = frameNum + 1; + --Boss debuffs are about twice as big as normal debuffs, so display one less. + local bossDebuffScale = (debuffFrame.baseSize + BOSS_DEBUFF_SIZE_INCREASE)/debuffFrame.baseSize + maxDebuffs = maxDebuffs - (bossDebuffScale - 1); + end + else + break; + end + index = index + 1; + end + + --Now we go through the debuffs with a priority (e.g. Weakened Soul and Forbearance) + index = 1; + while ( frameNum <= maxDebuffs ) do + local debuffName = UnitDebuff(frame.displayedUnit, index, filter); + if ( debuffName ) then + if ( CompactUnitFrame_UtilIsPriorityDebuff(frame.displayedUnit, index, filter) ) then + local debuffFrame = frame.debuffFrames[frameNum]; + CompactUnitFrame_UtilSetDebuff(debuffFrame, frame.displayedUnit, index, filter, false, false); + frameNum = frameNum + 1; + end + else + break; + end + index = index + 1; + end + + if ( frame.optionTable.displayOnlyDispellableDebuffs ) then + filter = "RAID"; + end + + index = 1; + --Now, we display all normal debuffs. + if ( frame.optionTable.displayNonBossDebuffs ) then + while ( frameNum <= maxDebuffs ) do + local debuffName = UnitDebuff(frame.displayedUnit, index, filter); + if ( debuffName ) then + if ( CompactUnitFrame_UtilShouldDisplayDebuff(frame.displayedUnit, index, filter) and not CompactUnitFrame_UtilIsBossAura(frame.displayedUnit, index, filter, false) and + not CompactUnitFrame_UtilIsPriorityDebuff(frame.displayedUnit, index, filter)) then + local debuffFrame = frame.debuffFrames[frameNum]; + CompactUnitFrame_UtilSetDebuff(debuffFrame, frame.displayedUnit, index, filter, false, false); + frameNum = frameNum + 1; + end + else + break; + end + index = index + 1; + end + end + + for i=frameNum, frame.maxDebuffs do + local debuffFrame = frame.debuffFrames[i]; + debuffFrame:Hide(); + end + + BigDebuffs:ShowBigDebuffs(frame) + end) + + -- Show extra buffs + hooksecurefunc("CompactUnitFrame_UpdateBuffs", function(frame) + if ( not frame.buffFrames or not frame.optionTable.displayBuffs ) then + CompactUnitFrame_HideAllBuffs(frame); + return; + end + + if not UnitIsPlayer(frame.displayedUnit) then + return + end + + if (not BigDebuffs.db.profile.raidFrames.increaseBuffs) and + (not BigDebuffs.db.profile.raidFrames.showAllClassBuffs) + then + return + end + + local maxBuffs = BigDebuffs.db.profile.raidFrames.increaseBuffs and MAX_BUFFS or frame.maxBuffs + + local index = 1; + local frameNum = 1; + local filter = nil; + while ( frameNum <= maxBuffs ) do + local buffName = UnitBuff(frame.displayedUnit, index, filter); + if ( buffName ) then + if ( CompactUnitFrame_UtilShouldDisplayBuff(frame.displayedUnit, index, filter) and + not CompactUnitFrame_UtilIsBossAura(frame.displayedUnit, index, filter, true) ) + then + local buffFrame = frame.buffFrames[frameNum]; + if buffFrame then + CompactUnitFrame_UtilSetBuff(buffFrame, frame.displayedUnit, index, filter); + frameNum = frameNum + 1; + end + end + else + break; + end + index = index + 1; + end + for i=frameNum, maxBuffs do + local buffFrame = frame.buffFrames[i]; + if buffFrame then buffFrame:Hide() end + end + end) end function BigDebuffs:ShowBigDebuffs(frame) diff --git a/BigDebuffs.toc b/BigDebuffs.toc index 16e0baa..eed83d1 100644 --- a/BigDebuffs.toc +++ b/BigDebuffs.toc @@ -1,9 +1,7 @@ -#@retail@ ## Interface: 90005 -#@end-retail@ -#@non-retail@ -# ## Interface: 11306 -#@end-non-retail@ +## Interface-Retail: 90005 +## Interface-Classic: 11307 +## Interface-BC: 20501 ## Title: BigDebuffs ## Notes: Increases the debuff size of crowd control effects on the Blizzard raid frames ## Version: @project-version@ @@ -32,6 +30,7 @@ Libs\LibClassicDurations\LibClassicDurations.xml Locales\Locales.xml BigDebuffs.xml Retail.lua +BurningCrusade.lua Classic.lua BigDebuffs.lua Options.lua diff --git a/BurningCrusade.lua b/BurningCrusade.lua new file mode 100644 index 0000000..1f0f91c --- /dev/null +++ b/BurningCrusade.lua @@ -0,0 +1,360 @@ +local addonName, addon = ... + +if WOW_PROJECT_ID ~= WOW_PROJECT_BURNING_CRUSADE_CLASSIC then return end + +local BUFF_DEFENSIVE = "buffs_defensive" +local BUFF_OFFENSIVE = "buffs_offensive" +local BUFF_OTHER = "buffs_other" +local INTERRUPT = "interrupts" +local CROWD_CONTROL = "cc" +local ROOT = "roots" +local IMMUNITY = "immunities" + +addon.Units = { + "player", + "pet", + "target", + "focus", + "party1", + "party2", + "party3", + "party4", + "arena1", + "arena2", + "arena3", + "arena4", + "arena5", +} + +-- Show one of these when a big debuff is displayed +addon.WarningDebuffs = { + 30108, -- Unstable Affliction + 30404, -- Unstable Affliction + 30405, -- Unstable Affliction + 34914, -- Vampiric Touch +} + +-- Make sure we always see these debuffs, but don't make them bigger +addon.PriorityDebuffs = { + 770, -- Faerie Fire + 778, -- Faerie Fire + 9749, -- Faerie Fire + 9907, -- Faerie Fire + 12294, -- Mortal Strike + 21551, -- Mortal Strike + 21552, -- Mortal Strike + 21553, -- Mortal Strike + 9035, -- Hex of Weakness + 19281, -- Hex of Weakness + 19282, -- Hex of Weakness + 19283, -- Hex of Weakness + 19284, -- Hex of Weakness + 19285, -- Hex of Weakness + 23230, -- Blood Fury Debuff + 23605, -- Nightfall, Spell Vulnerability +} + +addon.Spells = { + + -- Racials + + [20600] = { type = BUFF_OFFENSIVE }, -- Perception + [7744] = { type = BUFF_OFFENSIVE }, -- Will of the Forsaken + [20549] = { type = CROWD_CONTROL }, -- War Stomp + [20594] = { type = BUFF_OFFENSIVE }, -- Stoneform + + -- Other + + [23451] = { type = BUFF_OFFENSIVE }, -- Battleground Speed buff + [23493] = { type = BUFF_DEFENSIVE }, -- Battleground Heal buff + [23505] = { type = BUFF_OFFENSIVE }, -- Battleground Damage buff + [6615] = { type = BUFF_OFFENSIVE }, -- Free Action Potion + [24364] = { type = BUFF_OFFENSIVE }, -- Living Action Potion + [3169] = { type = IMMUNITY }, -- Limited Invulnerability Potion + [16621] = { type = IMMUNITY }, -- Invulnerable Mail + [1090] = { type = CROWD_CONTROL }, -- Magic Dust + [13327] = { type = CROWD_CONTROL }, -- Reckless Charge + [835] = { type = CROWD_CONTROL }, -- Tidal Charm + [11359] = { type = BUFF_OFFENSIVE }, -- Restorative Potion + [5024] = { type = BUFF_OFFENSIVE }, -- Skull of Impending Doom + [2379] = { type = BUFF_OFFENSIVE }, -- Swiftness Potion + [5134] = { type = CROWD_CONTROL }, -- Flash Bomb + [23097] = { type = BUFF_OFFENSIVE }, -- Fire Reflector + [23131] = { type = BUFF_OFFENSIVE }, -- Frost Reflector + [23132] = { type = BUFF_OFFENSIVE }, -- Shadow Reflector + [19769] = { type = CROWD_CONTROL }, -- Thorium Grenade + [4068] = { type = CROWD_CONTROL }, -- Iron Grenade + [23506] = { type = BUFF_DEFENSIVE }, -- Arena Grand Master trinket + [29506] = { type = BUFF_DEFENSIVE }, -- Burrower's Shell trinket + [12733] = { type = BUFF_OFFENSIVE }, -- Blacksmith trinket, Fear immunity + [15753] = { type = CROWD_CONTROL }, -- Linken's Boomerang Stun + [14530] = { type = BUFF_OFFENSIVE }, -- Nifty Stopwatch + [13237] = { type = CROWD_CONTROL }, -- Goblin Mortar trinket + [14253] = { type = BUFF_OFFENSIVE }, -- Black Husk Shield + [9175] = { type = BUFF_OFFENSIVE }, -- Swift Boots + [13141] = { type = BUFF_OFFENSIVE }, -- Gnomish Rocket Boots + [8892] = { type = BUFF_OFFENSIVE }, -- Goblin Rocket Boots + [9774] = { type = BUFF_OFFENSIVE }, -- Spider Belt & Ornate Mithril Boots + [18798] = { type = CROWD_CONTROL }, -- Freezing Band + [22734] = { type = BUFF_OTHER }, -- Drink + [23605] = { type = BUFF_OTHER }, -- Nightfall, Spell Vulnerability + [13494] = { type = BUFF_OFFENSIVE }, -- Manual Crowd Pummeler Haste buff + + -- Interrupts + + [15752] = { type = INTERRUPT, duration = 10 }, -- Linken's Boomerang Disarm + [19244] = { type = INTERRUPT, duration = 6 }, -- Spell Lock - Rank 1 (Warlock) + [19647] = { parent = 19244, duration = 8 }, -- Spell Lock - Rank 2 (Warlock) + [8042] = { type = INTERRUPT, duration = 2 }, -- Earth Shock (Shaman) + [8044] = { parent = 8042 }, + [8045] = { parent = 8042 }, + [8046] = { parent = 8042 }, + [10412] = { parent = 8042 }, + [10413] = { parent = 8042 }, + [10414] = { parent = 8042 }, + [16979] = { type = INTERRUPT, duration = 4 }, -- Feral Charge (Druid) + [2139] = { type = INTERRUPT, duration = 10 }, -- Counterspell (Mage) + [1766] = { type = INTERRUPT, duration = 5 }, -- Kick (Rogue) + [1767] = { parent = 1766 }, + [1768] = { parent = 1766 }, + [1769] = { parent = 1766 }, + [14251] = { type = INTERRUPT, duration = 6 }, -- Riposte (Rogue) + [6552] = { type = INTERRUPT, duration = 4 }, -- Pummel + [6554] = { parent = 6552 }, + [72] = { type = INTERRUPT, duration = 6 }, -- Shield Bash + [1671] = { parent = 72 }, + [1672] = { parent = 72 }, + + -- Priest + + [17] = { type = BUFF_DEFENSIVE }, -- Power Word: Shield + [592] = { parent = 17 }, -- Power Word: Shield + [600] = { parent = 17 }, + [3747] = { parent = 17 }, + [6065] = { parent = 17 }, + [6066] = { parent = 17 }, + [10898] = { parent = 17 }, + [10899] = { parent = 17 }, + [10900] = { parent = 17 }, + [10901] = { parent = 17 }, + [605] = { type = CROWD_CONTROL }, -- Mind Control + [10911] = { parent = 605 }, + [10912] = { parent = 605 }, + [8122] = { type = CROWD_CONTROL }, -- Psychic Scream + [8124] = { parent = 8122 }, + [10888] = { parent = 8122 }, + [10890] = { parent = 8122 }, + [10060] = { type = BUFF_OFFENSIVE }, -- Power Infusion + [15269] = { type = CROWD_CONTROL }, -- Blackout + [15487] = { type = CROWD_CONTROL }, -- Silence + [14892] = { type = BUFF_DEFENSIVE }, -- Inspiration + [15362] = { parent = 14892 }, + [15363] = { parent = 14892 }, + + -- Warlock + + [24259] = { type = CROWD_CONTROL }, -- Spell Lock Silence + [6358] = { type = CROWD_CONTROL }, -- Seduction + [5782] = { type = CROWD_CONTROL }, -- Fear + [6213] = { parent = 5782 }, + [6215] = { parent = 5782 }, + [5484] = { type = CROWD_CONTROL }, -- Howl of Terror + [17928] = { parent = 5484 }, + [710] = { type = CROWD_CONTROL }, -- Banish + [18647] = { parent = 710 }, + [6789] = { type = CROWD_CONTROL }, -- Death Coil + [17925] = { parent = 6789 }, + [17926] = { parent = 6789 }, + [6229] = { type = BUFF_DEFENSIVE }, -- Shadow Ward + [11739] = { parent = 6229 }, + [11740] = { parent = 6229 }, + [28610] = { parent = 6229 }, + [7812] = { type = BUFF_DEFENSIVE }, -- Sacrifice + [19438] = { parent = 7812 }, + [19440] = { parent = 7812 }, + [19441] = { parent = 7812 }, + [19442] = { parent = 7812 }, + [19443] = { parent = 7812 }, + [18093] = { type = CROWD_CONTROL }, -- Pyroclasm + [18223] = { type = ROOT }, -- Curse of Exhaustion + [18310] = { parent = 18223 }, + [18313] = { parent = 18223 }, + [1714] = { type = ROOT }, -- Curse of Tongues + [11719] = { parent = 1714 }, + + -- Shaman + + [8178] = { type = IMMUNITY }, -- Grounding Totem Effect + [16188] = { type = BUFF_DEFENSIVE }, -- Nature's Swiftness + [12548] = { type = ROOT }, -- Frost Shock + + -- Paladin + + [1022] = { type = IMMUNITY },-- Blessing of Protection + [5599] = { parent = 1022 }, + [10278] = { parent = 1022 }, + [498] = { type = IMMUNITY }, -- Divine Shield + [5573] = { parent = 498 }, + [642] = { parent = 498 }, + [1020] = { parent = 498 }, + [853] = { type = CROWD_CONTROL }, -- Hammer of Justice + [5588] = { parent = 853 }, + [5589] = { parent = 853 }, + [10308] = { parent = 853 }, + [1044] = { type = BUFF_DEFENSIVE }, -- Blessing of Freedom + [20066] = { type = CROWD_CONTROL }, -- Repentance + [20170] = { type = CROWD_CONTROL }, -- Seal of Justice stun + [6940] = { type = BUFF_DEFENSIVE }, -- Blessing of Sacrifice + [20729] = { parent = 6940 }, + + -- Hunter + + [13159] = { type = BUFF_OFFENSIVE }, -- Aspect of the Pack + [5118] = { parent = 13159 }, -- Aspect of the Cheetah + [1513] = { type = CROWD_CONTROL }, -- Scare Beast + [14326] = { parent = 1513 }, + [14327] = { parent = 1513 }, + [19410] = { type = CROWD_CONTROL }, -- Concussive Shot Stun + [3045] = { type = BUFF_OFFENSIVE }, -- Rapid Fire + [19263] = { type = BUFF_DEFENSIVE }, -- Deterrence + [19574] = { type = BUFF_OFFENSIVE }, -- Bestial Wrath + [3355] = { type = CROWD_CONTROL }, -- Freezing Trap + [14308] = { parent = 3355 }, + [14309] = { parent = 3355 }, + [19229] = { type = ROOT }, -- Wing Clip Root + [19306] = { type = ROOT }, -- Counterattack Root + [20909] = { parent = 19306 }, + [20910] = { parent = 19306 }, + [19386] = { type = CROWD_CONTROL }, --Wyvern Sting + [24132] = { parent = 19386 }, + [24133] = { parent = 19386 }, + [19185] = { type = ROOT }, -- Entrapment + [19503] = { type = CROWD_CONTROL }, -- Scatter Shot + [25999] = { type = ROOT }, -- Boar Charge + [3034] = { type = ROOT }, -- Viper Sting + [14279] = { parent = 3034 }, + [14280] = { parent = 3034 }, + + -- Druid + + [22812] = { type = BUFF_DEFENSIVE }, -- Barkskin + [339] = { type = ROOT }, -- Entangling Roots + [1062] = { parent = 339 }, + [5195] = { parent = 339 }, + [5196] = { parent = 339 }, + [9852] = { parent = 339 }, + [9853] = { parent = 339 }, + [19970] = { parent = 339 }, -- Nature's Grasp Rank 6 + [19971] = { parent = 339 }, -- Nature's Grasp Rank 5 + [19972] = { parent = 339 }, -- Nature's Grasp Rank 4 + [19973] = { parent = 339 }, -- Nature's Grasp Rank 3 + [19974] = { parent = 339 }, -- Nature's Grasp Rank 2 + [19975] = { parent = 339 }, -- Nature's Grasp Rank 1 + [2637] = { type = CROWD_CONTROL }, -- Hibernate + [18657] = { parent = 2637 }, + [18658] = { parent = 2637 }, + [29166] = { type = BUFF_OFFENSIVE }, -- Innervate + [9005] = { type = CROWD_CONTROL }, -- Pounce Stun + [9823] = { parent = 9005 }, + [9827] = { parent = 9005 }, + [16922] = { type = CROWD_CONTROL }, -- Starfire Stun + [5211] = { type = CROWD_CONTROL}, -- Bash + [6798] = { parent = 5211 }, + [8983] = { parent = 5211 }, + -- [16979] = { type = ROOT }, -- Feral Charge TODO: invalid spellId, root effect must be different than the interrupt + [1850] = { type = BUFF_OFFENSIVE }, -- Dash + [9821] = { parent = 1850 }, + [16689] = { type = BUFF_OFFENSIVE }, -- Nature's Grasp Buff + [16810] = { parent = 16689 }, + [16811] = { parent = 16689 }, + [16812] = { parent = 16689 }, + [16813] = { parent = 16689 }, + [17329] = { parent = 16689 }, + [770] = { type = BUFF_OTHER }, -- Faerie Fire + [778] = { parent = 770 }, + [9749] = { parent = 770 }, + [9907] = { parent = 770 }, + + -- Mage + + [18469] = { type = CROWD_CONTROL }, -- Improved Counterspell + [118] = { type = CROWD_CONTROL }, -- Polymorph + [12824] = { parent = 118 }, + [12825] = { parent = 118 }, + [12826] = { parent = 118 }, + [28270] = { parent = 118 }, + [28271] = { parent = 118 }, + [28272] = { parent = 118 }, + [11426] = { type = BUFF_DEFENSIVE }, -- Ice Barrier + [13031] = { parent = 11426 }, + [13032] = { parent = 11426 }, + [13033] = { parent = 11426 }, + [543] = { type = BUFF_DEFENSIVE }, -- Fire Ward + [8457] = { parent = 543 }, + [8458] = { parent = 543 }, + [10223] = { parent = 543 }, + [10225] = { parent = 543 }, + [6143] = { type = BUFF_DEFENSIVE }, -- Frost Ward + [8461] = { parent = 6143 }, + [8462] = { parent = 6143 }, + [10177] = { parent = 6143 }, + [28609] = { parent = 6143 }, + [12355] = { type = CROWD_CONTROL }, -- Impact Stun + [12494] = { type = ROOT }, -- Frostbite + [122] = { type = ROOT }, -- Frost Nova + [865] = { parent = 122 }, + [6131] = { parent = 122 }, + [10230] = { parent = 122 }, + [12042] = { type = BUFF_OFFENSIVE }, -- Arcane Power + [11958] = { type = IMMUNITY }, -- Ice Block + [12051] = { type = BUFF_OFFENSIVE }, -- Evocation + [1463] = { type = BUFF_DEFENSIVE }, -- Mana Shield + [8494] = { parent = 1463 }, + [8495] = { parent = 1463 }, + [10191] = { parent = 1463 }, + [10192] = { parent = 1463 }, + [10193] = { parent = 1463 }, + + -- Rogue + + [18425] = { type = CROWD_CONTROL }, -- Improved Kick + [13750] = { type = BUFF_OFFENSIVE}, -- Adrenaline Rush + [13877] = { type = BUFF_OFFENSIVE}, -- Blade Flurry + [1833] = { type = CROWD_CONTROL }, -- Cheap Shot + [408] = { type = CROWD_CONTROL }, -- Kidney Shot + [8643] = { parent = 408 }, + [2070] = { type = CROWD_CONTROL }, -- Sap + [6770] = { parent = 2070 }, + [11297] = { parent = 2070 }, + [2094] = { type = CROWD_CONTROL }, -- Blind + [2983] = { type = BUFF_OFFENSIVE }, -- Sprint + [8696] = { parent = 2983 }, + [11305] = { parent = 2983 }, + [5277] = { type = BUFF_DEFENSIVE }, -- Evasion + [1776] = { type = CROWD_CONTROL }, -- Gouge + [1777] = { parent = 1776 }, + [8629] = { parent = 1776 }, + [11285] = { parent = 1776 }, + [11286] = { parent = 1776 }, + [14278] = { type = BUFF_DEFENSIVE }, -- Ghostly Strike + [3409] = { type = ROOT }, -- Crippling Poison + [11201] = { parent = 3409 }, + + -- Warrior + + [18498] = { type = CROWD_CONTROL }, -- Improved Shield Bash + [20230] = { type = IMMUNITY }, -- Retaliation + [1719] = { type = BUFF_OFFENSIVE }, -- Recklessness + [871] = { type = BUFF_DEFENSIVE }, -- Shield Wall + [12328] = { type = BUFF_OFFENSIVE }, -- Death Wish + [23694] = { type = ROOT }, -- Improved Hamstring + [18499] = { type = BUFF_OFFENSIVE}, -- Berserker Rage + [20253] = { type = CROWD_CONTROL }, -- Intercept Stun + [20614] = { parent = 20253 }, + [20615] = { parent = 20253 }, + [12798] = { type = CROWD_CONTROL }, -- Revenge Stun + [12809] = { type = CROWD_CONTROL }, -- Concussion Blow + [7922] = { type = CROWD_CONTROL }, -- Charge Stun + [5530] = { type = CROWD_CONTROL }, -- Mace Spec Stun (Warrior & Rogue) + +} diff --git a/Options.lua b/Options.lua index e087796..cacef00 100755 --- a/Options.lua +++ b/Options.lua @@ -1975,7 +1975,7 @@ function BigDebuffs:SetupOptions() self.options.plugins.profiles = { profiles = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db) } - if WOW_PROJECT_ID ~= WOW_PROJECT_CLASSIC then + if WOW_PROJECT_ID == WOW_PROJECT_MAINLINE then local LibDualSpec = LibStub('LibDualSpec-1.0') LibDualSpec:EnhanceDatabase(self.db, "BigDebuffsDB") LibDualSpec:EnhanceOptions(self.options.plugins.profiles.profiles, self.db) diff --git a/README.md b/README.md index 8b0a9bb..61d9771 100644 --- a/README.md +++ b/README.md @@ -8,128 +8,5 @@ https://github.com/jordonwow/bigdebuffs/issues Submit a pull request: https://github.com/jordonwow/bigdebuffs/pulls -## v9.20 -* Spell updates - -## v9.19 -* Spell updates -* Manually anchored party frames should no longer show while in a raid group larger than 5 players - -## v9.18 -* Minor bug fix - -## v9.17 -* Add offset options - -## v9.16 -* Add option to adjust anchor point - -## v9.15 -* Add support for GladiusEx frames - -## v9.14 -* Fix for false icons sticking to nameplates - -## v9.13 -* Added Offensive Debuffs category (e.g. Colossus Smash, Dark Simulacrum, Devouring Plague) (#233) -Abilities that are used rotationally in PvE will by default not show on unitFrames & nameplates, this can easily be overwritten in options - -* Added tooltips to Spells (#243) -A few spells will not give proper tooltips (such as Grounding Totem) -Needs to be moused-over at least once before it will load the tooltip - -* Updated test debuffs -Added a few categories - -* Spell Updates -Recategorized some spells, added some soulbind traits - -## v9.12 -* Fix ElvUI Party/Player frames missplased icons - -## v9.11 -* TidyPlates support -* Fix Lightning Lasso - -## v9.10 -* Fixed Thoughtsteal - -## v9.9 -* Spell updates from Domzae - -## v9.8 -* Spell updates - -## v9.7 -* Spell updates from Domzae - -## v9.6 -* Update for Retail 9.0.1 -* Add Curse of Tongues -* Add Curse of Exhaustion -* Add Spell Vulnerability -* Add support for Threat Plates -* Add Nightfall -* Minor bug fixes - -## v9.5 -* Add Manual Crowd Pummeler -* Add Inspiration -* Add Blessing of Sacrifice -* Add Faerie Fire -* Fix ElvUI automatic anchor -* Minor bug fix - -## v9.4 -* Update for Classic 1.13.5 -* Add compatibility with NeatPlates -* Fix for Feral Interrupt -* Add Entrenched in Flame - -## v9.3 -* Minor bug fixes - -## v9.2 -* Minor bug fixes - -## v9.1 -* Minor bug fixes - -## v9.0 -* Add nameplate support (Thanks solaldunkel) -* Add Drink -* Add Freezing Band -* Add option to show buffs from other players of your class (Power Word: Fortitude, Weakened Soul, etc.) - -## v8.7 -* Update for Classic 1.13.4 -* Add Silence -* Fix Entangling Roots from Nature's Grasp -* Fix Maledict -* Add Forbidden Obsidian Claw - -## v8.6 -* Fix display of enemy buffs on classic -* Add Crippling Poison -* Add Viper Sting -* Add Frost Shock -* Fix Entangling Roots - -## v8.5 -* Update for 1.13.3 - -## v8.4 -* Add Tracker's Net - -## v8.3 -* Fix Thorns - -## v8.2 -* Fix Lightning Lasso - -## v8.1 -* Fix interrupts not showing - -## v8.0 -* Added compatibility for Classic -* Updated for 8.2.5 +## v10.0 +* Preliminary support for TBC Classic diff --git a/Retail.lua b/Retail.lua index efefa39..a039a25 100644 --- a/Retail.lua +++ b/Retail.lua @@ -1,6 +1,6 @@ local addonName, addon = ... -if WOW_PROJECT_ID == WOW_PROJECT_CLASSIC then return end +if WOW_PROJECT_ID ~= WOW_PROJECT_MAINLINE then return end local BUFF_DEFENSIVE = "buffs_defensive" local BUFF_OFFENSIVE = "buffs_offensive"