From edbd4eb2f423e014c0e903fda06c6fc0c866c2ed Mon Sep 17 00:00:00 2001 From: "Johnny C. Lam" Date: Tue, 27 May 2014 18:27:23 +0000 Subject: [PATCH] Death Knight: Change how the level 75 talent is used for blood DKs. Follow Sentry Totem's Guide to Using the Level 75 Talents: http://sentrytotem.com/classes/dk/guide-using-level-75-talents git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@1497 d5049fe3-3747-40f7-a4b5-f36d6801af5f --- scripts/ovale_deathknight.lua | 146 +++++++++++++++++++++++----------- scripts/ovale_deathknight_spells.lua | 3 + 2 files changed, 101 insertions(+), 48 deletions(-) diff --git a/scripts/ovale_deathknight.lua b/scripts/ovale_deathknight.lua index 0949ded..f35ebf6 100644 --- a/scripts/ovale_deathknight.lua +++ b/scripts/ovale_deathknight.lua @@ -51,48 +51,125 @@ AddFunction BloodDeathStrikeCondition IncomingDamage(5) >= MaxHealth() * 0.65 } -AddFunction BloodSingleTargetActions +AddFunction BloodSingleTargetLevel75Actions { - #death_strike,if=incoming_damage_5s>=health.max*0.65 - if BloodDeathStrikeCondition() Spell(death_strike) - - if { Rune(blood) < 2 or Rune(unholy) < 2 or Rune(frost) < 2 } and Spell(outbreak) PlagueLeech() - BloodApplyDiseases() - - #soul_reaper,if=target.health.pct-3*(target.health.pct%target.time_to_die)<=35&blood>=1 - if target.HealthPercent() - 3 * { target.HealthPercent() / target.TimeToDie() } <= 35 and Rune(blood) >= 1 Spell(soul_reaper_blood) - - if BuffPresent(crimson_scourge_buff) Spell(blood_boil) - if Rune(blood) >= 1 and { target.DebuffRemains(frost_fever_debuff) <= 10 or target.DebuffRemains(blood_plague_debuff) <= 10 } Spell(blood_boil) - if TalentPoints(blood_tap_talent) { - # Try to store one death rune in a blood rune socket. - if BuffStacks(blood_charge_buff) >= 5 and Rune(blood) < 1 Spell(blood_tap) - if BuffStacks(blood_charge_buff) >= 10 + # Don't cap FU rune pairs. + if Rune(unholy) >= 2 and Rune(frost) >= 2 Spell(death_strike) + if BuffStacks(blood_charge_buff) >= 12 { + # Spend any FU pairs so we can use Blood Tap twice to reactivate an FU pair as death runes. if Rune(unholy) >= 1 and Rune(frost) >= 1 Spell(death_strike) - if Rune(unholy) < 1 or Rune(frost) < 1 Spell(blood_tap) + # Blood Tap once to reactivate one F/U death rune. + if { Rune(unholy) < 1 and Rune(frost) < 1 } or { RunicPower() >= MaxRunicPower() - 10 } Spell(blood_tap) } + # Use Blood Tap a second time to reactivate another F/U death rune to bank a full FU pair. + if BuffStacks(blood_charge_buff) >= 5 + { + if Rune(unholy) >= 1 and Rune(frost) < 1 Spell(blood_tap) + if Rune(unholy) < 1 and Rune(frost) >= 1 Spell(blood_tap) + } + # Don't fully deplete a blood rune or else we may proc a blood rune into a death rune. if Rune(blood) >= 2 Spell(heart_strike) + # Rune Strike to build Blood Charges. + Spell(rune_strike) } if TalentPoints(runic_empowerment_talent) { - if Rune(blood) >= 2 Spell(heart_strike) + # Keep F/U runes fully depleted for Runic Empowerment procs. if Rune(unholy) >= 1 and Rune(frost) >= 1 Spell(death_strike) + # Don't fully deplete a blood rune or else we may proc a blood rune into a death rune. + if Rune(blood) >= 2 Spell(heart_strike) + # Rune Strike to proc Runic Empowerment. + Spell(rune_strike) } if TalentPoints(runic_corruption_talent) { # Try to put one rune of each set on cooldown to benefit from Runic Corruption procs. + if Rune(unholy) >= 2 and Rune(frost) >= 2 Spell(death_strike) if Rune(blood) >= 2 Spell(heart_strike) + # Rune Strike to proc Runic Corruption. + Spell(rune_strike) + } + if not TalentPoints(blood_tap_talent) and not TalentPoints(runic_empowerment_talent) and not TalentPoints(runic_corruption_talent) + { + # Bank a pair of FU runes for emergency Death Strike. + if Rune(unholy) >= 2 and Rune(frost) >= 2 Spell(death_strike) + # Use up blood runes to generate runic power. + if Rune(blood) >= 1 Spell(heart_strike) + # Dump runic power. + Spell(rune_strike) + } +} + +AddFunction BloodAoeLevel75Actions +{ + if TalentPoints(blood_tap_talent) + { + # Don't cap FU rune pairs. + if Rune(unholy) >= 2 and Rune(frost) >= 2 Spell(death_strike) + if BuffStacks(blood_charge_buff) >= 12 + { + # Spend any FU pairs so we can use Blood Tap twice to reactivate an FU pair as death runes. + if Rune(unholy) >= 1 and Rune(frost) >= 1 Spell(death_strike) + # Blood Tap once to reactivate one F/U death rune. + if { Rune(unholy) < 1 and Rune(frost) < 1 } or { RunicPower() >= MaxRunicPower() - 10 } Spell(blood_tap) + } + # Use Blood Tap a second time to reactivate another F/U death rune to bank a full FU pair. + if BuffStacks(blood_charge_buff) >= 5 + { + if Rune(unholy) >= 1 and Rune(frost) < 1 Spell(blood_tap) + if Rune(unholy) < 1 and Rune(frost) >= 1 Spell(blood_tap) + } + # Don't fully deplete a blood rune or else we may proc a blood rune into a death rune. + if Rune(blood) >= 2 Spell(blood_boil) + # Rune Strike to build Blood Charges. + Spell(rune_strike) + } + if TalentPoints(runic_empowerment_talent) + { + # Keep F/U runes fully depleted for Runic Empowerment procs. + if Rune(unholy) >= 1 and Rune(frost) >= 1 Spell(death_strike) + # Don't fully deplete a blood rune or else we may proc a blood rune into a death rune. + if Rune(blood) >= 2 Spell(blood_boil) + # Rune Strike to proc Runic Empowerment. + Spell(rune_strike) + } + if TalentPoints(runic_corruption_talent) + { + # Try to put one rune of each set on cooldown to benefit from Runic Corruption procs. if Rune(unholy) >= 2 and Rune(frost) >= 2 Spell(death_strike) + if Rune(blood) >= 2 Spell(blood_boil) + # Rune Strike to proc Runic Corruption. + Spell(rune_strike) } if not TalentPoints(blood_tap_talent) and not TalentPoints(runic_empowerment_talent) and not TalentPoints(runic_corruption_talent) { - if Rune(blood) >= 2 Spell(heart_strike) + # Bank a pair of FU runes for emergency Death Strike. + if Rune(unholy) >= 2 and Rune(frost) >= 2 Spell(death_strike) + # Use up blood runes to generate runic power. + if Rune(blood) >= 1 Spell(blood_boil) + # Dump runic power. + Spell(rune_strike) } +} + +AddFunction BloodSingleTargetActions +{ + #death_strike,if=incoming_damage_5s>=health.max*0.65 + if BloodDeathStrikeCondition() Spell(death_strike) - Spell(rune_strike) + if { Rune(blood) < 2 or Rune(unholy) < 2 or Rune(frost) < 2 } and Spell(outbreak) PlagueLeech() + BloodApplyDiseases() + + #soul_reaper,if=target.health.pct-3*(target.health.pct%target.time_to_die)<=35&blood>=1 + if target.HealthPercent() - 3 * { target.HealthPercent() / target.TimeToDie() } <= 35 and Rune(blood) >= 1 Spell(soul_reaper_blood) + + if BuffPresent(crimson_scourge_buff) Spell(blood_boil) + if Rune(blood) >= 1 and { target.DebuffRemains(frost_fever_debuff) <= 10 or target.DebuffRemains(blood_plague_debuff) <= 10 } Spell(blood_boil) + + BloodSingleTargetLevel75Actions() Spell(horn_of_winter) #death_strike,if=(unholy=2|frost=2)&incoming_damage_5s>=health.max*0.4 @@ -119,34 +196,7 @@ AddFunction BloodAoeActions } } - if TalentPoints(blood_tap_talent) - { - # Try to store one death rune in a blood rune socket. - if BuffStacks(blood_charge_buff) >= 5 and Rune(blood) < 1 Spell(blood_tap) - if BuffStacks(blood_charge_buff) >= 10 - { - if Rune(unholy) >= 1 and Rune(frost) >= 1 Spell(death_strike) - if Rune(unholy) < 1 or Rune(frost) < 1 Spell(blood_tap) - } - if Rune(blood) >= 2 Spell(blood_boil) - } - if TalentPoints(runic_empowerment_talent) - { - if Rune(blood) >= 2 Spell(blood_boil) - if Rune(unholy) >= 1 and Rune(frost) >= 1 Spell(death_strike) - } - if TalentPoints(runic_corruption_talent) - { - # Try to put one rune of each set on cooldown to benefit from Runic Corruption procs. - if Rune(blood) >= 2 Spell(blood_boil) - if Rune(unholy) >= 2 and Rune(frost) >= 2 Spell(death_strike) - } - if not TalentPoints(blood_tap_talent) and not TalentPoints(runic_empowerment_talent) and not TalentPoints(runic_corruption_talent) - { - if Rune(blood) >= 2 Spell(blood_boil) - } - - Spell(rune_strike) + BloodAoeLevel75Actions() Spell(horn_of_winter) #death_strike,if=(unholy=2|frost=2)&incoming_damage_5s>=health.max*0.4 diff --git a/scripts/ovale_deathknight_spells.lua b/scripts/ovale_deathknight_spells.lua index f1fe464..316364a 100644 --- a/scripts/ovale_deathknight_spells.lua +++ b/scripts/ovale_deathknight_spells.lua @@ -68,6 +68,7 @@ Define(death_coil 47541) SpellInfo(death_coil runicpower=40) SpellInfo(death_coil runicpower=32 if_spell=sudden_doom) SpellInfo(death_coil buff_runicpower_none=sudden_doom_buff if_spell=sudden_doom) + SpellAddBuff(death_coil blood_charge_buff=2 talent=blood_tap_talent) Define(death_grip 49576) SpellInfo(death_grip cd=25) Define(death_pact 48743) @@ -91,6 +92,7 @@ Define(frost_strike 49143) SpellInfo(frost_strike runicpower=35) SpellInfo(frost_strike runicpower=20 if_spell=improved_frost_presence if_stance=deathknight_frost_presence) SpellAddBuff(frost_strike killing_machine_buff=0 if_spell=killing_machine) + SpellAddBuff(frost_strike blood_charge_buff=2 talent=blood_tap_talent) Define(glyph_of_dark_simulacrum 63331) Define(glyph_of_icebound_fortitude 58673) Define(glyph_of_mind_freeze 58686) @@ -164,6 +166,7 @@ Define(rime_buff 59052) Define(roiling_blood_talent 1) Define(rune_strike 56815) SpellInfo(rune_strike runicpower=30) + SpellAddBuff(rune_strike blood_charge_buff=2 talent=blood_tap_talent) Define(rune_tap 48982) SpellInfo(rune_tap blood=1 cd=30) SpellInfo(rune_tap blood=0 addcd=-10 itemset=T15_tank itemcount=2) -- 1.7.9.5