actions.precombat+=/windfury_weapon
actions.precombat+=/flametongue_weapon
actions.precombat+=/lightning_shield,if=buff.lightning_shield.down&(buff.earth_shield.down|talent.elemental_orbit.enabled)
actions.precombat+=/earth_shield,if=buff.lightning_shield.up&buff.earth_shield.down&talent.elemental_orbit.enabled
actions.precombat+=/totemic_projection,if=project_windfury_totem
actions.precombat+=/windfury_totem,if=time=0|buff.windfury_totem.down
actions.precombat+=/variable,name=trinket1_is_weird,value=trinket.1.is.algethar_puzzle_box|trinket.1.is.manic_grieftorch|trinket.1.is.elementium_pocket_anvil|trinket.1.is.beacon_to_the_beyond
actions.precombat+=/variable,name=trinket2_is_weird,value=trinket.2.is.algethar_puzzle_box|trinket.2.is.manic_grieftorch|trinket.2.is.elementium_pocket_anvil|trinket.2.is.beacon_to_the_beyond
actions.precombat+=/variable,name=min_talented_cd_remains,value=((cooldown.feral_spirit.remains%(1+1.5*talent.witch_doctors_ancestry.rank))+1000*!talent.feral_spirit.enabled)<?(cooldown.doom_winds.remains+1000*!talent.doom_winds.enabled)<?(cooldown.ascendance.remains+1000*!talent.ascendance.enabled)
# interrupt of casts.
actions+=/wind_shear
actions+=/purge,if=settings.hostile_dispel
actions+=/greater_purge,if=settings.hostile_dispel
actions+=/potion,if=(buff.ascendance.up|buff.feral_spirit.up|buff.doom_winds.up|boss&fight_remains<=30|!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled)
actions+=/use_item,name=elementium_pocket_anvil,use_off_gcd=1
actions+=/use_item,name=algethar_puzzle_box,use_off_gcd=1,if=(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)|(talent.ascendance.enabled&(cooldown.ascendance.remains<2*action.stormstrike.gcd))|boss&(fight_remains%%180<=30)
actions+=/use_item,slot=trinket1,if=!variable.trinket1_is_weird&trinket.1.has_use_buff&(buff.ascendance.up|buff.feral_spirit.up|buff.doom_winds.up|boss&(fight_remains%%trinket.1.cooldown.duration<=trinket.1.buff.duration)|(variable.min_talented_cd_remains>=trinket.1.cooldown.duration)|(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))
actions+=/use_item,slot=trinket2,if=!variable.trinket2_is_weird&trinket.2.has_use_buff&(buff.ascendance.up|buff.feral_spirit.up|buff.doom_winds.up|boss&(fight_remains%%trinket.2.cooldown.duration<=trinket.2.buff.duration)|(variable.min_talented_cd_remains>=trinket.2.cooldown.duration)|(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))
actions+=/use_item,name=beacon_to_the_beyond,use_off_gcd=1,if=(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)|boss&(fight_remains%%150<=5)
actions+=/use_item,name=manic_grieftorch,use_off_gcd=1,if=(!buff.ascendance.up&!buff.feral_spirit.up&!buff.doom_winds.up)|boss&(fight_remains%%120<=5)
actions+=/use_item,slot=trinket1,if=!variable.trinket1_is_weird&!trinket.1.has_use_buff
actions+=/use_item,slot=trinket2,if=!variable.trinket2_is_weird&!trinket.2.has_use_buff
actions+=/blood_fury,if=(buff.ascendance.up|buff.feral_spirit.up|buff.doom_winds.up|boss&(fight_remains%%action.blood_fury.cooldown<=action.blood_fury.duration)|(variable.min_talented_cd_remains>=action.blood_fury.cooldown)|(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))
actions+=/berserking,if=(buff.ascendance.up|buff.feral_spirit.up|buff.doom_winds.up|boss&(fight_remains%%action.berserking.cooldown<=action.berserking.duration)|(variable.min_talented_cd_remains>=action.berserking.cooldown)|(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))
actions+=/fireblood,if=(buff.ascendance.up|buff.feral_spirit.up|buff.doom_winds.up|boss&(fight_remains%%action.fireblood.cooldown<=action.fireblood.duration)|(variable.min_talented_cd_remains>=action.fireblood.cooldown)|(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))
actions+=/ancestral_call,if=(buff.ascendance.up|buff.feral_spirit.up|buff.doom_winds.up|boss&(fight_remains%%action.ancestral_call.cooldown<=action.ancestral_call.duration)|(variable.min_talented_cd_remains>=action.ancestral_call.cooldown)|(!talent.ascendance.enabled&!talent.feral_spirit.enabled&!talent.doom_winds.enabled))
## actions+=/invoke_external_buff,name=power_infusion,if=(talent.ascendance.enabled&talent.thorims_invocation.enabled&buff.ascendance.up)|(!talent.thorims_invocation.enabled&talent.feral_spirit.enabled&buff.feral_spirit.up)|(!talent.thorims_invocation.enabled&!talent.feral_spirit.enabled)|fight_remains<=20
actions+=/primordial_wave,if=set_bonus.tier31_2pc&(raid_event.adds.in>(action.primordial_wave.cooldown%(1+set_bonus.tier31_4pc))|raid_event.adds.in<6)
actions+=/feral_spirit
actions+=/ascendance,if=dot.flame_shock.ticking&((ti_lightning_bolt&active_enemies=1&raid_event.adds.in>=90)|(ti_chain_lightning&active_enemies>1))
actions+=/doom_winds,if=raid_event.adds.in>=90|active_enemies>1
actions+=/call_action_list,name=single,strict=1,if=active_enemies=1
actions+=/call_action_list,name=aoe,strict=1,if=active_enemies>1&!funnel
actions+=/call_action_list,name=funnel,strict=1,if=active_enemies>1&funnel
actions.single+=/primordial_wave,if=!dot.flame_shock.ticking&talent.lashing_flames.enabled&(raid_event.adds.in>(action.primordial_wave.cooldown%(1+set_bonus.tier31_4pc))|raid_event.adds.in<6)
actions.single+=/flame_shock,if=!ticking&talent.lashing_flames.enabled
actions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&talent.elemental_spirits.enabled&feral_spirit.active>=4
actions.single+=/sundering,if=set_bonus.tier30_2pc&raid_event.adds.in>=action.sundering.cooldown
actions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&buff.crackling_thunder.down&buff.ascendance.up&ti_chain_lightning&(buff.ascendance.remains>(cooldown.strike.remains+gcd))
actions.single+=/windstrike,if=talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>=1&(talent.deeply_rooted_elements.enabled|(talent.stormblast.enabled&buff.stormbringer.up)|(talent.elemental_assault.enabled&talent.stormflurry.enabled)|ti_lightning_bolt)
actions.single+=/stormstrike,if=buff.doom_winds.up|talent.deeply_rooted_elements.enabled|(talent.stormblast.enabled&buff.stormbringer.up)|((talent.elemental_assault.enabled&talent.stormflurry.enabled)&buff.maelstrom_weapon.stack<buff.maelstrom_weapon.max_stack)
actions.single+=/lava_lash,if=buff.hot_hand.up
actions.single+=/windfury_totem,if=!buff.windfury_totem.up
actions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&charges=max_charges
actions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&buff.primordial_wave.up&(buff.primordial_wave.remains<1.5*gcd.max|raid_event.adds.in>buff.primordial_wave.remains&(!buff.splintered_elements.up|boss&fight_remains<=12))
actions.single+=/chain_lightning,if=buff.maelstrom_weapon.stack>=5&buff.crackling_thunder.up&talent.elemental_spirits.enabled
actions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&buff.crackling_thunder.down&buff.ascendance.up&ti_chain_lightning
actions.single+=/elemental_blast,if=buff.maelstrom_weapon.stack>=5&(buff.feral_spirit.up|!talent.elemental_spirits.enabled)
actions.single+=/lava_burst,if=!talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>=5
actions.single+=/lightning_bolt,if=((buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack)|(talent.static_accumulation.enabled&buff.maelstrom_weapon.stack>=5))&buff.primordial_wave.down
actions.single+=/ice_strike,if=buff.doom_winds.up
actions.single+=/sundering,if=buff.doom_winds.up&raid_event.adds.in>=action.sundering.cooldown
actions.single+=/crash_lightning,if=buff.doom_winds.up|(talent.alpha_wolf.enabled&feral_spirit.active&alpha_wolf_min_remains=0)
actions.single+=/primordial_wave,if=raid_event.adds.in>(action.primordial_wave.cooldown%(1+set_bonus.tier31_4pc))|raid_event.adds.in<6
actions.single+=/flame_shock,if=!ticking
actions.single+=/lava_lash,if=talent.molten_assault.enabled&dot.flame_shock.refreshable
actions.single+=/ice_strike,if=!buff.ice_strike.up
actions.single+=/frost_shock,if=buff.hailstorm.up
actions.single+=/lava_lash
actions.single+=/ice_strike
actions.single+=/windstrike
actions.single+=/stormstrike
actions.single+=/sundering,if=raid_event.adds.in>=action.sundering.cooldown
actions.single+=/bag_of_tricks
actions.single+=/fire_nova,if=talent.swirling_maelstrom.enabled&active_dot.flame_shock&buff.maelstrom_weapon.stack<buff.maelstrom_weapon.max_stack
actions.single+=/lightning_bolt,if=talent.hailstorm.enabled&buff.maelstrom_weapon.stack>=5&buff.primordial_wave.down
actions.single+=/frost_shock
actions.single+=/crash_lightning
actions.single+=/fire_nova,if=active_dot.flame_shock
actions.single+=/earth_elemental
actions.single+=/flame_shock,if=settings.filler_shock
actions.single+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5&buff.primordial_wave.down
actions.single+=/windfury_totem,if=buff.windfury_totem.remains<30
actions.aoe+=/crash_lightning,if=talent.crashing_storms.enabled&((talent.unruly_winds.enabled&active_enemies>=10)|active_enemies>=15)
actions.aoe+=/lightning_bolt,if=(active_dot.flame_shock>=active_enemies|active_dot.flame_shock>=6)&buff.primordial_wave.up&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&(!buff.splintered_elements.up|fight_remains<=12|raid_event.adds.remains<=gcd)
actions.aoe+=/lava_lash,if=talent.molten_assault.enabled&(talent.primordial_wave.enabled|talent.fire_nova.enabled)&dot.flame_shock.ticking&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6
actions.aoe+=/primordial_wave,cycle_targets=1,if=!buff.primordial_wave.up
# In game, you might not have Primordial Wave ready on pull but you want Flame Shock out for LL, FN, and PWave when it comes available. Also, existing Flame Shocks may not be close enough to spread.
actions.aoe+=/flame_shock,if=(talent.primordial_wave.enabled|talent.fire_nova.enabled)&!ticking
actions.aoe+=/elemental_blast,if=(!talent.elemental_spirits.enabled|(talent.elemental_spirits.enabled&(charges=max_charges|buff.feral_spirit.up)))&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&(!talent.crashing_storms.enabled|active_enemies<=3)
actions.aoe+=/windstrike,if=talent.thorims_invocation.enabled&ti_chain_lightning&buff.maelstrom_weapon.stack>1
actions.aoe+=/chain_lightning,if=buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack
actions.aoe+=/crash_lightning,if=buff.doom_winds.up|!buff.crash_lightning.up|(talent.alpha_wolf.enabled&feral_spirit.active&alpha_wolf_min_remains=0)
actions.aoe+=/sundering,if=buff.doom_winds.up|set_bonus.tier30_2pc
actions.aoe+=/fire_nova,if=active_dot.flame_shock>=6|(active_dot.flame_shock>=4&active_dot.flame_shock>=cycle_enemies)
actions.aoe+=/lava_lash,cycle_targets=1,if=talent.lashing_flames.enabled
actions.aoe+=/lava_lash,if=(talent.molten_assault.enabled&dot.flame_shock.ticking&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6)|(talent.ashen_catalyst.enabled&buff.ashen_catalyst.stack=buff.ashen_catalyst.max_stack)
actions.aoe+=/ice_strike,if=talent.hailstorm.enabled
actions.aoe+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up
actions.aoe+=/sundering
actions.aoe+=/flame_shock,if=talent.molten_assault.enabled&!ticking
actions.aoe+=/flame_shock,cycle_targets=1,if=refreshable&(talent.fire_nova.enabled|talent.primordial_wave.enabled)&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6
actions.aoe+=/fire_nova,if=active_dot.flame_shock>=3
actions.aoe+=/stormstrike,if=buff.crash_lightning.up&(talent.deeply_rooted_elements.enabled|buff.converging_storms.stack=6)
actions.aoe+=/crash_lightning,if=talent.crashing_storms.enabled&buff.cl_crash_lightning.up&active_enemies>=4
actions.aoe+=/windstrike
actions.aoe+=/stormstrike
actions.aoe+=/ice_strike
actions.aoe+=/lava_lash
actions.aoe+=/crash_lightning
actions.aoe+=/fire_nova,if=active_dot.flame_shock>=2
actions.aoe+=/elemental_blast,if=(!talent.elemental_spirits.enabled|(talent.elemental_spirits.enabled&(time_to_max_charges<gcd.max|buff.feral_spirit.up)))&buff.maelstrom_weapon.stack>=5&(!talent.crashing_storms.enabled|active_enemies<=3)
actions.aoe+=/chain_lightning,if=buff.maelstrom_weapon.stack>=5
actions.aoe+=/windfury_totem,if=buff.windfury_totem.remains<30
actions.aoe+=/flame_shock,if=!ticking
actions.aoe+=/frost_shock,if=!talent.hailstorm.enabled
actions.funnel+=/lightning_bolt,if=(active_dot.flame_shock>=active_enemies|active_dot.flame_shock=6)&buff.primordial_wave.up&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&(!buff.splintered_elements.up|fight_remains<=12|raid_event.adds.remains<=gcd)
actions.funnel+=/lava_lash,if=(talent.molten_assault.enabled&dot.flame_shock.ticking&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6)|(talent.ashen_catalyst.enabled&buff.ashen_catalyst.stack=buff.ashen_catalyst.max_stack)
actions.funnel+=/primordial_wave,cycle_targets=1,if=!buff.primordial_wave.up
# In game, you might not have Primordial Wave ready on pull but you want Flame Shock out for LL, FN, and PWave when it comes available. Also, existing Flame Shocks may not be close enough to spread.
actions.funnel+=/flame_shock,if=(talent.primordial_wave.enabled|talent.fire_nova.enabled)&!ticking
actions.funnel+=/elemental_blast,if=(!talent.elemental_spirits.enabled|(talent.elemental_spirits.enabled&(charges=max_charges|buff.feral_spirit.up)))&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack
actions.funnel+=/windstrike,if=(talent.thorims_invocation.enabled&buff.maelstrom_weapon.stack>1)|buff.converging_storms.stack=buff.converging_storms.max_stack
actions.funnel+=/stormstrike,if=buff.converging_storms.stack=buff.converging_storms.max_stack
actions.funnel+=/chain_lightning,if=buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack&buff.crackling_thunder.up
actions.funnel+=/lava_burst,if=(buff.molten_weapon.stack+buff.volcanic_strength.up>buff.crackling_surge.stack)&buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack
actions.funnel+=/lightning_bolt,if=buff.maelstrom_weapon.stack=buff.maelstrom_weapon.max_stack
actions.funnel+=/crash_lightning,if=buff.doom_winds.up|!buff.crash_lightning.up|(talent.alpha_wolf.enabled&feral_spirit.active&alpha_wolf_min_remains=0)|(talent.converging_storms.enabled&buff.converging_storms.stack<buff.converging_storms.max_stack)
actions.funnel+=/sundering,if=buff.doom_winds.up|set_bonus.tier30_2pc
actions.funnel+=/fire_nova,if=active_dot.flame_shock=6|(active_dot.flame_shock>=4&active_dot.flame_shock>=cycle_enemies)
actions.funnel+=/ice_strike,if=talent.hailstorm.enabled&!buff.ice_strike.up
actions.funnel+=/frost_shock,if=talent.hailstorm.enabled&buff.hailstorm.up
actions.funnel+=/sundering
actions.funnel+=/flame_shock,if=talent.molten_assault.enabled&!ticking
actions.funnel+=/flame_shock,cycle_targets=1,if=(talent.fire_nova.enabled|talent.primordial_wave.enabled)&(active_dot.flame_shock<active_enemies)&active_dot.flame_shock<6
actions.funnel+=/fire_nova,if=active_dot.flame_shock>=3
actions.funnel+=/stormstrike,if=buff.crash_lightning.up&talent.deeply_rooted_elements.enabled
actions.funnel+=/crash_lightning,if=talent.crashing_storms.enabled&buff.cl_crash_lightning.up&active_enemies>=4
actions.funnel+=/windstrike
actions.funnel+=/stormstrike
actions.funnel+=/ice_strike
actions.funnel+=/lava_lash
actions.funnel+=/crash_lightning
actions.funnel+=/fire_nova,if=active_dot.flame_shock>=2
actions.funnel+=/elemental_blast,if=(!talent.elemental_spirits.enabled|(talent.elemental_spirits.enabled&(charges=max_charges|buff.feral_spirit.up)))&buff.maelstrom_weapon.stack>=5
actions.funnel+=/lava_burst,if=(buff.molten_weapon.stack+buff.volcanic_strength.up>buff.crackling_surge.stack)&buff.maelstrom_weapon.stack>=5
actions.funnel+=/lightning_bolt,if=buff.maelstrom_weapon.stack>=5
actions.funnel+=/windfury_totem,if=buff.windfury_totem.remains<30
actions.funnel+=/flame_shock,if=!ticking
actions.funnel+=/frost_shock,if=!talent.hailstorm.enabled