From e27fe3801faf79259327621ae1ddd76704ad08a0 Mon Sep 17 00:00:00 2001 From: Taracque Date: Mon, 20 Oct 2014 12:18:50 +0200 Subject: [PATCH] Rotation adjustments for all specs --- DKCrutch.lua | 149 ++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 82 insertions(+), 67 deletions(-) diff --git a/DKCrutch.lua b/DKCrutch.lua index ca3e35a..b44bea0 100755 --- a/DKCrutch.lua +++ b/DKCrutch.lua @@ -715,6 +715,18 @@ function DKCrutch:AdviseBloodAbility() end end + -- Death Strike if available + cd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Death Strike"]) + if (cd) and (cd<=1) then + return "Death Strike" + end + + -- Blood Boil if Blood runes are up + local bbcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Blood Boil"]) + if (bbcd) and (bbcd<=1) and (DKCrutch.runesUp[1] > 0) then + return "Blood Boil" + end + -- Blood Tap if have at least 5 charges, and at least on fully depleted rune if (DKCrutch.SpellList["Blood Tap"]) then local name,_,_,count = DKCrutch:hasBuff("player", DKCrutch.SpellList["Blood Charge"]) @@ -723,19 +735,20 @@ function DKCrutch:AdviseBloodAbility() end end - -- Plague Leech if Outbreak available, and have on fully depleted rune - if (DKCrutch.SpellList["Plague Leech"]) then - if (obcd) and (obcd<=0) and (IsSpellInRange(DKCrutch.SpellList["Outbreak"], "target") == 1) and (DKCrutch.depletedCount>0) then - if (DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Plague Leech"]) <= 1) then - return "Plague Leech" - end - end + -- Death Coil if has enough runic power + local dccd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Death Coil"]) + local _, _, _, cost = GetSpellInfo(DKCrutch.SpellList["Death Coil"]) + if (dccd) and (dccd <= 1) and (UnitPower("player", 6) > cost) then + return "Death Coil" end - -- Death Strike if available - cd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Death Strike"]) - if (cd) and (cd<=1) then - return "Death Strike" + -- Blood Boil or Death and Decay + if (bbcd) and (bbcd<=1) then + return "Blood Boil" + end + local ddcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Outbreak"]) + if (ddcd) and (ddcd <= 1) and (DKCrutch.runesUp[2] > 0) then + return "Death and Decay" end return "" @@ -771,10 +784,12 @@ function DKCrutch:AdviseFrostAbilityDW() -- Frost DK DualWield priority if (not bpExpiration) then bpExpiration = 0 end - obcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Outbreak"]) - if (obcd) and (obcd<=0) and (IsSpellInRange(DKCrutch.SpellList["Outbreak"], "target") == 1) then - if ( (ffExpiration - GetTime()) <2) or ( (bpExpiration - GetTime()) < 2) then - return "Outbreak" + + -- Death and Decay if AoE + local ddcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Outbreak"]) + if (DKCrutch.person["foeCount"]>1) then + if (ddcd) and (ddcd <= 1) and (DKCrutch.runesUp[2] > 0) then + return "Death and Decay" end end @@ -794,6 +809,14 @@ function DKCrutch:AdviseFrostAbilityDW() -- Frost DK DualWield priority end end + -- Outbreak if nothing else… + obcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Outbreak"]) + if (obcd) and (obcd<=0) and (IsSpellInRange(DKCrutch.SpellList["Outbreak"], "target") == 1) then + if ( (ffExpiration - GetTime()) <2) or ( (bpExpiration - GetTime()) < 2) then + return "Outbreak" + end + end + -- Blood Tap if have at least 5 charges, and at least on fully depleted rune if (DKCrutch.SpellList["Blood Tap"]) then local name,_,_,count = DKCrutch:hasBuff("player", DKCrutch.SpellList["Blood Charge"]) @@ -823,24 +846,19 @@ function DKCrutch:AdviseFrostAbilityDW() -- Frost DK DualWield priority -- Priority 4: Howling Blast if Rime proc -- Howling Blast if Freezing Fog proc (Rime) + -- Have Death or Frost rune if (hbcd) and (hbcd <= 1) and ( (DKCrutch:hasBuff("player", DKCrutch.SpellList["Freezing Fog"])) or - ((DKCrutch.runesUp[4] == 0) and (DKCrutch.runesUp[2] == 0)) + ((DKCrutch.runesUp[4] > 0) or (DKCrutch.runesUp[3] > 0)) ) then return "Howling Blast" end -- Priority 5: Obliterate - -- Obliterate: if 2 death/unholy runes are up OR - -- 1 unholy UP and frost and death<2 OR - -- Killing Machine Procs AND runic power>=35 + -- Obliterate: Have unholy rune local obcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Obliterate"]) - if ((DKCrutch.runesUp[4] == 2) or (DKCrutch.runesUp[2] == 2)) or - ((DKCrutch.runesUp[2] == 1) and (DKCrutch.runesUp[4] < 2) and (DKCrutch.runesUp[3] < 2)) or - (DKCrutch:hasBuff("player", DKCrutch.SpellList["Killing Machine"]) and (UnitPower("player", 6) >= 35)) then - if (obcd) and (obcd <= 1) then - return "Obliterate" - end + if (DKCrutch.runesUp[2] > 0) and (obcd) and (obcd <= 1) then + return "Obliterate" end -- Howling Blast @@ -870,6 +888,14 @@ function DKCrutch:AdviseFrostAbility() return "Pillar of Frost" end + -- Soul Reaper, if target health < 35%, or 45% if has t15 4pcs + if (DKCrutch.SpellList["Soul Reaper"]) then + cd, _, enabled = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Soul Reaper"]) + if (enabled ~= nil) and (cd) and (cd<=0) and (UnitHealthMax("target")>0) and ((UnitHealth("target")/UnitHealthMax("target")<0.35) or ((UnitHealth("target")/UnitHealthMax("target")<0.45) and (DKCrutch.hasT15_4pcs))) then + return "Soul Reaper" + end + end + -- outbreak if frost fever or blood plague less than 2 sec remaining local ffName, _, _, _, _, _, ffExpiration, ffUnitCaster = DKCrutch:hasDeBuff("target", DKCrutch.SpellList["Frost Fever"], "player") local bpName, _, _, _, _, _, bpExpiration, bpUnitCaster = DKCrutch:hasDeBuff("target", DKCrutch.SpellList["Blood Plague"], "player") @@ -886,6 +912,14 @@ function DKCrutch:AdviseFrostAbility() end end + -- Death and Decay if AoE + local ddcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Outbreak"]) + if (DKCrutch.person["foeCount"]>1) then + if (ddcd) and (ddcd <= 1) and (DKCrutch.runesUp[2] > 0) then + return "Death and Decay" + end + end + -- howling blast local hbcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Howling Blast"]) if (hbcd) and (hbcd<=0) and ( IsSpellInRange(DKCrutch.SpellList["Howling Blast"],"target") == 1) then @@ -902,14 +936,6 @@ function DKCrutch:AdviseFrostAbility() end end - -- Soul Reaper, if target health < 35%, or 45% if has t15 4pcs - if (DKCrutch.SpellList["Soul Reaper"]) then - cd, _, enabled = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Soul Reaper"]) - if (enabled ~= nil) and (cd) and (cd<=0) and (UnitHealthMax("target")>0) and ((UnitHealth("target")/UnitHealthMax("target")<0.35) or ((UnitHealth("target")/UnitHealthMax("target")<0.45) and (DKCrutch.hasT15_4pcs))) then - return "Soul Reaper" - end - end - -- Blood Tap if have at least 5 charges, and at least on fully depleted rune if (DKCrutch.SpellList["Blood Tap"]) then local name,_,_,count = DKCrutch:hasBuff("player", DKCrutch.SpellList["Blood Charge"]) @@ -935,9 +961,9 @@ function DKCrutch:AdviseFrostAbility() return "Howling Blast" end - -- Obliterate if runic power<90 OR Killing Machine Proc + -- Obliterate if runic power<90 OR Killing Machine Proc, or no depleted rune local obcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Obliterate"]) - if (UnitPower("player", 6) >= 90) or (DKCrutch:hasBuff("player", DKCrutch.SpellList["Killing Machine"])) then + if (UnitPower("player", 6) >= 90) or (DKCrutch:hasBuff("player", DKCrutch.SpellList["Killing Machine"])) or (DKCrutch.depletedCount == 0) then if (obcd) and (obcd <= 1) then return "Obliterate" end @@ -976,6 +1002,14 @@ function DKCrutch:AdviseUnholyAbility() return "Raise Dead" end + -- Soul Reaper, if target health < 35% + if (DKCrutch.SpellList["Soul Reaper"]) then + cd, _, enabled = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Soul Reaper"]) + if (enabled ~= nil) and (cd) and (cd<=0) and (UnitHealthMax("target")>0) and ((UnitHealth("target")/UnitHealthMax("target")<0.35) or ((UnitHealth("target")/UnitHealthMax("target")<0.45) and (DKCrutch.hasT15_4pcs))) then + return "Soul Reaper" + end + end + -- outbreak if frost fever or blood plague less than 2 sec remaining local ffName, _, _, _, _, _, ffExpiration, ffUnitCaster = DKCrutch:hasDeBuff("target", DKCrutch.SpellList["Frost Fever"], "player") local bpName, _, _, _, _, _, bpExpiration, bpUnitCaster = DKCrutch:hasDeBuff("target", DKCrutch.SpellList["Blood Plague"], "player") @@ -999,16 +1033,6 @@ function DKCrutch:AdviseUnholyAbility() return "Plague Strike" end end - - -- icy touch - --[[ - cd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Icy Touch"]) - if (cd<=0) and ( IsSpellInRange(DKCrutch.SpellList["Icy Touch"],"target") == 1) then - if ( (ffExpiration - GetTime()) <3) then - return "Icy Touch" - end - end - ]]-- -- Blood Tap if have at least 10 charges, and have >=32 runic power if (DKCrutch.SpellList["Blood Tap"]) then @@ -1026,50 +1050,41 @@ function DKCrutch:AdviseUnholyAbility() end end - -- Soul Reaper, if target health < 35% - if (DKCrutch.SpellList["Soul Reaper"]) then - cd, _, enabled = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Soul Reaper"]) - if (enabled ~= nil) and (cd) and (cd<=0) and (UnitHealthMax("target")>0) and ((UnitHealth("target")/UnitHealthMax("target")<0.35) or ((UnitHealth("target")/UnitHealthMax("target")<0.45) and (DKCrutch.hasT15_4pcs))) then - return "Soul Reaper" - end - end - -- Dark Transform, if has pet and available cd, _, enabled = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Dark Transformation"]) if (enabled ~= nil) and (cd) and (cd<=0) and (IsUsableSpell(DKCrutch.SpellList["Dark Transformation"])) and ( PetHasActionBar() ) then return "Dark Transformation" end - -- Death Coik if runic power>90 + -- Death Coil if runic power>90 local dccd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Death Coil"]) local _, _, _, cost = GetSpellInfo(DKCrutch.SpellList["Death Coil"]) if (dccd) and (dccd <= 1) and (UnitPower("player", 6) > 90) then return "Death Coil" end - -- Scourge strike (or Death and Decay), if 4 death runes are up, or 2 unholy runes are up + -- Death and Decay if available and AoE local ddcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Death and Decay"]) - local sscd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Scourge Strike"]) - if (DKCrutch.runesUp[4] == 4) or (DKCrutch.runesUp[2] == 2) then - if (ddcd) and (ddcd <= 1) then - return "Death and Decay" - else - if (sscd) and (sscd <= 1) then - return "Scourge Strike" - end + if (ddcd) and (ddcd <= 1) and (DKCrutch.person["foeCount"]>1) then + return "Death and Decay" + else + -- Scourge strike if death runes are up, or unholy runes are up + local sscd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Scourge Strike"]) + if (sscd) and (sscd <= 1) and (DKCrutch.runesUp[4] > 0) or (DKCrutch.runesUp[2] > 0) then + return "Scourge Strike" end end - -- Blood boil, if AoE + -- Blood boil, if AoE and has death rune if (DKCrutch.person["foeCount"]>1) then - local fscd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Blood Boil"]) - if (fscd) and (fscd <= 1) then + local bbcd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Blood Boil"]) + if (DKCrutch.runesUp[4] > 0) and (bbcd) and (bbcd <= 1) then return "Blood Boil" end else -- Festering Strike if (blood=2 or frost=2) local fscd = DKCrutch:GetSpellCooldownRemaining(DKCrutch.SpellList["Festering Strike"]) - if (fscd) and (fscd <= 1) and ( (DKCrutch.runesUp[1] == 2) or (DKCrutch.runesUp[3] == 2) ) then + if (fscd) and (fscd <= 1) and ( (DKCrutch.runesUp[1] > 0) or (DKCrutch.runesUp[3] > 0) ) then return "Festering Strike" end end -- 1.7.9.5