Cogspark Works · Rotation
Feral Druid
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
- Cooldown
- Cd variable (maybe)
- Finisher (maybe)
- AoE finisher (maybe)
- Builder (maybe)
- AoE builder (maybe)
Before the pull, done once before the fight starts (10 steps)
Before the pull10 lines
- Record your stats before the pull (sim bookkeeping)Snapshot raid buffed stats before combat begins and pre-potting is done.
simc
snapshot_stats - Reset regrowth to its starting valueoptional variable that sends regrowth casts. Turned off by default
simc
variable,name=regrowth,op=reset - Set dotc rake threshold to 99see the 2nd rake line in aoe_builders. This determines when that line can return true
simc
variable,name=dotc_rake_threshold,op=set,value=99 - Set dotc rake threshold to 5all of these:
- you have Wild Slashes talented
- you have Merciless Claws talented
simc
variable,name=dotc_rake_threshold,op=set,if=talent.wild_slashes&talent.merciless_claws,value=5 - Set dotc rake threshold to 8all of these:
- you have Wild Slashes talented
- you don't have Merciless Claws talented
simc
variable,name=dotc_rake_threshold,op=set,if=talent.wild_slashes&!talent.merciless_claws,value=8 - Drink a potion if your potion is Liquid Luster
simc
potion,pre_pot_time=12,if=potion.liquid_luster - Set algethar puzzle box precombat cast to 3any of these:for practicism, we give a 1s leeway (at 0% haste) from cast end until start of the fight.
- trinket 1 is Algethar Puzzle Box
- trinket 1 has no on-use effect that grants a stat buff
simc
variable,name=algethar_puzzle_box_precombat_cast,value=3,if=trinket.1.is.algethar_puzzle_box|!trinket.1.has_use_buff - Use Algethar Puzzle Box if trinket 1 is Algethar Puzzle Box or trinket 1 has no on-use effect that grants a stat buff
simc
use_item,name=algethar_puzzle_box,if=trinket.1.is.algethar_puzzle_box|!trinket.1.has_use_buff - Cast Cat Form if Cat Form isn't active
simc
cat_form,if=buff.cat_form.down - Cast Prowl
simc
prowl
The main loop14 lines
- Cast Prowl if Bs Inc isn't active and Prowl isn't active and Shadowmeld isn't active
simc
prowl,if=buff.bs_inc.down&!buff.prowl.up&!buff.shadowmeld.up - Cast Cat Form if Cat Form isn't active and you don't have Fluid Form talented
simc
cat_form,if=!buff.cat_form.up&!talent.fluid_form - Get Power Infusion from an ally if Bs Inc is active or you don't have Berserk: Heart of the Lion talentedLine up <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> with <a href='https://www.wowhead.com/spell=106951/berserk'>Berserk</a> every 2 minutes.
simc
invoke_external_buff,name=power_infusion,if=buff.bs_inc.up|!talent.berserk_heart_of_the_lion - Start auto-attacking if Prowl isn't active and Shadowmeld isn't active
simc
auto_attack,if=!buff.prowl.up&!buff.shadowmeld.up - Cast Tiger's Fury if (Bs Inc comes off cooldown within 1 s or Bs Inc has more than 10 s of cooldown left or holdBerserk is true) and (Frantic Frenzy comes off cooldown within Tiger's Fury's duration minus 1.5 s or Frantic Frenzy has more than 22 s of cooldown left or you don't have Frantic Frenzy talented or Tiger's Fury would hit exactly 1 enemy or the sim's fight style is DungeonRoute or the sim's fight style is DungeonSlice)tigers fury on cooldown, in aoe patchwerk we can hold ~2s for frantic frenzy as needed. Like frantic frenzy, holding can sometimes be a gain in dr/ds, but the conditions are unclear. Addendum: Seems't've been related to holding Berserk, attempt to check holding tigers fury at your own risk.
simc
tigers_fury,if=(cooldown.bs_inc.remains<=1|cooldown.bs_inc.remains>10|variable.holdBerserk)&(cooldown.frantic_frenzy.remains<buff.tigers_fury.duration-1.5|cooldown.frantic_frenzy.remains>22|!talent.frantic_frenzy|spell_targets=1|fight_style.dungeonroute|fight_style.dungeonslice) - Cast Rake if Prowl is active or Shadowmeld is activerake out of stealth
simc
rake,if=buff.prowl.up|buff.shadowmeld.up - Cast Chomp if Chomp Enabler is activechomp if its possible. Check this in aoe
simc
chomp,if=buff.chomp_enabler.up go through Cooldown, then carry on below if nothing there fits
simc
call_action_list,name=cooldownCooldown14 lines
Is it true that Bs Inc is off cooldown or your potion is off cooldown or trinket 1 is off cooldown or trinket 2 is off cooldown?Not set
If so, go through Cd variable, then carry on below if nothing there fits
this line is here to reduce the amount of variable calls in the APL by only checking variables when they are potentially relevant.simc
call_action_list,name=cd_variable,if=!cooldown.bs_inc.remains|!cooldown.potion.remains|!trinket.1.cooldown.remains|!trinket.2.cooldown.remains- Use your trinket 1 if trinket 1 has an on-use effect that deals damage and (trinket 2 has more than 20 s of cooldown left or trinket 2 has no on-use effect that grants a stat buff or (Tiger's Fury comes off cooldown within 25 s and Tiger's Fury has more than 20 s of cooldown left)) and (trinket 1 isn't Font of Venomous Rage or Bs Inc isn't active)non-stat on use trinkets get used on cooldown, so long as it wont interfere with a stat on-use trinket
simc
use_item,slot=trinket1,if=trinket.1.has_use_damage&(trinket.2.cooldown.remains>20|!trinket.2.has_use_buff|(cooldown.tigers_fury.remains<25&cooldown.tigers_fury.remains>20))&(!trinket.1.is.font_of_venomous_rage|!buff.bs_inc.up) - Use your trinket 2 if trinket 2 has an on-use effect that deals damage and (trinket 1 has more than 20 s of cooldown left or trinket 1 has no on-use effect that grants a stat buff or (Tiger's Fury comes off cooldown within 25 s and Tiger's Fury has more than 20 s of cooldown left)) and (trinket 2 isn't Font of Venomous Rage or Bs Inc isn't active)
simc
use_item,slot=trinket2,if=trinket.2.has_use_damage&(trinket.1.cooldown.remains>20|!trinket.1.has_use_buff|(cooldown.tigers_fury.remains<25&cooldown.tigers_fury.remains>20))&(!trinket.2.is.font_of_venomous_rage|!buff.bs_inc.up) - Cast Berserking
simc
berserking - Drink a potion if Bs Inc is active or the fight ends within 32 s or (Tiger's Fury is active and holdPot is false)potion during berserk, fallback pot if the fight is going to end within its duration. Expedite use if you would lose a pot use by holding it.
simc
potion,if=buff.bs_inc.up|fight_remains<32|buff.tigers_fury.up&!variable.holdPot - Use your trinketsnon trinket gear-on-uses have variable rules on whether or not they trigger the trinket shared CD. For the cases they do we will need specific APL entries. For now just use on cooldown.
simc
use_items - Use your trinket 1 if trinket 1 has an on-use effect that grants a stat buff and (Tiger's Fury has at least 25 s of cooldown left or (trinket 1 is Algethar Puzzle Box and (no adds are up or the time left in the current add wave is more than 13 s) and Tiger's Fury comes off cooldown within 2 s)) and (((Bs Inc comes off cooldown within 5 s or Bs Inc has at least 14 s left) and holdBerserk is false) or (Convoke the Spirits comes off cooldown within 10 s and you have Ashamane's Guidance talented and you have Convoke the Spirits talented) or lowestCDremaining is more than trinket 1's cooldown or (zerkCountRemaining is 1 and (you don't have Convoke the Spirits talented or convokeCountRemaining is 1) and potCountRemaining is 1 and highestCDremaining plus 3 is more than trinket 1's cooldown) or (zerkCountRemaining is convokeCountRemaining and you have Convoke the Spirits talented and zerkCountRemaining isn't potCountRemaining and the larger of the cooldown left on Bs Inc and the cooldown left on Convoke the Spirits is more than trinket 1's cooldown) or (slot1CountRemaining is potCountRemaining plus 1 and your potion is active) or (trinket 2 has an on-use effect that grants a stat buff and ((secondLowestCDremaining is more than trinket 1's cooldown and lowestCDremaining is more than the cooldown left on trinket 2) or (zerkCountRemaining is 1 and (you don't have Convoke the Spirits talented or convokeCountRemaining is 1) and potCountRemaining is 1 and highestCDremaining is more than the cooldown left on trinket 2) or (zerkCountRemaining is convokeCountRemaining and you have Convoke the Spirits talented and zerkCountRemaining isn't potCountRemaining and the larger of the cooldown left on Convoke the Spirits and the cooldown left on Bs Inc is more than the cooldown left on trinket 2) or (convokeCountRemaining is false and zerkCountRemaining is false and potCountRemaining is false))))Used without waiting for the global cooldownstat on-use trinkets, essentially this compares the number of trinket uses to the number of other cooldown uses remaining in the fight to determine whether or not to send the trinket.
simc
use_item,slot=trinket1,use_off_gcd=1,if=trinket.1.has_use_buff&(cooldown.tigers_fury.remains>=25|trinket.1.is.algethar_puzzle_box&(!raid_event.adds.up|raid_event.adds.remains>13)&cooldown.tigers_fury.remains<2)&((cooldown.bs_inc.remains<5|buff.bs_inc.remains>=14)&!variable.holdBerserk|cooldown.convoke_the_spirits.remains<10&talent.ashamanes_guidance&talent.convoke_the_spirits|variable.lowestCDremaining>trinket.1.cooldown.duration|variable.zerkCountRemaining=1&(!talent.convoke_the_spirits|variable.convokeCountRemaining=1)&variable.potCountRemaining=1&(variable.highestCDremaining+3)>trinket.1.cooldown.duration|variable.zerkCountRemaining=variable.convokeCountRemaining&talent.convoke_the_spirits&variable.zerkCountRemaining!=variable.potCountRemaining&(cooldown.bs_inc.remains<?cooldown.convoke_the_spirits.remains)>trinket.1.cooldown.duration|variable.slot1CountRemaining=variable.potCountRemaining+1&buff.potion.up|trinket.2.has_use_buff&(variable.secondLowestCDremaining>trinket.1.cooldown.duration&variable.lowestCDremaining>trinket.2.cooldown.remains|variable.zerkCountRemaining=1&(!talent.convoke_the_spirits|variable.convokeCountRemaining=1)&variable.potCountRemaining=1&variable.highestCDremaining>trinket.2.cooldown.remains|variable.zerkCountRemaining=variable.convokeCountRemaining&talent.convoke_the_spirits&variable.zerkCountRemaining!=variable.potCountRemaining&(cooldown.convoke_the_spirits.remains<?cooldown.bs_inc.remains)>trinket.2.cooldown.remains|variable.convokeCountRemaining=0&variable.zerkCountRemaining=0&variable.potCountRemaining=0)) - Use your trinket 2 if trinket 2 has an on-use effect that grants a stat buff and (trinket 1 has no on-use effect that grants a stat buff or trinket 1 has more than 20 s of cooldown left) and (Tiger's Fury has at least 25 s of cooldown left or (trinket 2 is Algethar Puzzle Box and (no adds are up or the time left in the current add wave is more than 13 s) and (Tiger's Fury comes off cooldown within 2 s or Tiger's Fury is active))) and (your potion is active or slot2CountRemaining isn't potCountRemaining) and (((Bs Inc comes off cooldown within 5 s or Bs Inc has at least 14 s left) and holdBerserk is false) or (Convoke the Spirits comes off cooldown within 10 s and you have Ashamane's Guidance talented and you have Convoke the Spirits talented) or lowestCDremaining is more than trinket 2's cooldown or (zerkCountRemaining is 1 and (you don't have Convoke the Spirits talented or convokeCountRemaining is 1) and potCountRemaining is 1 and highestCDremaining plus 3 is more than trinket 2's cooldown) or (zerkCountRemaining is convokeCountRemaining and you have Convoke the Spirits talented and zerkCountRemaining isn't potCountRemaining and the larger of the cooldown left on Bs Inc and the cooldown left on Convoke the Spirits is more than trinket 2's cooldown) or (slot1CountRemaining is potCountRemaining minus 1 and your potion is active) or (trinket 1 has an on-use effect that grants a stat buff and ((secondLowestCDremaining is more than trinket 2's cooldown and lowestCDremaining is more than the cooldown left on trinket 1) or (zerkCountRemaining is 1 and (you don't have Convoke the Spirits talented or convokeCountRemaining is 1) and potCountRemaining is 1 and highestCDremaining is more than the cooldown left on trinket 1) or (zerkCountRemaining is convokeCountRemaining and you have Convoke the Spirits talented and zerkCountRemaining isn't potCountRemaining and the larger of the cooldown left on Convoke the Spirits and the cooldown left on Bs Inc is more than the cooldown left on trinket 1) or (convokeCountRemaining is false and zerkCountRemaining is false and potCountRemaining is false))))Used without waiting for the global cooldown
simc
use_item,slot=trinket2,use_off_gcd=1,if=trinket.2.has_use_buff&(!trinket.1.has_use_buff|trinket.1.cooldown.remains>20)&(cooldown.tigers_fury.remains>=25|trinket.2.is.algethar_puzzle_box&(!raid_event.adds.up|raid_event.adds.remains>13)&(cooldown.tigers_fury.remains<2|buff.tigers_fury.up))&(buff.potion.up|variable.slot2CountRemaining!=variable.potCountRemaining)&((cooldown.bs_inc.remains<5|buff.bs_inc.remains>=14)&!variable.holdBerserk|cooldown.convoke_the_spirits.remains<10&talent.ashamanes_guidance&talent.convoke_the_spirits|variable.lowestCDremaining>trinket.2.cooldown.duration|variable.zerkCountRemaining=1&(!talent.convoke_the_spirits|variable.convokeCountRemaining=1)&variable.potCountRemaining=1&(variable.highestCDremaining+3)>trinket.2.cooldown.duration|variable.zerkCountRemaining=variable.convokeCountRemaining&talent.convoke_the_spirits&variable.zerkCountRemaining!=variable.potCountRemaining&(cooldown.bs_inc.remains<?cooldown.convoke_the_spirits.remains)>trinket.2.cooldown.duration|variable.slot1CountRemaining=variable.potCountRemaining-1&buff.potion.up|trinket.1.has_use_buff&(variable.secondLowestCDremaining>trinket.2.cooldown.duration&variable.lowestCDremaining>trinket.1.cooldown.remains|variable.zerkCountRemaining=1&(!talent.convoke_the_spirits|variable.convokeCountRemaining=1)&variable.potCountRemaining=1&variable.highestCDremaining>trinket.1.cooldown.remains|variable.zerkCountRemaining=variable.convokeCountRemaining&talent.convoke_the_spirits&variable.zerkCountRemaining!=variable.potCountRemaining&(cooldown.convoke_the_spirits.remains<?cooldown.bs_inc.remains)>trinket.1.cooldown.remains|variable.convokeCountRemaining=0&variable.zerkCountRemaining=0&variable.potCountRemaining=0)) - Use your trinket 1 if the fight ends within the larger of 21 s and trinket 1's stat buff's durationfallback use if fight is ending soon
simc
use_item,slot=trinket1,if=fight_remains<=(21<?trinket.1.proc.any_dps.duration) - Use your trinket 2 if the fight ends within the larger of 21 s and trinket 2's stat buff's duration
simc
use_item,slot=trinket2,if=fight_remains<=(21<?trinket.2.proc.any_dps.duration) - Cast Berserk if Tiger's Fury is active and holdBerserk is false
simc
berserk,if=buff.tigers_fury.up&!variable.holdBerserk - Cast Feral Frenzy if you don't have Frantic Frenzy talented and your Combo Points is at most 2 plus (2 if Bs Inc is active, else 0)0-2 combo points outside zerk, 0-4 combo points inside zerk
simc
feral_frenzy,if=!talent.frantic_frenzy&combo_points<=2+(2*buff.bs_inc.up) - Cast Frantic Frenzy if ((the sim's fight style isn't DungeonRoute and the sim's fight style isn't DungeonSlice) or the time left in the current add wave is more than 5 s) and ((Tiger's Fury is active and Frantic Frenzy would hit 2 or more enemies) or your Combo Points is at most 2 plus (2 if Bs Inc is active, else 0))we can find some gains in dslice by holding frantic frenzy for larger target counts occasionally, but its not by a lot, whereas holding tends to devolve pretty quickly in droute. I suspect this is due to how reliant on single target droute ends up being. Further investigations should be looked into.
simc
frantic_frenzy,if=(!fight_style.dungeonroute&!fight_style.dungeonslice|raid_event.adds.remains>5)&(buff.tigers_fury.up&spell_targets>=2|combo_points<=2+(2*buff.bs_inc.up)) - Cast Convoke the Spirits if ((Bs Inc is active or (you have Ashamane's Guidance talented and (Bs Inc has more than 45 s of cooldown left or holdBerserk is true))) and Tiger's Fury is active and (your last spell on the global cooldown was Rip or your last spell on the global cooldown was Ferocious Bite or your last spell on the global cooldown was Primal Wrath or Tiger's Fury has at most 1 s plus Convoke the Spirits's cast time left, or isn't active)) or the fight ends within 5 sline up convoke with berserk
simc
convoke_the_spirits,if=(buff.bs_inc.up|talent.ashamanes_guidance&(cooldown.bs_inc.remains>45|variable.holdBerserk))&buff.tigers_fury.up&(prev_gcd.1.rip|prev_gcd.1.ferocious_bite|prev_gcd.1.primal_wrath|buff.tigers_fury.remains<=1+action.convoke_the_spirits.execute_time)|fight_remains<5
- Cast Ferocious Bite if Apex Predator's Craving is activecast bite with apex procs asap
simc
ferocious_bite,if=buff.apex_predators_craving.up Is it true that there is a single enemy?Not set
If so, go through Finisher, then carry on below if nothing there fits
simc
call_action_list,name=finisher,if=spell_targets=1Is it true that there are 2 or more enemies?Not set
If so, go through AoE finisher, then carry on below if nothing there fits
simc
call_action_list,name=aoe_finisher,if=spell_targets>=2Is it true that there is a single enemy and you have 4 or fewer Combo Points?Not set
If so, go through Builder, then carry on below if nothing there fits
simc
call_action_list,name=builder,if=spell_targets=1&combo_points<=4Is it true that there is more than one enemy and you have 4 or fewer Combo Points?Not set
If so, go through AoE builder, then carry on below if nothing there fits
simc
call_action_list,name=aoe_builder,if=spell_targets>1&combo_points<=4- Cast Regrowth if Predatory Swiftness is active and regrowth is true
simc
regrowth,if=buff.predatory_swiftness.up&variable.regrowth
Read from ActionPriorityLists/default/druid_feral.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 (3 steps)
Before the pull3 lines
- Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats - Cast Cat Form if Cat Form isn't active
simc
cat_form,if=buff.cat_form.down - Cast Prowl
simc
prowl
The main loop3 lines
- Start auto-attacking if Prowl isn't active
simc
auto_attack,if=!buff.prowl.up go through Cooldowns, then carry on below if nothing there fits
simc
call_action_list,name=cooldownsCooldowns6 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
go through Assisted Combat, then carry on below if nothing there fits
simc
call_action_list,name=assisted_combatAssisted Combat21 lines
- Cast Tiger's Fury if you have 5 or more Combo Points and your distance to the target is at most 8This is the default action priority list from the game's Assisted Combat system.
simc
tigers_fury,if=combo_points>=5&target.distance<=8 - Cast Rake if Prowl is active
simc
rake,if=buff.prowl.up - Cast BerserkThis is for Blizzard automation and is not included in the game's Assisted Combat system.
simc
berserk - Cast Chomp if Chomp Enabler is active
simc
chomp,if=buff.chomp_enabler.up - Cast Primal Wrath if there are more than 3 enemies and Rip isn't on the target and you have 5 or more Combo Points and your distance to the target is at most 10
simc
primal_wrath,if=active_enemies>3&!dot.rip.ticking&combo_points>=5&target.distance<=10 - Cast Rip if Rip isn't on the target and you have 5 or more Combo Points
simc
rip,if=!dot.rip.ticking&combo_points>=5 - Pool resources if you have 5 or more Combo Points and you have 49 or less Energy and Apex Predator's Craving isn't active and Incarnation: Avatar of Ashamane isn't active
simc
pool_resource,if=combo_points>=5&energy<=49&buff.apex_predators_craving.down&buff.incarnation_avatar_of_ashamane.down - Pool resources if you have 5 or more Combo Points and you have 37 or less Energy and Apex Predator's Craving isn't active and Incarnation: Avatar of Ashamane is active
simc
pool_resource,if=combo_points>=5&energy<=37&buff.apex_predators_craving.down&buff.incarnation_avatar_of_ashamane.up - Cast Ferocious Bite if you have 5 or more Combo Points
simc
ferocious_bite,if=combo_points>=5 - Cast Ferocious Bite if Apex Predator's Craving is active(Overridden from '(buff.apex_predators_craving.up|buff.unknown_spell_252752.up)')
simc
ferocious_bite,if=buff.apex_predators_craving.up - Cast Feral Frenzy if you have 1 or fewer Combo Points and Tiger's Fury is active
simc
feral_frenzy,if=combo_points<=1&buff.tigers_fury.up - Cast Feral Frenzy if you have 1 or fewer Combo Points and Tiger's Fury is on cooldown
simc
feral_frenzy,if=combo_points<=1&!cooldown.tigers_fury.ready - Cast Frantic Frenzy if you have 1 or fewer Combo Points and your distance to the target is at most 8 and Tiger's Fury is active
simc
frantic_frenzy,if=combo_points<=1&target.distance<=8&buff.tigers_fury.up - Cast Frantic Frenzy if you have 1 or fewer Combo Points and your distance to the target is at most 8 and Tiger's Fury is on cooldown
simc
frantic_frenzy,if=combo_points<=1&target.distance<=8&!cooldown.tigers_fury.ready - Cast Convoke the Spirits if your distance to the target is at most 5 and you have 3 or fewer Combo Points and Tiger's Fury is active
simc
convoke_the_spirits,if=target.distance<=5&combo_points<=3&buff.tigers_fury.up - Cast Rake if Rake isn't on the target
simc
rake,if=!dot.rake.ticking - Cast Lunar Inspiration if you have Lunar Inspiration talented and Moonfire isn't on the target
simc
lunar_inspiration,if=talent.lunar_inspiration&!dot.moonfire.ticking - Cast Swipe if your distance to the target is at most 8 and there are more than 3 enemies
simc
swipe,if=target.distance<=8&active_enemies>3 - Cast Shred
simc
shred - Cast Lunar Inspiration if you have Lunar Inspiration talented and your distance to the target is more than 15
simc
lunar_inspiration,if=talent.lunar_inspiration&target.distance>15 - Cast Rake
simc
rake
Read from ActionPriorityLists/assisted_combat/druid_feral.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.