actions.precombat+=/variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell|trinket.1.is.whispering_incarnate_icon actions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell|trinket.2.is.whispering_incarnate_icon # Evaluates a trinkets cooldown, divided by avatar. If it's value has no remainder return 1, else return 0.5. actions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=trinket.1.has_use_buff&(trinket.1.cooldown.duration%%cooldown.avatar.duration=0) actions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=trinket.2.has_use_buff&(trinket.2.cooldown.duration%%cooldown.avatar.duration=0) actions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff|(trinket.1.has_buff.strength|trinket.1.has_buff.mastery|trinket.1.has_buff.versatility|trinket.1.has_buff.haste|trinket.1.has_buff.crit&!variable.trinket_1_exclude) actions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff|(trinket.2.has_buff.strength|trinket.2.has_buff.mastery|trinket.2.has_buff.versatility|trinket.2.has_buff.haste|trinket.2.has_buff.crit&!variable.trinket_2_exclude) actions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs|variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync)) actions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.algethar_puzzle_box actions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.algethar_puzzle_box actions.precombat+=/battle_shout actions.precombat+=/battle_stance,toggle=on actions.precombat+=/use_item,name=algethar_puzzle_box actions+=/charge,if=time<=0.5|movement.distance>8 actions+=/potion,if=gcd.remains=0&debuff.colossus_smash.remains>8|boss&fight_remains<25 actions+=/pummel,if=target.debuff.casting.react actions+=/call_action_list,name=variables actions+=/call_action_list,name=trinkets actions+=/arcane_torrent,if=cooldown.mortal_strike.remains>1.5&rage<50 actions+=/lights_judgment,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains actions+=/bag_of_tricks,if=debuff.colossus_smash.down&cooldown.mortal_strike.remains actions+=/berserking,if=fight_remains>180&buff.avatar.up|boss&target.time_to_die<180&variable.execute_phase&buff.avatar.up|boss&fight_remains<20 actions+=/blood_fury,if=debuff.colossus_smash.up actions+=/fireblood,if=debuff.colossus_smash.up actions+=/ancestral_call,if=debuff.colossus_smash.up ## actions+=/invoke_external_buff,name=power_infusion,if=debuff.colossus_smash.up&fight_remains>=135|variable.execute_phase&buff.avatar.up|fight_remains<=25 actions+=/run_action_list,name=aoe,strict=1,if=active_enemies>2|talent.fervor_of_battle.enabled&variable.execute_phase&!raid_event.adds.up&active_enemies>1 actions+=/run_action_list,name=execute,strict=1,cycle_targets=1,if=variable.execute_phase actions+=/run_action_list,name=single_target actions.execute+=/sweeping_strikes,if=active_enemies>1 actions.execute+=/thunderous_roar actions.execute+=/ravager actions.execute+=/avatar actions.execute+=/skullsplitter actions.execute+=/warbreaker actions.execute+=/colossus_smash actions.execute+=/champions_spear,if=debuff.colossus_smash.up actions.execute+=/demolish,if=debuff.colossus_smash.up actions.execute+=/mortal_strike,if=debuff.executioners_precision.stack=2&buff.ravager.down actions.execute+=/bladestorm,if=debuff.executioners_precision.stack=2 actions.execute+=/mortal_strike,if=debuff.executioners_precision.stack=2 actions.execute+=/execute,if=buff.sudden_death.up|rage>40 actions.execute+=/overpower actions.aoe+=/cleave,if=buff.strike_vulnerabilities.down|buff.collateral_damage.up&buff.merciless_bonegrinder.up actions.aoe+=/thunder_clap,if=dot.rend.duration<3&active_enemies>=3 actions.aoe+=/sweeping_strikes actions.aoe+=/thunderous_roar actions.aoe+=/avatar actions.aoe+=/ravager,if=cooldown.sweeping_strikes.remains<=1|buff.sweeping_strikes.up actions.aoe+=/skullsplitter,if=buff.sweeping_strikes.up actions.aoe+=/warbreaker actions.aoe+=/colossus_smash actions.aoe+=/champions_spear,if=debuff.colossus_smash.up actions.aoe+=/cleave actions.aoe+=/demolish,if=buff.sweeping_strikes.up actions.aoe+=/overpower actions.aoe+=/mortal_strike,if=buff.sweeping_strikes.up actions.aoe+=/execute,if=buff.sweeping_strikes.up actions.aoe+=/overpower,if=buff.sweeping_strikes.up actions.aoe+=/bladestorm actions.aoe+=/execute,if=buff.sudden_death.up|rage>40|debuff.marked_for_execution.up actions.aoe+=/overpower actions.aoe+=/thunder_clap actions.aoe+=/mortal_strike actions.aoe+=/whirlwind actions.single_target+=/thunder_clap,if=dot.rend.remains<=gcd&active_enemies>=2&buff.sweeping_strikes.down actions.single_target+=/sweeping_strikes,if=active_enemies>1 actions.single_target+=/rend,if=dot.rend.remains<=gcd actions.single_target+=/thunderous_roar actions.single_target+=/ravager actions.single_target+=/avatar actions.single_target+=/colossus_smash actions.single_target+=/warbreaker actions.single_target+=/champions_spear,if=debuff.colossus_smash.up actions.single_target+=/mortal_strike actions.single_target+=/demolish actions.single_target+=/execute,if=debuff.marked_for_execution.up actions.single_target+=/overpower,if=active_enemies>1&(buff.sweeping_strikes.up|talent.dreadnaught)&charges=2 actions.single_target+=/mortal_strike actions.single_target+=/skullsplitter actions.single_target+=/execute,if=buff.sudden_death.up actions.single_target+=/bladestorm actions.single_target+=/overpower actions.single_target+=/slam # Trinkets actions.trinkets+=/use_item,name=fyralath_the_dreamrender,,if=dot.mark_of_fyralath.ticking&!talent.blademasters_torment|dot.mark_of_fyralath.ticking&cooldown.avatar.remains>3&cooldown.bladestorm.remains>3&!debuff.colossus_smash.up actions.trinkets+=/use_item,use_off_gcd=1,name=algethar_puzzle_box,if=cooldown.avatar.remains<=3 # Trinkets The trinket with the highest estimated value, will be used first and paired with Avatar. actions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(!buff.avatar.up&trinket.1.cast_time>0|!trinket.1.cast_time>0)&buff.avatar.up&(variable.trinket_2_exclude|!trinket.2.has_cooldown|trinket.2.cooldown.remains|variable.trinket_priority=1)|trinket.1.proc.any_dps.duration>=fight_remains&boss actions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(!buff.avatar.up&trinket.2.cast_time>0|!trinket.2.cast_time>0)&buff.avatar.up&(variable.trinket_1_exclude|!trinket.1.has_cooldown|trinket.1.cooldown.remains|variable.trinket_priority=2)|trinket.2.proc.any_dps.duration>=fight_remains&boss # If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown. actions.trinkets+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains|!variable.trinket_2_buffs)|(trinket.1.cast_time>0&!buff.avatar.up|!trinket.1.cast_time>0)|cooldown.avatar.remains_expected>20) actions.trinkets+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains|!variable.trinket_1_buffs)|(trinket.2.cast_time>0&!buff.avatar.up|!trinket.2.cast_time>0)|cooldown.avatar.remains_expected>20) actions.trinkets+=/use_item,use_off_gcd=1,slot=main_hand,if=!equipped.fyralath_the_dreamrender&(!variable.trinket_1_buffs|trinket.1.cooldown.remains)&(!variable.trinket_2_buffs|trinket.2.cooldown.remains) # Variables actions.variables+=/variable,name=st_planning,value=active_enemies=1&(raid_event.adds.in>15|!raid_event.adds.exists) actions.variables+=/variable,name=adds_remain,value=active_enemies>=2&(!raid_event.adds.exists|raid_event.adds.exists&raid_event.adds.remains>5) actions.variables+=/variable,name=execute_phase,value=(talent.massacre.enabled&target.health.pct<35)|target.health.pct<20