Quantcast

Death Knight: Change how the level 75 talent is used for blood DKs.

Johnny C. Lam [05-27-14 - 18:27]
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
Filename
scripts/ovale_deathknight.lua
scripts/ovale_deathknight_spells.lua
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)