actions.precombat+=/summon_pet
actions.precombat+=/bottled_flayedwing_toxin
actions.precombat+=/steel_trap,precast_time=1.5,if=!talent.wailing_arrow&talent.steel_trap
# Executed every time the actor is available.
actions=counter_shot
actions+=/tranquilizing_shot
actions+=/call_action_list,name=cds
actions+=/call_action_list,name=trinkets
actions+=/call_action_list,name=st,strict=1,if=active_enemies<2|!talent.beast_cleave&active_enemies<3
actions+=/call_action_list,name=cleave,strict=1,if=active_enemies>2|talent.beast_cleave&active_enemies>1
## Call for Power Infusion when Bestial Wrath is running, or is close to coming off cooldown (PI lasts 20 seconds and Bestial Wrath lasts 15, so 30 seconds when accounting for Barbed Shot reduction of Bestial Wrath is a good approximate fit).
## actions.cds+=/invoke_external_buff,name=power_infusion,if=buff.bestial_wrath.up|cooldown.bestial_wrath.remains<30
actions.cds+=/berserking,if=buff.call_of_the_wild.up|!talent.call_of_the_wild&buff.bestial_wrath.up|boss&fight_remains<13
actions.cds+=/blood_fury,if=buff.call_of_the_wild.up|!talent.call_of_the_wild&buff.bestial_wrath.up|boss&fight_remains<16
actions.cds+=/ancestral_call,if=buff.call_of_the_wild.up|!talent.call_of_the_wild&buff.bestial_wrath.up|boss&fight_remains<16
actions.cds+=/fireblood,if=buff.call_of_the_wild.up|!talent.call_of_the_wild&buff.bestial_wrath.up|boss&fight_remains<9
actions.cds+=/potion,if=buff.call_of_the_wild.up|!talent.call_of_the_wild&(buff.bestial_wrath.up&(buff.bloodlust.up|target.health.pct<20))|boss&fight_remains<31
actions.cleave+=/barbed_shot,cycle_targets=1,if=debuff.latent_poison.stack>9&(pet.main.buff.frenzy.up&pet.main.buff.frenzy.remains<=gcd+0.25|talent.scent_of_blood&cooldown.bestial_wrath.remains<12+gcd|full_recharge_time<gcd&cooldown.bestial_wrath.remains)
actions.cleave+=/barbed_shot,cycle_targets=1,if=pet.main.buff.frenzy.up&pet.main.buff.frenzy.remains<=gcd+0.25+barbed_shot_grace_period|talent.scent_of_blood&cooldown.bestial_wrath.remains<12+gcd|full_recharge_time<gcd&cooldown.bestial_wrath.remains
actions.cleave+=/multishot,if=pet.main.buff.beast_cleave.remains<0.25+gcd
actions.cleave+=/bestial_wrath
actions.cleave+=/kill_command,if=full_recharge_time<gcd&talent.alpha_predator&talent.kill_cleave
actions.cleave+=/call_of_the_wild
actions.cleave+=/explosive_shot
actions.cleave+=/stampede,if=buff.bestial_wrath.up|boss&fight_remains<15
actions.cleave+=/bloodshed
actions.cleave+=/death_chakram
actions.cleave+=/steel_trap
actions.cleave+=/a_murder_of_crows
actions.cleave+=/barbed_shot,cycle_targets=1,if=debuff.latent_poison.stack>9&(talent.wild_instincts&buff.call_of_the_wild.up|boss&fight_remains<9|talent.wild_call&charges_fractional>1.2)
actions.cleave+=/barbed_shot,cycle_targets=1,if=talent.wild_instincts&buff.call_of_the_wild.up|boss&fight_remains<9|talent.wild_call&charges_fractional>1.2
actions.cleave+=/kill_command
actions.cleave+=/dire_beast
actions.cleave+=/serpent_sting,cycle_targets=1,if=refreshable&target.time_to_die>duration
actions.cleave+=/barrage,if=pet.main.buff.frenzy.remains>execute_time
actions.cleave+=/multishot,if=pet.main.buff.beast_cleave.remains<gcd*2
actions.cleave+=/aspect_of_the_wild
actions.cleave+=/cobra_shot,if=focus.time_to_max<gcd*2|buff.aspect_of_the_wild.up&focus.time_to_max<gcd*4
actions.cleave+=/wailing_arrow,if=pet.main.buff.frenzy.remains>execute_time|boss&fight_remains<5
actions.cleave+=/bag_of_tricks,if=buff.bestial_wrath.down|boss&fight_remains<5
actions.cleave+=/arcane_torrent,if=(focus+focus.regen+30)<focus.max
actions.cleave+=/kill_shot
actions.st+=/barbed_shot,cycle_targets=1,if=pet.main.buff.frenzy.up&pet.main.buff.frenzy.remains<=gcd+0.25+barbed_shot_grace_period|talent.scent_of_blood&pet.main.buff.frenzy.stack<3&cooldown.bestial_wrath.ready
actions.st+=/kill_command,if=full_recharge_time<gcd&talent.alpha_predator
actions.st+=/call_of_the_wild
actions.st+=/death_chakram
actions.st+=/bloodshed
actions.st+=/stampede
actions.st+=/a_murder_of_crows
actions.st+=/steel_trap
actions.st+=/explosive_shot
actions.st+=/bestial_wrath
actions.st+=/kill_command
actions.st+=/barbed_shot,cycle_targets=1,if=talent.wild_instincts&buff.call_of_the_wild.up|talent.wild_call&charges_fractional>1.4|full_recharge_time<gcd&cooldown.bestial_wrath.remains|talent.scent_of_blood&(cooldown.bestial_wrath.remains<12+gcd|full_recharge_time+gcd<8&cooldown.bestial_wrath.remains<24+(8-gcd)+full_recharge_time)|boss&fight_remains<9
actions.st+=/dire_beast
actions.st+=/serpent_sting,cycle_targets=1,if=refreshable&target.time_to_die>duration
actions.st+=/kill_shot
actions.st+=/aspect_of_the_wild
actions.st+=/cobra_shot
actions.st+=/wailing_arrow,if=pet.main.buff.frenzy.remains>execute_time|boss&fight_remains<5
actions.st+=/bag_of_tricks,if=buff.bestial_wrath.down|boss&fight_remains<5
actions.st+=/arcane_pulse,if=buff.bestial_wrath.down|boss&fight_remains<5
actions.st+=/arcane_torrent,if=(focus+focus.regen+15)<focus.max
actions.trinkets+=/variable,name=sync_up,value=buff.call_of_the_wild.up|cooldown.call_of_the_wild.remains<2|!talent.call_of_the_wild&(prev_gcd.1.bestial_wrath|cooldown.bestial_wrath.remains_guess<2)
actions.trinkets+=/variable,name=sync_remains,op=setif,value=cooldown.bestial_wrath.remains_guess,value_else=cooldown.call_of_the_wild.remains,condition=!talent.call_of_the_wild
actions.trinkets+=/variable,name=trinket_1_stronger,value=!trinket.2.has_cooldown|trinket.1.has_use_buff&(!trinket.2.has_use_buff|trinket.2.cooldown.duration<trinket.1.cooldown.duration|trinket.2.cast_time<trinket.1.cast_time|trinket.2.cast_time=trinket.1.cast_time&trinket.2.cooldown.duration=trinket.1.cooldown.duration)|!trinket.1.has_use_buff&(!trinket.2.has_use_buff&(trinket.2.cooldown.duration<trinket.1.cooldown.duration|trinket.2.cast_time<trinket.1.cast_time|trinket.2.cast_time=trinket.1.cast_time&trinket.2.cooldown.duration=trinket.1.cooldown.duration))
actions.trinkets+=/variable,name=trinket_2_stronger,value=!trinket.1.has_cooldown|trinket.2.has_use_buff&(!trinket.1.has_use_buff|trinket.1.cooldown.duration<trinket.2.cooldown.duration|trinket.1.cast_time<trinket.2.cast_time|trinket.1.cast_time=trinket.2.cast_time&trinket.1.cooldown.duration=trinket.2.cooldown.duration)|!trinket.2.has_use_buff&(!trinket.1.has_use_buff&(trinket.1.cooldown.duration<trinket.2.cooldown.duration|trinket.1.cast_time<trinket.2.cast_time|trinket.1.cast_time=trinket.2.cast_time&trinket.1.cooldown.duration=trinket.2.cooldown.duration))
actions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=(trinket.1.has_use_buff&(variable.sync_up&(variable.trinket_1_stronger|trinket.2.cooldown.remains)|!variable.sync_up&(variable.trinket_1_stronger&(variable.sync_remains>trinket.1.cooldown.duration%2|trinket.2.has_use_buff&trinket.2.cooldown.remains>variable.sync_remains-15&trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>fight_remains)|variable.trinket_2_stronger&(trinket.2.cooldown.remains&(trinket.2.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20|trinket.2.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.1.cooldown.duration%2|trinket.1.cooldown.duration<fight_remains&(variable.sync_remains+trinket.1.cooldown.duration>fight_remains)))|trinket.2.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.2.cooldown.duration%2)))|!trinket.1.has_use_buff&((!trinket.2.has_use_buff&(variable.trinket_1_stronger|trinket.2.cooldown.remains)|trinket.2.has_use_buff&(variable.sync_remains>20|trinket.2.cooldown.remains>20)))|target.time_to_die<25&(variable.trinket_1_stronger|trinket.2.cooldown.remains))&pet.main.buff.frenzy.remains>trinket.1.cast_time
actions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=(trinket.2.has_use_buff&(variable.sync_up&(variable.trinket_2_stronger|trinket.1.cooldown.remains)|!variable.sync_up&(variable.trinket_2_stronger&(variable.sync_remains>trinket.2.cooldown.duration%2|trinket.1.has_use_buff&trinket.1.cooldown.remains>variable.sync_remains-15&trinket.1.cooldown.remains-5<variable.sync_remains&variable.sync_remains+40>fight_remains)|variable.trinket_1_stronger&(trinket.1.cooldown.remains&(trinket.1.cooldown.remains-5<variable.sync_remains&variable.sync_remains>=20|trinket.1.cooldown.remains-5>=variable.sync_remains&(variable.sync_remains>trinket.2.cooldown.duration%2|trinket.2.cooldown.duration<fight_remains&(variable.sync_remains+trinket.2.cooldown.duration>fight_remains)))|trinket.1.cooldown.ready&variable.sync_remains>20&variable.sync_remains<trinket.1.cooldown.duration%2)))|!trinket.2.has_use_buff&((!trinket.1.has_use_buff&(variable.trinket_2_stronger|trinket.1.cooldown.remains)|trinket.1.has_use_buff&(variable.sync_remains>20|trinket.1.cooldown.remains>20)))|target.time_to_die<25&(variable.trinket_2_stronger|trinket.1.cooldown.remains))&pet.main.buff.frenzy.remains>trinket.2.cast_time