|
|
|
|
# Executed before combat begins. Accepts non-harmful actions only.
|
|
|
|
|
actions.precombat+=/apply_poison
|
|
|
|
|
actions.precombat+=/bottled_flayedwing_toxin
|
|
|
|
|
actions.precombat+=/marked_for_death,precombat_seconds=10,if=raid_event.adds.in>25
|
|
|
|
|
actions.precombat+=/fleshcraft,if=soulbind.pustule_eruption|soulbind.volatile_solvent
|
|
|
|
|
actions.precombat+=/stealth
|
|
|
|
|
actions.precombat+=/adrenaline_rush,precombat_seconds=3,if=talent.improved_adrenaline_rush
|
|
|
|
|
actions.precombat+=/roll_the_bones,precombat_seconds=2,if=remains<3
|
|
|
|
|
actions.precombat+=/slice_and_dice,precombat_seconds=1,if=refreshable
|
|
|
|
|
|
|
|
|
|
# Restealth if possible (no vulnerable enemies in combat)
|
|
|
|
|
actions=stealth
|
|
|
|
|
# Interrupt on cooldown to allow simming interactions with that
|
|
|
|
|
actions+=/kick,if=!stealthed.all
|
|
|
|
|
# Checks if we are in an appropriate Stealth state for triggering the Count the Odds bonus
|
|
|
|
|
actions+=/variable,name=stealthed_cto,value=talent.count_the_odds&(stealthed.basic|buff.shadowmeld.up|buff.shadow_dance.up)
|
|
|
|
|
# Roll the Bones Reroll Conditions
|
|
|
|
|
actions+=/variable,name=rtb_reroll,value=rtb_buffs<2&(!buff.broadside.up&(!talent.fan_the_hammer|!buff.skull_and_crossbones.up)&!buff.true_bearing.up|buff.loaded_dice.up)|rtb_buffs=2&(buff.buried_treasure.up&buff.grand_melee.up|!buff.broadside.up&!buff.true_bearing.up&buff.loaded_dice.up)
|
|
|
|
|
# Ensure we get full Ambush CP gains and aren't rerolling Count the Odds buffs away
|
|
|
|
|
actions+=/variable,name=ambush_condition,value=combo_points.deficit>=2+talent.improved_ambush+buff.broadside.up&energy>=50&(!talent.count_the_odds|buff.roll_the_bones.remains>=10)
|
|
|
|
|
# Finish at max possible CP without overflowing bonus combo points, unless for BtE which always should be 5+ CP
|
|
|
|
|
actions+=/variable,name=finish_condition,value=combo_points>=cp_max_spend-buff.broadside.up-(buff.opportunity.up&(talent.quick_draw|talent.fan_the_hammer)|buff.concealed_blunderbuss.up)|effective_combo_points>=cp_max_spend
|
|
|
|
|
# Always attempt to use BtE at 5+ CP, regardless of CP gen waste
|
|
|
|
|
actions+=/variable,name=finish_condition,op=reset,if=cooldown.between_the_eyes.ready&effective_combo_points<5
|
|
|
|
|
# Finish at 2+ in the last GCD of Flagellation
|
|
|
|
|
actions+=/variable,name=finish_condition,value=1,if=buff.flagellation_buff.up&buff.flagellation_buff.remains<1&effective_combo_points>=2
|
|
|
|
|
# With multiple targets, this variable is checked to decide whether some CDs should be synced with Blade Flurry
|
|
|
|
|
actions+=/variable,name=blade_flurry_sync,value=spell_targets.blade_flurry<2&raid_event.adds.in>20|buff.blade_flurry.remains>1+talent.killing_spree.enabled
|
|
|
|
|
# Higher priority Stealth list for Count the Odds or true Stealth/Vanish that will break in a single global
|
|
|
|
|
actions+=/call_action_list,name=stealth,strict=1,if=stealthed.basic|buff.shadowmeld.up
|
|
|
|
|
actions+=/call_action_list,name=cds
|
|
|
|
|
# Lower priority Stealth list for Shadow Dance
|
|
|
|
|
actions+=/call_action_list,name=stealth,strict=1,if=variable.stealthed_cto
|
|
|
|
|
actions+=/run_action_list,name=finish,if=variable.finish_condition
|
|
|
|
|
actions+=/call_action_list,name=build
|
|
|
|
|
actions+=/arcane_torrent,if=energy.base_deficit>=15+energy.regen
|
|
|
|
|
actions+=/arcane_pulse
|
|
|
|
|
actions+=/lights_judgment
|
|
|
|
|
actions+=/bag_of_tricks
|
|
|
|
|
|
|
|
|
|
# Builders
|
|
|
|
|
actions.build=sepsis,cycle_targets=1,if=target.time_to_die>11&debuff.between_the_eyes.up|fight_remains<11
|
|
|
|
|
actions.build+=/ghostly_strike,if=debuff.ghostly_strike.remains<=3&(spell_targets.blade_flurry<=2|debuff.dreadblades.up)&target.time_to_die>=5
|
|
|
|
|
actions.build+=/echoing_reprimand,if=!debuff.dreadblades.up
|
|
|
|
|
# High priority Ambush line to apply Find Weakness or consume HO+Audacity buff before Pistol Shot
|
|
|
|
|
actions.build+=/ambush,if=talent.hidden_opportunity&buff.audacity.up|talent.find_weakness&debuff.find_weakness.down
|
|
|
|
|
# Use Greenskins Wickers buff immediately with Opportunity unless running Fan the Hammer
|
|
|
|
|
actions.build+=/pistol_shot,if=buff.greenskins_wickers.up&(!talent.fan_the_hammer&buff.opportunity.up|buff.greenskins_wickers.remains<1.5)
|
|
|
|
|
# With Fan the Hammer, consume Opportunity at max stacks or if we will get 4+ CP and Dreadblades is not up
|
|
|
|
|
actions.build+=/pistol_shot,if=talent.fan_the_hammer&buff.opportunity.up&(buff.opportunity.stack>=buff.opportunity.max_stack|buff.opportunity.remains<2)
|
|
|
|
|
actions.build+=/pistol_shot,if=talent.fan_the_hammer&buff.opportunity.up&combo_points.deficit>4&!debuff.dreadblades.up
|
|
|
|
|
actions.build+=/pool_resource,for_next=1
|
|
|
|
|
actions.build+=/ambush,if=settings.ambush_anyway|talent.hidden_opportunity|talent.find_weakness&debuff.find_weakness.down
|
|
|
|
|
# Apply SBS to all targets without a debuff as priority, preferring targets dying sooner after the primary target
|
|
|
|
|
actions.build+=/serrated_bone_spike,if=!dot.serrated_bone_spike_dot.ticking
|
|
|
|
|
actions.build+=/serrated_bone_spike,cycle_targets=1,if=!dot.serrated_bone_spike_dot.ticking
|
|
|
|
|
# Attempt to use when it will cap combo points and SnD is down, otherwise keep from capping charges
|
|
|
|
|
actions.build+=/serrated_bone_spike,if=fight_remains<=5|cooldown.serrated_bone_spike.max_charges-charges_fractional<=0.25|combo_points.deficit=cp_gain&!buff.skull_and_crossbones.up&energy.base_time_to_max>1
|
|
|
|
|
# Use Pistol Shot with Opportunity if Combat Potency won't overcap energy, when it will exactly cap CP, or when using Quick Draw
|
|
|
|
|
actions.build+=/pistol_shot,if=!talent.fan_the_hammer&buff.opportunity.up&(energy.base_deficit>energy.regen*1.5|!talent.weaponmaster&combo_points.deficit<=1+buff.broadside.up|talent.quick_draw.enabled|talent.audacity.enabled&!buff.audacity.up)
|
|
|
|
|
# Use Sinister Strike on targets without the Cache DoT if the trinket is up
|
|
|
|
|
actions.build+=/sinister_strike,cycle_targets=1,if=buff.acquired_axe_driver.up
|
|
|
|
|
actions.build+=/sinister_strike
|
|
|
|
|
|
|
|
|
|
# Blade Flurry on 2+ enemies
|
|
|
|
|
actions.cds=blade_flurry,if=spell_targets>=2&!buff.blade_flurry.up&!stealthed.rogue
|
|
|
|
|
actions.cds+=/roll_the_bones,if=debuff.dreadblades.down&(!buff.roll_the_bones.up|variable.rtb_reroll)
|
|
|
|
|
actions.cds+=/keep_it_rolling,if=!variable.rtb_reroll&(buff.broadside.up+buff.true_bearing.up+buff.skull_and_crossbones.up+buff.ruthless_precision.up)>2&(buff.shadow_dance.down|rtb_buffs>=6)
|
|
|
|
|
actions.cds+=/vanish,if=!runeforge.invigorating_shadowdust&(!stealthed.all|talent.count_the_odds&!variable.stealthed_cto)&!buff.take_em_by_surprise.up&((talent.find_weakness&debuff.find_weakness.down|talent.hidden_opportunity|settings.ambush_anyway)&variable.ambush_condition|!talent.find_weakness&talent.count_the_odds&variable.finish_condition)&(!talent.shadow_dance|!cooldown.shadow_dance.ready)
|
|
|
|
|
actions.cds+=/variable,name=shadow_dance_condition,value=talent.shadow_dance&(!stealthed.all|talent.count_the_odds&!variable.stealthed_cto)&debuff.between_the_eyes.up&(!talent.ghostly_strike|debuff.ghostly_strike.up)&(!talent.dreadblades|!cooldown.dreadblades.ready)
|
|
|
|
|
actions.cds+=/shadow_dance,if=!talent.keep_it_rolling&variable.shadow_dance_condition&buff.slice_and_dice.up&(variable.finish_condition|talent.hidden_opportunity)
|
|
|
|
|
actions.cds+=/shadow_dance,if=talent.keep_it_rolling&variable.shadow_dance_condition&(cooldown.keep_it_rolling.remains<=30|cooldown.keep_it_rolling.remains>120&(variable.finish_condition|talent.hidden_opportunity))
|
|
|
|
|
actions.cds+=/flagellation,cycle_targets=1,if=!stealthed.all&(variable.finish_condition&target.time_to_die>10|fight_remains<13)
|
|
|
|
|
actions.cds+=/adrenaline_rush,if=!buff.adrenaline_rush.up&(!talent.improved_adrenaline_rush|combo_points<=2)
|
|
|
|
|
actions.cds+=/dreadblades,if=!stealthed.all&combo_points<=2&(!talent.marked_for_death|!cooldown.marked_for_death.ready)&target.time_to_die>=10
|
|
|
|
|
# Fleshcraft for Pustule Eruption if not stealthed and not with Blade Flurry
|
|
|
|
|
actions.cds+=/fleshcraft,if=(soulbind.pustule_eruption|soulbind.volatile_solvent)&!stealthed.all&(!buff.blade_flurry.up|spell_targets.blade_flurry<2)&(!buff.adrenaline_rush.up|energy.base_time_to_max>2)
|
|
|
|
|
# If adds are up, snipe the one with lowest TTD. Use when dying faster than CP deficit or without any CP.
|
|
|
|
|
actions.cds+=/marked_for_death,line_cd=1.5,target_if=min:target.time_to_die,if=raid_event.adds.up&(target.time_to_die<combo_points.deficit|combo_points.deficit>=cp_max_spend-1)&!debuff.dreadblades.up
|
|
|
|
|
# If no adds will die within the next 30s, use MfD on boss without any CP.
|
|
|
|
|
actions.cds+=/marked_for_death,if=raid_event.adds.in>30-raid_event.adds.duration&combo_points.deficit>=cp_max_spend-1&!debuff.dreadblades.up
|
|
|
|
|
# Use in 1-2T if BtE is up and won't cap Energy, or at 3T+
|
|
|
|
|
actions.cds+=/killing_spree,if=variable.blade_flurry_sync&!stealthed.rogue&(debuff.between_the_eyes.up&debuff.dreadblades.down&energy.base_deficit>(energy.regen*2+15)|spell_targets.blade_flurry>2)
|
|
|
|
|
actions.cds+=/blade_rush,if=variable.blade_flurry_sync&(energy.base_time_to_max>2&!debuff.dreadblades.up|energy<=30|spell_targets>2)
|
|
|
|
|
# If using Invigorating Shadowdust, use normal logic in addition to checking major CDs.
|
|
|
|
|
actions.cds+=/vanish,if=runeforge.invigorating_shadowdust&action.flagellation.known&!stealthed.all&variable.finish_condition&(!cooldown.flagellation.ready&(!talent.dreadblades|!cooldown.dreadblades.ready|!buff.flagellation_buff.up))
|
|
|
|
|
actions.cds+=/vanish,if=runeforge.invigorating_shadowdust&!action.flagellation.known&!stealthed.all&variable.finish_condition&(cooldown.echoing_reprimand.remains>6|!cooldown.sepsis.ready|cooldown.serrated_bone_spike.full_recharge_time>20)
|
|
|
|
|
actions.cds+=/shadowmeld,if=!stealthed.all&(talent.count_the_odds&variable.finish_condition|!talent.weaponmaster.enabled&variable.ambush_condition)
|
|
|
|
|
actions.cds+=/thistle_tea,if=!buff.thistle_tea.up&(energy.base_deficit>=100|fight_remains<charges*6)
|
|
|
|
|
actions.cds+=/potion,if=buff.bloodlust.react|fight_remains<30|buff.adrenaline_rush.up
|
|
|
|
|
actions.cds+=/blood_fury
|
|
|
|
|
actions.cds+=/berserking
|
|
|
|
|
actions.cds+=/fireblood
|
|
|
|
|
actions.cds+=/ancestral_call
|
|
|
|
|
actions.cds+=/use_item,name=wraps_of_electrostatic_potential,if=!stealthed.rogue
|
|
|
|
|
actions.cds+=/use_item,name=ring_of_collapsing_futures,if=!stealthed.rogue&(buff.temptation.down|fight_remains<30)
|
|
|
|
|
actions.cds+=/use_item,name=windscar_whetstone,if=!stealthed.rogue&(spell_targets.blade_flurry>desired_targets|raid_event.adds.in>60|fight_remains<7)
|
|
|
|
|
actions.cds+=/use_item,name=cache_of_acquired_treasures,if=!stealthed.rogue&(buff.acquired_axe.up|boss&fight_remains<25)
|
|
|
|
|
actions.cds+=/use_item,name=bloodstained_handkerchief,cycle_targets=1,if=!stealthed.rogue&!dot.cruel_garrote.ticking
|
|
|
|
|
actions.cds+=/use_item,name=scars_of_fraternal_strife,if=!stealthed.rogue&(!buff.scars_of_fraternal_strife_4.up|fight_remains<30)
|
|
|
|
|
# Default conditions for usable items.
|
|
|
|
|
actions.cds+=/use_items,slots=trinket1,if=debuff.between_the_eyes.up|trinket.1.has_stat.any_dps|fight_remains<=20
|
|
|
|
|
actions.cds+=/use_items,slots=trinket2,if=debuff.between_the_eyes.up|trinket.2.has_stat.any_dps|fight_remains<=20
|
|
|
|
|
|
|
|
|
|
# Finishers BtE to keep the Crit debuff up, if RP is up, or for Greenskins, unless the target is about to die.
|
|
|
|
|
actions.finish=between_the_eyes,if=target.time_to_die>3&(debuff.between_the_eyes.remains<4|(runeforge.greenskins_wickers|talent.greenskins_wickers)&!buff.greenskins_wickers.up|!runeforge.greenskins_wickers&!talent.greenskins_wickers&buff.ruthless_precision.up)
|
|
|
|
|
actions.finish+=/slice_and_dice,if=buff.slice_and_dice.remains<fight_remains&refreshable&(!talent.swift_slasher|combo_points>=cp_max_spend)
|
|
|
|
|
actions.finish+=/cold_blood
|
|
|
|
|
actions.finish+=/dispatch
|
|
|
|
|
|
|
|
|
|
# Stealth
|
|
|
|
|
actions.stealth=cold_blood,if=variable.finish_condition
|
|
|
|
|
actions.stealth+=/dispatch,if=variable.finish_condition
|
|
|
|
|
actions.stealth+=/ambush,if=variable.stealthed_cto|stealthed.basic&talent.find_weakness&!debuff.find_weakness.up
|