actions.precombat+=/apply_poison actions.precombat+=/bottled_flayedwing_toxin actions.precombat+=/use_item,name=algethar_puzzle_box actions.precombat+=/stealth actions.precombat+=/marked_for_death,precombat_seconds=10,if=raid_event.adds.in>25 actions.precombat+=/adrenaline_rush,precombat_seconds=3,if=talent.improved_adrenaline_rush|settings.use_ld_opener&cooldown.roll_the_bones.remains<1&(buff.roll_the_bones.remains<3|rtb_buffs.normal=0) actions.precombat+=/roll_the_bones,precombat_seconds=2,if=remains<3|rtb_buffs.normal=0 actions.precombat+=/slice_and_dice,precombat_seconds=1,if=refreshable&buff.grand_melee.down&!settings.use_ld_opener # Restealth if possible (no vulnerable enemies in combat) actions+=/stealth # Interrupt on cooldown to allow simming interactions with that actions+=/kick # Shiv to dispel Enrage effects. actions+=/shiv,if=debuff.dispellable_enrage.up # 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,if=!talent.hidden_opportunity,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) # Additional Reroll Conditions for Keep it Rolling or Count the Odds actions+=/variable,name=rtb_reroll,if=!talent.hidden_opportunity&(talent.keep_it_rolling|talent.count_the_odds),value=variable.rtb_reroll|((rtb_buffs.normal=0&rtb_buffs.longer>=1)&!(buff.broadside.up&buff.true_bearing.up&buff.skull_and_crossbones.up)&!(buff.broadside.remains>39|buff.true_bearing.remains>39|buff.ruthless_precision.remains>39|buff.skull_and_crossbones.remains>39)) # With Hidden Opportunity, prioritize rerolling for Skull and Crossbones over everything else actions+=/variable,name=rtb_reroll,if=talent.hidden_opportunity,value=!rtb_buffs.will_lose.skull_and_crossbones&rtb_buffs.will_lose<2&buff.shadow_dance.down&buff.subterfuge.down # Avoid rerolls when we will not have time remaining on the fight or add wave to recoup the opportunity cost of the global actions+=/variable,name=rtb_reroll,op=reset,if=!(raid_event.adds.remains>12|raid_event.adds.up&(raid_event.adds.in-raid_event.adds.remains)<6|target.time_to_die>12)|boss&fight_remains<12 # Ensure we want to cast Ambush prior to triggering a Stealth cooldown actions+=/variable,name=ambush_condition,value=(talent.hidden_opportunity|combo_points.deficit>=2+talent.improved_ambush+buff.broadside.up|buff.vicious_followup.up|settings.ambush_anyway)&energy>=50 # Finish at 6 (5 with Summarily Dispatched talented) CP or CP Max-1, whichever is greater of the two actions+=/variable,name=finish_condition,value=combo_points>=((cp_max_spend-1)=cp_max_spend # 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,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,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|boss&fight_remains<11 actions.build+=/ghostly_strike,if=debuff.ghostly_strike.remains<=3&(spell_targets.blade_flurry<=2|buff.dreadblades.up)&!buff.subterfuge.up&target.time_to_die>=5 # High priority Ambush line to apply Find Weakness or consume Audacity/Sepsis buff before Pistol Shot actions.build+=/ambush,if=talent.keep_it_rolling&((buff.audacity.up|buff.sepsis_buff.up)&talent.find_weakness&debuff.find_weakness.remains<2|buff.subterfuge.up&cooldown.keep_it_rolling.ready) actions.build+=/ambush,if=talent.hidden_opportunity&(buff.audacity.up|buff.sepsis_buff.up) # With Audacity + Hidden Opportunity + Fan the Hammer, use Pistol Shot to proc Audacity any time Ambush is not available actions.build+=/pistol_shot,if=talent.fan_the_hammer&talent.audacity&talent.hidden_opportunity&buff.opportunity.up&!buff.audacity.up&!buff.subterfuge.up&!buff.shadow_dance.up # 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 max 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>((1+talent.quick_draw)*talent.fan_the_hammer.rank)&!buff.dreadblades.up&(!talent.hidden_opportunity|!buff.subterfuge.up&!buff.shadow_dance.up) actions.build+=/echoing_reprimand ## actions.build+=/pool_resource,for_next=1 actions.build+=/ambush,if=settings.ambush_anyway|talent.hidden_opportunity|talent.find_weakness&debuff.find_weakness.down # 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) actions.build+=/sinister_strike # Cooldowns actions.cds+=/adrenaline_rush,if=!buff.adrenaline_rush.up&(!talent.improved_adrenaline_rush|combo_points<=2) actions.cds+=/blade_flurry,if=(spell_targets>=2|((buff.grand_melee.up&talent.hidden_opportunity)|(buff.grand_melee.remains>10))&!stealthed.rogue&!buff.dreadblades.up)&buff.blade_flurry.remains2&(buff.shadow_dance.down|rtb_buffs>=6) actions.cds+=/blade_rush,if=variable.blade_flurry_sync&!buff.dreadblades.up&(energy.base_time_to_max>4+stealthed.rogue-spell_targets%3) actions.cds+=/call_action_list,name=stealth_cds,if=!stealthed.all|talent.count_the_odds&!talent.hidden_opportunity&!variable.stealthed_cto actions.cds+=/dreadblades,if=!(variable.stealthed_cto|stealthed.basic|talent.hidden_opportunity&stealthed.rogue)&combo_points<=2&(!talent.marked_for_death|!cooldown.marked_for_death.ready)&target.time_to_die>=10 # 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,cycle_targets=1,if=raid_event.adds.up&(target.time_to_die=cp_max_spend-1)&!buff.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&!buff.dreadblades.up actions.cds+=/thistle_tea,if=!buff.thistle_tea.up&(energy.base_deficit>=100|boss&fight_remains4 actions.cds+=/shadowmeld,if=!stealthed.all&(talent.count_the_odds&variable.finish_condition|!talent.weaponmaster.enabled&variable.ambush_condition) actions.cds+=/potion,if=buff.bloodlust.react|boss&fight_remains<30|buff.adrenaline_rush.up actions.cds+=/blood_fury actions.cds+=/berserking actions.cds+=/fireblood actions.cds+=/ancestral_call # Default conditions for usable items. actions.cds+=/use_item,name=manic_grieftorch,use_off_gcd=1,if=!stealthed.all&debuff.between_the_eyes.up&(!talent.ghostly_strike|debuff.ghostly_strike.up|spell_targets.blade_flurry>2)|boss&fight_remains<=5 actions.cds+=/use_item,name=dragonfire_bomb_dispenser,use_off_gcd=1,if=(!trinket.1.is.dragonfire_bomb_dispenser&trinket.1.cooldown.remains>10|trinket.2.cooldown.remains>10)|cooldown.dragonfire_bomb_dispenser.charges>2|fight_remains<20|!trinket.2.has_cooldown|!trinket.1.has_cooldown # Note: SimulationCraft tries to use Beacon only in the first 0.1s of the GCD, which I've relaxed here because that's too narrow a window. actions.cds+=/use_item,name=beacon_to_the_beyond,use_off_gcd=1,if=!stealthed.all&debuff.between_the_eyes.up&(!talent.ghostly_strike|debuff.ghostly_strike.up|spell_targets.blade_flurry>2)|boss&fight_remains<=5 actions.cds+=/use_item,name=stormeaters_boon,if=spell_targets.blade_flurry>desired_targets|raid_event.adds.in>60|boss&fight_remains<10 actions.cds+=/use_item,name=windscar_whetstone,if=spell_targets.blade_flurry>desired_targets|raid_event.adds.in>60|boss&fight_remains<7 actions.cds+=/use_items,slots=trinket1,if=debuff.between_the_eyes.up|trinket.1.has_stat.any_dps|boss&fight_remains<=20 actions.cds+=/use_items,slots=trinket2,if=debuff.between_the_eyes.up|trinket.2.has_stat.any_dps|boss&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|talent.greenskins_wickers&!buff.greenskins_wickers.up|!talent.greenskins_wickers&talent.improved_between_the_eyes&buff.ruthless_precision.up|!talent.greenskins_wickers&set_bonus.tier30_4pc) actions.finish+=/slice_and_dice,if=buff.slice_and_dice.remains=cp_max_spend) actions.finish+=/cold_blood actions.finish+=/dispatch # Stealth actions.stealth+=/blade_flurry,if=talent.subterfuge&talent.hidden_opportunity&spell_targets>=2&!buff.blade_flurry.up actions.stealth+=/cold_blood,if=variable.finish_condition actions.stealth+=/dispatch,if=variable.finish_condition actions.stealth+=/ambush,if=variable.stealthed_cto|stealthed.basic&(settings.ambush_anyway|talent.find_weakness&!debuff.find_weakness.up|talent.hidden_opportunity) # Stealth Cooldowns actions.stealth_cds+=/variable,name=vanish_condition,value=time>10&(talent.hidden_opportunity|!talent.shadow_dance|!cooldown.shadow_dance.ready) actions.stealth_cds+=/variable,name=vanish_opportunity_condition,value=!talent.shadow_dance&talent.fan_the_hammer.rank+talent.quick_draw+talent.audacity120&(variable.finish_condition|talent.hidden_opportunity))