Johnny C. Lam [12-14-14 - 16:26]
diff --git a/scripts/ovale_mage.lua b/scripts/ovale_mage.lua
index a309844..5be21ce 100644
--- a/scripts/ovale_mage.lua
+++ b/scripts/ovale_mage.lua
@@ -47,7 +47,7 @@ AddFunction ArcaneDefaultActions
#call_action_list,name=init_crystal,if=talent.prismatic_crystal.enabled&cooldown.prismatic_crystal.up
if Talent(prismatic_crystal_talent) and not SpellCooldown(prismatic_crystal) > 0 ArcaneInitCrystalActions()
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&pet.prismatic_crystal.active
- if Talent(prismatic_crystal_talent) and TotemPresent(crystal totem=prismatic_crystal) ArcaneCrystalSequenceActions()
+ if Talent(prismatic_crystal_talent) and TotemPresent(prismatic_crystal) ArcaneCrystalSequenceActions()
#call_action_list,name=aoe,if=active_enemies>=4
if Enemies() >= 4 ArcaneAoeActions()
#call_action_list,name=burn,if=time_to_die<mana.pct*0.35*spell_haste|cooldown.evocation.remains<=(mana.pct-30)*0.3*spell_haste|(buff.arcane_power.up&cooldown.evocation.remains<=(mana.pct-30)*0.4*spell_haste)
@@ -61,11 +61,11 @@ AddFunction ArcaneDefaultShortCdActions
#ice_floes,if=buff.ice_floes.down&(raid_event.movement.distance>0|raid_event.movement.in<action.arcane_missiles.cast_time)
if BuffExpires(ice_floes_buff) and { 0 > 0 or 600 < CastTime(arcane_missiles) } Spell(ice_floes)
#rune_of_power,if=buff.rune_of_power.remains<cast_time
- if RuneOfPowerRemaining() < CastTime(rune_of_power) Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < CastTime(rune_of_power) Spell(rune_of_power)
#call_action_list,name=init_crystal,if=talent.prismatic_crystal.enabled&cooldown.prismatic_crystal.up
if Talent(prismatic_crystal_talent) and not SpellCooldown(prismatic_crystal) > 0 ArcaneInitCrystalShortCdActions()
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&pet.prismatic_crystal.active
- if Talent(prismatic_crystal_talent) and TotemPresent(crystal totem=prismatic_crystal) ArcaneCrystalSequenceShortCdActions()
+ if Talent(prismatic_crystal_talent) and TotemPresent(prismatic_crystal) ArcaneCrystalSequenceShortCdActions()
#call_action_list,name=aoe,if=active_enemies>=4
if Enemies() >= 4 ArcaneAoeShortCdActions()
#call_action_list,name=burn,if=time_to_die<mana.pct*0.35*spell_haste|cooldown.evocation.remains<=(mana.pct-30)*0.3*spell_haste|(buff.arcane_power.up&cooldown.evocation.remains<=(mana.pct-30)*0.4*spell_haste)
@@ -84,7 +84,7 @@ AddFunction ArcaneDefaultCdActions
if { target.HealthPercent() < 25 or TimeInCombat() > 5 } and CheckBoxOn(opt_time_warp) and DebuffExpires(burst_haste_debuff any=1) Spell(time_warp)
unless BuffExpires(ice_floes_buff) and { 0 > 0 or 600 < CastTime(arcane_missiles) } and Spell(ice_floes)
- or RuneOfPowerRemaining() < CastTime(rune_of_power) and Spell(rune_of_power)
+ or TotemRemaining(rune_of_power) < CastTime(rune_of_power) and Spell(rune_of_power)
{
#mirror_image
Spell(mirror_image)
@@ -93,7 +93,7 @@ AddFunction ArcaneDefaultCdActions
#call_action_list,name=init_crystal,if=talent.prismatic_crystal.enabled&cooldown.prismatic_crystal.up
if Talent(prismatic_crystal_talent) and not SpellCooldown(prismatic_crystal) > 0 ArcaneInitCrystalCdActions()
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&pet.prismatic_crystal.active
- if Talent(prismatic_crystal_talent) and TotemPresent(crystal totem=prismatic_crystal) ArcaneCrystalSequenceCdActions()
+ if Talent(prismatic_crystal_talent) and TotemPresent(prismatic_crystal) ArcaneCrystalSequenceCdActions()
#call_action_list,name=aoe,if=active_enemies>=4
if Enemies() >= 4 ArcaneAoeCdActions()
#call_action_list,name=burn,if=time_to_die<mana.pct*0.35*spell_haste|cooldown.evocation.remains<=(mana.pct-30)*0.3*spell_haste|(buff.arcane_power.up&cooldown.evocation.remains<=(mana.pct-30)*0.4*spell_haste)
@@ -140,11 +140,11 @@ AddFunction ArcaneBurnActions
#supernova,if=time_to_die<8|charges=2
if TimeToDie() < 8 or Charges(supernova) == 2 Spell(supernova)
#nether_tempest,cycle_targets=1,if=target!=prismatic_crystal&buff.arcane_charge.stack=4&(active_dot.nether_tempest=0|(ticking&remains<3.6))
- if not target.Name("Prismatic Crystal") and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } Spell(nether_tempest)
+ if not target.Name(prismatic_crystal) and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } Spell(nether_tempest)
#arcane_orb,if=buff.arcane_charge.stack<4
if DebuffStacks(arcane_charge_debuff) < 4 Spell(arcane_orb)
#supernova,if=current_target=prismatic_crystal
- if target.Name("Prismatic Crystal") Spell(supernova)
+ if target.Name(prismatic_crystal) Spell(supernova)
#arcane_blast,if=buff.arcane_charge.stack=4&mana.pct>93
if DebuffStacks(arcane_charge_debuff) == 4 and ManaPercent() > 93 Spell(arcane_blast)
#arcane_missiles,if=buff.arcane_charge.stack=4
@@ -162,12 +162,12 @@ AddFunction ArcaneBurnShortCdActions
unless BuffStacks(arcane_missiles_buff) == 3 and BuffPresent(arcane_missiles_buff) and Spell(arcane_missiles)
or ArmorSetBonus(T17 4) and BuffPresent(arcane_instability_buff) and BuffRemaining(arcane_instability_buff) < ExecuteTime(arcane_blast) and BuffPresent(arcane_missiles_buff) and Spell(arcane_missiles)
or { TimeToDie() < 8 or Charges(supernova) == 2 } and Spell(supernova)
- or not target.Name("Prismatic Crystal") and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } and Spell(nether_tempest)
+ or not target.Name(prismatic_crystal) and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } and Spell(nether_tempest)
{
#arcane_orb,if=buff.arcane_charge.stack<4
if DebuffStacks(arcane_charge_debuff) < 4 Spell(arcane_orb)
- unless target.Name("Prismatic Crystal") and Spell(supernova)
+ unless target.Name(prismatic_crystal) and Spell(supernova)
{
#presence_of_mind,if=mana.pct>96
if ManaPercent() > 96 Spell(presence_of_mind)
@@ -195,9 +195,9 @@ AddFunction ArcaneBurnCdActions
unless BuffStacks(arcane_missiles_buff) == 3 and BuffPresent(arcane_missiles_buff) and Spell(arcane_missiles)
or ArmorSetBonus(T17 4) and BuffPresent(arcane_instability_buff) and BuffRemaining(arcane_instability_buff) < ExecuteTime(arcane_blast) and BuffPresent(arcane_missiles_buff) and Spell(arcane_missiles)
or { TimeToDie() < 8 or Charges(supernova) == 2 } and Spell(supernova)
- or not target.Name("Prismatic Crystal") and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } and Spell(nether_tempest)
+ or not target.Name(prismatic_crystal) and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } and Spell(nether_tempest)
or DebuffStacks(arcane_charge_debuff) < 4 and Spell(arcane_orb)
- or target.Name("Prismatic Crystal") and Spell(supernova)
+ or target.Name(prismatic_crystal) and Spell(supernova)
or DebuffStacks(arcane_charge_debuff) == 4 and ManaPercent() > 93 and Spell(arcane_blast)
or DebuffStacks(arcane_charge_debuff) == 4 and BuffPresent(arcane_missiles_buff) and Spell(arcane_missiles)
or ManaPercent() < 96 and Spell(supernova)
@@ -216,7 +216,7 @@ AddFunction ArcaneConserveActions
#arcane_missiles,if=set_bonus.tier17_4pc&buff.arcane_instability.react&buff.arcane_instability.remains<action.arcane_blast.execute_time
if ArmorSetBonus(T17 4) and BuffPresent(arcane_instability_buff) and BuffRemaining(arcane_instability_buff) < ExecuteTime(arcane_blast) and BuffPresent(arcane_missiles_buff) Spell(arcane_missiles)
#nether_tempest,cycle_targets=1,if=target!=prismatic_crystal&buff.arcane_charge.stack=4&(active_dot.nether_tempest=0|(ticking&remains<3.6))
- if not target.Name("Prismatic Crystal") and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } Spell(nether_tempest)
+ if not target.Name(prismatic_crystal) and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } Spell(nether_tempest)
#supernova,if=time_to_die<8|(charges=2&(buff.arcane_power.up|!cooldown.arcane_power.up)&(!talent.prismatic_crystal.enabled|cooldown.prismatic_crystal.remains>8))
if TimeToDie() < 8 or Charges(supernova) == 2 and { BuffPresent(arcane_power_buff) or not { not SpellCooldown(arcane_power) > 0 } } and { not Talent(prismatic_crystal_talent) or SpellCooldown(prismatic_crystal) > 8 } Spell(supernova)
#arcane_blast,if=buff.arcane_charge.stack=4&mana.pct>93
@@ -224,9 +224,9 @@ AddFunction ArcaneConserveActions
#arcane_missiles,if=buff.arcane_charge.stack=4&(!talent.overpowered.enabled|cooldown.arcane_power.remains>10*spell_haste)
if DebuffStacks(arcane_charge_debuff) == 4 and { not Talent(overpowered_talent) or SpellCooldown(arcane_power) > 10 * 100 / { 100 + SpellHaste() } } and BuffPresent(arcane_missiles_buff) Spell(arcane_missiles)
#supernova,if=mana.pct<96&(buff.arcane_missiles.stack<2|buff.arcane_charge.stack=4)&(buff.arcane_power.up|(charges=1&cooldown.arcane_power.remains>recharge_time))&(!talent.prismatic_crystal.enabled|current_target=prismatic_crystal|(charges=1&cooldown.prismatic_crystal.remains>recharge_time+8))
- if ManaPercent() < 96 and { BuffStacks(arcane_missiles_buff) < 2 or DebuffStacks(arcane_charge_debuff) == 4 } and { BuffPresent(arcane_power_buff) or Charges(supernova) == 1 and SpellCooldown(arcane_power) > SpellChargeCooldown(supernova) } and { not Talent(prismatic_crystal_talent) or target.Name("Prismatic Crystal") or Charges(supernova) == 1 and SpellCooldown(prismatic_crystal) > SpellChargeCooldown(supernova) + 8 } Spell(supernova)
+ if ManaPercent() < 96 and { BuffStacks(arcane_missiles_buff) < 2 or DebuffStacks(arcane_charge_debuff) == 4 } and { BuffPresent(arcane_power_buff) or Charges(supernova) == 1 and SpellCooldown(arcane_power) > SpellChargeCooldown(supernova) } and { not Talent(prismatic_crystal_talent) or target.Name(prismatic_crystal) or Charges(supernova) == 1 and SpellCooldown(prismatic_crystal) > SpellChargeCooldown(supernova) + 8 } Spell(supernova)
#nether_tempest,cycle_targets=1,if=target!=prismatic_crystal&buff.arcane_charge.stack=4&(active_dot.nether_tempest=0|(ticking&remains<(10-3*talent.arcane_orb.enabled)*spell_haste))
- if not target.Name("Prismatic Crystal") and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < { 10 - 3 * Talent(arcane_orb_talent) } * 100 / { 100 + SpellHaste() } } Spell(nether_tempest)
+ if not target.Name(prismatic_crystal) and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < { 10 - 3 * Talent(arcane_orb_talent) } * 100 / { 100 + SpellHaste() } } Spell(nether_tempest)
#arcane_barrage,if=buff.arcane_charge.stack=4
if DebuffStacks(arcane_charge_debuff) == 4 Spell(arcane_barrage)
#arcane_blast
@@ -239,7 +239,7 @@ AddFunction ArcaneConserveShortCdActions
{
unless { BuffStacks(arcane_missiles_buff) == 3 or Talent(overpowered_talent) and BuffPresent(arcane_power_buff) and BuffRemaining(arcane_power_buff) < ExecuteTime(arcane_blast) } and BuffPresent(arcane_missiles_buff) and Spell(arcane_missiles)
or ArmorSetBonus(T17 4) and BuffPresent(arcane_instability_buff) and BuffRemaining(arcane_instability_buff) < ExecuteTime(arcane_blast) and BuffPresent(arcane_missiles_buff) and Spell(arcane_missiles)
- or not target.Name("Prismatic Crystal") and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } and Spell(nether_tempest)
+ or not target.Name(prismatic_crystal) and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } and Spell(nether_tempest)
or { TimeToDie() < 8 or Charges(supernova) == 2 and { BuffPresent(arcane_power_buff) or not { not SpellCooldown(arcane_power) > 0 } } and { not Talent(prismatic_crystal_talent) or SpellCooldown(prismatic_crystal) > 8 } } and Spell(supernova)
{
#arcane_orb,if=buff.arcane_charge.stack<2
@@ -249,8 +249,8 @@ AddFunction ArcaneConserveShortCdActions
unless DebuffStacks(arcane_charge_debuff) == 4 and ManaPercent() > 93 and Spell(arcane_blast)
or DebuffStacks(arcane_charge_debuff) == 4 and { not Talent(overpowered_talent) or SpellCooldown(arcane_power) > 10 * 100 / { 100 + SpellHaste() } } and BuffPresent(arcane_missiles_buff) and Spell(arcane_missiles)
- or ManaPercent() < 96 and { BuffStacks(arcane_missiles_buff) < 2 or DebuffStacks(arcane_charge_debuff) == 4 } and { BuffPresent(arcane_power_buff) or Charges(supernova) == 1 and SpellCooldown(arcane_power) > SpellChargeCooldown(supernova) } and { not Talent(prismatic_crystal_talent) or target.Name("Prismatic Crystal") or Charges(supernova) == 1 and SpellCooldown(prismatic_crystal) > SpellChargeCooldown(supernova) + 8 } and Spell(supernova)
- or not target.Name("Prismatic Crystal") and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < { 10 - 3 * Talent(arcane_orb_talent) } * 100 / { 100 + SpellHaste() } } and Spell(nether_tempest)
+ or ManaPercent() < 96 and { BuffStacks(arcane_missiles_buff) < 2 or DebuffStacks(arcane_charge_debuff) == 4 } and { BuffPresent(arcane_power_buff) or Charges(supernova) == 1 and SpellCooldown(arcane_power) > SpellChargeCooldown(supernova) } and { not Talent(prismatic_crystal_talent) or target.Name(prismatic_crystal) or Charges(supernova) == 1 and SpellCooldown(prismatic_crystal) > SpellChargeCooldown(supernova) + 8 } and Spell(supernova)
+ or not target.Name(prismatic_crystal) and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < { 10 - 3 * Talent(arcane_orb_talent) } * 100 / { 100 + SpellHaste() } } and Spell(nether_tempest)
or DebuffStacks(arcane_charge_debuff) == 4 and Spell(arcane_barrage)
{
#presence_of_mind,if=buff.arcane_charge.stack<2
@@ -278,7 +278,7 @@ AddFunction ArcaneCooldownsCdActions
#arcane_torrent
Spell(arcane_torrent_mana)
#potion,name=draenic_intellect,if=buff.arcane_power.up&(!talent.prismatic_crystal.enabled|pet.prismatic_crystal.active)
- if BuffPresent(arcane_power_buff) and { not Talent(prismatic_crystal_talent) or TotemPresent(crystal totem=prismatic_crystal) } UsePotionIntellect()
+ if BuffPresent(arcane_power_buff) and { not Talent(prismatic_crystal_talent) or TotemPresent(prismatic_crystal) } UsePotionIntellect()
}
# ActionList: ArcaneCrystalSequenceActions --> main, shortcd, cd
@@ -356,14 +356,14 @@ AddFunction ArcanePrecombatShortCdActions
# CHANGE: Only suggest Rune of Power if the rune needs to be refreshed prior to pull.
#rune_of_power
#Spell(rune_of_power)
- if RuneOfPowerRemaining() < 150 Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < 150 Spell(rune_of_power)
}
}
AddFunction ArcanePrecombatCdActions
{
unless { BuffExpires(critical_strike_buff any=1) or BuffExpires(spell_power_multiplier_buff any=1) } and Spell(arcane_brilliance)
- or RuneOfPowerRemaining() < 150 and Spell(rune_of_power)
+ or TotemRemaining(rune_of_power) < 150 and Spell(rune_of_power)
{
#mirror_image
Spell(mirror_image)
@@ -427,7 +427,7 @@ AddFunction FireDefaultActions
#call_action_list,name=combust_sequence,if=pyro_chain
if GetState(pyro_chain) > 0 FireCombustSequenceActions()
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&pet.prismatic_crystal.active
- if Talent(prismatic_crystal_talent) and TotemPresent(crystal totem=prismatic_crystal) FireCrystalSequenceActions()
+ if Talent(prismatic_crystal_talent) and TotemPresent(prismatic_crystal) FireCrystalSequenceActions()
#call_action_list,name=init_combust,if=!pyro_chain
if not GetState(pyro_chain) > 0 FireInitCombustActions()
#call_action_list,name=aoe,if=active_enemies>=4
@@ -445,15 +445,15 @@ AddFunction FireDefaultShortCdActions
#ice_floes,if=buff.ice_floes.down&(raid_event.movement.distance>0|raid_event.movement.in<action.fireball.cast_time)
if BuffExpires(ice_floes_buff) and { 0 > 0 or 600 < CastTime(fireball) } Spell(ice_floes)
#rune_of_power,if=buff.rune_of_power.remains<cast_time
- if RuneOfPowerRemaining() < CastTime(rune_of_power) Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < CastTime(rune_of_power) Spell(rune_of_power)
#call_action_list,name=combust_sequence,if=pyro_chain
if GetState(pyro_chain) > 0 FireCombustSequenceShortCdActions()
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&pet.prismatic_crystal.active
- if Talent(prismatic_crystal_talent) and TotemPresent(crystal totem=prismatic_crystal) FireCrystalSequenceShortCdActions()
+ if Talent(prismatic_crystal_talent) and TotemPresent(prismatic_crystal) FireCrystalSequenceShortCdActions()
#call_action_list,name=init_combust,if=!pyro_chain
if not GetState(pyro_chain) > 0 FireInitCombustShortCdActions()
#rune_of_power,if=buff.rune_of_power.remains<action.fireball.execute_time+gcd.max&!(buff.heating_up.up&action.fireball.in_flight)
- if RuneOfPowerRemaining() < ExecuteTime(fireball) + GCD() and not { BuffPresent(heating_up_buff) and { InFlightToTarget(fireball) or InFlightToTarget(frostfire_bolt) } } Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < ExecuteTime(fireball) + GCD() and not { BuffPresent(heating_up_buff) and { InFlightToTarget(fireball) or InFlightToTarget(frostfire_bolt) } } Spell(rune_of_power)
#call_action_list,name=aoe,if=active_enemies>=4
if Enemies() >= 4 FireAoeShortCdActions()
#call_action_list,name=single_target
@@ -468,16 +468,16 @@ AddFunction FireDefaultCdActions
if { target.HealthPercent() < 25 or TimeInCombat() > 5 } and CheckBoxOn(opt_time_warp) and DebuffExpires(burst_haste_debuff any=1) Spell(time_warp)
unless BuffExpires(ice_floes_buff) and { 0 > 0 or 600 < CastTime(fireball) } and Spell(ice_floes)
- or RuneOfPowerRemaining() < CastTime(rune_of_power) and Spell(rune_of_power)
+ or TotemRemaining(rune_of_power) < CastTime(rune_of_power) and Spell(rune_of_power)
{
#call_action_list,name=combust_sequence,if=pyro_chain
if GetState(pyro_chain) > 0 FireCombustSequenceCdActions()
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&pet.prismatic_crystal.active
- if Talent(prismatic_crystal_talent) and TotemPresent(crystal totem=prismatic_crystal) FireCrystalSequenceCdActions()
+ if Talent(prismatic_crystal_talent) and TotemPresent(prismatic_crystal) FireCrystalSequenceCdActions()
#call_action_list,name=init_combust,if=!pyro_chain
if not GetState(pyro_chain) > 0 FireInitCombustCdActions()
- unless RuneOfPowerRemaining() < ExecuteTime(fireball) + GCD() and not { BuffPresent(heating_up_buff) and { InFlightToTarget(fireball) or InFlightToTarget(frostfire_bolt) } } and Spell(rune_of_power)
+ unless TotemRemaining(rune_of_power) < ExecuteTime(fireball) + GCD() and not { BuffPresent(heating_up_buff) and { InFlightToTarget(fireball) or InFlightToTarget(frostfire_bolt) } } and Spell(rune_of_power)
{
#mirror_image,if=!(buff.heating_up.up&action.fireball.in_flight)
if not { BuffPresent(heating_up_buff) and { InFlightToTarget(fireball) or InFlightToTarget(frostfire_bolt) } } Spell(mirror_image)
@@ -496,7 +496,7 @@ AddFunction FireActiveTalentsActions
#call_action_list,name=living_bomb,if=talent.living_bomb.enabled
if Talent(living_bomb_talent) FireLivingBombActions()
#blast_wave,if=(!talent.incanters_flow.enabled|buff.incanters_flow.stack>=4)&(time_to_die<10|!talent.prismatic_crystal.enabled|(charges=1&cooldown.prismatic_crystal.remains>recharge_time)|charges=2|current_target=prismatic_crystal)
- if { not Talent(incanters_flow_talent) or BuffStacks(incanters_flow_buff) >= 4 } and { TimeToDie() < 10 or not Talent(prismatic_crystal_talent) or Charges(blast_wave) == 1 and SpellCooldown(prismatic_crystal) > SpellChargeCooldown(blast_wave) or Charges(blast_wave) == 2 or target.Name("Prismatic Crystal") } Spell(blast_wave)
+ if { not Talent(incanters_flow_talent) or BuffStacks(incanters_flow_buff) >= 4 } and { TimeToDie() < 10 or not Talent(prismatic_crystal_talent) or Charges(blast_wave) == 1 and SpellCooldown(prismatic_crystal) > SpellChargeCooldown(blast_wave) or Charges(blast_wave) == 2 or target.Name(prismatic_crystal) } Spell(blast_wave)
}
AddFunction FireActiveTalentsShortCdActions
@@ -669,7 +669,7 @@ AddFunction FireLivingBombActions
#inferno_blast,cycle_targets=1,if=dot.living_bomb.ticking&active_dot.living_bomb<active_enemies
if target.DebuffPresent(living_bomb_debuff) and DebuffCountOnAny(living_bomb_debuff) < Enemies() Spell(inferno_blast)
#living_bomb,cycle_targets=1,if=target!=prismatic_crystal&(active_dot.living_bomb=0|(ticking&active_dot.living_bomb=1))&(((!talent.incanters_flow.enabled|incanters_flow_dir<0|buff.incanters_flow.stack=5)&remains<3.6)|((incanters_flow_dir>0|buff.incanters_flow.stack=1)&remains<gcd.max))&target.time_to_die>remains+12
- if not target.Name("Prismatic Crystal") and { not DebuffCountOnAny(living_bomb_debuff) > 0 or target.DebuffPresent(living_bomb_debuff) and DebuffCountOnAny(living_bomb_debuff) == 1 } and { { not Talent(incanters_flow_talent) or BuffDirection(incanters_flow_buff) < 0 or BuffStacks(incanters_flow_buff) == 5 } and target.DebuffRemaining(living_bomb_debuff) < 3.6 or { BuffDirection(incanters_flow_buff) > 0 or BuffStacks(incanters_flow_buff) == 1 } and target.DebuffRemaining(living_bomb_debuff) < GCD() } and target.TimeToDie() > target.DebuffRemaining(living_bomb_debuff) + 12 Spell(living_bomb)
+ if not target.Name(prismatic_crystal) and { not DebuffCountOnAny(living_bomb_debuff) > 0 or target.DebuffPresent(living_bomb_debuff) and DebuffCountOnAny(living_bomb_debuff) == 1 } and { { not Talent(incanters_flow_talent) or BuffDirection(incanters_flow_buff) < 0 or BuffStacks(incanters_flow_buff) == 5 } and target.DebuffRemaining(living_bomb_debuff) < 3.6 or { BuffDirection(incanters_flow_buff) > 0 or BuffStacks(incanters_flow_buff) == 1 } and target.DebuffRemaining(living_bomb_debuff) < GCD() } and target.TimeToDie() > target.DebuffRemaining(living_bomb_debuff) + 12 Spell(living_bomb)
}
# ActionList: FirePrecombatActions --> main, shortcd, cd
@@ -692,14 +692,14 @@ AddFunction FirePrecombatShortCdActions
# CHANGE: Only suggest Rune of Power if the rune needs to be refreshed prior to pull.
#rune_of_power
#Spell(rune_of_power)
- if RuneOfPowerRemaining() < 150 Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < 150 Spell(rune_of_power)
}
}
AddFunction FirePrecombatCdActions
{
unless { BuffExpires(critical_strike_buff any=1) or BuffExpires(spell_power_multiplier_buff any=1) } and Spell(arcane_brilliance)
- or RuneOfPowerRemaining() < 150 and Spell(rune_of_power)
+ or TotemRemaining(rune_of_power) < 150 and Spell(rune_of_power)
{
#mirror_image
Spell(mirror_image)
@@ -815,7 +815,7 @@ AddIcon specialization=fire help=cd checkbox=opt_mage_fire_aoe
AddFunction FrostDefaultActions
{
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&(cooldown.prismatic_crystal.remains<=gcd.max|pet.prismatic_crystal.active)
- if Talent(prismatic_crystal_talent) and { SpellCooldown(prismatic_crystal) <= GCD() or TotemPresent(crystal totem=prismatic_crystal) } FrostCrystalSequenceActions()
+ if Talent(prismatic_crystal_talent) and { SpellCooldown(prismatic_crystal) <= GCD() or TotemPresent(prismatic_crystal) } FrostCrystalSequenceActions()
#call_action_list,name=aoe,if=active_enemies>=4
if Enemies() >= 4 FrostAoeActions()
#call_action_list,name=single_target
@@ -827,13 +827,13 @@ AddFunction FrostDefaultShortCdActions
#ice_floes,if=buff.ice_floes.down&(raid_event.movement.distance>0|raid_event.movement.in<action.frostbolt.cast_time)
if BuffExpires(ice_floes_buff) and { 0 > 0 or 600 < CastTime(frostbolt) } Spell(ice_floes)
#rune_of_power,if=buff.rune_of_power.remains<cast_time
- if RuneOfPowerRemaining() < CastTime(rune_of_power) Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < CastTime(rune_of_power) Spell(rune_of_power)
# CHANGE: Check for the talent before any of the spell properties for Prismatic Crystal.
#rune_of_power,if=(cooldown.icy_veins.remains<gcd.max&buff.rune_of_power.remains<20)|(cooldown.prismatic_crystal.remains<gcd.max&buff.rune_of_power.remains<10)
- #if SpellCooldown(icy_veins) < GCD() and RuneOfPowerRemaining() < 20 or SpellCooldown(prismatic_crystal) < GCD() and RuneOfPowerRemaining() < 10 Spell(rune_of_power)
- if SpellCooldown(icy_veins) < GCD() and RuneOfPowerRemaining() < 20 or { not Talent(prismatic_crystal_talent) or SpellCooldown(prismatic_crystal) < GCD() } and RuneOfPowerRemaining() < 10 Spell(rune_of_power)
+ #if SpellCooldown(icy_veins) < GCD() and TotemRemaining(rune_of_power) < 20 or SpellCooldown(prismatic_crystal) < GCD() and TotemRemaining(rune_of_power) < 10 Spell(rune_of_power)
+ if SpellCooldown(icy_veins) < GCD() and TotemRemaining(rune_of_power) < 20 or { not Talent(prismatic_crystal_talent) or SpellCooldown(prismatic_crystal) < GCD() } and TotemRemaining(rune_of_power) < 10 Spell(rune_of_power)
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&(cooldown.prismatic_crystal.remains<=gcd.max|pet.prismatic_crystal.active)
- if Talent(prismatic_crystal_talent) and { SpellCooldown(prismatic_crystal) <= GCD() or TotemPresent(crystal totem=prismatic_crystal) } FrostCrystalSequenceShortCdActions()
+ if Talent(prismatic_crystal_talent) and { SpellCooldown(prismatic_crystal) <= GCD() or TotemPresent(prismatic_crystal) } FrostCrystalSequenceShortCdActions()
#call_action_list,name=aoe,if=active_enemies>=4
if Enemies() >= 4 FrostAoeShortCdActions()
#call_action_list,name=single_target
@@ -850,13 +850,13 @@ AddFunction FrostDefaultCdActions
Spell(mirror_image)
unless BuffExpires(ice_floes_buff) and { 0 > 0 or 600 < CastTime(frostbolt) } and Spell(ice_floes)
- or RuneOfPowerRemaining() < CastTime(rune_of_power) and Spell(rune_of_power)
- or { SpellCooldown(icy_veins) < GCD() and RuneOfPowerRemaining() < 20 or { not Talent(prismatic_crystal_talent) or SpellCooldown(prismatic_crystal) < GCD() } and RuneOfPowerRemaining() < 10 } and Spell(rune_of_power)
+ or TotemRemaining(rune_of_power) < CastTime(rune_of_power) and Spell(rune_of_power)
+ or { SpellCooldown(icy_veins) < GCD() and TotemRemaining(rune_of_power) < 20 or { not Talent(prismatic_crystal_talent) or SpellCooldown(prismatic_crystal) < GCD() } and TotemRemaining(rune_of_power) < 10 } and Spell(rune_of_power)
{
#call_action_list,name=cooldowns,if=time_to_die<24
if TimeToDie() < 24 FrostCooldownsCdActions()
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&(cooldown.prismatic_crystal.remains<=gcd.max|pet.prismatic_crystal.active)
- if Talent(prismatic_crystal_talent) and { SpellCooldown(prismatic_crystal) <= GCD() or TotemPresent(crystal totem=prismatic_crystal) } FrostCrystalSequenceCdActions()
+ if Talent(prismatic_crystal_talent) and { SpellCooldown(prismatic_crystal) <= GCD() or TotemPresent(prismatic_crystal) } FrostCrystalSequenceCdActions()
#call_action_list,name=aoe,if=active_enemies>=4
if Enemies() >= 4 FrostAoeCdActions()
#call_action_list,name=single_target
@@ -921,10 +921,10 @@ AddFunction FrostCrystalSequenceActions
{
# CHANGE: Workaround possible bug in SimulationCraft APL.
#frost_bomb,if=active_enemies=1¤t_target!=prismatic_crystal&remains<10
- #if Enemies() == 1 and not target.Name("Prismatic Crystal") and target.DebuffRemaining(frost_bomb_debuff) < 10 Spell(frost_bomb)
- if Enemies() == 1 and not target.Name("Prismatic Crystal") and target.DebuffRemaining(frost_bomb_debuff) < MaxTravelTime(ice_lance) Spell(frost_bomb)
+ #if Enemies() == 1 and not target.Name(prismatic_crystal) and target.DebuffRemaining(frost_bomb_debuff) < 10 Spell(frost_bomb)
+ if Enemies() == 1 and not target.Name(prismatic_crystal) and target.DebuffRemaining(frost_bomb_debuff) < MaxTravelTime(ice_lance) Spell(frost_bomb)
#frost_bomb,if=talent.prismatic_crystal.enabled¤t_target=prismatic_crystal&active_enemies>1&!ticking
- if Talent(prismatic_crystal_talent) and target.Name("Prismatic Crystal") and Enemies() > 1 and not target.DebuffPresent(frost_bomb_debuff) Spell(frost_bomb)
+ if Talent(prismatic_crystal_talent) and target.Name(prismatic_crystal) and Enemies() > 1 and not target.DebuffPresent(frost_bomb_debuff) Spell(frost_bomb)
#ice_lance,if=buff.fingers_of_frost.react=2|(buff.fingers_of_frost.react&active_dot.frozen_orb>=1)
if BuffStacks(fingers_of_frost_buff) == 2 or BuffPresent(fingers_of_frost_buff) and DebuffCountOnAny(frozen_orb_debuff) >= 1 Spell(ice_lance)
#ice_nova,if=charges=2
@@ -943,7 +943,7 @@ AddFunction FrostCrystalSequenceActions
AddFunction FrostCrystalSequenceShortCdActions
{
- unless Enemies() == 1 and not target.Name("Prismatic Crystal") and target.DebuffRemaining(frost_bomb_debuff) < MaxTravelTime(ice_lance) and Spell(frost_bomb)
+ unless Enemies() == 1 and not target.Name(prismatic_crystal) and target.DebuffRemaining(frost_bomb_debuff) < MaxTravelTime(ice_lance) and Spell(frost_bomb)
{
#frozen_orb
Spell(frozen_orb)
@@ -954,7 +954,7 @@ AddFunction FrostCrystalSequenceShortCdActions
AddFunction FrostCrystalSequenceCdActions
{
- unless Enemies() == 1 and not target.Name("Prismatic Crystal") and target.DebuffRemaining(frost_bomb_debuff) < MaxTravelTime(ice_lance) and Spell(frost_bomb)
+ unless Enemies() == 1 and not target.Name(prismatic_crystal) and target.DebuffRemaining(frost_bomb_debuff) < MaxTravelTime(ice_lance) and Spell(frost_bomb)
or Spell(frozen_orb)
{
#call_action_list,name=cooldowns
@@ -984,7 +984,7 @@ AddFunction FrostPrecombatShortCdActions
# CHANGE: Only suggest Rune of Power if the rune needs to be refreshed prior to pull.
#rune_of_power
#Spell(rune_of_power)
- if RuneOfPowerRemaining() < 150 Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < 150 Spell(rune_of_power)
}
}
@@ -992,7 +992,7 @@ AddFunction FrostPrecombatCdActions
{
unless { BuffExpires(critical_strike_buff any=1) or BuffExpires(spell_power_multiplier_buff any=1) } and Spell(arcane_brilliance)
or not pet.Present() and Spell(water_elemental)
- or RuneOfPowerRemaining() < 150 and Spell(rune_of_power)
+ or TotemRemaining(rune_of_power) < 150 and Spell(rune_of_power)
{
#mirror_image
Spell(mirror_image)
diff --git a/scripts/ovale_monk.lua b/scripts/ovale_monk.lua
index 4e1aabf..4fdfb89 100644
--- a/scripts/ovale_monk.lua
+++ b/scripts/ovale_monk.lua
@@ -364,8 +364,8 @@ AddFunction WindwalkerDefaultCdActions
if BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 Spell(blood_fury_apsp)
#berserking,if=buff.tigereye_brew_use.up|target.time_to_die<18
if BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 Spell(berserking)
- #arcane_torrent,if=buff.tigereye_brew_use.up|target.time_to_die<18
- if BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 Spell(arcane_torrent_chi)
+ #arcane_torrent,if=chi.max-chi>=1&(buff.tigereye_brew_use.up|target.time_to_die<18)
+ if MaxChi() - Chi() >= 1 and { BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 } Spell(arcane_torrent_chi)
unless BuffRemaining(tiger_power_buff) <= 3 and Spell(tiger_palm)
or { target.DebuffExpires(rising_sun_kick_debuff) or target.DebuffRemaining(rising_sun_kick_debuff) < 3 } and Spell(rising_sun_kick)
diff --git a/scripts/ovale_paladin.lua b/scripts/ovale_paladin.lua
index f1031cf..89df950 100644
--- a/scripts/ovale_paladin.lua
+++ b/scripts/ovale_paladin.lua
@@ -338,12 +338,16 @@ AddFunction RetributionDefaultActions
if Talent(empowered_seals_talent) and TimeInCombat() < 2 Spell(judgment)
#seraphim
Spell(seraphim)
- #call_action_list,name=aoe,if=active_enemies>=5
- if Enemies() >= 5 RetributionAoeActions()
- #call_action_list,name=cleave,if=active_enemies>=3
- if Enemies() >= 3 RetributionCleaveActions()
- #call_action_list,name=single
- RetributionSingleActions()
+ #wait,sec=cooldown.seraphim.remains,if=talent.seraphim.enabled&cooldown.seraphim.remains>0&cooldown.seraphim.remains<gcd.max&holy_power>=5
+ unless Talent(seraphim_talent) and SpellCooldown(seraphim) > 0 and SpellCooldown(seraphim) < GCD() and HolyPower() >= 5 and SpellCooldown(seraphim) > 0
+ {
+ #call_action_list,name=aoe,if=active_enemies>=5
+ if Enemies() >= 5 RetributionAoeActions()
+ #call_action_list,name=cleave,if=active_enemies>=3
+ if Enemies() >= 3 RetributionCleaveActions()
+ #call_action_list,name=single
+ RetributionSingleActions()
+ }
}
AddFunction RetributionDefaultShortCdActions
@@ -501,14 +505,14 @@ AddFunction RetributionSingleActions
if BuffPresent(divine_crusader_buff) and HolyPower() == 5 and Enemies() == 2 and not Talent(final_verdict_talent) Spell(divine_storm)
#divine_storm,if=holy_power=5&active_enemies=2&buff.final_verdict.up
if HolyPower() == 5 and Enemies() == 2 and BuffPresent(final_verdict_buff) Spell(divine_storm)
- #divine_storm,if=buff.divine_crusader.react&holy_power=5&(talent.seraphim.enabled&cooldown.seraphim.remains<=5)
- if BuffPresent(divine_crusader_buff) and HolyPower() == 5 and Talent(seraphim_talent) and SpellCooldown(seraphim) <= 5 Spell(divine_storm)
+ #divine_storm,if=buff.divine_crusader.react&holy_power=5&(talent.seraphim.enabled&cooldown.seraphim.remains<=4)
+ if BuffPresent(divine_crusader_buff) and HolyPower() == 5 and Talent(seraphim_talent) and SpellCooldown(seraphim) <= 4 Spell(divine_storm)
#templars_verdict,if=holy_power=5|buff.holy_avenger.up&holy_power>=3&(!talent.seraphim.enabled|cooldown.seraphim.remains>5)
if HolyPower() == 5 or BuffPresent(holy_avenger_buff) and HolyPower() >= 3 and { not Talent(seraphim_talent) or SpellCooldown(seraphim) > 5 } Spell(templars_verdict)
- #templars_verdict,if=buff.divine_purpose.react&buff.divine_purpose.remains<4
- if BuffPresent(divine_purpose_buff) and BuffRemaining(divine_purpose_buff) < 4 Spell(templars_verdict)
- #divine_storm,if=buff.divine_crusader.react&buff.divine_crusader.remains<4&!talent.final_verdict.enabled
- if BuffPresent(divine_crusader_buff) and BuffRemaining(divine_crusader_buff) < 4 and not Talent(final_verdict_talent) Spell(divine_storm)
+ #templars_verdict,if=buff.divine_purpose.react&buff.divine_purpose.remains<3
+ if BuffPresent(divine_purpose_buff) and BuffRemaining(divine_purpose_buff) < 3 Spell(templars_verdict)
+ #divine_storm,if=buff.divine_crusader.react&buff.divine_crusader.remains<3&!talent.final_verdict.enabled
+ if BuffPresent(divine_crusader_buff) and BuffRemaining(divine_crusader_buff) < 3 and not Talent(final_verdict_talent) Spell(divine_storm)
#final_verdict,if=holy_power=5|buff.holy_avenger.up&holy_power>=3
if HolyPower() == 5 or BuffPresent(holy_avenger_buff) and HolyPower() >= 3 Spell(final_verdict)
#final_verdict,if=buff.divine_purpose.react&buff.divine_purpose.remains<4
@@ -521,10 +525,10 @@ AddFunction RetributionSingleActions
if Talent(empowered_seals_talent) and Stance(paladin_seal_of_righteousness) and BuffRemaining(liadrins_righteousness_buff) < SpellCooldownDuration(judgment) Spell(judgment)
#exorcism,if=buff.blazing_contempt.up&holy_power<=2&buff.holy_avenger.down
if BuffPresent(blazing_contempt_buff) and HolyPower() <= 2 and BuffExpires(holy_avenger_buff) Spell(exorcism)
- #seal_of_truth,if=talent.empowered_seals.enabled&buff.maraads_truth.down&buff.maraads_truth.remains<cooldown.judgment.duration
- if Talent(empowered_seals_talent) and BuffExpires(maraads_truth_buff) and BuffRemaining(maraads_truth_buff) < SpellCooldownDuration(judgment) Spell(seal_of_truth)
- #seal_of_righteousness,if=talent.empowered_seals.enabled&buff.liadrins_righteousness.remains<(cooldown.judgment.duration)&buff.liadrins_righteousness.remains<=3&!buff.avenging_wrath.up&!buff.bloodlust.up
- if Talent(empowered_seals_talent) and BuffRemaining(liadrins_righteousness_buff) < SpellCooldownDuration(judgment) and BuffRemaining(liadrins_righteousness_buff) <= 3 and not BuffPresent(avenging_wrath_melee_buff) and not BuffPresent(burst_haste_buff any=1) Spell(seal_of_righteousness)
+ #seal_of_truth,if=talent.empowered_seals.enabled&buff.maraads_truth.down
+ if Talent(empowered_seals_talent) and BuffExpires(maraads_truth_buff) Spell(seal_of_truth)
+ #seal_of_righteousness,if=talent.empowered_seals.enabled&buff.liadrins_righteousness.down&!buff.avenging_wrath.up&!buff.bloodlust.up
+ if Talent(empowered_seals_talent) and BuffExpires(liadrins_righteousness_buff) and not BuffPresent(avenging_wrath_melee_buff) and not BuffPresent(burst_haste_buff any=1) Spell(seal_of_righteousness)
#divine_storm,if=buff.divine_crusader.react&buff.final_verdict.up&(buff.avenging_wrath.up|target.health.pct<35)
if BuffPresent(divine_crusader_buff) and BuffPresent(final_verdict_buff) and { BuffPresent(avenging_wrath_melee_buff) or target.HealthPercent() < 35 } Spell(divine_storm)
#final_verdict,if=buff.avenging_wrath.up|target.health.pct<35
@@ -543,10 +547,14 @@ AddFunction RetributionSingleActions
if HolyPower() >= 4 Spell(final_verdict)
#judgment,cycle_targets=1,if=last_judgment_target!=target&glyph.double_jeopardy.enabled&holy_power<5&cooldown.seraphim.remains<=3
if True(last_judgement_target) and Glyph(glyph_of_double_jeopardy) and HolyPower() < 5 and SpellCooldown(seraphim) <= 3 Spell(judgment)
- #exorcism,if=glyph.mass_exorcism.enabled&active_enemies>=2&holy_power<5&!cooldown.seraphim.remains<=5
- if Glyph(glyph_of_mass_exorcism) and Enemies() >= 2 and HolyPower() < 5 and not SpellCooldown(seraphim) <= 5 Spell(exorcism)
- #judgment,,if=holy_power<5&!cooldown.seraphim.remains<=3
- if HolyPower() < 5 and not SpellCooldown(seraphim) <= 3 Spell(judgment)
+ #exorcism,if=glyph.mass_exorcism.enabled&active_enemies>=2&holy_power<5
+ if Glyph(glyph_of_mass_exorcism) and Enemies() >= 2 and HolyPower() < 5 Spell(exorcism)
+ #judgment,,if=holy_power<5
+ if HolyPower() < 5 Spell(judgment)
+ #final_verdict,if=holy_power>=3
+ if HolyPower() >= 3 Spell(final_verdict)
+ #exorcism,if=talent.seraphim.enabled&cooldown.seraphim.remains<=15
+ if Talent(seraphim_talent) and SpellCooldown(seraphim) <= 15 Spell(exorcism)
#templars_verdict,if=buff.divine_purpose.react
if BuffPresent(divine_purpose_buff) Spell(templars_verdict)
#divine_storm,if=buff.divine_crusader.react&!talent.final_verdict.enabled
diff --git a/scripts/ovale_rogue.lua b/scripts/ovale_rogue.lua
index b79879c..7d75977 100644
--- a/scripts/ovale_rogue.lua
+++ b/scripts/ovale_rogue.lua
@@ -666,9 +666,7 @@ AddFunction SubtletyPrecombatActions
#snapshot_stats
#stealth
if BuffExpires(stealthed_buff any=1) Spell(stealth)
- # CHANGE: Only cast Premeditation if it not at the combo point cap.
- #premeditation
- #Spell(premeditation)
+ # CHANGE: Cast Premeditation if not at the combo point cap.
if ComboPoints() <= 4 Spell(premeditation)
# CHANGE: Only refresh Slice and Dice out of combat if less than 18s remaining.
#slice_and_dice
diff --git a/scripts/ovale_shaman.lua b/scripts/ovale_shaman.lua
index 11ae6eb..f1fdd46 100644
--- a/scripts/ovale_shaman.lua
+++ b/scripts/ovale_shaman.lua
@@ -80,7 +80,7 @@ AddFunction ElementalDefaultShortCdActions
#ancestral_swiftness,if=!buff.ascendance.up
if not BuffPresent(ascendance_caster_buff) Spell(ancestral_swiftness)
#liquid_magma,if=pet.searing_totem.remains>=15|pet.fire_elemental_totem.remains>=15
- if TotemRemaining(fire totem=searing_totem) >= 15 or TotemRemaining(fire totem=fire_elemental_totem) >= 15 Spell(liquid_magma)
+ if TotemRemaining(searing_totem) >= 15 or TotemRemaining(fire_elemental_totem) >= 15 Spell(liquid_magma)
#call_action_list,name=single,if=active_enemies=1
if Enemies() == 1 ElementalSingleShortCdActions()
#call_action_list,name=aoe,if=active_enemies>1
@@ -104,7 +104,7 @@ AddFunction ElementalDefaultCdActions
#storm_elemental_totem
Spell(storm_elemental_totem)
#fire_elemental_totem,if=!active
- if not TotemPresent(fire totem=fire_elemental_totem) Spell(fire_elemental_totem)
+ if not TotemPresent(fire_elemental_totem) Spell(fire_elemental_totem)
#ascendance,if=active_enemies>1|(dot.flame_shock.remains>buff.ascendance.duration&(target.time_to_die<20|buff.bloodlust.up|time>=60)&cooldown.lava_burst.remains>0)
if { Enemies() > 1 or target.DebuffRemaining(flame_shock_debuff) > BaseDuration(ascendance_caster_buff) and { target.TimeToDie() < 20 or BuffPresent(burst_haste_buff any=1) or TimeInCombat() >= 60 } and SpellCooldown(lava_burst) > 0 } and BuffExpires(ascendance_caster_buff) Spell(ascendance_caster)
#call_action_list,name=single,if=active_enemies=1
@@ -126,7 +126,7 @@ AddFunction ElementalAoeActions
#thunderstorm,if=active_enemies>=10
if Enemies() >= 10 Spell(thunderstorm)
#searing_totem,if=(!talent.liquid_magma.enabled&!totem.fire.active)|(talent.liquid_magma.enabled&pet.searing_totem.remains<=20&!pet.fire_elemental_totem.active&!buff.liquid_magma.up)
- if not Talent(liquid_magma_talent) and not TotemPresent(fire) or Talent(liquid_magma_talent) and TotemRemaining(fire totem=searing_totem) <= 20 and not TotemPresent(fire totem=fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
+ if not Talent(liquid_magma_talent) and not TotemPresent(fire) or Talent(liquid_magma_talent) and TotemRemaining(searing_totem) <= 20 and not TotemPresent(fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
#chain_lightning,if=active_enemies>=2
if Enemies() >= 2 Spell(chain_lightning)
#lightning_bolt
@@ -180,7 +180,7 @@ AddFunction ElementalSingleActions
#flame_shock,if=time>60&remains<=buff.ascendance.duration&cooldown.ascendance.remains+buff.ascendance.duration<duration
if TimeInCombat() > 60 and target.DebuffRemaining(flame_shock_debuff) <= BaseDuration(ascendance_caster_buff) and SpellCooldown(ascendance_caster) + BaseDuration(ascendance_caster_buff) < BaseDuration(flame_shock_debuff) Spell(flame_shock)
#searing_totem,if=(!talent.liquid_magma.enabled&!totem.fire.active)|(talent.liquid_magma.enabled&pet.searing_totem.remains<=20&!pet.fire_elemental_totem.active&!buff.liquid_magma.up)
- if not Talent(liquid_magma_talent) and not TotemPresent(fire) or Talent(liquid_magma_talent) and TotemRemaining(fire totem=searing_totem) <= 20 and not TotemPresent(fire totem=fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
+ if not Talent(liquid_magma_talent) and not TotemPresent(fire) or Talent(liquid_magma_talent) and TotemRemaining(searing_totem) <= 20 and not TotemPresent(fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
#lightning_bolt
Spell(lightning_bolt)
}
@@ -213,7 +213,7 @@ AddFunction ElementalSingleShortCdActions
unless Spell(elemental_blast)
or TimeInCombat() > 60 and target.DebuffRemaining(flame_shock_debuff) <= BaseDuration(ascendance_caster_buff) and SpellCooldown(ascendance_caster) + BaseDuration(ascendance_caster_buff) < BaseDuration(flame_shock_debuff) and Spell(flame_shock)
- or not Talent(liquid_magma_talent) and not TotemPresent(fire) or Talent(liquid_magma_talent) and TotemRemaining(fire totem=searing_totem) <= 20 and not TotemPresent(fire totem=fire_elemental_totem) and not BuffPresent(liquid_magma_buff) and Spell(searing_totem)
+ or not Talent(liquid_magma_talent) and not TotemPresent(fire) or Talent(liquid_magma_talent) and TotemRemaining(searing_totem) <= 20 and not TotemPresent(fire_elemental_totem) and not BuffPresent(liquid_magma_buff) and Spell(searing_totem)
{
#spiritwalkers_grace,moving=1,if=((talent.elemental_blast.enabled&cooldown.elemental_blast.remains=0)|(cooldown.lava_burst.remains=0&!buff.lava_surge.react))
if Speed() > 0 and { Talent(elemental_blast_talent) and not SpellCooldown(elemental_blast) > 0 or not SpellCooldown(lava_burst) > 0 and not BuffPresent(lava_surge_buff) } Spell(spiritwalkers_grace)
@@ -289,7 +289,7 @@ AddFunction EnhancementDefaultShortCdActions
#feral_spirit
Spell(feral_spirit)
#liquid_magma,if=pet.searing_totem.remains>=15|pet.magma_totem.remains>=15|pet.fire_elemental_totem.remains>=15
- if TotemRemaining(fire totem=searing_totem) >= 15 or TotemRemaining(fire totem=magma_totem) >= 15 or TotemRemaining(fire totem=fire_elemental_totem) >= 15 Spell(liquid_magma)
+ if TotemRemaining(searing_totem) >= 15 or TotemRemaining(magma_totem) >= 15 or TotemRemaining(fire_elemental_totem) >= 15 Spell(liquid_magma)
}
AddFunction EnhancementDefaultCdActions
@@ -301,7 +301,7 @@ AddFunction EnhancementDefaultCdActions
#use_item,name=beating_heart_of_the_mountain
UseItemActions()
#potion,name=draenic_agility,if=(talent.storm_elemental_totem.enabled&pet.storm_elemental_totem.remains>=25)|(!talent.storm_elemental_totem.enabled&pet.fire_elemental_totem.remains>=25)|target.time_to_die<=30
- if Talent(storm_elemental_totem_talent) and TotemRemaining(air totem=storm_elemental_totem) >= 25 or not Talent(storm_elemental_totem_talent) and TotemRemaining(fire totem=fire_elemental_totem) >= 25 or target.TimeToDie() <= 30 UsePotionAgility()
+ if Talent(storm_elemental_totem_talent) and TotemRemaining(storm_elemental_totem) >= 25 or not Talent(storm_elemental_totem_talent) and TotemRemaining(fire_elemental_totem) >= 25 or target.TimeToDie() <= 30 UsePotionAgility()
#blood_fury
Spell(blood_fury_apsp)
#arcane_torrent
@@ -316,7 +316,7 @@ AddFunction EnhancementDefaultCdActions
if BuffExpires(ascendance_melee_buff) Spell(ascendance_melee)
unless Spell(feral_spirit)
- or { TotemRemaining(fire totem=searing_totem) >= 15 or TotemRemaining(fire totem=magma_totem) >= 15 or TotemRemaining(fire totem=fire_elemental_totem) >= 15 } and Spell(liquid_magma)
+ or { TotemRemaining(searing_totem) >= 15 or TotemRemaining(magma_totem) >= 15 or TotemRemaining(fire_elemental_totem) >= 15 } and Spell(liquid_magma)
{
#ancestral_swiftness
Spell(ancestral_swiftness)
@@ -357,7 +357,7 @@ AddFunction EnhancementAoeActions
#fire_nova,if=active_dot.flame_shock>=2
if DebuffCountOnAny(flame_shock_debuff) >= 2 Spell(fire_nova)
#magma_totem,if=pet.magma_totem.remains<=20&!pet.fire_elemental_totem.active&!buff.liquid_magma.up
- if TotemRemaining(fire totem=magma_totem) <= 20 and not TotemPresent(fire totem=fire_elemental_totem) and not BuffPresent(liquid_magma_buff) and target.InRange(primal_strike) Spell(magma_totem)
+ if TotemRemaining(magma_totem) <= 20 and not TotemPresent(fire_elemental_totem) and not BuffPresent(liquid_magma_buff) and target.InRange(primal_strike) Spell(magma_totem)
#stormstrike
Spell(stormstrike)
#frost_shock,if=active_enemies<4
@@ -424,7 +424,7 @@ AddFunction EnhancementSingleActions
#lightning_bolt,if=(buff.maelstrom_weapon.react>=1&!buff.ascendance.up)|buff.ancestral_swiftness.up
if BuffStacks(maelstrom_weapon_buff) >= 1 and not BuffPresent(ascendance_melee_buff) or BuffPresent(ancestral_swiftness_buff) Spell(lightning_bolt)
#searing_totem,if=pet.searing_totem.remains<=20&!pet.fire_elemental_totem.active&!buff.liquid_magma.up
- if TotemRemaining(fire totem=searing_totem) <= 20 and not TotemPresent(fire totem=fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
+ if TotemRemaining(searing_totem) <= 20 and not TotemPresent(fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
}
### Enhancement icons.
@@ -502,7 +502,7 @@ AddFunction RestorationShortCdActions
{
if Talent(primal_elementalist_talent) and pet.Present()
{
- if TotemPresent(fire totem=fire_elemental_totem) and BuffExpires(pet_empower any=1) Spell(pet_empower)
+ if TotemPresent(fire_elemental_totem) and BuffExpires(pet_empower any=1) Spell(pet_empower)
if TotemPresent(earth totem=earth_elemental_totem) and BuffExpires(pet_reinforce any=1) Spell(pet_reinforce)
}
Spell(unleash_life)
diff --git a/scripts/ovale_warrior.lua b/scripts/ovale_warrior.lua
index 1a8ca8f..cf8ca84 100644
--- a/scripts/ovale_warrior.lua
+++ b/scripts/ovale_warrior.lua
@@ -94,8 +94,8 @@ AddFunction ArmsDefaultCdActions
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) and target.DebuffPresent(colossus_smash_debuff) or BuffPresent(recklessness_buff) Spell(blood_fury_ap)
#berserking,if=buff.bloodbath.up|(!talent.bloodbath.enabled&debuff.colossus_smash.up)|buff.recklessness.up
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) and target.DebuffPresent(colossus_smash_debuff) or BuffPresent(recklessness_buff) Spell(berserking)
- #arcane_torrent,if=buff.bloodbath.up|(!talent.bloodbath.enabled&debuff.colossus_smash.up)|buff.recklessness.up
- if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) and target.DebuffPresent(colossus_smash_debuff) or BuffPresent(recklessness_buff) Spell(arcane_torrent_rage)
+ #arcane_torrent,if=rage<rage.max-40
+ if Rage() < MaxRage() - 40 Spell(arcane_torrent_rage)
#call_action_list,name=single,if=active_enemies=1
if Enemies() == 1 ArmsSingleCdActions()
#call_action_list,name=aoe,if=active_enemies>1
@@ -214,23 +214,28 @@ AddFunction ArmsSingleShortCdActions
if SpellCooldown(colossus_smash) < 4 Spell(ravager)
unless Spell(colossus_smash)
- or target.HealthPercent() > 20 and SpellCooldown(colossus_smash) > 1 and Spell(mortal_strike)
{
- #storm_bolt,if=(cooldown.colossus_smash.remains>4|debuff.colossus_smash.up)&rage<90
- if { SpellCooldown(colossus_smash) > 4 or target.DebuffPresent(colossus_smash_debuff) } and Rage() < 90 Spell(storm_bolt)
- #siegebreaker
- Spell(siegebreaker)
- #dragon_roar,if=!debuff.colossus_smash.up
- if not target.DebuffPresent(colossus_smash_debuff) Spell(dragon_roar)
-
- unless not target.DebuffPresent(colossus_smash_debuff) and target.TimeToDie() > 4 and target.DebuffRemaining(rend_debuff) < 5.4 Spell(rend)
- or { Rage() >= 60 and SpellCooldown(colossus_smash) > ExecuteTime(execute_arms) or target.DebuffPresent(colossus_smash_debuff) or BuffPresent(sudden_death_buff) or target.TimeToDie() < 5 } and Spell(execute_arms)
- or Rage() < 40 and target.HealthPercent() > 20 and SpellCooldown(colossus_smash) > 1 and SpellCooldown(mortal_strike) > 1 and Spell(impending_victory)
- or { Rage() > 20 or SpellCooldown(colossus_smash) > ExecuteTime(slam) } and target.HealthPercent() > 20 and SpellCooldown(colossus_smash) > 1 and SpellCooldown(mortal_strike) > 1 and Spell(slam)
- or not Talent(slam_talent) and target.HealthPercent() > 20 and { Rage() >= 40 or ArmorSetBonus(T17 4) or target.DebuffPresent(colossus_smash_debuff) } and SpellCooldown(colossus_smash) > 1 and SpellCooldown(mortal_strike) > 1 and Spell(whirlwind)
+ #bladestorm,if=!raid_event.adds.exists&debuff.colossus_smash.up&rage<70
+ if not False(raid_event_adds_exists) and target.DebuffPresent(colossus_smash_debuff) and Rage() < 70 Spell(bladestorm)
+
+ unless target.HealthPercent() > 20 and SpellCooldown(colossus_smash) > 1 and Spell(mortal_strike)
{
- #shockwave
- Spell(shockwave)
+ #storm_bolt,if=(cooldown.colossus_smash.remains>4|debuff.colossus_smash.up)&rage<90
+ if { SpellCooldown(colossus_smash) > 4 or target.DebuffPresent(colossus_smash_debuff) } and Rage() < 90 Spell(storm_bolt)
+ #siegebreaker
+ Spell(siegebreaker)
+ #dragon_roar,if=!debuff.colossus_smash.up
+ if not target.DebuffPresent(colossus_smash_debuff) Spell(dragon_roar)
+
+ unless not target.DebuffPresent(colossus_smash_debuff) and target.TimeToDie() > 4 and target.DebuffRemaining(rend_debuff) < 5.4 Spell(rend)
+ or { Rage() >= 60 and SpellCooldown(colossus_smash) > ExecuteTime(execute_arms) or target.DebuffPresent(colossus_smash_debuff) or BuffPresent(sudden_death_buff) or target.TimeToDie() < 5 } and Spell(execute_arms)
+ or Rage() < 40 and target.HealthPercent() > 20 and SpellCooldown(colossus_smash) > 1 and SpellCooldown(mortal_strike) > 1 and Spell(impending_victory)
+ or { Rage() > 20 or SpellCooldown(colossus_smash) > ExecuteTime(slam) } and target.HealthPercent() > 20 and SpellCooldown(colossus_smash) > 1 and SpellCooldown(mortal_strike) > 1 and Spell(slam)
+ or not Talent(slam_talent) and target.HealthPercent() > 20 and { Rage() >= 40 or ArmorSetBonus(T17 4) or target.DebuffPresent(colossus_smash_debuff) } and SpellCooldown(colossus_smash) > 1 and SpellCooldown(mortal_strike) > 1 and Spell(whirlwind)
+ {
+ #shockwave
+ Spell(shockwave)
+ }
}
}
}
@@ -347,8 +352,8 @@ AddFunction FurySingleMindedFuryDefaultCdActions
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(blood_fury_ap)
#berserking,if=buff.bloodbath.up|!talent.bloodbath.enabled|buff.recklessness.up
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(berserking)
- #arcane_torrent,if=buff.bloodbath.up|!talent.bloodbath.enabled|buff.recklessness.up
- if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(arcane_torrent_rage)
+ #arcane_torrent,if=rage<rage.max-40
+ if Rage() < MaxRage() - 40 Spell(arcane_torrent_rage)
#call_action_list,name=single_target,if=active_enemies=1
if Enemies() == 1 FurySingleMindedFurySingleTargetCdActions()
#call_action_list,name=two_targets,if=active_enemies=2
@@ -516,6 +521,8 @@ AddFunction FurySingleMindedFurySingleTargetShortCdActions
unless BuffPresent(raging_blow_buff) and Spell(raging_blow)
or BuffPresent(enrage_buff any=1) and target.HealthPercent() > 20 and Spell(wild_strike)
{
+ #bladestorm,if=!raid_event.adds.exists
+ if not False(raid_event_adds_exists) Spell(bladestorm)
#shockwave,if=!talent.unquenchable_thirst.enabled
if not Talent(unquenchable_thirst_talent) Spell(shockwave)
}
@@ -683,8 +690,8 @@ AddFunction FuryTitansGripDefaultCdActions
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(blood_fury_ap)
#berserking,if=buff.bloodbath.up|!talent.bloodbath.enabled|buff.recklessness.up
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(berserking)
- #arcane_torrent,if=buff.bloodbath.up|!talent.bloodbath.enabled|buff.recklessness.up
- if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(arcane_torrent_rage)
+ #arcane_torrent,if=rage<rage.max-40
+ if Rage() < MaxRage() - 40 Spell(arcane_torrent_rage)
#call_action_list,name=single_target,if=active_enemies=1
if Enemies() == 1 FuryTitansGripSingleTargetCdActions()
#call_action_list,name=two_targets,if=active_enemies=2
@@ -850,6 +857,8 @@ AddFunction FuryTitansGripSingleTargetShortCdActions
unless BuffPresent(raging_blow_buff) and Spell(raging_blow)
or BuffPresent(enrage_buff any=1) and target.HealthPercent() > 20 and Spell(wild_strike)
{
+ #bladestorm,if=!raid_event.adds.exists
+ if not False(raid_event_adds_exists) Spell(bladestorm)
#shockwave,if=!talent.unquenchable_thirst.enabled
if not Talent(unquenchable_thirst_talent) Spell(shockwave)
}
@@ -1149,10 +1158,15 @@ AddFunction ProtectionProtAoeShortCdActions
unless Spell(revenge)
or Spell(thunder_clap)
- or Spell(shield_slam)
{
- #storm_bolt
- Spell(storm_bolt)
+ #bladestorm
+ Spell(bladestorm)
+
+ unless Spell(shield_slam)
+ {
+ #storm_bolt
+ Spell(storm_bolt)
+ }
}
}
}
@@ -1284,8 +1298,8 @@ AddFunction ProtectionGladiatorDefaultCdActions
if BuffPresent(bloodbath_buff) or BuffPresent(avatar_buff) or BuffPresent(shield_charge_buff) or target.TimeToDie() < 10 Spell(blood_fury_ap)
#berserking,if=buff.bloodbath.up|buff.avatar.up|buff.shield_charge.up|target.time_to_die<10
if BuffPresent(bloodbath_buff) or BuffPresent(avatar_buff) or BuffPresent(shield_charge_buff) or target.TimeToDie() < 10 Spell(berserking)
- #arcane_torrent,if=buff.bloodbath.up|buff.avatar.up|buff.shield_charge.up|target.time_to_die<10
- if BuffPresent(bloodbath_buff) or BuffPresent(avatar_buff) or BuffPresent(shield_charge_buff) or target.TimeToDie() < 10 Spell(arcane_torrent_rage)
+ #arcane_torrent,if=rage<rage.max-40
+ if Rage() < MaxRage() - 40 Spell(arcane_torrent_rage)
#potion,name=draenic_armor,if=buff.bloodbath.up|buff.avatar.up|buff.shield_charge.up
if BuffPresent(bloodbath_buff) or BuffPresent(avatar_buff) or BuffPresent(shield_charge_buff) UsePotionArmor()
#call_action_list,name=single,if=active_enemies=1
diff --git a/scripts/simulationcraft_mage_arcane.lua b/scripts/simulationcraft_mage_arcane.lua
index ace40fc..6e5f0a1 100644
--- a/scripts/simulationcraft_mage_arcane.lua
+++ b/scripts/simulationcraft_mage_arcane.lua
@@ -50,7 +50,7 @@ AddFunction ArcaneDefaultActions
#ice_floes,if=buff.ice_floes.down&(raid_event.movement.distance>0|raid_event.movement.in<action.arcane_missiles.cast_time)
if BuffExpires(ice_floes_buff) and { 0 > 0 or 600 < CastTime(arcane_missiles) } Spell(ice_floes)
#rune_of_power,if=buff.rune_of_power.remains<cast_time
- if RuneOfPowerRemaining() < CastTime(rune_of_power) Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < CastTime(rune_of_power) Spell(rune_of_power)
#mirror_image
Spell(mirror_image)
#cold_snap,if=buff.presence_of_mind.down&cooldown.presence_of_mind.remains>75
@@ -58,7 +58,7 @@ AddFunction ArcaneDefaultActions
#call_action_list,name=init_crystal,if=talent.prismatic_crystal.enabled&cooldown.prismatic_crystal.up
if Talent(prismatic_crystal_talent) and not SpellCooldown(prismatic_crystal) > 0 ArcaneInitCrystalActions()
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&pet.prismatic_crystal.active
- if Talent(prismatic_crystal_talent) and TotemPresent(crystal totem=prismatic_crystal) ArcaneCrystalSequenceActions()
+ if Talent(prismatic_crystal_talent) and TotemPresent(prismatic_crystal) ArcaneCrystalSequenceActions()
#call_action_list,name=aoe,if=active_enemies>=4
if Enemies() >= 4 ArcaneAoeActions()
#call_action_list,name=burn,if=time_to_die<mana.pct*0.35*spell_haste|cooldown.evocation.remains<=(mana.pct-30)*0.3*spell_haste|(buff.arcane_power.up&cooldown.evocation.remains<=(mana.pct-30)*0.4*spell_haste)
@@ -96,11 +96,11 @@ AddFunction ArcaneBurnActions
#supernova,if=time_to_die<8|charges=2
if TimeToDie() < 8 or Charges(supernova) == 2 Spell(supernova)
#nether_tempest,cycle_targets=1,if=target!=prismatic_crystal&buff.arcane_charge.stack=4&(active_dot.nether_tempest=0|(ticking&remains<3.6))
- if not target.Name("Prismatic Crystal") and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } Spell(nether_tempest)
+ if not target.Name(prismatic_crystal) and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } Spell(nether_tempest)
#arcane_orb,if=buff.arcane_charge.stack<4
if DebuffStacks(arcane_charge_debuff) < 4 Spell(arcane_orb)
#supernova,if=current_target=prismatic_crystal
- if target.Name("Prismatic Crystal") Spell(supernova)
+ if target.Name(prismatic_crystal) Spell(supernova)
#presence_of_mind,if=mana.pct>96
if ManaPercent() > 96 Spell(presence_of_mind)
#arcane_blast,if=buff.arcane_charge.stack=4&mana.pct>93
@@ -128,7 +128,7 @@ AddFunction ArcaneConserveActions
#arcane_missiles,if=set_bonus.tier17_4pc&buff.arcane_instability.react&buff.arcane_instability.remains<action.arcane_blast.execute_time
if ArmorSetBonus(T17 4) and BuffPresent(arcane_instability_buff) and BuffRemaining(arcane_instability_buff) < ExecuteTime(arcane_blast) and BuffPresent(arcane_missiles_buff) Spell(arcane_missiles)
#nether_tempest,cycle_targets=1,if=target!=prismatic_crystal&buff.arcane_charge.stack=4&(active_dot.nether_tempest=0|(ticking&remains<3.6))
- if not target.Name("Prismatic Crystal") and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } Spell(nether_tempest)
+ if not target.Name(prismatic_crystal) and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < 3.6 } Spell(nether_tempest)
#supernova,if=time_to_die<8|(charges=2&(buff.arcane_power.up|!cooldown.arcane_power.up)&(!talent.prismatic_crystal.enabled|cooldown.prismatic_crystal.remains>8))
if TimeToDie() < 8 or Charges(supernova) == 2 and { BuffPresent(arcane_power_buff) or not { not SpellCooldown(arcane_power) > 0 } } and { not Talent(prismatic_crystal_talent) or SpellCooldown(prismatic_crystal) > 8 } Spell(supernova)
#arcane_orb,if=buff.arcane_charge.stack<2
@@ -140,9 +140,9 @@ AddFunction ArcaneConserveActions
#arcane_missiles,if=buff.arcane_charge.stack=4&(!talent.overpowered.enabled|cooldown.arcane_power.remains>10*spell_haste)
if DebuffStacks(arcane_charge_debuff) == 4 and { not Talent(overpowered_talent) or SpellCooldown(arcane_power) > 10 * 100 / { 100 + SpellHaste() } } and BuffPresent(arcane_missiles_buff) Spell(arcane_missiles)
#supernova,if=mana.pct<96&(buff.arcane_missiles.stack<2|buff.arcane_charge.stack=4)&(buff.arcane_power.up|(charges=1&cooldown.arcane_power.remains>recharge_time))&(!talent.prismatic_crystal.enabled|current_target=prismatic_crystal|(charges=1&cooldown.prismatic_crystal.remains>recharge_time+8))
- if ManaPercent() < 96 and { BuffStacks(arcane_missiles_buff) < 2 or DebuffStacks(arcane_charge_debuff) == 4 } and { BuffPresent(arcane_power_buff) or Charges(supernova) == 1 and SpellCooldown(arcane_power) > SpellChargeCooldown(supernova) } and { not Talent(prismatic_crystal_talent) or target.Name("Prismatic Crystal") or Charges(supernova) == 1 and SpellCooldown(prismatic_crystal) > SpellChargeCooldown(supernova) + 8 } Spell(supernova)
+ if ManaPercent() < 96 and { BuffStacks(arcane_missiles_buff) < 2 or DebuffStacks(arcane_charge_debuff) == 4 } and { BuffPresent(arcane_power_buff) or Charges(supernova) == 1 and SpellCooldown(arcane_power) > SpellChargeCooldown(supernova) } and { not Talent(prismatic_crystal_talent) or target.Name(prismatic_crystal) or Charges(supernova) == 1 and SpellCooldown(prismatic_crystal) > SpellChargeCooldown(supernova) + 8 } Spell(supernova)
#nether_tempest,cycle_targets=1,if=target!=prismatic_crystal&buff.arcane_charge.stack=4&(active_dot.nether_tempest=0|(ticking&remains<(10-3*talent.arcane_orb.enabled)*spell_haste))
- if not target.Name("Prismatic Crystal") and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < { 10 - 3 * Talent(arcane_orb_talent) } * 100 / { 100 + SpellHaste() } } Spell(nether_tempest)
+ if not target.Name(prismatic_crystal) and DebuffStacks(arcane_charge_debuff) == 4 and { not DebuffCountOnAny(nether_tempest_debuff) > 0 or target.DebuffPresent(nether_tempest_debuff) and target.DebuffRemaining(nether_tempest_debuff) < { 10 - 3 * Talent(arcane_orb_talent) } * 100 / { 100 + SpellHaste() } } Spell(nether_tempest)
#arcane_barrage,if=buff.arcane_charge.stack=4
if DebuffStacks(arcane_charge_debuff) == 4 Spell(arcane_barrage)
#presence_of_mind,if=buff.arcane_charge.stack<2
@@ -164,7 +164,7 @@ AddFunction ArcaneCooldownsActions
#arcane_torrent
Spell(arcane_torrent_mana)
#potion,name=draenic_intellect,if=buff.arcane_power.up&(!talent.prismatic_crystal.enabled|pet.prismatic_crystal.active)
- if BuffPresent(arcane_power_buff) and { not Talent(prismatic_crystal_talent) or TotemPresent(crystal totem=prismatic_crystal) } UsePotionIntellect()
+ if BuffPresent(arcane_power_buff) and { not Talent(prismatic_crystal_talent) or TotemPresent(prismatic_crystal) } UsePotionIntellect()
}
AddFunction ArcaneCrystalSequenceActions
@@ -172,7 +172,7 @@ AddFunction ArcaneCrystalSequenceActions
#call_action_list,name=cooldowns
ArcaneCooldownsActions()
#nether_tempest,if=buff.arcane_charge.stack=4&!ticking&pet.prismatic_crystal.remains>8
- if DebuffStacks(arcane_charge_debuff) == 4 and not target.DebuffPresent(nether_tempest_debuff) and TotemRemaining(crystal totem=prismatic_crystal) > 8 Spell(nether_tempest)
+ if DebuffStacks(arcane_charge_debuff) == 4 and not target.DebuffPresent(nether_tempest_debuff) and TotemRemaining(prismatic_crystal) > 8 Spell(nether_tempest)
#call_action_list,name=burn
ArcaneBurnActions()
}
diff --git a/scripts/simulationcraft_mage_fire.lua b/scripts/simulationcraft_mage_fire.lua
index 6646b57..47415b5 100644
--- a/scripts/simulationcraft_mage_fire.lua
+++ b/scripts/simulationcraft_mage_fire.lua
@@ -48,15 +48,15 @@ AddFunction FireDefaultActions
#ice_floes,if=buff.ice_floes.down&(raid_event.movement.distance>0|raid_event.movement.in<action.fireball.cast_time)
if BuffExpires(ice_floes_buff) and { 0 > 0 or 600 < CastTime(fireball) } Spell(ice_floes)
#rune_of_power,if=buff.rune_of_power.remains<cast_time
- if RuneOfPowerRemaining() < CastTime(rune_of_power) Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < CastTime(rune_of_power) Spell(rune_of_power)
#call_action_list,name=combust_sequence,if=pyro_chain
if GetState(pyro_chain) > 0 FireCombustSequenceActions()
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&pet.prismatic_crystal.active
- if Talent(prismatic_crystal_talent) and TotemPresent(crystal totem=prismatic_crystal) FireCrystalSequenceActions()
+ if Talent(prismatic_crystal_talent) and TotemPresent(prismatic_crystal) FireCrystalSequenceActions()
#call_action_list,name=init_combust,if=!pyro_chain
if not GetState(pyro_chain) > 0 FireInitCombustActions()
#rune_of_power,if=buff.rune_of_power.remains<action.fireball.execute_time+gcd.max&!(buff.heating_up.up&action.fireball.in_flight)
- if RuneOfPowerRemaining() < ExecuteTime(fireball) + GCD() and not { BuffPresent(heating_up_buff) and { InFlightToTarget(fireball) or InFlightToTarget(frostfire_bolt) } } Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < ExecuteTime(fireball) + GCD() and not { BuffPresent(heating_up_buff) and { InFlightToTarget(fireball) or InFlightToTarget(frostfire_bolt) } } Spell(rune_of_power)
#mirror_image,if=!(buff.heating_up.up&action.fireball.in_flight)
if not { BuffPresent(heating_up_buff) and { InFlightToTarget(fireball) or InFlightToTarget(frostfire_bolt) } } Spell(mirror_image)
#call_action_list,name=aoe,if=active_enemies>=4
@@ -72,7 +72,7 @@ AddFunction FireActiveTalentsActions
#call_action_list,name=living_bomb,if=talent.living_bomb.enabled
if Talent(living_bomb_talent) FireLivingBombActions()
#blast_wave,if=(!talent.incanters_flow.enabled|buff.incanters_flow.stack>=4)&(time_to_die<10|!talent.prismatic_crystal.enabled|(charges=1&cooldown.prismatic_crystal.remains>recharge_time)|charges=2|current_target=prismatic_crystal)
- if { not Talent(incanters_flow_talent) or BuffStacks(incanters_flow_buff) >= 4 } and { TimeToDie() < 10 or not Talent(prismatic_crystal_talent) or Charges(blast_wave) == 1 and SpellCooldown(prismatic_crystal) > SpellChargeCooldown(blast_wave) or Charges(blast_wave) == 2 or target.Name("Prismatic Crystal") } Spell(blast_wave)
+ if { not Talent(incanters_flow_talent) or BuffStacks(incanters_flow_buff) >= 4 } and { TimeToDie() < 10 or not Talent(prismatic_crystal_talent) or Charges(blast_wave) == 1 and SpellCooldown(prismatic_crystal) > SpellChargeCooldown(blast_wave) or Charges(blast_wave) == 2 or target.Name(prismatic_crystal) } Spell(blast_wave)
}
AddFunction FireAoeActions
@@ -128,7 +128,7 @@ AddFunction FireCrystalSequenceActions
#inferno_blast,cycle_targets=1,if=dot.combustion.ticking&active_dot.combustion<active_enemies+1
if target.DebuffPresent(combustion_debuff) and DebuffCountOnAny(combustion_debuff) < Enemies() + 1 Spell(inferno_blast)
#pyroblast,if=execute_time=gcd.max&pet.prismatic_crystal.remains<gcd.max+travel_time&pet.prismatic_crystal.remains>travel_time
- if ExecuteTime(pyroblast) == GCD() and TotemRemaining(crystal totem=prismatic_crystal) < GCD() + MaxTravelTime(pyroblast) and TotemRemaining(crystal totem=prismatic_crystal) > MaxTravelTime(pyroblast) Spell(pyroblast)
+ if ExecuteTime(pyroblast) == GCD() and TotemRemaining(prismatic_crystal) < GCD() + MaxTravelTime(pyroblast) and TotemRemaining(prismatic_crystal) > MaxTravelTime(pyroblast) Spell(pyroblast)
#call_action_list,name=single_target
FireSingleTargetActions()
}
@@ -150,7 +150,7 @@ AddFunction FireLivingBombActions
#inferno_blast,cycle_targets=1,if=dot.living_bomb.ticking&active_dot.living_bomb<active_enemies
if target.DebuffPresent(living_bomb_debuff) and DebuffCountOnAny(living_bomb_debuff) < Enemies() Spell(inferno_blast)
#living_bomb,cycle_targets=1,if=target!=prismatic_crystal&(active_dot.living_bomb=0|(ticking&active_dot.living_bomb=1))&(((!talent.incanters_flow.enabled|incanters_flow_dir<0|buff.incanters_flow.stack=5)&remains<3.6)|((incanters_flow_dir>0|buff.incanters_flow.stack=1)&remains<gcd.max))&target.time_to_die>remains+12
- if not target.Name("Prismatic Crystal") and { not DebuffCountOnAny(living_bomb_debuff) > 0 or target.DebuffPresent(living_bomb_debuff) and DebuffCountOnAny(living_bomb_debuff) == 1 } and { { not Talent(incanters_flow_talent) or BuffDirection(incanters_flow_buff) < 0 or BuffStacks(incanters_flow_buff) == 5 } and target.DebuffRemaining(living_bomb_debuff) < 3.6 or { BuffDirection(incanters_flow_buff) > 0 or BuffStacks(incanters_flow_buff) == 1 } and target.DebuffRemaining(living_bomb_debuff) < GCD() } and target.TimeToDie() > target.DebuffRemaining(living_bomb_debuff) + 12 Spell(living_bomb)
+ if not target.Name(prismatic_crystal) and { not DebuffCountOnAny(living_bomb_debuff) > 0 or target.DebuffPresent(living_bomb_debuff) and DebuffCountOnAny(living_bomb_debuff) == 1 } and { { not Talent(incanters_flow_talent) or BuffDirection(incanters_flow_buff) < 0 or BuffStacks(incanters_flow_buff) == 5 } and target.DebuffRemaining(living_bomb_debuff) < 3.6 or { BuffDirection(incanters_flow_buff) > 0 or BuffStacks(incanters_flow_buff) == 1 } and target.DebuffRemaining(living_bomb_debuff) < GCD() } and target.TimeToDie() > target.DebuffRemaining(living_bomb_debuff) + 12 Spell(living_bomb)
}
AddFunction FirePrecombatActions
diff --git a/scripts/simulationcraft_mage_frost.lua b/scripts/simulationcraft_mage_frost.lua
index 2e00d79..220e483 100644
--- a/scripts/simulationcraft_mage_frost.lua
+++ b/scripts/simulationcraft_mage_frost.lua
@@ -50,13 +50,13 @@ AddFunction FrostDefaultActions
#ice_floes,if=buff.ice_floes.down&(raid_event.movement.distance>0|raid_event.movement.in<action.frostbolt.cast_time)
if BuffExpires(ice_floes_buff) and { 0 > 0 or 600 < CastTime(frostbolt) } Spell(ice_floes)
#rune_of_power,if=buff.rune_of_power.remains<cast_time
- if RuneOfPowerRemaining() < CastTime(rune_of_power) Spell(rune_of_power)
+ if TotemRemaining(rune_of_power) < CastTime(rune_of_power) Spell(rune_of_power)
#rune_of_power,if=(cooldown.icy_veins.remains<gcd.max&buff.rune_of_power.remains<20)|(cooldown.prismatic_crystal.remains<gcd.max&buff.rune_of_power.remains<10)
- if SpellCooldown(icy_veins) < GCD() and RuneOfPowerRemaining() < 20 or SpellCooldown(prismatic_crystal) < GCD() and RuneOfPowerRemaining() < 10 Spell(rune_of_power)
+ if SpellCooldown(icy_veins) < GCD() and TotemRemaining(rune_of_power) < 20 or SpellCooldown(prismatic_crystal) < GCD() and TotemRemaining(rune_of_power) < 10 Spell(rune_of_power)
#call_action_list,name=cooldowns,if=time_to_die<24
if TimeToDie() < 24 FrostCooldownsActions()
#call_action_list,name=crystal_sequence,if=talent.prismatic_crystal.enabled&(cooldown.prismatic_crystal.remains<=gcd.max|pet.prismatic_crystal.active)
- if Talent(prismatic_crystal_talent) and { SpellCooldown(prismatic_crystal) <= GCD() or TotemPresent(crystal totem=prismatic_crystal) } FrostCrystalSequenceActions()
+ if Talent(prismatic_crystal_talent) and { SpellCooldown(prismatic_crystal) <= GCD() or TotemPresent(prismatic_crystal) } FrostCrystalSequenceActions()
#call_action_list,name=aoe,if=active_enemies>=4
if Enemies() >= 4 FrostAoeActions()
#call_action_list,name=single_target
@@ -98,7 +98,7 @@ AddFunction FrostCooldownsActions
AddFunction FrostCrystalSequenceActions
{
#frost_bomb,if=active_enemies=1¤t_target!=prismatic_crystal&remains<10
- if Enemies() == 1 and not target.Name("Prismatic Crystal") and target.DebuffRemaining(frost_bomb_debuff) < 10 Spell(frost_bomb)
+ if Enemies() == 1 and not target.Name(prismatic_crystal) and target.DebuffRemaining(frost_bomb_debuff) < 10 Spell(frost_bomb)
#frozen_orb
Spell(frozen_orb)
#call_action_list,name=cooldowns
@@ -106,7 +106,7 @@ AddFunction FrostCrystalSequenceActions
#prismatic_crystal
Spell(prismatic_crystal)
#frost_bomb,if=talent.prismatic_crystal.enabled¤t_target=prismatic_crystal&active_enemies>1&!ticking
- if Talent(prismatic_crystal_talent) and target.Name("Prismatic Crystal") and Enemies() > 1 and not target.DebuffPresent(frost_bomb_debuff) Spell(frost_bomb)
+ if Talent(prismatic_crystal_talent) and target.Name(prismatic_crystal) and Enemies() > 1 and not target.DebuffPresent(frost_bomb_debuff) Spell(frost_bomb)
#ice_lance,if=buff.fingers_of_frost.react=2|(buff.fingers_of_frost.react&active_dot.frozen_orb>=1)
if BuffStacks(fingers_of_frost_buff) == 2 or BuffPresent(fingers_of_frost_buff) and DebuffCountOnAny(frozen_orb_debuff) >= 1 Spell(ice_lance)
#ice_nova,if=charges=2
diff --git a/scripts/simulationcraft_monk_windwalker_1h.lua b/scripts/simulationcraft_monk_windwalker_1h.lua
index a4c5b04..d7aec69 100644
--- a/scripts/simulationcraft_monk_windwalker_1h.lua
+++ b/scripts/simulationcraft_monk_windwalker_1h.lua
@@ -48,8 +48,8 @@ AddFunction WindwalkerDefaultActions
if BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 Spell(blood_fury_apsp)
#berserking,if=buff.tigereye_brew_use.up|target.time_to_die<18
if BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 Spell(berserking)
- #arcane_torrent,if=buff.tigereye_brew_use.up|target.time_to_die<18
- if BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 Spell(arcane_torrent_chi)
+ #arcane_torrent,if=chi.max-chi>=1&(buff.tigereye_brew_use.up|target.time_to_die<18)
+ if MaxChi() - Chi() >= 1 and { BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 } Spell(arcane_torrent_chi)
#chi_brew,if=chi.max-chi>=2&((charges=1&recharge_time<=10)|charges=2|target.time_to_die<charges*10)&buff.tigereye_brew.stack<=16
if MaxChi() - Chi() >= 2 and { Charges(chi_brew) == 1 and SpellChargeCooldown(chi_brew) <= 10 or Charges(chi_brew) == 2 or target.TimeToDie() < Charges(chi_brew) * 10 } and BuffStacks(tigereye_brew_buff) <= 16 Spell(chi_brew)
#tiger_palm,if=buff.tiger_power.remains<=3
diff --git a/scripts/simulationcraft_monk_windwalker_2h.lua b/scripts/simulationcraft_monk_windwalker_2h.lua
index 875c51a..54294ec 100644
--- a/scripts/simulationcraft_monk_windwalker_2h.lua
+++ b/scripts/simulationcraft_monk_windwalker_2h.lua
@@ -48,8 +48,8 @@ AddFunction WindwalkerDefaultActions
if BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 Spell(blood_fury_apsp)
#berserking,if=buff.tigereye_brew_use.up|target.time_to_die<18
if BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 Spell(berserking)
- #arcane_torrent,if=buff.tigereye_brew_use.up|target.time_to_die<18
- if BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 Spell(arcane_torrent_chi)
+ #arcane_torrent,if=chi.max-chi>=1&(buff.tigereye_brew_use.up|target.time_to_die<18)
+ if MaxChi() - Chi() >= 1 and { BuffPresent(tigereye_brew_use_buff) or target.TimeToDie() < 18 } Spell(arcane_torrent_chi)
#chi_brew,if=chi.max-chi>=2&((charges=1&recharge_time<=10)|charges=2|target.time_to_die<charges*10)&buff.tigereye_brew.stack<=16
if MaxChi() - Chi() >= 2 and { Charges(chi_brew) == 1 and SpellChargeCooldown(chi_brew) <= 10 or Charges(chi_brew) == 2 or target.TimeToDie() < Charges(chi_brew) * 10 } and BuffStacks(tigereye_brew_buff) <= 16 Spell(chi_brew)
#tiger_palm,if=buff.tiger_power.remains<=3
diff --git a/scripts/simulationcraft_paladin_retribution.lua b/scripts/simulationcraft_paladin_retribution.lua
index f8f1740..f2ddeec 100644
--- a/scripts/simulationcraft_paladin_retribution.lua
+++ b/scripts/simulationcraft_paladin_retribution.lua
@@ -89,12 +89,16 @@ AddFunction RetributionDefaultActions
Spell(arcane_torrent_holy)
#seraphim
Spell(seraphim)
- #call_action_list,name=aoe,if=active_enemies>=5
- if Enemies() >= 5 RetributionAoeActions()
- #call_action_list,name=cleave,if=active_enemies>=3
- if Enemies() >= 3 RetributionCleaveActions()
- #call_action_list,name=single
- RetributionSingleActions()
+ #wait,sec=cooldown.seraphim.remains,if=talent.seraphim.enabled&cooldown.seraphim.remains>0&cooldown.seraphim.remains<gcd.max&holy_power>=5
+ unless Talent(seraphim_talent) and SpellCooldown(seraphim) > 0 and SpellCooldown(seraphim) < GCD() and HolyPower() >= 5 and SpellCooldown(seraphim) > 0
+ {
+ #call_action_list,name=aoe,if=active_enemies>=5
+ if Enemies() >= 5 RetributionAoeActions()
+ #call_action_list,name=cleave,if=active_enemies>=3
+ if Enemies() >= 3 RetributionCleaveActions()
+ #call_action_list,name=single
+ RetributionSingleActions()
+ }
}
AddFunction RetributionAoeActions
@@ -184,14 +188,14 @@ AddFunction RetributionSingleActions
if BuffPresent(divine_crusader_buff) and HolyPower() == 5 and Enemies() == 2 and not Talent(final_verdict_talent) Spell(divine_storm)
#divine_storm,if=holy_power=5&active_enemies=2&buff.final_verdict.up
if HolyPower() == 5 and Enemies() == 2 and BuffPresent(final_verdict_buff) Spell(divine_storm)
- #divine_storm,if=buff.divine_crusader.react&holy_power=5&(talent.seraphim.enabled&cooldown.seraphim.remains<=5)
- if BuffPresent(divine_crusader_buff) and HolyPower() == 5 and Talent(seraphim_talent) and SpellCooldown(seraphim) <= 5 Spell(divine_storm)
+ #divine_storm,if=buff.divine_crusader.react&holy_power=5&(talent.seraphim.enabled&cooldown.seraphim.remains<=4)
+ if BuffPresent(divine_crusader_buff) and HolyPower() == 5 and Talent(seraphim_talent) and SpellCooldown(seraphim) <= 4 Spell(divine_storm)
#templars_verdict,if=holy_power=5|buff.holy_avenger.up&holy_power>=3&(!talent.seraphim.enabled|cooldown.seraphim.remains>5)
if HolyPower() == 5 or BuffPresent(holy_avenger_buff) and HolyPower() >= 3 and { not Talent(seraphim_talent) or SpellCooldown(seraphim) > 5 } Spell(templars_verdict)
- #templars_verdict,if=buff.divine_purpose.react&buff.divine_purpose.remains<4
- if BuffPresent(divine_purpose_buff) and BuffRemaining(divine_purpose_buff) < 4 Spell(templars_verdict)
- #divine_storm,if=buff.divine_crusader.react&buff.divine_crusader.remains<4&!talent.final_verdict.enabled
- if BuffPresent(divine_crusader_buff) and BuffRemaining(divine_crusader_buff) < 4 and not Talent(final_verdict_talent) Spell(divine_storm)
+ #templars_verdict,if=buff.divine_purpose.react&buff.divine_purpose.remains<3
+ if BuffPresent(divine_purpose_buff) and BuffRemaining(divine_purpose_buff) < 3 Spell(templars_verdict)
+ #divine_storm,if=buff.divine_crusader.react&buff.divine_crusader.remains<3&!talent.final_verdict.enabled
+ if BuffPresent(divine_crusader_buff) and BuffRemaining(divine_crusader_buff) < 3 and not Talent(final_verdict_talent) Spell(divine_storm)
#final_verdict,if=holy_power=5|buff.holy_avenger.up&holy_power>=3
if HolyPower() == 5 or BuffPresent(holy_avenger_buff) and HolyPower() >= 3 Spell(final_verdict)
#final_verdict,if=buff.divine_purpose.react&buff.divine_purpose.remains<4
@@ -204,10 +208,10 @@ AddFunction RetributionSingleActions
if Talent(empowered_seals_talent) and Stance(paladin_seal_of_righteousness) and BuffRemaining(liadrins_righteousness_buff) < SpellCooldownDuration(judgment) Spell(judgment)
#exorcism,if=buff.blazing_contempt.up&holy_power<=2&buff.holy_avenger.down
if BuffPresent(blazing_contempt_buff) and HolyPower() <= 2 and BuffExpires(holy_avenger_buff) Spell(exorcism)
- #seal_of_truth,if=talent.empowered_seals.enabled&buff.maraads_truth.down&buff.maraads_truth.remains<cooldown.judgment.duration
- if Talent(empowered_seals_talent) and BuffExpires(maraads_truth_buff) and BuffRemaining(maraads_truth_buff) < SpellCooldownDuration(judgment) Spell(seal_of_truth)
- #seal_of_righteousness,if=talent.empowered_seals.enabled&buff.liadrins_righteousness.remains<(cooldown.judgment.duration)&buff.liadrins_righteousness.remains<=3&!buff.avenging_wrath.up&!buff.bloodlust.up
- if Talent(empowered_seals_talent) and BuffRemaining(liadrins_righteousness_buff) < SpellCooldownDuration(judgment) and BuffRemaining(liadrins_righteousness_buff) <= 3 and not BuffPresent(avenging_wrath_melee_buff) and not BuffPresent(burst_haste_buff any=1) Spell(seal_of_righteousness)
+ #seal_of_truth,if=talent.empowered_seals.enabled&buff.maraads_truth.down
+ if Talent(empowered_seals_talent) and BuffExpires(maraads_truth_buff) Spell(seal_of_truth)
+ #seal_of_righteousness,if=talent.empowered_seals.enabled&buff.liadrins_righteousness.down&!buff.avenging_wrath.up&!buff.bloodlust.up
+ if Talent(empowered_seals_talent) and BuffExpires(liadrins_righteousness_buff) and not BuffPresent(avenging_wrath_melee_buff) and not BuffPresent(burst_haste_buff any=1) Spell(seal_of_righteousness)
#divine_storm,if=buff.divine_crusader.react&buff.final_verdict.up&(buff.avenging_wrath.up|target.health.pct<35)
if BuffPresent(divine_crusader_buff) and BuffPresent(final_verdict_buff) and { BuffPresent(avenging_wrath_melee_buff) or target.HealthPercent() < 35 } Spell(divine_storm)
#final_verdict,if=buff.avenging_wrath.up|target.health.pct<35
@@ -226,10 +230,14 @@ AddFunction RetributionSingleActions
if HolyPower() >= 4 Spell(final_verdict)
#judgment,cycle_targets=1,if=last_judgment_target!=target&glyph.double_jeopardy.enabled&holy_power<5&cooldown.seraphim.remains<=3
if True(last_judgement_target) and Glyph(glyph_of_double_jeopardy) and HolyPower() < 5 and SpellCooldown(seraphim) <= 3 Spell(judgment)
- #exorcism,if=glyph.mass_exorcism.enabled&active_enemies>=2&holy_power<5&!cooldown.seraphim.remains<=5
- if Glyph(glyph_of_mass_exorcism) and Enemies() >= 2 and HolyPower() < 5 and not SpellCooldown(seraphim) <= 5 Spell(exorcism)
- #judgment,,if=holy_power<5&!cooldown.seraphim.remains<=3
- if HolyPower() < 5 and not SpellCooldown(seraphim) <= 3 Spell(judgment)
+ #exorcism,if=glyph.mass_exorcism.enabled&active_enemies>=2&holy_power<5
+ if Glyph(glyph_of_mass_exorcism) and Enemies() >= 2 and HolyPower() < 5 Spell(exorcism)
+ #judgment,,if=holy_power<5
+ if HolyPower() < 5 Spell(judgment)
+ #final_verdict,if=holy_power>=3
+ if HolyPower() >= 3 Spell(final_verdict)
+ #exorcism,if=talent.seraphim.enabled&cooldown.seraphim.remains<=15
+ if Talent(seraphim_talent) and SpellCooldown(seraphim) <= 15 Spell(exorcism)
#templars_verdict,if=buff.divine_purpose.react
if BuffPresent(divine_purpose_buff) Spell(templars_verdict)
#divine_storm,if=buff.divine_crusader.react&!talent.final_verdict.enabled
diff --git a/scripts/simulationcraft_rogue_subtlety.lua b/scripts/simulationcraft_rogue_subtlety.lua
index e794e55..080e0da 100644
--- a/scripts/simulationcraft_rogue_subtlety.lua
+++ b/scripts/simulationcraft_rogue_subtlety.lua
@@ -174,8 +174,6 @@ AddFunction SubtletyPrecombatActions
UsePotionAgility()
#stealth
if BuffExpires(stealthed_buff any=1) Spell(stealth)
- #premeditation
- Spell(premeditation)
#slice_and_dice
Spell(slice_and_dice)
#honor_among_thieves,cooldown=2.2,cooldown_stddev=0.1
diff --git a/scripts/simulationcraft_shaman_elemental.lua b/scripts/simulationcraft_shaman_elemental.lua
index 3125494..76b3d5f 100644
--- a/scripts/simulationcraft_shaman_elemental.lua
+++ b/scripts/simulationcraft_shaman_elemental.lua
@@ -66,11 +66,11 @@ AddFunction ElementalDefaultActions
#storm_elemental_totem
Spell(storm_elemental_totem)
#fire_elemental_totem,if=!active
- if not TotemPresent(fire totem=fire_elemental_totem) Spell(fire_elemental_totem)
+ if not TotemPresent(fire_elemental_totem) Spell(fire_elemental_totem)
#ascendance,if=active_enemies>1|(dot.flame_shock.remains>buff.ascendance.duration&(target.time_to_die<20|buff.bloodlust.up|time>=60)&cooldown.lava_burst.remains>0)
if { Enemies() > 1 or target.DebuffRemaining(flame_shock_debuff) > BaseDuration(ascendance_caster_buff) and { target.TimeToDie() < 20 or BuffPresent(burst_haste_buff any=1) or TimeInCombat() >= 60 } and SpellCooldown(lava_burst) > 0 } and BuffExpires(ascendance_caster_buff) Spell(ascendance_caster)
#liquid_magma,if=pet.searing_totem.remains>=15|pet.fire_elemental_totem.remains>=15
- if TotemRemaining(fire totem=searing_totem) >= 15 or TotemRemaining(fire totem=fire_elemental_totem) >= 15 Spell(liquid_magma)
+ if TotemRemaining(searing_totem) >= 15 or TotemRemaining(fire_elemental_totem) >= 15 Spell(liquid_magma)
#call_action_list,name=single,if=active_enemies=1
if Enemies() == 1 ElementalSingleActions()
#call_action_list,name=aoe,if=active_enemies>1
@@ -88,7 +88,7 @@ AddFunction ElementalAoeActions
#thunderstorm,if=active_enemies>=10
if Enemies() >= 10 Spell(thunderstorm)
#searing_totem,if=(!talent.liquid_magma.enabled&!totem.fire.active)|(talent.liquid_magma.enabled&pet.searing_totem.remains<=20&!pet.fire_elemental_totem.active&!buff.liquid_magma.up)
- if not Talent(liquid_magma_talent) and not TotemPresent(fire) or Talent(liquid_magma_talent) and TotemRemaining(fire totem=searing_totem) <= 20 and not TotemPresent(fire totem=fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
+ if not Talent(liquid_magma_talent) and not TotemPresent(fire) or Talent(liquid_magma_talent) and TotemRemaining(searing_totem) <= 20 and not TotemPresent(fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
#chain_lightning,if=active_enemies>=2
if Enemies() >= 2 Spell(chain_lightning)
#lightning_bolt
@@ -139,7 +139,7 @@ AddFunction ElementalSingleActions
#flame_shock,if=time>60&remains<=buff.ascendance.duration&cooldown.ascendance.remains+buff.ascendance.duration<duration
if TimeInCombat() > 60 and target.DebuffRemaining(flame_shock_debuff) <= BaseDuration(ascendance_caster_buff) and SpellCooldown(ascendance_caster) + BaseDuration(ascendance_caster_buff) < BaseDuration(flame_shock_debuff) Spell(flame_shock)
#searing_totem,if=(!talent.liquid_magma.enabled&!totem.fire.active)|(talent.liquid_magma.enabled&pet.searing_totem.remains<=20&!pet.fire_elemental_totem.active&!buff.liquid_magma.up)
- if not Talent(liquid_magma_talent) and not TotemPresent(fire) or Talent(liquid_magma_talent) and TotemRemaining(fire totem=searing_totem) <= 20 and not TotemPresent(fire totem=fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
+ if not Talent(liquid_magma_talent) and not TotemPresent(fire) or Talent(liquid_magma_talent) and TotemRemaining(searing_totem) <= 20 and not TotemPresent(fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
#spiritwalkers_grace,moving=1,if=((talent.elemental_blast.enabled&cooldown.elemental_blast.remains=0)|(cooldown.lava_burst.remains=0&!buff.lava_surge.react))
if Speed() > 0 and { Talent(elemental_blast_talent) and not SpellCooldown(elemental_blast) > 0 or not SpellCooldown(lava_burst) > 0 and not BuffPresent(lava_surge_buff) } Spell(spiritwalkers_grace)
#lightning_bolt
diff --git a/scripts/simulationcraft_shaman_enhancement.lua b/scripts/simulationcraft_shaman_enhancement.lua
index 3f6f2c1..097baec 100644
--- a/scripts/simulationcraft_shaman_enhancement.lua
+++ b/scripts/simulationcraft_shaman_enhancement.lua
@@ -62,7 +62,7 @@ AddFunction EnhancementDefaultActions
#use_item,name=beating_heart_of_the_mountain
UseItemActions()
#potion,name=draenic_agility,if=(talent.storm_elemental_totem.enabled&pet.storm_elemental_totem.remains>=25)|(!talent.storm_elemental_totem.enabled&pet.fire_elemental_totem.remains>=25)|target.time_to_die<=30
- if Talent(storm_elemental_totem_talent) and TotemRemaining(air totem=storm_elemental_totem) >= 25 or not Talent(storm_elemental_totem_talent) and TotemRemaining(fire totem=fire_elemental_totem) >= 25 or target.TimeToDie() <= 30 UsePotionAgility()
+ if Talent(storm_elemental_totem_talent) and TotemRemaining(storm_elemental_totem) >= 25 or not Talent(storm_elemental_totem_talent) and TotemRemaining(fire_elemental_totem) >= 25 or target.TimeToDie() <= 30 UsePotionAgility()
#blood_fury
Spell(blood_fury_apsp)
#arcane_torrent
@@ -80,7 +80,7 @@ AddFunction EnhancementDefaultActions
#feral_spirit
Spell(feral_spirit)
#liquid_magma,if=pet.searing_totem.remains>=15|pet.magma_totem.remains>=15|pet.fire_elemental_totem.remains>=15
- if TotemRemaining(fire totem=searing_totem) >= 15 or TotemRemaining(fire totem=magma_totem) >= 15 or TotemRemaining(fire totem=fire_elemental_totem) >= 15 Spell(liquid_magma)
+ if TotemRemaining(searing_totem) >= 15 or TotemRemaining(magma_totem) >= 15 or TotemRemaining(fire_elemental_totem) >= 15 Spell(liquid_magma)
#ancestral_swiftness
Spell(ancestral_swiftness)
#call_action_list,name=single,if=active_enemies=1
@@ -121,7 +121,7 @@ AddFunction EnhancementAoeActions
#fire_nova,if=active_dot.flame_shock>=2
if DebuffCountOnAny(flame_shock_debuff) >= 2 Spell(fire_nova)
#magma_totem,if=pet.magma_totem.remains<=20&!pet.fire_elemental_totem.active&!buff.liquid_magma.up
- if TotemRemaining(fire totem=magma_totem) <= 20 and not TotemPresent(fire totem=fire_elemental_totem) and not BuffPresent(liquid_magma_buff) and target.InRange(primal_strike) Spell(magma_totem)
+ if TotemRemaining(magma_totem) <= 20 and not TotemPresent(fire_elemental_totem) and not BuffPresent(liquid_magma_buff) and target.InRange(primal_strike) Spell(magma_totem)
#stormstrike
Spell(stormstrike)
#frost_shock,if=active_enemies<4
@@ -175,7 +175,7 @@ AddFunction EnhancementSingleActions
#lightning_bolt,if=(buff.maelstrom_weapon.react>=1&!buff.ascendance.up)|buff.ancestral_swiftness.up
if BuffStacks(maelstrom_weapon_buff) >= 1 and not BuffPresent(ascendance_melee_buff) or BuffPresent(ancestral_swiftness_buff) Spell(lightning_bolt)
#searing_totem,if=pet.searing_totem.remains<=20&!pet.fire_elemental_totem.active&!buff.liquid_magma.up
- if TotemRemaining(fire totem=searing_totem) <= 20 and not TotemPresent(fire totem=fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
+ if TotemRemaining(searing_totem) <= 20 and not TotemPresent(fire_elemental_totem) and not BuffPresent(liquid_magma_buff) Spell(searing_totem)
}
AddIcon specialization=enhancement help=main enemies=1
diff --git a/scripts/simulationcraft_warrior_arms.lua b/scripts/simulationcraft_warrior_arms.lua
index a74cf68..90f5d2a 100644
--- a/scripts/simulationcraft_warrior_arms.lua
+++ b/scripts/simulationcraft_warrior_arms.lua
@@ -60,8 +60,8 @@ AddFunction ArmsDefaultActions
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) and target.DebuffPresent(colossus_smash_debuff) or BuffPresent(recklessness_buff) Spell(blood_fury_ap)
#berserking,if=buff.bloodbath.up|(!talent.bloodbath.enabled&debuff.colossus_smash.up)|buff.recklessness.up
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) and target.DebuffPresent(colossus_smash_debuff) or BuffPresent(recklessness_buff) Spell(berserking)
- #arcane_torrent,if=buff.bloodbath.up|(!talent.bloodbath.enabled&debuff.colossus_smash.up)|buff.recklessness.up
- if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) and target.DebuffPresent(colossus_smash_debuff) or BuffPresent(recklessness_buff) Spell(arcane_torrent_rage)
+ #arcane_torrent,if=rage<rage.max-40
+ if Rage() < MaxRage() - 40 Spell(arcane_torrent_rage)
#heroic_leap,if=(raid_event.movement.distance>25&raid_event.movement.in>45)|!raid_event.movement.exists
if { 0 > 25 and 600 > 45 or not False(raid_event_movement_exists) } and target.InRange(charge) Spell(heroic_leap)
#call_action_list,name=single,if=active_enemies=1
@@ -132,6 +132,8 @@ AddFunction ArmsSingleActions
if SpellCooldown(colossus_smash) < 4 Spell(ravager)
#colossus_smash
Spell(colossus_smash)
+ #bladestorm,if=!raid_event.adds.exists&debuff.colossus_smash.up&rage<70
+ if not False(raid_event_adds_exists) and target.DebuffPresent(colossus_smash_debuff) and Rage() < 70 Spell(bladestorm)
#mortal_strike,if=target.health.pct>20&cooldown.colossus_smash.remains>1
if target.HealthPercent() > 20 and SpellCooldown(colossus_smash) > 1 Spell(mortal_strike)
#storm_bolt,if=(cooldown.colossus_smash.remains>4|debuff.colossus_smash.up)&rage<90
diff --git a/scripts/simulationcraft_warrior_fury_1h.lua b/scripts/simulationcraft_warrior_fury_1h.lua
index 55c2031..d2fd0a4 100644
--- a/scripts/simulationcraft_warrior_fury_1h.lua
+++ b/scripts/simulationcraft_warrior_fury_1h.lua
@@ -64,8 +64,8 @@ AddFunction FurySingleMindedFuryDefaultActions
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(blood_fury_ap)
#berserking,if=buff.bloodbath.up|!talent.bloodbath.enabled|buff.recklessness.up
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(berserking)
- #arcane_torrent,if=buff.bloodbath.up|!talent.bloodbath.enabled|buff.recklessness.up
- if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(arcane_torrent_rage)
+ #arcane_torrent,if=rage<rage.max-40
+ if Rage() < MaxRage() - 40 Spell(arcane_torrent_rage)
#call_action_list,name=single_target,if=active_enemies=1
if Enemies() == 1 FurySingleMindedFurySingleTargetActions()
#call_action_list,name=two_targets,if=active_enemies=2
@@ -153,6 +153,8 @@ AddFunction FurySingleMindedFurySingleTargetActions
if BuffPresent(raging_blow_buff) Spell(raging_blow)
#wild_strike,if=buff.enrage.up&target.health.pct>20
if BuffPresent(enrage_buff any=1) and target.HealthPercent() > 20 Spell(wild_strike)
+ #bladestorm,if=!raid_event.adds.exists
+ if not False(raid_event_adds_exists) Spell(bladestorm)
#shockwave,if=!talent.unquenchable_thirst.enabled
if not Talent(unquenchable_thirst_talent) Spell(shockwave)
#impending_victory,if=!talent.unquenchable_thirst.enabled&target.health.pct>20
diff --git a/scripts/simulationcraft_warrior_fury_2h.lua b/scripts/simulationcraft_warrior_fury_2h.lua
index cb36a28..d38623f 100644
--- a/scripts/simulationcraft_warrior_fury_2h.lua
+++ b/scripts/simulationcraft_warrior_fury_2h.lua
@@ -64,8 +64,8 @@ AddFunction FuryTitansGripDefaultActions
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(blood_fury_ap)
#berserking,if=buff.bloodbath.up|!talent.bloodbath.enabled|buff.recklessness.up
if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(berserking)
- #arcane_torrent,if=buff.bloodbath.up|!talent.bloodbath.enabled|buff.recklessness.up
- if BuffPresent(bloodbath_buff) or not Talent(bloodbath_talent) or BuffPresent(recklessness_buff) Spell(arcane_torrent_rage)
+ #arcane_torrent,if=rage<rage.max-40
+ if Rage() < MaxRage() - 40 Spell(arcane_torrent_rage)
#call_action_list,name=single_target,if=active_enemies=1
if Enemies() == 1 FuryTitansGripSingleTargetActions()
#call_action_list,name=two_targets,if=active_enemies=2
@@ -153,6 +153,8 @@ AddFunction FuryTitansGripSingleTargetActions
if BuffPresent(raging_blow_buff) Spell(raging_blow)
#wild_strike,if=buff.enrage.up&target.health.pct>20
if BuffPresent(enrage_buff any=1) and target.HealthPercent() > 20 Spell(wild_strike)
+ #bladestorm,if=!raid_event.adds.exists
+ if not False(raid_event_adds_exists) Spell(bladestorm)
#shockwave,if=!talent.unquenchable_thirst.enabled
if not Talent(unquenchable_thirst_talent) Spell(shockwave)
#impending_victory,if=!talent.unquenchable_thirst.enabled&target.health.pct>20
diff --git a/scripts/simulationcraft_warrior_gladiator.lua b/scripts/simulationcraft_warrior_gladiator.lua
index 31278b0..4664fe7 100644
--- a/scripts/simulationcraft_warrior_gladiator.lua
+++ b/scripts/simulationcraft_warrior_gladiator.lua
@@ -56,8 +56,8 @@ AddFunction ProtectionGladiatorDefaultActions
if BuffPresent(bloodbath_buff) or BuffPresent(avatar_buff) or BuffPresent(shield_charge_buff) or target.TimeToDie() < 10 Spell(blood_fury_ap)
#berserking,if=buff.bloodbath.up|buff.avatar.up|buff.shield_charge.up|target.time_to_die<10
if BuffPresent(bloodbath_buff) or BuffPresent(avatar_buff) or BuffPresent(shield_charge_buff) or target.TimeToDie() < 10 Spell(berserking)
- #arcane_torrent,if=buff.bloodbath.up|buff.avatar.up|buff.shield_charge.up|target.time_to_die<10
- if BuffPresent(bloodbath_buff) or BuffPresent(avatar_buff) or BuffPresent(shield_charge_buff) or target.TimeToDie() < 10 Spell(arcane_torrent_rage)
+ #arcane_torrent,if=rage<rage.max-40
+ if Rage() < MaxRage() - 40 Spell(arcane_torrent_rage)
#potion,name=draenic_armor,if=buff.bloodbath.up|buff.avatar.up|buff.shield_charge.up
if BuffPresent(bloodbath_buff) or BuffPresent(avatar_buff) or BuffPresent(shield_charge_buff) UsePotionArmor()
#shield_charge,if=(!buff.shield_charge.up&!cooldown.shield_slam.remains)|charges=2
diff --git a/scripts/simulationcraft_warrior_protection.lua b/scripts/simulationcraft_warrior_protection.lua
index 730b9b6..6d52271 100644
--- a/scripts/simulationcraft_warrior_protection.lua
+++ b/scripts/simulationcraft_warrior_protection.lua
@@ -141,6 +141,8 @@ AddFunction ProtectionProtAoeActions
Spell(revenge)
#thunder_clap
Spell(thunder_clap)
+ #bladestorm
+ Spell(bladestorm)
#shield_slam
Spell(shield_slam)
#storm_bolt
@@ -172,6 +174,7 @@ AddIcon specialization=protection help=aoe
# avatar_talent
# berserker_rage
# berserking
+# bladestorm
# blood_fury_ap
# bloodbath
# bloodbath_buff