Cogspark Works · Rotation
Marksmanship Hunter
The priority list SimulationCraft plays this spec with · engine build 20261019-1860cd1-w8a2c73d · game data 12.1.5.70448
§1How to read this
A rotation in SimulationCraft is a priority list, not a sequence. Every time the character can act, the sim starts at the top of The main loop and does the first line whose conditions hold. Lower lines only happen when nothing above them fits.
- The page shows the list as a decision tree: set what you know about the fight and your talents, and it lights the lists the sim checks, in order.
- Cast lines use the ability. Hover, focus or tap an icon or a name for its tooltip.
- Go through another list: its lines are checked in order; when none of them fits, the sim comes back and carries on with the next line here.
- Switch to another list: the rest of this list is skipped and the choice is made from that list alone.
- Helpers are values the list works out on the spot, such as “are we holding a cooldown”. Setting one takes no time and the list carries on. The tree works out the ones your situation settles.
The list is written to perform well in the sim, not to be the only right way to play. Every line keeps its original simc text under the simc toggle at its right, and the list author’s note where there is one.
§2Decision tree
Set what you know. The tree lights the lists the sim checks, top to bottom; in each list it presses the first ability whose conditions hold and that is ready. Readiness (cooldowns, resources) isn’t in the list, so a lit ability is the first one allowed, not a promise it is cast.
- The main loop
- Cooldowns
- Trinkets
- Draoe (maybe)
- Sentaoe (maybe)
- Drst (maybe)
- Sentst (maybe)
Before the pull, done once before the fight starts (4 steps)
Before the pull4 lines
- Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats - Cast Summon Pet if you have Unbreakable Bond talented
simc
summon_pet,if=talent.unbreakable_bond - Use Algethar Puzzle Box
simc
use_item,name=algethar_puzzle_box - Cast Aimed Shot
simc
aimed_shot
The main loop10 lines
- Set trueshot ready to true when the following holds, otherwise falseany of these:
- you don't have Bullseye talented
- all of these:
- any of these:
- more than Trueshot's cooldown plus 10 s of the fight remain
- the stacks of Bullseye is the maximum stacks of Bullseye
- any of these:
- Explosive Shot has at least 15 s of cooldown left
- Explosive Shot is off cooldown
- any of these:
- the fight ends within 25 s
- less than 10 s into the fight
simc
variable,name=trueshot_ready,value=!talent.bullseye|(fight_remains>cooldown.trueshot.duration+10|buff.bullseye.stack=buff.bullseye.max_stack)&(cooldown.explosive_shot.remains>=15|cooldown.explosive_shot.ready)|fight_remains<25|time<10 - Set trueshot ready to whether the time left in the current pull is more than 20 s or the next pull starts in more than 45 s (or never) or you have Calling the Shots talented when the following holds, otherwise to trueshot readythe sim's fight style is DungeonRouteFor DungeonRoute, hold Trueshot at the end of pulls.
simc
variable,name=trueshot_ready,op=setif,condition=fight_style.dungeonroute,value_else=variable.trueshot_ready,value=raid_event.pull.remains>20|raid_event.pull.in>45|talent.calling_the_shots - Switch your target if the sim's fight style is DungeonRoutetarget on the enemy with the highest target's healthAt most once every 5 s
simc
retarget,target_if=max:target.health,line_cd=5,if=fight_style.dungeonroute - Cast Auto Shot
simc
auto_shot go through Cooldowns, then carry on below if nothing there fits
simc
call_action_list,name=cdsCooldowns8 lines
- Get Power Infusion from an ally if Trueshot has more than 12 s left or the fight ends within 13 s
simc
invoke_external_buff,name=power_infusion,if=buff.trueshot.remains>12|fight_remains<13 - Cast Berserking if Trueshot is active or the fight ends within 13 s
simc
berserking,if=buff.trueshot.up|fight_remains<13 - Cast Blood Fury if Trueshot is active or Trueshot has more than 30 s of cooldown left or the fight ends within 16 s
simc
blood_fury,if=buff.trueshot.up|cooldown.trueshot.remains>30|fight_remains<16 - Cast Ancestral Call if Trueshot is active or Trueshot has more than 30 s of cooldown left or the fight ends within 16 s
simc
ancestral_call,if=buff.trueshot.up|cooldown.trueshot.remains>30|fight_remains<16 - Cast Fireblood if Trueshot is active or Trueshot has more than 30 s of cooldown left or the fight ends within 9 s
simc
fireblood,if=buff.trueshot.up|cooldown.trueshot.remains>30|fight_remains<9 - Cast Light's Judgment if Trueshot isn't active
simc
lights_judgment,if=buff.trueshot.down - Drink a potion if (Trueshot is active and (Bloodlust is active or the fight ends within 120 s minus (30 if you have Calling the Shots talented, else 0))) or the fight ends within 31 s
simc
potion,if=buff.trueshot.up&(buff.bloodlust.up|fight_remains<120-30*talent.calling_the_shots)|fight_remains<31 - Drink a potion if (your potion is Potion of Recklessness and Bullseye is active and Trueshot comes off cooldown within 7 s and (the sim's fight style is DungeonRoute or Explosive Shot has at least 25 s of cooldown left or Explosive Shot comes off cooldown within 10 s)) or the fight ends within 31 sPotion of Recklessness (Crit) has little to no value for execute Trueshots as we are crit hard-capped, so use Luster instead. Luster 7s before Trueshot allows for Font to be used in the last 3s of Luster (since the on-use trinket popped with Trueshot puts Font on a 20s CD).
simc
potion,name=liquid_luster_2,if=potion.potion_of_recklessness&buff.bullseye.up&cooldown.trueshot.remains<7&(fight_style.dungeonroute|cooldown.explosive_shot.remains>=25|cooldown.explosive_shot.remains<10)|fight_remains<31
go through Trinkets, then carry on below if nothing there fits
simc
call_action_list,name=trinketsTrinkets4 lines
- Use your trinkets if this trinket has an on-use effect that grants a stat buff and the remainder of this trinket's cooldown divided by Trueshot's cooldown is 0 and (Trueshot has more than 14 s left or (this trinket is Algethar Puzzle Box and trueshot ready is true and Trueshot comes off cooldown within 5 s))A buff trinket that lines up cleanly with Trueshot; use with Trueshot.
simc
use_items,check_existing=0,slots=trinket1:trinket2,if=this_trinket.has_use_buff&this_trinket.cooldown.duration%%cooldown.trueshot.duration=0&(buff.trueshot.remains>14|this_trinket.is.algethar_puzzle_box&variable.trueshot_ready&cooldown.trueshot.remains<5) - Use your trinkets if this trinket has an on-use effect that grants a stat buff and the other trinket has an on-use effect that grants a stat buff and the remainder of the other trinket's cooldown divided by Trueshot's cooldown is 0 and ((Trueshot has more than 14 s left and the other trinket is on cooldown) or (Trueshot has more than 20 s of cooldown left and the other trinket comes off cooldown within the cooldown left on Trueshot))A buff trinket paired with a trinket that matches the above line; use with Trueshot if the other trinket is not ready or use without Trueshot if the other trinket will come up for the next Trueshot.
simc
use_items,check_existing=0,slots=trinket1:trinket2,if=this_trinket.has_use_buff&other_trinket.has_use_buff&other_trinket.cooldown.duration%%cooldown.trueshot.duration=0&(buff.trueshot.remains>14&other_trinket.cooldown.remains|cooldown.trueshot.remains>20&other_trinket.cooldown.remains<=cooldown.trueshot.remains) - Use your trinkets if this trinket has an on-use effect that grants a stat buff and (Trueshot has more than 14 s left or (Trueshot is active and the fight ends within the cooldown left on Trueshot plus 15 s) or the fight ends within 21 s)A buff trinket, use with Trueshot or in the last ~20 seconds of the fight.
simc
use_items,check_existing=0,slots=trinket1:trinket2,if=this_trinket.has_use_buff&(buff.trueshot.remains>14|buff.trueshot.up&fight_remains<cooldown.trueshot.remains+15|fight_remains<21) - Use your trinkets if this trinket has an on-use effect that deals damage and Trueshot has more than 20 s of cooldown leftA damage trinket; use when Trueshot has at least 20 seconds remaining on its cooldown.
simc
use_items,check_existing=0,slots=trinket1:trinket2,if=this_trinket.has_use_damage&cooldown.trueshot.remains>20
Is it true that there are more than 2 enemies and you have Trick Shots talented and you use the Dark Ranger hero talents?Not set
If so, go through Draoe, then carry on below if nothing there fits
simc
call_action_list,name=draoe,if=active_enemies>2&talent.trick_shots&hero_tree.dark_rangerIs it true that there are more than 2 enemies and you have Trick Shots talented and you use the Sentinel hero talents?Not set
If so, go through Sentaoe, then carry on below if nothing there fits
simc
call_action_list,name=sentaoe,if=active_enemies>2&talent.trick_shots&hero_tree.sentinelIs it true that you use the Dark Ranger hero talents?Not set
If so, go through Drst, then carry on below if nothing there fits
simc
call_action_list,name=drst,if=hero_tree.dark_rangerIs it true that you use the Sentinel hero talents?Not set
If so, go through Sentst, then carry on below if nothing there fits
simc
call_action_list,name=sentst,if=hero_tree.sentinel
Read from ActionPriorityLists/default/hunter_marksmanship.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.
Blizzard’s own suggestion system (the one-button rotation), as simc carries it. It is simpler than SimulationCraft’s list and is not what Cogspark simulates.
§2Decision tree
Set what you know. The tree lights the lists the sim checks, top to bottom; in each list it presses the first ability whose conditions hold and that is ready. Readiness (cooldowns, resources) isn’t in the list, so a lit ability is the first one allowed, not a promise it is cast.
- The main loop
- Cooldowns
- Assisted Combat
Before the pull, done once before the fight starts (2 steps)
Before the pull2 lines
- Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats - Cast Summon Pet if you have Unbreakable Bond talented
simc
summon_pet,if=talent.unbreakable_bond
The main loop3 lines
- Cast Auto Shot
simc
auto_shot go through Cooldowns, then carry on below if nothing there fits
simc
call_action_list,name=cooldownsCooldowns7 lines
- Use your trinketsSome cooldowns are not used by the Assisted Combat system. This simple default cooldown usage has been provided by simc.
simc
use_items - Drink a potion
simc
potion - Cast Blood Fury
simc
blood_fury - Cast Berserking
simc
berserking - Cast Fireblood
simc
fireblood - Cast Ancestral Call
simc
ancestral_call - Cast Trueshot
simc
trueshot
go through Assisted Combat, then carry on below if nothing there fits
simc
call_action_list,name=assisted_combatAssisted Combat19 lines
- Cast TrueshotThis is the default action priority list from the game's Assisted Combat system. This is for Blizzard automation and is not included in the game's Assisted Combat system.
simc
trueshot - Cast Volley if your distance to the target is at most 50
simc
volley,if=target.distance<=50 - Cast Explosive Shot
simc
explosive_shot - Cast Multi-Shot if Trick Shots isn't active and there are more than 3 enemies
simc
multishot,if=buff.trick_shots.down&active_enemies>3 - Cast Multi-Shot if Trick Shots is active and Trick Shots has at most 2 s left, or isn't active and there are more than 3 enemies
simc
multishot,if=buff.trick_shots.up&buff.trick_shots.remains<=2&active_enemies>3 - Cast Multi-Shot if Precise Shots is active and there are more than 3 enemies
simc
multishot,if=buff.precise_shots.up&active_enemies>3 - Cast Kill Shot if you have Black Arrow talented
simc
kill_shot,if=talent.black_arrow - Cast Black Arrow if you have Black Arrow talented
simc
black_arrow,if=talent.black_arrow - Cast Rapid Fire
simc
rapid_fire - Cast Aimed Shot if Aimed Shot has 2 or more charges
simc
aimed_shot,if=charges>=2,cooldown_allow_casting_success=1 - Cast Aimed Shot
simc
aimed_shot - Cast Kill Shot
simc
kill_shot - Cast Black Arrow
simc
black_arrow - Cast Multi-Shot if there are more than 3 enemies and you have 90 or more Focus
simc
multishot,if=active_enemies>3&focus>=90 - Cast Arcane Shot if Precise Shots is active
simc
arcane_shot,if=buff.precise_shots.up - Cast Arcane Shot if you don't have Precise Shots talented
simc
arcane_shot,if=!talent.precise_shots - Cast Steady Shot
simc
steady_shot,cooldown_allow_casting_success=1 - Cast Steady Shot
simc
steady_shot
Read from ActionPriorityLists/assisted_combat/hunter_marksmanship.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.