Johnny C. Lam [05-21-14 - 13:07]
diff --git a/Ovale.toc b/Ovale.toc
index 9790818..94324d5 100644
--- a/Ovale.toc
+++ b/Ovale.toc
@@ -59,6 +59,7 @@ OvaleBanditsGuile.lua
OvaleDamageTaken.lua
OvaleEclipse.lua
OvaleEnemies.lua
+OvalePassiveAura.lua
OvaleRecount.lua
OvaleRunes.lua
OvaleShadowWordDeath.lua
diff --git a/OvaleCooldown.lua b/OvaleCooldown.lua
index d41cbc1..18dc6d3 100644
--- a/OvaleCooldown.lua
+++ b/OvaleCooldown.lua
@@ -203,14 +203,23 @@ function OvaleCooldown:ApplySpellAfterCast(state, spellId, targetGUID, startCast
end
end
- -- Adjust cooldown duration if it is affected by haste: "cd_haste=melee" or "cd_haste=spell".
- if cd.duration > 0 and si.cd_haste then
- if si.cd_haste == "melee" then
- cd.duration = cd.duration / state:GetMeleeHasteMultiplier(spellcast.snapshot)
- elseif si.haste == "ranged" then
- cd.duration = cd.duration / OvalePaperDoll:GetSpellHasteMultiplier()
- elseif si.cd_haste == "spell" then
- cd.duration = cd.duration / state:GetSpellHasteMultiplier(spellcast.snapshot)
+ if cd.duration > 0 then
+ -- Adjust cooldown duration if it is affected by haste: "cd_haste=melee" or "cd_haste=spell".
+ if si.cd_haste then
+ if si.cd_haste == "melee" then
+ cd.duration = cd.duration / state:GetMeleeHasteMultiplier(spellcast.snapshot)
+ elseif si.haste == "ranged" then
+ cd.duration = cd.duration / OvalePaperDoll:GetSpellHasteMultiplier()
+ elseif si.cd_haste == "spell" then
+ cd.duration = cd.duration / state:GetSpellHasteMultiplier(spellcast.snapshot)
+ end
+ end
+ -- Adjust cooldown duration if it is affected by a cooldown reduction trinket: "buff_cdr=auraId".
+ if si.buff_cdr then
+ local aura = state:GetAura("player", si.buff_cdr)
+ if state:IsActiveAura(aura, cd.start) then
+ cd.duration = cd.duration / aura.value1
+ end
end
end
diff --git a/OvalePassiveAura.lua b/OvalePassiveAura.lua
new file mode 100644
index 0000000..9426fb3
--- /dev/null
+++ b/OvalePassiveAura.lua
@@ -0,0 +1,132 @@
+--[[--------------------------------------------------------------------
+ Ovale Spell Priority
+ Copyright (C) 2014 Johnny C. Lam
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License in the LICENSE
+ file accompanying this program.
+--]]-------------------------------------------------------------------
+
+local _, Ovale = ...
+local OvalePassiveAura = Ovale:NewModule("OvalePassiveAura", "AceEvent-3.0")
+Ovale.OvalePassiveAura = OvalePassiveAura
+
+--[[
+ This module manages passive, usually hidden, auras from various class and item effects.
+--]]
+
+--<private-static-properties>
+-- Forward declarations for module dependencies.
+local OvaleAura = nil
+local OvaleEquipement = nil
+local OvalePaperDoll = nil
+
+local exp = math.exp
+local log = math.log
+local API_GetTime = GetTime
+local API_UnitClass = UnitClass
+local API_UnitGUID = UnitGUID
+local INVSLOT_TRINKET1 = INVSLOT_TRINKET1
+local INVSLOT_TRINKET2 = INVSLOT_TRINKET2
+
+-- Player's class.
+local _, self_class = API_UnitClass("player")
+-- Player's GUID.
+local self_guid = nil
+
+-- Readiness (cooldown reduction) passive aura.
+local READINESS_AGILITY_DPS = 146019
+local READINESS_STRENGTH_DPS = 145955
+local READINESS_TANK = 146025
+local READINESS_TRINKET = {
+ [102292] = READINESS_AGILITY_DPS, -- Assurance of Consequence
+ [104476] = READINESS_AGILITY_DPS, -- Assurance of Consequence (Heroic)
+ [104725] = READINESS_AGILITY_DPS, -- Assurance of Consequence (Flexible)
+ [104974] = READINESS_AGILITY_DPS, -- Assurance of Consequence (Raid Finder)
+ [105223] = READINESS_AGILITY_DPS, -- Assurance of Consequence (Warforged)
+ [105472] = READINESS_AGILITY_DPS, -- Assurance of Consequence (Heroic Warforged)
+
+ [102298] = READINESS_STRENGTH_DPS, -- Evil Eye of Galakras
+ [104495] = READINESS_STRENGTH_DPS, -- Evil Eye of Galakras (Heroic)
+ [104744] = READINESS_STRENGTH_DPS, -- Evil Eye of Galakras (Flexible)
+ [104993] = READINESS_STRENGTH_DPS, -- Evil Eye of Galakras (Raid Finder)
+ [105242] = READINESS_STRENGTH_DPS, -- Evil Eye of Galakras (Warforged)
+ [105491] = READINESS_STRENGTH_DPS, -- Evil Eye of Galakras (Heroic Warforged)
+
+ [102306] = READINESS_TANK, -- Vial of Living Corruption
+ [104572] = READINESS_TANK, -- Vial of Living Corruption (Heroic)
+ [104821] = READINESS_TANK, -- Vial of Living Corruption (Flexible)
+ [105070] = READINESS_TANK, -- Vial of Living Corruption (Raid Finder)
+ [105319] = READINESS_TANK, -- Vial of Living Corruption (Warforged)
+ [105568] = READINESS_TANK, -- Vial of Living Corruption (Heroic Warforged)
+}
+local READINESS_ROLE = {
+ DEATHKNIGHT = { blood = READINESS_TANK, frost = READINESS_STRENGTH_DPS, unholy = READINESS_STRENGTH_DPS },
+ DRUID = { feral = READINESS_AGILITY_DPS, guardian = READINESS_TANK },
+ HUNTER = { beast_mastery = READINESS_AGILITY_DPS, marksmanship = READINESS_AGILITY_DPS, survival = READINESS_AGILITY_DPS },
+ MONK = { brewmaster = READINESS_TANK, windwalker = READINESS_AGILITY_DPS },
+ PALADIN = { protection = READINESS_TANK, retribution = READINESS_STRENGTH_DPS },
+ ROGUE = { assassination = READINESS_AGILITY_DPS, combat = READINESS_AGILITY_DPS, subtlety = READINESS_AGILITY_DPS },
+ SHAMAN = { enhancement = READINESS_AGILITY_DPS },
+ WARRIOR = { arms = READINESS_STRENGTH_DPS, fury = READINESS_STRENGTH_DPS, protection = READINESS_TANK },
+}
+--</private-static-properties>
+
+--<public-static-methods>
+function OvalePassiveAura:OnInitialize()
+ -- Resolve module dependencies.
+ OvaleAura = Ovale.OvaleAura
+ OvaleEquipement = Ovale.OvaleEquipement
+ OvalePaperDoll = Ovale.OvalePaperDoll
+end
+
+function OvalePassiveAura:OnEnable()
+ self_guid = API_UnitGUID("player")
+ self:RegisterMessage("Ovale_EquipmentChanged")
+ self:RegisterMessage("Ovale_SpecializationChanged")
+end
+
+function OvalePassiveAura:OnDisable()
+ self:UnregisterMessage("Ovale_EquipmentChanged")
+ self:UnregisterMessage("Ovale_SpecializationChanged")
+end
+
+function OvalePassiveAura:Ovale_EquipmentChanged()
+ self:UpdateReadiness()
+end
+
+function OvalePassiveAura:Ovale_SpecializationChanged()
+ self:UpdateReadiness()
+end
+
+function OvalePassiveAura:UpdateReadiness()
+ local specialization = OvalePaperDoll:GetSpecialization()
+ local spellId = READINESS_ROLE[self_class] and READINESS_ROLE[self_class][specialization]
+ if spellId then
+ -- Check a Readiness trinket is equipped and for the correct role.
+ local slot = INVSLOT_TRINKET1
+ local trinket = OvaleEquipement:GetEquippedItem(slot)
+ local readiness = trinket and READINESS_TRINKET[trinket]
+ if not readiness then
+ slot = INVSLOT_TRINKET2
+ trinket = OvaleEquipement:GetEquippedItem(slot)
+ readiness = trinket and READINESS_TRINKET[trinket]
+ end
+ local now = API_GetTime()
+ if readiness == spellId then
+ local name = "Readiness"
+ local start = now
+ local duration = math.huge
+ local ending = math.huge
+ local stacks = 1
+ -- Use a derived formula that very closely approximates the true cooldown recovery rate increase based on item level.
+ local ilevel = OvaleEquipement:GetEquippedItemLevel(slot)
+ local cdRecoveryRateIncrease = exp((ilevel - 528) * 0.009317881032 + 3.434954478)
+ local value = 1 / (1 + cdRecoveryRateIncrease / 100)
+ OvaleAura:GainedAuraOnGUID(self_guid, start, spellId, self_guid, "HELPFUL", nil, nil, stacks, nil, duration, ending, nil, name, value, nil, nil)
+ else
+ OvaleAura:LostAuraOnGUID(self_guid, now, spellId, self_guid)
+ end
+ end
+end
+--</public-static-methods>
diff --git a/OvaleSimulationCraft.lua b/OvaleSimulationCraft.lua
index c632fee..6d18f48 100644
--- a/OvaleSimulationCraft.lua
+++ b/OvaleSimulationCraft.lua
@@ -353,6 +353,14 @@ do
["rain_of_fire"] = "rain_of_fire_aftermath",
},
},
+ warrior = {
+ arms = {
+ ["cooldown_reduction"] = "cooldown_reduction_strength",
+ },
+ fury = {
+ ["cooldown_reduction"] = "cooldown_reduction_strength",
+ },
+ }
}
function OvaleSimulationCraft:Name(name)
diff --git a/scripts/ovale_deathknight_spells.lua b/scripts/ovale_deathknight_spells.lua
index 2c5f351..f1fe464 100644
--- a/scripts/ovale_deathknight_spells.lua
+++ b/scripts/ovale_deathknight_spells.lua
@@ -9,8 +9,13 @@ do
Define(antimagic_shell 48707)
SpellInfo(antimagic_shell cd=45)
+ SpellInfo(antimagic_shell buff_cdr=cooldown_reduction_strength_buff mastery=frost)
+ SpellInfo(antimagic_shell buff_cdr=cooldown_reduction_strength_buff mastery=unholy)
+ SpellInfo(antimagic_shell buff_cdr=cooldown_reduction_tank_buff mastery=blood)
Define(army_of_the_dead 42650)
SpellInfo(army_of_the_dead blood=1 frost=1 unholy=1 cd=600)
+ SpellInfo(army_of_the_dead buff_cdr=cooldown_reduction_strength_buff mastery=frost)
+ SpellInfo(army_of_the_dead buff_cdr=cooldown_reduction_strength_buff mastery=unholy)
SpellAddBuff(army_of_the_dead army_of_the_dead_buff=1)
Define(army_of_the_dead_buff 42650)
SpellInfo(army_of_the_dead_buff duration=40)
@@ -32,6 +37,7 @@ Define(blood_tap 45529)
Define(blood_tap_talent 13)
Define(bone_shield 49222)
SpellInfo(bone_shield cd=60)
+ SpellInfo(bone_shield buff_cdr=cooldown_reduction_tank_buff mastery=blood)
SpellAddBuff(bone_shield bone_shield_buff=1)
Define(bone_shield_buff 49222)
SpellInfo(bone_shield_buff duration=300)
@@ -40,6 +46,7 @@ Define(crimson_scourge_buff 81141)
SpellInfo(crimson_scourge_buff duration=15)
Define(dancing_rune_weapon 49028)
SpellInfo(dancing_rune_weapon cd=90)
+ SpellInfo(dancing_rune_weapon buff_cdr=cooldown_reduction_tank_buff mastery=blood)
SpellAddBuff(dancing_rune_weapon dancing_rune_weapon_buff=1)
Define(dancing_rune_weapon_buff 81256)
SpellInfo(dancing_rune_weapon_buff duration=12)
@@ -74,6 +81,7 @@ Define(death_strike 49998)
Define(ebon_plaguebringer 51160)
Define(empower_rune_weapon 47568)
SpellInfo(empower_rune_weapon cd=300 runicpower=-25)
+ SpellInfo(empower_rune_weapon buff_cdr=cooldown_reduction_strength_buff mastery=frost)
Define(festering_strike 85948)
SpellInfo(festering_strike blood=1 frost=1)
Define(frost_fever_debuff 55095)
@@ -101,6 +109,9 @@ Define(howling_blast 49184)
Define(icebound_fortitude 48792)
SpellInfo(icebound_fortitude cd=180)
SpellInfo(icebound_fortitude cd=90 glyph=glyph_of_icebound_fortitude)
+ SpellInfo(icebound_fortitude buff_cdr=cooldown_reduction_strength_buff mastery=frost)
+ SpellInfo(icebound_fortitude buff_cdr=cooldown_reduction_strength_buff mastery=unholy)
+ SpellInfo(icebound_fortitude buff_cdr=cooldown_reduction_tank_buff mastery=blood)
SpellAddBuff(icebound_fortitude icebound_fortitude_buff=1)
Define(icebound_fortitude_buff 48792)
SpellInfo(icebound_fortitude_buff duration=12)
@@ -124,11 +135,15 @@ Define(obliterate 49020)
Define(outbreak 77575)
SpellInfo(outbreak cd=60 glyph=!glyph_of_outbreak)
SpellInfo(outbreak runicpower=30 glyph=glyph_of_outbreak)
+ SpellInfo(outbreak buff_cdr=cooldown_reduction_strength_buff mastery=frost)
+ SpellInfo(outbreak buff_cdr=cooldown_reduction_strength_buff mastery=unholy)
+ SpellInfo(outbreak buff_cdr=cooldown_reduction_tank_buff mastery=blood)
SpellAddTargetDebuff(outbreak blood_plague_debuff=1 frost_fever_debuff=1)
Define(pestilence 50842)
SpellInfo(pestilence blood=1)
Define(pillar_of_frost 51271)
SpellInfo(pillar_of_frost cd=60 frost=1)
+ SpellInfo(pillar_of_frost buff_cdr=cooldown_reduction_strength_buff mastery=frost)
SpellAddBuff(pillar_of_frost pillar_of_frost_buff=1)
Define(pillar_of_frost_buff 51271)
SpellInfo(pillar_of_frost duration=20)
@@ -179,15 +194,18 @@ Define(sudden_doom_buff 81340)
SpellInfo(sudden_doom_buff duration=10)
Define(summon_gargoyle 49206)
SpellInfo(summon_gargoyle cd=180)
+ SpellInfo(summon_gargoyle buff_cdr=cooldown_reduction_strength_buff mastery=unholy)
Define(unholy_blight 115989)
SpellInfo(unholy_blight cd=90)
Define(unholy_blight_talent 3)
Define(unholy_frenzy 49016)
SpellInfo(unholy_frenzy cd=180)
+ SpellInfo(unholy_frenzy buff_cdr=cooldown_reduction_strength_buff mastery=unholy)
Define(unholy_presence 48265)
Define(vampiric_blood 55233)
SpellInfo(vampiric_blood cd=60)
SpellInfo(vampiric_blood addcd=-10 itemset=T14_tank itemcount=2)
+ SpellInfo(vampiric_blood buff_cdr=cooldown_reduction_tank_buff mastery=blood)
SpellAddBuff(vampiric_blood vampiric_blood_buff=1)
Define(vampiric_blood_buff 55233)
SpellInfo(vampiric_blood_buff duration=10)
diff --git a/scripts/ovale_druid_spells.lua b/scripts/ovale_druid_spells.lua
index c9d2416..426e98c 100644
--- a/scripts/ovale_druid_spells.lua
+++ b/scripts/ovale_druid_spells.lua
@@ -9,16 +9,20 @@ do
Define(barkskin 22812)
SpellInfo(barkskin cd=60)
+ SpellInfo(barkskin buff_cdr=cooldown_reduction_agility_buff mastery=feral)
+ SpellInfo(barkskin buff_cdr=cooldown_reduction_tank_buff mastery=guardian)
SpellInfo(barkskin addcd=-15 if_spell=malfurions_gift)
Define(bear_form 5487)
SpellInfo(bear_form rage=-10)
Define(berserk_bear 50334)
SpellInfo(berserk_bear cd=180)
+ SpellInfo(berserk_bear buff_cdr=cooldown_reduction_tank_buff mastery=guardian)
SpellAddBuff(berserk_bear berserk_bear_buff=1)
Define(berserk_bear_buff 50334)
SpellInfo(berserk_bear_buff duration=10)
Define(berserk_cat 106951)
SpellInfo(berserk_cat cd=180)
+ SpellInfo(berserk_cat buff_cdr=cooldown_reduction_agility_buff mastery=feral)
SpellAddBuff(berserk_cat berserk_cat_buff=1)
Define(berserk_cat_buff 106951)
SpellInfo(berserk_cat duration=15)
@@ -36,6 +40,7 @@ Define(chosen_of_elune_buff 102560)
Define(dash 1850)
SpellInfo(dash cd=180)
SpellInfo(dash addcd=-60 glyph=glyph_of_dash)
+ SpellInfo(dash buff_cdr=cooldown_reduction_agility_buff mastery=feral)
Define(displacer_beast 102280)
SpellInfo(displacer_beast cd=30)
Define(displacer_beast_talent 2)
@@ -163,6 +168,7 @@ Define(might_of_ursoc 106922)
SpellInfo(might_of_ursoc cd=180)
SpellInfo(might_of_ursoc addcd=120 glyph=glyph_of_might_of_ursoc)
SpellInfo(might_of_ursoc addcd=-60 itemset=T14_tank itemcount=2)
+ SpellInfo(might_of_ursoc buff_cdr=cooldown_reduction_tank_buff mastery=guardian)
Define(mighty_bash 5211)
SpellInfo(mighty_bash cd=50)
Define(mighty_bash_talent 15)
@@ -310,6 +316,8 @@ Define(sunfire_debuff 93402)
Define(survival_instincts 61336)
SpellInfo(survival_instincts cd=180)
SpellInfo(survival_instincts addcd=-60 glyph=glyph_of_survival_instincts)
+ SpellInfo(survival_instincts buff_cdr=cooldown_reduction_agility_buff mastery=feral)
+ SpellInfo(survival_instincts buff_cdr=cooldown_reduction_tank_buff mastery=guardian)
SpellAddBuff(survival_instincts survival_instincts=1)
Define(swiftmend 18562)
SpellInfo(swiftmend cd=15)
@@ -340,6 +348,7 @@ Define(thrash_cat_debuff 106830)
SpellInfo(thrash_cat_debuff duration=15 tick=3 physical=1)
Define(tigers_fury 5217)
SpellInfo(tigers_fury cd=30 energy=-60)
+ SpellInfo(tigers_fury buff_cdr=cooldown_reduction_agility_buff mastery=feral)
SpellAddBuff(tigers_fury tigers_fury_buff=1)
Define(tigers_fury_buff 5217)
SpellInfo(tigers_fury duration=6)
diff --git a/scripts/ovale_hunter_spells.lua b/scripts/ovale_hunter_spells.lua
index fa61563..51ff901 100644
--- a/scripts/ovale_hunter_spells.lua
+++ b/scripts/ovale_hunter_spells.lua
@@ -37,10 +37,12 @@ Define(beast_within_buff 34471)
SpellInfo(beast_within_buff addduration=6 itemset=T14 itemcount=4)
Define(bestial_wrath 19574)
SpellInfo(bestial_wrath cd=60)
+ SpellInfo(bestial_wrath buff_cdr=cooldown_reduction_agility_buff)
SpellAddBuff(bestial_wrath beast_within_buff=1)
Define(black_arrow 3674)
SpellInfo(black_arrow cd=30 focus=35)
SpellInfo(black_arrow addcd=-6 if_spell=trap_mastery)
+ SpellInfo(black_arrow buff_cdr=cooldown_reduction_agility_buff)
SpellAddTargetDebuff(black_arrow black_arrow_debuff=1)
Define(black_arrow_debuff 3674)
SpellInfo(black_arrow_debuff duration=20 tick=2)
@@ -64,6 +66,7 @@ Define(dire_beast_talent 11)
Define(disengage 781)
SpellInfo(disengage cd=20)
SpellInfo(disengage addcd=-10 talent=crouching_tiger_hidden_chimera_talent)
+ SpellInfo(disengage buff_cdr=cooldown_reduction_agility_buff)
Define(explosive_shot 53301)
SpellInfo(explosive_shot cd=6 focus=25)
SpellInfo(explosive_shot buffnocd=lock_and_load_buff buff_focus_none=lock_and_load_buff if_spell=lock_and_load)
@@ -125,6 +128,7 @@ Define(powershot_talent 17)
Define(pre_steady_focus_buff 53224)
Define(rapid_fire 3045)
SpellInfo(rapid_fire cd=180)
+ SpellInfo(rapid_fire buff_cdr=cooldown_reduction_agility_buff)
SpellAddBuff(rapid_fire rapid_fire_buff=1)
Define(rapid_fire_buff 3045)
SpellInfo(rapid_fire_buff duration=15)
@@ -140,8 +144,10 @@ Define(serpent_sting_debuff 118253)
SpellInfo(serpent_sting_debuff duration=15 tick=3)
Define(silencing_shot 34490)
SpellInfo(silencing_shot cd=24)
+ SpellInfo(silencing_shot buff_cdr=cooldown_reduction_agility_buff)
Define(stampede 121818)
SpellInfo(stampede cd=300)
+ SpellInfo(stampede buff_cdr=cooldown_reduction_agility_buff)
Define(stampede_buff 121818)
Define(steady_focus 53224)
Define(steady_focus_buff 53220)
diff --git a/scripts/ovale_items.lua b/scripts/ovale_items.lua
index e45fbf2..41b56b8 100644
--- a/scripts/ovale_items.lua
+++ b/scripts/ovale_items.lua
@@ -60,6 +60,11 @@ SpellList(trinket_stacking_proc_strength_buff 138759 138870)
# Critical Strike
SpellList(trinket_stacking_stat_crit_buff 146285)
+# Cooldown reduction trinket passive buffs.
+Define(cooldown_reduction_agility_buff 146019)
+Define(cooldown_reduction_strength_buff 145955)
+Define(cooldown_reduction_tank_buff 146025)
+
AddCheckBox(opt_use_trinket0 "Use trinket 0" default)
AddCheckBox(opt_use_trinket1 "Use trinket 1" default)
diff --git a/scripts/ovale_monk_spells.lua b/scripts/ovale_monk_spells.lua
index 0d9487d..b827fb3 100644
--- a/scripts/ovale_monk_spells.lua
+++ b/scripts/ovale_monk_spells.lua
@@ -49,6 +49,7 @@ Define(elusive_brew_use 115308)
SpellAddBuff(elusive_brew_use elusive_brew_buff=0)
Define(energizing_brew 115288)
SpellInfo(energizing_brew cd=60)
+ SpellInfo(energizing_brew buff_cdr=cooldown_reduction_agility_buff)
SpellAddBuff(energizing_brew energizing_brew_buff=1)
Define(energizing_brew_buff 115288)
SpellInfo(energizing_brew_buff duration=6 tick=1)
@@ -65,10 +66,13 @@ Define(fists_of_fury 113656)
SpellInfo(fists_of_fury channel=4 cd=25 chi=3)
SpellInfo(fists_of_fury addcd=-5 itemset=T14_melee itemcount=2)
SpellInfo(fists_of_fury buff_chi=focus_of_xuen_buff buff_chi_amount=-1 itemset=T16_melee itemcount=4)
+ SpellInfo(fists_of_fury buff_cdr=cooldown_reduction_agility_buff)
Define(focus_of_xuen_buff 145024)
SpellInfo(focus_of_xuen_buff duration=10)
Define(fortifying_brew 115203)
SpellInfo(fortifying_brew cd=180)
+ SpellInfo(fortifying_brew buff_cdr=cooldown_reduction_agility_buff mastery=windwalker)
+ SpellInfo(fortifying_brew buff_cdr=cooldown_reduction_tank_buff mastery=brewmaster)
#Define(fortifying_brew_glyphed 120954)
Define(glyph_of_guard 123401)
Define(glyph_of_mana_tea 123763)
@@ -76,6 +80,7 @@ Define(glyph_of_surging_mist 120483)
Define(glyph_of_touch_of_death 123391)
Define(guard 115295)
SpellInfo(guard cd=30 chi=2)
+ SpellInfo(guard buff_cdr=cooldown_reduction_tank_buff)
SpellAddBuff(guard guard_buff=1 power_guard_buff=0)
Define(guard_buff 115295)
SpellInfo(guard_buff duration=30)
@@ -203,6 +208,8 @@ Define(vital_mists_buff 118674)
SpellInfo(vital_mists_buff duration=30)
Define(zen_meditation 115176)
SpellInfo(zen_meditation cd=180)
+ SpellInfo(zen_meditation buff_cdr=cooldown_reduction_agility_buff mastery=windwalker)
+ SpellInfo(zen_meditation buff_cdr=cooldown_reduction_tank_buff mastery=brewmaster)
Define(zen_sphere 124081)
SpellInfo(zen_sphere cd=10)
SpellAddTargetBuff(zen_sphere zen_sphere_buff=1)
diff --git a/scripts/ovale_paladin_spells.lua b/scripts/ovale_paladin_spells.lua
index eae0af8..ee5098f 100644
--- a/scripts/ovale_paladin_spells.lua
+++ b/scripts/ovale_paladin_spells.lua
@@ -12,6 +12,7 @@ Define(ancient_power_buff 86700)
Define(ardent_defender 31850)
SpellInfo(ardent_defender cd=180)
SpellInfo(ardent_defender addcd=-60 itemset=T14_tank itemcount=2)
+ SpellInfo(ardent_defender buff_cdr=cooldown_reduction_tank_buff)
Define(avengers_shield 31935)
SpellInfo(avengers_shield holy=0 buff_holy=grand_crusader_buff cd=15)
SpellInfo(avengers_shield cd_haste=melee if_spell=sanctity_of_battle)
@@ -19,6 +20,8 @@ Define(avengers_shield 31935)
Define(avenging_wrath 31884)
SpellInfo(avenging_wrath cd=180)
SpellInfo(avenging_wrath addcd=-65 itemset=T14_melee itemcount=4)
+ SpellInfo(avenging_wrath buff_cdr=cooldown_reduction_strength_buff mastery=retribution)
+ SpellInfo(avenging_wrath buff_cdr=cooldown_reduction_tank_buff mastery=protection)
SpellAddBuff(avenging_wrath avenging_wrath_buff=1)
Define(avenging_wrath_buff 31884)
SpellInfo(avenging_wrath_buff duration=20)
@@ -64,12 +67,16 @@ Define(divine_plea 54428)
Define(divine_protection 498)
SpellInfo(divine_protection cd=60)
SpellInfo(divine_protection cd=30 talent=unbreakable_spirit_talent)
+ SpellInfo(divine_protection buff_cdr=cooldown_reduction_strength_buff mastery=retribution)
+ SpellInfo(divine_protection buff_cdr=cooldown_reduction_tank_buff mastery=protection)
Define(divine_purpose_buff 90174)
SpellInfo(divine_purpose_buff duration=8)
Define(divine_purpose_talent 15)
Define(divine_shield 642)
SpellInfo(divine_shield cd=300)
SpellInfo(divine_shield cd=150 talent=unbreakable_spirit_talent)
+ SpellInfo(divine_shield buff_cdr=cooldown_reduction_strength_buff mastery=retribution)
+ SpellInfo(divine_shield buff_cdr=cooldown_reduction_tank_buff mastery=protection)
SpellAddDebuff(divine_shield forbearance_debuff=1)
Define(divine_storm 53385)
SpellInfo(divine_storm holy=3)
@@ -114,8 +121,10 @@ Define(guardian_of_ancient_kings_heal 86669)
SpellInfo(guardian_of_ancient_kings_heal cd=180)
Define(guardian_of_ancient_kings_tank 86659)
SpellInfo(guardian_of_ancient_kings_tank cd=180)
+ SpellInfo(guardian_of_ancient_kings_tank buff_cdr=cooldown_reduction_tank_buff)
Define(guardian_of_ancient_kings_melee 86698)
SpellInfo(guardian_of_ancient_kings_melee cd=180)
+ SpellInfo(guardian_of_ancient_kings_melee buff_cdr=cooldown_reduction_strength_buff)
Define(hammer_of_justice 853)
SpellInfo(hammer_of_justice cd=60)
Define(hammer_of_the_righteous 53595)
@@ -127,8 +136,11 @@ Define(hammer_of_wrath 24275)
SpellInfo(hammer_of_wrath holy=-1 mastery=retribution)
Define(hand_of_freedom 1044)
SpellInfo(hand_of_freedom cd=25)
+ SpellInfo(hand_of_freedom buff_cdr=cooldown_reduction_strength_buff mastery=retribution)
Define(hand_of_protection 1022)
SpellInfo(hand_of_protection cd=300)
+ SpellInfo(hand_of_protection buff_cdr=cooldown_reduction_strength_buff mastery=retribution)
+ SpellInfo(hand_of_protection buff_cdr=cooldown_reduction_tank_buff mastery=protection)
SpellAddTargetDebuff(hand_of_protection forbearance_debuff=1)
Define(holy_avenger 105809)
SpellInfo(holy_avenger cd=120)
diff --git a/scripts/ovale_rogue_spells.lua b/scripts/ovale_rogue_spells.lua
index e9c5534..ddb8b94 100644
--- a/scripts/ovale_rogue_spells.lua
+++ b/scripts/ovale_rogue_spells.lua
@@ -9,6 +9,7 @@ do
Define(adrenaline_rush 13750)
SpellInfo(adrenaline_rush cd=180)
+ SpellInfo(adrenaline_rush buff_cdr=cooldown_reduction_agility_buff)
SpellAddBuff(adrenaline_rush adrenaline_rush_buff=1)
Define(adrenaline_rush_buff 13750)
SpellInfo(adrenaline_rush_buff duration=15)
@@ -48,6 +49,7 @@ Define(cheap_shot 1833)
SpellAddTargetDebuff(cheap_shot find_weakness_debuff=1 if_spell=find_weakness)
Define(cloak_of_shadows 31224)
SpellInfo(cloak_of_shadows cd=60)
+ SpellInfo(cloak_of_shadows buff_cdr=cooldown_reduction_agility_buff)
Define(crimson_tempest 121411)
SpellInfo(crimson_tempest combo=finisher energy=35)
SpellInfo(crimson_tempest buff_energy_less15=shadow_blades_buff if_spell=shadow_blades itemset=T15_melee itemcount=4)
@@ -121,6 +123,7 @@ Define(kidney_shot 408)
SpellAddBuff(kidney_shot anticipation_buff=0 if_spell=anticipation)
Define(killing_spree 51690)
SpellInfo(killing_spree cd=120)
+ SpellInfo(killing_spree buff_cdr=cooldown_reduction_agility_buff)
Define(leeching_poison 108211)
SpellAddBuff(leeching_poison leeching_poison_buff=1)
Define(leeching_poison_buff 108211)
@@ -174,12 +177,14 @@ Define(rupture_debuff 1943)
Define(seal_fate 14190)
Define(shadow_blades 121471)
SpellInfo(shadow_blades cd=180)
+ SpellInfo(shadow_blades buff_cdr=cooldown_reduction_agility_buff)
SpellAddBuff(shadow_blades shadow_blades_buff=1)
Define(shadow_blades_buff 121471)
SpellInfo(shadow_blades_buff duration=12)
SpellInfo(shadow_blades_buff addduration=12 itemset=T14 itemcount=4)
Define(shadow_dance 51713)
SpellInfo(shadow_dance cd=60)
+ SpellInfo(shadow_dance buff_cdr=cooldown_reduction_agility_buff)
SpellAddBuff(shadow_dance shadow_dance_buff=1)
Define(shadow_dance_buff 51713)
SpellInfo(shadow_dance_buff duration=8)
@@ -220,12 +225,15 @@ Define(tricks_of_the_trade 57934)
SpellInfo(tricks_of_the_trade buff_energy_less75=stealth_buff if_spell=shadow_focus)
Define(vanish 1856)
SpellInfo(vanish cd=120)
+ SpellInfo(vanish buff_cdr=cooldown_reduction_agility_buff mastery=assassination)
+ SpellInfo(vanish buff_cdr=cooldown_reduction_agility_buff mastery=subtlety)
SpellAddBuff(vanish vanish_buff=1)
Define(vanish_buff 11327)
SpellInfo(vanish_buff duration=3)
SpellInfo(vanish_buff addduration=2 glyph=glyph_of_vanish)
Define(vendetta 79140)
SpellInfo(vendetta cd=120)
+ SpellInfo(vendetta buff_cdr=cooldown_reduction_agility_buff)
Define(wound_poison 8679)
SpellAddBuff(wound_poison wound_poison_buff=1)
Define(wound_poison_buff 8679)
diff --git a/scripts/ovale_shaman_spells.lua b/scripts/ovale_shaman_spells.lua
index 246a664..eb94990 100644
--- a/scripts/ovale_shaman_spells.lua
+++ b/scripts/ovale_shaman_spells.lua
@@ -27,6 +27,7 @@ Define(ascendance_heal_buff 114052)
SpellInfo(ascendance_heal_buff duration=15)
Define(ascendance_melee 114051)
SpellInfo(ascendance_melee cd=180)
+ SpellInfo(ascendance_melee buff_cdr=cooldown_reduction_agility_buff)
SpellAddBuff(ascendance_melee ascendance_melee_buff=1)
Define(ascendance_melee_buff 114051)
SpellInfo(ascendance_melee_buff duration=15)
@@ -47,6 +48,7 @@ Define(chain_lightning 421)
SpellAddBuff(chain_lightning ancestral_swiftness_buff=0 if_talent=ancestral_swiftness_talent)
Define(earth_elemental_totem 2062)
SpellInfo(earth_elemental_totem cd=300)
+ SpellInfo(earth_elemental_totem buff_cdr=cooldown_reduction_agility_buff mastery=enhancement)
Define(earth_shield 974)
SpellAddTargetBuff(earth_shield earth_shield_buff=1)
Define(earth_shield_buff 974)
@@ -73,9 +75,11 @@ Define(elemental_mastery_buff 16166)
Define(elemental_mastery_talent 10)
Define(feral_spirit 51533)
SpellInfo(feral_spirit cd=120)
+ SpellInfo(feral_spirit buff_cdr=cooldown_reduction_agility_buff)
Define(fire_elemental_totem 2894)
SpellInfo(fire_elemental_totem cd=300)
SpellInfo(fire_elemental_totem cd=150 glyph=glyph_of_fire_elemental_totem)
+ SpellInfo(fire_elemental_totem buff_cdr=cooldown_reduction_agility_buff mastery=enhancement)
Define(fire_nova 1535)
SpellInfo(fire_nova cd=4)
Define(flame_shock 8050)
@@ -141,6 +145,7 @@ Define(riptide_buff 61295)
Define(searing_totem 3599)
Define(shamanistic_rage 30823)
SpellInfo(shamanistic_rage cd=60)
+ SpellInfo(shamanistic_rage buff_cdr=cooldown_reduction_agility_buff mastery=enhancement)
Define(spirit_link_totem 98008)
SpellInfo(spirit_link_totem cd=180)
Define(spirit_walk 58875)
@@ -148,6 +153,7 @@ Define(spirit_walk 58875)
SpellInfo(spirit_walk addcd=-15 glyph=glyph_of_spirit_walk)
Define(spiritwalkers_grace 79206)
SpellInfo(spiritwalkers_grace cd=120)
+ SpellInfo(spiritwalkers_grace buff_cdr=cooldown_reduction_agility_buff mastery=enhancement)
Define(stone_bulwark_totem 108270)
SpellInfo(stone_bulwark_totem cd=10)
Define(stone_bulwark_totem_talent 2)